From 7d5fb0a402af5ac1497e82260eaf2563d3e40bde Mon Sep 17 00:00:00 2001 From: PeytonPlayz595 <106421860+PeytonPlayz595@users.noreply.github.com> Date: Fri, 6 Oct 2023 19:18:54 -0400 Subject: [PATCH] OpenGL Emulator (WebGL) --- .classpath | 25 +- .gradle/7.4.2/checksums/checksums.lock | Bin 0 -> 17 bytes .../dependencies-accessors.lock | Bin 0 -> 17 bytes .../dependencies-accessors/gc.properties | 0 .../executionHistory/executionHistory.lock | Bin 0 -> 17 bytes .gradle/7.4.2/fileChanges/last-build.bin | Bin 0 -> 1 bytes .gradle/7.4.2/fileHashes/fileHashes.lock | Bin 0 -> 17 bytes .gradle/7.4.2/gc.properties | 0 .../buildOutputCleanup.lock | Bin 0 -> 17 bytes .gradle/buildOutputCleanup/cache.properties | 2 + .gradle/vcs-1/gc.properties | 0 .project | 46 +- .settings/org.eclipse.buildship.core.prefs | 13 + .settings/org.eclipse.jdt.core.prefs | 8 +- bin/main/net/PeytonPlayz585/Main.class | Bin 0 -> 275 bytes .../minecraft/AssetRepository.class | Bin 0 -> 2779 bytes .../net/PeytonPlayz585/minecraft/Base64.class | Bin 0 -> 10616 bytes .../minecraft/BaseNCodec$CodecPolicy.class | Bin 0 -> 1241 bytes .../minecraft/BaseNCodec$Context.class | Bin 0 -> 1412 bytes .../PeytonPlayz585/minecraft/BaseNCodec.class | Bin 0 -> 7193 bytes .../minecraft/FixedFunctionShader.class | Bin 0 -> 12481 bytes .../minecraft/GeneralDigest.class | Bin 0 -> 1633 bytes .../PeytonPlayz585/minecraft/SHA1Digest.class | Bin 0 -> 3739 bytes .../PeytonPlayz585/opengl/GLObjectMap.class | Bin 0 -> 1694 bytes .../PeytonPlayz585/opengl/LWJGLMain$1.class | Bin 0 -> 1545 bytes .../PeytonPlayz585/opengl/LWJGLMain$10.class | Bin 0 -> 1012 bytes .../PeytonPlayz585/opengl/LWJGLMain$11.class | Bin 0 -> 1040 bytes .../PeytonPlayz585/opengl/LWJGLMain$12.class | Bin 0 -> 3191 bytes .../PeytonPlayz585/opengl/LWJGLMain$13.class | Bin 0 -> 1299 bytes .../opengl/LWJGLMain$14$1.class | Bin 0 -> 891 bytes .../PeytonPlayz585/opengl/LWJGLMain$14.class | Bin 0 -> 1214 bytes .../PeytonPlayz585/opengl/LWJGLMain$15.class | Bin 0 -> 1393 bytes .../PeytonPlayz585/opengl/LWJGLMain$16.class | Bin 0 -> 2176 bytes .../PeytonPlayz585/opengl/LWJGLMain$17.class | Bin 0 -> 2663 bytes .../PeytonPlayz585/opengl/LWJGLMain$18.class | Bin 0 -> 941 bytes .../PeytonPlayz585/opengl/LWJGLMain$19.class | Bin 0 -> 907 bytes .../PeytonPlayz585/opengl/LWJGLMain$2.class | Bin 0 -> 1048 bytes .../PeytonPlayz585/opengl/LWJGLMain$20.class | Bin 0 -> 1289 bytes .../PeytonPlayz585/opengl/LWJGLMain$21.class | Bin 0 -> 1293 bytes .../PeytonPlayz585/opengl/LWJGLMain$22.class | Bin 0 -> 1098 bytes .../PeytonPlayz585/opengl/LWJGLMain$3.class | Bin 0 -> 1386 bytes .../PeytonPlayz585/opengl/LWJGLMain$4.class | Bin 0 -> 1358 bytes .../PeytonPlayz585/opengl/LWJGLMain$5.class | Bin 0 -> 1544 bytes .../PeytonPlayz585/opengl/LWJGLMain$6.class | Bin 0 -> 1357 bytes .../PeytonPlayz585/opengl/LWJGLMain$7.class | Bin 0 -> 1329 bytes .../PeytonPlayz585/opengl/LWJGLMain$8.class | Bin 0 -> 1276 bytes .../PeytonPlayz585/opengl/LWJGLMain$9.class | Bin 0 -> 1174 bytes .../LWJGLMain$AudioBufferSourceNodeX.class | Bin 0 -> 1569 bytes .../opengl/LWJGLMain$AudioBufferX.class | Bin 0 -> 855 bytes .../opengl/LWJGLMain$BufferArrayGL.class | Bin 0 -> 615 bytes .../opengl/LWJGLMain$BufferGL.class | Bin 0 -> 527 bytes .../opengl/LWJGLMain$FramebufferGL.class | Bin 0 -> 552 bytes .../opengl/LWJGLMain$ProgramGL.class | Bin 0 -> 637 bytes .../opengl/LWJGLMain$QueryGL.class | Bin 0 -> 534 bytes .../opengl/LWJGLMain$RateLimit.class | Bin 0 -> 1413 bytes .../opengl/LWJGLMain$RenderbufferGL.class | Bin 0 -> 557 bytes .../opengl/LWJGLMain$ShaderGL.class | Bin 0 -> 527 bytes ...WJGLMain$StupidFunctionResolveString.class | Bin 0 -> 398 bytes .../opengl/LWJGLMain$TextureGL.class | Bin 0 -> 680 bytes .../opengl/LWJGLMain$UniformGL.class | Bin 0 -> 548 bytes .../net/PeytonPlayz585/opengl/LWJGLMain.class | Bin 0 -> 67737 bytes .../net/PeytonPlayz585/opengl/Matrix.class | Bin 0 -> 629 bytes .../net/PeytonPlayz585/opengl/Matrix4f.class | Bin 0 -> 15149 bytes .../opengl/MinecraftImageData.class | Bin 0 -> 1358 bytes .../opengl/ReadableVector.class | Bin 0 -> 259 bytes .../opengl/ReadableVector2f.class | Bin 0 -> 223 bytes .../opengl/ReadableVector3f.class | Bin 0 -> 210 bytes .../opengl/ReadableVector4f.class | Bin 0 -> 210 bytes .../opengl/RealOpenGLEmuns.class | Bin 0 -> 32775 bytes .../net/PeytonPlayz585/opengl/Vector.class | Bin 0 -> 1030 bytes .../net/PeytonPlayz585/opengl/Vector2f.class | Bin 0 -> 4467 bytes .../net/PeytonPlayz585/opengl/Vector3f.class | Bin 0 -> 5180 bytes .../net/PeytonPlayz585/opengl/Vector4f.class | Bin 0 -> 5403 bytes .../opengl/WebGL2RenderingContext.class | Bin 0 -> 1296 bytes .../PeytonPlayz585/opengl/WebGLQuery.class | Bin 0 -> 157 bytes .../opengl/WebGLVertexArray.class | Bin 0 -> 169 bytes .../opengl/WritableVector2f.class | Bin 0 -> 198 bytes .../opengl/WritableVector3f.class | Bin 0 -> 234 bytes .../opengl/WritableVector4f.class | Bin 0 -> 235 bytes .../minecraft/client/MinecraftApplet.class | Bin 0 -> 3832 bytes .../minecraft/isom/IsomPreviewApplet.class | Bin 0 -> 808 bytes .../net/minecraft/src/AxisAlignedBB.class | Bin 0 -> 6322 bytes bin/main/net/minecraft/src/Block.class | Bin 0 -> 19094 bytes .../net/minecraft/src/BlockBookshelf.class | Bin 0 -> 778 bytes .../net/minecraft/src/BlockBreakable.class | Bin 0 -> 1016 bytes bin/main/net/minecraft/src/BlockChest.class | Bin 0 -> 5855 bytes .../net/minecraft/src/BlockContainer.class | Bin 0 -> 1146 bytes bin/main/net/minecraft/src/BlockCrops.class | Bin 0 -> 4074 bytes bin/main/net/minecraft/src/BlockDirt.class | Bin 0 -> 462 bytes bin/main/net/minecraft/src/BlockDoor.class | Bin 0 -> 4777 bytes .../net/minecraft/src/BlockFarmland.class | Bin 0 -> 3449 bytes bin/main/net/minecraft/src/BlockFire.class | Bin 0 -> 6554 bytes bin/main/net/minecraft/src/BlockFlower.class | Bin 0 -> 2691 bytes bin/main/net/minecraft/src/BlockFlowing.class | Bin 0 -> 5431 bytes bin/main/net/minecraft/src/BlockFluid.class | Bin 0 -> 7669 bytes bin/main/net/minecraft/src/BlockFurnace.class | Bin 0 -> 4110 bytes bin/main/net/minecraft/src/BlockGears.class | Bin 0 -> 1150 bytes bin/main/net/minecraft/src/BlockGlass.class | Bin 0 -> 585 bytes bin/main/net/minecraft/src/BlockGrass.class | Bin 0 -> 1702 bytes bin/main/net/minecraft/src/BlockGravel.class | Bin 0 -> 702 bytes bin/main/net/minecraft/src/BlockLadder.class | Bin 0 -> 2835 bytes bin/main/net/minecraft/src/BlockLeaves.class | Bin 0 -> 2357 bytes .../net/minecraft/src/BlockLeavesBase.class | Bin 0 -> 1023 bytes bin/main/net/minecraft/src/BlockLog.class | Bin 0 -> 944 bytes .../minecraft/src/BlockMinecartTrack.class | Bin 0 -> 3325 bytes .../net/minecraft/src/BlockMobSpawner.class | Bin 0 -> 742 bytes .../net/minecraft/src/BlockMushroom.class | Bin 0 -> 979 bytes .../net/minecraft/src/BlockObsidian.class | Bin 0 -> 707 bytes bin/main/net/minecraft/src/BlockOre.class | Bin 0 -> 991 bytes .../net/minecraft/src/BlockOreBlock.class | Bin 0 -> 672 bytes bin/main/net/minecraft/src/BlockSand.class | Bin 0 -> 2362 bytes bin/main/net/minecraft/src/BlockSapling.class | Bin 0 -> 1334 bytes bin/main/net/minecraft/src/BlockSign.class | Bin 0 -> 2194 bytes bin/main/net/minecraft/src/BlockSponge.class | Bin 0 -> 1413 bytes bin/main/net/minecraft/src/BlockStairs.class | Bin 0 -> 8053 bytes .../net/minecraft/src/BlockStationary.class | Bin 0 -> 1277 bytes bin/main/net/minecraft/src/BlockStep.class | Bin 0 -> 2165 bytes bin/main/net/minecraft/src/BlockStone.class | Bin 0 -> 676 bytes bin/main/net/minecraft/src/BlockTNT.class | Bin 0 -> 1703 bytes bin/main/net/minecraft/src/BlockTorch.class | Bin 0 -> 4471 bytes .../net/minecraft/src/BlockWorkbench.class | Bin 0 -> 1100 bytes .../net/minecraft/src/CanvasCrashReport.class | Bin 0 -> 501 bytes .../net/minecraft/src/CanvasIsomPreview.class | Bin 0 -> 11844 bytes .../minecraft/src/CanvasMinecraftApplet.class | Bin 0 -> 757 bytes .../net/minecraft/src/CanvasMojangLogo.class | Bin 0 -> 1225 bytes bin/main/net/minecraft/src/ChatLine.class | Bin 0 -> 435 bytes bin/main/net/minecraft/src/Chunk.class | Bin 0 -> 11800 bytes bin/main/net/minecraft/src/ChunkCache.class | Bin 0 -> 3524 bytes bin/main/net/minecraft/src/ChunkLoader.class | Bin 0 -> 7355 bytes .../net/minecraft/src/ChunkPosition.class | Bin 0 -> 789 bytes .../minecraft/src/ChunkProviderGenerate.class | Bin 0 -> 14635 bytes .../net/minecraft/src/ChunkProviderIso.class | Bin 0 -> 2338 bytes .../src/ChunkProviderLoadOrGenerate.class | Bin 0 -> 4759 bytes .../net/minecraft/src/ClippingHelper.class | Bin 0 -> 1239 bytes .../src/ClippingHelperImplementation.class | Bin 0 -> 3551 bytes .../minecraft/src/CompressedStreamTools.class | Bin 0 -> 2134 bytes .../net/minecraft/src/CraftingManager.class | Bin 0 -> 5741 bytes .../net/minecraft/src/CraftingRecipe.class | Bin 0 -> 1659 bytes .../net/minecraft/src/EffectRenderer.class | Bin 0 -> 5379 bytes bin/main/net/minecraft/src/Entity.class | Bin 0 -> 19184 bytes bin/main/net/minecraft/src/EntityAnimal.class | Bin 0 -> 1409 bytes bin/main/net/minecraft/src/EntityArrow.class | Bin 0 -> 7759 bytes .../net/minecraft/src/EntityBubbleFX.class | Bin 0 -> 1895 bytes .../net/minecraft/src/EntityCreature.class | Bin 0 -> 4522 bytes .../net/minecraft/src/EntityCreeper.class | Bin 0 -> 2092 bytes .../net/minecraft/src/EntityDiggingFX.class | Bin 0 -> 2242 bytes .../net/minecraft/src/EntityExplodeFX.class | Bin 0 -> 1936 bytes bin/main/net/minecraft/src/EntityFX.class | Bin 0 -> 3920 bytes .../net/minecraft/src/EntityFallingSand.class | Bin 0 -> 2710 bytes .../net/minecraft/src/EntityFlameFX.class | Bin 0 -> 2252 bytes bin/main/net/minecraft/src/EntityGiant.class | Bin 0 -> 919 bytes bin/main/net/minecraft/src/EntityItem.class | Bin 0 -> 5844 bytes bin/main/net/minecraft/src/EntityLavaFX.class | Bin 0 -> 2291 bytes bin/main/net/minecraft/src/EntityList.class | Bin 0 -> 3624 bytes bin/main/net/minecraft/src/EntityLiving.class | Bin 0 -> 13497 bytes .../net/minecraft/src/EntityMinecart.class | Bin 0 -> 12891 bytes .../net/minecraft/src/EntityMonster.class | Bin 0 -> 2817 bytes .../net/minecraft/src/EntityPainting.class | Bin 0 -> 5919 bytes .../net/minecraft/src/EntityPickupFX.class | Bin 0 -> 2694 bytes bin/main/net/minecraft/src/EntityPig.class | Bin 0 -> 1765 bytes bin/main/net/minecraft/src/EntityPlayer.class | Bin 0 -> 7579 bytes .../net/minecraft/src/EntityPlayerSP.class | Bin 0 -> 5981 bytes bin/main/net/minecraft/src/EntityRainFX.class | Bin 0 -> 2336 bytes .../net/minecraft/src/EntityRenderer.class | Bin 0 -> 18570 bytes bin/main/net/minecraft/src/EntitySheep.class | Bin 0 -> 2167 bytes .../net/minecraft/src/EntitySkeleton.class | Bin 0 -> 2685 bytes .../net/minecraft/src/EntitySmokeFX.class | Bin 0 -> 2208 bytes bin/main/net/minecraft/src/EntitySorter.class | Bin 0 -> 976 bytes bin/main/net/minecraft/src/EntitySpider.class | Bin 0 -> 2325 bytes .../net/minecraft/src/EntitySplashFX.class | Bin 0 -> 844 bytes .../net/minecraft/src/EntityTNTPrimed.class | Bin 0 -> 2608 bytes bin/main/net/minecraft/src/EntityZombie.class | Bin 0 -> 1349 bytes bin/main/net/minecraft/src/EnumArt.class | Bin 0 -> 2455 bytes bin/main/net/minecraft/src/EnumOS.class | Bin 0 -> 1148 bytes bin/main/net/minecraft/src/EnumOSIsom.class | Bin 0 -> 1176 bytes bin/main/net/minecraft/src/EnumSkyBlock.class | Bin 0 -> 1132 bytes bin/main/net/minecraft/src/Explosion.class | Bin 0 -> 5465 bytes bin/main/net/minecraft/src/FontRenderer.class | Bin 0 -> 5228 bytes bin/main/net/minecraft/src/Frustrum.class | Bin 0 -> 1375 bytes bin/main/net/minecraft/src/GLAllocation.class | Bin 0 -> 2303 bytes bin/main/net/minecraft/src/GameSettings.class | Bin 0 -> 7403 bytes bin/main/net/minecraft/src/Gui.class | Bin 0 -> 2300 bytes bin/main/net/minecraft/src/GuiButton.class | Bin 0 -> 2262 bytes bin/main/net/minecraft/src/GuiChest.class | Bin 0 -> 2473 bytes bin/main/net/minecraft/src/GuiContainer.class | Bin 0 -> 6669 bytes bin/main/net/minecraft/src/GuiControls.class | Bin 0 -> 2675 bytes bin/main/net/minecraft/src/GuiCrafting.class | Bin 0 -> 3645 bytes .../net/minecraft/src/GuiCreateWorld.class | Bin 0 -> 3391 bytes .../net/minecraft/src/GuiDeleteWorld.class | Bin 0 -> 1922 bytes bin/main/net/minecraft/src/GuiEditSign.class | Bin 0 -> 3485 bytes .../net/minecraft/src/GuiErrorScreen.class | Bin 0 -> 1029 bytes bin/main/net/minecraft/src/GuiFurnace.class | Bin 0 -> 2427 bytes bin/main/net/minecraft/src/GuiGameOver.class | Bin 0 -> 2510 bytes bin/main/net/minecraft/src/GuiIngame.class | Bin 0 -> 8089 bytes .../net/minecraft/src/GuiIngameMenu.class | Bin 0 -> 2602 bytes bin/main/net/minecraft/src/GuiInventory.class | Bin 0 -> 5151 bytes bin/main/net/minecraft/src/GuiMainMenu.class | Bin 0 -> 7259 bytes bin/main/net/minecraft/src/GuiOptions.class | Bin 0 -> 2260 bytes bin/main/net/minecraft/src/GuiScreen.class | Bin 0 -> 4550 bytes .../net/minecraft/src/GuiSmallButton.class | Bin 0 -> 471 bytes bin/main/net/minecraft/src/GuiYesNo.class | Bin 0 -> 1737 bytes bin/main/net/minecraft/src/IBlockAccess.class | Bin 0 -> 380 bytes bin/main/net/minecraft/src/ICamera.class | Bin 0 -> 216 bytes bin/main/net/minecraft/src/IChunkLoader.class | Bin 0 -> 413 bytes .../net/minecraft/src/IChunkProvider.class | Bin 0 -> 392 bytes bin/main/net/minecraft/src/IInventory.class | Bin 0 -> 455 bytes .../net/minecraft/src/IProgressUpdate.class | Bin 0 -> 253 bytes bin/main/net/minecraft/src/IWorldAccess.class | Bin 0 -> 448 bytes bin/main/net/minecraft/src/ImageBuffer.class | Bin 0 -> 210 bytes .../minecraft/src/ImageBufferDownload.class | Bin 0 -> 2448 bytes .../minecraft/src/InventoryCraftResult.class | Bin 0 -> 1362 bytes .../net/minecraft/src/InventoryCrafting.class | Bin 0 -> 1821 bytes .../minecraft/src/InventoryLargeChest.class | Bin 0 -> 1781 bytes .../net/minecraft/src/InventoryPlayer.class | Bin 0 -> 7300 bytes .../net/minecraft/src/IsoImageBuffer.class | Bin 0 -> 1033 bytes bin/main/net/minecraft/src/Item.class | Bin 0 -> 7731 bytes bin/main/net/minecraft/src/ItemArmor.class | Bin 0 -> 832 bytes bin/main/net/minecraft/src/ItemAxe.class | Bin 0 -> 677 bytes bin/main/net/minecraft/src/ItemBlock.class | Bin 0 -> 1767 bytes bin/main/net/minecraft/src/ItemBow.class | Bin 0 -> 1418 bytes bin/main/net/minecraft/src/ItemBucket.class | Bin 0 -> 3289 bytes bin/main/net/minecraft/src/ItemDoor.class | Bin 0 -> 2161 bytes .../net/minecraft/src/ItemFlintAndSteel.class | Bin 0 -> 1509 bytes bin/main/net/minecraft/src/ItemFood.class | Bin 0 -> 880 bytes bin/main/net/minecraft/src/ItemHoe.class | Bin 0 -> 2577 bytes bin/main/net/minecraft/src/ItemMinecart.class | Bin 0 -> 1239 bytes bin/main/net/minecraft/src/ItemPainting.class | Bin 0 -> 1258 bytes bin/main/net/minecraft/src/ItemPickaxe.class | Bin 0 -> 1423 bytes bin/main/net/minecraft/src/ItemRenderer.class | Bin 0 -> 9692 bytes bin/main/net/minecraft/src/ItemSaddle.class | Bin 0 -> 972 bytes bin/main/net/minecraft/src/ItemSeeds.class | Bin 0 -> 1143 bytes bin/main/net/minecraft/src/ItemSign.class | Bin 0 -> 1596 bytes bin/main/net/minecraft/src/ItemSoup.class | Bin 0 -> 851 bytes bin/main/net/minecraft/src/ItemSpade.class | Bin 0 -> 711 bytes bin/main/net/minecraft/src/ItemStack.class | Bin 0 -> 4935 bytes bin/main/net/minecraft/src/ItemSword.class | Bin 0 -> 1283 bytes bin/main/net/minecraft/src/ItemTool.class | Bin 0 -> 1663 bytes bin/main/net/minecraft/src/KeyBinding.class | Bin 0 -> 460 bytes .../minecraft/src/LoadingScreenRenderer.class | Bin 0 -> 3888 bytes bin/main/net/minecraft/src/Material.class | Bin 0 -> 1449 bytes .../net/minecraft/src/MaterialLiquid.class | Bin 0 -> 459 bytes .../net/minecraft/src/MaterialLogic.class | Bin 0 -> 532 bytes .../minecraft/src/MaterialTransparent.class | Bin 0 -> 550 bytes bin/main/net/minecraft/src/MathHelper.class | Bin 0 -> 1529 bytes .../minecraft/src/MetadataChunkBlock.class | Bin 0 -> 3010 bytes .../minecraft/src/MinecartTrackLogic.class | Bin 0 -> 5583 bytes bin/main/net/minecraft/src/Minecraft.class | Bin 0 -> 11532 bytes .../minecraft/src/MinecraftAppletImpl.class | Bin 0 -> 1232 bytes .../net/minecraft/src/MinecraftError.class | Bin 0 -> 302 bytes bin/main/net/minecraft/src/ModelBase.class | Bin 0 -> 633 bytes bin/main/net/minecraft/src/ModelBiped.class | Bin 0 -> 2353 bytes bin/main/net/minecraft/src/ModelCreeper.class | Bin 0 -> 1819 bytes .../net/minecraft/src/ModelMinecart.class | Bin 0 -> 1677 bytes bin/main/net/minecraft/src/ModelPig.class | Bin 0 -> 412 bytes .../net/minecraft/src/ModelQuadruped.class | Bin 0 -> 1766 bytes .../net/minecraft/src/ModelRenderer.class | Bin 0 -> 3864 bytes bin/main/net/minecraft/src/ModelSheep.class | Bin 0 -> 672 bytes .../net/minecraft/src/ModelSheepFur.class | Bin 0 -> 1038 bytes .../net/minecraft/src/ModelSkeleton.class | Bin 0 -> 900 bytes bin/main/net/minecraft/src/ModelSpider.class | Bin 0 -> 3282 bytes bin/main/net/minecraft/src/ModelZombie.class | Bin 0 -> 1201 bytes bin/main/net/minecraft/src/MouseHelper.class | Bin 0 -> 972 bytes .../net/minecraft/src/MovementInput.class | Bin 0 -> 830 bytes .../src/MovementInputFromOptions.class | Bin 0 -> 1625 bytes .../minecraft/src/MovingObjectPosition.class | Bin 0 -> 1151 bytes bin/main/net/minecraft/src/NBTBase.class | Bin 0 -> 2743 bytes bin/main/net/minecraft/src/NBTTagByte.class | Bin 0 -> 1162 bytes .../net/minecraft/src/NBTTagByteArray.class | Bin 0 -> 1397 bytes .../net/minecraft/src/NBTTagCompound.class | Bin 0 -> 5991 bytes bin/main/net/minecraft/src/NBTTagDouble.class | Bin 0 -> 1174 bytes bin/main/net/minecraft/src/NBTTagEnd.class | Bin 0 -> 805 bytes bin/main/net/minecraft/src/NBTTagFloat.class | Bin 0 -> 1167 bytes bin/main/net/minecraft/src/NBTTagInt.class | Bin 0 -> 1155 bytes bin/main/net/minecraft/src/NBTTagList.class | Bin 0 -> 2250 bytes bin/main/net/minecraft/src/NBTTagLong.class | Bin 0 -> 1161 bytes bin/main/net/minecraft/src/NBTTagShort.class | Bin 0 -> 1174 bytes bin/main/net/minecraft/src/NBTTagString.class | Bin 0 -> 1374 bytes .../net/minecraft/src/NextTickListEntry.class | Bin 0 -> 1554 bytes bin/main/net/minecraft/src/NibbleArray.class | Bin 0 -> 1096 bytes .../net/minecraft/src/NoiseGenerator.class | Bin 0 -> 303 bytes .../minecraft/src/NoiseGeneratorOctaves.class | Bin 0 -> 1783 bytes .../minecraft/src/NoiseGeneratorPerlin.class | Bin 0 -> 4643 bytes bin/main/net/minecraft/src/OSMap.class | Bin 0 -> 793 bytes bin/main/net/minecraft/src/OSMapIsom.class | Bin 0 -> 817 bytes .../net/minecraft/src/PanelCrashReport.class | Bin 0 -> 4925 bytes bin/main/net/minecraft/src/Path.class | Bin 0 -> 2505 bytes bin/main/net/minecraft/src/PathEntity.class | Bin 0 -> 1240 bytes bin/main/net/minecraft/src/PathPoint.class | Bin 0 -> 1688 bytes bin/main/net/minecraft/src/Pathfinder.class | Bin 0 -> 6337 bytes .../net/minecraft/src/PlayerController.class | Bin 0 -> 2838 bytes .../src/PlayerControllerCreative.class | Bin 0 -> 1772 bytes .../minecraft/src/PlayerControllerSP.class | Bin 0 -> 5124 bytes .../minecraft/src/PositionTextureVertex.class | Bin 0 -> 1170 bytes bin/main/net/minecraft/src/RecipeSorter.class | Bin 0 -> 970 bytes bin/main/net/minecraft/src/RecipesArmor.class | Bin 0 -> 2197 bytes .../net/minecraft/src/RecipesCrafting.class | Bin 0 -> 1073 bytes bin/main/net/minecraft/src/RecipesFood.class | Bin 0 -> 1118 bytes .../net/minecraft/src/RecipesIngots.class | Bin 0 -> 1415 bytes bin/main/net/minecraft/src/RecipesTools.class | Bin 0 -> 2232 bytes .../net/minecraft/src/RecipesWeapons.class | Bin 0 -> 1960 bytes bin/main/net/minecraft/src/Render.class | Bin 0 -> 7973 bytes bin/main/net/minecraft/src/RenderArrow.class | Bin 0 -> 2632 bytes bin/main/net/minecraft/src/RenderBlocks.class | Bin 0 -> 29560 bytes .../net/minecraft/src/RenderCreeper.class | Bin 0 -> 1743 bytes bin/main/net/minecraft/src/RenderEngine.class | Bin 0 -> 2858 bytes bin/main/net/minecraft/src/RenderEntity.class | Bin 0 -> 906 bytes .../net/minecraft/src/RenderFallingSand.class | Bin 0 -> 1819 bytes .../net/minecraft/src/RenderGiantZombie.class | Bin 0 -> 981 bytes bin/main/net/minecraft/src/RenderGlobal.class | Bin 0 -> 28052 bytes bin/main/net/minecraft/src/RenderHelper.class | Bin 0 -> 2090 bytes bin/main/net/minecraft/src/RenderItem.class | Bin 0 -> 6327 bytes bin/main/net/minecraft/src/RenderList.class | Bin 0 -> 1841 bytes bin/main/net/minecraft/src/RenderLiving.class | Bin 0 -> 4307 bytes .../net/minecraft/src/RenderManager.class | Bin 0 -> 6183 bytes .../net/minecraft/src/RenderMinecart.class | Bin 0 -> 3177 bytes .../net/minecraft/src/RenderPainting.class | Bin 0 -> 4333 bytes bin/main/net/minecraft/src/RenderPig.class | Bin 0 -> 1082 bytes bin/main/net/minecraft/src/RenderPlayer.class | Bin 0 -> 3812 bytes bin/main/net/minecraft/src/RenderSheep.class | Bin 0 -> 1097 bytes bin/main/net/minecraft/src/RenderSorter.class | Bin 0 -> 1093 bytes bin/main/net/minecraft/src/RenderSpider.class | Bin 0 -> 1544 bytes .../net/minecraft/src/RenderTNTPrimed.class | Bin 0 -> 1900 bytes .../net/minecraft/src/ScaledResolution.class | Bin 0 -> 729 bytes bin/main/net/minecraft/src/Session.class | Bin 0 -> 2009 bytes bin/main/net/minecraft/src/SignModel.class | Bin 0 -> 702 bytes bin/main/net/minecraft/src/Slot.class | Bin 0 -> 1966 bytes bin/main/net/minecraft/src/SlotArmor.class | Bin 0 -> 1213 bytes bin/main/net/minecraft/src/SlotCrafting.class | Bin 0 -> 1222 bytes bin/main/net/minecraft/src/SoundManager.class | Bin 0 -> 3463 bytes bin/main/net/minecraft/src/SoundPool.class | Bin 0 -> 2368 bytes .../net/minecraft/src/SoundPoolEntry.class | Bin 0 -> 494 bytes .../net/minecraft/src/SpawnerAnimals.class | Bin 0 -> 4124 bytes .../net/minecraft/src/SpawnerMonsters.class | Bin 0 -> 1166 bytes bin/main/net/minecraft/src/StepSound.class | Bin 0 -> 1045 bytes .../net/minecraft/src/StepSoundGlass.class | Bin 0 -> 533 bytes .../net/minecraft/src/StepSoundSand.class | Bin 0 -> 529 bytes .../minecraft/src/TerrainTextureManager.class | Bin 0 -> 5435 bytes bin/main/net/minecraft/src/Tessellator.class | Bin 0 -> 5207 bytes bin/main/net/minecraft/src/TextureFX.class | Bin 0 -> 599 bytes .../net/minecraft/src/TextureFlamesFX.class | Bin 0 -> 1957 bytes .../net/minecraft/src/TextureGearsFX.class | Bin 0 -> 2209 bytes .../net/minecraft/src/TextureLavaFX.class | Bin 0 -> 2159 bytes .../net/minecraft/src/TextureLavaFlowFX.class | Bin 0 -> 2272 bytes .../net/minecraft/src/TextureWaterFX.class | Bin 0 -> 1963 bytes .../minecraft/src/TextureWaterFlowFX.class | Bin 0 -> 2017 bytes bin/main/net/minecraft/src/TexturedQuad.class | Bin 0 -> 2211 bytes .../minecraft/src/ThreadDownloadImage.class | Bin 0 -> 1865 bytes .../src/ThreadDownloadImageData.class | Bin 0 -> 856 bytes .../src/ThreadDownloadResources.class | Bin 0 -> 4560 bytes .../minecraft/src/ThreadRunIsoClient.class | Bin 0 -> 774 bytes .../minecraft/src/ThreadSleepForever.class | Bin 0 -> 847 bytes bin/main/net/minecraft/src/TileEntity.class | Bin 0 -> 3805 bytes .../net/minecraft/src/TileEntityChest.class | Bin 0 -> 2679 bytes .../net/minecraft/src/TileEntityFurnace.class | Bin 0 -> 6025 bytes .../minecraft/src/TileEntityMobSpawner.class | Bin 0 -> 3872 bytes .../src/TileEntityMobSpawnerRenderer.class | Bin 0 -> 2180 bytes .../minecraft/src/TileEntityRenderer.class | Bin 0 -> 4370 bytes .../net/minecraft/src/TileEntitySign.class | Bin 0 -> 1414 bytes .../src/TileEntitySignRenderer.class | Bin 0 -> 2364 bytes .../src/TileEntitySpecialRenderer.class | Bin 0 -> 1163 bytes bin/main/net/minecraft/src/Timer.class | Bin 0 -> 1346 bytes .../minecraft/src/UnexpectedThrowable.class | Bin 0 -> 526 bytes bin/main/net/minecraft/src/Vec3D.class | Bin 0 -> 4161 bytes bin/main/net/minecraft/src/World.class | Bin 0 -> 39478 bytes .../net/minecraft/src/WorldGenDungeons.class | Bin 0 -> 3971 bytes .../net/minecraft/src/WorldGenFlowers.class | Bin 0 -> 1207 bytes .../net/minecraft/src/WorldGenLiquids.class | Bin 0 -> 1290 bytes .../net/minecraft/src/WorldGenMinable.class | Bin 0 -> 2188 bytes .../net/minecraft/src/WorldGenTrees.class | Bin 0 -> 2334 bytes .../net/minecraft/src/WorldGenerator.class | Bin 0 -> 506 bytes bin/main/net/minecraft/src/WorldIso.class | Bin 0 -> 910 bytes .../net/minecraft/src/WorldRenderer.class | Bin 0 -> 6980 bytes bin/main/org/lwjgl/input/Keyboard.class | Bin 0 -> 899 bytes bin/main/org/lwjgl/input/Mouse.class | Bin 0 -> 1365 bytes bin/main/org/lwjgl/opengl/Display.class | Bin 0 -> 499 bytes .../org/lwjgl/opengl/GL11$DisplayList.class | Bin 0 -> 1976 bytes bin/main/org/lwjgl/opengl/GL11.class | Bin 0 -> 31264 bytes bin/main/org/lwjgl/opengl/GL12.class | Bin 0 -> 276 bytes build.gradle | 83 + gradlew | 183 ++ gradlew.bat | 100 + jars/deobfuscated-source.jar | Bin 367966 -> 0 bytes jars/deobfuscated.jar | Bin 833329 -> 0 bytes md5/original.md5 | 294 -- settings.gradle | 10 + source/net/minecraft/src/EntityRenderer.java | 623 ----- source/net/minecraft/src/GLAllocation.java | 62 - source/net/minecraft/src/MouseHelper.java | 81 - .../net/minecraft/src/OpenGlCapsChecker.java | 9 - .../net/minecraft/src/PanelCrashReport.java | 85 - source/net/minecraft/src/Tessellator.java | 298 -- src/main/java/net/PeytonPlayz585/Main.java | 5 + .../minecraft/AssetRepository.java | 55 + .../net/PeytonPlayz585/minecraft/Base64.java | 857 ++++++ .../PeytonPlayz585/minecraft/BaseNCodec.java | 692 +++++ .../minecraft/FixedFunctionShader.java | 397 +++ .../minecraft/GeneralDigest.java | 108 + .../PeytonPlayz585/minecraft/SHA1Digest.java | 213 ++ .../PeytonPlayz585/opengl/GLObjectMap.java | 55 + .../net/PeytonPlayz585/opengl/LWJGLMain.java | 1966 ++++++++++++++ .../net/PeytonPlayz585/opengl/Matrix.java | 130 + .../net/PeytonPlayz585/opengl/Matrix4f.java | 902 ++++++ .../opengl/MinecraftImageData.java | 40 + .../PeytonPlayz585/opengl/ReadableVector.java | 57 + .../opengl/ReadableVector2f.java | 47 + .../opengl/ReadableVector3f.java | 42 + .../opengl/ReadableVector4f.java | 44 + .../opengl/RealOpenGLEmuns.java | 2419 +++++++++++++++++ .../net/PeytonPlayz585/opengl/Vector.java | 110 + .../net/PeytonPlayz585/opengl/Vector2f.java | 319 +++ .../net/PeytonPlayz585/opengl/Vector3f.java | 376 +++ .../net/PeytonPlayz585/opengl/Vector4f.java | 377 +++ .../opengl/WebGL2RenderingContext.java | 42 + .../net/PeytonPlayz585/opengl/WebGLQuery.java | 6 + .../opengl/WebGLVertexArray.java | 6 + .../opengl/WritableVector2f.java | 64 + .../opengl/WritableVector3f.java | 58 + .../opengl/WritableVector4f.java | 59 + .../net/minecraft/client/MinecraftApplet.java | 0 .../net/minecraft/isom/IsomPreviewApplet.java | 0 .../net/minecraft/src/AxisAlignedBB.java | 0 .../main/java}/net/minecraft/src/Block.java | 0 .../net/minecraft/src/BlockBookshelf.java | 0 .../net/minecraft/src/BlockBreakable.java | 0 .../java}/net/minecraft/src/BlockChest.java | 0 .../net/minecraft/src/BlockContainer.java | 0 .../java}/net/minecraft/src/BlockCrops.java | 0 .../java}/net/minecraft/src/BlockDirt.java | 0 .../java}/net/minecraft/src/BlockDoor.java | 0 .../net/minecraft/src/BlockFarmland.java | 0 .../java}/net/minecraft/src/BlockFire.java | 0 .../java}/net/minecraft/src/BlockFlower.java | 0 .../java}/net/minecraft/src/BlockFlowing.java | 0 .../java}/net/minecraft/src/BlockFluid.java | 0 .../java}/net/minecraft/src/BlockFurnace.java | 0 .../java}/net/minecraft/src/BlockGears.java | 0 .../java}/net/minecraft/src/BlockGlass.java | 0 .../java}/net/minecraft/src/BlockGrass.java | 0 .../java}/net/minecraft/src/BlockGravel.java | 0 .../java}/net/minecraft/src/BlockLadder.java | 0 .../java}/net/minecraft/src/BlockLeaves.java | 0 .../net/minecraft/src/BlockLeavesBase.java | 0 .../java}/net/minecraft/src/BlockLog.java | 0 .../net/minecraft/src/BlockMinecartTrack.java | 0 .../net/minecraft/src/BlockMobSpawner.java | 0 .../net/minecraft/src/BlockMushroom.java | 0 .../net/minecraft/src/BlockObsidian.java | 0 .../java}/net/minecraft/src/BlockOre.java | 0 .../net/minecraft/src/BlockOreBlock.java | 0 .../java}/net/minecraft/src/BlockSand.java | 0 .../java}/net/minecraft/src/BlockSapling.java | 0 .../java}/net/minecraft/src/BlockSign.java | 0 .../java}/net/minecraft/src/BlockSponge.java | 0 .../java}/net/minecraft/src/BlockStairs.java | 0 .../net/minecraft/src/BlockStationary.java | 0 .../java}/net/minecraft/src/BlockStep.java | 0 .../java}/net/minecraft/src/BlockStone.java | 0 .../java}/net/minecraft/src/BlockTNT.java | 0 .../java}/net/minecraft/src/BlockTorch.java | 0 .../net/minecraft/src/BlockWorkbench.java | 0 .../net/minecraft/src/CanvasCrashReport.java | 0 .../net/minecraft/src/CanvasIsomPreview.java | 0 .../minecraft/src/CanvasMinecraftApplet.java | 0 .../net/minecraft/src/CanvasMojangLogo.java | 0 .../java}/net/minecraft/src/ChatLine.java | 0 .../main/java}/net/minecraft/src/Chunk.java | 0 .../java}/net/minecraft/src/ChunkCache.java | 0 .../java}/net/minecraft/src/ChunkLoader.java | 0 .../net/minecraft/src/ChunkPosition.java | 0 .../minecraft/src/ChunkProviderGenerate.java | 0 .../net/minecraft/src/ChunkProviderIso.java | 0 .../src/ChunkProviderLoadOrGenerate.java | 0 .../net/minecraft/src/ClippingHelper.java | 0 .../src/ClippingHelperImplementation.java | 0 .../minecraft/src/CompressedStreamTools.java | 0 .../net/minecraft/src/CraftingManager.java | 0 .../net/minecraft/src/CraftingRecipe.java | 0 .../net/minecraft/src/EffectRenderer.java | 0 .../main/java}/net/minecraft/src/Entity.java | 0 .../java}/net/minecraft/src/EntityAnimal.java | 0 .../java}/net/minecraft/src/EntityArrow.java | 0 .../net/minecraft/src/EntityBubbleFX.java | 0 .../net/minecraft/src/EntityCreature.java | 0 .../net/minecraft/src/EntityCreeper.java | 0 .../net/minecraft/src/EntityDiggingFX.java | 0 .../net/minecraft/src/EntityExplodeFX.java | 0 .../java}/net/minecraft/src/EntityFX.java | 0 .../net/minecraft/src/EntityFallingSand.java | 0 .../net/minecraft/src/EntityFlameFX.java | 0 .../java}/net/minecraft/src/EntityGiant.java | 0 .../java}/net/minecraft/src/EntityItem.java | 0 .../java}/net/minecraft/src/EntityLavaFX.java | 0 .../java}/net/minecraft/src/EntityList.java | 0 .../java}/net/minecraft/src/EntityLiving.java | 0 .../net/minecraft/src/EntityMinecart.java | 0 .../net/minecraft/src/EntityMonster.java | 0 .../net/minecraft/src/EntityPainting.java | 0 .../net/minecraft/src/EntityPickupFX.java | 0 .../java}/net/minecraft/src/EntityPig.java | 0 .../java}/net/minecraft/src/EntityPlayer.java | 0 .../net/minecraft/src/EntityPlayerSP.java | 0 .../java}/net/minecraft/src/EntityRainFX.java | 0 .../net/minecraft/src/EntityRenderer.java | 9 +- .../java}/net/minecraft/src/EntitySheep.java | 0 .../net/minecraft/src/EntitySkeleton.java | 0 .../net/minecraft/src/EntitySmokeFX.java | 0 .../java}/net/minecraft/src/EntitySorter.java | 0 .../java}/net/minecraft/src/EntitySpider.java | 0 .../net/minecraft/src/EntitySplashFX.java | 0 .../net/minecraft/src/EntityTNTPrimed.java | 0 .../java}/net/minecraft/src/EntityZombie.java | 0 .../main/java}/net/minecraft/src/EnumArt.java | 0 .../main/java}/net/minecraft/src/EnumOS.java | 0 .../java}/net/minecraft/src/EnumOSIsom.java | 0 .../java}/net/minecraft/src/EnumSkyBlock.java | 0 .../java}/net/minecraft/src/Explosion.java | 0 .../java}/net/minecraft/src/FontRenderer.java | 0 .../java}/net/minecraft/src/Frustrum.java | 0 .../java/net/minecraft/src/GLAllocation.java | 60 + .../java}/net/minecraft/src/GameSettings.java | 0 .../main/java}/net/minecraft/src/Gui.java | 0 .../java}/net/minecraft/src/GuiButton.java | 0 .../java}/net/minecraft/src/GuiChest.java | 0 .../java}/net/minecraft/src/GuiContainer.java | 0 .../java}/net/minecraft/src/GuiControls.java | 0 .../java}/net/minecraft/src/GuiCrafting.java | 0 .../net/minecraft/src/GuiCreateWorld.java | 0 .../net/minecraft/src/GuiDeleteWorld.java | 0 .../java}/net/minecraft/src/GuiEditSign.java | 0 .../net/minecraft/src/GuiErrorScreen.java | 0 .../java}/net/minecraft/src/GuiFurnace.java | 0 .../java}/net/minecraft/src/GuiGameOver.java | 0 .../java}/net/minecraft/src/GuiIngame.java | 0 .../net/minecraft/src/GuiIngameMenu.java | 0 .../java}/net/minecraft/src/GuiInventory.java | 0 .../java}/net/minecraft/src/GuiMainMenu.java | 0 .../java}/net/minecraft/src/GuiOptions.java | 0 .../java}/net/minecraft/src/GuiScreen.java | 8 +- .../net/minecraft/src/GuiSmallButton.java | 0 .../java}/net/minecraft/src/GuiYesNo.java | 0 .../java}/net/minecraft/src/IBlockAccess.java | 0 .../main/java}/net/minecraft/src/ICamera.java | 0 .../java}/net/minecraft/src/IChunkLoader.java | 0 .../net/minecraft/src/IChunkProvider.java | 0 .../java}/net/minecraft/src/IInventory.java | 0 .../net/minecraft/src/IProgressUpdate.java | 0 .../java}/net/minecraft/src/IWorldAccess.java | 0 .../java}/net/minecraft/src/ImageBuffer.java | 0 .../minecraft/src/ImageBufferDownload.java | 0 .../minecraft/src/InventoryCraftResult.java | 0 .../net/minecraft/src/InventoryCrafting.java | 0 .../minecraft/src/InventoryLargeChest.java | 0 .../net/minecraft/src/InventoryPlayer.java | 0 .../net/minecraft/src/IsoImageBuffer.java | 0 .../main/java}/net/minecraft/src/Item.java | 0 .../java}/net/minecraft/src/ItemArmor.java | 0 .../main/java}/net/minecraft/src/ItemAxe.java | 0 .../java}/net/minecraft/src/ItemBlock.java | 0 .../main/java}/net/minecraft/src/ItemBow.java | 0 .../java}/net/minecraft/src/ItemBucket.java | 0 .../java}/net/minecraft/src/ItemDoor.java | 0 .../net/minecraft/src/ItemFlintAndSteel.java | 0 .../java}/net/minecraft/src/ItemFood.java | 0 .../main/java}/net/minecraft/src/ItemHoe.java | 0 .../java}/net/minecraft/src/ItemMinecart.java | 0 .../java}/net/minecraft/src/ItemPainting.java | 0 .../java}/net/minecraft/src/ItemPickaxe.java | 0 .../java}/net/minecraft/src/ItemRenderer.java | 0 .../java}/net/minecraft/src/ItemSaddle.java | 0 .../java}/net/minecraft/src/ItemSeeds.java | 0 .../java}/net/minecraft/src/ItemSign.java | 0 .../java}/net/minecraft/src/ItemSoup.java | 0 .../java}/net/minecraft/src/ItemSpade.java | 0 .../java}/net/minecraft/src/ItemStack.java | 0 .../java}/net/minecraft/src/ItemSword.java | 0 .../java}/net/minecraft/src/ItemTool.java | 0 .../java}/net/minecraft/src/KeyBinding.java | 0 .../minecraft/src/LoadingScreenRenderer.java | 0 .../java}/net/minecraft/src/Material.java | 0 .../net/minecraft/src/MaterialLiquid.java | 0 .../net/minecraft/src/MaterialLogic.java | 0 .../minecraft/src/MaterialTransparent.java | 0 .../java}/net/minecraft/src/MathHelper.java | 0 .../net/minecraft/src/MetadataChunkBlock.java | 0 .../net/minecraft/src/MinecartTrackLogic.java | 0 .../java}/net/minecraft/src/Minecraft.java | 0 .../minecraft/src/MinecraftAppletImpl.java | 0 .../net/minecraft/src/MinecraftError.java | 0 .../java}/net/minecraft/src/ModelBase.java | 0 .../java}/net/minecraft/src/ModelBiped.java | 0 .../java}/net/minecraft/src/ModelCreeper.java | 0 .../net/minecraft/src/ModelMinecart.java | 0 .../java}/net/minecraft/src/ModelPig.java | 0 .../net/minecraft/src/ModelQuadruped.java | 0 .../net/minecraft/src/ModelRenderer.java | 0 .../java}/net/minecraft/src/ModelSheep.java | 0 .../net/minecraft/src/ModelSheepFur.java | 0 .../net/minecraft/src/ModelSkeleton.java | 0 .../java}/net/minecraft/src/ModelSpider.java | 0 .../java}/net/minecraft/src/ModelZombie.java | 0 .../java/net/minecraft/src/MouseHelper.java | 31 + .../net/minecraft/src/MovementInput.java | 0 .../src/MovementInputFromOptions.java | 0 .../minecraft/src/MovingObjectPosition.java | 0 .../main/java}/net/minecraft/src/NBTBase.java | 0 .../java}/net/minecraft/src/NBTTagByte.java | 0 .../net/minecraft/src/NBTTagByteArray.java | 0 .../net/minecraft/src/NBTTagCompound.java | 0 .../java}/net/minecraft/src/NBTTagDouble.java | 0 .../java}/net/minecraft/src/NBTTagEnd.java | 0 .../java}/net/minecraft/src/NBTTagFloat.java | 0 .../java}/net/minecraft/src/NBTTagInt.java | 0 .../java}/net/minecraft/src/NBTTagList.java | 0 .../java}/net/minecraft/src/NBTTagLong.java | 0 .../java}/net/minecraft/src/NBTTagShort.java | 0 .../java}/net/minecraft/src/NBTTagString.java | 0 .../net/minecraft/src/NextTickListEntry.java | 0 .../java}/net/minecraft/src/NibbleArray.java | 0 .../net/minecraft/src/NoiseGenerator.java | 0 .../minecraft/src/NoiseGeneratorOctaves.java | 0 .../minecraft/src/NoiseGeneratorPerlin.java | 0 .../main/java}/net/minecraft/src/OSMap.java | 0 .../java}/net/minecraft/src/OSMapIsom.java | 0 .../net/minecraft/src/PanelCrashReport.java | 11 +- .../main/java}/net/minecraft/src/Path.java | 0 .../java}/net/minecraft/src/PathEntity.java | 0 .../java}/net/minecraft/src/PathPoint.java | 0 .../java}/net/minecraft/src/Pathfinder.java | 0 .../net/minecraft/src/PlayerController.java | 0 .../src/PlayerControllerCreative.java | 0 .../net/minecraft/src/PlayerControllerSP.java | 0 .../minecraft/src/PositionTextureVertex.java | 0 .../java}/net/minecraft/src/RecipeSorter.java | 0 .../java}/net/minecraft/src/RecipesArmor.java | 0 .../net/minecraft/src/RecipesCrafting.java | 0 .../java}/net/minecraft/src/RecipesFood.java | 0 .../net/minecraft/src/RecipesIngots.java | 0 .../java}/net/minecraft/src/RecipesTools.java | 0 .../net/minecraft/src/RecipesWeapons.java | 0 .../main/java}/net/minecraft/src/Render.java | 0 .../java}/net/minecraft/src/RenderArrow.java | 0 .../java}/net/minecraft/src/RenderBlocks.java | 0 .../net/minecraft/src/RenderCreeper.java | 0 .../java}/net/minecraft/src/RenderEngine.java | 0 .../java}/net/minecraft/src/RenderEntity.java | 0 .../net/minecraft/src/RenderFallingSand.java | 0 .../net/minecraft/src/RenderGiantZombie.java | 0 .../java}/net/minecraft/src/RenderGlobal.java | 212 +- .../java}/net/minecraft/src/RenderHelper.java | 0 .../java}/net/minecraft/src/RenderItem.java | 0 .../java}/net/minecraft/src/RenderList.java | 0 .../java}/net/minecraft/src/RenderLiving.java | 0 .../net/minecraft/src/RenderManager.java | 0 .../net/minecraft/src/RenderMinecart.java | 0 .../net/minecraft/src/RenderPainting.java | 0 .../java}/net/minecraft/src/RenderPig.java | 0 .../java}/net/minecraft/src/RenderPlayer.java | 0 .../java}/net/minecraft/src/RenderSheep.java | 0 .../java}/net/minecraft/src/RenderSorter.java | 0 .../java}/net/minecraft/src/RenderSpider.java | 0 .../net/minecraft/src/RenderTNTPrimed.java | 0 .../net/minecraft/src/ScaledResolution.java | 0 .../main/java}/net/minecraft/src/Session.java | 0 .../java}/net/minecraft/src/SignModel.java | 0 .../main/java}/net/minecraft/src/Slot.java | 0 .../java}/net/minecraft/src/SlotArmor.java | 0 .../java}/net/minecraft/src/SlotCrafting.java | 0 .../java}/net/minecraft/src/SoundManager.java | 0 .../java}/net/minecraft/src/SoundPool.java | 0 .../net/minecraft/src/SoundPoolEntry.java | 0 .../net/minecraft/src/SpawnerAnimals.java | 0 .../net/minecraft/src/SpawnerMonsters.java | 0 .../java}/net/minecraft/src/StepSound.java | 0 .../net/minecraft/src/StepSoundGlass.java | 0 .../net/minecraft/src/StepSoundSand.java | 0 .../minecraft/src/TerrainTextureManager.java | 0 .../java/net/minecraft/src/Tessellator.java | 344 +++ .../java}/net/minecraft/src/TextureFX.java | 0 .../net/minecraft/src/TextureFlamesFX.java | 0 .../net/minecraft/src/TextureGearsFX.java | 0 .../net/minecraft/src/TextureLavaFX.java | 0 .../net/minecraft/src/TextureLavaFlowFX.java | 0 .../net/minecraft/src/TextureWaterFX.java | 0 .../net/minecraft/src/TextureWaterFlowFX.java | 0 .../java}/net/minecraft/src/TexturedQuad.java | 0 .../minecraft/src/ThreadDownloadImage.java | 0 .../src/ThreadDownloadImageData.java | 0 .../src/ThreadDownloadResources.java | 0 .../net/minecraft/src/ThreadRunIsoClient.java | 0 .../net/minecraft/src/ThreadSleepForever.java | 0 .../java}/net/minecraft/src/TileEntity.java | 0 .../net/minecraft/src/TileEntityChest.java | 0 .../net/minecraft/src/TileEntityFurnace.java | 0 .../minecraft/src/TileEntityMobSpawner.java | 0 .../src/TileEntityMobSpawnerRenderer.java | 0 .../net/minecraft/src/TileEntityRenderer.java | 0 .../net/minecraft/src/TileEntitySign.java | 0 .../minecraft/src/TileEntitySignRenderer.java | 0 .../src/TileEntitySpecialRenderer.java | 0 .../main/java}/net/minecraft/src/Timer.java | 0 .../minecraft/src/UnexpectedThrowable.java | 0 .../main/java}/net/minecraft/src/Vec3D.java | 0 .../main/java}/net/minecraft/src/World.java | 0 .../net/minecraft/src/WorldGenDungeons.java | 0 .../net/minecraft/src/WorldGenFlowers.java | 0 .../net/minecraft/src/WorldGenLiquids.java | 0 .../net/minecraft/src/WorldGenMinable.java | 0 .../net/minecraft/src/WorldGenTrees.java | 0 .../net/minecraft/src/WorldGenerator.java | 0 .../java}/net/minecraft/src/WorldIso.java | 0 .../net/minecraft/src/WorldRenderer.java | 0 src/main/java/org/lwjgl/input/Keyboard.java | 31 + src/main/java/org/lwjgl/input/Mouse.java | 51 + src/main/java/org/lwjgl/opengl/Display.java | 13 + src/main/java/org/lwjgl/opengl/GL11.java | 1131 ++++++++ src/main/java/org/lwjgl/opengl/GL12.java | 5 + src/net/minecraft/client/MinecraftApplet.java | 105 - src/net/minecraft/isom/IsomPreviewApplet.java | 22 - src/net/minecraft/src/AxisAlignedBB.java | 313 --- src/net/minecraft/src/Block.java | 432 --- src/net/minecraft/src/BlockBookshelf.java | 17 - src/net/minecraft/src/BlockBreakable.java | 19 - src/net/minecraft/src/BlockChest.java | 196 -- src/net/minecraft/src/BlockContainer.java | 23 - src/net/minecraft/src/BlockCrops.java | 110 - src/net/minecraft/src/BlockDirt.java | 7 - src/net/minecraft/src/BlockDoor.java | 154 -- src/net/minecraft/src/BlockFarmland.java | 93 - src/net/minecraft/src/BlockFire.java | 225 -- src/net/minecraft/src/BlockFlower.java | 58 - src/net/minecraft/src/BlockFlowing.java | 253 -- src/net/minecraft/src/BlockFluid.java | 273 -- src/net/minecraft/src/BlockFurnace.java | 106 - src/net/minecraft/src/BlockGears.java | 33 - src/net/minecraft/src/BlockGlass.java | 13 - src/net/minecraft/src/BlockGrass.java | 37 - src/net/minecraft/src/BlockGravel.java | 13 - src/net/minecraft/src/BlockLadder.java | 121 - src/net/minecraft/src/BlockLeaves.java | 53 - src/net/minecraft/src/BlockLeavesBase.java | 19 - src/net/minecraft/src/BlockLog.java | 22 - src/net/minecraft/src/BlockMinecartTrack.java | 92 - src/net/minecraft/src/BlockMobSpawner.java | 15 - src/net/minecraft/src/BlockMushroom.java | 17 - src/net/minecraft/src/BlockObsidian.java | 17 - src/net/minecraft/src/BlockOre.java | 17 - src/net/minecraft/src/BlockOreBlock.java | 12 - src/net/minecraft/src/BlockSand.java | 53 - src/net/minecraft/src/BlockSapling.java | 28 - src/net/minecraft/src/BlockSign.java | 54 - src/net/minecraft/src/BlockSponge.java | 35 - src/net/minecraft/src/BlockStairs.java | 249 -- src/net/minecraft/src/BlockStationary.java | 25 - src/net/minecraft/src/BlockStep.java | 59 - src/net/minecraft/src/BlockStone.java | 13 - src/net/minecraft/src/BlockTNT.java | 29 - src/net/minecraft/src/BlockTorch.java | 166 -- src/net/minecraft/src/BlockWorkbench.java | 17 - src/net/minecraft/src/CanvasCrashReport.java | 11 - src/net/minecraft/src/CanvasIsomPreview.java | 378 --- .../minecraft/src/CanvasMinecraftApplet.java | 22 - src/net/minecraft/src/CanvasMojangLogo.java | 29 - src/net/minecraft/src/ChatLine.java | 11 - src/net/minecraft/src/Chunk.java | 473 ---- src/net/minecraft/src/ChunkCache.java | 123 - src/net/minecraft/src/ChunkLoader.java | 186 -- src/net/minecraft/src/ChunkPosition.java | 26 - .../minecraft/src/ChunkProviderGenerate.java | 610 ----- src/net/minecraft/src/ChunkProviderIso.java | 66 - .../src/ChunkProviderLoadOrGenerate.java | 203 -- src/net/minecraft/src/ClippingHelper.java | 18 - .../src/ClippingHelperImplementation.java | 82 - .../minecraft/src/CompressedStreamTools.java | 50 - src/net/minecraft/src/CraftingManager.java | 107 - src/net/minecraft/src/CraftingRecipe.java | 64 - src/net/minecraft/src/EffectRenderer.java | 162 -- src/net/minecraft/src/Entity.java | 728 ----- src/net/minecraft/src/EntityAnimal.java | 23 - src/net/minecraft/src/EntityArrow.java | 217 -- src/net/minecraft/src/EntityBubbleFX.java | 36 - src/net/minecraft/src/EntityCreature.java | 125 - src/net/minecraft/src/EntityCreeper.java | 64 - src/net/minecraft/src/EntityDiggingFX.java | 32 - src/net/minecraft/src/EntityExplodeFX.java | 38 - src/net/minecraft/src/EntityFX.java | 99 - src/net/minecraft/src/EntityFallingSand.java | 78 - src/net/minecraft/src/EntityFlameFX.java | 59 - src/net/minecraft/src/EntityGiant.java | 17 - src/net/minecraft/src/EntityItem.java | 180 -- src/net/minecraft/src/EntityLavaFX.java | 54 - src/net/minecraft/src/EntityList.java | 72 - src/net/minecraft/src/EntityLiving.java | 548 ---- src/net/minecraft/src/EntityMinecart.java | 520 ---- src/net/minecraft/src/EntityMonster.java | 70 - src/net/minecraft/src/EntityPainting.java | 212 -- src/net/minecraft/src/EntityPickupFX.java | 54 - src/net/minecraft/src/EntityPig.java | 47 - src/net/minecraft/src/EntityPlayer.java | 219 -- src/net/minecraft/src/EntityPlayerSP.java | 118 - src/net/minecraft/src/EntityRainFX.java | 53 - src/net/minecraft/src/EntitySheep.java | 49 - src/net/minecraft/src/EntitySkeleton.java | 52 - src/net/minecraft/src/EntitySmokeFX.java | 63 - src/net/minecraft/src/EntitySorter.java | 19 - src/net/minecraft/src/EntitySpider.java | 56 - src/net/minecraft/src/EntitySplashFX.java | 15 - src/net/minecraft/src/EntityTNTPrimed.java | 68 - src/net/minecraft/src/EntityZombie.java | 25 - src/net/minecraft/src/EnumArt.java | 37 - src/net/minecraft/src/EnumOS.java | 9 - src/net/minecraft/src/EnumOSIsom.java | 9 - src/net/minecraft/src/EnumSkyBlock.java | 12 - src/net/minecraft/src/Explosion.java | 130 - src/net/minecraft/src/FontRenderer.java | 177 -- src/net/minecraft/src/Frustrum.java | 22 - src/net/minecraft/src/GLAllocation.java | 62 - src/net/minecraft/src/GameSettings.java | 202 -- src/net/minecraft/src/Gui.java | 54 - src/net/minecraft/src/GuiButton.java | 61 - src/net/minecraft/src/GuiChest.java | 54 - src/net/minecraft/src/GuiContainer.java | 226 -- src/net/minecraft/src/GuiControls.java | 52 - src/net/minecraft/src/GuiCrafting.java | 75 - src/net/minecraft/src/GuiCreateWorld.java | 69 - src/net/minecraft/src/GuiDeleteWorld.java | 31 - src/net/minecraft/src/GuiEditSign.java | 77 - src/net/minecraft/src/GuiErrorScreen.java | 19 - src/net/minecraft/src/GuiFurnace.java | 48 - src/net/minecraft/src/GuiGameOver.java | 48 - src/net/minecraft/src/GuiIngame.java | 222 -- src/net/minecraft/src/GuiIngameMenu.java | 50 - src/net/minecraft/src/GuiInventory.java | 117 - src/net/minecraft/src/GuiMainMenu.java | 71 - src/net/minecraft/src/GuiOptions.java | 45 - src/net/minecraft/src/GuiScreen.java | 138 - src/net/minecraft/src/GuiSmallButton.java | 7 - src/net/minecraft/src/GuiYesNo.java | 31 - src/net/minecraft/src/IBlockAccess.java | 15 - src/net/minecraft/src/ICamera.java | 7 - src/net/minecraft/src/IChunkLoader.java | 15 - src/net/minecraft/src/IChunkProvider.java | 15 - src/net/minecraft/src/IInventory.java | 17 - src/net/minecraft/src/IProgressUpdate.java | 9 - src/net/minecraft/src/IWorldAccess.java | 17 - src/net/minecraft/src/ImageBuffer.java | 7 - .../minecraft/src/ImageBufferDownload.java | 88 - .../minecraft/src/InventoryCraftResult.java | 38 - src/net/minecraft/src/InventoryCrafting.java | 59 - .../minecraft/src/InventoryLargeChest.java | 47 - src/net/minecraft/src/InventoryPlayer.java | 329 --- src/net/minecraft/src/IsoImageBuffer.java | 32 - src/net/minecraft/src/Item.java | 141 - src/net/minecraft/src/ItemArmor.java | 20 - src/net/minecraft/src/ItemAxe.java | 9 - src/net/minecraft/src/ItemBlock.java | 52 - src/net/minecraft/src/ItemBow.java | 17 - src/net/minecraft/src/ItemBucket.java | 82 - src/net/minecraft/src/ItemDoor.java | 62 - src/net/minecraft/src/ItemFlintAndSteel.java | 44 - src/net/minecraft/src/ItemFood.java | 17 - src/net/minecraft/src/ItemHoe.java | 37 - src/net/minecraft/src/ItemMinecart.java | 19 - src/net/minecraft/src/ItemPainting.java | 37 - src/net/minecraft/src/ItemPickaxe.java | 15 - src/net/minecraft/src/ItemRenderer.java | 361 --- src/net/minecraft/src/ItemSaddle.java | 24 - src/net/minecraft/src/ItemSeeds.java | 25 - src/net/minecraft/src/ItemSign.java | 26 - src/net/minecraft/src/ItemSoup.java | 12 - src/net/minecraft/src/ItemSpade.java | 9 - src/net/minecraft/src/ItemStack.java | 128 - src/net/minecraft/src/ItemSword.java | 28 - src/net/minecraft/src/ItemTool.java | 44 - src/net/minecraft/src/KeyBinding.java | 11 - .../minecraft/src/LoadingScreenRenderer.java | 124 - src/net/minecraft/src/Material.java | 37 - src/net/minecraft/src/MaterialLiquid.java | 11 - src/net/minecraft/src/MaterialLogic.java | 15 - .../minecraft/src/MaterialTransparent.java | 15 - src/net/minecraft/src/MathHelper.java | 58 - src/net/minecraft/src/MetadataChunkBlock.java | 153 -- src/net/minecraft/src/MinecartTrackLogic.java | 250 -- src/net/minecraft/src/Minecraft.java | 1025 ------- .../minecraft/src/MinecraftAppletImpl.java | 20 - src/net/minecraft/src/MinecraftError.java | 4 - src/net/minecraft/src/ModelBase.java | 11 - src/net/minecraft/src/ModelBiped.java | 73 - src/net/minecraft/src/ModelCreeper.java | 56 - src/net/minecraft/src/ModelMinecart.java | 47 - src/net/minecraft/src/ModelPig.java | 11 - src/net/minecraft/src/ModelQuadruped.java | 49 - src/net/minecraft/src/ModelRenderer.java | 131 - src/net/minecraft/src/ModelSheep.java | 13 - src/net/minecraft/src/ModelSheepFur.java | 26 - src/net/minecraft/src/ModelSkeleton.java | 21 - src/net/minecraft/src/ModelSpider.java | 116 - src/net/minecraft/src/ModelZombie.java | 21 - src/net/minecraft/src/MouseHelper.java | 81 - src/net/minecraft/src/MovementInput.java | 17 - .../src/MovementInputFromOptions.java | 67 - .../minecraft/src/MovingObjectPosition.java | 26 - src/net/minecraft/src/NBTBase.java | 102 - src/net/minecraft/src/NBTTagByte.java | 32 - src/net/minecraft/src/NBTTagByteArray.java | 35 - src/net/minecraft/src/NBTTagCompound.java | 128 - src/net/minecraft/src/NBTTagDouble.java | 32 - src/net/minecraft/src/NBTTagEnd.java | 21 - src/net/minecraft/src/NBTTagFloat.java | 32 - src/net/minecraft/src/NBTTagInt.java | 32 - src/net/minecraft/src/NBTTagList.java | 62 - src/net/minecraft/src/NBTTagLong.java | 32 - src/net/minecraft/src/NBTTagShort.java | 32 - src/net/minecraft/src/NBTTagString.java | 35 - src/net/minecraft/src/NextTickListEntry.java | 44 - src/net/minecraft/src/NibbleArray.java | 36 - src/net/minecraft/src/NoiseGenerator.java | 4 - .../minecraft/src/NoiseGeneratorOctaves.java | 61 - .../minecraft/src/NoiseGeneratorPerlin.java | 162 -- src/net/minecraft/src/OSMap.java | 28 - src/net/minecraft/src/OSMapIsom.java | 28 - src/net/minecraft/src/OpenGlCapsChecker.java | 9 - src/net/minecraft/src/Path.java | 119 - src/net/minecraft/src/PathEntity.java | 27 - src/net/minecraft/src/PathPoint.java | 44 - src/net/minecraft/src/Pathfinder.java | 205 -- src/net/minecraft/src/PlayerController.java | 60 - .../src/PlayerControllerCreative.java | 33 - src/net/minecraft/src/PlayerControllerSP.java | 124 - .../minecraft/src/PositionTextureVertex.java | 27 - src/net/minecraft/src/RecipeSorter.java | 19 - src/net/minecraft/src/RecipesArmor.java | 18 - src/net/minecraft/src/RecipesCrafting.java | 9 - src/net/minecraft/src/RecipesFood.java | 8 - src/net/minecraft/src/RecipesIngots.java | 15 - src/net/minecraft/src/RecipesTools.java | 18 - src/net/minecraft/src/RecipesWeapons.java | 20 - src/net/minecraft/src/Render.java | 224 -- src/net/minecraft/src/RenderArrow.java | 67 - src/net/minecraft/src/RenderBlocks.java | 1401 ---------- src/net/minecraft/src/RenderCreeper.java | 56 - src/net/minecraft/src/RenderEngine.java | 254 -- src/net/minecraft/src/RenderEntity.java | 11 - src/net/minecraft/src/RenderFallingSand.java | 27 - src/net/minecraft/src/RenderGiantZombie.java | 20 - src/net/minecraft/src/RenderGlobal.java | 1083 -------- src/net/minecraft/src/RenderHelper.java | 49 - src/net/minecraft/src/RenderItem.java | 193 -- src/net/minecraft/src/RenderList.java | 61 - src/net/minecraft/src/RenderLiving.java | 133 - src/net/minecraft/src/RenderManager.java | 107 - src/net/minecraft/src/RenderMinecart.java | 70 - src/net/minecraft/src/RenderPainting.java | 119 - src/net/minecraft/src/RenderPig.java | 17 - src/net/minecraft/src/RenderPlayer.java | 55 - src/net/minecraft/src/RenderSheep.java | 17 - src/net/minecraft/src/RenderSorter.java | 21 - src/net/minecraft/src/RenderSpider.java | 38 - src/net/minecraft/src/RenderTNTPrimed.java | 54 - src/net/minecraft/src/ScaledResolution.java | 26 - src/net/minecraft/src/Session.java | 48 - src/net/minecraft/src/SignModel.java | 17 - src/net/minecraft/src/Slot.java | 50 - src/net/minecraft/src/SlotArmor.java | 20 - src/net/minecraft/src/SlotCrafting.java | 23 - src/net/minecraft/src/SoundManager.java | 138 - src/net/minecraft/src/SoundPool.java | 42 - src/net/minecraft/src/SoundPoolEntry.java | 13 - src/net/minecraft/src/SpawnerAnimals.java | 97 - src/net/minecraft/src/SpawnerMonsters.java | 17 - src/net/minecraft/src/StepSound.java | 29 - src/net/minecraft/src/StepSoundGlass.java | 11 - src/net/minecraft/src/StepSoundSand.java | 11 - .../minecraft/src/TerrainTextureManager.java | 214 -- src/net/minecraft/src/Tessellator.java | 298 -- src/net/minecraft/src/TextureFX.java | 16 - src/net/minecraft/src/TextureFlamesFX.java | 77 - src/net/minecraft/src/TextureGearsFX.java | 65 - src/net/minecraft/src/TextureLavaFX.java | 81 - src/net/minecraft/src/TextureLavaFlowFX.java | 85 - src/net/minecraft/src/TextureWaterFX.java | 85 - src/net/minecraft/src/TextureWaterFlowFX.java | 86 - src/net/minecraft/src/TexturedQuad.java | 47 - .../minecraft/src/ThreadDownloadImage.java | 44 - .../src/ThreadDownloadImageData.java | 14 - .../src/ThreadDownloadResources.java | 117 - src/net/minecraft/src/ThreadRunIsoClient.java | 21 - src/net/minecraft/src/ThreadSleepForever.java | 22 - src/net/minecraft/src/TileEntity.java | 86 - src/net/minecraft/src/TileEntityChest.java | 80 - src/net/minecraft/src/TileEntityFurnace.java | 190 -- .../minecraft/src/TileEntityMobSpawner.java | 94 - .../src/TileEntityMobSpawnerRenderer.java | 36 - src/net/minecraft/src/TileEntityRenderer.java | 86 - src/net/minecraft/src/TileEntitySign.java | 26 - .../minecraft/src/TileEntitySignRenderer.java | 41 - .../src/TileEntitySpecialRenderer.java | 20 - src/net/minecraft/src/Timer.java | 58 - .../minecraft/src/UnexpectedThrowable.java | 11 - src/net/minecraft/src/Vec3D.java | 135 - src/net/minecraft/src/World.java | 1599 ----------- src/net/minecraft/src/WorldGenDungeons.java | 116 - src/net/minecraft/src/WorldGenFlowers.java | 24 - src/net/minecraft/src/WorldGenLiquids.java | 61 - src/net/minecraft/src/WorldGenMinable.java | 47 - src/net/minecraft/src/WorldGenTrees.java | 78 - src/net/minecraft/src/WorldGenerator.java | 10 - src/net/minecraft/src/WorldIso.java | 16 - src/net/minecraft/src/WorldRenderer.java | 214 -- 1008 files changed, 11635 insertions(+), 29045 deletions(-) create mode 100644 .gradle/7.4.2/checksums/checksums.lock create mode 100644 .gradle/7.4.2/dependencies-accessors/dependencies-accessors.lock create mode 100644 .gradle/7.4.2/dependencies-accessors/gc.properties create mode 100644 .gradle/7.4.2/executionHistory/executionHistory.lock create mode 100644 .gradle/7.4.2/fileChanges/last-build.bin create mode 100644 .gradle/7.4.2/fileHashes/fileHashes.lock create mode 100644 .gradle/7.4.2/gc.properties create mode 100644 .gradle/buildOutputCleanup/buildOutputCleanup.lock create mode 100644 .gradle/buildOutputCleanup/cache.properties create mode 100644 .gradle/vcs-1/gc.properties create mode 100644 .settings/org.eclipse.buildship.core.prefs create mode 100644 bin/main/net/PeytonPlayz585/Main.class create mode 100644 bin/main/net/PeytonPlayz585/minecraft/AssetRepository.class create mode 100644 bin/main/net/PeytonPlayz585/minecraft/Base64.class create mode 100644 bin/main/net/PeytonPlayz585/minecraft/BaseNCodec$CodecPolicy.class create mode 100644 bin/main/net/PeytonPlayz585/minecraft/BaseNCodec$Context.class create mode 100644 bin/main/net/PeytonPlayz585/minecraft/BaseNCodec.class create mode 100644 bin/main/net/PeytonPlayz585/minecraft/FixedFunctionShader.class create mode 100644 bin/main/net/PeytonPlayz585/minecraft/GeneralDigest.class create mode 100644 bin/main/net/PeytonPlayz585/minecraft/SHA1Digest.class create mode 100644 bin/main/net/PeytonPlayz585/opengl/GLObjectMap.class create mode 100644 bin/main/net/PeytonPlayz585/opengl/LWJGLMain$1.class create mode 100644 bin/main/net/PeytonPlayz585/opengl/LWJGLMain$10.class create mode 100644 bin/main/net/PeytonPlayz585/opengl/LWJGLMain$11.class create mode 100644 bin/main/net/PeytonPlayz585/opengl/LWJGLMain$12.class create mode 100644 bin/main/net/PeytonPlayz585/opengl/LWJGLMain$13.class create mode 100644 bin/main/net/PeytonPlayz585/opengl/LWJGLMain$14$1.class create mode 100644 bin/main/net/PeytonPlayz585/opengl/LWJGLMain$14.class create mode 100644 bin/main/net/PeytonPlayz585/opengl/LWJGLMain$15.class create mode 100644 bin/main/net/PeytonPlayz585/opengl/LWJGLMain$16.class create mode 100644 bin/main/net/PeytonPlayz585/opengl/LWJGLMain$17.class create mode 100644 bin/main/net/PeytonPlayz585/opengl/LWJGLMain$18.class create mode 100644 bin/main/net/PeytonPlayz585/opengl/LWJGLMain$19.class create mode 100644 bin/main/net/PeytonPlayz585/opengl/LWJGLMain$2.class create mode 100644 bin/main/net/PeytonPlayz585/opengl/LWJGLMain$20.class create mode 100644 bin/main/net/PeytonPlayz585/opengl/LWJGLMain$21.class create mode 100644 bin/main/net/PeytonPlayz585/opengl/LWJGLMain$22.class create mode 100644 bin/main/net/PeytonPlayz585/opengl/LWJGLMain$3.class create mode 100644 bin/main/net/PeytonPlayz585/opengl/LWJGLMain$4.class create mode 100644 bin/main/net/PeytonPlayz585/opengl/LWJGLMain$5.class create mode 100644 bin/main/net/PeytonPlayz585/opengl/LWJGLMain$6.class create mode 100644 bin/main/net/PeytonPlayz585/opengl/LWJGLMain$7.class create mode 100644 bin/main/net/PeytonPlayz585/opengl/LWJGLMain$8.class create mode 100644 bin/main/net/PeytonPlayz585/opengl/LWJGLMain$9.class create mode 100644 bin/main/net/PeytonPlayz585/opengl/LWJGLMain$AudioBufferSourceNodeX.class create mode 100644 bin/main/net/PeytonPlayz585/opengl/LWJGLMain$AudioBufferX.class create mode 100644 bin/main/net/PeytonPlayz585/opengl/LWJGLMain$BufferArrayGL.class create mode 100644 bin/main/net/PeytonPlayz585/opengl/LWJGLMain$BufferGL.class create mode 100644 bin/main/net/PeytonPlayz585/opengl/LWJGLMain$FramebufferGL.class create mode 100644 bin/main/net/PeytonPlayz585/opengl/LWJGLMain$ProgramGL.class create mode 100644 bin/main/net/PeytonPlayz585/opengl/LWJGLMain$QueryGL.class create mode 100644 bin/main/net/PeytonPlayz585/opengl/LWJGLMain$RateLimit.class create mode 100644 bin/main/net/PeytonPlayz585/opengl/LWJGLMain$RenderbufferGL.class create mode 100644 bin/main/net/PeytonPlayz585/opengl/LWJGLMain$ShaderGL.class create mode 100644 bin/main/net/PeytonPlayz585/opengl/LWJGLMain$StupidFunctionResolveString.class create mode 100644 bin/main/net/PeytonPlayz585/opengl/LWJGLMain$TextureGL.class create mode 100644 bin/main/net/PeytonPlayz585/opengl/LWJGLMain$UniformGL.class create mode 100644 bin/main/net/PeytonPlayz585/opengl/LWJGLMain.class create mode 100644 bin/main/net/PeytonPlayz585/opengl/Matrix.class create mode 100644 bin/main/net/PeytonPlayz585/opengl/Matrix4f.class create mode 100644 bin/main/net/PeytonPlayz585/opengl/MinecraftImageData.class create mode 100644 bin/main/net/PeytonPlayz585/opengl/ReadableVector.class create mode 100644 bin/main/net/PeytonPlayz585/opengl/ReadableVector2f.class create mode 100644 bin/main/net/PeytonPlayz585/opengl/ReadableVector3f.class create mode 100644 bin/main/net/PeytonPlayz585/opengl/ReadableVector4f.class create mode 100644 bin/main/net/PeytonPlayz585/opengl/RealOpenGLEmuns.class create mode 100644 bin/main/net/PeytonPlayz585/opengl/Vector.class create mode 100644 bin/main/net/PeytonPlayz585/opengl/Vector2f.class create mode 100644 bin/main/net/PeytonPlayz585/opengl/Vector3f.class create mode 100644 bin/main/net/PeytonPlayz585/opengl/Vector4f.class create mode 100644 bin/main/net/PeytonPlayz585/opengl/WebGL2RenderingContext.class create mode 100644 bin/main/net/PeytonPlayz585/opengl/WebGLQuery.class create mode 100644 bin/main/net/PeytonPlayz585/opengl/WebGLVertexArray.class create mode 100644 bin/main/net/PeytonPlayz585/opengl/WritableVector2f.class create mode 100644 bin/main/net/PeytonPlayz585/opengl/WritableVector3f.class create mode 100644 bin/main/net/PeytonPlayz585/opengl/WritableVector4f.class create mode 100644 bin/main/net/minecraft/client/MinecraftApplet.class create mode 100644 bin/main/net/minecraft/isom/IsomPreviewApplet.class create mode 100644 bin/main/net/minecraft/src/AxisAlignedBB.class create mode 100644 bin/main/net/minecraft/src/Block.class create mode 100644 bin/main/net/minecraft/src/BlockBookshelf.class create mode 100644 bin/main/net/minecraft/src/BlockBreakable.class create mode 100644 bin/main/net/minecraft/src/BlockChest.class create mode 100644 bin/main/net/minecraft/src/BlockContainer.class create mode 100644 bin/main/net/minecraft/src/BlockCrops.class create mode 100644 bin/main/net/minecraft/src/BlockDirt.class create mode 100644 bin/main/net/minecraft/src/BlockDoor.class create mode 100644 bin/main/net/minecraft/src/BlockFarmland.class create mode 100644 bin/main/net/minecraft/src/BlockFire.class create mode 100644 bin/main/net/minecraft/src/BlockFlower.class create mode 100644 bin/main/net/minecraft/src/BlockFlowing.class create mode 100644 bin/main/net/minecraft/src/BlockFluid.class create mode 100644 bin/main/net/minecraft/src/BlockFurnace.class create mode 100644 bin/main/net/minecraft/src/BlockGears.class create mode 100644 bin/main/net/minecraft/src/BlockGlass.class create mode 100644 bin/main/net/minecraft/src/BlockGrass.class create mode 100644 bin/main/net/minecraft/src/BlockGravel.class create mode 100644 bin/main/net/minecraft/src/BlockLadder.class create mode 100644 bin/main/net/minecraft/src/BlockLeaves.class create mode 100644 bin/main/net/minecraft/src/BlockLeavesBase.class create mode 100644 bin/main/net/minecraft/src/BlockLog.class create mode 100644 bin/main/net/minecraft/src/BlockMinecartTrack.class create mode 100644 bin/main/net/minecraft/src/BlockMobSpawner.class create mode 100644 bin/main/net/minecraft/src/BlockMushroom.class create mode 100644 bin/main/net/minecraft/src/BlockObsidian.class create mode 100644 bin/main/net/minecraft/src/BlockOre.class create mode 100644 bin/main/net/minecraft/src/BlockOreBlock.class create mode 100644 bin/main/net/minecraft/src/BlockSand.class create mode 100644 bin/main/net/minecraft/src/BlockSapling.class create mode 100644 bin/main/net/minecraft/src/BlockSign.class create mode 100644 bin/main/net/minecraft/src/BlockSponge.class create mode 100644 bin/main/net/minecraft/src/BlockStairs.class create mode 100644 bin/main/net/minecraft/src/BlockStationary.class create mode 100644 bin/main/net/minecraft/src/BlockStep.class create mode 100644 bin/main/net/minecraft/src/BlockStone.class create mode 100644 bin/main/net/minecraft/src/BlockTNT.class create mode 100644 bin/main/net/minecraft/src/BlockTorch.class create mode 100644 bin/main/net/minecraft/src/BlockWorkbench.class create mode 100644 bin/main/net/minecraft/src/CanvasCrashReport.class create mode 100644 bin/main/net/minecraft/src/CanvasIsomPreview.class create mode 100644 bin/main/net/minecraft/src/CanvasMinecraftApplet.class create mode 100644 bin/main/net/minecraft/src/CanvasMojangLogo.class create mode 100644 bin/main/net/minecraft/src/ChatLine.class create mode 100644 bin/main/net/minecraft/src/Chunk.class create mode 100644 bin/main/net/minecraft/src/ChunkCache.class create mode 100644 bin/main/net/minecraft/src/ChunkLoader.class create mode 100644 bin/main/net/minecraft/src/ChunkPosition.class create mode 100644 bin/main/net/minecraft/src/ChunkProviderGenerate.class create mode 100644 bin/main/net/minecraft/src/ChunkProviderIso.class create mode 100644 bin/main/net/minecraft/src/ChunkProviderLoadOrGenerate.class create mode 100644 bin/main/net/minecraft/src/ClippingHelper.class create mode 100644 bin/main/net/minecraft/src/ClippingHelperImplementation.class create mode 100644 bin/main/net/minecraft/src/CompressedStreamTools.class create mode 100644 bin/main/net/minecraft/src/CraftingManager.class create mode 100644 bin/main/net/minecraft/src/CraftingRecipe.class create mode 100644 bin/main/net/minecraft/src/EffectRenderer.class create mode 100644 bin/main/net/minecraft/src/Entity.class create mode 100644 bin/main/net/minecraft/src/EntityAnimal.class create mode 100644 bin/main/net/minecraft/src/EntityArrow.class create mode 100644 bin/main/net/minecraft/src/EntityBubbleFX.class create mode 100644 bin/main/net/minecraft/src/EntityCreature.class create mode 100644 bin/main/net/minecraft/src/EntityCreeper.class create mode 100644 bin/main/net/minecraft/src/EntityDiggingFX.class create mode 100644 bin/main/net/minecraft/src/EntityExplodeFX.class create mode 100644 bin/main/net/minecraft/src/EntityFX.class create mode 100644 bin/main/net/minecraft/src/EntityFallingSand.class create mode 100644 bin/main/net/minecraft/src/EntityFlameFX.class create mode 100644 bin/main/net/minecraft/src/EntityGiant.class create mode 100644 bin/main/net/minecraft/src/EntityItem.class create mode 100644 bin/main/net/minecraft/src/EntityLavaFX.class create mode 100644 bin/main/net/minecraft/src/EntityList.class create mode 100644 bin/main/net/minecraft/src/EntityLiving.class create mode 100644 bin/main/net/minecraft/src/EntityMinecart.class create mode 100644 bin/main/net/minecraft/src/EntityMonster.class create mode 100644 bin/main/net/minecraft/src/EntityPainting.class create mode 100644 bin/main/net/minecraft/src/EntityPickupFX.class create mode 100644 bin/main/net/minecraft/src/EntityPig.class create mode 100644 bin/main/net/minecraft/src/EntityPlayer.class create mode 100644 bin/main/net/minecraft/src/EntityPlayerSP.class create mode 100644 bin/main/net/minecraft/src/EntityRainFX.class create mode 100644 bin/main/net/minecraft/src/EntityRenderer.class create mode 100644 bin/main/net/minecraft/src/EntitySheep.class create mode 100644 bin/main/net/minecraft/src/EntitySkeleton.class create mode 100644 bin/main/net/minecraft/src/EntitySmokeFX.class create mode 100644 bin/main/net/minecraft/src/EntitySorter.class create mode 100644 bin/main/net/minecraft/src/EntitySpider.class create mode 100644 bin/main/net/minecraft/src/EntitySplashFX.class create mode 100644 bin/main/net/minecraft/src/EntityTNTPrimed.class create mode 100644 bin/main/net/minecraft/src/EntityZombie.class create mode 100644 bin/main/net/minecraft/src/EnumArt.class create mode 100644 bin/main/net/minecraft/src/EnumOS.class create mode 100644 bin/main/net/minecraft/src/EnumOSIsom.class create mode 100644 bin/main/net/minecraft/src/EnumSkyBlock.class create mode 100644 bin/main/net/minecraft/src/Explosion.class create mode 100644 bin/main/net/minecraft/src/FontRenderer.class create mode 100644 bin/main/net/minecraft/src/Frustrum.class create mode 100644 bin/main/net/minecraft/src/GLAllocation.class create mode 100644 bin/main/net/minecraft/src/GameSettings.class create mode 100644 bin/main/net/minecraft/src/Gui.class create mode 100644 bin/main/net/minecraft/src/GuiButton.class create mode 100644 bin/main/net/minecraft/src/GuiChest.class create mode 100644 bin/main/net/minecraft/src/GuiContainer.class create mode 100644 bin/main/net/minecraft/src/GuiControls.class create mode 100644 bin/main/net/minecraft/src/GuiCrafting.class create mode 100644 bin/main/net/minecraft/src/GuiCreateWorld.class create mode 100644 bin/main/net/minecraft/src/GuiDeleteWorld.class create mode 100644 bin/main/net/minecraft/src/GuiEditSign.class create mode 100644 bin/main/net/minecraft/src/GuiErrorScreen.class create mode 100644 bin/main/net/minecraft/src/GuiFurnace.class create mode 100644 bin/main/net/minecraft/src/GuiGameOver.class create mode 100644 bin/main/net/minecraft/src/GuiIngame.class create mode 100644 bin/main/net/minecraft/src/GuiIngameMenu.class create mode 100644 bin/main/net/minecraft/src/GuiInventory.class create mode 100644 bin/main/net/minecraft/src/GuiMainMenu.class create mode 100644 bin/main/net/minecraft/src/GuiOptions.class create mode 100644 bin/main/net/minecraft/src/GuiScreen.class create mode 100644 bin/main/net/minecraft/src/GuiSmallButton.class create mode 100644 bin/main/net/minecraft/src/GuiYesNo.class create mode 100644 bin/main/net/minecraft/src/IBlockAccess.class create mode 100644 bin/main/net/minecraft/src/ICamera.class create mode 100644 bin/main/net/minecraft/src/IChunkLoader.class create mode 100644 bin/main/net/minecraft/src/IChunkProvider.class create mode 100644 bin/main/net/minecraft/src/IInventory.class create mode 100644 bin/main/net/minecraft/src/IProgressUpdate.class create mode 100644 bin/main/net/minecraft/src/IWorldAccess.class create mode 100644 bin/main/net/minecraft/src/ImageBuffer.class create mode 100644 bin/main/net/minecraft/src/ImageBufferDownload.class create mode 100644 bin/main/net/minecraft/src/InventoryCraftResult.class create mode 100644 bin/main/net/minecraft/src/InventoryCrafting.class create mode 100644 bin/main/net/minecraft/src/InventoryLargeChest.class create mode 100644 bin/main/net/minecraft/src/InventoryPlayer.class create mode 100644 bin/main/net/minecraft/src/IsoImageBuffer.class create mode 100644 bin/main/net/minecraft/src/Item.class create mode 100644 bin/main/net/minecraft/src/ItemArmor.class create mode 100644 bin/main/net/minecraft/src/ItemAxe.class create mode 100644 bin/main/net/minecraft/src/ItemBlock.class create mode 100644 bin/main/net/minecraft/src/ItemBow.class create mode 100644 bin/main/net/minecraft/src/ItemBucket.class create mode 100644 bin/main/net/minecraft/src/ItemDoor.class create mode 100644 bin/main/net/minecraft/src/ItemFlintAndSteel.class create mode 100644 bin/main/net/minecraft/src/ItemFood.class create mode 100644 bin/main/net/minecraft/src/ItemHoe.class create mode 100644 bin/main/net/minecraft/src/ItemMinecart.class create mode 100644 bin/main/net/minecraft/src/ItemPainting.class create mode 100644 bin/main/net/minecraft/src/ItemPickaxe.class create mode 100644 bin/main/net/minecraft/src/ItemRenderer.class create mode 100644 bin/main/net/minecraft/src/ItemSaddle.class create mode 100644 bin/main/net/minecraft/src/ItemSeeds.class create mode 100644 bin/main/net/minecraft/src/ItemSign.class create mode 100644 bin/main/net/minecraft/src/ItemSoup.class create mode 100644 bin/main/net/minecraft/src/ItemSpade.class create mode 100644 bin/main/net/minecraft/src/ItemStack.class create mode 100644 bin/main/net/minecraft/src/ItemSword.class create mode 100644 bin/main/net/minecraft/src/ItemTool.class create mode 100644 bin/main/net/minecraft/src/KeyBinding.class create mode 100644 bin/main/net/minecraft/src/LoadingScreenRenderer.class create mode 100644 bin/main/net/minecraft/src/Material.class create mode 100644 bin/main/net/minecraft/src/MaterialLiquid.class create mode 100644 bin/main/net/minecraft/src/MaterialLogic.class create mode 100644 bin/main/net/minecraft/src/MaterialTransparent.class create mode 100644 bin/main/net/minecraft/src/MathHelper.class create mode 100644 bin/main/net/minecraft/src/MetadataChunkBlock.class create mode 100644 bin/main/net/minecraft/src/MinecartTrackLogic.class create mode 100644 bin/main/net/minecraft/src/Minecraft.class create mode 100644 bin/main/net/minecraft/src/MinecraftAppletImpl.class create mode 100644 bin/main/net/minecraft/src/MinecraftError.class create mode 100644 bin/main/net/minecraft/src/ModelBase.class create mode 100644 bin/main/net/minecraft/src/ModelBiped.class create mode 100644 bin/main/net/minecraft/src/ModelCreeper.class create mode 100644 bin/main/net/minecraft/src/ModelMinecart.class create mode 100644 bin/main/net/minecraft/src/ModelPig.class create mode 100644 bin/main/net/minecraft/src/ModelQuadruped.class create mode 100644 bin/main/net/minecraft/src/ModelRenderer.class create mode 100644 bin/main/net/minecraft/src/ModelSheep.class create mode 100644 bin/main/net/minecraft/src/ModelSheepFur.class create mode 100644 bin/main/net/minecraft/src/ModelSkeleton.class create mode 100644 bin/main/net/minecraft/src/ModelSpider.class create mode 100644 bin/main/net/minecraft/src/ModelZombie.class create mode 100644 bin/main/net/minecraft/src/MouseHelper.class create mode 100644 bin/main/net/minecraft/src/MovementInput.class create mode 100644 bin/main/net/minecraft/src/MovementInputFromOptions.class create mode 100644 bin/main/net/minecraft/src/MovingObjectPosition.class create mode 100644 bin/main/net/minecraft/src/NBTBase.class create mode 100644 bin/main/net/minecraft/src/NBTTagByte.class create mode 100644 bin/main/net/minecraft/src/NBTTagByteArray.class create mode 100644 bin/main/net/minecraft/src/NBTTagCompound.class create mode 100644 bin/main/net/minecraft/src/NBTTagDouble.class create mode 100644 bin/main/net/minecraft/src/NBTTagEnd.class create mode 100644 bin/main/net/minecraft/src/NBTTagFloat.class create mode 100644 bin/main/net/minecraft/src/NBTTagInt.class create mode 100644 bin/main/net/minecraft/src/NBTTagList.class create mode 100644 bin/main/net/minecraft/src/NBTTagLong.class create mode 100644 bin/main/net/minecraft/src/NBTTagShort.class create mode 100644 bin/main/net/minecraft/src/NBTTagString.class create mode 100644 bin/main/net/minecraft/src/NextTickListEntry.class create mode 100644 bin/main/net/minecraft/src/NibbleArray.class create mode 100644 bin/main/net/minecraft/src/NoiseGenerator.class create mode 100644 bin/main/net/minecraft/src/NoiseGeneratorOctaves.class create mode 100644 bin/main/net/minecraft/src/NoiseGeneratorPerlin.class create mode 100644 bin/main/net/minecraft/src/OSMap.class create mode 100644 bin/main/net/minecraft/src/OSMapIsom.class create mode 100644 bin/main/net/minecraft/src/PanelCrashReport.class create mode 100644 bin/main/net/minecraft/src/Path.class create mode 100644 bin/main/net/minecraft/src/PathEntity.class create mode 100644 bin/main/net/minecraft/src/PathPoint.class create mode 100644 bin/main/net/minecraft/src/Pathfinder.class create mode 100644 bin/main/net/minecraft/src/PlayerController.class create mode 100644 bin/main/net/minecraft/src/PlayerControllerCreative.class create mode 100644 bin/main/net/minecraft/src/PlayerControllerSP.class create mode 100644 bin/main/net/minecraft/src/PositionTextureVertex.class create mode 100644 bin/main/net/minecraft/src/RecipeSorter.class create mode 100644 bin/main/net/minecraft/src/RecipesArmor.class create mode 100644 bin/main/net/minecraft/src/RecipesCrafting.class create mode 100644 bin/main/net/minecraft/src/RecipesFood.class create mode 100644 bin/main/net/minecraft/src/RecipesIngots.class create mode 100644 bin/main/net/minecraft/src/RecipesTools.class create mode 100644 bin/main/net/minecraft/src/RecipesWeapons.class create mode 100644 bin/main/net/minecraft/src/Render.class create mode 100644 bin/main/net/minecraft/src/RenderArrow.class create mode 100644 bin/main/net/minecraft/src/RenderBlocks.class create mode 100644 bin/main/net/minecraft/src/RenderCreeper.class create mode 100644 bin/main/net/minecraft/src/RenderEngine.class create mode 100644 bin/main/net/minecraft/src/RenderEntity.class create mode 100644 bin/main/net/minecraft/src/RenderFallingSand.class create mode 100644 bin/main/net/minecraft/src/RenderGiantZombie.class create mode 100644 bin/main/net/minecraft/src/RenderGlobal.class create mode 100644 bin/main/net/minecraft/src/RenderHelper.class create mode 100644 bin/main/net/minecraft/src/RenderItem.class create mode 100644 bin/main/net/minecraft/src/RenderList.class create mode 100644 bin/main/net/minecraft/src/RenderLiving.class create mode 100644 bin/main/net/minecraft/src/RenderManager.class create mode 100644 bin/main/net/minecraft/src/RenderMinecart.class create mode 100644 bin/main/net/minecraft/src/RenderPainting.class create mode 100644 bin/main/net/minecraft/src/RenderPig.class create mode 100644 bin/main/net/minecraft/src/RenderPlayer.class create mode 100644 bin/main/net/minecraft/src/RenderSheep.class create mode 100644 bin/main/net/minecraft/src/RenderSorter.class create mode 100644 bin/main/net/minecraft/src/RenderSpider.class create mode 100644 bin/main/net/minecraft/src/RenderTNTPrimed.class create mode 100644 bin/main/net/minecraft/src/ScaledResolution.class create mode 100644 bin/main/net/minecraft/src/Session.class create mode 100644 bin/main/net/minecraft/src/SignModel.class create mode 100644 bin/main/net/minecraft/src/Slot.class create mode 100644 bin/main/net/minecraft/src/SlotArmor.class create mode 100644 bin/main/net/minecraft/src/SlotCrafting.class create mode 100644 bin/main/net/minecraft/src/SoundManager.class create mode 100644 bin/main/net/minecraft/src/SoundPool.class create mode 100644 bin/main/net/minecraft/src/SoundPoolEntry.class create mode 100644 bin/main/net/minecraft/src/SpawnerAnimals.class create mode 100644 bin/main/net/minecraft/src/SpawnerMonsters.class create mode 100644 bin/main/net/minecraft/src/StepSound.class create mode 100644 bin/main/net/minecraft/src/StepSoundGlass.class create mode 100644 bin/main/net/minecraft/src/StepSoundSand.class create mode 100644 bin/main/net/minecraft/src/TerrainTextureManager.class create mode 100644 bin/main/net/minecraft/src/Tessellator.class create mode 100644 bin/main/net/minecraft/src/TextureFX.class create mode 100644 bin/main/net/minecraft/src/TextureFlamesFX.class create mode 100644 bin/main/net/minecraft/src/TextureGearsFX.class create mode 100644 bin/main/net/minecraft/src/TextureLavaFX.class create mode 100644 bin/main/net/minecraft/src/TextureLavaFlowFX.class create mode 100644 bin/main/net/minecraft/src/TextureWaterFX.class create mode 100644 bin/main/net/minecraft/src/TextureWaterFlowFX.class create mode 100644 bin/main/net/minecraft/src/TexturedQuad.class create mode 100644 bin/main/net/minecraft/src/ThreadDownloadImage.class create mode 100644 bin/main/net/minecraft/src/ThreadDownloadImageData.class create mode 100644 bin/main/net/minecraft/src/ThreadDownloadResources.class create mode 100644 bin/main/net/minecraft/src/ThreadRunIsoClient.class create mode 100644 bin/main/net/minecraft/src/ThreadSleepForever.class create mode 100644 bin/main/net/minecraft/src/TileEntity.class create mode 100644 bin/main/net/minecraft/src/TileEntityChest.class create mode 100644 bin/main/net/minecraft/src/TileEntityFurnace.class create mode 100644 bin/main/net/minecraft/src/TileEntityMobSpawner.class create mode 100644 bin/main/net/minecraft/src/TileEntityMobSpawnerRenderer.class create mode 100644 bin/main/net/minecraft/src/TileEntityRenderer.class create mode 100644 bin/main/net/minecraft/src/TileEntitySign.class create mode 100644 bin/main/net/minecraft/src/TileEntitySignRenderer.class create mode 100644 bin/main/net/minecraft/src/TileEntitySpecialRenderer.class create mode 100644 bin/main/net/minecraft/src/Timer.class create mode 100644 bin/main/net/minecraft/src/UnexpectedThrowable.class create mode 100644 bin/main/net/minecraft/src/Vec3D.class create mode 100644 bin/main/net/minecraft/src/World.class create mode 100644 bin/main/net/minecraft/src/WorldGenDungeons.class create mode 100644 bin/main/net/minecraft/src/WorldGenFlowers.class create mode 100644 bin/main/net/minecraft/src/WorldGenLiquids.class create mode 100644 bin/main/net/minecraft/src/WorldGenMinable.class create mode 100644 bin/main/net/minecraft/src/WorldGenTrees.class create mode 100644 bin/main/net/minecraft/src/WorldGenerator.class create mode 100644 bin/main/net/minecraft/src/WorldIso.class create mode 100644 bin/main/net/minecraft/src/WorldRenderer.class create mode 100644 bin/main/org/lwjgl/input/Keyboard.class create mode 100644 bin/main/org/lwjgl/input/Mouse.class create mode 100644 bin/main/org/lwjgl/opengl/Display.class create mode 100644 bin/main/org/lwjgl/opengl/GL11$DisplayList.class create mode 100644 bin/main/org/lwjgl/opengl/GL11.class create mode 100644 bin/main/org/lwjgl/opengl/GL12.class create mode 100755 build.gradle create mode 100755 gradlew create mode 100755 gradlew.bat delete mode 100644 jars/deobfuscated-source.jar delete mode 100644 jars/deobfuscated.jar delete mode 100644 md5/original.md5 create mode 100755 settings.gradle delete mode 100644 source/net/minecraft/src/EntityRenderer.java delete mode 100644 source/net/minecraft/src/GLAllocation.java delete mode 100644 source/net/minecraft/src/MouseHelper.java delete mode 100644 source/net/minecraft/src/OpenGlCapsChecker.java delete mode 100644 source/net/minecraft/src/PanelCrashReport.java delete mode 100644 source/net/minecraft/src/Tessellator.java create mode 100644 src/main/java/net/PeytonPlayz585/Main.java create mode 100644 src/main/java/net/PeytonPlayz585/minecraft/AssetRepository.java create mode 100644 src/main/java/net/PeytonPlayz585/minecraft/Base64.java create mode 100644 src/main/java/net/PeytonPlayz585/minecraft/BaseNCodec.java create mode 100644 src/main/java/net/PeytonPlayz585/minecraft/FixedFunctionShader.java create mode 100644 src/main/java/net/PeytonPlayz585/minecraft/GeneralDigest.java create mode 100644 src/main/java/net/PeytonPlayz585/minecraft/SHA1Digest.java create mode 100644 src/main/java/net/PeytonPlayz585/opengl/GLObjectMap.java create mode 100644 src/main/java/net/PeytonPlayz585/opengl/LWJGLMain.java create mode 100644 src/main/java/net/PeytonPlayz585/opengl/Matrix.java create mode 100644 src/main/java/net/PeytonPlayz585/opengl/Matrix4f.java create mode 100644 src/main/java/net/PeytonPlayz585/opengl/MinecraftImageData.java create mode 100644 src/main/java/net/PeytonPlayz585/opengl/ReadableVector.java create mode 100644 src/main/java/net/PeytonPlayz585/opengl/ReadableVector2f.java create mode 100644 src/main/java/net/PeytonPlayz585/opengl/ReadableVector3f.java create mode 100644 src/main/java/net/PeytonPlayz585/opengl/ReadableVector4f.java create mode 100644 src/main/java/net/PeytonPlayz585/opengl/RealOpenGLEmuns.java create mode 100644 src/main/java/net/PeytonPlayz585/opengl/Vector.java create mode 100644 src/main/java/net/PeytonPlayz585/opengl/Vector2f.java create mode 100644 src/main/java/net/PeytonPlayz585/opengl/Vector3f.java create mode 100644 src/main/java/net/PeytonPlayz585/opengl/Vector4f.java create mode 100644 src/main/java/net/PeytonPlayz585/opengl/WebGL2RenderingContext.java create mode 100644 src/main/java/net/PeytonPlayz585/opengl/WebGLQuery.java create mode 100644 src/main/java/net/PeytonPlayz585/opengl/WebGLVertexArray.java create mode 100644 src/main/java/net/PeytonPlayz585/opengl/WritableVector2f.java create mode 100644 src/main/java/net/PeytonPlayz585/opengl/WritableVector3f.java create mode 100644 src/main/java/net/PeytonPlayz585/opengl/WritableVector4f.java rename {source => src/main/java}/net/minecraft/client/MinecraftApplet.java (100%) rename {source => src/main/java}/net/minecraft/isom/IsomPreviewApplet.java (100%) rename {source => src/main/java}/net/minecraft/src/AxisAlignedBB.java (100%) rename {source => src/main/java}/net/minecraft/src/Block.java (100%) rename {source => src/main/java}/net/minecraft/src/BlockBookshelf.java (100%) rename {source => src/main/java}/net/minecraft/src/BlockBreakable.java (100%) rename {source => src/main/java}/net/minecraft/src/BlockChest.java (100%) rename {source => src/main/java}/net/minecraft/src/BlockContainer.java (100%) rename {source => src/main/java}/net/minecraft/src/BlockCrops.java (100%) rename {source => src/main/java}/net/minecraft/src/BlockDirt.java (100%) rename {source => src/main/java}/net/minecraft/src/BlockDoor.java (100%) rename {source => src/main/java}/net/minecraft/src/BlockFarmland.java (100%) rename {source => src/main/java}/net/minecraft/src/BlockFire.java (100%) rename {source => src/main/java}/net/minecraft/src/BlockFlower.java (100%) rename {source => src/main/java}/net/minecraft/src/BlockFlowing.java (100%) rename {source => src/main/java}/net/minecraft/src/BlockFluid.java (100%) rename {source => src/main/java}/net/minecraft/src/BlockFurnace.java (100%) rename {source => src/main/java}/net/minecraft/src/BlockGears.java (100%) rename {source => src/main/java}/net/minecraft/src/BlockGlass.java (100%) rename {source => src/main/java}/net/minecraft/src/BlockGrass.java (100%) rename {source => src/main/java}/net/minecraft/src/BlockGravel.java (100%) rename {source => src/main/java}/net/minecraft/src/BlockLadder.java (100%) rename {source => src/main/java}/net/minecraft/src/BlockLeaves.java (100%) rename {source => src/main/java}/net/minecraft/src/BlockLeavesBase.java (100%) rename {source => src/main/java}/net/minecraft/src/BlockLog.java (100%) rename {source => src/main/java}/net/minecraft/src/BlockMinecartTrack.java (100%) rename {source => src/main/java}/net/minecraft/src/BlockMobSpawner.java (100%) rename {source => src/main/java}/net/minecraft/src/BlockMushroom.java (100%) rename {source => src/main/java}/net/minecraft/src/BlockObsidian.java (100%) rename {source => src/main/java}/net/minecraft/src/BlockOre.java (100%) rename {source => src/main/java}/net/minecraft/src/BlockOreBlock.java (100%) rename {source => src/main/java}/net/minecraft/src/BlockSand.java (100%) rename {source => src/main/java}/net/minecraft/src/BlockSapling.java (100%) rename {source => src/main/java}/net/minecraft/src/BlockSign.java (100%) rename {source => src/main/java}/net/minecraft/src/BlockSponge.java (100%) rename {source => src/main/java}/net/minecraft/src/BlockStairs.java (100%) rename {source => src/main/java}/net/minecraft/src/BlockStationary.java (100%) rename {source => src/main/java}/net/minecraft/src/BlockStep.java (100%) rename {source => src/main/java}/net/minecraft/src/BlockStone.java (100%) rename {source => src/main/java}/net/minecraft/src/BlockTNT.java (100%) rename {source => src/main/java}/net/minecraft/src/BlockTorch.java (100%) rename {source => src/main/java}/net/minecraft/src/BlockWorkbench.java (100%) rename {source => src/main/java}/net/minecraft/src/CanvasCrashReport.java (100%) rename {source => src/main/java}/net/minecraft/src/CanvasIsomPreview.java (100%) rename {source => src/main/java}/net/minecraft/src/CanvasMinecraftApplet.java (100%) rename {source => src/main/java}/net/minecraft/src/CanvasMojangLogo.java (100%) rename {source => src/main/java}/net/minecraft/src/ChatLine.java (100%) rename {source => src/main/java}/net/minecraft/src/Chunk.java (100%) rename {source => src/main/java}/net/minecraft/src/ChunkCache.java (100%) rename {source => src/main/java}/net/minecraft/src/ChunkLoader.java (100%) rename {source => src/main/java}/net/minecraft/src/ChunkPosition.java (100%) rename {source => src/main/java}/net/minecraft/src/ChunkProviderGenerate.java (100%) rename {source => src/main/java}/net/minecraft/src/ChunkProviderIso.java (100%) rename {source => src/main/java}/net/minecraft/src/ChunkProviderLoadOrGenerate.java (100%) rename {source => src/main/java}/net/minecraft/src/ClippingHelper.java (100%) rename {source => src/main/java}/net/minecraft/src/ClippingHelperImplementation.java (100%) rename {source => src/main/java}/net/minecraft/src/CompressedStreamTools.java (100%) rename {source => src/main/java}/net/minecraft/src/CraftingManager.java (100%) rename {source => src/main/java}/net/minecraft/src/CraftingRecipe.java (100%) rename {source => src/main/java}/net/minecraft/src/EffectRenderer.java (100%) rename {source => src/main/java}/net/minecraft/src/Entity.java (100%) rename {source => src/main/java}/net/minecraft/src/EntityAnimal.java (100%) rename {source => src/main/java}/net/minecraft/src/EntityArrow.java (100%) rename {source => src/main/java}/net/minecraft/src/EntityBubbleFX.java (100%) rename {source => src/main/java}/net/minecraft/src/EntityCreature.java (100%) rename {source => src/main/java}/net/minecraft/src/EntityCreeper.java (100%) rename {source => src/main/java}/net/minecraft/src/EntityDiggingFX.java (100%) rename {source => src/main/java}/net/minecraft/src/EntityExplodeFX.java (100%) rename {source => src/main/java}/net/minecraft/src/EntityFX.java (100%) rename {source => src/main/java}/net/minecraft/src/EntityFallingSand.java (100%) rename {source => src/main/java}/net/minecraft/src/EntityFlameFX.java (100%) rename {source => src/main/java}/net/minecraft/src/EntityGiant.java (100%) rename {source => src/main/java}/net/minecraft/src/EntityItem.java (100%) rename {source => src/main/java}/net/minecraft/src/EntityLavaFX.java (100%) rename {source => src/main/java}/net/minecraft/src/EntityList.java (100%) rename {source => src/main/java}/net/minecraft/src/EntityLiving.java (100%) rename {source => src/main/java}/net/minecraft/src/EntityMinecart.java (100%) rename {source => src/main/java}/net/minecraft/src/EntityMonster.java (100%) rename {source => src/main/java}/net/minecraft/src/EntityPainting.java (100%) rename {source => src/main/java}/net/minecraft/src/EntityPickupFX.java (100%) rename {source => src/main/java}/net/minecraft/src/EntityPig.java (100%) rename {source => src/main/java}/net/minecraft/src/EntityPlayer.java (100%) rename {source => src/main/java}/net/minecraft/src/EntityPlayerSP.java (100%) rename {source => src/main/java}/net/minecraft/src/EntityRainFX.java (100%) rename src/{ => main/java}/net/minecraft/src/EntityRenderer.java (98%) rename {source => src/main/java}/net/minecraft/src/EntitySheep.java (100%) rename {source => src/main/java}/net/minecraft/src/EntitySkeleton.java (100%) rename {source => src/main/java}/net/minecraft/src/EntitySmokeFX.java (100%) rename {source => src/main/java}/net/minecraft/src/EntitySorter.java (100%) rename {source => src/main/java}/net/minecraft/src/EntitySpider.java (100%) rename {source => src/main/java}/net/minecraft/src/EntitySplashFX.java (100%) rename {source => src/main/java}/net/minecraft/src/EntityTNTPrimed.java (100%) rename {source => src/main/java}/net/minecraft/src/EntityZombie.java (100%) rename {source => src/main/java}/net/minecraft/src/EnumArt.java (100%) rename {source => src/main/java}/net/minecraft/src/EnumOS.java (100%) rename {source => src/main/java}/net/minecraft/src/EnumOSIsom.java (100%) rename {source => src/main/java}/net/minecraft/src/EnumSkyBlock.java (100%) rename {source => src/main/java}/net/minecraft/src/Explosion.java (100%) rename {source => src/main/java}/net/minecraft/src/FontRenderer.java (100%) rename {source => src/main/java}/net/minecraft/src/Frustrum.java (100%) create mode 100644 src/main/java/net/minecraft/src/GLAllocation.java rename {source => src/main/java}/net/minecraft/src/GameSettings.java (100%) rename {source => src/main/java}/net/minecraft/src/Gui.java (100%) rename {source => src/main/java}/net/minecraft/src/GuiButton.java (100%) rename {source => src/main/java}/net/minecraft/src/GuiChest.java (100%) rename {source => src/main/java}/net/minecraft/src/GuiContainer.java (100%) rename {source => src/main/java}/net/minecraft/src/GuiControls.java (100%) rename {source => src/main/java}/net/minecraft/src/GuiCrafting.java (100%) rename {source => src/main/java}/net/minecraft/src/GuiCreateWorld.java (100%) rename {source => src/main/java}/net/minecraft/src/GuiDeleteWorld.java (100%) rename {source => src/main/java}/net/minecraft/src/GuiEditSign.java (100%) rename {source => src/main/java}/net/minecraft/src/GuiErrorScreen.java (100%) rename {source => src/main/java}/net/minecraft/src/GuiFurnace.java (100%) rename {source => src/main/java}/net/minecraft/src/GuiGameOver.java (100%) rename {source => src/main/java}/net/minecraft/src/GuiIngame.java (100%) rename {source => src/main/java}/net/minecraft/src/GuiIngameMenu.java (100%) rename {source => src/main/java}/net/minecraft/src/GuiInventory.java (100%) rename {source => src/main/java}/net/minecraft/src/GuiMainMenu.java (100%) rename {source => src/main/java}/net/minecraft/src/GuiOptions.java (100%) rename {source => src/main/java}/net/minecraft/src/GuiScreen.java (97%) rename {source => src/main/java}/net/minecraft/src/GuiSmallButton.java (100%) rename {source => src/main/java}/net/minecraft/src/GuiYesNo.java (100%) rename {source => src/main/java}/net/minecraft/src/IBlockAccess.java (100%) rename {source => src/main/java}/net/minecraft/src/ICamera.java (100%) rename {source => src/main/java}/net/minecraft/src/IChunkLoader.java (100%) rename {source => src/main/java}/net/minecraft/src/IChunkProvider.java (100%) rename {source => src/main/java}/net/minecraft/src/IInventory.java (100%) rename {source => src/main/java}/net/minecraft/src/IProgressUpdate.java (100%) rename {source => src/main/java}/net/minecraft/src/IWorldAccess.java (100%) rename {source => src/main/java}/net/minecraft/src/ImageBuffer.java (100%) rename {source => src/main/java}/net/minecraft/src/ImageBufferDownload.java (100%) rename {source => src/main/java}/net/minecraft/src/InventoryCraftResult.java (100%) rename {source => src/main/java}/net/minecraft/src/InventoryCrafting.java (100%) rename {source => src/main/java}/net/minecraft/src/InventoryLargeChest.java (100%) rename {source => src/main/java}/net/minecraft/src/InventoryPlayer.java (100%) rename {source => src/main/java}/net/minecraft/src/IsoImageBuffer.java (100%) rename {source => src/main/java}/net/minecraft/src/Item.java (100%) rename {source => src/main/java}/net/minecraft/src/ItemArmor.java (100%) rename {source => src/main/java}/net/minecraft/src/ItemAxe.java (100%) rename {source => src/main/java}/net/minecraft/src/ItemBlock.java (100%) rename {source => src/main/java}/net/minecraft/src/ItemBow.java (100%) rename {source => src/main/java}/net/minecraft/src/ItemBucket.java (100%) rename {source => src/main/java}/net/minecraft/src/ItemDoor.java (100%) rename {source => src/main/java}/net/minecraft/src/ItemFlintAndSteel.java (100%) rename {source => src/main/java}/net/minecraft/src/ItemFood.java (100%) rename {source => src/main/java}/net/minecraft/src/ItemHoe.java (100%) rename {source => src/main/java}/net/minecraft/src/ItemMinecart.java (100%) rename {source => src/main/java}/net/minecraft/src/ItemPainting.java (100%) rename {source => src/main/java}/net/minecraft/src/ItemPickaxe.java (100%) rename {source => src/main/java}/net/minecraft/src/ItemRenderer.java (100%) rename {source => src/main/java}/net/minecraft/src/ItemSaddle.java (100%) rename {source => src/main/java}/net/minecraft/src/ItemSeeds.java (100%) rename {source => src/main/java}/net/minecraft/src/ItemSign.java (100%) rename {source => src/main/java}/net/minecraft/src/ItemSoup.java (100%) rename {source => src/main/java}/net/minecraft/src/ItemSpade.java (100%) rename {source => src/main/java}/net/minecraft/src/ItemStack.java (100%) rename {source => src/main/java}/net/minecraft/src/ItemSword.java (100%) rename {source => src/main/java}/net/minecraft/src/ItemTool.java (100%) rename {source => src/main/java}/net/minecraft/src/KeyBinding.java (100%) rename {source => src/main/java}/net/minecraft/src/LoadingScreenRenderer.java (100%) rename {source => src/main/java}/net/minecraft/src/Material.java (100%) rename {source => src/main/java}/net/minecraft/src/MaterialLiquid.java (100%) rename {source => src/main/java}/net/minecraft/src/MaterialLogic.java (100%) rename {source => src/main/java}/net/minecraft/src/MaterialTransparent.java (100%) rename {source => src/main/java}/net/minecraft/src/MathHelper.java (100%) rename {source => src/main/java}/net/minecraft/src/MetadataChunkBlock.java (100%) rename {source => src/main/java}/net/minecraft/src/MinecartTrackLogic.java (100%) rename {source => src/main/java}/net/minecraft/src/Minecraft.java (100%) rename {source => src/main/java}/net/minecraft/src/MinecraftAppletImpl.java (100%) rename {source => src/main/java}/net/minecraft/src/MinecraftError.java (100%) rename {source => src/main/java}/net/minecraft/src/ModelBase.java (100%) rename {source => src/main/java}/net/minecraft/src/ModelBiped.java (100%) rename {source => src/main/java}/net/minecraft/src/ModelCreeper.java (100%) rename {source => src/main/java}/net/minecraft/src/ModelMinecart.java (100%) rename {source => src/main/java}/net/minecraft/src/ModelPig.java (100%) rename {source => src/main/java}/net/minecraft/src/ModelQuadruped.java (100%) rename {source => src/main/java}/net/minecraft/src/ModelRenderer.java (100%) rename {source => src/main/java}/net/minecraft/src/ModelSheep.java (100%) rename {source => src/main/java}/net/minecraft/src/ModelSheepFur.java (100%) rename {source => src/main/java}/net/minecraft/src/ModelSkeleton.java (100%) rename {source => src/main/java}/net/minecraft/src/ModelSpider.java (100%) rename {source => src/main/java}/net/minecraft/src/ModelZombie.java (100%) create mode 100644 src/main/java/net/minecraft/src/MouseHelper.java rename {source => src/main/java}/net/minecraft/src/MovementInput.java (100%) rename {source => src/main/java}/net/minecraft/src/MovementInputFromOptions.java (100%) rename {source => src/main/java}/net/minecraft/src/MovingObjectPosition.java (100%) rename {source => src/main/java}/net/minecraft/src/NBTBase.java (100%) rename {source => src/main/java}/net/minecraft/src/NBTTagByte.java (100%) rename {source => src/main/java}/net/minecraft/src/NBTTagByteArray.java (100%) rename {source => src/main/java}/net/minecraft/src/NBTTagCompound.java (100%) rename {source => src/main/java}/net/minecraft/src/NBTTagDouble.java (100%) rename {source => src/main/java}/net/minecraft/src/NBTTagEnd.java (100%) rename {source => src/main/java}/net/minecraft/src/NBTTagFloat.java (100%) rename {source => src/main/java}/net/minecraft/src/NBTTagInt.java (100%) rename {source => src/main/java}/net/minecraft/src/NBTTagList.java (100%) rename {source => src/main/java}/net/minecraft/src/NBTTagLong.java (100%) rename {source => src/main/java}/net/minecraft/src/NBTTagShort.java (100%) rename {source => src/main/java}/net/minecraft/src/NBTTagString.java (100%) rename {source => src/main/java}/net/minecraft/src/NextTickListEntry.java (100%) rename {source => src/main/java}/net/minecraft/src/NibbleArray.java (100%) rename {source => src/main/java}/net/minecraft/src/NoiseGenerator.java (100%) rename {source => src/main/java}/net/minecraft/src/NoiseGeneratorOctaves.java (100%) rename {source => src/main/java}/net/minecraft/src/NoiseGeneratorPerlin.java (100%) rename {source => src/main/java}/net/minecraft/src/OSMap.java (100%) rename {source => src/main/java}/net/minecraft/src/OSMapIsom.java (100%) rename src/{ => main/java}/net/minecraft/src/PanelCrashReport.java (84%) rename {source => src/main/java}/net/minecraft/src/Path.java (100%) rename {source => src/main/java}/net/minecraft/src/PathEntity.java (100%) rename {source => src/main/java}/net/minecraft/src/PathPoint.java (100%) rename {source => src/main/java}/net/minecraft/src/Pathfinder.java (100%) rename {source => src/main/java}/net/minecraft/src/PlayerController.java (100%) rename {source => src/main/java}/net/minecraft/src/PlayerControllerCreative.java (100%) rename {source => src/main/java}/net/minecraft/src/PlayerControllerSP.java (100%) rename {source => src/main/java}/net/minecraft/src/PositionTextureVertex.java (100%) rename {source => src/main/java}/net/minecraft/src/RecipeSorter.java (100%) rename {source => src/main/java}/net/minecraft/src/RecipesArmor.java (100%) rename {source => src/main/java}/net/minecraft/src/RecipesCrafting.java (100%) rename {source => src/main/java}/net/minecraft/src/RecipesFood.java (100%) rename {source => src/main/java}/net/minecraft/src/RecipesIngots.java (100%) rename {source => src/main/java}/net/minecraft/src/RecipesTools.java (100%) rename {source => src/main/java}/net/minecraft/src/RecipesWeapons.java (100%) rename {source => src/main/java}/net/minecraft/src/Render.java (100%) rename {source => src/main/java}/net/minecraft/src/RenderArrow.java (100%) rename {source => src/main/java}/net/minecraft/src/RenderBlocks.java (100%) rename {source => src/main/java}/net/minecraft/src/RenderCreeper.java (100%) rename {source => src/main/java}/net/minecraft/src/RenderEngine.java (100%) rename {source => src/main/java}/net/minecraft/src/RenderEntity.java (100%) rename {source => src/main/java}/net/minecraft/src/RenderFallingSand.java (100%) rename {source => src/main/java}/net/minecraft/src/RenderGiantZombie.java (100%) rename {source => src/main/java}/net/minecraft/src/RenderGlobal.java (90%) rename {source => src/main/java}/net/minecraft/src/RenderHelper.java (100%) rename {source => src/main/java}/net/minecraft/src/RenderItem.java (100%) rename {source => src/main/java}/net/minecraft/src/RenderList.java (100%) rename {source => src/main/java}/net/minecraft/src/RenderLiving.java (100%) rename {source => src/main/java}/net/minecraft/src/RenderManager.java (100%) rename {source => src/main/java}/net/minecraft/src/RenderMinecart.java (100%) rename {source => src/main/java}/net/minecraft/src/RenderPainting.java (100%) rename {source => src/main/java}/net/minecraft/src/RenderPig.java (100%) rename {source => src/main/java}/net/minecraft/src/RenderPlayer.java (100%) rename {source => src/main/java}/net/minecraft/src/RenderSheep.java (100%) rename {source => src/main/java}/net/minecraft/src/RenderSorter.java (100%) rename {source => src/main/java}/net/minecraft/src/RenderSpider.java (100%) rename {source => src/main/java}/net/minecraft/src/RenderTNTPrimed.java (100%) rename {source => src/main/java}/net/minecraft/src/ScaledResolution.java (100%) rename {source => src/main/java}/net/minecraft/src/Session.java (100%) rename {source => src/main/java}/net/minecraft/src/SignModel.java (100%) rename {source => src/main/java}/net/minecraft/src/Slot.java (100%) rename {source => src/main/java}/net/minecraft/src/SlotArmor.java (100%) rename {source => src/main/java}/net/minecraft/src/SlotCrafting.java (100%) rename {source => src/main/java}/net/minecraft/src/SoundManager.java (100%) rename {source => src/main/java}/net/minecraft/src/SoundPool.java (100%) rename {source => src/main/java}/net/minecraft/src/SoundPoolEntry.java (100%) rename {source => src/main/java}/net/minecraft/src/SpawnerAnimals.java (100%) rename {source => src/main/java}/net/minecraft/src/SpawnerMonsters.java (100%) rename {source => src/main/java}/net/minecraft/src/StepSound.java (100%) rename {source => src/main/java}/net/minecraft/src/StepSoundGlass.java (100%) rename {source => src/main/java}/net/minecraft/src/StepSoundSand.java (100%) rename {source => src/main/java}/net/minecraft/src/TerrainTextureManager.java (100%) create mode 100644 src/main/java/net/minecraft/src/Tessellator.java rename {source => src/main/java}/net/minecraft/src/TextureFX.java (100%) rename {source => src/main/java}/net/minecraft/src/TextureFlamesFX.java (100%) rename {source => src/main/java}/net/minecraft/src/TextureGearsFX.java (100%) rename {source => src/main/java}/net/minecraft/src/TextureLavaFX.java (100%) rename {source => src/main/java}/net/minecraft/src/TextureLavaFlowFX.java (100%) rename {source => src/main/java}/net/minecraft/src/TextureWaterFX.java (100%) rename {source => src/main/java}/net/minecraft/src/TextureWaterFlowFX.java (100%) rename {source => src/main/java}/net/minecraft/src/TexturedQuad.java (100%) rename {source => src/main/java}/net/minecraft/src/ThreadDownloadImage.java (100%) rename {source => src/main/java}/net/minecraft/src/ThreadDownloadImageData.java (100%) rename {source => src/main/java}/net/minecraft/src/ThreadDownloadResources.java (100%) rename {source => src/main/java}/net/minecraft/src/ThreadRunIsoClient.java (100%) rename {source => src/main/java}/net/minecraft/src/ThreadSleepForever.java (100%) rename {source => src/main/java}/net/minecraft/src/TileEntity.java (100%) rename {source => src/main/java}/net/minecraft/src/TileEntityChest.java (100%) rename {source => src/main/java}/net/minecraft/src/TileEntityFurnace.java (100%) rename {source => src/main/java}/net/minecraft/src/TileEntityMobSpawner.java (100%) rename {source => src/main/java}/net/minecraft/src/TileEntityMobSpawnerRenderer.java (100%) rename {source => src/main/java}/net/minecraft/src/TileEntityRenderer.java (100%) rename {source => src/main/java}/net/minecraft/src/TileEntitySign.java (100%) rename {source => src/main/java}/net/minecraft/src/TileEntitySignRenderer.java (100%) rename {source => src/main/java}/net/minecraft/src/TileEntitySpecialRenderer.java (100%) rename {source => src/main/java}/net/minecraft/src/Timer.java (100%) rename {source => src/main/java}/net/minecraft/src/UnexpectedThrowable.java (100%) rename {source => src/main/java}/net/minecraft/src/Vec3D.java (100%) rename {source => src/main/java}/net/minecraft/src/World.java (100%) rename {source => src/main/java}/net/minecraft/src/WorldGenDungeons.java (100%) rename {source => src/main/java}/net/minecraft/src/WorldGenFlowers.java (100%) rename {source => src/main/java}/net/minecraft/src/WorldGenLiquids.java (100%) rename {source => src/main/java}/net/minecraft/src/WorldGenMinable.java (100%) rename {source => src/main/java}/net/minecraft/src/WorldGenTrees.java (100%) rename {source => src/main/java}/net/minecraft/src/WorldGenerator.java (100%) rename {source => src/main/java}/net/minecraft/src/WorldIso.java (100%) rename {source => src/main/java}/net/minecraft/src/WorldRenderer.java (100%) create mode 100644 src/main/java/org/lwjgl/input/Keyboard.java create mode 100644 src/main/java/org/lwjgl/input/Mouse.java create mode 100644 src/main/java/org/lwjgl/opengl/Display.java create mode 100644 src/main/java/org/lwjgl/opengl/GL11.java create mode 100644 src/main/java/org/lwjgl/opengl/GL12.java delete mode 100644 src/net/minecraft/client/MinecraftApplet.java delete mode 100644 src/net/minecraft/isom/IsomPreviewApplet.java delete mode 100644 src/net/minecraft/src/AxisAlignedBB.java delete mode 100644 src/net/minecraft/src/Block.java delete mode 100644 src/net/minecraft/src/BlockBookshelf.java delete mode 100644 src/net/minecraft/src/BlockBreakable.java delete mode 100644 src/net/minecraft/src/BlockChest.java delete mode 100644 src/net/minecraft/src/BlockContainer.java delete mode 100644 src/net/minecraft/src/BlockCrops.java delete mode 100644 src/net/minecraft/src/BlockDirt.java delete mode 100644 src/net/minecraft/src/BlockDoor.java delete mode 100644 src/net/minecraft/src/BlockFarmland.java delete mode 100644 src/net/minecraft/src/BlockFire.java delete mode 100644 src/net/minecraft/src/BlockFlower.java delete mode 100644 src/net/minecraft/src/BlockFlowing.java delete mode 100644 src/net/minecraft/src/BlockFluid.java delete mode 100644 src/net/minecraft/src/BlockFurnace.java delete mode 100644 src/net/minecraft/src/BlockGears.java delete mode 100644 src/net/minecraft/src/BlockGlass.java delete mode 100644 src/net/minecraft/src/BlockGrass.java delete mode 100644 src/net/minecraft/src/BlockGravel.java delete mode 100644 src/net/minecraft/src/BlockLadder.java delete mode 100644 src/net/minecraft/src/BlockLeaves.java delete mode 100644 src/net/minecraft/src/BlockLeavesBase.java delete mode 100644 src/net/minecraft/src/BlockLog.java delete mode 100644 src/net/minecraft/src/BlockMinecartTrack.java delete mode 100644 src/net/minecraft/src/BlockMobSpawner.java delete mode 100644 src/net/minecraft/src/BlockMushroom.java delete mode 100644 src/net/minecraft/src/BlockObsidian.java delete mode 100644 src/net/minecraft/src/BlockOre.java delete mode 100644 src/net/minecraft/src/BlockOreBlock.java delete mode 100644 src/net/minecraft/src/BlockSand.java delete mode 100644 src/net/minecraft/src/BlockSapling.java delete mode 100644 src/net/minecraft/src/BlockSign.java delete mode 100644 src/net/minecraft/src/BlockSponge.java delete mode 100644 src/net/minecraft/src/BlockStairs.java delete mode 100644 src/net/minecraft/src/BlockStationary.java delete mode 100644 src/net/minecraft/src/BlockStep.java delete mode 100644 src/net/minecraft/src/BlockStone.java delete mode 100644 src/net/minecraft/src/BlockTNT.java delete mode 100644 src/net/minecraft/src/BlockTorch.java delete mode 100644 src/net/minecraft/src/BlockWorkbench.java delete mode 100644 src/net/minecraft/src/CanvasCrashReport.java delete mode 100644 src/net/minecraft/src/CanvasIsomPreview.java delete mode 100644 src/net/minecraft/src/CanvasMinecraftApplet.java delete mode 100644 src/net/minecraft/src/CanvasMojangLogo.java delete mode 100644 src/net/minecraft/src/ChatLine.java delete mode 100644 src/net/minecraft/src/Chunk.java delete mode 100644 src/net/minecraft/src/ChunkCache.java delete mode 100644 src/net/minecraft/src/ChunkLoader.java delete mode 100644 src/net/minecraft/src/ChunkPosition.java delete mode 100644 src/net/minecraft/src/ChunkProviderGenerate.java delete mode 100644 src/net/minecraft/src/ChunkProviderIso.java delete mode 100644 src/net/minecraft/src/ChunkProviderLoadOrGenerate.java delete mode 100644 src/net/minecraft/src/ClippingHelper.java delete mode 100644 src/net/minecraft/src/ClippingHelperImplementation.java delete mode 100644 src/net/minecraft/src/CompressedStreamTools.java delete mode 100644 src/net/minecraft/src/CraftingManager.java delete mode 100644 src/net/minecraft/src/CraftingRecipe.java delete mode 100644 src/net/minecraft/src/EffectRenderer.java delete mode 100644 src/net/minecraft/src/Entity.java delete mode 100644 src/net/minecraft/src/EntityAnimal.java delete mode 100644 src/net/minecraft/src/EntityArrow.java delete mode 100644 src/net/minecraft/src/EntityBubbleFX.java delete mode 100644 src/net/minecraft/src/EntityCreature.java delete mode 100644 src/net/minecraft/src/EntityCreeper.java delete mode 100644 src/net/minecraft/src/EntityDiggingFX.java delete mode 100644 src/net/minecraft/src/EntityExplodeFX.java delete mode 100644 src/net/minecraft/src/EntityFX.java delete mode 100644 src/net/minecraft/src/EntityFallingSand.java delete mode 100644 src/net/minecraft/src/EntityFlameFX.java delete mode 100644 src/net/minecraft/src/EntityGiant.java delete mode 100644 src/net/minecraft/src/EntityItem.java delete mode 100644 src/net/minecraft/src/EntityLavaFX.java delete mode 100644 src/net/minecraft/src/EntityList.java delete mode 100644 src/net/minecraft/src/EntityLiving.java delete mode 100644 src/net/minecraft/src/EntityMinecart.java delete mode 100644 src/net/minecraft/src/EntityMonster.java delete mode 100644 src/net/minecraft/src/EntityPainting.java delete mode 100644 src/net/minecraft/src/EntityPickupFX.java delete mode 100644 src/net/minecraft/src/EntityPig.java delete mode 100644 src/net/minecraft/src/EntityPlayer.java delete mode 100644 src/net/minecraft/src/EntityPlayerSP.java delete mode 100644 src/net/minecraft/src/EntityRainFX.java delete mode 100644 src/net/minecraft/src/EntitySheep.java delete mode 100644 src/net/minecraft/src/EntitySkeleton.java delete mode 100644 src/net/minecraft/src/EntitySmokeFX.java delete mode 100644 src/net/minecraft/src/EntitySorter.java delete mode 100644 src/net/minecraft/src/EntitySpider.java delete mode 100644 src/net/minecraft/src/EntitySplashFX.java delete mode 100644 src/net/minecraft/src/EntityTNTPrimed.java delete mode 100644 src/net/minecraft/src/EntityZombie.java delete mode 100644 src/net/minecraft/src/EnumArt.java delete mode 100644 src/net/minecraft/src/EnumOS.java delete mode 100644 src/net/minecraft/src/EnumOSIsom.java delete mode 100644 src/net/minecraft/src/EnumSkyBlock.java delete mode 100644 src/net/minecraft/src/Explosion.java delete mode 100644 src/net/minecraft/src/FontRenderer.java delete mode 100644 src/net/minecraft/src/Frustrum.java delete mode 100644 src/net/minecraft/src/GLAllocation.java delete mode 100644 src/net/minecraft/src/GameSettings.java delete mode 100644 src/net/minecraft/src/Gui.java delete mode 100644 src/net/minecraft/src/GuiButton.java delete mode 100644 src/net/minecraft/src/GuiChest.java delete mode 100644 src/net/minecraft/src/GuiContainer.java delete mode 100644 src/net/minecraft/src/GuiControls.java delete mode 100644 src/net/minecraft/src/GuiCrafting.java delete mode 100644 src/net/minecraft/src/GuiCreateWorld.java delete mode 100644 src/net/minecraft/src/GuiDeleteWorld.java delete mode 100644 src/net/minecraft/src/GuiEditSign.java delete mode 100644 src/net/minecraft/src/GuiErrorScreen.java delete mode 100644 src/net/minecraft/src/GuiFurnace.java delete mode 100644 src/net/minecraft/src/GuiGameOver.java delete mode 100644 src/net/minecraft/src/GuiIngame.java delete mode 100644 src/net/minecraft/src/GuiIngameMenu.java delete mode 100644 src/net/minecraft/src/GuiInventory.java delete mode 100644 src/net/minecraft/src/GuiMainMenu.java delete mode 100644 src/net/minecraft/src/GuiOptions.java delete mode 100644 src/net/minecraft/src/GuiScreen.java delete mode 100644 src/net/minecraft/src/GuiSmallButton.java delete mode 100644 src/net/minecraft/src/GuiYesNo.java delete mode 100644 src/net/minecraft/src/IBlockAccess.java delete mode 100644 src/net/minecraft/src/ICamera.java delete mode 100644 src/net/minecraft/src/IChunkLoader.java delete mode 100644 src/net/minecraft/src/IChunkProvider.java delete mode 100644 src/net/minecraft/src/IInventory.java delete mode 100644 src/net/minecraft/src/IProgressUpdate.java delete mode 100644 src/net/minecraft/src/IWorldAccess.java delete mode 100644 src/net/minecraft/src/ImageBuffer.java delete mode 100644 src/net/minecraft/src/ImageBufferDownload.java delete mode 100644 src/net/minecraft/src/InventoryCraftResult.java delete mode 100644 src/net/minecraft/src/InventoryCrafting.java delete mode 100644 src/net/minecraft/src/InventoryLargeChest.java delete mode 100644 src/net/minecraft/src/InventoryPlayer.java delete mode 100644 src/net/minecraft/src/IsoImageBuffer.java delete mode 100644 src/net/minecraft/src/Item.java delete mode 100644 src/net/minecraft/src/ItemArmor.java delete mode 100644 src/net/minecraft/src/ItemAxe.java delete mode 100644 src/net/minecraft/src/ItemBlock.java delete mode 100644 src/net/minecraft/src/ItemBow.java delete mode 100644 src/net/minecraft/src/ItemBucket.java delete mode 100644 src/net/minecraft/src/ItemDoor.java delete mode 100644 src/net/minecraft/src/ItemFlintAndSteel.java delete mode 100644 src/net/minecraft/src/ItemFood.java delete mode 100644 src/net/minecraft/src/ItemHoe.java delete mode 100644 src/net/minecraft/src/ItemMinecart.java delete mode 100644 src/net/minecraft/src/ItemPainting.java delete mode 100644 src/net/minecraft/src/ItemPickaxe.java delete mode 100644 src/net/minecraft/src/ItemRenderer.java delete mode 100644 src/net/minecraft/src/ItemSaddle.java delete mode 100644 src/net/minecraft/src/ItemSeeds.java delete mode 100644 src/net/minecraft/src/ItemSign.java delete mode 100644 src/net/minecraft/src/ItemSoup.java delete mode 100644 src/net/minecraft/src/ItemSpade.java delete mode 100644 src/net/minecraft/src/ItemStack.java delete mode 100644 src/net/minecraft/src/ItemSword.java delete mode 100644 src/net/minecraft/src/ItemTool.java delete mode 100644 src/net/minecraft/src/KeyBinding.java delete mode 100644 src/net/minecraft/src/LoadingScreenRenderer.java delete mode 100644 src/net/minecraft/src/Material.java delete mode 100644 src/net/minecraft/src/MaterialLiquid.java delete mode 100644 src/net/minecraft/src/MaterialLogic.java delete mode 100644 src/net/minecraft/src/MaterialTransparent.java delete mode 100644 src/net/minecraft/src/MathHelper.java delete mode 100644 src/net/minecraft/src/MetadataChunkBlock.java delete mode 100644 src/net/minecraft/src/MinecartTrackLogic.java delete mode 100644 src/net/minecraft/src/Minecraft.java delete mode 100644 src/net/minecraft/src/MinecraftAppletImpl.java delete mode 100644 src/net/minecraft/src/MinecraftError.java delete mode 100644 src/net/minecraft/src/ModelBase.java delete mode 100644 src/net/minecraft/src/ModelBiped.java delete mode 100644 src/net/minecraft/src/ModelCreeper.java delete mode 100644 src/net/minecraft/src/ModelMinecart.java delete mode 100644 src/net/minecraft/src/ModelPig.java delete mode 100644 src/net/minecraft/src/ModelQuadruped.java delete mode 100644 src/net/minecraft/src/ModelRenderer.java delete mode 100644 src/net/minecraft/src/ModelSheep.java delete mode 100644 src/net/minecraft/src/ModelSheepFur.java delete mode 100644 src/net/minecraft/src/ModelSkeleton.java delete mode 100644 src/net/minecraft/src/ModelSpider.java delete mode 100644 src/net/minecraft/src/ModelZombie.java delete mode 100644 src/net/minecraft/src/MouseHelper.java delete mode 100644 src/net/minecraft/src/MovementInput.java delete mode 100644 src/net/minecraft/src/MovementInputFromOptions.java delete mode 100644 src/net/minecraft/src/MovingObjectPosition.java delete mode 100644 src/net/minecraft/src/NBTBase.java delete mode 100644 src/net/minecraft/src/NBTTagByte.java delete mode 100644 src/net/minecraft/src/NBTTagByteArray.java delete mode 100644 src/net/minecraft/src/NBTTagCompound.java delete mode 100644 src/net/minecraft/src/NBTTagDouble.java delete mode 100644 src/net/minecraft/src/NBTTagEnd.java delete mode 100644 src/net/minecraft/src/NBTTagFloat.java delete mode 100644 src/net/minecraft/src/NBTTagInt.java delete mode 100644 src/net/minecraft/src/NBTTagList.java delete mode 100644 src/net/minecraft/src/NBTTagLong.java delete mode 100644 src/net/minecraft/src/NBTTagShort.java delete mode 100644 src/net/minecraft/src/NBTTagString.java delete mode 100644 src/net/minecraft/src/NextTickListEntry.java delete mode 100644 src/net/minecraft/src/NibbleArray.java delete mode 100644 src/net/minecraft/src/NoiseGenerator.java delete mode 100644 src/net/minecraft/src/NoiseGeneratorOctaves.java delete mode 100644 src/net/minecraft/src/NoiseGeneratorPerlin.java delete mode 100644 src/net/minecraft/src/OSMap.java delete mode 100644 src/net/minecraft/src/OSMapIsom.java delete mode 100644 src/net/minecraft/src/OpenGlCapsChecker.java delete mode 100644 src/net/minecraft/src/Path.java delete mode 100644 src/net/minecraft/src/PathEntity.java delete mode 100644 src/net/minecraft/src/PathPoint.java delete mode 100644 src/net/minecraft/src/Pathfinder.java delete mode 100644 src/net/minecraft/src/PlayerController.java delete mode 100644 src/net/minecraft/src/PlayerControllerCreative.java delete mode 100644 src/net/minecraft/src/PlayerControllerSP.java delete mode 100644 src/net/minecraft/src/PositionTextureVertex.java delete mode 100644 src/net/minecraft/src/RecipeSorter.java delete mode 100644 src/net/minecraft/src/RecipesArmor.java delete mode 100644 src/net/minecraft/src/RecipesCrafting.java delete mode 100644 src/net/minecraft/src/RecipesFood.java delete mode 100644 src/net/minecraft/src/RecipesIngots.java delete mode 100644 src/net/minecraft/src/RecipesTools.java delete mode 100644 src/net/minecraft/src/RecipesWeapons.java delete mode 100644 src/net/minecraft/src/Render.java delete mode 100644 src/net/minecraft/src/RenderArrow.java delete mode 100644 src/net/minecraft/src/RenderBlocks.java delete mode 100644 src/net/minecraft/src/RenderCreeper.java delete mode 100644 src/net/minecraft/src/RenderEngine.java delete mode 100644 src/net/minecraft/src/RenderEntity.java delete mode 100644 src/net/minecraft/src/RenderFallingSand.java delete mode 100644 src/net/minecraft/src/RenderGiantZombie.java delete mode 100644 src/net/minecraft/src/RenderGlobal.java delete mode 100644 src/net/minecraft/src/RenderHelper.java delete mode 100644 src/net/minecraft/src/RenderItem.java delete mode 100644 src/net/minecraft/src/RenderList.java delete mode 100644 src/net/minecraft/src/RenderLiving.java delete mode 100644 src/net/minecraft/src/RenderManager.java delete mode 100644 src/net/minecraft/src/RenderMinecart.java delete mode 100644 src/net/minecraft/src/RenderPainting.java delete mode 100644 src/net/minecraft/src/RenderPig.java delete mode 100644 src/net/minecraft/src/RenderPlayer.java delete mode 100644 src/net/minecraft/src/RenderSheep.java delete mode 100644 src/net/minecraft/src/RenderSorter.java delete mode 100644 src/net/minecraft/src/RenderSpider.java delete mode 100644 src/net/minecraft/src/RenderTNTPrimed.java delete mode 100644 src/net/minecraft/src/ScaledResolution.java delete mode 100644 src/net/minecraft/src/Session.java delete mode 100644 src/net/minecraft/src/SignModel.java delete mode 100644 src/net/minecraft/src/Slot.java delete mode 100644 src/net/minecraft/src/SlotArmor.java delete mode 100644 src/net/minecraft/src/SlotCrafting.java delete mode 100644 src/net/minecraft/src/SoundManager.java delete mode 100644 src/net/minecraft/src/SoundPool.java delete mode 100644 src/net/minecraft/src/SoundPoolEntry.java delete mode 100644 src/net/minecraft/src/SpawnerAnimals.java delete mode 100644 src/net/minecraft/src/SpawnerMonsters.java delete mode 100644 src/net/minecraft/src/StepSound.java delete mode 100644 src/net/minecraft/src/StepSoundGlass.java delete mode 100644 src/net/minecraft/src/StepSoundSand.java delete mode 100644 src/net/minecraft/src/TerrainTextureManager.java delete mode 100644 src/net/minecraft/src/Tessellator.java delete mode 100644 src/net/minecraft/src/TextureFX.java delete mode 100644 src/net/minecraft/src/TextureFlamesFX.java delete mode 100644 src/net/minecraft/src/TextureGearsFX.java delete mode 100644 src/net/minecraft/src/TextureLavaFX.java delete mode 100644 src/net/minecraft/src/TextureLavaFlowFX.java delete mode 100644 src/net/minecraft/src/TextureWaterFX.java delete mode 100644 src/net/minecraft/src/TextureWaterFlowFX.java delete mode 100644 src/net/minecraft/src/TexturedQuad.java delete mode 100644 src/net/minecraft/src/ThreadDownloadImage.java delete mode 100644 src/net/minecraft/src/ThreadDownloadImageData.java delete mode 100644 src/net/minecraft/src/ThreadDownloadResources.java delete mode 100644 src/net/minecraft/src/ThreadRunIsoClient.java delete mode 100644 src/net/minecraft/src/ThreadSleepForever.java delete mode 100644 src/net/minecraft/src/TileEntity.java delete mode 100644 src/net/minecraft/src/TileEntityChest.java delete mode 100644 src/net/minecraft/src/TileEntityFurnace.java delete mode 100644 src/net/minecraft/src/TileEntityMobSpawner.java delete mode 100644 src/net/minecraft/src/TileEntityMobSpawnerRenderer.java delete mode 100644 src/net/minecraft/src/TileEntityRenderer.java delete mode 100644 src/net/minecraft/src/TileEntitySign.java delete mode 100644 src/net/minecraft/src/TileEntitySignRenderer.java delete mode 100644 src/net/minecraft/src/TileEntitySpecialRenderer.java delete mode 100644 src/net/minecraft/src/Timer.java delete mode 100644 src/net/minecraft/src/UnexpectedThrowable.java delete mode 100644 src/net/minecraft/src/Vec3D.java delete mode 100644 src/net/minecraft/src/World.java delete mode 100644 src/net/minecraft/src/WorldGenDungeons.java delete mode 100644 src/net/minecraft/src/WorldGenFlowers.java delete mode 100644 src/net/minecraft/src/WorldGenLiquids.java delete mode 100644 src/net/minecraft/src/WorldGenMinable.java delete mode 100644 src/net/minecraft/src/WorldGenTrees.java delete mode 100644 src/net/minecraft/src/WorldGenerator.java delete mode 100644 src/net/minecraft/src/WorldIso.java delete mode 100644 src/net/minecraft/src/WorldRenderer.java diff --git a/.classpath b/.classpath index e6805c3..4857be4 100644 --- a/.classpath +++ b/.classpath @@ -1,25 +1,12 @@ - + - + + - - - - - - - - - - - - - - - - - + + + diff --git a/.gradle/7.4.2/checksums/checksums.lock b/.gradle/7.4.2/checksums/checksums.lock new file mode 100644 index 0000000000000000000000000000000000000000..9d2ee3bea7de7b689df433c8683bf0ed42302d92 GIT binary patch literal 17 ScmZQJTI40-Ro2?i00jUfwF3$O literal 0 HcmV?d00001 diff --git a/.gradle/7.4.2/dependencies-accessors/dependencies-accessors.lock b/.gradle/7.4.2/dependencies-accessors/dependencies-accessors.lock new file mode 100644 index 0000000000000000000000000000000000000000..fcc06c85188e897232af1fd4192f4c5c8c5647e2 GIT binary patch literal 17 TcmZR6SCz+5_UZpT1}FdkJHQ0r literal 0 HcmV?d00001 diff --git a/.gradle/7.4.2/dependencies-accessors/gc.properties b/.gradle/7.4.2/dependencies-accessors/gc.properties new file mode 100644 index 0000000..e69de29 diff --git a/.gradle/7.4.2/executionHistory/executionHistory.lock b/.gradle/7.4.2/executionHistory/executionHistory.lock new file mode 100644 index 0000000000000000000000000000000000000000..af6e3d87d09ba5b941a60dc4d408aaa18d7b5c19 GIT binary patch literal 17 TcmZQx$!w}5_)X*l0~7!NBF_Tq literal 0 HcmV?d00001 diff --git a/.gradle/7.4.2/fileChanges/last-build.bin b/.gradle/7.4.2/fileChanges/last-build.bin new file mode 100644 index 0000000000000000000000000000000000000000..f76dd238ade08917e6712764a16a22005a50573d GIT binary patch literal 1 IcmZPo000310RR91 literal 0 HcmV?d00001 diff --git a/.gradle/7.4.2/fileHashes/fileHashes.lock b/.gradle/7.4.2/fileHashes/fileHashes.lock new file mode 100644 index 0000000000000000000000000000000000000000..40863d65bf93ec35035f182f104e035abba3c5d4 GIT binary patch literal 17 ScmZSn@T!zkHO5eZ0SW*tj{`0M literal 0 HcmV?d00001 diff --git a/.gradle/7.4.2/gc.properties b/.gradle/7.4.2/gc.properties new file mode 100644 index 0000000..e69de29 diff --git a/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/.gradle/buildOutputCleanup/buildOutputCleanup.lock new file mode 100644 index 0000000000000000000000000000000000000000..b8913a926f9a718407b1ddbf53e1fd1721c0ee55 GIT binary patch literal 17 UcmZRcTPeOv<+5xy0|YPv04$~hivR!s literal 0 HcmV?d00001 diff --git a/.gradle/buildOutputCleanup/cache.properties b/.gradle/buildOutputCleanup/cache.properties new file mode 100644 index 0000000..5a984db --- /dev/null +++ b/.gradle/buildOutputCleanup/cache.properties @@ -0,0 +1,2 @@ +#Thu Oct 05 18:38:59 EDT 2023 +gradle.version=7.4.2 diff --git a/.gradle/vcs-1/gc.properties b/.gradle/vcs-1/gc.properties new file mode 100644 index 0000000..e69de29 diff --git a/.project b/.project index 2a6673c..5a852e5 100644 --- a/.project +++ b/.project @@ -1,7 +1,7 @@ - Minecraft Client - + infdev + Project Infdev created by Buildship. @@ -10,44 +10,14 @@ + + org.eclipse.buildship.core.gradleprojectbuilder + + + org.eclipse.jdt.core.javanature + org.eclipse.buildship.core.gradleprojectnature - - - libraries - 2 - $%7BPARENT-1-PROJECT_LOC%7D/libraries - - - - - -2486028203069162932 - - 9 - - org.eclipse.ui.ide.multiFilter - 1.0-name-matches-false-false-src - - - - -2486028203069162931 - - 9 - - org.eclipse.ui.ide.multiFilter - 1.0-name-matches-false-false-jars - - - - -2486028203069162930 - - 9 - - org.eclipse.ui.ide.multiFilter - 1.0-name-matches-false-false-source - - - diff --git a/.settings/org.eclipse.buildship.core.prefs b/.settings/org.eclipse.buildship.core.prefs new file mode 100644 index 0000000..e479558 --- /dev/null +++ b/.settings/org.eclipse.buildship.core.prefs @@ -0,0 +1,13 @@ +arguments= +auto.sync=false +build.scans.enabled=false +connection.gradle.distribution=GRADLE_DISTRIBUTION(WRAPPER) +connection.project.dir= +eclipse.preferences.version=1 +gradle.user.home= +java.home= +jvm.arguments= +offline.mode=false +override.workspace.settings=false +show.console.view=false +show.executions.view=false diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs index fb58fda..bcff6dd 100644 --- a/.settings/org.eclipse.jdt.core.prefs +++ b/.settings/org.eclipse.jdt.core.prefs @@ -1,8 +1,8 @@ eclipse.preferences.version=1 -org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabledorg.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate -org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabledorg.eclipse.jdt.core.compiler.codegen.methodParameters\=do not generate +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve -org.eclipse.jdt.core.compiler.compliance=1.5 +org.eclipse.jdt.core.compiler.compliance=1.8 org.eclipse.jdt.core.compiler.debug.lineNumber=generate org.eclipse.jdt.core.compiler.debug.localVariable=generate org.eclipse.jdt.core.compiler.debug.sourceFile=generate @@ -11,4 +11,4 @@ org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled org.eclipse.jdt.core.compiler.problem.enumIdentifier=error org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning org.eclipse.jdt.core.compiler.release=disabled -org.eclipse.jdt.core.compiler.source=1.5 +org.eclipse.jdt.core.compiler.source=1.8 diff --git a/bin/main/net/PeytonPlayz585/Main.class b/bin/main/net/PeytonPlayz585/Main.class new file mode 100644 index 0000000000000000000000000000000000000000..5174fb17fcf5d3bfa4670b3979a734238625e717 GIT binary patch literal 275 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 S5O4q-tsQV6=pw*DRP=wDK6A(b literal 0 HcmV?d00001 diff --git a/bin/main/net/PeytonPlayz585/minecraft/GeneralDigest.class b/bin/main/net/PeytonPlayz585/minecraft/GeneralDigest.class new file mode 100644 index 0000000000000000000000000000000000000000..024c8b4c25df3f40dd9d1594a995d20426ed6cdf GIT binary patch literal 1633 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 literal 0 HcmV?d00001 diff --git a/bin/main/net/PeytonPlayz585/opengl/GLObjectMap.class b/bin/main/net/PeytonPlayz585/opengl/GLObjectMap.class new file mode 100644 index 0000000000000000000000000000000000000000..e8d6fd9580fd46084b2928a2947b26e666fd850f GIT binary patch literal 1694 zcma)6U2hvj6g}hhcQzlc>!iT}`jy6ByK#~>r8G`nkfLEn4g+QX;Y54UUm6Ycff+T-Sjhex^-?As?P#1$5f>@&OO+Fq{~9VjHvZ1+?T z6!M=mUp?JXh!32nT0u1wW*l#z{h;A>^_PUQUANz{1Ko{~h>)y1o)hfxQmIjHb9%4e z)ma#rH!*_+1*24MXP|J!L;^{Pu9`?8EzzQhOcY%+kwsczzUg@SgVW*4x*lsISws;Y9cyf+geLcYX!NJZRQPaNeIfFp^ z3Wd^iCCe;ersecJJ2>?zC0XLVawALSt0wM9b&|f8V#`*^#C6=`y)}VgyXc}>E zdJ8vLF@rydIAY=}Mlo?!IMY*{l{kuXg3%02j#rhd@R`E9&FOai}FOatw z6=YcYf#(L6Ild7hXZT8%2s6lWTqI5rb36m%5R2;-u84{^`KH2KjO9hyDdKI;N}9{; zn~Y<)6>|BTuZV`W^&<+q*2f&E{N}$yIwHmO%D0#$<=a-}C#*f=X-=}X{`l{& z^SIIyge5^(lCx(-j)yAN$sFXKKpykBO6CP}TEZHxp~8$!a@-};$7KHzxr?&v5wo$f zHp;N5BEgIbHO4}Xk^c5bBb6|#%B;IYNW=IC3ALQ#dL6Z~_Ki^c*CXwvBDvS@ zlb?&2;?{mRsga;A1y!Gq)kHnH$@<=67j9F_D!Jd`XKjLcY0SJtPSTSC)o)Tm#60Sb zWJz~~FP&uaPY+vDT#tE2`dqk->q}yDVaX~aRwc2!69y@a$rMIpUK&KsE>eieUjvDV zUB6<%#UdM0rMfgYFHyo}mnF*WTe6O9Ts36JDE@+buUdGMI9qJ}J+}Kki?&UX4<^dB gF=CitbKeciwM>INqWve!C0W8XhMjP%kLKA7(KnaFt`jCH<&2Fh`72J3=_E+%t`{gA}r1daS2-GQ}1lE3=T8vOhd9h zYn4$e75{;G%5$m$At}r9+5h4X@FAD47j)Mxs5n(U-93H2uTP)v^t}4#uNMHu@vVjs z!&z5IV@cGc=Po(Cc5h;G!tkoXtvH5xb79UbaNCVv&=6thUFTceaJXAB7E9~Gk{a3> z(w<*2q~Kc{#(Llxe4YPb+z`B6D@ra!ZjIn#p1Wm7_zay}+==_*?xqMN!x{5{*joj2 zUdrl?Jy3?BUBy@>hSN=O+m*uis>V!EbFCbAoD#S0DDY+5wdL0gbIB(3J7O)#n;-`# zOsz0Pa$Z>+0Yi@t4IOH9RL2oSqX^?89i8Z72qzV^$FyB>eRHEE{AFHp1Vha9Ebgpu z-&XVej}f_M2Mh`GgS4kp=|MxwaulE9q=o?!F@!Tz zmil^7_1u6s_a{?L!YJ()ihBjmXgEujd4F43tBNxBeO?QU8P#PsS677}MFJ@eNrw30 z`0q&e$$F5EG=`~umM_RQ42!MxJ7k+oE7xXRBYj5E`CP}yTRE~dDNM4tT#MohjB2<* ze*A!X=orH|LkG7k5d`s3hPLGGY-&Yixv1kyOg0wB$UMo^?X24SD;*hJCh19P^*Ns^ zc7S{ut_jhJX=F9bFq~>gb)X@2VZRtiF{d1W2fu}HV0?0xS# z9xu-Xfsjj-kl|u8&7$-vCeuXjz{A$hq32y!_&JADt^k8{`NGuN5bBMo+Xzrkcai>R zA!?n_X|;<+muMcQz9&7rjqddMZSKy-K6!#s>ZkA%=J9i#+~6L8eR3yYU=~-2 uUYw%l2o*w}@^m5mHxe2Wtm_S86tX}cL%0T$`Ush`fF&A5DNvo2p8o*ovyWo{ literal 0 HcmV?d00001 diff --git a/bin/main/net/PeytonPlayz585/opengl/LWJGLMain$10.class b/bin/main/net/PeytonPlayz585/opengl/LWJGLMain$10.class new file mode 100644 index 0000000000000000000000000000000000000000..52e40ce3b012bbcca1dfd5bd404d2eda71bd724c GIT binary patch literal 1012 zcma)5U2oGc6g_VGL9?*78;oxltQ+Zu$Usa2bxcB4VW1Qyb?PME+|+74r4CBmitS(V z0*D91Gd~J(ofS3^MU7u3qcdSj5EwE-)tPRkyZ$5Zm$Cw`6L5woY%tt(P)3EpZbzdy5YMH_?ELTI z-Zw=h-EG-dT#sV<$^E|zU7s%gk0NhR$DK*-4%MX8R6!UeQuSLx52BufRje^oOp8b! z%45-ploszPb5H)2k%1nD-tKZB{>{xvgX3r3x}QFBSD(BjiaU5-d|XEE+j_ z02U2uJ6aXV^T;x?x%E%5Kai7wLv!A2G8gB`cTND9M~PPS8c?Cx9DYhRLpEo9#=_}g z+ibE8dO7z}f~6DCgn;0%LRBM-p(?I#e8aVmxN%CCY9W}>Vjx-EO1)*= VPVF76q`Ql#;x2in_9i6yegX=@_vQcq literal 0 HcmV?d00001 diff --git a/bin/main/net/PeytonPlayz585/opengl/LWJGLMain$11.class b/bin/main/net/PeytonPlayz585/opengl/LWJGLMain$11.class new file mode 100644 index 0000000000000000000000000000000000000000..eefb8f442a7dcca8638b0a911d2233e71609b74b GIT binary patch literal 1040 zcma)5TW=CU7(D~D3v}huYQ1ZU)EVURCHNPv;h-1lyg(O4Pl}fxB4cj6(eaR*;8DP0@~#6-_@_q7XL@(_h#eH<$IqBm949e=Z8}D8bbH| zu8kr}40+Qxl6&$*)O@AI2g=-&e`Tbvho1BDu;JD{F{IwBp3~ga0r65<8SGbz8nWi` zFccxyC>?Pc3-l`DG^iJ8mLks~%g8R2KO_B-oEU8SFPcTRjSJ-4696*E(u|%6^7J={ zpOKA`O(ssUe2Ob)=QHLSR-qTQ1B*R~cvdIaDG!~(b=&~UJtfAQQ^pcu3}dRi^$oW^ lVeO1El0+~g$v_gg8+q#}M0Nw4(dr8Bp-i4>0TUU0KLMk}{D%Ml literal 0 HcmV?d00001 diff --git a/bin/main/net/PeytonPlayz585/opengl/LWJGLMain$12.class b/bin/main/net/PeytonPlayz585/opengl/LWJGLMain$12.class new file mode 100644 index 0000000000000000000000000000000000000000..337e3e7b6cfaad8b86e6a25130186d9b6af85eb5 GIT binary patch literal 3191 zcma)8TUQfT6#h;oWPpr7L8$bmR@8vt2!ci9r3xs~1gI!fvDP6uB*DoHoeT)tTC`fM z*89D7t*-jeKHKGmv|X*{uTnwuWZmS)9#5Ro%T^l*x(Ac1w1Kfz}YOs6vu3$)u8x^&6GTaPB{o0VG>Y5Q% z+k5+Y*p}fT4W<=UZLSR^)c&NYM$ClDhqz%U)fO=X<4Kzv++xTd()0@344PVmp)xr8 zSj_fGd`Ku!;KgDF$tOe$gK>km z4JLZIwNLBSIYV*K3~PFqX2r#PV$p5K;zrX= zyo2{-yi3xrVMW1GEMv&i!eO3FR@BupRQu+|s!213wB#gMd1UQ<1uIZNp@^7ahLsty zodrU(86I>%&c!N1F6`*?!iOpumE`d}9GN_-U=6An7KJUY*^{JUX!HfA+1hDaaU<%V z_a2iskg=8!naA*q3ybKkQ&5Y#jG)nX&0NS#ac_nS!pMsn)GKJf28P@yx4YvJJLYgH z;6)?qWo%?vJ&#YB2_uyG6>P>9QkI-j=Jo~BhPEmAP#DT1L#;d>joHG+HgT*;L9;lP zN5|4z;(j|7>_ThC{nj(o<w`J2ic^z1)a!5%VUKvUJ$4Yxd`2H-oD#BJ2begwRG6 zfn1o75IkELvE7~N!sD0GK|!7wkp(;uSJ|te6Z6hX8IFhZpT3dJvc=B5lcJf;KQKKYswMoGzYCP_fP9Ntl(1|VNfVmjzqI& zYgBd9rm~W2!u2URzZboT$e=uYZ_Z#%Nh;vzqZ^Qwv;lP%!uH4jk7$;qjU?6mR3;mn zbS*(k+r^S&sa}{PCN-j8!BOax(xk7`BJ+z$-K>NZkQfR~3}iskz)(6D6{wO~pq4`g zbIr`V%%ILY*D+QgzJ=XikSWC!W*JK5w^6xX=w8?imya7IYU-`J%K>rpy((P zA0nO0vhdDswxU@M4C_gPaJKL)a*&Tgm=Y;V?YsdMUC1_VP49>gb8(sl2_Lk*4`py=BE(rPX5W1B znX!2RIsaDjzp%v!>t>SbQ;6F!Gos)Q?ozmQdYW{!?OMmMCp%L!L*fvA$6#L{xBMCA z=Hw4m3(DPqK`$Ummt>MBv5X!L68&=EDk>H)34lg=N6@p(ML#bT+Fe9n8)+`lSXi~@ z5ellRAEBt~35p*$f~EA|LxPY_qKv-9Ari%#SVAL1Io?XEadnewnU+qBS_nDfP&)$N0RcXxRC5 z9}$z>;ZbLnBWCGOkF&94c(nbDhn0HDbDsYA-=9M9Zx}sLo|EZ_`w32`tq~*=1Z0N^ zAV{a+kxrvbI)f_dEd0_K+NEhvE$PB4i#F{a8FQyfX7*UO=Nh6pD>1V#H#1`0pH*} z`Sb!;Z~@=a`@RG*T*M{hurjpZGOc-N4@4)qtfHdyC2q;+m0_`e;gxZfZG;=wXy1kF ZxZ#X9af?PbRrTBWj=u8ArXVH#{SVdsYBm4> literal 0 HcmV?d00001 diff --git a/bin/main/net/PeytonPlayz585/opengl/LWJGLMain$13.class b/bin/main/net/PeytonPlayz585/opengl/LWJGLMain$13.class new file mode 100644 index 0000000000000000000000000000000000000000..0dd20ba4b30bd0bcb19fa5ef04fd45ffec549e6e GIT binary patch literal 1299 zcma)6ZBNrs6n^eH8Ekc%$cyiQOxOle-lmul5+sOdha@BT#V>c=Wh-{KOMACu{umSW z7nn#CKllUuQO46TWXKX|(w@`abDn$7bDrDZe}4V~u#A-mLJU(L=WV!SCG3QI-MM+mN0F_hrVnsMm6M%k?y zqA8^Ejm^NAwy%T~9z(Rros@D-mzNnb=EbzCsyW8Xy@I)2;}x;#h#KYR86rWVCltd( zSC%c6@Z7qw?zg11!5yc>t@jk&w`xmUtuYkRUD2nd_1>c^us3XGpCP>Amc;-V5;`L2 z54;;X1`v%x!%ZDA3^8cwAT(jxQtUKpCE@Myk|P)fP1oYiKKJb4z4I}ws7=BfCiU6EWhJX(C$ReNWr zOW;qB!RjS(`8AqyVpCd<>l4ofp{j0KM-ES@SBH+y?#|Xc!|VSiuUd6c=AOq}zOf#d z=Z%8{;pMxw>q%pqA$?oY3EgnG?+YK}By5fDYX~I=1Em9GN$2$22+8v+<1WJw zOpu>s$CwV`3@#q*rhS60ea49Pr42iBlG=eK5In{l0f%7_WC-(EXxl|Bkqwh{f4 literal 0 HcmV?d00001 diff --git a/bin/main/net/PeytonPlayz585/opengl/LWJGLMain$14$1.class b/bin/main/net/PeytonPlayz585/opengl/LWJGLMain$14$1.class new file mode 100644 index 0000000000000000000000000000000000000000..fd238182c9a8121f4f2b64f7131fee40cceb9802 GIT binary patch literal 891 zcma)4+iuf95Iq}*xK5okg!>&@Q_=)s1+@aH2p*zBiyVkVRGv4^DsixP!QKRwzXAzy zdEf*103_gF5VKaq<;^RtXFWSJ=gisp`s?!-0Nc1}qr}jXLi+=8q?H`R{OHZj-5p=O z6mk;#!SlzDfUAbk ze;6eq-RE)~i$vhc}bjU}sU}y#^mJMZwc0s~kmnhpx=6yRjgL5{{GHeuR z*Ts2UpngLx7d(gjU(&Hk{Hac2e}C8ydU?=ZED|C0?kXU7gb`t?qUNTgTup6WSMvS4k_9?FuGNrsd*ZThmn!2{%1aJnW-RE_hcBW zERvJH&{H+GvBj`ipnIAx7pDv*_drUK_F|r8A|sacV6=~cH5%q6X>Loj9aPD?non^l z_f*@R_i)=EP=A}p9H(!EVqkqklg_R=Q`QNbB+Crgvcdzh=C1Y*r$6B$0e-}_zeVaq q0M>V`SU=!eKmRFKTNbl$ozhF##0|1#w9rO}PEGQ)$eLvUX#ECgrqJ^M literal 0 HcmV?d00001 diff --git a/bin/main/net/PeytonPlayz585/opengl/LWJGLMain$14.class b/bin/main/net/PeytonPlayz585/opengl/LWJGLMain$14.class new file mode 100644 index 0000000000000000000000000000000000000000..38c98b396563d21f8f4acb10c665475cd77a0052 GIT binary patch literal 1214 zcma)6-A)rh6#j-SEVPRVBBG!uR4AYSSaTz^2uAJh2?Z6L2*}zp?V`#N1o=16Ak$Ky36g|Z8N|fsDGZ4phh9+)V!uR9j z6X9AmiUADjNHBDthIrh&OPQhOHLy>5i;qP~qLWG;Qw+m3H(Ws*z_fuhW*DNr2#E=SCldcP z@wnQ5m72~DW*HdO$yOMe*8*? M$fpWdPx8?G1vFA2mH+?% literal 0 HcmV?d00001 diff --git a/bin/main/net/PeytonPlayz585/opengl/LWJGLMain$15.class b/bin/main/net/PeytonPlayz585/opengl/LWJGLMain$15.class new file mode 100644 index 0000000000000000000000000000000000000000..55d7b821f9d10ebc845524cedfe283f99c5fead7 GIT binary patch literal 1393 zcma)6YflqF6g|@}l$I5+0wO98DbN;Wc~}ICC{{F@q9hnd{5IW=W$7|Yc9$mgUzsSP zAB*<<`SSb2M*uhRAc7FXm=wOTCaS(8*KA&Wm6^{N z&aRLp+sJP|d6Zw}mP|}%BG4GRwt0mcHkT#iSz%k4egv(A;J78j7re4#Y9)skcvR85o>Q>W{ zlA3f=6xJQHEQr3jW^&hkm#$=+939<@ihcbtLAg1bd!FzxL}Y|%w19QRRkzW55~dM_ zqNzQ2T|x-a97|8Ug`R$gj@R@R!g=~{B^zj;5vR4T)^zIvx@ji$(OXA&N!AKsAbfy} zG_Gm~7&^enKE~5;pvSMj$7Bc%)PBN+_7$4;4Q<+Y=-Lm&wV!nFSKz6)hF14Pxby;M zDE?*gIal|Ys{4$lCqCiUJ{B7ALC|ETf>vQ^$OfxL+zI9-+zod7a1S|JDI!#A^!o$s C%UyN= literal 0 HcmV?d00001 diff --git a/bin/main/net/PeytonPlayz585/opengl/LWJGLMain$16.class b/bin/main/net/PeytonPlayz585/opengl/LWJGLMain$16.class new file mode 100644 index 0000000000000000000000000000000000000000..b0ff9c601afe485ad21804bd963824be032dcbc6 GIT binary patch literal 2176 zcmbVNOH&+G6#nkam0{o}5Rzb`NC=E!1`N$RAp;l~Ad(CLGZ73vNKbP!H1u?nnFhs$ zi!5BYaF12GbuHy%;=*!gm0PQPYn9K1&p%*Up4&5lW`qjmRQ2@j+uuEp@0|1XC;xo# zA%I@wLI^ONv8Aic$PL%AXDof=rM~lhnzJhHjHM;#E?-Jc>82g&>JNc4)Gq7mx@PHi zMw?DAOT!JJf-E?>jOI#xJ*zF}9c|IcYI0rLZeAN#x1^bOr7d#|73;bcG13gDlRHOD z+m$(IRU64~*hWIPth8>d#0flT+NL|q5Q*Lw9h+s~31?A;!Ei_*gvu%eQ6msWEkiJ> z05wU|mRHxZX_>pOr!C1)mvju>n$>frdM<5pcgf5%M3V>Og(9t9((Oe{ddV`h`omRx zydcwg$50i@bnKZMe8&{Uj2(%*Vv((RUge-YYv*wzX zmXbwen?O4r^C8bM9J`0~+AHPeOgj^=Mh7}W(5R}rtO#_Wo1xNhY?u0z>UBI?^y6#J zcx*mQZBDIADV;q4$&u}R1kT|+^^@jqZO2in->|^r zyOLR6J52|VHNh2BmDyex1< z0Yjt3!wNYia23-#33Lz8ltt%@t^1_FHUG<=E_LL(z*D<+J1a3qr*7${RgD{XCWLv0 zQ}>yEfoJiYSKaKYC0&}-J*!JI9hB=XDTGfT_MJEeM#{s;{h^dg5;LW*mL|TXe2~f& zjH(aLW~P-{AM6vyaJje+{21vW%zW%Er|z=H)mvWbfYoc&qT-GCdiA=M0g96bdo#|1q(>hHA7db zVH1bj-hrr_y^E&PjjVQr!ZC_eB1QmJjBs1~M_7Chx5{ckFjWf$;aKukCYHVX a3M_B;1hQDARUM&J#ni8t1mgC^lm7zrMJ?L^ literal 0 HcmV?d00001 diff --git a/bin/main/net/PeytonPlayz585/opengl/LWJGLMain$17.class b/bin/main/net/PeytonPlayz585/opengl/LWJGLMain$17.class new file mode 100644 index 0000000000000000000000000000000000000000..7c281f73d9b93a1b871db0ff35c33ccba21ead8a GIT binary patch literal 2663 zcmb7G+jA3D82_DSx7*9Mw1rX%iXf#;O3KnJ#Uj!h*pjrBK&u6TO>#)LO?S)gwir|p zLB$)&BM(0K#G~Lt4UWV3=8S)eZ_aoZ!S8I^+zK-#na%n3JKs6q@4M&cN8djH(1lwH zN*J0=?rIY}foq1rkHetiGgcN!?6nsdFFM=${TuR-zHx6l`VK zy)MNnp2PDDN`kvXx~ns6^#_U|k47>9=o1KEP_Y9$bBep#8MYN0nLQDh7I=24Xu@vt z`HGT$C*s5L>y z%jSc+L!qqque~)eE#PY^_JJU0{npLUP9WCd@uuUt%R|Pz;r5lI6Wt2B7}}ocpo$js zFlf)HP5|#!aR4vn0q^hn! zG_ZL7Jhw@I9Oo5K1~(Pz&p&X|Fx_77l!^pq$fq%zQ))7d7uR9_v3xzn6`n7byWWE{ zt6~mG3O89bkfH*hZtap%YO5mxuBpPp0=?6|Xh9=^h=_r$!T~X|nL{zyQjlZRf9H5y zG;GqdB$DbP^@Che<@V`vzC?Gm6!oRN=3mfC35Mh9bf9i+7hqu2H>s`0 zEYqa1o2?Fpo+q@`JVlh3+_o09ekWzd2K8hzO0FW~8PpNF${tMWj>Bo1mS;N>%@T?( zJu>}E@XJNA&u>~F-!D|4B=p1^D_Lmu|18wKcW0vbfmFAjlMKqxsQPoOx?l0VBM>p zOv|dwXpu}B;jFwbjR|@pX-qC-`W~q{D^$k9!DSdfl#Tg%q&ui@tCxcH(lX|2@%Zws z6W1kHFSR}R`tdJmTxeUy;*_w{=h=A%4P@tUkfh&HBmIE}=}+vC{z9|#H-gf?=#?H~ zNcs<>(j!ce_fE?UGqMj!S;B%WV@WQ>MY#-D<#ODRD{xb;#8PSi?hWK<6_sheL{{zexx^Msh literal 0 HcmV?d00001 diff --git a/bin/main/net/PeytonPlayz585/opengl/LWJGLMain$18.class b/bin/main/net/PeytonPlayz585/opengl/LWJGLMain$18.class new file mode 100644 index 0000000000000000000000000000000000000000..50704b3cf5b894944d8655cbe7a426f545df8aa3 GIT binary patch literal 941 zcma)4?QYXR5S+`G8^^REK>4P$4Q-ktEF>ybDnbe=AgBwKiqhX_`3U7r3 zLhyqJ;GqzEZlIw8wU*9zKF`k1&hC$&-@XHQgocG2!-^8AyC=q}R(q0BkgXB zK!;*~7z83o+FVMX2k#h4BQEQK&#>s71V$CGM6Y!i z3T;YR2Ezph7G`YZG3TI+Dnq_u0CQfX#Oq<-7x7!}OTkd{biieY$C3G-To%%!C}C)L z=W~aYmbIFc%CI^u_AgIb#+j$X!$T2ot#vB6h8q^HGc258g@c>8#V`}-{y>V9WM64` zr@KLn43#jmJ>2FgC)=i6`>zlNdtVRZKs=9(A+vw_{=j4)&z`A3>LgO#U6CH?(84mq z@;RJwa1SdqHph~(+Oq~T?3{Ke9S=mvVw`I18NmKg&JtL-O=cQ62ZcCmdBEem1 zf1XwmtXeZuK+~S1RfbKsm2CEN*^S*?{|u-31+yPB%td;a2!oBAE)UhHg8V$lwpQMc~JgjM66z^~R~_jV?o> zLkY`ZIOo8^oQ*sd9F$RI$TtjN!HcALJsS8zzvX@`7;2shc--YWGT+n7LV6G-3=QvW z+EAsIl3Ak+%d@2#J+}9bv}$d1D_Fu+3s)FcPHEo3GOjVq1!^#iMM{NUYIrBrCq{;% zFak3y%_#IwS_XShjdUQMN2cNVzf-+u_(+p28N@1yWN$~L2P(9%#;|sV&K=ywIxR(* z&ADx6o(+)U)kzJ~$xwt`Yd%TbwlPmf`};z-W@`Tb4ww#|mr@GdiFuNU1UG5Cc{)X~ zYRycUb~#6<44ZB%*=Fam8@qY;3!LUx%zw%-=jmM{42mggn5?92LAuwt!ox;|_VIOp}_TicV%TKooS8l6+wVK)%$J`ZKLNOpiiHHjmJ-HkiesZy)91%0dk^*; zJrc_E9rxAqr*4BwwRz7%ilH#z6Ylt2dCtquKy;0TWrl4Xc#aW#GIR!^c6xf~h>1`p zbn20DWoU#F0mJgXRMH$UBunKsL#n2GB7-EdHY}WD$h%UB7vo_^1V_B%3x-u!ce&r@ zfsFRE!<6aEkYUGNh``x@tTi)6JcDkaXFS38a-+Tdc-|$q*hc1F)`GDh4>JQ{}7M05$6mTZrCWG$dGC2 zanKb{WK_xA?_S=Gn#hoDNl$Sz4(KCy|88t`KBqsLx<5beOf3(n3HiF}`Z|=#YY5ZV zJqueTX@M5n*g=V*7|o94zB~~%t&Dg>m3#QFiuBFUcb*+J+`2D@G=J4I;#wvk0#qjk z`%uwP)_fj@BE&7KTaw--x)@1%X&z~pCeIW<`Acs8d z=$fENYm|IQHbHh}_XAcLXuZgA3X+Te^^L&36UdJkY<-$A1EW-2!Bw!rBZ9p)gDq1` t1e>nxe#Y86Tt9`J@?tSm6q3SCS`#Gjc5LrpBR<{4Hp=8h0~5)k=NCsH1l<4t literal 0 HcmV?d00001 diff --git a/bin/main/net/PeytonPlayz585/opengl/LWJGLMain$20.class b/bin/main/net/PeytonPlayz585/opengl/LWJGLMain$20.class new file mode 100644 index 0000000000000000000000000000000000000000..dad442d57e73b849537415e6a79aa9ca800874b8 GIT binary patch literal 1289 zcma)6ZBNrs7(I6{)RoF$$^>6QCT>G1@}kHH2@=4W4oEQIH*>dLx?+YN`4#5HN}?Y*bxKF@j1)1SXSe*rL$Wd#w2Nk;_wjyMinXUFEp?-mvp zboWR&rmY+MFE))5x17xEjDi@$;302v-R6#|ZQMGu8D&+Q5jNrP0QHF^g4$^P~H%S9tsR-ZC%+E0lXLClVXd|#} z{WD4;jY)tF%gn&@~Jr z&7khO4X+|LELr=3KmMGS36QqCmg(@I;nC*nf0OD8ygQ;ZpDuUdE-L;Cc_z8;RBYF` z9J3^Xnp@TI7*EK%Wno%jE0uZW4a4Ypd3OVk@P!S!a?}7?(V@mzv$^jJU%?W?QV&kb ztV%CFYaAR1ucgNp_020X!^ImIBL$;$$H4|uva_iDqjV=Awe1go1`$MPRP#4JLd$=` zzk!~|=5?V4OPjM~(0oo~UonT_WL!-*=_;(D% ze}q)&7Q9VGA0mf51-MG2Q*F{*n>3N1`ici9nC{SpQ4vf=CC`mvCY(LOY&g!*4^FO* TU;&FXOA$)OF0ZGwT7dc+9!5d@ literal 0 HcmV?d00001 diff --git a/bin/main/net/PeytonPlayz585/opengl/LWJGLMain$21.class b/bin/main/net/PeytonPlayz585/opengl/LWJGLMain$21.class new file mode 100644 index 0000000000000000000000000000000000000000..91b7f3535642eec3c5f494c895d7c5ce0d7739ee GIT binary patch literal 1293 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 literal 0 HcmV?d00001 diff --git a/bin/main/net/PeytonPlayz585/opengl/LWJGLMain$5.class b/bin/main/net/PeytonPlayz585/opengl/LWJGLMain$5.class new file mode 100644 index 0000000000000000000000000000000000000000..1c1389b277455eb18ee5ebdb6ef887d3fc81f5d3 GIT binary patch literal 1544 zcma)6TT>G;6#fF0LWx{N!TXI{3(AU$f<+Ju3c3{(toj(**ev~X14SQHV4jx|vhmMc`=T3lU|Ssg_a!+_`KEiFa4XsrdFmGg?0EK8*W zYtBrz6KJWV&(JjKC`V5*G{zGdhDgfG$ru{Z$`M5~L%Z!L`KVM}mHvuYbtS_Q+sg_! zBYelmwathwI03_;eIVdThSq{mIah{g7~*kzU%+Xv6jb$+iA)S#I2OfGhTa2s;^;;X zL$k_y_U)zsbMNdD#ensIuYW9na9FO01_95a8}x^C1{9J8i0+t&RM)vSCeO0G6X z_c-o{RU2q;eaZLMMP6vfQ$$dfDO&w|Bxx5js?Og3)MHq(VJR}$93ALnh%I|1KP&G! zra{`aTXe+qCWT_z$t$5tJ{=1C-+oQ*k12HZr&lNU*Q;kGIYsE(=Tz490!QW3QWv}& z$1+wJI!&iL!gV%e%2QgtrhrWBMRdCa{}k*F%*)y*yF{N-zo6&|Nx32jWPtOaAk%+{ zp0P&y>GdF~g;o~LjOIf_9}#;;iw1BSo5Ia+I819^RX`isNuoy$oiv)uZxJDVV0yTM zBNZHfkJFnt&p_fpu7X4bmxecSg&|wPSOpU#OftM8X_}UINpTZ%40X3>2^sL6#vkax zPwJ~JT*WU_W|(3ugwtJhS%X8)F^>hXju`^>pav{KItEzF(C`6KDWeiW bn#Kk^!eTft;c>Xzg(rAQs~DLy0iy3W9IAZ- literal 0 HcmV?d00001 diff --git a/bin/main/net/PeytonPlayz585/opengl/LWJGLMain$6.class b/bin/main/net/PeytonPlayz585/opengl/LWJGLMain$6.class new file mode 100644 index 0000000000000000000000000000000000000000..8bf5f2a7b645023ac1aa89d9f1b7f7644e25b7f2 GIT binary patch literal 1357 zcmb7EZBx@g5PpspO54agi1>z5pruMgEiV>Ptf**EW?*0jKV6%%4W<_+xpstq%OnB1^6pII_GZRK>FmJjF6Yubw7{yUu|qcv6W^RF;L)&RS7b*L=0P zX05oQN)wrHNqa;2giEc?V5~|S(}K%`Km-^Cm73mmx+)^{(uC3~PMS%Qk!+v(io|D9 z+F;PPLvOMOE|G2=IiL&Ow4#dxz4X;Ty9CxoGSxs|wt?XWu0=N+7|nh`YCC&~DH@AI zm<$cvKgJ#*bg&o<)=9${#|TSclqIR(jWFKO5oR+Up(BS`u%2a#JlBkzAs-z%K9&6e n3O9cYAEr)jI(6+5#iLNmV=cVCj3V17knN#k!#-EPNEn63G^|HTq2l( zG_EnU^I}ni;plXZ&X_UZ?`o9m1_p7X$vFF8nXGAyTLy09P7}tQ4zOlM#$f|@G16q5 zXBfzsc0^fCxx}U`KMF_Fkxya_6A6qn^qpllkby}wamQik&m3Vi(VjPVJCMcw1nyl# z|EX#kn9>}lszKBo&&3B`^OS~pU|>3;KU98oBk-%d#FgtyNV!=?EmmM-u;;gn(4 zKo`0hlAC@lD2f-ZZno6lcAwHkp;B(TCCODSAfxkd5zcR;DAb?6Up(LMRDtqK)T*7U zvgrAtD@*G_m3_y+6VSkP>%nok=N^a^Un=p5%Cd0QS<9;8S+BO%?Nv`yX!!C?X>Y24 zaH*>qj5SFUx#ICK6d{H{rKY!)ZiN`VG>o)rC(R}(GH+}Wbg1}lx4mZ$~ZD62*o3X71hO%EUx|2P`Bu&5}EQS-{w9bL`z+k;J zbbT0P{TO2DC{X$c>^Km?;vpV^bv>hyGshuK^3fsNC$m35adIcnQO@M1bJi|#%thKf W79#l=`DnKni&!QtNxu5%^!x@LoJcnS literal 0 HcmV?d00001 diff --git a/bin/main/net/PeytonPlayz585/opengl/LWJGLMain$8.class b/bin/main/net/PeytonPlayz585/opengl/LWJGLMain$8.class new file mode 100644 index 0000000000000000000000000000000000000000..3a559866a4561cd361bad09fa59a5383f4804dcd GIT binary patch literal 1276 zcma)5TTc@~6#j-53hi>g3n)r~mMSX>3YL%<#Oqdx5J-F*x??-Aoo#lfjqp$S8NML+ zV0`vR8P6^U=Y<~!fH{rLIy8-RH%C(y(&sf4!I#lH5{y2tkq78Vz5zbaJ8 zvz_hNFPs9GD!rIMoS|!%*SYO+RkGjh?24jJpoL+|4@$Ncyk4<)L*I7&iY@9w>Cj#? z!jYjCN(2lo%Th_b!Vt@3w;1B9zAKW5A!Q+fR)$VTD)F{f*%84e-|+-PkK-4)x5Wc# z_Km~1F3XT%+PN0-JVUC?mFtO!4MQ&DTuS(j*x&Ja;6|qT>{b%J=ue=JVd5IjEDT_f zp^X=dA`H`WOHrgBQW(Za0ynP8)H%l%Mh#A@4Bv~Y;M%abY2g;e&wwv73}v!TRFRsN zR4l3Xgln>$PvQ>J2~05bU370@5>v#DyDme2<`m;hRrA@1bH+l}l%=B@MD=_oKJuEU zO*lCVccY4h+OMt$ewCNFmcAlTQP&LDPBBCKhUUe+0&YCAGG(Y(>v^R7>xYU>o)+2Dra$hwJS`WQWj=*yj8h~W^aV~pjFaC@5$rfH&1FvDQ5V-a=_;si57Jv@prHb#AT zGx9TViq-H#sJMq&@?=LZ*krI*cM0D=xxQ1j+dV-2c{u( zRR!VxtLNbsmpZ@VA;U0q$Xh&6TvvlP2Zy3!J@hinnYbEQ!CUpVaqpZIfWb ziBKk1Xc05?u1YQK8bf!XxW|xLH<8Gq8v{N(^f3&EQj6Ek`hkdd`GFD)BcZ8qwZ~)W z_U*%rt;vL8KI{m1nPH&Db)-a!hM`ahF9p0`6GEkS<>FozqZs!v#xT=CBp(yF%FxFv z6_F(QWroQ@F-!?-T1i|={Xs;IjB*y&aKpoOhOvw8ecZ$?B8f*4!+7D;$2ro=#diak z!W|FO1g(QyeB5>P<{EKYmuKQVZz}72kD>582D+h&W74u<|6S=HP&W4h%3rhhr6G}NDdTfN-wT$$IX zKL$5+MVUnE>XxuI6Zv?EM-0QRTP0WWSgadu#YZA!<)TDuwyuH~yIbLg5_RhM@;S^q zHYUH+O$`1^O=GaGc#?<&(;$-R@1arbrk^H&cKxIUBpJz`h0n--BBcvHt-bD$P2&pb z{;2_S7^EEyCWdKskKdAY7s>H27%81#a=-Kyw;5=iVK{R(f(*Tzq1xw>W3$xcbE)Hr z)5mScYnK`GVl;eIL?DLHpKiU)X1 LT9#~Gs`UK^{JuX z#e$*WgCF2WiTg}q63PsSrT8*?pP9AxTI{p;{QUL(2Y}nqGDtAowS}+O#lG*@b&K!6 zS-!KZJG;VeTe|V$@tX03n|9?vuw^6_N$;~dV@i7JJODBQ2>tL`Tm=<0{=b`X8+?(C?zWg|zZbmYDiq10`$;dPXs67pUzPpG<4+!m>l z`@5o(MB<0?q``|@EK6MfF3>^xo-kV*1W<1ha?8=Sa*)M?5^R(R*;>6>1fg7lg*;){ z4Yc~)-St$wCB0A)9=ee)!={V_DE)i{8CxS6VFEAUTmc5F&Hw-a literal 0 HcmV?d00001 diff --git a/bin/main/net/PeytonPlayz585/opengl/LWJGLMain$BufferArrayGL.class b/bin/main/net/PeytonPlayz585/opengl/LWJGLMain$BufferArrayGL.class new file mode 100644 index 0000000000000000000000000000000000000000..b7bb28ecf487b04eeff23b99cb81815055824afb GIT binary patch literal 615 zcmb7BO-sW-5Ph?W*4Ehi{q0E)TE!qL2#R0@ixRD(RPeTG*P0SHk`J-|D-T8R;1BRe ziIY|Y4;9?Q&YRhpH#2WPKHuH}Y+)e-LDyxr` zDm}eaN^Wmeco2rNRdzBk3ByhKC~aTrhFx)+sumNBz-$3%!b4w1k%}^yBP{mT@28kB^y^Eo!AlwZs{-Tcj*KYXuwzYDA;+Aize*j)|#S3N|~LqDMZ zQT>Z(R;$;F%e~Aw%$&Jr=H=t*8Ne<|NyG@-N`^*TPC`$$T`{?<@6`?OMyi2pnB9|> zc`9sGJ{tA=(r=kbXoS2Y#=>xg8W`u6BYPns?pY3D-Sqr{5lS&08cyIDx6)#juC!X_ zOkkgoIIxu+9umrxU$d(ng4Xb^WCn4}>qtW9R+VZe4MJAO91?__X)Ad)8d}o76qYLq z1=H&Zw2VL9?MjWl+eVkXU~i5MRsv-!w(>j4Y*jAF>~n~f^zm3Q)nG`%Cw eTyd6-MHCou-BgvBU1AjDE-O=(Siguhls*C8w|s5@ literal 0 HcmV?d00001 diff --git a/bin/main/net/PeytonPlayz585/opengl/LWJGLMain$FramebufferGL.class b/bin/main/net/PeytonPlayz585/opengl/LWJGLMain$FramebufferGL.class new file mode 100644 index 0000000000000000000000000000000000000000..171c310043d35d0a982e00ae9300c860b58e91ab GIT binary patch literal 552 zcmb7BT}uK%6g_v{{K~JaET4Kd!<=*H-1+=^{{V1|Y6=FSp;csc)hzOL*ORm7=1J4?AC(??mgrx0#FcdP zZaa`;Wlx4f6?8-jCZXiYskA()N7jw)szF3Z__j;f6MitVA|z(LMjED(LB`0U f#9Za)Hr7yP#JagFF}u#l;4YhUme{|7ZB)Mj$Ww$W literal 0 HcmV?d00001 diff --git a/bin/main/net/PeytonPlayz585/opengl/LWJGLMain$ProgramGL.class b/bin/main/net/PeytonPlayz585/opengl/LWJGLMain$ProgramGL.class new file mode 100644 index 0000000000000000000000000000000000000000..c08aa253260fbb17e9bf898dc1cf6b2e2e04b727 GIT binary patch literal 637 zcma)3O-my|5Pda?#>DX}#_x|^HA0NIt)Q@=>_ylR88xs=f;W4{CYdnlmYLB-|CI+( zJop3rJL(?A8Wlb2rK_vD-+NWB?w)RL0jy&&1B{Of#(uBdbJe4Alx+(VEw(?>^%D8R9yko+qh?P9;h<0SeKjkt_ zL%9{_jbW3}(~?okGe?R*RYLccul@KJVX^c%dZ|uGZ!G{CdY+1+;_3@qHQ^YyF@edCr!`hCRbQ2+ZDi0x7;t>8_D(vk z3jazs;ED2%@nle!p`YY$#dO^ABZ6?g(9nm~Y*p@$ISD=W+fS(b-`DXY@t0*5NukGV=re7{$+6-D__AbFJEGye2t;>;lVY= zE-`h%PZnnQ%rgvh&&z*6mLA!%|Cr_a=qnuG@SQUzdXXcp&T(d89t#{3IkpBxOgsbo CL69{7 literal 0 HcmV?d00001 diff --git a/bin/main/net/PeytonPlayz585/opengl/LWJGLMain$QueryGL.class b/bin/main/net/PeytonPlayz585/opengl/LWJGLMain$QueryGL.class new file mode 100644 index 0000000000000000000000000000000000000000..96c292f03453196b33cb6c2b7a2eca89a6b6df53 GIT binary patch literal 534 zcma)3(MkeA6g_v{+_X*2)bhCqO=<}ef}$5eDYh~SeV(1vy PNaHTmlqL4BVH5Rl!g74c literal 0 HcmV?d00001 diff --git a/bin/main/net/PeytonPlayz585/opengl/LWJGLMain$RateLimit.class b/bin/main/net/PeytonPlayz585/opengl/LWJGLMain$RateLimit.class new file mode 100644 index 0000000000000000000000000000000000000000..8c983436151a333f24a02b0001972a1ab7c4ece5 GIT binary patch literal 1413 zcmb7DT~8B16g@*fwp~`JMXP)$iXd(IC?G|&6FP^JghGkE_G#pd44lPH5n_=LHovnqSxl=tS&d=g zb4QfG!;pe&xK28g?Jc3OdRe^Y)GWK4$VG~N+IvHR z2VNf}4n`D69QZi6rNGC5pMyIJ{2a&}+*2TP(9gkr1^w{yQCNY3D-46GWt;iN;l5dW zW$af>hM-z48I__@vp5!$GF%uU+0HwwPD+oBO2eeVQaI9UGh{4aNx~vSpsUDc-7yap zJis!8->B7$W~qAAWQcaRqOgBpmYhVct2>=3Y7gD7kX3lgkm;tiI~eKl)_BRQ3gURg z5bw^HsTlQoqD#cZ0ha}F%aZkEt=g!S%nggTb>PD4^L!%}s##^*a2hpQOn2quYr53Jgr@sin9@!#{gsaILxlb^MYum9@BWCW znB^<<_S#|>sdQ0%bY|=nGnYg!Z9to(@Gzl6Vxt`=I zw_KxVh|PWx2XYxA8*w@k{N%Bfc8(|s;`!wui=N@(Pq2UUTzD*UCXf{I3D!81_zX{x HP7VJ7c0@VB literal 0 HcmV?d00001 diff --git a/bin/main/net/PeytonPlayz585/opengl/LWJGLMain$RenderbufferGL.class b/bin/main/net/PeytonPlayz585/opengl/LWJGLMain$RenderbufferGL.class new file mode 100644 index 0000000000000000000000000000000000000000..548363bc2502f2b8832a0c9665021cd312e5fbee GIT binary patch literal 557 zcmb7B(MkeA6g{(UZknlCSw0tJ1}%j`Q1l`w#Z*$E&$D{9m320DSHu3QhX{J;1Nx}w zu0{B03^Uwwm~-yjGoN4Y9{{Q-Sug~SHAQxdrjf5(o|-<_PHMLQNP6JevUAy#SIX79 zx1@U%IOBewf~K@!3gm}sqHIs;fqml)sT&C-d}k=IC;ebxN2Derdl>rm6FKbFA*U(l zZB7M}XRdambAd{ELCt& zg7mw}YpcMG@h@pc4{j(>mH!Wb-=4nn$3d4GZtS1^OX@IAMIdvbH3fA~g&~C&wgh$- z=)y+x2{k2-c&r3}mcT|l+pIEq>Sbn9j2bX_0qM#c?}JyYzA!S7<1-s8jVw$fhm?^= fp1I=BZLFcdh;=hp!R$ICgS%|bSi$~9Y@_rIB$bAW literal 0 HcmV?d00001 diff --git a/bin/main/net/PeytonPlayz585/opengl/LWJGLMain$ShaderGL.class b/bin/main/net/PeytonPlayz585/opengl/LWJGLMain$ShaderGL.class new file mode 100644 index 0000000000000000000000000000000000000000..b0a64df206616c2ff33a8944ff906ca56c321cc1 GIT binary patch literal 527 zcmb7B(MkeQ5Iv)tt7d9emXDDSTHz8T1Vt}`Qfws{`g~U}y32Yuc2~pxs)q=A=mYwd z>KCF}tzIiG_cG@&bLO6zmyf4s0EZ~)h!OUc42`y&g`R4=Vs=+QsvF*oR72M=d*?0l zLfER@8Hs`PTc!?;kaxsX7_Lx5v5cC|~;8s0#r5yx@{Ix^g3g3?K7pa9KJ0R4||JddKraRum@5`ngDQABsQj2Cl$ebx9{e~-oKn6NC2|It# zCnUcIiUYP1=XDU)BR}&fImu{ zTBzVbJj@5YnKy6V$LHHSfGZrtXbIeq4sxUy!O_U7#cS`nC*53AVP*O}yiXsMp|dR1 zbMrE&DG$ccSbJw1orTI!5o1H3TdGD$tEiAq(^BUlMkH|LszL^>nwc!Ulf!I<2_)5; zLE!K_{n=h|_Ae$pl)1Xf^}tvyu(#H7xf~Wa9@iAiOizqAQ>$-@Tu@7Kp0V`z;cw-x z>I-xph;(&lmG|1m*cUkchXDd7e^?L!0&R{>_EoSQF}ApCW1Dje33j+fjCZ*1awOdI IPv}O;7iD>GuK)l5 literal 0 HcmV?d00001 diff --git a/bin/main/net/PeytonPlayz585/opengl/LWJGLMain$TextureGL.class b/bin/main/net/PeytonPlayz585/opengl/LWJGLMain$TextureGL.class new file mode 100644 index 0000000000000000000000000000000000000000..6c12d8f787b999229ad7ee9dcad8a379db96a119 GIT binary patch literal 680 zcmb7C+fEcg5Ir?JFzhle$Q>0gTolIO#6%JkjV~l_Fr$({mc+N7wX*bN=q59>ApVsP z8xtS=0DnQe{fM!8m+-2l(|xLHs!#VhJzsu*`V8O^?gj7&n}(}+m(MC|c5`+1e(Uj8 zY>(M=^Ef$p(Mnz_ZC3aBUDYeNl?3n!lbJeEajr}^ew}9AsR%WjW`yO$7TvgFb#fGE zrHxNH6`BK1Tge5(69S#e+>v=m2n?%&OCg{)gmGnbX{*8>>keV`sW!TLMp#?_JMBiB z;BVWv+&~RiLtMd>TxxxzT?b(%M1V0D&4s8BqlFL+jJw*k5aBSo5n=?Rgo#8Oe$_il zx!6}}&V;GNc2wS0g?9Nx(XS45Nr;pGa!?#-?Acz?;pf^>H!od&;A|y?JH~LaovX6s zGQb*P6?%&gC_&H8GXcL za>-4b$`;3-l99^h>@2b3;bl b!fnai9(Oa6>K(~EEMrBmAr->)$gv^o(DJxH8wglh1xySFRcown^z$gAVJJWE&>(WJSk!aQLicajry$)FBN(XiMs~}xV zCC1r(LjJ&5lN@pfYkx1RGzqz?yVeC{F;RqvBAc&Onm!1nBF2y>Oi5$)X|EgT=t2dd zCd{V3VN*pW#lK`Oxiv9C$bTikofpnsFKX$UNu^7pl(y1X2*o37byN*i9P8M_B4OnZ z1_XZ;GPZe`EdLQ(9J5o-p~yD1#|JOKBy&^FMvSr%y~X eSN?g88O$=`x}hpDJI5%)E(=4JSig)VEPn%N35C)C literal 0 HcmV?d00001 diff --git a/bin/main/net/PeytonPlayz585/opengl/LWJGLMain.class b/bin/main/net/PeytonPlayz585/opengl/LWJGLMain.class new file mode 100644 index 0000000000000000000000000000000000000000..5089e962119fb2402a87c2a7676c576734d6db50 GIT binary patch literal 67737 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

$;R7AG{(d|iycn=zxMwV=8 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 PDK27()diOM%wXjk8*h>z literal 0 HcmV?d00001 diff --git a/bin/main/net/PeytonPlayz585/opengl/Matrix4f.class b/bin/main/net/PeytonPlayz585/opengl/Matrix4f.class new file mode 100644 index 0000000000000000000000000000000000000000..3e58354294f36b4826c01551591d30454fde10a1 GIT binary patch literal 15149 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 literal 0 HcmV?d00001 diff --git a/bin/main/net/PeytonPlayz585/opengl/ReadableVector.class b/bin/main/net/PeytonPlayz585/opengl/ReadableVector.class new file mode 100644 index 0000000000000000000000000000000000000000..2586cf43aef5f77f944660096e57131b2382bdd6 GIT binary patch literal 259 zcmZ{fISK+n5Ji8v%(#N!CC0=~6ht$Fi3CN#yhqE8rd!7zL62tO0X&pgE{TCj6}9|d zukMfQ4L}FA5II6**{cbky|WXe&zEkmtK6RL+Nde(rA`dbdEs3eqCjZu^hqnD?OKhK zo%9KTk!8Oj`-r6&t7hFk7uS9kfRO0X~NZgv!ii n>4M{}5vS%aSNmlf5ClNp0`h`cM1U7=_{}AhWgVd2TS_0Gr#H>KaGXWjK&cML{au6qo28wfm#2L5& DHCH&= literal 0 HcmV?d00001 diff --git a/bin/main/net/PeytonPlayz585/opengl/ReadableVector3f.class b/bin/main/net/PeytonPlayz585/opengl/ReadableVector3f.class new file mode 100644 index 0000000000000000000000000000000000000000..c4e42a79fd2746ceca08f9068ae0199db9520001 GIT binary patch literal 210 zcmX^0Z`VEs1_l!bZgvJHMh30C)Dr!G)XI|lynvj<$|_R}Q~msc)V%Z@{h-vul*FW* z)Ued#lKdj$G;W#*(ZGKivEsRyzRXg*Li5VHc^%?NY@I|B!Z#lQ(9nHabLQmi+? literal 0 HcmV?d00001 diff --git a/bin/main/net/PeytonPlayz585/opengl/ReadableVector4f.class b/bin/main/net/PeytonPlayz585/opengl/ReadableVector4f.class new file mode 100644 index 0000000000000000000000000000000000000000..aa43c3a7a21bac320c806666d0d1421c219c0e43 GIT binary patch literal 210 zcmX^0Z`VEs1_l!bZgvJHMh30C)Dr!G)XI|lynvj<$|_R}Q~msc)V%Z@{h-vul*FW* z)Ued#lKdi*G;W#*(ZGKivEsRyzRXg*Li5VHc^%?NY@I|B!Z#lQ(9nHabLQr$Pe literal 0 HcmV?d00001 diff --git a/bin/main/net/PeytonPlayz585/opengl/RealOpenGLEmuns.class b/bin/main/net/PeytonPlayz585/opengl/RealOpenGLEmuns.class new file mode 100644 index 0000000000000000000000000000000000000000..bf2bc75b589fe4365dd22cdf580bd9828fa7a9f6 GIT binary patch literal 32775 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 literal 0 HcmV?d00001 diff --git a/bin/main/net/PeytonPlayz585/opengl/Vector.class b/bin/main/net/PeytonPlayz585/opengl/Vector.class new file mode 100644 index 0000000000000000000000000000000000000000..46e329a89e06b200f99b4db7b72cdde7a34dd570 GIT binary patch literal 1030 zcma)5%Wl(95Ir|9r>^@-A3%9DeSuS;2HGN^hy|pPkW#1!3KUki$!+T5+O2a_(f$Jx z8y5Tof=xjn!JcnIh+{ia*;MMnp1I@knR905{{H*@CxAuVHjol1`bs-%>OcqnnkNqq zm+mY%!LIUKo>Ny19fSrl0)yLfUpk)jTh7ysZN?4c1V-Yh8#px;y3%tG<%XvW4 z9X7trjtNX#C}249W-VOC6@hG<|jlhVrDhT7F`;OB9b z6L_Vi~GR1;JuGTE&T%qmfd*( literal 0 HcmV?d00001 diff --git a/bin/main/net/PeytonPlayz585/opengl/Vector2f.class b/bin/main/net/PeytonPlayz585/opengl/Vector2f.class new file mode 100644 index 0000000000000000000000000000000000000000..ce94fcf14ad6a818bc8ea645a4153b9f39184867 GIT binary patch literal 4467 zcmb_fU2q%K75=V%ZD}2B#W>{85m=$Jq(qHL91^95#<56(6O0WuPN40|TH7+RWTaJ^ zq(4w7e}ym|rfCPJ(>LHH!vqQrEi?U_c9`jFJMDYh=eEx+?esfWD|u}>b~4jsR(tpE zz2EuHIo~;V{rms^{1*TY;*B6Y3ip&OJ3VGyvdg8hqIv1^q5BV|%S%>iu9%**X6$lh zU^WP!LUglrK?D@K7t9N0x=>C}Se1fVEL=8oMJtFlg~ZMGk6UJ5)~(nJZMc4_Qn20Y z6*{Zh+@w{h7Rsf^Pn}RurxiMe%cZJqmh4HhShM`}TK*}%yvQrd>ykp?SfNy~hZMZ= z{z(Pja5-;<;KeorThXm>$7rEsovkhAtjc3zRUtB3o-vD)COzb{GwHME3sr^K=*|6X z_?J;g$2VBFHXfP&$q*EJ4eUXbJgb(iFn)Uo8<=y^@>VM|3aJeiw{TPN$Ftcw!@a_= zubo`KV4xFSGU_)FL01?-Bn_mnj}e};>?d@%vof7F@WsaTG;>y@_U!qIXKH4}$}6wpusCz9_4~XvisLdi{lrIzF;alQ%D{<+k=6ywLmZ1Jh zVQyaTCQDs&dC0(*aoqRI=YSASV>F0|6}IStE^<-&jA_psID@mqFlWjXyDxsCUrNp7 zl@qo_PI}Ee)Ar{7jq@$}bt{WVty&{Zf0bR0YC0Mp)y|dJuCm3lX&Jf5Vvr5XdgJx*+Ueu9LNRYuLYTvXNb+gP_o@ELHY~C# z8zpgG-j@w5;TfvfT;j>W?C*0zt99d8X*KLvU^M4Y6$tvas~IiV-p0ZV_#)o@{xg@1AJnB0~Q;R$ofvVOONChcs6GG z&xP<^ycEQXJc3r@SAT2ZWxT@RGiAd?vr34qtAej5nH_IAw;*TA+WmaxFWd80MIkg% zu2p8NY(cW#(Fpy1*@3&+GQ9lnXDe;zeFwrYIM>0G&Vwx+u@TFuCvBMbZ5;7jeujjC*x+ctjN*yw zBvlV`Jv!60a*p{p?}|=O(~+KLbPiyjgFi&_;#zm&BO>!!;7?qxh1~m1^nhNI)2Q|I zbvM&Dpz|*2d(w$?Phy%teL3OEQ9Q;`E7wJGEs<;46%{wvM$mhjK|hE?4(lwvuCo@( z7sQZI=AhNiMJo9cF)pvm{vZY&%ta^C(d1_ce+o5y1BXYG4SX4B{G`O(tA*Xeyn;3B z!;2L4OO)`-=*26p*hibOk5c?QY3YdGtt5y?o2IW2NW?vmSVm@q_IHSVF&!(3-B{@c zhDP7RR!yfdMpCBt0NTVCagyZh3P9_FZpJ8_+3F3B6@*r;Kn2PHu$<69% zW+SyCjR-{n{F=YNp(K9GKahUsqBhtJ&Y%+NgS z|1Y+xf0N^XT=?!*HKWf5C7%Wk{__t0;HQ|I?tJhD3ZuzLaTz5Yp?jB6nMy`#jpw+2 z?tE$)U!S6{msi?)FArj<079w_U8)^BR0wygFi!#l2ULfP&!FRPh;siXzC|8g95vc} zn$OZO{UY2oeO+~HnAOK}m;4>&IOE;>C08W4VsmI@Ug7?Y{|@e6C0YzJuo-Uhk8a^xRA$`7ZpvYwWsy?=`lf z7np$;-jRpoub|FIz*4-fzKt#^Hjd*QbBFgDx7RyTf&zg$Kmr2@s{0UD2hpJp;V#9r zsKeN!j^MC5iX-ZnCRp!KnWnQDyo&FU*dBJM*P3l03}4W1e2(6r=Kea(d2r=_a*s}& literal 0 HcmV?d00001 diff --git a/bin/main/net/PeytonPlayz585/opengl/Vector3f.class b/bin/main/net/PeytonPlayz585/opengl/Vector3f.class new file mode 100644 index 0000000000000000000000000000000000000000..4ec235ce795daa163b3688ae1c3d8856c98026ba GIT binary patch literal 5180 zcmb7ITXz%J75WJ?IiNHPsh z+NSrUA#IwLbd|JuYw|)H+Eq*%+O%(N)AqTmU0wYFeeZQ;b@kh4M&t1XgDO7q!>}tU(6=tn$$&O%+f^qxxCu}Px^XBcftT=zHTB!Ty zE5vHr+^Aix6)NSEhYu*IBMNK#E9F|1f7Z^hBlGXQM5bKgHha#wpK*Y6U9T=$)Hc#^;0?n85!OcB}Lug zaT)kT6rXGioMvuIzY zGbgp0Ns{h9;U8leEZKSHJ5()9PVpJc*)=}aj?}G*bHmoOOTR#ECd)|^)k>`g`LE)@Jh^fu0lr!S7miI zK})fyLl&EtHhCh7qc|4))r&w2PGT$q7WX>cqDq|9Gi=qTqBw*eB8mx#On?=@ zdv+$TuyJ`?^sdIfLymVRGpjHx^V!20jk735aSjsm=^2{YEbEu`M`2C9GE%P=%9F%P z-pmKg8SRZ=T4B@T;r%m(QqHcnpn|IKR)_O&YIF@|$c07`Jtf~i6UB32?+shi+-exx z2i@4}w76E58g?x(oE1DTDqc{y&-25#wlQ%HKBv%R#$~~avfvA{pnqk}Uy9;9%3N0? z12!-5zM-4EU=wD?3KD^A8hjHX@xk^Kw%M43JRAI;9m^KEr}m~!x8PNLGlFk$>zWUv z^EHas@Ga(mWauwhHLAFKK@RjFt1D2+7G)n=yq=#zmHL!jRcINh%v2}rOhE{vXS7zsneS=UI~KJGbn#yx z>K%)S6!*6WTuV>zi(qUux^5t8ByPZ1Z0IQcK1TS*wV}8(-80mx!z_kcT|=V2;Yg0^ z#gW*&dZYUW%y}E_`ui!`7^jWXxC>AD9Ey2%VxFCt=TJoBmHyi zP!O*uJuH$T(r%GV<2vU!xpolbXx(OB^XSB+FHvz1LEKB!9_)0j9n#i;PUB~^!>h=f zAy+ZWyD3*O`(w{mnCpPD)-Pn`N>{(ar?A)6TBlZtTHF|?%C4;VK*>l@GDI@FDJ}Kk z5`CDZ56@HU3%)4&eUPFMyKygyaW{(1=*2!4!J7yZ18~Uv4YuEc8mA-4G%xYWpkQeC zD45xsc=WnBdb{uBt|`$D=*n`U{Sy6qnIwFL^u4T+I=ni>B9RKCWjsbnkRHP0l$x-g zGRgY@tG)luK=TctBA5a+zX0em-s-!TOS|j0T1ZgZbSze(N>A*O$-c6 z*d&^!&_+NS#XRrAB(o^v6p}@OD#0~0x#W8>zYuE&l>^s^^+&AociGjh6Ysk?jGy{2 z4|>5J^nyFMFu20W3=X<17-7^U16zdA$%{fm3I+v31e3y265e8denE2mlEnT%TX%@Q z#Upx#DRqin9t!elB653h*a;5HS_vkBG1@03BZ3JCI|; zm)$?lhTqscoB+Fxx7cXBU6h>0E7DSHF|?>QtXJ*mRO@}#{EauS8?VBY=hYe4t1X&O zb0~~y#y130gvI-m+KOhy-mSLbUe)C@)hI7ktLGR`fv#g$nImCN<`ydBvBz%W!ce-s zK8K6iWO5F(W9jzKHr|=}1@A<{_t=>^e141p|Kj}Kxt;ukGU@&fw5c9+sE7FLekTm| zFnb&|S9 zZ=*|&Y7&8$m)GSxH#xeVp{{3dqf5?4qKp6Oz`LA{{LwWR2go_}ER3$g*SSSIi{EE} zq&XZk(r+Uayv8mW3S1*qE|U_Me<&~MUqcN`=1g8!u5#aCd!lSmZli2cHYsy;;2Kpq zeZ%0X1?n6k;2>Vdw+V79lK2jL YiE~nDMKBVIegs20iNY0{Yr-4<2O7P?I{*Lx literal 0 HcmV?d00001 diff --git a/bin/main/net/PeytonPlayz585/opengl/Vector4f.class b/bin/main/net/PeytonPlayz585/opengl/Vector4f.class new file mode 100644 index 0000000000000000000000000000000000000000..cce7f2c01b7083d8e75a16dbb57cb58ec5925753 GIT binary patch literal 5403 zcmb7I?{gbh6+O?Atk_;Vw%a((Z{x_Rw5!S@P1+ErDI~F>u9G-%>%^wetn8I7SCJfP zl{9IA@~eTClu}5b9fohEFa)N|5Ib#WfDh0>KQk~4e*oY4`K7~f?%UN`krl_aXLqmO zzIV^P=iPVSlRo(0yT1mo2d_ubq|jGz+<`IYqFXGC_s-kr?SWizVB9I??0oK$oyj{ixC^R3) z6>{!Dg-|>(p%6Y?oN-za!X^V7(4(+^G*@trRnBId(i4KN&^=n5w(}D8=;_!#;aXW4NTPJT2GtH9NS6)Kme6_TrTUJ;u@ zG(OBfFUI>N#(sqe+Y%EkjM_BNi7v5{2D;Hj!ll3Wa=^en-ph|0xEEb*h~hzmHM*A* zG3&Ue^{fm_^TP)ARhuWJVZVXFYQvN?JYwKrwc!+tAkSiU=f=-f?2id|2`D(Tnub{X?l>&gku{}$cUOC|gA(#4&PAbEI!l=-bEPSqFmO^P zuGyP0F3UXUeWu6+9$ypmTF6Rp*+*>3n}$4X;0Zh#{>=+OD?W?QMe&qEhZeCsI}IGQ z-8loF$J3hvP>QA}=;Cau}M)OJlxhvo`j}NA=JG1#p;6?x9LH>y!rXP6-Lg zVlIl=s)W|LFpv{wLR<^HXDV5Rp2k?ru1r;8areiE*8nX2sq$naivnF9(mGInTdQkje{U-)xFq%aoWcg5 zLe0MKOeCd(FBteDzQpRV7q~rgsto*^!UK(5uL!;BKpnu7b~S{XE-O*-(Dp+B_k-u zbiw}!6|#l*&1i$cws!7_P3WLSd6wN##92S7$ofe==5rh0a3AD-BR@UJr{XhWF5$jk z(rBVXSwl^{Ka4OndJ8Q9U?*(laB;l>+j$oUpJq?#+a?Z7YY{t6ExYMpoWLV=bC50{ z)vkKH?!GGy#7@NMOq}-nPUi?EyL^Xsx--_lF}#Rf^?r}g?-27I)_(VRBLcr2ngkcF69eW9pFIiQ^UdjQgl37@5S|X70R!gc-X5s~++gL5?$(F%8-4bq^rh0?0NW zQrth_yPu)^Fx_`9yEpr9AhnFqt>2#}#w0POu%1dL?3>=W0H-s+=?qfq^ivbWDvi$) zQE2R`Lo_#rZy>#l+oO9;^FBjdhqzfz#%v9(Jpp!4fZY>d_XM=|)X>`J=UreFLcVEQ z?_jrra7*hUu`IDZAy!JP17fAkx7pjPLoc!gMs<#!ORTywr_0rmd4*&Kk(oguJ&L_P z_DRl=ltA446;XN3^Jd94pW!_vm$uTh(({>L1jx;L+;bYqtNyr;r0_|6%J+YT{)J)7 zoTT%e8Oe>76{DrwQvI}2(w5#Brnxe?7n$5;Cie{{_e~`5QVs1^ken6JZUwYk0qvGg zdkYTXupipbsSi@kQ^{Kxcn@ll873@VlDI{~(hSf@iIJv}&Me``+sU9!mEW$Q{2s?qAMG;HWNGcTZlO))cnQZwrMxw=u5&>aLnDi! zk*(#q+s--xen$d+Pnmz83;z}?@ejBkeKO(zI^klrY3Cb8Nma6ziV6_CvIEPY%6>wwQ7CM~E0hu`4$* z^{R-Hx6U@Bnf5=Z1^?vc`!BAbe^d1SL&5)V4FyS@@z+}twq9?YBqeh@1>2gUOn#b* z@9pDRzm)o94|lXi>n9ajKdI09xuR%U?duc|9jXcUsStWqxQ2|rU^edI&OCkkIcJ!&2*kekP?_w$ zu!M_*O)TR1?iUvE6)%LqW)y+VK%QU3*O&K3y+f&(M)o9PpU-xeeBt)-2KW@bh``is zZ_26}Ts_=%$=C7*gRT0(yBiL^%#F;esDnPk&HD7QeA>`wOErjyI-osx;?f*cO0&P! zb#Xgv=&R;b=J`58Uqg5BC5K>P;HAdCYEECCucP#J><+%<@F>3cGX?K*`mJR*RZq}_ zcH>P=m0g9G8wXNz9PbP#1K#-q~S1D2s7?4_6uR4i@*d Y;Ox+ba5Q3kh=)YY6ptTra{R&n0TYGTR{#J2 literal 0 HcmV?d00001 diff --git a/bin/main/net/PeytonPlayz585/opengl/WebGL2RenderingContext.class b/bin/main/net/PeytonPlayz585/opengl/WebGL2RenderingContext.class new file mode 100644 index 0000000000000000000000000000000000000000..2c52ea10c59f306e5dac8f4475d163caa37125ce GIT binary patch literal 1296 zcma)+-A>d%6vxl-A;^NTs3@TLtzA@#3n&TkqRY-=lWw=P-38)B(`AQdH>D-rE{Io} zc)^9fhbBIO7e0VbsC{%ttI$Eq0j3 zkrn!f@0XUB)Oe3YL8xx9`kIlqS=3-jGYVGYC}r=`0q7$z*7Em#HT0uEt<+m=8@-nZ zDX^umS z82Qp7FuY!+_LgT;r)qGSqa6Yhvd`0Mnr>(XgYsyAZ(XF8`v%1wmzt}(!PhwYjcW+M zw^}J%6_c9oLcWBN&)>1ardrV}*;<(vs-+UOx&JFyvbBw~{%-{O?6m?{{jg4;AD=Y= zn*=i33G-97-eJih0Y%9f=X^Jjxk6y5&VpuiQa7vU7pu$F2n^zfKdI|ebneMCSjbK{ zky9?Nl?_-bv@AdIcTpoDFnhszJ%`64+kO8UOYjV8N#bJ{=Fabel#jj0cK0ti38?4p zLP}rZT^Ox5qlV-pFq4QGsdsjESmLB{;s>nU3DaiV-`xutwo=jg)vXSjX^A(Xn~o>G z8$8X(G!p-yAhge;+x2m5>FvbOMDCYw!|~YcOE&u=k literal 0 HcmV?d00001 diff --git a/bin/main/net/PeytonPlayz585/opengl/WebGLVertexArray.class b/bin/main/net/PeytonPlayz585/opengl/WebGLVertexArray.class new file mode 100644 index 0000000000000000000000000000000000000000..e79a98c2fe635e10162bd167e74bcb42e87b43a8 GIT binary patch literal 169 zcmX^0Z`VEs1_l!bPId++Mh30C)Dr!G)XI|lynvj<$|_R}Q~msc)V%Z@{qWQzcb~A- zqLS1K$D*RdN_GYoMh1bb#Ii*FoW#6zegCAa)Z`L&1~x_pvHYTR{gTwgvRwVF;(UFt uV2B(e16Oc1)7&rhbD=r8C literal 0 HcmV?d00001 diff --git a/bin/main/net/PeytonPlayz585/opengl/WritableVector2f.class b/bin/main/net/PeytonPlayz585/opengl/WritableVector2f.class new file mode 100644 index 0000000000000000000000000000000000000000..bd6efed9f570bcc4d873526e0a97c81ff5e909ff GIT binary patch literal 198 zcmZ8bI|{-;6r9ahqlJxkh!!r00Z)+DfDpCZgf%2AyAoF+9?il7cqs8jt!&=#W|+_O zb$nW15N-h!r&4}LXk^~7lINiIM_Hfq#=Vewg)7QGBYxv zYq})e+a%q$bgx^QF0@Fd&^BG6O}cOS1O3wP{nYen`<@wD61Kww&x2;>+;h+Jp7)%4 z{o;Qw{RF@sysV)?VQb#>`g2y^OgqN3*PqT>X5Q;hEeZ}43R%tEjCDa?Fzj;H|D2zQc~HdqX{>K zu~{K9UCd_Pv}2n22v=^?aXYps=rg7_W;jO9^h}3Y^weQC?m1R|CegcG6vj3t;yFb^ z*Nt8cJqj&;!F;fTjXL7kPPzG5(a5^VnY`_oLxxKn*R15_n1&q++m>Up1dU{_kd+Mj zb-V_lnn4f+k7YuBXtpxUsGXiDr!8UJVBo+OGqxjzdV&ezkXxI@YxfR3U@Ja=(sI zfmb|_*$&D4fWq3Px_biX)bI2_0oPR-7clC=i=mp|SI0#Y@>#JUnMQ0U8m!1#i>vRu0n|Es}Z9oH6P4?RbJ%6%5BU zDSMU5CdJD;b-WAjCbJ!B;-RdSK0Rz^jk6P0PNtPghVc}WVvKYh#(O!G3M6ENTi>ta z1Nfj{1#jG6SGaWraFYR+AJ*{^Jk2zNBPqpGf%Z9*o@IP~4hD~+LE9mvM~$;~kxrgL zR66ut~;s&QzsE0#H9DYs5*P*inY)30& zc+503XE^NWo5wvPeL7_nDrZ~N^$f>L8CE_xKQ(;onn52(!}vBqs*dT-9Q8Xr{}7Jg z9KI{m{$4FJKZ_&9d|tw;Ow{^`B|)CU_jUY0f^70b5Hgf>l%+(v<=)F48#72b0v2*T zo6OcSrt3NOSxNAcj>~?6?rhP^*k^d+jo?xfFDm@k-6H0Hs^e$)Id`A3Ew)go=RR>e zf?w+Rm26$RxV4&Aa7l^aDt@Ek*9xsQW{*6cHVYnGUB`>EIa=Vs>G@brI7Zsk@LPpV zHGSy>$0-&(GgI9f)L@T7XI;Cmq$pPiR%x$1vd;zQDs)UyFzHW@at9?tW5aL@i_q0+b`>2gJtl^X0xoAoKlhOu?lJUz}J4JKr zOXz4Eh{raS(Rl^Y;3c-TjIIHy^i9R%@eAmP$IIBs|97-6;LZ~EQnr_$`^wl~!f^0* z-*ea@^2=B7xCs2-Z78u@z|5T;_dO+d;FL6 zfs#lA5mn20pGZR`e25r4Gqr$^mhmwkh}fsf_zV|2LS;P1oW3fBXoM8v5#A+%TL^WG zrD)|>8@BLwKi2V3Uyn&_z!TVrXR!&-V>3$VWJ7Gl%h-m0pbP&(w`%5fZ!@oU-RM(y z@X|JbooX2U>JTqvQrKIA;#CT}S|u=#r&-`{aBVf3{=<9cD|q-74Dafu^qY%i#|hF* zDACE#Tdty=X`SEHza^R5A%GDZfAzq@i~Sj#tnpDVOmh`D(+D%XncP zt)qeP7xM_G`pURc>Ei|#ZXMe35;{niE)KzfPF?I~kT@DIPpdITod>BgPMrzf`;KBe zrbvq8eqfz}^GaYHO#OHGJwxke=zqW;Sq~}H2851lc+t1>j3Pi Ut1X_LL^-iS95K?8!Yet;6_l}t8cyCvBPvy&8m zmS9s*@CW###53JeW66a#v*)}s=Q&^d>-YDc0G=T5P+-_gl?}&9s$wHQ+c3%WIDAdV zd!uHFI(sphjFk0IVyK_WnGEHn5av1qcL6<_&Sb{WivERVCJytv1!9+B^;wc8_Blhb z-RU!wdU~ihil_*9@I99J zxsq9Fs6T-{fyeM^nwixTCmaa0oWMWmsfpFA#3gMmY$D&`p=%yH)LfB%3xqagU5d*8lIrU@wy zN&D`%_uhB!cfNbhxo7jn+poL|U;|G2P@%9QmoB!AW^?IOA$hpiHeN`zbxvl-J4dpa zTzc5Dd~ho)x+!@y**22QW!kP8x+$G1DpU>SCvwBtT*k^zrpGy@PtTbsW=Gokvg5_A z3iY{(QETR`p4@fgX$94z;O3SG2onYln&zN1$w>}KqdSw6?DTI-jbwA#;&ugBb98{i zJM+V7AC@RAE^pgeC?t=`-a#zJ(hx2|t%7%(elY-rNC+Ny1$`g{AN&e6eKfp(Vst27 z*q0m{A-B4|d@4CIkSt{7v)x&pNf&1rq7ZFP=$~lc0_trIa<`R2<#L5U=`AtfXtHpX zY1Wx$gK0LIW{ZM{Q`U0MlGI2#S(vf^wfX#r!qVBKx(fMG8K}gSSmQ&hLUmag5ha8+ z$d2RLx)v(Yr0P19~G&N+Tcurr@8P>0oWW*2wN`$LF{ z!TQ{|g>JcrZn=p!Jvo-lam^)E?wZ4gOS+gCVg%9gQWGP|V)}p?Rk)&gLBkSJhEVy{ z!P2Ycu7jnn>TIrOcy*RO=>hfoaL#AW(Nk6BNGgtjq@{{(_0Kj z*?K&L;(V(Q>eXe|(GYH(Z`MJ3mcp?Rj^j3lSazHn^yCJ4Sj*>U7Ck6&d3y+V%zWv9 z?wtzZoWMQwukl+Zl7)1FX(X9TrT69EeV>F6_c3%Xly|NJ3F2PdFB$Ry zg@)!H{>*>IOq`KcH;^Sl9svh^aCy@>Exv?zQD^@P>> z=Vh!ti}e-Q&mK-0bRVK3XR)~g--9Zfcp6*9M3@gYUfDM7XKdPy3sa7j9p^H=a*R8*aK$U>x2-(WHB`Kf z7F;!hZ==Jv(c#kMBtLJwI?Tc%>)LcHC_r_~>eD=22HdR0N1q8yrrc}GHsru2Uh^vUJqNYC(O|=K2roV=`ChU=cV7M~u zNwxDKL&0#Ze5wum!T}Ccg=@mKFJqwWVf~uV28P8(a@)j!*o-i?FcjN)iXE&Lwo;Mp z9NB?wu=u-^XW2zHuEsv};(F}H5I<$9${1~zvp!5!X``dvl%w60qurFPotL+R(N69h zqg@?xwsv70!2zyTMLt6qB&s2+8*q@QmaITO^S(oZK_8T>^aE5@R#sI}^Xp5>huabKea3lhiH0;5o3C#G#p@o7cn znV>mrx|-xk8~GFqZGSK}nWTD1bB{5qxr)O*=5UWW++#L(g^%E)wwEvAdy-~Pv~U}4 zV$l(g5sUWSbkR}bUg8A%ZzN6#5%%wG7ME>gPZxXQk3EU7wDLLA?hd<~Ima7z_cV*2 z%d|L$yB>W)PwSG;W*QgK)1GhUFL{_;x=AOvVS0C(4wIoLA7L)a(u;56`Q?c6^uRIP zhFe&COwfOC#a;AHImHb+E1htZI6)=$&|2DPXWu>aNORE?9VGtghx<+JU#)oYw9Nrj%E zLQhhmr>M{usnF9@=*v{-D^%!ND)bx``WhAb1{HeYeN-sPJZNgH#~Ec(Wet#Y$%l3m zmwadkaY>;z;*vtEh)dD8n79;uKKFA7xt@cc|J|;yb7d1ZCL^5EHY_zeI&m;y$ANfy zKs>$A<%)}|r<`Q;G($&{Q9L$CZcQmEEr^(rq`n}MtRzJSAv2Q{8br)aQfv@OhGNBW z!S#KXVfG43jdLspzRe{09TuIh@=ExwCTdbw+#wowQditbU2!LM4KpPeQSYFrrPQfK z&4`3r#*B!jh0C;inxZN4T7tuQNiZgL*6DQl8hL%6ynaAl=Vx#!rO_bEB2)S-VbNhq zpA{@?OzESTl(IILE?!xZVwOu1L+dmO9Ucw41$s41oW?|lPs3h;{#ff7OrC^C^~WM^4ZW(v z9gBF*;A1C2?1@FZCG3qwd}nZ{?)Swa{u1`9jzH^qEQy7qdt!M%cK6;qkfJCUZ>eF zRBQ@H0k|-h6Ztjr5V7{Tv(fBgZI_#?B= zpP04(jQj8xX6(P>8T^fT>F*4Uf8aIzlW+Wsv;U1Z@gKZ{|EdVyR+lQJHmeG?Re4lg zd6lL7YL^PA-72X1Rh7C%BrMT?EQdBdzAeu(`E_De<;+{=E+ zs25~XwOVUrGU@h`Mzp|aB$?C;mw$a+kqiF_@-AFHDW}c>I4ZNwFaS literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/Block.class b/bin/main/net/minecraft/src/Block.class new file mode 100644 index 0000000000000000000000000000000000000000..be88a4742c9d2c47f3d88bf83cc366872fcbdeb1 GIT binary patch literal 19094 zcmb_j31F1P^?z@^y|S6WCLuxy$PvM?h+Ik$6i9->SP)7guy}5g6&8}+xVu59ty+sk z>(Sa;74f!;cWokB>$YBPwXOEPYY%H{?|)BwYRmukX1?8oWEa|6GTZugUiDYPxRBRaP`n%FXT zZO67)XNIXdo$O0=txI0i6-%`wlbLiT*2^?`^=LG07-^H2moinFSsRnduAw;=)2dW- zN346Ox5~VU-gJ6oXImzjh>h%A6U#(LPwy@=y}3J?**Y}cveXt$3}Y$SA)=>O$J3B> z;#oz6GP;34!A!h!``X0nWVDM(owXUdO7=!C?29$`b;MRDliT~C72O@*vNf}|H`*D` z?2^}7nJPM?34_Fl2t?+c4bkqt7?U?GA~Mw;hO&2y=!WU&QtueVVA0bRPeF|G&SXbN zcg)4?>&0qr$8>)>+S?sZY(c9d)|GGI?+Z zJZWf<$p@~mj=+{o#a1P|(Iu_cR5D>(&B-W6Jr}_Q@OF0$Z-a{|rG!{*UVs$7bZ;`T zMRc=87L_T`DeJgC1~lcSxi$s+#0&N*66@|xUc@xkj5TkKrZTBmUmD{<)3YiSi-Dz( zd1&iRK~%S^%+A;q#jt(1Ig0W8yJvQ1Qqi6$CKPCGh$p*aM#aL?y1rCzH^#KVvnIMF zmdHezEZX%+VWGkdt&FC&W07DHUh|wMw{dGcBe-RWGI=>lYN!Qb#!}Ewz`So1Qqj|w z-kM4#dzwPNOq*-U2)N%HDm<25luT{!h$V!$ zw=1jL(F1wWp$@pUUApx7lr6Z8&R9bj5bICfZ{=Gku~8h8OVLk(Iz>TBk)* zU5S{OH@AQx)3-jBh98P1Ix)usYMU^K3DS&M0I%ceiSERJ0Mi-WiOw={%Et9FjWf8` zfzfzpcMN8?!}uagc8%=!xNOWxMK)r7RBY_zPB@ErW*JtXVb%r^Y)*E?{M5%(cNotf zpb0_B&`wRe=$+WhC%ZVtH>@5yS=utP3759C%-T>!Oz+ak%tdy zst^n}z&{-ZgB%?Jnh~TATO2oQ8e=)SMblUc394H)RZ^9-Zr4<8TX$+2M>W!Sx2B_P z-$yl#ry4)qhm{yjvPn)QV^cx8m+lvBJ^Rr&Hm1ikeO%^NVD6B`$;g1F$LWAmNPAGD1x*wzO*z+kvOYq0@eEI z6Q$)e$5)V^pq$A0Ntjv##Plq$-Fu7lJ|t+K(KM0j{PbK=^D`2z#NijDXX$>=azs1Q zGBaP$G>K}<==1cVpT2-YezdmpX0Pcb!XfUFvr+W%CE@4GOw*wEA}YvFTPkb9mfF`e zO}5m&p(#wgo)vdmBmK6fqeTzj#W_Bj1H0b#d=Aog=zjTS*#Cj1DOBru`Z6NV>DfAC z@ITfxRdD^JG%h(Su*XE~*EIc1#PXWcJxH(8FGQ|iVz)FLK`c+x=R}jQ(nBKP|7rRy z{Z71REVKHMIA;^v}E{8-`3!CG-wzs+UR3tmzm~W~a2_$hHo$g3|FzXtH0^44G7h zW2^+b;#XtcK@P~YfSp#MX{JmYThz*oHrA$MK^_AeU9ke1Ma$3|r|DSB?opZ=Y-@t1 zS%Pe0X=JODTY_9mIr(Mq94$77Ia5pXZNsb}PXQ0hR=@N`X_>h*G|i^t{CsTbxosve z3-U}MInz#?t!a*soO77{EshtK$a6IvPrX4tj_1Pyc>&Y(BkZir@B_>C!VmCqmfRvi zVHS3=rn$DYMAJOmI$6_v+ghe+fo-kOw9vMiG@W2uD>a>HTP>Ov+16>A-ey~;Yg%ku zt2LcuTW4rmVq5DpEw!!nnogG1=eb?eDcI}Fp-(ZNjq+%ijA&XW+BvJVQf*Wht!W%gE0O%~5KP0fM_2Y-2NG*2_wpdHWgdLB3RYy42#?t*KS!yszkiZ#ZenN3B7=LS|lJXChQM-O{~A z)7u5db%#-i8`=i>T0wCw6x(RMIe%EwYMK3!(pKLt(QuG&kf}Fd>hfN@CI}VQ$kba) zt5G84An%iz`z+sxAkLt*e!jc3|6EfDr-OW#Oufray-(9Rp?8026GYq_Po;yrpC6Qk zdkAk9JsFHpe2^cdoM**U@pg||jvm*vUZxI~p1LX)6^0Io z90%;ICpER%rTe6&cH4SN)0u+lnbL-^F@HA*^3&qBp0?ONqiKW8e7-af&2p0n@@IvI z&)QjE(6muzy;Rz0TB4~Q+~#ngyeQ;ev=hIgX_HL++F?%YzEmRGiFN-f@9?ZRU-b1= zI~k!v1R=n3^oi!br)jg``hIBxYQts5&p#}xmG*dd?9@aCcLI5Q^8Es~Wlm zG|REDR03Ll*$RpP<1CR3F-9p5vl92RApcfW`&&EdPnyn_Nq;VF->c0HF37LTnfH>M zd9T~K|Il=f%zcyTn9<@Jb6+Egvizkl$Zv=>ykTZ5(sZt|L!~sGhZeu0JX(2`4;M0A z?0ej_Qf;xclF^!91&WF)gNAxg`6-8pYc;qyqpznUmTHfhD|^-IWM{N{1CkT+>~?x~ zL{sw+*keC;ZeJ7aHQhmS)L1M4rC>a&Qd5t)vZ!iJ3F`8z8l1vIi_(f)^Ok6LV`@uZ z53(7j?(B^9N?7JsTWde2_rn)>41xElvlEqr|&QX*4>>L^tQYHAWwO_4hvRvT{| zt<@BTAjKE$?TyKe-UN^(urCd$>9D-1@$}SacPbX`+BG%V+1b|{k9AG$*kvdlBlu=8 z%_&B4n8_W&^-|&FSee-{Vy4Y};$l;pqcGGw^`fn@#8lW80&T;_aazq$$K&ptNm@#{ zj5mzN0>a}|ova4Jpd|H5YoVqNlAu3rG6 zGQQB$XiqKGswqZTsOl8fE0$_ZpOH-UM7s@xPz9*0Hv{dvdXc<9#-LSjA!_QBS#s5E zAC^A#G$1TMa$~c+)TZeI!cB$MnVPoR79yy)Z6Si%W?N@z+HPCtXzC^;g@nZuEI84E zMNC!T#p*33cNCjrnOW=#+iG5G?CeAuW@#&~)-C0#OI_eskf6vNZTRb2ZBfWJiQG-Y z$oLS>0uB6bF+Vw+94sTfHQCqQ)fVrHHN~v*B*S^^zr$(ktj)q|k5&nlL?$YpHn{DY zNIn`{%dmpf&{27Pxap`>F=X80h$sI|O07aEtyM<#S#vU^BnjUYm29Ua)G9`Ikybm^ zF8GrXBwJF+9+9&#(KR&BBs0vki?w=}dN{@&XBJ9y(xqr(v#vpQYvb!5OR*|(Jv!v3`Jgl@w6xMpTJ|s%#Hl~oA zmKumnWvKUSb+x(_TF6sR;|Lf=J+E=m*R@(*r#=9G6;B|wn8xCyH^wvA9LE%6?@-xi zZ4RpI)rbA+L+~ud*&fP{RyU}Rz@5OyjyO*8E*b_t?TC_MZc$;a&w#HTixQ31atuMM zBzMit#dy+NwYtr9wDuKy00;YeVgE7lYE1KsiCVC`VYJsHGEDYB%kWd9yRnl|*}w}c z<7uS$cUj~Upn6FMu0%AQO74Q8?plXINl8yVEM0_FkUW_0@e8tE_qg_f**xeJOC4vE;$&2J3+jkEO-a_S_3d5o5C5WLc$bFs+yn1xsv|jJtYPecG>{D_RIPZ))`! zbtm?Q*rL#VUaJSxgF*E<^##BBJPv`OooZKBs}~inL}dvSJdnNvns{ z!=B{}7cTTIe}&9HzxsO7TbEUVNb6VMEEyM@;5Mkffh&Oen);5!n#if1Tv~4U;UWtw zWDF{~&jQiQT76%_o^f3Tna9W35($^b=&VH!XkJKyJw`nO_xx6Nf!sNbO zgoJ&^Y<7uM7F&075}b>KUI^3;L=0x&LKh;EG0$*I#R|SdN`jTh*?#KI-tMIM=b>Ew z5%@uTGO;wfa6+AO;24zfK`3^?u67m^uwYk3ux*HSE?l{^6?V)asw5-r8*6!WKHH9dZ~4WIPSptqIgyW0B3~ zG)53m)N5HD;kAezM?0R8(>J-(W!$G7|ETeZMGq#OGVKJNa#Ucu+}dP2BF@86UFml! zm}ZW?PZwL?AlQ@JsS}dZ4AFCIX_LXpQ!G@n!n(U=feUdh;HEOLf0TB{%U!{@s~M?- zF6pY(&P3Do&O+BD?MyaZJ53jy&*($9u+i)t!-nj}MXxiTDM%23^Pn?k-8P)y5l&LX zE@L|6WH&`<*dET!!$+`1bYuNN{ul(xu}RlCZH#trN6^T0QZX|=+}<7LxGG#d7{S0_ z{^)P+hGYC6Ff0)Y>L^M1UZy>X2&6q}sWYwrFWD}lBzHf6*u+C`)lJcKtZS_l{v{Cl z_il+20KxCt^+!l34(H#S+3L{2g9ovdP^nLK##)ex!-FxGf5Fg(%jUXVl*eMD@);6x0kvh0H({ybMIS%Rm&n z3`7CTKop}4M0LqPlzj|D(Z@iPd<;av$3T>O3`DWVK$Ln6M4`t(lz9w9k;g!kcnm~= z$3T>K3`B9qK$Lb2L?y>S)Nu?%Va7m|Weh}t#Xyu-3`DiWK-5YMM8(5E)H@7BwZlME zFbqUJ!a!6b3`AYQKokiKMBd*(B=HSI*4;p)&<#XV+(4wn4MalRK%}<~M8euYh zD%n8fkPSq})j%Xs4MalJK%_Pe6kC*_6-gn$N=Z`zdL*%9Akso+961~Vk-;$#`5Oa~ zy)h8E8v~KKF%W4;1CfLTtdv9;;6i-xaUrEZFHICU4(~9L@75e;B2_!I&eBB#bg_AQ zxBGO7dAiJfdXIT}uluz7ka_QOpQ^4jXs*i9)h^O&2k1I8_(6B#^*Q=*r0OH`bmIWs zRLS%y;sM%=#wR@kw9kdN2@DR<9q#j8?(;o4x;NtSWNClZm4ozP)uV&-v3`2rAoUN> zV2+-Mc(e3m)u#sOseamx-e>5E0eU(|&qjP0`E=E12I;f?^d9s6^Eu*(KNRYx&t>V0 z6@&DZL(qLyh6Db7`g(r!n}*mWX7aak^qok^7aE(T@0AbI%a+^#eP3pU{Gm#Vwd#k0 z_D93Gd?iP(MnZvp`e~MaUiGU%`n7M6eltM7&(R+vp)%9|y7d3q_W#AaAMB^U;eAm0 zwH~B5D(Rq^^e;21+zi@D!$uhiZWRgXP*s*aket2!bdxa8z8nW4p^8v-mV;0h1A$Qq z>l}}XgvNxXW;s;Nm4jSWWra2x=4vxMHZ-mHaE%!bg{BuD9-rgdNT@Q)brpj=sh^A@ zd2)`YL_$@e6S6$5nx_wPy$7PXtH)CY_?R5ej0md@!s;wn(Hze4agort(ENTr-pTU3 zYF;?VC-l>GM#2+$fZv9nlkl??Kd0blIer@P(~O@}@v{m)t@wF6e%9b;Eq>l%majgv zqMzHa?A3fG)~}zgH%K?&g-to$90|<`Rb=_>@KGzJ*4C&EB=jXU15;`_C zIm=y`6|=Ld`2wuvGmN=g%nJ>nNr${(hT=Ki9tq6~9h>DIvnC1GOs_IbCCzX+G!w&E zEIxGf!W^d~q1m1+_d)49hZ{KWGGoUwzJdNvD&cvMZM<&9- zcV$&s+iqfM-*xbnkK@#GR1inxxhM`3;Bc=a2atA0=O)ax`~{f!o=H)$aP&J!FDo#+H;k%Nz5oDeN`=Fmybd|KkHrlrmn zI@!6BPI2y`WzKW7+$+HtLI;I zy0?Pf?wvuay~}8g_Z&LIdoiu`ewfyIAEI}7pQH8Om#NMB4{G<-(wV;bw88gw+UV<| zO};cg;M>U$`Yz*#eAlDBk3Xi$pw}zHq7YSqo&Y&-;?)TXF$unEvylTYz&c1I zeN{NC#)SLn;sYua)(2D-R#)A+Mud8=OI(*y#HBUyvZQ;5DYC*WXyj*KNsNl_StHX~jRwL#pqmmQJIS6!)A72aj@dY3qL|j#PQhwFM2Qj74<46y( zQ}VT=)gMag4xXX!aNV4&Y7S32pjL_qN-Q0AEV|u^=xi56c&A}4Y~L@ird6Ib4c4Nh zFhi>rFe#YvovBM{IYwm6AD%61^cb3!NYHe@8yBHV41uHUYXt&+5RmZDBVQ%D$eMv% zkRepKBmB5pP`7pz!ppHU-#ZLpc>!TL5Q;KA@>QXW@H9LLLWE!U2*PT$s(#zmqp|LR zPOcn=HB`VF0@f~r6<^(sWHVe3zqRdvI&Bo2*MQAyhao(aO+l!n!s{YD4p6K>IS%+(3cYAmS zes2hm_W*1PkM{y>4v+T%oISL4jyCfigylX2XZA3}djujqN>k}$_y+Vb!@+45cY%Wj zE1J+#jW8xL$OddB(WA7^MN5>_pw2_fYg*@{1q)D7)#37d4&ITm^4XIn*LXgmIz1qJ zsId$f@+a8W3godbR2)b!73A$sE(iIjAzu#iQJ`kEO>K8c{Q=K%yW3sky@f(hc>9=} zZYRHIKV@pXo;yv~=CL>5YPzB|Ua#%ikbmop8n4fGot=McX^q!!yVmF5YN+uBY}cmz zTQ#n1-5%OYeg`htn6oSz`(4g8ea*O4L@lsjfrLw?FWr3H<0xy*XUMejwAdRZK zOL`@YLyW=~#*y~Uk@TK6^z0$xE70?)yr=fL^jHe=F2<7p#o)YH#+4%xe%c_kp4nSK z=yegYx|y?;ykGAeV_#VDsQ6m3M!jdFws5gN|&EUz)b+}*N4pt4XUe__-p;oQ%$Y6)<3AO z*-PcMK52b$n*ARJM{&2>I>}D7ucyUtYE!5Pu*zL zQm@WeH^FGiX@a^LeSSB#;WufzU%dxwjDoz&`u|FmUw=!g#MehIKZV0*)DiM+Lt*6M zvsc~X&TIx0YxN?0+Bed+UN)1hv5vMaOj3>T%L=MNeg257{HQ1^x2rqcndg8FlaLy6 z)z;vCVkTOD!G#s(!V0s>8ypu_mOQsKRY;py8-94?GXKd; zw0`A3U1nDIADO^k-Vy;6;9Ut80g69XqjuZh4F&6rRl!mfEcH&zVJXDBIEMBeLfVlk z{HH;4_{hqM_q)tc^IbV!I`fqMZp^Cy@u2A{CTv6D|6@|TAQ8;h$8HN=cpR{X)a6|*)*^jGd2GwU5`JF|9 z{dBv1d||xr#@pyRi37~=7Z;V)l-*A6u2x@O9L&EG+;*)VAH3k&aq27EJ5MSv-d$0= zdu&d9Ei!x3o(bhRJ111g$vI(cXHI=1Qd5>y-^!|QFR84p3POheXJdW<>8oD3v z_VYxe(3_FefC>r<9VjStprFu!f!59KSnEnzk<3{ zy^2;DF0p;;Cx~l<_#=*UklX6y5`VZhkZ%XVwPjfc$1M8G!nMJCI~cAl&pL?7(O({} z)%mvOB^46<99>(HkANKEr()0vNR(dd$9Q1acmM;##{(EI8#Z1xV!RCF!C~XU5#vFO zmk%2+A2D8zaXoBYj~Le&uXusH{FquarWUf?hd<{vtpHj9(<(#DF|8n49@8pE%WGO1 zE#IOsIY&q2dQ<}}llDx;LdrU3oiP%JT2J*n{>F@W8ddUin$Gn!mye;7c?PxeOxnQ5 zQYSayuM}tDPaeYbE}lbI@bPpd&!_8=l)8aWq}zBA-HF8B1H6PD=2P$ox69}WZbTWR ziN4Lv^fI^5UwIY1!Kd?hr2Xso3=|30qCl{oH*y=F#T)RqRU7$Y-prTb>2f}Yui$g} z8a|Idz#V)e{#a};U%+?r7QTnK@q@gbAK?T)&PmR4il4$CXg$k2hITH$oHuT?+&CI7 z*A=4WUiHwjS3MZII?t(;gA}dv(egnH538He@o6W~tv5{U0|| z`S&IrjbW#*@SpEZIQ=sDhs+2$5;dT#NSEMxDo5zD*)Nz&;^NtlJ2lvp?KkbC*=~FD z&9~7Mv?ri{1Ny7o_Sxu{i>$|FT85up7Y}n6%kmnfWoiW^E1X?{g)4A;%NIF^;iXO- zgv*PxH~q)FT>2mIg0Fx63tsa261_-U^i^Ch!;@`?*9$vGA2E*NJw~+uGEj4-6oSaY ztz~4&jNfl4jJUNpQ=Mt9n%V&+h8z`v@pZ#^J2V2bms6$k@rBB7DkSUN{E0K&sdp)y z3n&52sB|7Slw`qe1oNL#06yGCo&@jg9OKMzX_dMn@QuSr{ihKz90N%G+K`%Ah|@}v zvI)btaK|EZ8*z?x8jd8@t#4T>tH4=K*d?_E3nIC|kyi@1L0K!C%=_;ZD5|tBmYvy- zSgp9QQui3P$A#vyf^q~;5j#W{Wa@n03|MTs?v%dQM>k_~VJau3(bTgs-X_ARZ@e}RORpjrd zGMem5Ihmh|^u&S9uyKcqVd+(pCHgf(wHE~aV+Q*`#=?b*6$c)}=IzcQ*Fq&ct)Yfh zYB-lNX6S@>D+eAbXw*=}J%(*M=zm&cq7l-K-saP>P)B^63WjDVBc2{}I+*gZXzSBt z&am?j+|3~j$mSVW&lp&+2%pnX-V0sGj>Lt|l{i##I!a95ip2 z8N89qRU{4*bKlm@3+x#Tw#ib39v`&Qi(!dYhq4fMQTKM+o$pxwiTXFHTDVWEM>|O6 zVi`?}x(g**ctDx?zJ_(;m}r9{i{giPRFa33oBn#+{tUm~UyRjaVv1DZabV5>yGq}?=F6@y!tUEmsj;jC+%MYt~Y&>vLjcm4o)IHGg_ literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/BlockBreakable.class b/bin/main/net/minecraft/src/BlockBreakable.class new file mode 100644 index 0000000000000000000000000000000000000000..bd597a1029d208de00e2a844de02b1d0cf21dfc4 GIT binary patch literal 1016 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 literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/BlockContainer.class b/bin/main/net/minecraft/src/BlockContainer.class new file mode 100644 index 0000000000000000000000000000000000000000..3f4fcf8b023e2cf9e980d23bf6b438574ca38a43 GIT binary patch literal 1146 zcmaiyU60a07=_P3myg;7ElbxGR$yHfx*tU44r8JlO`4z=O7MCXMy;0ClrD)s%Nt0% z@CW##jPFcqan~9{Qs(1*&vVYq{P_9pJAeWDMdTRTzKHsB*B8@}zl-{daN2+71=CMw zfgf>N4vWwjcK=buPyQ{r9zI}TPCR_b(9CE{Z83DZ&VP(c z$2-!o8EZabFalqZpU!4t#?b0!Fy02CHyb*R)0;?zJp&eYbucsxG_lW6c`qWR^4yQy z=!-nUUWU%t^+a4T)X_qxh<4_MD4u}>+@WJ!B+{E^hC@o46?IdiZfP&WL!2d!KOpBx z{MTY0EV(D+bq(B;@mjDA9O0Ou9?D&z5^fOmVx$fE9P~HAMK~2NC?7-Z@=cz8jalA(9D-Cnd>8sPfEH2RR8jad<84PUGj2ciul|_nr_w6K#tK zmVMORuWM`ERR8u0w^q2l;Z>CHZIns3PI@xSAnr_=7VRCXELO_2RJA-B3wNncqkX!T xgzhDD^EdszqOZ`qN;ZjHBlkOhkj<2ArerfEnGbSzW^$1+*1Gm literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/BlockCrops.class b/bin/main/net/minecraft/src/BlockCrops.class new file mode 100644 index 0000000000000000000000000000000000000000..ababee0a941837d100453dafad046575949ec471 GIT binary patch literal 4074 zcmaJ^>vI#=75}Zg(pvILmSwMnV>`G!;#V32PK|;I7~3(CF)!OOfi%TyYi$eUm628$ zr;mh|lC+exG<^h$10-qbgQio4$TMZ8pEI55v>!U1=|9kEKlEFtoszWlckixD2qK>G z-gECg_dI{++^gUH?>D~%@Faev!Ka|fww$i{v~5l2%o(REpPTOL&t#{M59G27c@3(9 z=7(?$WwMJ_PC;OM+DOeMSg;0T@4nG1xD5%n*BdnlyO2|&yDeF|y z9=A?8g`A~8NruQ%ts{yW1>wBqjHjoM@3%*?W{Tq4ji#Pi!PRZDuCSTw2V%Mb(*0^W>u=4{=il zqL*fzG;^EXVT(I-)AAw4XWF#KDdRxKw4L3#?Baeom3Acuh5gC)BSEakMhzPj#2=zZ z$75(^q?~jnW2J`DR))SeJj|+IA+TLXhlr}?MwPn4V~#m}e6P9SITtD{q)f*W;Z(4> zt&Fro*<2>on@lE0j+rOTt^(C}jhc2UJKx(rA(Ggo<8gd8gw5#IK+ntAFJDf7F!psyH_yCcSY-g4?W2=sY;ER^{_F9ff8%>edZ9*4gz4lWrZ68wmKM+9J zfj$j8DeIG_>)3^U#>FPWlD6aKK&l_q@eG)>M@q;ksXvr<=JsWs^vn{^33DZs%f;V~ zmWOaz2?7)zPl@^%32DM7PVFaEGT@Qv!9Hypiye zb7nz~1fU#gg>uBBDP68ntsJ*{BSp%&CvyvBt}9vL72;4XJ3p3AS-b31DJnc9iaJST zk$Kc&;pWDd7MRkCHnF-UYfGFDT6rgzU9wXBODuyW(H2@hHHVC@0N0!j3o}86=9rG- z7^dGjf=}Jq-Q6wnYwO5jfpsl1$%bPxm()C@ff~xRu4il~?JOl7YhD9c8y~DSu_ucp zh?6*_VNpSSc`hAGc!>eXTb5`oYswUl5Y`()9$ylj?#onI&S}Xd{5^q}1>Y+QwwL2` zfi*Zd_z+FfY*uBEg1)NbYohe)QWoRgZ_Q+L)_`drV4)Wl1k}E+<1Ah!F7pfKqV2`S zmMYk?%BgpGD8GC&ycb#)XfT}`p(7TJ7Z4HGUt0We3z|8*0p=k;pS|AA)O%tEAc({{@s?-lC$#J zLT=jH))K-6{6IwahZNc7%KX?#*~~8BqK-@W5gU?8+ie=(#OC|}v!{lcy?|vMZ{do9 zN+(OxXai&3_TUlnUc);Y-sT-At-jwM9q$Umv<2Z}#unK7iH_?MUyE~=>4=q|>G-+G zsh*!p&p1{}UX#4XP84{t5Z0>^FZp+0vt~7h#$+&t(&DnKmW3&AuP1~>_zas%1#eLx z2vuCnoNJuDib~Fb&W^^W6;yUKy^m0bT0|rk8|sL~HqKOu5C5lPwc=Yu-LJ{+!y0}c zp%_q1fI_M$ILfwMOR9tSeFJwoT+!rfu0QE`JS6;iJ-9;lW&>RrxN9T87Qr{q?2vhoJ=y#0qX6&UU4Y-%>t z2LB44Af-+kba_)Wcn#a+MiD(d0V5FA-bTC2x`L+?T7y5fJ+9g3ig@}GqGtk%WHtgt z42Yn(#y!SBK!%}?Mj6<^*Gebi=%ML@G#O|XE zmB`&Fo+Tx+HHsvLnZ*tCY!BB0l-`IDO4XMPj`;)DakifD+`yb{L@S?m-TdxC8}I*i zyvVXR&Mci_a+aCD5731_ViW$tzWrBh!QaXKPd=yq&9{OdJxUPUlzP64nz2LKfKAFK zbSb@j;0$9xIe;OFqd&Q+E#XKRE8&QgTWCyt2}h({998gql9=(MS{d|k)TktgqcCyQ zsyvP{QkCddS};y3h+Rqy&yfmYzoKG-R2BXC7Y>mUSNPxXJgG2!`vVT+2qN^bh!;pz z)6aAGJgF#t51XgLsKK8({{pEPJ>P+&q-yDZFD7YKoka2gs_)`7A{rD8n-xXz@n8M{ zeac7t9U#8#{Qeg~g=8g(F2$z@{)6BhRNX;6ivcF4ycX~xt3ni0r0FtP;7=1&p{B`u zy(J=dhgoKO7=(Q?ye;mDQh4cBsgFgx@Os^bR$>|{PnGC8qES^u146#rGu_@bD&>mi zB%tG#zam~k?os6g!>My`+3h|C8`W$@PvAOU>%4_@w3;2r@V|q_SSF!~l_KWj+A%$@ zu~i?NN>r9v3zk_6-NuQ-olR%sl~d=N&&GpO=MD92JT!IwHu8sWqOgK5uHY-%sv4@I zq4#mRv!SYpGwgdtAaL#Ose3(di!^qEXn3AkJnd_u>EJNA-FEHU*e9^^ k3*7K5=;0_t`P5HBCnE*B*Pd@xu#bX=c}Br6#VNe^fBI5Fc>n+a literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/BlockDirt.class b/bin/main/net/minecraft/src/BlockDirt.class new file mode 100644 index 0000000000000000000000000000000000000000..56367cbd277410a0a2319bf1c369dce71b2cb117 GIT binary patch literal 462 zcmaKoy-ve06ot)e#1fz)?mkV!%#DN>R31-EAZlXT6a8WVQ@C^!3o9xpW!`iMaBR2~z8 z+oIH|yi&GwZN?rxiHSfL#N*n-JkMO^=&?)K*?e%&?!0304Ye0`4pwcBBbfD>Zm`;& Yl32q!JA1!@O|D~Ala<4Ii=Bh*Z=K6(WdHyG literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/BlockDoor.class b/bin/main/net/minecraft/src/BlockDoor.class new file mode 100644 index 0000000000000000000000000000000000000000..b4cca056b3be9388168fafd0f2be6d9fdd27846c GIT binary patch literal 4777 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 literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/BlockFlower.class b/bin/main/net/minecraft/src/BlockFlower.class new file mode 100644 index 0000000000000000000000000000000000000000..615952fbead01b05a5cfccf25a5e87ce979c8cdd GIT binary patch literal 2691 zcma)6U3U{z6y1{#(oUxzqy%Vbp`bt#2mvgL7Fyb3Fq*bVW2^XqlVqAqJDmxW3A8`K z<%7@o!dgD_pe_t+`QQ(5>0ffW@14nz1)%|3r@B+HoX3WnKup20H<&0mbi=ewZ(cz>T`Xoc6vURDnlXq$ z3?-l{n0(!HMfVKX)GZAfh8dx0>9*HWFjac9?VO4zMm5ASreG#rJjgV&F$e`o4dXbX zV7wx7DcUt-uV|NzJ+JK=3Y4Nso1+?z;kbg~mf@An>du;7a`YN=NZ-$F#O6zX{T*AN zP_bLL0AW9^;UrEe7@@tCXvt~YHBui;7v!H1V6;RjSKGT4!!7F-i(tu;Q`M~vok?>a ze2jSwlb)ygWYVMl9LYS=-7Egh@hruNu;R(POZ5pJKE z7m!QfV&8&FI}MkRSD@B|1dCMT5Gz~ENWrdXxC+8g6S_?PgtxsruJd?JZY7c8Z6P4h z6imF4j-SZvAglVGhU<8r4ODma78Np6ps%z6oki+XIhp~E0~5wJ%-mky}GlaH-k#19DCI; z>y3)zO8@1CZr54%nFFiAVG%w3iH46LwO!G$iZum?s|}+&eBDt0QCKl{?2>CNT)SE0 zc!_3KaOFS(rEUF@o^La?{5{>SIlFVBdy}t!7M=f@h7DvCXe_);k{axbcKTey7ouav zx*fA(cseQQ!s|;7U!llOt+`H9x-GVfp0O(&ztQjj-x9DpOPi+GSam#eYoBEkEf+Lw zMMG5}B)bSDYVB?4R@)G93=LbT3)#BN45QpI)^`}j?_4(GDf%uumSwg~$Cg8D+Vv%8 zui!encOA!4uyCMOnLa(axM#K&EwgSLwWTG_sb;p;n)<`GvD~h(`q8wQfN|I0&Eqb% zRvmX&x1rUIP8U<6_8DrAazk)A`O5rpGjq)}Eh7jXLc!>K1 zci&@xdmx`Z@hb*iU?e;B8xCh<9i);Ig=}*2?ADNY@V|04d1706kJz&%b z&(2VWcc0^fr{H zJ~b1nr9^J2SStPkAN$J=N-w1yk!+7q%;V%cA#vt?#}FqKW||7*WY{p%RFJ9oc9${Y zB=9Nj1vIv~7c|s9*s9EDiUpnS!Bs%=)CuBQO^2Syd8O?Pq2 zKjNgnmU?us*};9ejCSz#rclIJJSm%LMz+>8xtu4qXfnV4>5yGIWS0)vr9*bA#CTSdkDb5@JO{tVoCz39uAwV<$kk$hVlNh|H!J j;j%=~{L=tIf%QK;XZw2Y!hRJ~PE{}F^}e2t%)R+9qR;f` literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/BlockFlowing.class b/bin/main/net/minecraft/src/BlockFlowing.class new file mode 100644 index 0000000000000000000000000000000000000000..6dfbd42a6184b8424d2f5e4e6ae6eb90ff092ff6 GIT binary patch literal 5431 zcmai2dvH|c75{zNd+)w3WFcH)AV5HZAyJS=76payh#F0Z6(kC_X31`nh0Si9o1y?YZ&L^JL^ z_j{c0JbveQzRRyZd--($i*YE35{2p6RAGKkI-BaqCpruB`|=(0S7mY?TQAGxZb@gm zf-n>+zi>@|I;k)*+uyS?xh2t&$`;n;`tu#BJ_XgJFge}V+FMBXBr>9HO*)_ID5P^) zg_2Dh6+)dHT%GGH$U9eCm!z}l!g7VGnx^J6Pi#pPQu%Zuvuy4L1!HwCnTjBQQX5g& zVJJ+nVZsur%tjC)ksKRgL=;M!>EPP_p3SNJ`o!i;iZ(arIue-;32NlKH)s^P(=@$m zjMGQQWEs!DIgwxBJ{B@QV{GuvRfzQWCTYCHKw(DB7>nC-`Al+IQ&ZF24G~mfRuD54 z%Fm2}UT5Q6%vOkXr3%`rmQ*1@{Ru{}MpQJ3=W}eF2TLKiS(4ebM%2!=QHwgpr_bBD zGMgOP9Foo4zEPH5U}GNUGjKhL{8oKRAJbRZrVw_Q(NcwqFLcEX%_8@)*nQOdkyxMZ z*s8GLtdVHmlDIiBzrT>q%)cg)P3C%-_Xr(ZV&fuQtYFi9jjB{ff@Xb5Ses<)G8>oR zQiVy}x{jdCr20mys5+}XUR+n$Xpp#uJ2S-o`fa@_iS{ZRt5K;iPDi_#`Y;-Cc@UQ= zOgS@^#YHx*ke%i&0&m%IrH!j(#KAOC$ekOeZ3iyiQfICnbmOZve7Nbo>p{Z6tYKrk>j@5*eb`B>P)!?3XEi~$3_-8 zg>#6Hv3N_U;j9>$yNT8)++-sUE*>WY$JFFJPtLwsSJcEaVeb}C+fx1rO@&ks>74Z3(Vy{n(`^$o&l-K9KJo5R8;{|;qY2XM911fvL5^Wj zu^MTV!s9l+gGa>QCv6O17h6>_m&>>1a%^^Eah~gsY?vcI-?#CU?6UjPU0KFIn`9%E ziG4Qq%Y>ClB$HC@_hMCqCI5_#AK)NsGu^i?mywnlsF}+&+qtY86Ru{40(j2GpkyfG zw%N$ z5NRqZsi8#b-aGXX?iSl>>MEx>#t>%2O)b?PLABBDm_w*((*y4G`6D(=r1d~4y@*lo z1h%?~`uydtKL7k0o_nD_zlQ59p3c*-fRcDygN2j~YMG8jluWK%jC$9)z&o_grqiXh zo_X=OWyFJy^^`gUUigiDQfd5sib`C=qL|Jv@oIuSa$ygeRr zLb1>Rgq+A8SS9h0oJaQ=koay?k9vzoooFny9}y=S4-LvA7UFhliJAMEup?M`7;6r~ z3g|(;G#x~ZV~O^e?jcj0kYhcAvI;XegysS2u;QTrz2fj*EO$b2%L(m4OuHNy!ZmG! zSfyW_&=59gNzyZfjicnR4q}=U9KbnlsE(n15VkLC50Z{?44Vf~FXrq=Id?NIhUjvv zA$0PbXFoSa*WBTqj(_3CxBsW)+*8pbB|E^bgC;YRf_+SLhk@Vg*cGM=;` zMg1_nV;K~Sijr4Ul)R#%v6gDMjhQR%|ELgc(0z8OlyGpwS>y5LHU?w}roq4@yp= zhCW!6=2g!A1hG)f6MN5u+^{+C#XL#b7;! z`EFscmV7Gs<{&B#;~vLasF!-{XAI#%EoxMgzB=1R&@zVyfj-#C5HCH9T$VV!guvh8L2||*e&&RBfz@Q}#Y;}e*hf-g-977s%zZLUirC|XEG?UR@knJn z>=^NgYzmPF`6hd;9bx6|Aos~McUU_jsuQcmP$N0>>mhvKGH5gy?W0NJ0$m2=Ub5{?jX*;30bL*62oEskak_+gYdI zU=`iLZ-6@)pS#$1@5Yt9@m!62unza(dR|{{#6w6C@!i2r7jui#0% z!D{^lb^VSrlBwIIMPS&^)UcnaVLwyDex`=~ObvUPlD%%GO#GI$VKFBm{E~IR+MuQP z>)Hs@-g~@?c!hp!mx|DJP=Rr$SR5)6iAGN$rc@{zs+sU9W=W^zW!6n~NiD%A-T!zX zZVuvchJ2D^GVQIEgt#;{)5{=ZtutsT$229+l0i=E3kgC0F?CyHGB7W08gXk7Q}t47o?{+hHxZL9PVJy+ z7T10lkTugeK2fv3%sMnVXbi##tS>J6Ko1khfkXdR`-HUMC_BVlRG9EpOt7M8r>-vo|RJ znty-5Z}4|M|4oz#MsCoRf858&aUUbceT*FUF>>6)NPwL0R&yD1?_%V6ehs=(IV};4 z1T_k-LhK|zN>5>m3xJ9fC_5oUSf(bGL{F1LgFaD`B1_1H>NG9;+-N{XRe-qR2a?B* zzvt~p*s;-PMAI=3G)9ZI|Dc?b*zgD@Ry#Iaer%HC&jen5Erh4A{24t#`J1jJnY1Lw2fj1YW-?_7iLT!Zgi zgYR5}Pa6%Mb5Y(>M+iO&Q&K%X99zlc%ICD_Ag!bSK)si~olDIMlLbM(4F(2LRl%&W zt%*FT*#CI5l6PZNx*}8x!a0KfXzSfucD-+Xy>ETJZ+*RQeZ8NWI$B>zlcXuxFixU8 zh{kAX1HWKdNX4&$2f4!J3VrjHTcg|y>HTT#ZEG*oR=eBVZoAv=w%c}FQTF}L`ST|sgLWqm zb1wfm-~D^P?;pPU>ZhIsa3%g2fJdP!lPok0rZUNRF4k9Q$mik>t?6uhcSm|Sl?cF6 zs5s9Fg;1Xy>K++NDyU8c|C&@LRk%iBNloX5nYT8^3dvk5mTs=ys$jKc6Uh)tFe?CC zVZr&2+bG3sUP#CG#3=7;5e~zPIW_`_C|pp}`8q;`pipkZ2Y;Bec{VCAU!gRgENBa~ zW`{G0JhiOp(4X3^a%_Q(g{V@P#be#6`0nd78?vzk#jDvNYR%q2Q*Ig_>`msnW4&n_ zCbA(LkEOT9s5#fprd1e7k@TV>%1m0nnN;`0ax2Vmg&9`T)E#DeC8gL>h{bnrj14(- zXZ0rwUCCTLnJKiSay(YkS=(W?l!1~9t;^|79??9ylY0xpxnxH!JGdp4prmrRQ;f3Q zMg#l`b9*HcIx~sn-p-73T)`%Rj&%0c_GCOZqOiE8h!Wefxpbnrvy%kFSc$6wps+;( zNuRUPh^rOKCIp*^6XV0q+9LEPjx>w7O*U3bgv`?7PCOF6Yi#@t7>|>rlZ99!R$v_Y z86K2Qp|S{hBfdhEBCYT1OU4VSJ;^CLUs6oxPHokecs!ZU8`VqDCaSm7(KEw)>Tx-^ zhG|nol&Qy@fVhgD$tCHPTuXjaHa8ecYt9PZn%W)oPbz=?Q0$iBWZQ5ry*fJ{%d}{htSg&ME37R>d@^E+7@=ivD&LY$^=Fca)>c|U!rTaJz=w*{ zlc7|iJ(nFC5(VZFfp!rv8iot0bi?LYCXpR%mP3)5+qBUw!?8>uRTy#aM{8!Dlk37+ z0%0p-BFhB3rkF0%d?sO5L?sef+1?z+&4>liQ#3jB5gWaT)2Z=XlJGgfc2P}xd;4pV zRY=-chZbSbZ(~4cgkp(=As|3@gFM=8BaJ~m%IG*s?PI_!tT{hn|Ec+`9sCr}8>5s7 z1!lA$&ML;6fEbZSk3=&)63+BUJd5s05@%@r?rcjU(VbndU7@hKm~GuSDPmJ|vAM_- zBbY((eKy{Nogr%f78`$u+ld8x+p^glqeivM_FHZIz1|+t+p_gG8+Yohea^`RMVL73 z6@mp8hRt-B)VF`I@eV;J->p*q7=Vl*ov*FARR2IBL$px%>j0%gaN;f-cjMhA5~q?d zfX31g9v&jZC8anitaxo3&P)*&IWOLC<2`tvd+orY-&&ChtjbTVH3u^ zI26D?5opgPXyY)JDFiYsHl3M*wU)6H#C;6tbm|s156iVxgunwf9>hZuiag2`ixo7W zby(ND6|mN>0|e0@v2hHe%vj;QMJlwxXBK8j36r$xSf;;WOCd+#Y3}H#-70Q))W%1} z4c=HPCxnjM_&7d6ZBluyn*mY-nZ}emq_#Y6;|X!RH5l8wJ&01ddeX*|7^4UBL$O;k zU9lY9EtP(ugBerVQzm|-GmsjjOGqjw^(327Xf5WPbHSrXpiPvx=32(97oW26X*{D) zqHVb`yN7xg&rhu>Yo-^^+W4&82}@UHuJ}*An?~j*jL+kX0epeIkanlmhdc*td zB(s2KB!6k~+IIiiKVR^2cl%{*oooWWbPUX5!Qj{F40Jp7bsOKn*T^X@wW%YUyDpYX zBx##yHnSR>5@I+}5}LEM4RueyTzqO>K>57%HMvLw%vmL80p=z%kgGp&=Hu8^w{Y1BgpVOuRyqn_ znO#;kP&TV)*;6R1v!2AXyLbwz)juGBS!m<}x zP!@a$K5z2^tLH$ZHq(C5C%9|Wh>#Hwr8x6wvPufRK#M%j+(ex=ZkZPGV$v0%yij82 zdP-`nz13k4%Tgo6*BNSpZfa;$K8 zjBq6$t*Wo8j?xuZkn*ZW5b%tm#Mx>-m(hh&tY76asv@Jcq)J+}zF#X^MeF;inCva( z%vhgd%)M5`U?<{;@hDdkZp$>!akN@6g7`egovrm28hufp*xc`x*`!z!ED}0%=%u-+ zrAT#L)pNF7i+YWr?TWgLqIPIem${-Yb48Uv5m6U2^TYF8aXXyIY_tmB%y2|UBS zS<_fz&beyaPAKp$)!s;Xov;&FVzcfr_$YM_kU_(wFIM|2{o;>f2zW;^KkBm{M8FzF zX`Mb3^*x2INq2;`@7I#cIxWX_hMX%$gKPc<*Zh*FCQ=$4^GlW*^V@v3nfdJ3@|M7R z29-?A&>O_~ThQ&uEu)08M?HRyGupKn1};3V7y=I_U_GuF9#;&HBZk6_*y?a_-5ogB z-PaX$+BV$e++4>|oHjF1HcWBVblHq6MYioUsKO4s(V^DJQ4nY*wJuG~pv-h?+w~o` zxQ2%JW;(?t(mzvLTKY8JyxM16Ifg_d(ODcWQU{xYoGH|fE zS`SeY){`;xt@e##c{F?kwQ}M0Pv04!7=ee*c1=Qsz{C%!he#hWs#yu&7*dDex2A9R z_-AZe34&o@=5`OagVVOlg|^irMww21^1(Uuma z=qHrz;;l4K4sw;@EQ>uD!ad00KIHK*3T!I2;W_NZ3mCzR*oWWYHvECzZwPlN8~fD~ zyiHw%1L|rVRIBk$)rEJdEx22y_&$=x`_z8CU%ee4R7Y^Hx*vztQ5;bx@PHa;XD?;^ zZdPK(;Y40?=AbiYP9fpUfd|eEItSHB!ov_Vey)0y@Zjg)JdEKMjsfaEN)7z9#}XW+ z9)4EvZt7OxEKCg-W0Nhca5zljfBku|*wxIG=0hybXdIe=ll>~!l_-n@hqRw-c zg(b+|Ab>U{4FZoa6X)u`sK@;Mg-%eol}0m_e4JtiNw&#E;!_w|9jNqgKZ)Ba1N@3V z$%!oQkmVg*-l3QKWx1cr{n8+r@-k0j+{2Xp5%v_vSmQ>q3Lnvy+-#UkSQ1Sx!Zl4; zl6w8a8VUzo{JT-(5U^Nk!3i8>IS7ujxzj7%4K5mm zHKQ7RObcgf;bKQPF*5PKv~-<-_&f0~$5OmcrhqZjIR4SXDxZ^LX63K&Rrv3@AHfPA zTh9vrWYfiljyE48tUXTCJfXRo+EeG6q;4X(m=Y6RN}X$xI>#h7?_SGp(MLLEG|9!3 zRU{6<^9nBYcv=LH`7Z1To#tadAKOOiN|wX-O?u3f!zbynF)fnmMr>CkDa)n~Nm(|H zlaxGD4sF*&Gd?@1NwgNT}}S#gS`D%yor^`-3-@9 zPR#eu56%y>l#St&lP?o>%yr;1D95wZ|Fd-YDdOT6@D6;DHvAG1?#p--U%}J(nzm1$ zK0oeyX5976xa*m5*E8d;XT}}REaETD28lkvkQv79^x=K{kAWO#L2{Z+B)XkEB$R^i zyo{S(CMJjQ6eTb~@e=(jk+f40-z}YDkrNm{1y#4Os#6lx50#aMEj)pW z&z+kzFVHwY(vq0wE$q5R-V9CBgk4F(t|Vc{HHvzD%i*@mG41)ey+m$5nWFdqmz(@X zVmelj{Cr{fs^jDrynp6NhrWuL;g9CyE`$iD7V zitS6IQe^KC2N zc!8fX2!6&675)}WyOLObED)F zGiv2*gIn_o0-3_Ol$}{K6)5ux)H9h}#y+dSA5F}6%_{JXT4^(gYSd`Z6}0X>@rq%a z`HYd(QHwfm$TJBA?UT=684uwA4(iYlW{%OseoMP%gHX_@!w*$hO*)!!NI^qV6r0GU z&3lR5jCs#4=0yn!1$C3GY^u1DH1jh?GD~lG(n=ZGS%X>f-gWxyyO{#RR|viv$2com zGxD!EmwpAhm6OlUrPF3w!3)s}2h3UdY&xDuB)VorsYi9ZfQ}HeKdz$_9n8L9+GFOT zQOw$7nY_scSUCkP&ppbCKHywVh0u*JY3NbVycc8{TgM5UR1msj+A`S$GgYG^p+pdU z=-0r4Dr}aEbqwH?f_iJ!c&BKN7L(?rWi1z16;$1r7qMeHUd15Ez$)a9E2eFv4cnN@ z*mtKaJF|FSfhNKc04L|u&L!qtUUe=!LSQ?@zMWT4Gi@8Gcal&C^F}Uht&C*~t6AgzOh)MCl}bf3qo z8{tR@;TmQ%Of#SVU#H_b*n(h=3K`E@hOOX0v}@e=`saY}+5u80<0Bl*%asB*0BJCy(z33@8+%=c{`I5ifW5G8D)*!o!)6XpUK^ckI7HhYyj+$ ze=%#UaAA0F=Ir)37YI@HxmQ8P5|VDW$Me?8bSBLsd{MWT%Q~_``dU&-e@sEGwB-Ea z5F*D%_D6BAS}x@5jD7zq+hFG7U6S3aI^F>%W7x|mlQo@n3XVw;RnX~-w3^s+Fw^O zw1V*QfB-!~-reF;@w~CSZ5yFysPAt76b;?=Cq6~w*YsDRh2LTB5jz8%C^dZLH$X=# zJsr+ow4t4MJOzhwh$jo{2%}Ze<_pe^wZaVieAdw2(|$POdxjTF#<6m!T6tt0gVi(a zK^f+hv&{?Bz%Vb#FbxcIh+%jrUZy2VX+V^gkKWEwXeGxJLVUI^Bm2@j=!*FrdqLQ0 zPrEP8oP@2>UU2Pz8VhctH{u`IK%Fqufla8cQ!P3D!s&NbY9(htI0KF|P;zR*sl|da zbR@Wg)1vYN66CX}quoeoBh0@E$N77vkJbR6ULX#aSoJ*Xy~(CpIEp;$dq^BUKo>ry zK14$nohm(~);*-wJ*3t>q}E-ebUeZkBl-FF0K@!N89j$MEsZ%OafViancT)}ILqFM zmrE;rUofeV21P@+;(k~`VI?lOm|C1yfFcIVKg{spoi6a0OFNja4K3iK|m( zoibsiLsqndH)3l0qwv+_pmz9Cb+X03gEzx-OW`l)l7oSWPd*8T-x>@#Pv)1xHx>u0 zBdYcUv7YeT&02G4@o{tDadWV_I{CP^wsr@%dcw(y{w@46q6W$vlh4_>$G?SqMD=?c z8OVvq(7Pk<^>1M)qN-0Y;G|k!@V}|<^_MAsjdTYF*`py!UEmxik`1`nKOl)A2TmSjN79T>FS zfkDd|7;GQ&NW+hVN`u?=Lp(PQlNom7pUljp4EphR=4Vm{G5n2^Gby@J{26y>RZD5~ z32A&4x+e_{*OV&pVYP!_;53IoNi}@Lj1}BP#vv2MT_s1_$u{ammwH*+!qK+P@=c_T z!0V0}wx9{4tO=Fp0B=epnw*nLNKhrtgcfY(e}c7o&8T4V3f1ns5FWZ}ZE`7WeU8Gg z+Tw3fcTn_+AkHhnnbX%Px>+`HZkO1aykJcw*g4HgbGoSnJAE$fw1)5%!d^p2hl!iY z>(}sgH>1Dsi4gIWCn{%h@4y;XTQ?Aq{%w5YDVBEd{@fPAuIG{Kk+%`5@3gc;Dc>!V z@FhkAZm@}Ovyz)6;VtHPn+;!JUMaRVO{JT=DxAV&Id+(nSK*Xb;gnb5lv`nlly$~Q zBkLQ+_qp5od0zEzPEHL!s3qzjW8JN|pBRf420laKt!MbruRPS9*4~x5=*}7!Z3RD- HtA6%hv$9+D literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/BlockGears.class b/bin/main/net/minecraft/src/BlockGears.class new file mode 100644 index 0000000000000000000000000000000000000000..60399f65230039d940c20b50546cca8654f70360 GIT binary patch literal 1150 zcma)4U2hUW6g{&*`6v|yE4E-i`~+hpD)9xQ0Za`Et)`Ni_%`g0IJ)f6+1;l7Pd=zG zCO-HB{87d`yJ%y(HGSE+ckaFCoO^bD{`&p{KpTxLEQY!#g4R@e!q)s<(DJq2>bc7P z_(E{)XOU*8p3%Xu@I-ntc*>Az3MHI2bkh7(> zLmBuaWO#OWr+^enMPzW1VUx)I*K357hP2U6I2{W;;$v4Zl!waZ?j9#{%IBBq;Jqa3 zwFJ0h6FRil0oM;0*dPucGOSNT&{wW2eW|>j3Oz@9lb$-<(rWrjDVO0{BLVe|(yr4P zkXs4G?xFO%uAF$n>Ggw!w>v`x57ZWtzGUpYT9X1XZiGX z#2=aA#9kL(t5DlwOB&-#$4=fih}Z-vq!$R#^P*q6KzWw3A!X*iaJN?firhC`_(GY5 zOXiMF)1OBUWr{Z9PE>H2GE-m16~Zx5l_HDct5}&MkLb)$&0?R;H$pV5z+!~fj;nvs zEJ9n2>ed|1Ow|b2=(A9#C{6WiSfj7eeveLrXQe(x9Y%A^P>L9eadpl>&*vPImBh)7 z$iII$b0;~giIdlHW3KiwoyJcqeR8rEO&b5qo`2jme%z!PhFj;*y`IQ^J3_qk8;rHo AAOHXW literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/BlockGlass.class b/bin/main/net/minecraft/src/BlockGlass.class new file mode 100644 index 0000000000000000000000000000000000000000..f3b1e9ab2d91c00601e7d6e0be7dd09c80cc1218 GIT binary patch literal 585 zcmZ{g%}&BV6ot<~`Ku_3f`7!QD=^VUC2lY-&}c}i3pFfQIg~M0N{j83#CLMz%EW~a z;6oYjv_ux*EN0H!``vr)%=gdd7l1l8GDt8~Tp^8t?F!51kJ1Qy%V;{D)xUCh5M-b+ zZ2vj;MQsqNbGjA6IhYMImgHJ8G-xzp&>+6>yc*AqID$mNkjnxSBl|4lgP z3jaQCSTsG0J8e!yWH1hD^2rVuwq_ViMs8655%&)nSSyxC@o`LVol*HWT1?fcu0s>O zgxr<3e7*3!;ZXD#N>%fjkGK&^+c9pr+w%sE8aWiF!wmYJ7y6dCwAJSnCc_=57T5u! z$E%efML$4$hHej}Q*`Qko0a{N_JQns#ONwUEQrb>i#byDm_#1)bW`~S6sV6Z)ztR(IlY$%Ap)*{~QwJuu3%yYZ1Tx3scg1asU7T literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/BlockGrass.class b/bin/main/net/minecraft/src/BlockGrass.class new file mode 100644 index 0000000000000000000000000000000000000000..d64be46c20237a51e54e0b959d5c1542164661ba GIT binary patch literal 1702 zcmaJ>-%s0C6#g!8>^L>!XJ}Jkz+hbh9T^=B-O_bkVK8rjZVe4mHEA`m3m(Bnj#IS{ z`$O8Nc6;DuFGVDi_OL%-|I(ys-?c-S+O&$4d+)j5Ip;gyIoE&x`{!Q(ma(IuPhi4x z!os2JIkmug6c!pmt#GIA*A6xUtI^P)2wZ#%LO{LgdTw}2K*^c;DwkE?c68{tpdl@A z`Ax@7D|7*14#@DOy|sZLGx7|0>cJIFe)&zD=RTQ z+j(Mo+s>1)88`yMOcOI^;36&w^f#Pv+pQhk^~%0QCQ9ysEM=ffNw%7YyH2oe?bhiw zT=r{Ly=sv@&mE%@?z;_v_j_RdfgAXYqS^CRSr8}4uUq5J45fwCY|a+<>(1FKS>^jY1eEn|LdU>y?z z$vyc>4zDzPVhqjDEuX%@~rVxp|y|e$o%*TQh(sR zd9{V1d8LiaE1LU|<^M2UKzNG3eztcQXCU{~HOk$LQ`9v_)P0$yk#+4V) z62~ycpF>L?Ls5UHOCm}j*?^(n6?B>i6$xFtEfdV(gE)b(S&h!S*22W3@-Rc@v)ZpH zbWiy^~_!2J-F z8|EV&L5}LK@S|no67EwZi{f}x`ZsEQis?wIALGKi`nRb6H<6Sr`i(}qx9}}@vh^)| z$DQnC3uSClw)^-ATePW+Ucp`NH0D^x_uQqJL-st88~O)N8I(g7D~=6@lL2*Bp19gZ gMK&^?l(>9|k>8;y%NdX?t! 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 R9JJpkvFFm8O=k_ee*u*N&949e literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/BlockLog.class b/bin/main/net/minecraft/src/BlockLog.class new file mode 100644 index 0000000000000000000000000000000000000000..17f16b415e1acb41e42cf2721698f31eab4ba553 GIT binary patch literal 944 zcmaJZ(MaOs5amU|N$I&EI0-_^O=yKZK z$!MU$JvkUMTIvRl9QGx-(T{^>^vXM2&TcMHn=>5A@GddmOr#%q(YviM7>^aFs?@u$ z<&kVnB5&AwA$>O(wHxeSIvW;9d+wsp=9Eh+(-fknh1(QZUn0YlQ(I?U%i_9Lz?vzr zH6wYCPr0w6X<97Db{LF$o=XAr3zA!|7fI(}M~-6&GQD6DI%?a~BIV{&-_h)_Nv#w7 zM}Wzd#0q_j-g8C`+CsB>g48$Uo5k{1od3*_feQEhw9G<^E6?9zGiJ|9u!altSd4X) z3CLfBY7G221KN!XW!yv{6?*%U5GIvex8LcL5o#4tBT>TrUI0dT3 z1m|R|m<-EsgOCP6ZsJx9*{82**;VrcQpL(gcc0#tDmx8?vZGP&7dy42n)<3ycsk8k*^5XdSw-r^kZ4;m|97Nibe%>1=A^1Ot-9{WAgR8hZ_(^lZq&k3Qp14oA&lB zL`E2B0~8!p(So#sBW1&t(Piz5rPEn`_k{ctpqnNc@^oc=#c=Z4O36^rJZTrS(t<{y zeD^0K?wZMyT{T=ECT^HqJlCAd3Y45T98hqwXt?8csbrQ-+mc93tC+PnCmefy*0xIu zM!RcRU$mW)KAa=NH5SJ<&GJ~uELw)1&C+XYjXjCZBBPyPK%F&s*=vV6Y-Ct0L~X-Y-s!5% zys_z497E`3-qejTOP>n7$P&!e)5EZe8)&EaS42JMEZx}5S^iPZItFK)vGTO-tZOBS zl`iRGPA=rPHas;@w@uF~n&q1A)-A{0*f4Yj>F&uV+HWCR|oPtwinWd#M2vxEsfvnoURUQ<1}m)TvpPM!g_B1$#VG#44*xgg&P0 z0`ps(QWg`KRxyLwJu<5jyJ)&=)3$4_ZYhY1M6%BbUCybP$0UI`#;RkK*JQh#U(*D6 zY1^7M%;MUL?MNKsYnoN$eCHdZmxd=WAgq6^;sNfHL7l{Vv6OSJu`ZxKRPhNOk@9Lq z)PP75MEkkM_OlcRHCUtD?`!mvcF`;}U>OC`WJ%iXT398LedlUb`EEYR)G}686tTuT zVnawlHX1hFhIzZ<6pRT|^xMo~!k5Kd)qsHLES4H z=}jaOYI926LG#aC2;mrikH}4N-bZ!32kMdGT&H&s@1T`$G=Vm>)2tYEa1`SBI8OME z@_a_Q7E*o^ztXAz0bXCi+7)j#uoj}VlX5-eTN9@`X;;7vF`#w^qTn>n@K=O#flpyC z6#hZ(5V$=LN$ElLR(%i5B+mIKKj(R2A=BH}aXcN_L6106#Wkd`Lz zddC9LnE-Sq0G$ayXME6fM6efSz!_ZPNWf%s_Tl_Ut1sK@Q+E66jVnt_5zK)zvBI5Qh$lK7>UGq_`JlNkyzd? zB;hTJP;y*k_~!q}_<3pgV8%x<>Z82KrwBHjtUoB0zCB07fmlAkn158TBvcTJ96Z@C zPagAD17?Mgv(nu-ZuvGI$r=O_%y2{(io1Q#*q}7#RYf8&mIwrv2-1`Y(v%3Q;vOb_ zR~CsAb=M-rlx*6;lqc?2_~>ALU*o6VbsS|bcPp|b@ZA#lZV7z11io7W-+A2kd@Fg` zFMw^otQLl1;i33$%-y+1bCji$-7M89HXa&(yl|o`#V{9b8)$l+ANt2=v5E6ZxuA{6jyEvUf_)k0_ zFC>!i1N>2jGi(E-fG<1u-1+Xg_s;(P_vakIdo20z1hrJ#=5Czo$f$3&**8&hHOZo% z8(D92PaUM%_$Ue%?!nqwY89)EVEjXz#&$(8R_}Bg+k#>{`>IPQ;en4pP`Pcfp{zEs zNkAlrYFGS_}rMD9S^hf1=)(Zm|7ccy4FM zq&~KEJj9~}iZ|*hoPozEQEN^nooqNKUBAiQfch1uS(s&0l2i<=OPqd*Gdpq+PYo>L z9>da98)1)XG&6Ecmx2!_eb)~~;8}LvQIolLV>V9th@(LKQ5raC)#M$ZJVDtAGn4~s zmE7_V%w+U>B{N$*o|Ox|?c&_2{ET6IBUA)wS~Kc|ZFj5u)z z3#22XEJYDQFJTdPl?N(y;^8^{i4ZFO9l6~01x2Bb^a#u8=rbSj%Us zD<;*}m-7qS7!T5OUy-d)rgdaq9^=Uu#I%d3)QGBDLXDKtsD-DmG^GEHYyM>=i&Tm1 URL*FuvdY*NA-W^I?3Rg#j zP@2)y4m{T(#15n@gF`~JW}5X5A#&{5P7-rSq!2}nkZ$pYvr)h6_?M#F>b|X!qHxc`fp&Y{;lqg1Ho1eq8-w)0i#Gb;1gA cY?ZVV_Mxb%7 literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/BlockOre.class b/bin/main/net/minecraft/src/BlockOre.class new file mode 100644 index 0000000000000000000000000000000000000000..8845d558490b7296fb5fefdad16fb6ccb6b32461 GIT binary patch literal 991 zcmaJ=%Wl&^6g`uqaqUhB6p}uYLPL2Z0cu>JEP_~&2+2|k5=Grl?5S$%*uils5I@6? z4I83JNG$jOJ_>QiP9mfPHsd?Tch2K_{Ok9Rp8y`?sfG;0b|7Q3?*-C{#A$2}BgcH< zhtB!yNNUJ2Z2aRrL;jf;c=23*)ottkz)my8EPc-zg}gc*rhD5M*W_Q-in?t8P>a@Bm5IV!nB`)x%kW*E|;Fg zZ;`*ejU{}i;!)KGRT-)`u{CA>M0=%ZH7D2} zV`qZeXYes@PEh}XofN${L-!L@Q|MPZluZmMlfc?v;?`W;nu}W`Zjsml_2!W+m)dl_ n@Q8lLG~yvWRgg?hF{jZ|=3>IEj4ON=D?`i{ond&A;D>(z0+P`{ literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/BlockOreBlock.class b/bin/main/net/minecraft/src/BlockOreBlock.class new file mode 100644 index 0000000000000000000000000000000000000000..a3e1f3c871c54ac10d952094780f0d89a88753b0 GIT binary patch literal 672 zcmaJ;%TB^T6g@+W6{LbMe1P&;feVSooyLVECQU#W5Y`T5)Jkd1Sd8D|%AFfG8jXny zKfsSN-YM0D_}I*ybLN~m_s+b3yuJb0M$tfwq2P(2HgG&)OMVj6E~Q=DcYV8mBt=*a z=nRX0h!`ez9nT5&7~&Pns&*Lky5AECBrs(l$*}U%+2nzc4tG;X!6btteUBmE_*=P? zgobnqaby^Z73)7~wUYqDYzlLjXPE1%SuC$7t}U-Eu7jZz49sFkH)!U=;h-yIn|EDe zXB)oF-43VT2uGwIoH>^arC%b)o@s{$x#DtjRJQ2JPDKzZqSOQF4_Z!-a`cK-r3TDa z!0mpMUqngCmOqrXIB>#V#xCDD=T{shnoFaf17fs`V}e$LP@7oAPp{`5G5JC@|BRW3 zP`9A?@HCD|a+u`E5?35Ku!to>O0$f4x=-y^Xr~f#$VUlX!ZA84=k!~c>ra@;WO{d4 r$lZLQ<2x9NzbBOjm8!Y}l3`kQ|Hpv28mJO3EW%vXB z2lR`d?3aEiGT`WpKfv)f_%rNx=dkyXRCvrg4D9M|3z5Gw+WlSSKd zEcd=ZAlbVtpiGxbW*7pObf^dlT+R{M{Pt$StSlJ?+Z1Tcm5YYGY*Z|M_9ugrK8%{o zW_y>zXu*{bS_RtA?q|+$ON;jj*~d+`c4X2}T68ZArgm6*mM1FI<*;ZoDv3+pcA&7N~ON&57P+jT|$i z;|@9n!fs`EshlCRu~*InbLd?i?_-qIE*cI8rcJxN^Pg(3gfK2}{j5!99oKSq8OUx;bBG;Up1AJH*Itu(o-QmN5XG%Iuc|6!; zH&3_Q#I{)8t`yCT#V1jdMCO7Iu+7j-)(TMN$%A}&(WsHWA^PzQ&_j3rsDU4#y{16} zbh-xRbPy3a!^@j+*`YN>SxUjO<}1@hzr)#@N&T z_}8ryg#=%s3SYShN0=N}_o3~f?Ijvx>LDJ))B~jV{{G`7!u>ok%bO2K>)epOijiI0 zDcuf?Q0k*pk9%~VrENSSQ_NG3vOPRO^R>kCwZ!tZ3g&Bx<^9A`gp$RFl-NhIuF5e+ zLl{%EKc&Vw%=x+AqC4BWA^3`~r<{FL((B$^pFYe7u)p#*G777dCXXi$F@INyD&Ig= zUPYCCEF56@JAT;5)2K3ZfX~O(7zy;%_XsI3(ahtbH&z17>r76~6 Jjj$T9{tvL{#;^bY literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/BlockSapling.class b/bin/main/net/minecraft/src/BlockSapling.class new file mode 100644 index 0000000000000000000000000000000000000000..298079d78179622175a894e31643082e4f720c78 GIT binary patch literal 1334 zcmaJ=-%k@k5dOAYdu_SWQmxohev6hORIq{q0stC=m$D4QqqV+Fx9sUVI-5d9dGF~HDsH6s^8!4QUtO{GabuU8J8f>x~& zMIV(<9aDq2h1)Vl86tlNQ*Z|<2HD`R9o2A%M9OvOM_R$S0FJbPH@Kq_DNUp_p<%wvHtE8O4~mHWS?zFKFI++KhNXi>ouVw6!)463@u5O3SDMw_#ZjS`Pu z#ckZpG`3lWp>|*`ax_h$ZAU8|Z)m5@ISg)_HLJvPx|r1NKOfMfXd(5S>Ok`kcp!-< zL1&pxXYkV*7*6*lFW`>`bLnX3=s~Ag=wBQS9f_?D<%8=Rp*8Ay$b{iXfW9GmRo$dd zH<0N58l4Ce*Ab&QLb^echiv2M!A;79N`^!u2bOS=06RUN?2Acp?*)2ElJ;X#9et6& zTfB^W{dJ6-W6QOuV{FD3^F_k%5OozXpR`}c-S?Pwj~#W~+x?8}iwn%m$#Ho+?iIjw zJUU0jwMc)&V__snbwH4sL?^8wTDvfUFeXTwC0ffwXO#$T5Sapz;6%kjuS=HO!dQ8rlnVoqr&-1+R%-{e1_6L9o6qASv^tpDB+jd;L z`D1$xgyS+D}z zcdUwzOK7LVuIH5n`sXjU%%>1XhmIy(COKw)gQ>CF1j5tNjYffvq7=q-%l4k>7VN#C z<`bO26&(pQXfrwfiY<_y_exe})gnWFN1Ix(5oP7_rBLAab0 zXxX%bWt*J*!u}3Z#xn*>)8VVF+3KR_Z(9`=SDmd3=uUNM$NIiz&((@_Xk`F(9yWl~ z)HnxP!Kv7x1q(2V50ZGFj8AomjwyU7(Cpf~rdtgxx5NaO8SmI`srb|`1^FaMvHxu8 zj?*OZ5j*DCak<6@-L~)VmF%6s@!S-qaYwen#{xZ>6B!CyzPBs&&Ks*q+@%=DLF(QD zohMxC+XU6J5?G~Y3)W6luC|ipKB`zHTZuFq2wcsaqtBY>SIT+QG>vuHpr7iv4_4{Q zg{JHxr!242j?Ip*U!hvyRC3FfTlTi|vXbc#=E-eh_uNI>+1x66zCty(#fwU*hu(;c zS2Bf1SWe<|f$p=~D+)SRP~ZdLR8{1#f5J{_$VBuWVO7T(z7)80)I1AzV3n=F;;W#n zOnHCSb$o?Iwn>>ZL;0#E9}$V-8y(-`JMufaTWe0Rwde)T#=byO#-NgXbXL5YU$P&t z``D@~hJ4v>%93K3IpVylG5&dj)rvQfb0ai%hQ!d!uV45rPxINnpP?TjolU+*XLj^8 zdeXg9TDos4kxln^Ya7jKltZyQp{4^2WCvbj_>~HNo#Qo?AjPqn51WoO$1b#@7j3*3 zmv9^Hc#C#3VM^S<+x%j3yh9(MRvDhf)XLyqoc=eE#Rx(7lGG?y30l63n-PIg&eAg$ zdnrdq91UvcvdX20r%^6}9Ny!Oq+a)opZ4rI*K_QDc=n&;sbL(qqMSAvNp_vtU(s`b ziNA3Br}^J8{dnXMGk+?mDT14&nIzJxYBh4hzQABp1~YF?}fx4Ch0BY z4U1ClQ?LZj2D2mm1D)C-KKT(Ha;-gyz7pC?B|(@o6fdK4O@yBHLJhJ|rb0Q$tc?oE zAi_d10}Ca)OCpIw^waP&Jd9vSh_WFQWIlXa@KKd*C^V>NOVryU!EE!)Ca{3TDBue+ zmz`@!D&^x<*8o5ZFtNlqw>gA;Kq25QFs}4}7r% literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/BlockSponge.class b/bin/main/net/minecraft/src/BlockSponge.class new file mode 100644 index 0000000000000000000000000000000000000000..4eb198891393821539e3600673984adef340a220 GIT binary patch literal 1413 zcmaKr+fEZv6o&s@+L>t`N<{_~S`kGp2RSGpT4OvUn$apz8nB5MPTK)0r9*}R^`1vD z;aUqt%OVj6$y+t2yuP^U)K_g4QGvdHY!OhdRqIvnx0&WM)BpF^82igIj~~7?s(OeSN@z^3o8%p>grm_ac{3# zyomy;%26XU>gYPJBjl#9c)qSobv|XbE`_K-N z98FEV#nCqmMPTrq^wVO{n37~lFJrwy3i@!ID<nwo{BWPU7)A2qvWFefG)&$Xnf-0=r`!!aD+W3LoQw1 zE4dU~xZG)SnGU)1H@Jj&rVcRE3g=4;oKG!q4*!I6oFnuT!vHZzxfxudy}@;!@h3Rl o0;d?lDTZ*0A)I0erx?On3gIk-aIS`MhW`VnH-s}!91&dk4cS5&*Z=?k literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/BlockStairs.class b/bin/main/net/minecraft/src/BlockStairs.class new file mode 100644 index 0000000000000000000000000000000000000000..9a853329a7f87d6f8626969ba3ae27c6b2d54ea7 GIT binary patch literal 8053 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 literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/BlockStep.class b/bin/main/net/minecraft/src/BlockStep.class new file mode 100644 index 0000000000000000000000000000000000000000..4d3a1fc30b495ad82052eda345883d9074099806 GIT binary patch literal 2165 zcma)7-%}e^6#j0qn0k9A12psWAHBgX5EblVknv-6drtbmU?0x%Zy)o%4O?-0;^wzx@ti8ebWR2#nNi zzi{Z(?TTkT_6tp~Qdp|Fl_#6N-7ugD3|`_O5Z{xIThAJ{fY=p?J#gxdKQEwXOS`#k z0j=m(?KqOSV!#v_zKFDD`L^d+H4`axGr%LDKxXxF&$$Gm=rv)WPhdP-D!s`!w;hMT zRTDa5+C#EVa64$?Eer{ynzpZ~F1f9GwMjnN74?_fmTn^^G8h%;rrWBsf8duJR>kq3 zvAk?4*CDIInq$B!)m(2K?%Cd!wO6A!eXDN8s%=|j%6)jK`3DY@j$Vc&8$dMespU;k z-%?=S6}YnLTa_nkRwD!&+z)wd+28st&tCD|!%e5kyc!E-oar=K`!_AS*xKW1G@E0y z(r$g-Capc!Q-v1~tolB0uV*_HwBvfU>RgF`Qqd?TP2532AldXS$J=!3`;z8RhsZNg zI^6}R0k3<(G94^4EZVKB*u`qqt_oaxV_C9eQM_+*s%H|ok2wP$cAQ+5(!>LNB#=1M ztwj77Cy8Roaha417fdYTrhu_0XS}p5QHv&)@rdm_8=M`-KUjBt=P`%EkN~CJt_=Rz z#3!%iS$11$3gS+6*>f8WNoOEiTK(F3Y86_(Q!8v(^{RU~CwtX*@mQeWv+GscTWqeo z-l0`fx^S$U2X3oYm91W~H6oG=)z@*CmZq$G zv~+s%d4(ze|C&10v8jBHVLg9P zU#W08P`Eo#IIW+eypz_o7cjIVOrJY_4kLPm8)=;euZEQ5zv2rGoT;tv)u9%BJ*_E4 ycZO=r@}=BAr*65;uS|YlvLKexR=3<%x7;3)@;PHb=WMe>Z<-HeBFBL)=wdFp?(a0@?jpcSPx0={ldv4UtG(_y9hX zcuxrurWdErd-}Y;=RK#dZ_h6PcCadtBUB@m+T9>hej+bYyO;R(ei-}LXK5TMfjpry zz(E+^4Wc03BNWzLcfCc(AH*GHz(7&JB+UQrJeH|S0vTGcFv<-HNAVEeV5ehZ2qg;z zj1w9h^q*G`QS$gSC;e_)CFimoD#D}}`!Z}v4(9rEGoM}tJwojd-1h}IJmRfPwg}{Y z$ZdiVbec(gbE7(h@|x>i$y;gn(;&1@Wz>ng&bn*x%nKH(SR@qvxXrOWeW8T8L3xhu zS+Y<^nIPKwAGl3D`!77fJd68@uZ{wJy3+T!o7#&8h*A2saNj~JaP81KAe?;w$Weysv Wqk-ZNr1(OLFQi~(BSS7{oh$D&-;zuK literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/BlockTNT.class b/bin/main/net/minecraft/src/BlockTNT.class new file mode 100644 index 0000000000000000000000000000000000000000..2ba11d115ed61dfe0e4284b387232369afad1885 GIT binary patch literal 1703 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 literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/BlockWorkbench.class b/bin/main/net/minecraft/src/BlockWorkbench.class new file mode 100644 index 0000000000000000000000000000000000000000..8f718df677f15a8d0569f0208c34ee3f7d0d7ed5 GIT binary patch literal 1100 zcmaJ=%Wl(95Ir|>;>I|SHl-zTDQ$Tr0UG+qDyRrhTUn$CDJ4j(xUo%Z;@Xw#hUQn; zlwCG#sGvwJ_y9f%G1rcwR8863xpO^pX3m-MpTEC;16aqJj2Od$YX#K<+qDdze+a5a zzEOSdct+=~=XctcYwXLA7-p}CVn{x*T|3xdkV<;FMdpQPS}CM(O@_iyyqvhh1IxF$ zqe4ZR5)<*iae$n@@>IIcTMX=cXzFm;Mlhq zn9h)G5a(CN2W`vWM~9qx7rzi<_PNPSU75gJ3f8E~Vs!w(0|WkPn(jKJ=a zrX=Fi(ij|?q+`}~eVlBYZeRz!*ADMle!cuo!9A2@+-I1-JdM#<6=hUNUei7z3cca7 zY`-CC<0Y{O<0wU~L`tnjW-T)7k*U#q$50q8O+qV8@7Oo2EnAE&e{l}WA9%lk?4zW8M*0kM@pCNnQPdKr$ZGN_6cN!!N*L+= zS4xbBGE%lSEL$6tU7`s3DYNO^rs&}|?hJa^BbyW-3yE{wl>}-;N(o!bkPg`p pc_RuNBFlvQAgnCoAyE@VWIUpq&``!Q-K6kV#bZKYSP8LL{{ir;^fUkf literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/CanvasCrashReport.class b/bin/main/net/minecraft/src/CanvasCrashReport.class new file mode 100644 index 0000000000000000000000000000000000000000..0e7cab743ef76f0b0402459769d3845fa04f4925 GIT binary patch literal 501 zcma)3O-sW-5PjRPv}x=|)K;ywf(U632Ekj!OGPL|5i12xvQ4*irAcIyR`6eWv7q1& z@JERgTSVx^%gnynd2i>haJVk@r`&4 zRHPxrP<-GsZu6&TdC!nJmA;J57*bZZ*{9SAhC)XYIRk0v3`wim*I+Q1zua@_2|tv9 zuOp8_+*f2sTU`>+!B93}Vx6HBis)L2kx)tud-7Q@R4r#!rM;kS8mPpy0?{sMC~xX5 zNJWR7T}{1#P`7+AAsN#NTt4Y@C1boSrlPS784jI)ETc_EXIvdKur7n%3#Q5y7c$na ztZeQm9vS=OEJ-^DWpaxQMUBusofDKBtvRx-cjWJCwK>*aQThuuUZ^F3Dn%11iu4`G eqKq8s(6L38%0dR)*dauMsA2c#u{}Zw)V~2f$8Z4v literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/CanvasIsomPreview.class b/bin/main/net/minecraft/src/CanvasIsomPreview.class new file mode 100644 index 0000000000000000000000000000000000000000..7ee12cfdfd85af5ebae4d9bed941d00aae579f24 GIT binary patch literal 11844 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 DwiBIK literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/CanvasMojangLogo.class b/bin/main/net/minecraft/src/CanvasMojangLogo.class new file mode 100644 index 0000000000000000000000000000000000000000..b2757c17d7ac4e9e06ca477063705d286f2cadae GIT binary patch literal 1225 zcmah|+fEZv6kVsZ3=9L5VvA5jsEX~N9T8Ntc%xj>qzIu3(Fc=5duRvSnPz4R#EJCJfmS+qU`WJ&v2cxk>}O{ zch~KGZdHqR)m9K@7~JOv+~9{^U}gx{$;L2I>{!eOuL@(SwYMi6Q7K3%$I!iKTBi4m zp(~x)rm(zS5h}XSr$IrFg8oZEY;sG~^A2}wTcT+@UJnKt`i*MKG-Tau)2gZ%!mxta z8Mr#(HS%@tx*Dz^&d^sC-j;CfmQxl~Bz=n1cPn|0X;pKXQ@CQI!Gotx{QflFkI6RLAQeI46zPv%VtAZu4!8; zCNL#gNijsyg+gXqrI?!I!eu5yUN#TQWaVOCtdSS+bKQcN&(~kda{n6t+$i zXtWwKNWl!luwPsDwXt$k7EOIEH-kixCO0jQA#tvYHHSBAX4&B1U&V90RPcgfsN;54O2ZQJ480YHANq44%V@YZ)c`H2vo20`8JEaas>q7$l7%iF=r(O!rBOBJ_vcnL;u> zy2MRWqE}*lA7D-CGbea3qkqA;-o~RyUH;n0Me3F4Bx~c@&M|q1d_)6&_hS^9#1zKQ TAxH%XfD|EEmKCw$$F2SarePoJ literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/ChatLine.class b/bin/main/net/minecraft/src/ChatLine.class new file mode 100644 index 0000000000000000000000000000000000000000..cca44a76b7dc3072c07da601e880b25a4e180104 GIT binary patch literal 435 zcmZ`#O;5r=5Pj2D3bj~8@q>8r2AJ5Gc++@kVq!w%fZ@KB6_!9twp;#}2V&yEAK;HN z&Z5SHaSt=|-tO$YdG8;uZvd{)^5GC#nKbc2Wir*`$;5?D<76sKj~O2xVRt50BA$zE z68A?lnHqw>kVPRTlF;b=-VTgb+2oo~FPCFsWRjPek(xmFgvyP|l({7|+kaa+LxPv& zV;R6jJwy#V1h?H8*1+>aY@uSSMhG8OLS(f)l#7wnk76|6$jDPM9}2B3{w6&$RR!U+ z_y2+{)>{dENeBjcsZ)8U?05Aa11{`#IOEwaJLYg^DO|AysBSW`*nsgiqdvcII7i(V wgx&Ks7w#H+&rCVk=h%S9kzM8Hn%$CH512XpYD1GNdmaj2xVN0+Re#mH+?% literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/Chunk.class b/bin/main/net/minecraft/src/Chunk.class new file mode 100644 index 0000000000000000000000000000000000000000..eb239c71b829882d733061379ba3fc27ca350c05 GIT binary patch literal 11800 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 ajCWLQM5JS-4Jdp{s+Wt`+l#$LocbT*Uayz{ literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/ChunkCache.class b/bin/main/net/minecraft/src/ChunkCache.class new file mode 100644 index 0000000000000000000000000000000000000000..bda7284bd7a7b06926d8fdf70d99d617f8c49c53 GIT binary patch literal 3524 zcmbtWPi!339sb_#?9R^YBzBA^vAutQq=k4*ablb$ae_;5V!W-LklHvjDaGU6!QObi z8+OORNn0p1r%J%72P&jOiR44ms*MsC^-ys^t>~F!#g$V}Jw++*_uiYGbrnadT1%ey z&CGkh-}n3X&3^v%pZ*MB6mOV_31sVjFuYo=`{kzhYB1btmWL;n*Xk=1UU}I!VF+|z z@~(KpHLt!je0K4YUk*$p1@iZwD?L|hlvhrc%YLgRkSt3xFA0cJ`{sgxt)8B2HodC? znTr>v?>D2|9~Vfy-e}e;bScok!?yGCEw?34RO{7XTwwpf2kt7VzrlF{W1>;3@}?SAHpl7mOFpRbqv zKt(dyY^*9U(P%U)Oib=zsWi9))pp!n)2zmswbezxIp;0be1V?nM%k;)d(Eo64<8!A za+TKd53-~R$ov>ryyjuOjOgVly^QMRh+c|%d0H<=^>R!gA&(ylSK8S%8+hfF8SipP z!)BbS?xhNA!O%*BB^yN?H9=cDBuRzo;27w?bNCdaY+IVE*8J1;pc=464k(K|#Ms$% zT)KP4!8jOgly=3bvx&r|`DS%#IjHOYRF)?#7W6p>6Ci`$nta{a6owePIBBy1CLKI4 zNlQc1a^t*LTVpQ?lpK5q-{qwI$D7mZfq*H!To^3Hzuxx=;^M0*Hj%(t2Tx(t!a2;E z_}-3bQv4mv;YERTEAXn#*=l`BcEe7?pmraZ2G2Wq2`M^Wl*3p$C7)eza8cO_s&gkT64ZR)-rO%Va5-< ziWhkD{HqQsGGU#UUf{EbYXXlxsH`*L7RGW3H4`fW1NRSFdzXV%)H%b<4hM9HE@^L6 zsk!XnHE^S?Qq!8QwpgHnog}D}&cMN%bg@gFX`2(+Q*EhDXBy2_uQsu^$inFEzhE=t zR~=l#j|7}*>+EIkwKZSwpx8(aoNcT%%l;(WT%b#9gH+omrO;A67!dyxFc6bUM6r%Z z9a1YLNUhW=u2PqFql?#WKs0#9;nTMYf5e``&>i#^vgWlr*jsQ7x%RmU^I9?Gn!H*C zH&wWey%l4@wFvqMKEpul4l?p_(cZuj`M8+gz^Ys=@A5jQO#SB6~MO>ZJMdp#}O zv}@hi`ulZT@L}r4*5`j9i8v1MS`29#Y;G1}icMJ=U^Q2JdAkz_3XpktbP=Ux$Xox7G&=W*Sg}y~((r+105~b+j zWejt*a0(}Ih{(na2631ujS-%C1jZK0rA-JP6zxCY9%m+hS0$fQtdoyV=uvta%YJ}F z{AQMMd?Z1}yrvRYG;#{{Rf-9fPh-SQjAXjI-pJ;7*~F2XJgu{qCsSa6(PU^d%cyhA z)x+o~rvq#dnVoU%Ey~Uqvy)QU8ACfeV~j^;r=MqZb`CJNIy*8#Hds=g8N=}~iub}O zhW=~XCw@;uF;(o{st}Jck&mO7Bsw&QBAP=H&7p|qP)O5`X!b@l1-^}ELvnK@CkyP{ z!pTA=o7=?cL%)l>CspuID6a**FY@X{UY*FR6M7X=)k6>GLJyWSZ){>p)5p(XC$Im^^vwJk|H$>se2lML<9)oNLpxJU zxQSbM;Wp-fh20W#YwK1EM$y@ti~pBCB!L3e?jfhp;Q#MUDHk8fa#jW zq?^((MQCYg5!xEsgvp!RTX~?ni*4I`8$VzJyNM5wjLWst--)Qdld8WHBW|+O-{IL! zymGUf6j@0mqq&p zcfHTteu!z@z*%fy7Qf-C-{M6uRrnO=@fkmcf91#TZ=Cio__6yEui#%;R8@SJ8YFur z)EA;~f{4NiA`10|s6g#7$ndRjf<9#}^(=kC{TfZtzSf*CsWlqSk(XAV1+v!aQ)7Hu zeb%{Z^^p@f3i}>Th%HPi-Dzu%pnKc4x7dpb%8~p768A75?jm-WLGU}Pd+h($A-_`{ ztwT$UdYNidr4C)94%Mh9s~q_HwgDe&XOXr0-*sq-e$=N7*XdI#c)mRhhHLy1)-6;w zXHbNqcO@MAKF;V1tF7Rq}j literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/ChunkLoader.class b/bin/main/net/minecraft/src/ChunkLoader.class new file mode 100644 index 0000000000000000000000000000000000000000..eee1584a4f96a395688e31eef92d8b8404304a3f GIT binary patch literal 7355 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 literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/ChunkProviderGenerate.class b/bin/main/net/minecraft/src/ChunkProviderGenerate.class new file mode 100644 index 0000000000000000000000000000000000000000..41964f1fb98ac8f1992c3eefd6c5cc028b39dbe1 GIT binary patch literal 14635 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 WCx~CGeKNy@$2Fnw3mWm@m;VK6#|z>B literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/ClippingHelper.class b/bin/main/net/minecraft/src/ClippingHelper.class new file mode 100644 index 0000000000000000000000000000000000000000..54788d692a3f110f76b4035986bb98ab0a156461 GIT binary patch literal 1239 zcmb7DOHUI~7(KT$ouTct6cMbbynN8s#MUP<8Wuu`B%p~H7P16WUNZ5ocg=9U_cQJSt;^}1!R-!&_B(@`M{WHYCGRxXr47 zw7fjaDRrmjeX(lxg6=xjmO#v__f~7GW~F7BPY%i%BQ!WDD7P)!a;LabzOW=9Pg9YE zgkB9PXeyKh1deHl2kf{86+K>UP(vbMISonl&~2Wr+-p`>Oy{A#QZcEUuNit}Np~!7 z92RBwvDFY5pYPWFErE>HxKrDjvu6+bP2^|%r|^h-ZRyTs0WlNMs{vdOU^0N40&#B| z=lRGi^4)MEZ!G&=Or-=e*FdUf1Ryi}n(w=l9{YvZ>-=c3IeMKs_CpJSam)nI+BOJub z?OgnDq?Fr6=J^ZpERyBa|IjT(x}$cv#G%8#{e~l5hhH}#eni5fhMoPT4&B54@H&!p z_;u5@BHdBDKeqX|-&CaQ@arm!OWRM=Vj!JWUhYrI+q`QDUOony3GmlbkP=^@iCrYc zcP7Ql#se>kVlT{w$3~bP=7nsGj8P^VC*vAqXUSBbog+*5>^xZtlK6%Tm|&RmzMJ$5 Piufr$c`+}r5<~GfteyI0 literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/ClippingHelperImplementation.class b/bin/main/net/minecraft/src/ClippingHelperImplementation.class new file mode 100644 index 0000000000000000000000000000000000000000..d438e75a95ea9a27ffa7953cf61f97da035d78e5 GIT binary patch literal 3551 zcmai0TXPge6#iy+E_<0I6Ce>n2#FHdO+t1Pu7Pk%V3URA5*C9H)EbsanAGfUoNR*S zFW||4K>4KdWT|LEVU;hwQRSEiPIv4V0G6bu(A9>$!qc zHygg6BD$*edzQ0qTMwcE>BVpwt!lF3*fqOxT0%UNotGd_Q&J&C8(3$c#>S( zbSO}1s6^^qS*zZ)+#BXyhcen$s#i>B-gIr&_naxj(UHO%*rj2oguYi(o++Jk9ExK} z>FB|337r+!G8U4~ z>}%ye$pqN1;{X#tX8B7<*6ME6bnK5PT`jY)P$*{SQy9iU4I>hIUrmo>zwZ}}j#12^Ot8^>&}toAG6k{arZ zp>NQ;fulF6?c;4fYdh1Qv!SP$>`Z^g2Fdd0P8r4qF0g=J`k&oEi3f)ReKc^550vAq z6VJ1`@%%FD$X-VyL0C`mdPahGRlloKcaDb3GMnRvlbm6=n9swL(eO4Au7u&V17WzK z@&F#6ipIB#cr}cth^F|K<)@?Z9U@+1AzE|xiAeUe4w^9=q;L3hjUfL-2*C6A0Yv@+ zKnNfJ0tE~&1s|46;3EVQ2neBpfCxk|nzG<3a0sD-fDkeWh(HI!%Y)Kn+44Ftl2IvA zEmEZYejtUBWLj_xE(XU4)ZiF_8XO~3Bh`e#<=_~h9vmdlgM);6q?4hinK))X>U=aqg9c%CJdp7j}a)sF#<(6MyN=86NXU4#|RbSAb}zrBvhoM z2}CHuK>|fMNT3J@5sJ*m$Jt#`_D)1Oo?m3=pPcLlDEkFf)&eg(*k!{LwM-=;CbMEM z8y<3*4iULMkWJiTtsG_WZWwY#8HBfmLAYBO$n7C>2Bn!n&ig@1gdq`lBMiyF9bsr= zZpNT+1~tmyC$6?I2yY96aJMjUl~m54H8Ut&S}nprmEmJ);}MEf;EqtVi;d7YMIuV! z%amxP5bhQV;clVeIwgoA`~m#~$LVLXhn@qw>0!}}o!CP^mVFqZXTbzL1}@O6<~n)a zqvyaQdJz1AL8%w}r8_tvJwitM4cXWLhGO?H9D9tB*k3ppAH!&T9l7{3GwL8_)kzf9GA^pixTLP4q&~!D^%GoCH*i(`5!ck8Fc&^< P)EE3AAYs9Kz})#4<#843 literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/CompressedStreamTools.class b/bin/main/net/minecraft/src/CompressedStreamTools.class new file mode 100644 index 0000000000000000000000000000000000000000..1609e2b305fd533b4209358347e70de99404f1a7 GIT binary patch literal 2134 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 A0{{R3 literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/CraftingRecipe.class b/bin/main/net/minecraft/src/CraftingRecipe.class new file mode 100644 index 0000000000000000000000000000000000000000..f71334d5195d3889eac6cf8b63120a2cf4a88c87 GIT binary patch literal 1659 zcmaJ>T~8ZF6g}hpvYn+6@H$}ZgaAoxli-FpCLcg)sUkTgtrQ}vf+}TMFL)C$(X!B} zFI6O@N>$qTC=XSmO1$upN+6_G$`8nI=nttXl=RGwOA<*2d|dX*XJ1+A4^z8Bp0E$9MWcik0Dqk+$^}R^I z_%>)nO#x9CFq?j`(&T0buZ4ai@LSPM_r5@4kUyH-n z1d{4>y+PQCpcO<@0>j06eX;)Di=}x1eP+Gkr=j7vjSh4RXvNZe3K?WAI0F6eNo?Z; zOlAyNN&T}F1o~{)Fs0XT!%$wqhNZkyHj+rm=xG~i924lAC5c~bt}XfDZFgza7wDc{ z_uSQaHw@&uy{SjdU_)T=9nHMWJE_pO-0*@jW6E4qrb<%R+{kMxi6};Kv0hq8vz+rb zMo|$+drjZFcT*lBrwrHY3#A1r6!T1R+Vu$T$vl^osVOtA%w=V+2-sfeyODn@R+3H2 zeD7%CwUCnbt2VAlR#O{N`nljcij%>l6o;Z36jiF$vEoOn4|yUMjYE^3Ti*;l|9T*q z?0K7-Q8|q`&2BYLvVnxuhh9Re6I*H%TPj0)Tq;Rx@J0td;JcHnpW=JKQ278|t z46XFeGQEhs59uXhugDT*`9mlXOJ}@{k#=d%iJ&t!txfJ=Oq<%lKzSrz&<}9#F${fI zF0}s^+nOktlcpwo43+b%7N~LVAdsVf7AwS=QahSdMjOaDlNY zoQmr&tK3KRPsg|UF=GO%ev7ph*@=dah}s475QaG9ABAlv{vj&~IfJSfu}riyPd(CV z#tt58HFF1{W8@n(%P|X$S~5{fIo1<=?j)b!x?{=WpJLKU%9fs@>gbOt!(RO49IK%> z;!v)6XS9~uK}Log>y5n;$8b!OVJGzq3~hJY6kPxM>gR1kI0l{X_1C;i#iKC9UWQrs z8R~f!z3j4|{f$$Z33hs$x_pImXtLWaGWCFGACjpbQH%LnR{b6E^{CAkdv5b3J;j&w zO2p8~-47UJUW3X!z(sl{voCXcOwL#@?%)!=BrExbc}$*?T=&8{Nheu*1Gh_1iU zNzRjGdmNYB^K*mva>}xQBJ(u~8sKazbL9XN&lpL>Q=z8vYTQLu-8kwZ+wMZ(V@$Vk gt2`s;I8Cq|pL|m?`6kv>jAg4+Z7hLL;!~gg3#c9-?f?J) literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/EffectRenderer.class b/bin/main/net/minecraft/src/EffectRenderer.class new file mode 100644 index 0000000000000000000000000000000000000000..b19d657075c2ef808b488ca0c4971d561f2f618f GIT binary patch literal 5379 zcmZ`-3t$x06+Lfvc4v1p2_$hzLN-wlGznlJKm-Ee7b2+v5itC$I&6kz!e%$lPWV`@ zzqGMcs3K7|$;O1i?0a+HefQmW z?z#89@wty5I|^V1{;k3za7MzgtJ}?l5w-M9c6G{%RxjDK$%xu3jYO+q8I}q~V04?l zRj-cgiCFao8{0T45ZIQq;;noWC}|#UWQ`oHquQqJ&H4_*N(tm|Xm-qW+Gf1E*-Y7T z*h()$Pe!ofI^M3B_+vrj``=B3Dd3@m|HP|A=jM|28OIq*}^pz zCtHmWyvWy(ivj^}MP-YM(**K{dLM+q7!4`{DvC1@IeT+`3ZV%3QmIr!4m8;-)8K<& z_DA)AesbnSJ`@W%QC&gF{)yUK+!3}s-jw;eE48CmI6V& zwbfmo+Z`z;OA@we?`T|GSJ@K6bj(ySLtyN1vl%@NwK!KG6f^9`wGOGA;56l+5VJMR z0k`Mnq5|Oxmmyh%t*cxw5E%)fj2DEUv!hkF4cF+U!61)v zlVXK#*=96uFtp{T#;>livL%R>Sgm4}K=G;I({K^U?i?#=>$aIptkbvAp+;pv)2O$U z#WR2q*5hIo8;H_y8_RTi^HL+;VOSbIjY|kfG)cFVipI)DIq@nVG+8QroXnOaLv8suP`hAnbX>7YiD*{SiCyfVI-*aI1MCe(#!`Kuakm*mdpB+G8F^ljY4g`Ik9 zN>YEfhCR5GfD9$AK*dO$&9>d>JTm!j!Ce}@?qonK&9e%O;Fenk(j|=SFVxU5pj7K#bz(JQLj&2i6gFD_7L>~^TI5cAI zb(A$ch9jK3QLd7bX9dyPFalhTcAbCz+dS;~sQA9XxZ&(@QEf0|JYr*wYeP7SAIO96 zNrAdk@4mr#PPwYwsK5_3Oa)ON>3ZOLmyQU7S&#v4sc8>@rb^I=nlkT&7mmr}^mz?0 z;23wGV0twqJDnqu=QE2(AAX|YB`0;;_3f+@eRxH~PhEkTa0IVucs--RGSG*gY4~|Y z!x6lt;TIVVrhgxPso_@{jrB@>v-IOAey!m*c$a5>duQA>JK{T942FY;nLOzlD@VX3 zbB5I^^GkN`k$Llb4S$d}iqbZW3>8=LfHxM=R4xx49?CXjY(`maPpim2ebTi=#h++n z@OtKo7j>F(-rhoZANlgsaQOv=vV*agI85Xlv3-#u7H->c}UN=#kf z$1)O?+>eXoDELmoCrq}Ds3v9lZn?HtwbvcO_*4u7AZx(B7ZOL=*kh{oa{CC^*=97d~HovK!gLn zef^gY#%mK<4RSIM)nwIFhms3XLs+NtUN!^U8MT|p|64H&`!E~#@bY{=>Ub{I^LUw$ zr?Cjfuo$oKR{I7Tahwr8!KdQZ-Q@--!&Nbn@%{$G$DlFZE#zvR zC}O-@81FI>z+Uzgdh}1O+(Jez#Jkwfo}b>mhP&BQaWi(&rz!^j9$w$R$zG7YG~r&{ zM*h7?Pl*~os!otD_mN4Olapsd?dO()PEM}$I1l|e$&akj|3i_ATf|u(VvJ0l`!fvV z;sGuQEcew*bjvaUT_A&`cx!zxuIW46B8ce}jg5JXPxY&Vlsp~}sMt%>ZVPwyR(Sv5f_$|U1X4v);3WX(U zCSj~1j8hnf{e;5rK*6H&F-nEp^0@!7^a*?$-*IyaJLronFXc`}mE|H|Iv?TAzbhci z0h9m4;10&nI&dj}b%MWrDl##t@V3r)gIj7B;0mpSPwRrc8AsO z)9`pS?C(xSXNMx);Xu~AR@NO3X1(X}6gj$1E>RpR){66rL#5p@PLCC9k#r}o%U8o<;)-ta)brEkUTkLkmNT{QV^5<`HF$=-JclurGI>Z= zCXakn^fB9+JF+tS#DCHH5rX{hLnpjH!jIi3dKPl)dCYZr;$))e3;TA9@iL0OnmPW0 zXJ@IU-5egt|e2hW2~GoFFxqS-yY&5_dey`+V(oz*IZ-i?F*hcQtMy;2Utqh{Qv*} literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/Entity.class b/bin/main/net/minecraft/src/Entity.class new file mode 100644 index 0000000000000000000000000000000000000000..c4a8e4ae31d8c7ce7856c9f24d28c8eb03364e32 GIT binary patch literal 19184 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 literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/EntityAnimal.class b/bin/main/net/minecraft/src/EntityAnimal.class new file mode 100644 index 0000000000000000000000000000000000000000..afb6fb26d3e8b711d4195d89042e8f50c96d474b GIT binary patch literal 1409 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 GAN>QN(YVq8 literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/EntityCreature.class b/bin/main/net/minecraft/src/EntityCreature.class new file mode 100644 index 0000000000000000000000000000000000000000..0dffec88bca982c1df3a2ce83b6c3d5b841d40b4 GIT binary patch literal 4522 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 T`VrX*j`aLRcTy0ZWpnpmX3C)p literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/EntityFX.class b/bin/main/net/minecraft/src/EntityFX.class new file mode 100644 index 0000000000000000000000000000000000000000..2e5d6070588b6e97d916b9533eb1d5dbfdf6f8e0 GIT binary patch literal 3920 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 P@mo9`z$m=uMZNzIT=q7N literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/EntityFlameFX.class b/bin/main/net/minecraft/src/EntityFlameFX.class new file mode 100644 index 0000000000000000000000000000000000000000..fa48b51da7d5734cfbef3cfc18afceaee0a2021f GIT binary patch literal 2252 zcmZ`)ZF3V<6n?f%laOB88u}7m3p8N5Eqw`4z*@>n8w6V@Z7HRqvQ0K^+GMwGH?`m^ zii|qyH=RKpXZ!=sFk=eih~IVeKj;@nzxW4q9G|nBV9~Of%{}*==bn3>bI!f{!{6V0 z2jCFi51~p!t7W>~g`8!k9V6>@FFWb(Vav_A*Hd|;V5X)+2x!>$SkSbFNLG*&X(MlH z&{7(LPv@+hdtAfb#K`{_UbdZlrhmwL+NU%GPTLtXf@;(%gb>~Y4Vx9}P_H3Wu-%+( zaSv@MIC$&EFDDqd0JbPJt^-^VU9&>VI^B%uwkmAHcJARARz^c~WWiW5x{Gcu-#t!^ zUFeTsCt5?;rJ>=!Hig~TqhXU}uDYqbZMYh$6YZ(Mz{rn3iSxL^J_H%5v3hb&N_SSw zrxZ?Oh@LF_bUwF4wU^11!WmiBSXnj6tP~ydtd%iWHPnx=gU%NVv!*j?%t|9fM{IV) zl;PxLURDO&`P{OGJsY&eBTd)OlC2m{FDtkK)bAi4lJti|{?O+SOhk<=?HfqyJb9vd!=MC3(`cvN1J|+2?R=6UGcvv3hE->horW#ijE`dGW zx7h} zJ&Ey_!aLG>wO!s!x}Orzd3!f8~dP2N;-+LYil zwuT+$AsgMh@L~E`T`cezeQ;yFcx@|Tzpm?Qri29FjuN``M)cmt!A2ZgY(#(B{wQ>< zgaJKJ!b!cMr-b3VBv6HC_}_=k{11^*7_B7O#j9ZewU~rLp0-=0`vL0l84-8!1lAD6 zx7dQSTy<3vf(JNEYPr1M-;a46(m17vCrwaN+&9O! zp1W#t1pK7qKGCvQl6)`Uj?Z!!xNRK`3;+G9CEOBTh|Vlz7fNW;JL3CV0xdNy!IscH zJohits24>ueYapQV(7)zbu5w(StQBgd5=YsEP@`3BwnB-ZIQ$UO2Q|J7b(?v(ikOS zmc%uVA@0#ejzO{x--Rp?*xx^Wh&&8xS ze!2fbb5)3tEau8#{zkPF@h!>jdOqCZ6(=qI@>xqzG*mwd+reQ~xe!Re0|osV&Zx literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/EntityGiant.class b/bin/main/net/minecraft/src/EntityGiant.class new file mode 100644 index 0000000000000000000000000000000000000000..237a1dd94b54a02b9cef127ccdbc46b08d4e7ecc GIT binary patch literal 919 zcmZ`%TTc@~6#fRbv|Wa_RHYzA1aIx4tbq3-5RElWP)uqdK2F_JFyl+@c9bvcp=fHi8`j-7zE=9^ ztrEVD!(y1dEaY9_ceM-|Mpl)t^cq9Hu=#)RP7t;mrQ$Y&^*U%s8^cI)#4wV;C_~!q z1U2_K=+u;4-1l2aFpP1ekYu~i)MwGBc6t7bHETu^b6>YllBD`S%3{^;X4ve*6xEl*-RhfPG-4} zYtE+=Ol54Zk0~SOv$MN>8PGF di2PSCMfD~le+n;1GE=5dB59bct5J=Ye*q91zHI;i literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/EntityItem.class b/bin/main/net/minecraft/src/EntityItem.class new file mode 100644 index 0000000000000000000000000000000000000000..59dfa353595c9db5b8e19cae614b665438bf7a7c GIT binary patch literal 5844 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 literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/EntityLavaFX.class b/bin/main/net/minecraft/src/EntityLavaFX.class new file mode 100644 index 0000000000000000000000000000000000000000..4ecb8ef6d65182f400cc314d88a15d22097d517b GIT binary patch literal 2291 zcmaJ?U2_v<6n-`hNhohio7R2+0z!c_g@%^$A=S3f5=2@kZ7HRqvQ4%jZL%9T+fw{i zw0?}h_;pd8Vf4y7W}G3waN(tl4)`0qa>nt(OD}XBpR=1l&|+qG&&fIGea|`1dER$_ z{QLHI0J`v55Izm-O~Z+0)25NI^=T)Tw-d2LrjvFq4C?cGd?E=;lUa96q|F>nb-&|R<^qm>#;G24H|0x?NfLHn>4I6jRhy3v2;g6MWi+E@40*T zp8x5=yZ0o+R)uW{Xi&K#QU^10hB#UkqT;A3IS$)~VTxzF!VdAQDtShXq}XE$J0Du% zg6{7rX4<8&0)ar^PGZ1cCHCUUAodY0xA2T^reZ_7b53DDx;Z9k*~+>#d*CfCEqxK_ z{egmtBs`#S5dGYsRLGFNa3CdPJ|gZz3UM6fPNvnLN#|&GF+HO2tgNaptr{afbGC8B zOd1OsRu7VM$L6wAhCQZF32DNE7TGhd+iCeAZ%G%TTDCrfkGNuiG6OnwN?6 z$mWG~dZNn{doA<%pE)`{QVU4KjJdQahfe4wE+Yt0+pc*)R6G4S_4 ze)^ebLlC;8a9P+(G!NU>oS6*t{xUs%mR@Ebb@asSke(}&v2xU!vlB)gt=QjGn%Zs(RGU7EmR6ou}7{ z-r(sC(dczF-@xPH%`@SasY?aaMWazQS-=)PkpkKzxV;!uH52Zbnkn!<4ebSVM(fda z3w!GE)NDO^64vDc`l1yD3`A=>3V7yQmgK`xzB{4#4x)->HnZd{ygoXx3jMT?(3)Zc z7Vq4Ps3E+yL@ta$uIOUBYzsp;Mk(5H46|v`PB7NzY9rMAt~N?7K>rv{deC4Gr9}DE zHF>+$NCbF+ONIu|dq0DZ8N{#2N#dLEqQI&}#@P16V#^do-=euMBrtTU#!zEuX4-|N ztz}E2zi~xlpfPw8&pl{A?3UNe2G?K%zXp;49VNg5!yTzPSwKo8YtD+y6_A%X zPfYsH7BE3e-`5C6Z(yG4#G?FPGzTbzDVsmPiWce@!msk3*N};5!=nVpGg*(eQ*#d$ZV%s%5C{5VJ z@7`uYyp`XfZTx~n$gVczv7PMNLEg0EOM>+czjfEh!Q15K_t;&=g*(M@?8l`d7d~bN UUa#$cVW00$jzhyIwD|DpKXBprj{pDw literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/EntityList.class b/bin/main/net/minecraft/src/EntityList.class new file mode 100644 index 0000000000000000000000000000000000000000..a29ffbf5074a424eee35fc75cf0cd54873c20ba8 GIT binary patch literal 3624 zcmb7H`F9gl6#ib*_ND1S>sS^+pnyUbN)W0nK@@5WXj{?5V%?|7&<;&z;&j@I`@ZkH z;=bW7q6U|v$Di~Z{|x^S^?NhZcA`mCdQR?J?tAxs-(BYM+aKTm1fUn+O4JFQZJS=Q zVA*EYHI8`6DL0$!w>`@{HfT+G67>SDM~xXHnK$h5W&8#QTHs!gNJ)Uv;^2XHE zkWnmhCeSkIt4@1XKFP%t6|+hqr7k?5&$qR%zWqB@b}iEtuu zUJVfGNi%PHjvdD~f|#30oL>V(x@hH;k?jm?FqYU^BZT`c!}j7}RyFuTi3@AoevMNY zv&=Xy;_bm$Vz0o;YAhYH7=b?W$$>Co z2{Z-cjLp&-5?EjD)PRv^fsCgOo98YUXpSsMTu~zuL#mVwmqeu*iMg4oO>PWN7sgCC zV~piZ0e#TP8u<~!wba~SOdy8E%vx{4nj*J@)!b9PA=Qj)aGk`p0*e-EmUX1zdfY%F zi_`2BJEG+jw2x>#g)5zr5(}5;#f;%@VVy_zf_eLFMf(XY=A}nhd)$vFiWe^rxsSiaWFR<*NEc^S|AZ9qm%y#KUE(%|X~Bj5Te4=+vmAoGLpAx9B0nx( z+B33~8P`z8&#DlRAXGsvY!z5hK_!e?pu@(bGOAZ#Nrbt1+iWX~e3Q&zzZN7OEc^Ba zN%Ob-8gQM$@V<<|;f@OSxsx%*`-P-o>5cpOhkJW;Xo%k5}* z3Qx1uFlFX^F3Zs{`=i+sE+sIFXEi*B=NWxgQEndIx&HxP=SUM?#LE&dmGgFtU!Q`8 zSMVxJ#!*cn41nb%*$!2tX{(Tuc#XxdkQRYc`=+hD|CxA$X_cO|{HI2H5ZU%w%bRGo za_tEm$6M-&@HQ{6Q0bi`O5RFcH?00IYe|P?X=F!tw^c7m?N4nmoFZ~wF^|STWO0?_ilsHGrNkzE zvl3hMtxELj7bvkq-=)NEeUB0s>-&_rL?2M%fPSeGgZi)%hx98czN80r$nf`4==_!R zEsi$qz)I}II_yFxQrLps*p3UahkyOJ2!ps7Y3$`!ZXXQvVFH)18TVrb1ME}#ag~27 zh?Gy$5O0!FaJ`}HG)5N8Hu{T={t+!uz+qfX#e{l-az&AqCZ&q5Wv9^E-Sr(tV>o;Y zdRKQaT)1wr&wVrB#Tu4kk$>&d;3#gyO}v7a(C0B;+=MK0p@Cl+t9tJ36hkyY3uYaD zhBe&t3pV!D{|IX|rcb6zC~zDbjdgQ)^Us(aI)V6bPYK61o#aJzNMbA7c+4ksHOT~8 zxq2pPXyfk^?k~eOEGL;Oeb;(vmPYB?7^NB+xYNIBJMO~WJlleH+(XA>JXeo0Vw^E5+3{i$bLcdrmhm6If2!u@WKx` zKB~Wd8gF*_*Ol;22_Ka3aY#Tfq0JGnnNa}N5X3sdUr*TQ@c&jDm|Gi}PhHHRZsyD; z96%2vu_Z!?NkYC*e88M1BpVXaHc!ZoGD4Q4{!bbwA&*B1X3HBI*Md3-60$dvkgfFQZte?|e67=e0TSE16aWAK literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/EntityLiving.class b/bin/main/net/minecraft/src/EntityLiving.class new file mode 100644 index 0000000000000000000000000000000000000000..8e0871622644d7a868a2687eef3ae4fe6fc5c20c GIT binary patch literal 13497 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 literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/EntityMinecart.class b/bin/main/net/minecraft/src/EntityMinecart.class new file mode 100644 index 0000000000000000000000000000000000000000..c8af12769ba7bd4b30f4aa1813cf5387d7d5e033 GIT binary patch literal 12891 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 literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/EntityPainting.class b/bin/main/net/minecraft/src/EntityPainting.class new file mode 100644 index 0000000000000000000000000000000000000000..0082a24653d471d4a97475a879bec86f0c60a9e0 GIT binary patch literal 5919 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 E0VF$V3jhEB literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/EntityPickupFX.class b/bin/main/net/minecraft/src/EntityPickupFX.class new file mode 100644 index 0000000000000000000000000000000000000000..62aae11d0fefd889b891792fa7bd873c3ca69bd8 GIT binary patch literal 2694 zcmZ`)+fy4=82>E^goI6z(li_HP;8R`rKGear5D@Mv?#RLQZDtZh3wAR?{~ia&i9?~cFwQ={`3og zUVITinS>TYv%42`L(5v~jNM(dvfZZ*Tenw6^z8g%Au|zxUqW3esmz3gZJM)S)D%lD z6(~JaO1xh}wJR-Tbt5OlTS|%#=}VO1BA=SmBuIl2Di+jhC&Z+D<^0S{k<1L4M|4BC zk4YGhZ=q}4wDQyaTl{bxE&azcpGk~K@SifLwIH@*M*y`Flu{nbh+rqh3ucj_kp{#P zMMi9sIVl+RG8#4+mj$CqMzdf97ED_=jS0bPmC<$|&so?m~~2o3(eAuY0Vl@EnClu zoy50tc~mPFwR~Q+O{+iSJi_tgI1#`T5}HaS&P}$AlOn!yUMqgO5jV!C7b&Gm>U`fAdD_h2*2xFCH+Nx-_Np(3ytIIO3VMW4Dx5(VH zVO+Oo=|4qE^p|&pu)oCax$7;FpbMhuDi_qH!vx*yIOdX5-YnO?I-gBfyR!k8obhJPKjNO%Y`Vtf zops4m-ppNHs|1y5C76p=3SAMUN~uw*yjfHUE4514o5hsK9Sj|;SE5vKA#AK>#k4_* z3DQX3rAU3GA<}po6MaoeWDU>fs4uz(HJ6Smu{BKR(y?fhc;!3Dtzm&{x|GPRRVB(1 zyR|Cj>nOJ0#?t@U8RG>Cj%w`W8)f_y#Cd=AppM6AJxpGm?=yE_p$Xsc?*>}%GfV6@ z=JGCf;ZL;VFW!>(up574kL2Us*ouUc(Lbn>+1Sh|(ILDjGD?(Y_Lxzk!$iy|k(*J0 zu9L?SBzlR6B~0`(Q2^CaEnXq2L^EyOpoJj!`ww0vs^YHi;WeT#_x?LxC#t3gKj00b z8v5}i-XyA}H}B#tq6mGuj+;bLdbWVKiDL9`2Jf(z>gnY;B}0tCUEUV&5jE1|6Vw!D zJS2R8Rk!wd5BP*n0_oX>dPMY=^{zZ*Xa8(wZ9F5b8`B@^53U9Z_5IY&L1j zoA3_(0Zbca_`w74Pz+~fO-X8{!)Qj@k9*I#_uPB+_dkFB1>hsJ9ZU#Z3YDo1f>3p| z?3&uX?$qvuCNR&of}Vq{z~X5Jcfw#G`vT6s^!>i_1;mcPf>Zv)Za>C} zIcH-k!>rj0_607dr0`0eI+Hk*dQISBirFYrfx;6V7&UU*jyBh~1(wp3;mx+} zZA61%bP!sJtTtCYyn|8>*QskeR@uc3lpVY)P#RbFB!-6yssb)GSdXHf zz-+lP9$XHeu#9YmRW<|rf=>4jv`Jjfa(h=vvls7k_<|ORt#6M7azSX6mK`H-Elu{M zntl09>3U_y#Vvg0;PxBZek->1a0lxG(*wqCMj&jL(;4EPFQtflA^^@n+sMx22XdG+ zVw|ClhE1aeO^TE$SDI6}k8d0_SM4hr_%3zT9n}czpyZQKIh1ztaD{`G;h%)2c5b=Kam88Ydy2a*ZzuR& ztSI-;BSo)78AIF?0%M72wG33H4;zRy{M>?&G_4C(RODV1bb=*t>{*f`-!WOK!zrbCt9^uRE^UQOeW#Up6Swi4Cn_-F3-#{Ma tQ{~to>fP8=-XbP{a@zK^XQ{tHb!Wo7^X literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/EntityPlayer.class b/bin/main/net/minecraft/src/EntityPlayer.class new file mode 100644 index 0000000000000000000000000000000000000000..ec0f4f9011a66413d0716e5a79570b4a7c7d8cf2 GIT binary patch literal 7579 zcma)B349dib^kwUq}4G(ViA(L%xNsGA~5C%u>heHWOEsWj4-wt?T)0CRx`^U0vtDY z?6fX*OzTkLI=0Le6~$mw@KS1ZR(^~dM3?9(*K*;)e5wV1HYZ) zJKpz>|NDRM8@=@NXPyJFPL2goAh_PKQ>#a!jvY=|{i)T-M0jj_DG+vfaMWCP8)DNhj^d&Zt8HZLS-OxJMm*QkL+0l%Tz|J z5o^HSYmZn_Ct@cA#hbWfYKvfDT^>d6a1*geQ+#|B<<85HyKSuU8lu~ z>~&L?J_<_e+S}VZJL`Ll=GPC^t8N=iyd9<>aC~=vKc{KiJ51c-NglMVSZc5Yn>ceY zJz_a-G@=8xm}o|&pp1Ya%({=qZKG|SYAR?o(WU}t`RK^5tz8`^I#uqh{%C^nOh%I_ z%L&^h*iJ;O4i8$1RdHuPN8W1UHeDc)vX7#-71 zea|!+sljNHzR!b;tHMTbj9Q5`f_ZsH`Un!3>3GCS*?Xgrh)w4e*46hYn)aL6i+!r* z9VRMZ>Qk?Ya<#geV2@h~+fR~icb|sRXr4EA+Gu{Wzh8rNw~2djn6}Z|`=a;KlA<~d ziHhzsanKhXF=69&`u(WFd3WEChJ3)pAfi+(?j^Qwkzjrv8~nZ|)os{BOx<1@v8~i# zcT_X2VqeM%5AU?%8NbbP9iIsHdnW6&xQQcRwi$6Zd4Or#u8k=Z>1-oWC^%~3ShnF{ z3GU^1MrEXo+TLg4*YGZ`tJ>~NC!=AyTLCyd%W1ya_Z}1PRZV9{qW%5Ra5|PczRymj z$OF36`%Qd6d(BidJe=$}M)=qf_2~U39>9mVvf`Dux-Ru*4SvJKgV-mS6CpF&BLr)U z6CLqVA*tRzVZ!mf{g8Qg43#vik@Pv_Cit?n^WWF9!R(AzDs=zwEKT3egSFpdiWOb8ZFcg0mh zOB`$HK9+s+>)N zoikH)(_5}r??W=3ipEy&Ag-Fq@ddmP!1LK~O!k;~5nm)1P$|J&B5ewonWc6()fB*& z1=me?jIXHz_D@XwDZWCShuv5#8nM+ZpD_fBeu*9RJ*wBsCSJj-#6r?z57H8MS*5d^ z{Tnxcs%!1>d)AfVOZcjZuj$@4$93AKFJD5#_W7H4z;)V{F^nyQi>m!MCcchuD7JIk z3uEhrw5PcFl8*1i5^`nuNBmO&-=S(bc>7zti8t|Gg~*Y#6(e`g zt()%B`hx-dvtYq=r*@_65s%AC@vr#z0RD};U;a@hzK{Q4npp98jJprPcwHV`s668P zd-yLc0sec28p9jqv5eqqjPjtfXbCxRzK<2PD;}KQ-|)&EyIzrQB^tT2id1wCCq0e&OYKBD2x6-Pqby`3+K* z6qr&d1`!)}>0G0(v%XWCi%ki5&B-WfrOJv#x?NxSO!TkMr>zg+CR)zKxY}NBy7^}0 z?9(}mX7IQd!KQ%B%1f^Psw%0t`KxQ!ZdJOJ3JEeoGDol}-@5)DuA5DMH25oW+o7Pj zrqt-hQXR3mQ?=UttXr9y^Oc^8Lkyxfo^*F%~aZ{Nrl#n!(lakX}yeht!dkH1mI zjY1k2Q+z_78W~1?S|O`Vxk))C=v9vympPsrh|N4+$a$4Tw$jIX|F(ez1xcVSok-YD zDuansq9@rJbHl?kB!t)3q|mC7x0|w2D6B%MWO8Du+#;I-!nNj4j|ew9n{`~wl+D7r zzUZjFbE!OPXNNLLMYfvKqUViZG}+}O$)vmcv;Ewg^5G)e-Bf?j*!nn_J^3m?-yBw* zVawTWB}VOJ>Q}IyB|?pCH>E?5II|PB74d!CnQ%vTwRQ_`$fpr|x-FicM&h~&^FYDU zM0S`wI^D{nLmm%YGl7shnuw-sf30qp-6~;^DZ5lcWh9!66V}`IceM@Dj+uC9@_gqV zo$>*uD>p=IDqk!CHr!`B;X%qLX}ON3sh>G~B?3B*+uQBvz+lSQ{DT)CQmXOjE9V)a zGoM@h0i>FPnhssEd#c;-fhY~+FHiKFOf>_i1vHUmMMMOT;(@!w_*&S zb_Rs3pQmK;*V^eitSA!!=_gT5$EZK3C6RECYMcj6iRvyKq>bI=-B?Rv#7*>Au{4jI zH8N~UOl#6||Mcp0YFHdo4oI(8;%39rndb3VH;B4?e&~+IGNH|k^Wt+u9$ZWxN$qmc z?}$Ws-WVX;=Y?Tzwhr4xX~hymH>rW0Yile*JXztv}wRl5CS zDf6z7{1@Pz2WLL9_C|?!=b_oV^E~CZ0zFFeUc(tY)AKrqZ zPfmv*{Q}JARaaifRTp{kO@C%azUZMcBlSM|U8Oc=j1AryJT!s3xQ4|g!k1C5x6nBH zGk&1ghIGL~sL{*3AT6QEOBs-5G;ulR@#MCYpDu1h9Y0dkPf?&TqriwaUo`4GaQT|Z zD~wqY17GAVcpfhAN&ZHI#~F-wYU_Et`!u6>9viEwpJZIm<9$`t@xb6|l!S~4e2@(b zCh+T%&bff!WYcfyZd^*0>8h~H`F)9Ittcx?D0KK9|@Cx<$g2hTk6Q4|NyXxG^> zl<~IlF%*@1@27L`9id*jemT2)`h$Nk)JOko%efV7IoBWjthSuf$sZ+L)OEc4QRS@4 z37nt6GrJluV`bq6<1FTe8s{39@LU0&$CobP@&^o=YcyWMOM)kU@n+7$cM~F@A8XKv z^;pF(F>BDm&pKULOV6%Dgso|U?>>IFc{h7cpa~CQ3m)SqnUA3rPZ4-uL_1zW2mX%V zTfU8L_%62Nhu9_tB`EyX`Hs&-CxRykKZQ)1r{LH4RKS@x;&uEPqy8NN`p=ni1~iJb zD81zh+6xLQST|k4wgA2$vwzI)0zJ|Ak)<*P{0|g2geLG8Ikf61aH%3;xTZ2kM-w{*xH{ANCPr|JQICTXgnM_`A}_ zs&go~)ww7#8ay*}Vw{+p-dB|Ad-yCWLZMlAjpJb*7(7Fg$;I2Jkps-DUR=jST}+~A zz#&HU9!B#pBWRHx`tUA<@m@y%K@8wweg?`p@Z_WePi7pbkqV%&>8I$>ZL&mo^>}h8 z1FF1Rt`J_l@Gxod+VBiBm@!ZK5`XBV^zw{!PA5t1A z%7{-+*n(DQHn-uix@9i=Dmskvb>SZFfJ?3 z;`KRl!$zZ#(yuVQ8fBeAK`SR;WvJHhC0sR1@(x-~QB&q}bz>-arjH7&m?QNYjjL5G zs?9bGQHkF3vaGh~#6=0!8YhOssxzBNJDydUTff4OeJiwYxi|c6nc+%V;l>GBmBX6P zElK8bij19Rj*k*+$M_xjI5y#4esg^%QFtHv`QdJah>Me9(s&OZCGwuf`*`|)KfcM2 zaNoxV@e|z7Bg+F)&njmV9+Y-6kz#VM?hw+E4KJVk@M_y@_%t!HRF>m)Swp-u$UJh3 zNqsi)j~O@fsfe^d5~ zpkYEbbcCLkcT7n07)t5tHm8FfXHREeR(ytI{T*#S<%7Ie%B-4$libZ7A>(}nD={`D z3+l4=aF5$VTUm)RQ+=-VvyE!aD z$cUPxR2DdL+qKE{1pW5p6j@hMs_di;(ZfJKS-Y>5^-0P)^A@shm%SNT>uH{vC^<1c zHGgV~2$?iZXqxW-BHh_KfB@w5d?LKd?;ioAa~u*%i;Sg999@? zX?Q`xEGT%h$FPP2{ko>8(5n|%;~0;lbYXGKIGk-L_8JC@VwzSVz3Tdf`Pfz?ad(a{3VKhXK6IzW}^KZg`bE@EShEia;~ms~&J_ zGN`8}_k~lLePIAMajbq~Kf*l9RS%UYnKiqjysGL7|4PL~Ar4%LXJRp9IKMViIOT|j hPZE-RD-mzZC?e&FNWV3xzCM!(zhse7dZs{*{y$=#lPFW|$FMUO)&*ae&$e6M;=Avdw7P^pFnwuyj&RCtN3; zX`2qZn~tPSx|@!)&9LPrv+ zKRxv1z4rmwENV5B39PaVrz2@vM$FcaIUN~0*0IZSOlN$5LLWEm=zb050xQnFN}wv4 zI$d4vg1KD4^={7p@fEtO4OiEL#@D)QcvCG5{pqU zAk(gpo~Qy#1NeAzogqSAAaNmsvup+VrnQZl}`5-YJv zpdy#&~jNEp_zGa@jjsX3yd ziT=-A*_|~Lal@`an29suIO(k&9b;o-?S(9BS0po|rqvO`MQByRw+Sq6D&^BWq*ioD zY`{j^*3)Ujq8e>MOG|e9JUT0IG2`5xwuTkhB@$b3DTQ!Sp3?$#P0b~nJ5{KkCb3nC zrYW+6c0!G<5UB2Bg6_*Ej~e!Xel+1qnTqL&A>B6BcYmeWH#Y8|~NAE)@;CxuG;O`t#?ELCmJ(x?^~Zx?&EG z2O%7~#yGoazgJ=|=2fB}S8CWNurdIz_<&37$1?;%sxVM!{TQ)CuTn57F`%YoVT!4z zfQKXws)_k(qBmua>2_Rgp#6Rvk$5JqqW{OU$uyyksF`O=T&)Hx&CDJS6Gvb{%IY&u z@Nv*}Da5@;C1POSEH3s^l_THBHM5^CPZ5?1RU?i`JO>ehTHE0H^rrS2<1UJ_V@e!X z^HuJAeuk7rbSs`PIIy2H%!#>8ks}JSAC^Q434se@BSvhLE9kdkR#Zy`5f_fxrek;q zejv54dq7}a5NXZ~=)*m!WIC0#;y!Ih;u`Qgo}l4qEM*%?y5~xagF?>DsF4t^!}B#f zFR&q;4Jz>hypVyV0ujqGh7DVwKHxw`nujXzV#X$7oiHpXWsfVfFOhgDUZx_J9~D>= zkjsTlegHJQoVB?$=R9tGX2uEO2E0<$l1K0N-gIETY%p4H9p}n^>}_5(6TzAwZ#Em~K5|xUDIuaGV_q7LG+W`-7Jky>=?e zd6lSdm3T93MdT)loAGu!I9wF2z*0-uuEQ-7x8j}Na`IO03Tz7CeqIeu;@uMO!Fzd} z6-A#MLvlWG*_2lVE8`QQ*VS<|lV)GtJs9a3F%-u@*hnGR6jZ|p*?vnCVt3YbF+#Wv zA6EJE5rG{+B#Y1j_!Z5nliiDtN_-3-=h4k`&6?4eZ5S5MSP(pUc=K-XgCr<2!S0=h z9gOUXn@-dmCU9U)7%&rlI2vi~u6~f)fDKYK}ZeTMoSrUCZY*V904J$Un z&}g`KHak7)w#gbD!aew;vhyi{^+Bo>B3LNI%=u~8d$YXE#MoMzf;LaH^w+u0KM+_* zD8Iibgwyzp;`CX8y+N=uIR#`xkY$GF|60j%%EQ`|wQZKoUDsqy-g@E@$4Ij2@}^Q6 zH#O%re3qV*_=3bkc#utJ8pPY24-q3%@Su_#zAW(-)d}XuJdL9bN>S}dT_1K4lIMziTkR;#~C{0)C+))>c* z88PPo@7ac}T6<6z+I7~NP7VKHO`A-(agY@z4z5$u$hi}#yU(#MyWL_D|G$DeCp5>1eb3{3n*W+=|QFZQSHPL&>t=F|o zX0Jqb*~yeWq$jcr$Vs6|QK8-l(@Vy1!k$!eKS@XAZ+r z#!p`L-6y{3@^cYKDj6o$2!4AE<@^U+6>gn^47W_8y7df}v`%2r8O(20pE-UFPhwHq z8Ej~qz_K%FRv$U6z7;FOr*P5Xn&v6Acw_A~n{sH+Ve=#|3#*|?blyq)Ik=pE!?X*s znCmhKVF5WThC~CZ`LbGrOHqp`>iKf81l!#8E;nq)4t^s`Je|9R`_zSQdZ)&Eu#@<^ z_`C#jo+4Pe2BD!>Lyg9lX_Rl^mMakPT|VTB0yKuh6WB9>zDXSL9|tFK$bURMiDxO| zWiIg=SEQw+yNvXfQ{D!bpmfPJ`UHh~qwuZl@U2uSBjFtM@Dz+`zy)q}R?(Z)^uMtP ztf~MuTmaibP~~-n0?T1!8Ykpxu#UfCtS`c-C}4~t;S=hkMU@dDg|TdT4#}A)&5TOe zMOo#oEa)Dh?rE1n2whZMWfk8-eB?OesUop9+%knsOHGy*#&Wo}rRGI^y8aYyI6Q?{ zAgK+P;yNgt`U$7L&d&E0x8!glRH|w@qS< z7ISzC+u}f%V3sx}QltItgl?8(QlJwurfv#AIjnOX?tE+wlbYNi=3(}*r=n8JBTQ7C+_l*uV9WT85erUcONF| zWB}@Rda$DibzuQ@AyKDX)K3&rr;Dg6b!t7-dtAO#I28cg%@f$;0()s)>jMkihx>h! zGu%I&cmLA?c)fIgcM;LE-T$0Rlr7pv-sFDwa{T%nK7R*EdxvixXMjCL%%=034btDg zojIY_DfzBf|0nPzk;7MK24x@RyRrx?FQ33SvDC+!B$lc?+Z0Yq4&U0g{8nsg3G>u^ z?;sEJ!~0ka8(SX0BR64LTgz!YlEcqf?S6F&WEMT=SnPJdwjwGqpL&(iSUIYRV&3gER~)fpMJg8}CMpXQZ{%uKkv6u3b0Tyz_<@J}*?#iMwz|rS1?)mf+165J z8{L+6oPS5DYyuY`$@6USr@<7JO|ztAT@v0I-&k;Gqwh`?b?l;!Wv-4)AhrszNckaZ F{s)Rb1MvU= literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/EntityRainFX.class b/bin/main/net/minecraft/src/EntityRainFX.class new file mode 100644 index 0000000000000000000000000000000000000000..cd95e1a76f16f35d3389f035fcaa7fd9f7a0d92a GIT binary patch literal 2336 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 literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/EntitySheep.class b/bin/main/net/minecraft/src/EntitySheep.class new file mode 100644 index 0000000000000000000000000000000000000000..3cd14c4f1da459b247de0166b4a37eda52fcab20 GIT binary patch literal 2167 zcma)6-%}e^6#g#R5Qs|%DPXBUTR@v1mRO{%HvF(aLt|5_4N^dByM#@$knF}~!5=S< zGma0P@qtI3@xd2;@j)G+Gd?)ut5g3V$MMH^cQb{WrPIkw_TGE$`Of*ibI$$!pI?3j zFpjMdS_B46-AUIBQ!m4PF`SPJ6KVXse=Yw!SVP zRs~uo4AXF?1p4FoX3sm8U0u&4mIRbpYh4c`fag?%(AExt4i!PPwxLrXlCD{6X#(r@ z(Yjfd)-Dw>oM1Rd|H#?4b%9uZL)+2PRn07?3yy7=<%}|2DwUM!?@FaGU7lBQ5`8j5 z-6;X^7zw08NHPmovLiMXFXKEVGO23LbchnqC35XZ<3b3pP{ZaT&Qz`9riwAV zNe!SUO)}>73YC*BGwyvZvdqUix?DLN z1=&3}wR)p9qaWIaqkA+Lt%aFI_JLnJ(XyzOXRTV@+BW6r$#hp$+`)1i-lHy@bUD3Y zypQ`K+!Hv{tmcy-Dm1JKggI3+mQ~d?Q=m8AJdCSy(uRD9Jqbr;x@=ur_qfQ(pj~EJ zQn8L@nOH@IfenT%9|_sx6EeXUD8ftLa1vp~}qwXsspwjL7w(T^W zI=G$FHK)?phxxUOde)GSMbyic((!$g6NR(v<^Ug7wwHXwxC(K_hmHU3+})+Mh2Oqp z>LJ3(z&_MuEV7SiGS(gIIY94EG`8Rr|9c4_-GfjNCP0(`C%JmTwYebZ#{hSP!yrz( zLD_y@C^6DVU^lr3^=o{Q`VB*0;nSqTmM)Tu~43+Ld5m zaAgk@^3DNfV%d!^i~E>x59b?)jZZ1|rfZycjW_&_H$GQHk23J>zuzQN{SUG50}~Fo z6qBR_bRfdt33QS~7e@HJk8wATZkD|VpYiMg2};^iuA;k-Y46hGEz$*c@is0~xIt8L zo2vk2Fi_x1A=)i0;vLGd!d#m^+VQ^gg!u-b@)H>5Rr$8Jn~dz1)HSlHPm@G5(SOb oeq?H1>$LI^IOl?>?mEy&Pl5F;t|?#F`m?yEeOv`TaC5W&1LghO1poj5 literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/EntitySkeleton.class b/bin/main/net/minecraft/src/EntitySkeleton.class new file mode 100644 index 0000000000000000000000000000000000000000..37a0bb45fe1d86b3093c925b21da5384c00090c7 GIT binary patch literal 2685 zcmaJ@>r)d~6#re=WFcG>BSKI_d{q)G5g+w|1+2UTTB}R42@AZ%n?X}TIUmADnmn9<;2-O{X?z6mv{T81t|V%V^pR=1&NEY)OiAJlZsYG$ae z>sqRO%rKL&CjTIVbjXOQ9u%UO!v%K{N*GoJQ^sg8lXKXR))U2GDCJmzl?<|_p0*}U zmBHIJu1qPxq@pK+eU_=|i6(}XT?D>oGBv82{mN+4Rx_eXa!@ffan1=PYfQ^9Y{~=f z{&>lxG^Lo03{`n_oj@2?7wy{OsghG1A+`Zo-_>eM9i49NtEhB{)jN! z$g%T|*fIwDbFULOYr!+X(j&!PpaMDmLoAI#J_7@;E-@JKC zczA-N0}=8N*F?Fnh^VtCIVw;|r!bXNpQS`6x|MXUD7az?fx|3AO}^4~E}O#sL8+}) zFx`u7GWr;NOG$Nfh01P$XOQEVz~gb;^iyhO3^S}>?q!>48q*#O;c3wv&oCU!hsdeH zJjLm_cj}Uwt(Xiox?BE^$4}ZN(ko7X%+6k+lcMk-Iw^V)ZBIRRuMG9 zF0y5$8b*z2sfC0h;Yp4ZbV_(Ssm$~llX|QzSDjQY`4HzgT-v^2qE%Q-bDRQA5pO1~ zOzVz%M7IMax*lSZveHsDJ14cZikOBl#W9W3G!-(cWwY6#DluwPYRI}!DCGD%gXd*D zM@@WpoQQVdcmXdmxD-p#chX7^{2_O1{AJ<`aJLq3ynT{3Qv1BqaBpzDi7w*LG%Ur^ z41HLc7HNN*;~l(9@-ZdTW*3-B_0C2Z)-Id0+|(hrV)*QGmOak0m*(%X5A7gxulEsX zF}ik815KNnr8-3R8$Ip)3|sTjNH_gT;*gO_i!@Tvh?cp?@d?i7AC?b1pdv7dVaHL} zG*WagOw4h7CQOvl;0l>WI%27*2(dt8lBUXKT#@l5L&efY5Q-dM;cJly(GJvTd4d;e zO~TMsj&DVe@ywVOx71ifkExV@50#}ERl}P2Agp%a-T9(5h_quPWvWml7H-{Qx{re;q{uuV(@L8l4MJMt@h>Z(O#13F)sQS%sqyFILluUZNap$Qs3m%AD07 z>4mU57?_7Ii*>W;4Dc*AhBkY*Ubu|Mg_wRHxq$#JJDg<~Em=G^iyD$0$fDUB8sF?a z94{TecnO}sDz<$A;lOot3Vek&zO@vG=mZZ+=*-cHQXD0e1BC7_*1;UsGPDuaF2dMN zuUufaNm)V1CB4{H?~>0{lDbrf+mPGCJ|P=i}j* zW>eRTBEiIBnzKaRd&HBFy-y?-kk(b4g`ZMUjahs^I~RG-@FC8T=N{7eh-5|NsRr=A9L}9>6|&4Hgcv0EvZ32l`UkQA?65={WriR%g$v6M@B|Er#1LaTN$$f8X6V+ zP#X3>Oj&=S%r{)1ETsC28}R#q86Dot5W`(&sE@S2XP3qJ&3)4zh|>!|u`0 zwuP%#t>)tAy-h>tv8B6!w-f0eg}n%B@aHWjYZYen*moNnpR+S! z+^4XAlW|sb2NVu&(#(mh`UavEqE{*Lz<*kQgO}RlKI5A#bgkUJ&*s?9R0w zyI1Y+-*+$kP9~+4Hx=HJ29knN+bR_@dhE}Ig{!nO%A{4Y(`GX3zQ2#WklixXd<{sL z>k1hqN zh|rd}LBE^wP+vy!A>O0J0ixZ(wT<^fthR?}M~QcWSg#PRNu<|_>jrV&#BP_DA(z?p z8ZYZLUe;^8tk-y1=Pu!eEZ`hh=>^{vk0JcQXJIJLI#V|e&b#Fnn#Y$00xf~Yk3WUp zD3bc z)ULpyD07)IEOF%Q*y%DlWOF;O4ql<#aJXFMmHy-w_J|+nZLKHcjOf!NtNyho7+*}eIFC|k)Y`vD(dj=zp!}7@&Et; literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/EntitySorter.class b/bin/main/net/minecraft/src/EntitySorter.class new file mode 100644 index 0000000000000000000000000000000000000000..206deef7c2b6cdf29b205f2dbdab3531ecbb6644 GIT binary patch literal 976 zcmah{OK;Oa5dOw-V-n(ol+s6_Z32|$QDK3&1tFxWkq`kSQib!zS->T+%VtxFKf;MS z7cNLpBo2r(KMFBxTUARM^{{Kt?Dv@2**|}O{sQm-bq5wgi3dw zMVpX)7=(d-L|CuShc)^Hdp8=&JTh<#$e~Ec)EoUAxVQowTq2aZ+{E+gcp%lj7>p!g zu^ahf)E6o+ahkOC+h9Vd&UH)r=F;pVq3#h#5cbY1?p35l!#jkg#sV2$3%o2dO@5yy z&cR4u=BUGYi@*8i4-}fM?R-B4fcEoAHLR$kB3w##JnF#5`PM1P{|xnQHpX zGt5e>`3U2_v<6n@@z*)-`E+E8eyP`(NzsWzoWq!bJvB@k@^No@-v%r@DiOOxHO*_IFS z3&hWHywVW|884i{3uRE-;&|bBtD`@_J8%6BGLFx?n?i>Ml1cXLd(L^zInO!g{r$h6 ze*v%q9|ce+&|w*FqGVb|*3t8BqT*x|hb-50FJ;PR&Ts-y1lB*!X4tkWuHgu%drZr8 zpBGpg9a?HUW;?~)Kx|Y%IcVpM5b6=suncMg8U5|nX+Nz1VoDQhgkj5>C%MZjOY_ZFP5Fvi=(<@%J=G_;!c_s zfekh4TTIvhi=5G&?E-6RSo%z`n!IV{ju-VyjA`$8T|GM`xr^0s@xcdViJcm@U@J>4 z7_NVOz%dJxu4Po1nG#LKQc9A&mDR>H#IZr3;esUp*u=RYoG$ zUS56xf%Yfm)QcSf^pV@8kiNf$XR%XY6*C?*E3R&3jm-HGdjWi1t#R>{1F=DMUk|I{ z$LF+{{TlSe9UPI2WNlb4SNo&s9*qmg9Zx{!R7i^UY1oeg1ax$ZvrwI|Y1b?!PVmGo zk@P{N0yrel>`mVyorc3W!fCTOplQpM^rvHK3HySE7bTC&eI6J3tL*#L@61sR$8emT zv8}_7JuO3vQ$h6NgoX@u6RB)h#wF4Tc{-|LY~hq<0;3_E!s!5B;lwPZeOPxVj~K@K6a7K3y$d;eyc|8qX$L=w$$nu zH6wcApj|3Uo_K>ulU zvk&!A*}}JQHGsDTRxf2&8fv(PcUVfrEOKchHL{Ra0}|(54e#N7u2f~x%)3S|ZRL!M zYZCI16_JHyjDKHKA6_s|dzhvuNg z!_DEAd4%KP)pKb3p4vJ*#sAgx1Ao%Hk=`rOz$-9_wVuvH!8&yCjd)m(4UC~M@}_F6 zTl7<@>y2yk*gUv7yzR4_*czWjbQWFld2CO&;<cj;B{<{KiCDOzP)k)O)W zAsdgVkEkZAs>ygOrshz(jbOa1^B&5wS3XbAlNYdJm6fj{a~))6BN^FEX+QZGVt2-P zQebzkVl%!(C%(p3+{QM1hc1uDBOcdx9`y7M{d&j`Ss{<@pa46LiZ@kLr7=}?{ z9F^F6;Zob+vCKuekBxQz;`%aTaOHfa$#@;V?1G%Y3lFC)P)$nU1JCNi F{{icI^_>6! literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/EntitySplashFX.class b/bin/main/net/minecraft/src/EntitySplashFX.class new file mode 100644 index 0000000000000000000000000000000000000000..dc46e80aca3c48c7330b43b1a0c2bc77e8d99eea GIT binary patch literal 844 zcmaJ<-BQy)7(LsDBn_d|QfNTsSEUU~z(L0uR4#-#%v3KZQ^6~jG!D@;>7;1~pM-(8 zaK?bD8bzzFWee&_r4?0#p@?)P6`zX4dos)8KDY~aRL#|vC1;%{TC z7dh5e5PR{5X4mJvLwiqw#4vpoYlnM*y~iLw_5v?{$}nGR{L6h6Mt*yJGadC7gY+zH zyBhK+=oo^=F!SGC^_KKx;fGcL!-$R|Mj1xCJc>QXcb`XmKx!G7E!MB;C}WJF@^^jL zJ&OC0yB)OMBO+}J(zuQZR2h^`7<*wr^4X@m@#RE}Q$e_{m^oK_O&S_x z+sl6Ez>RkKf$uVu8==Gf7LPoUpB1I}(Cd*gm-uqg>2)$@z@t@$$xFDIhZ*I57S^)x zFbj_uhQ#)jvq+?oX3U-UFL*bVqF|Y!dd2H7Xw9%6Ij-%An~YtQw)~C{IOfQPJpCO| zq$ZGQRw(-km0ks~&83Ft(`c95HrMo=yA(%18%p z;WlX#=nksLrD&0ml%g6TIYo6sqK6HWkd~q)LOSjeoppu6icbJd{qR7WSUN!Wa4Dn3Vxxe zN7O2)s8vxE&SB%mb7%noh6JpS&?6atj#$$M|^z3<-N{oVWC^pF33 z`4vDbu7**jVOidAT5@LINZI;;(^9lkEj#m$>7458?(4D5oRJPAsG;t0W*UM6BSk}l z)~O-1&CHw54h>Ha2dB57kLAsLhJpHnZKv<-j?lD5VLldU2p0{f*E~%Wi^WIPdS z`+Z{KG6RW0LSbi#!4V0$OJTR`Fl80RW{<-2B{uyc+pEwm4KX*R=lg6klQHZ=dUlx2 zAle><7i33;va^aQHh5F3H*NI7br^9gn>Eu$`jF`i zx-7bojw_rHNFlSBF!VIrx7X2A!+Z6D-z^nZ{y-tEJM1Ph?>3~NFd*TB1s^19WKIiQ zfWr#eX+eLe?ds_}?W9h6prG)w^gtwMjT&CNh1&i(+Dx@e?TEst;9=NZwl$JZhuZ!g z7&t*~=(pP(`G}j>6kbP)XxU1h7eOzYHxObTRx=$MFB93sW22#Z%r=>UcZpfu9eo-aXWB+hpPq?Z zxq=YJd#M5!S)C+rvk1P#L>OObSo&x(5AIX=8sB&~P{%1L_ktPn=@4A?Gh7A_`r^Tw zOZw9u_M~m)s242XD_q78jFK@NFUtHGqBM7~L3*tbJ7pwIp|-{+VfrRtBSd2vOB!I& zcs}LI+kJXk(TZf_>^EdI#Xms1q_$0Pd|J)?vC90&a>Jb#Bt*CO%Zb`|~k~`;&WY2ks>Bo*-N4y3( z%Hks1&R?9r&M8=;+g<~ESornqWF41vrzh{EsWX9^tYXw-lqD4M4>LR zm!|M)>;~Srh9&gzR`eZ?Y5p=bcrV3ysH&=J3hzsKyxjM&9ANWQklt#xP9583IU4zI z%nGz)CA#>HJd9=>M~tOeg)yw=rPYE9Sc{8ThY1$*TWkQEri8y+CH#dExQnxOi&-(= zgdT%9Kpy2RER24f5TM#LPQlnPg-`A`P?cNY%^bH7-PV$}U+6~(u!ZVbbY3#}6rcGa z65Jsn)T-#`^r|jQ;fwoTBd%@-k5XHSN9B8zKB#A2;_=cwk8$5)WsEMT@Es|C*kK3H VXS~E=y$k{11!vBhUZ< literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/EntityZombie.class b/bin/main/net/minecraft/src/EntityZombie.class new file mode 100644 index 0000000000000000000000000000000000000000..b53a3eb3f3ab21ce408bf553026c67cee8ec67a2 GIT binary patch literal 1349 zcmZ`(-EI>{7(J6Ltg}prZPElN4WTK;UTC(oKwAu<3C3m91PTrYLR&hv$M%NxjsaZ(5O1^@0aL@Gjg}s`|~^NRbj`?T+XBJ>Qu#`|7`cUII7+VPlA4Dw5i3 z2a&ABqM^NRT=T9(I?x-ds$C7F4U6IE`(l<=)YUR(*n1&}0zJoYB)7CP__m6}dLdt7 zur8~*bTEt&jy>3$!ajyEudS-yVU%M(#u#iZAL(8!8L~@jVqJKlh?-tm z$3fIASeIxH6P@KafN_SAwpy3vj+Au^JtJ&bbXkf*7GZc%LLpxv*w>QJ?l9H;OZ z!-1yMeUJ-r&}`{Qc4-tVSIQ^!cpRUD5L+G9y+foF9ejziHqOvN?rgd&bnB`NJ2K`t zhp!lTBUCEBUst_^Ju6qt`(~DJIL^N-d)F8)a9n(6AbiJhiQ`+$Gh}KaS_l=LjFc-a zS$?oVTFUvppIuiF%+4LqdZfX-B z{7J4M9HRFGC4nB3x{p#bNRe#>hZA2?0w3ZC?Wh<&!W1>2j{>F#jh<1aiK@8Iacm2p zJjJ5Rx8N3Mvgs$kkP{Y$|XRw%sB k&uLm2x$M7Cd5$0dpuc@S41s1+Ge7T#3~DmmPojSLAF`_^!vFvP literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/EnumArt.class b/bin/main/net/minecraft/src/EnumArt.class new file mode 100644 index 0000000000000000000000000000000000000000..6cd11bdef2d8741ec96575fb2e8ffefd59c17cf2 GIT binary patch literal 2455 zcmaJ?Yf}_Q6usjs#Pmj zna1ZZ%yAtT)2D2&aEn)~RgsBUp1tIN&Q^+8sL8rhE0wb4g^QJ{Q^my7#id)G<06dB zRElMUnBx__66TnbFLr2oZn3iWHM3CK*Ld zOq!XDDr#oZ!sN7~7ABg>xFXFY$z)Pdl8MRWydslHE0c?gTA6HRa#_(fbo6Zv382{L63eD@9+>*9Hx2oI6^wtJR^Go!PTN z;u{5Rm9Ws-1?O~;Pe|3Tnf<&+Y{@Dvm2I!)BGvc5sl%JpH8PYrh!YCoN^8%wa|;jw z;eJ6FUl5)bgxv+s;pm{$AtWaP}fA#<>V)l#J8K?(DJrp$$iFzPV4~sewGY3S?1nQuu$KvKOQD*}6xTr%q zY7U7!AIQTZkLZ{=qB~K8?vyG{h@91NGs`l5fqqi-Q@X)CC3>c=kBNRpC(JXV&)4;{ zqMy@^<~d#^q%*Sogve7`nNz%UC`tE4pB8;aH<>f6>(2GW1xZ-C*|a2)Sx;P&#H?;H zXC*Peo|uzFPHQt)UuZpZRWjFg(!8!ST+_Tf`-aFjwQ1gjoIy>`MW5HLf8g{&KBcW( z*rz@#7xC$Um5cgx*viFx8nkk8pN?BO4QUtv?F0bgNkD^7V}OKDX90~qO#qZn(|{(Q zE&!T+x&&zPX%3)$x(Z18bOT`eG;cko{3A9JE#Ut}T)gbG6nbVKT$)AC%)xidaN7fX z7JkOp;1NCof8y@{8(026)M9ATMmHsmESbhtYBj2~)%cN8#xK-n{Ei-UWOaT5K4yV? z=_lxM=w0c39ZzU6-M2=?bSk_?chafI8ZD<&(KV{1Q?WJr;6-)2Q4Qg$jpCARL{}uy z7u(PiyU-PT&=vfo5$UZistV!>Cg`FX`Y9~Y3ZjTaA0pyz?4pkl#jwv+x>v7q z5My{|n@{=NL@50%H_YcX725ffKJI;pOz_sC7*F`E@3a9o;+OR`(ip?pglVLo(u3z@ Rynfym`bO6LmcA4G{y%%<&?x`_ literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/EnumOS.class b/bin/main/net/minecraft/src/EnumOS.class new file mode 100644 index 0000000000000000000000000000000000000000..2e02fdefdfdbe0e9971c36e684f700a8f20a14fe GIT binary patch literal 1148 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 literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/Frustrum.class b/bin/main/net/minecraft/src/Frustrum.class new file mode 100644 index 0000000000000000000000000000000000000000..0350e3cc9065065c6c0886881c9efb874540ffe3 GIT binary patch literal 1375 zcmah|?M@R>5IwiFtZf%)5wRl3hgI4|X%P?+MWGd`Hhx4ylz&TE>ymcc>~2Z*L3|4T zm{2tS@Bw@%jh{)Y_ z6;Xe8LxqY6>v5>t3%*+P)iOI`I-9j-!ScWxRTfu*Nxa<%Zed=*ZGov?1yhlR=3}n- zYE>X4^D*J5Owq9R+4j?^lBsiExzRM8jfz>ejQ!2cwe)Tn%UDrxS77oii&M@j?s?DT z#J-bJ_f@QQ4DY4kp^Ej6!NYy5V#7D+O)n&;BHuB1AzLb*b_^^CXNNWJ$yy-trq-}a z#+E4?J<#dgy!>G>O_)AP2tfqoaPXH4$hLW!P4hHcMjfOdXP4^`PwVs()T;I!G3^J2 zTS$EKyvMi>5*3snzbN%p>FN7p91}bVT*G7=%bhY1AI z2+2tzRE$(4sOH(@ZBRnsChsM&IA*z%G~!5kkwQ*JJLMNXVt{v9?FflkE>q<+*O_u6 zM3pQj6wj6j`^KneJjUEt#snar*zaYDc`UX)`q?gvY?np0%Ocxm!JNpDk9=^JUxekB zy9Mr|#Jq#WHpkaw7~tK6Hg|+2$|~gn6*^5huX{}USV2#xxIT|yHiR3NOtGXe(i F{4au+6XyT` literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/GLAllocation.class b/bin/main/net/minecraft/src/GLAllocation.class new file mode 100644 index 0000000000000000000000000000000000000000..660d815c7183a5e171f96493fc957f535fbae358 GIT binary patch literal 2303 zcmaJ?T~`xV6x}x@41_@eK_I9FTWEroh*~WMwV;L4Mre!0Dz$Y;E^%;}q>~ALw2!{^ zSNP;hANsKthSt^9=f3r^Z(aQzuG)R?3}He)U`_7V+2@?S@45H>`qz&?12~JX48#PE zxzf*W+O8~k*1DgqdWGzKe#UXi1P*PAw|KZLq=Im@84we@xB z`j}-?Y8T$>BLAQVA>24i1`l~blJBG_pVu$uq2Kar6Ya0 zo5hSAoO{231KhjkzhQ^U-_2>lqKaR!4( zg$^tRP??OR>KK~-9$iCq4DVnph8rAkG8_zjqob>wdgvC+A%QOTyLn&s=pcs!M>vT$ zxSrt2nqW^bTo$Loa9>j#CC|z6ZA?x-#j!fhUmPDgvW*Lj*K?#1@39a=w7K-;cGQYUa!XD}T2#tde424gxGK4wH;VJVKX9MYA*YyseJgbriN?f6IxW+*!|F9pN_zd2D}RYpYYZ?YWv~m{sk`ZNay(F-+-0tdjJ3c literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/GameSettings.class b/bin/main/net/minecraft/src/GameSettings.class new file mode 100644 index 0000000000000000000000000000000000000000..e831777e6d85d6ef9acedd4f5bb1a049a0ec6471 GIT binary patch literal 7403 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 B#pD10 literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/GuiButton.class b/bin/main/net/minecraft/src/GuiButton.class new file mode 100644 index 0000000000000000000000000000000000000000..21fe884c603cb59f64f5274c801798995e69582e GIT binary patch literal 2262 zcmah}OLNm!6#lL)TZvH;6Jj7QNC+X0LSphV6vr)1O2BPGDG8yaEk&^uN7Rurvdm+K zf6!k*SAh*1Hl4x1u;@&8oo@OU=uD@}t~=8Q{jTH~I=F*1);Z_uJiha~KmGIkdjK=A zR73=N9m~&b*^X88j150i@rs#qReQeb`>vxx5lA&v5QyEfO@C8B6a?a%mR;KP1zK-k zbSt)RyAJs~ulP38u56c$J1f3tJ0*e6r5nagBU3hXR`3Ck@S zVJ+cT7VY+T~eVLr2Kz8np21aSbgYH=&_5X<{I9a1>()fagk8zRn zUMerRW!Ib8;1s79`IFxTE@@c7D&5Pr)a}h>*EGtPtfJhRa7O7Z`f_JyN19yG@F_my zJW7)V%kf!kb9Z-6HS6eqYW`-L+yT1B%a=P*ym;}V`7}3L&1n|%OnJpOieE1q+rc8J zxZbqtuSaILw%lsPy69PzirnF#O5Eebid*%H)}k%9ti5r;OvqaRgUmR}E2#w$xfJ9g zawSN40n{l6K9D)?0p(HzlnWD3t_!I`izN2)-AT!!ml$b>-rLu|7e6Mux|OHc_Z^QS z*w1%@6f|h3$pLaRp*jwtn-UGt!!RP?ddW%c4)l?ea68aXFbW@DHT94`2hf4M{uGCF z#;jpbPj=NXq$@QH%h!nBTf?Z{SHqazU&FYb;^Cm4ibum@{X!LT-3qlb{7cunwq%ErEhas6UVehLhqx?3 zyj}TfpqzfI)6c0Vdm9ag?*jV@&c2Exy!MCKjiY=I;~1YS7{N89VPF(CJ6y&%zQF{Z zBZD8Zu5D!vkD#9wF^>YuoK{13tu1hyUy1@1B(xec?d-tawSdSy}X zV?=hFT|XSioMg~^iiW4;hN=wECxb{yIEkiF}<_(EF`)p#56G!$wpxQ E3)oxG;s5{u literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/GuiChest.class b/bin/main/net/minecraft/src/GuiChest.class new file mode 100644 index 0000000000000000000000000000000000000000..0be6714d095f8c41bd752ec2e990444ad90c80f1 GIT binary patch literal 2473 zcmaJ?-*XdH6#j00ZIf4mzH$P zambh}x@lLehjh#C^vi77Q*;w-El#G( z6`Q1lvkTgamaN)FIhi$wcFAC--A&@DcPD$ux1w3xQ4YiIaEdjVcEu5QIPDIj?r=t+ZQ9oI_b0Ta z+E#}PmbThRLb_tPT;16c*vo1VNza1|4nB&-bI1rX?JWW9#! z6ir}9nwQ8zLz?6#mUa)rl!|H02zVCr0zFM~oTy(HsUT+YmV(;?2Y0sL)-n}$z}l;p z!`v0KNdM;Sx!k%dQZ2a0_DB}1MlxUT(7`3M7{a^ADR{3bMU4n5G|aio&*%^As>NNm zHD-;XcqW7b<`qbL#VRJts|&?)va+O`9Ij@EhEx<$5(pN{Kob6SkV3(xkeHE6Yc~C#?wu-9M1WLM5Eb-V1tg3hb z-lb7l;u>mUqEgVxQ#?+LCdS&<$}7^$bGlNs@_O2k$EvMDvXy6GhdPkKf7^3><*En$}F%VUvfpD;t3%5iS z=@X7{&hZ)I&oSV^?Z=9sCAhZv&$#My^k9vjh@UzB#`z!g`V&V*8~Vh49LFi{a8FiA zbn(M|nlmYlvVOvm&QS8u?;pI1*I45|{Ds%K-p3t(LW+_f*YN|+QVQTEHRmWP_yS`! z={zCh2yHSvMS)OokUzl(1oexPe)wDtagpy*!CyYlahY!~Wj1Y3)aUg|6JOb`;f~w}R;0S7 z$Wh}Be=L`TrRo1r`{c>MAZwgNCqH_JF~op}$^9vYID!RMNLFmb4Y6J^UJ;{s#01)S aW1J!X9(s+@E6CKPuUj#J59sT`hyMX1xjw4^ literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/GuiContainer.class b/bin/main/net/minecraft/src/GuiContainer.class new file mode 100644 index 0000000000000000000000000000000000000000..7feaa9c626b28ecfa72c903d9ab143b1da31bfc3 GIT binary patch literal 6669 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 literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/GuiControls.class b/bin/main/net/minecraft/src/GuiControls.class new file mode 100644 index 0000000000000000000000000000000000000000..7d01b86ea32774dc282cf087d0513898ed9de67b GIT binary patch literal 2675 zcmaJ@Yf}?v7(JT{f$*v!f+zu{UX!3AT5k<1B@~;AmkPzAZFNZ&SPh$Wvq7=<*4{6F zz%TX_{n{CUQD>Zf?D!ix)Bn-wl%6NMfmmXhN%p-w@AIB>p0iJQ_Rr&|0A9vVA^0?O zS%%X)Yg$Iu)~B4_lAY~6TQ<`L%drdjQV0PJvAQ9nS=%ry4XUWyhUHYJT_gV!ozl=; zs+=1$oxGtTI&xE=(|hx}HQhVv*rqkjkWiuMm<6k(p}Sr(ebyK?9EY(b1~*QY9j9Pr zavHRZhK7FAGM&>J2IBS3mQ5FDs@`U8;>5UyK)R4K!tkR-VFRKX{PDziBU*WBRi7qk z*rE_Zql~sHG(*X#Lm`L;8FeZ&A*^B32sOS?o}D!8F@4hIUdZbCaosj$?kxtK8I#0! z)Wf${7V-|v>2{y{I84ceHR~of?orr_eN;N@7IDNZIT|9a(q+fY_sU8tgaieyU#wX@ zpC7E~DhYcO_Csk1-Zpd2jI10~=#`a*8N-~Oal+`skr0Sud!2kWvMSo{C>5JFoQstj z51FN6UY~bMuc0lTNvwB77;zkz5}csK@k}POJ|r>Tj91Vf0+rcVvD7M2g;Ss({CbWS zX^YpKy*PQ($U3RS)h6N}P`FCyr@nu+lcZfI!#Z)X@RoB5n!H)4_~Pj`oL9XW9Y+sJce_4-I+Tq33w zW?<5(da-C&RQEuw1FE4lrf`?MyHbs~#ml<;CDp8gg#urGr%?54YrKwK>&r*}UICeb z9vho4O0k3SbViW&!BHquMN-yV~K^kt_E|jfGp+8ml44<=aPq95*rY44MFloJ3J6scy@?&LXMXvZ# z;VXR2-Yr+8+4`9vS5@RhJ@Y=7XPwq5zR?2Sk8c(3;sdv-9U)J?I^oem+0GinrgY3m z%`ekIu?Jov9zTE00`N)0t&G@=`SeNKtvuP1`3y3012*z|6K8qu%eju^G9t<7=0&t6 zeT!&M_AFvsa{nS?zgEt6NlYbg6YmHzV~FR&Xl0|{#=P6P-|c3?4vyrngQyyKkBoLQ z*2nQKM7^7z5tom9^Zxz?3?v_7_Y=e?VjLuc`4-&I#e&5aJeaw`l>?E6d}M1ZaJMpx z#g=er8OI*sqz_l_X__30J;a%(Kd(G?6Qw6w@VlETlFNA+TJXz_=xfV3>mC$heh9HG zBm~k4B7!q~UchGDAvGbj#Rch+@?nIe6e+yUJ^tVDH-cI}70KWYkJq1^iK0dSsRe8o zIGvAh&WGQS<|Nih?2EW~&!=_D)J6SA&qG`$;sS|Tf)Qw4kl%T<>+~W>l0CZ z8Cf|bi%heGspw69Eg{d0YjpNfS)iSCwvt{uf3spZhEBHiE)0>>2+0&!k+qr?S8G-z zy&{?TkYt47Q;0SrAVfR7$hshxpw`8z1IPM=BUZ2WDEu Yu+#H}thvI;=sSE*eKh>QSRa1;7sYLHlK=n! literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/GuiCrafting.class b/bin/main/net/minecraft/src/GuiCrafting.class new file mode 100644 index 0000000000000000000000000000000000000000..c33f6efefb755cda9de6b4acf1d7523da77a2b4c GIT binary patch literal 3645 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 B7x(}G literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/GuiDeleteWorld.class b/bin/main/net/minecraft/src/GuiDeleteWorld.class new file mode 100644 index 0000000000000000000000000000000000000000..6bf600e88321171bb499b95765e8166f6f3e10c1 GIT binary patch literal 1922 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 U@SIkV_E}6TQd)uM49{TYH{996#Q*>R literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/GuiFurnace.class b/bin/main/net/minecraft/src/GuiFurnace.class new file mode 100644 index 0000000000000000000000000000000000000000..017a4befe08d03f6628268bc98fd60abde6764cb GIT binary patch literal 2427 zcmZuyOK%fb6#i~J&cx0nOai7n;_yyw2jYf?G{ukx0tOd{N1TR2Tk45DaVBwQ((yPU zY}g=G>H?{oN^C08F4(pbHGQe-rYySXFX%6+D(H8|#tF4Y@|-j0o^$Rw-+B1Y7eD_7 zU<~(EbO;RCrk7l`Y_s4Ri(azg7Lu2$R=VoiM!{5}2n@E>n09Q>pqVS6FV?j)_PS|% zj=L#vEZb@{XO+#1wr6>p4eu#|&NG&6d6NQHVr?v%4zHJuP18-aQE7D=pBGT3ouU~= z0Nol?Xaa#)d_Dw$UJXHXN>10%hki<|S5fE6j#uG9cG*}rl2y+tC$mOqzb zyOg}Puxu8*RQ$HUjw~y3wYs`sx^u=t*%au{It8OVZ@8BHZU_}`$zrC1ZSdTxJ*%Uv z8}6vUkv4kGup6bRE1#^Bw*^F|&W;K6S zP;`xr?Kr0$*DSeC)h=db+sJAsHM|9;qAjv*XHC0ky0UW*w#h8LO(WF>=At(GHGrw9 zsW8Sdq2iskbFtl4!@D>w5SG#9JlC>I0(-XCtuCyWy$fdqLQM>0$del0!;nC5GiTjn zC0o)wPgJ+1NxWm}dY4aYxPXfS9jgU_Xqy~oUd?+dgiFY%xGb>073`*(hWBxW=(#>} z7wr=5+oM;a7fT?*qGZm7847QyZI8fK9rf+f?NGw*s;mv_F_ z`3(f)nJ_-UO%YtfIFhB?}q~zT~c~jg*)g7Nw+f$+SvK+zSFr z8Z0a`B-sHCuf-XsXq0C;uZ$+fiT8&-jA4{Dtiq<$s+{LK_1lG8>$W^w)9@MCuKS3D zJe;#u%~^Am>z8Ud&bP^(Aj2gP!|*gzrFMkc(~h%p-E~T?S*g5I6zTeCo+7k4r|K5W zG&eJs$JXqR$lZfOOd`O)3O175n&blHRdn$kqS!&0a^QL58N!LLXThm^&lXkosVDsF8v(c@(|U#e2YFj+%lr7wE6pcKfgh~PotObE-1`0 z#2gQyo3pIp26kW`I(wxLpOb#c??;H>YwX6aq_Fpdy2$sHw* z9mt`AV;CZyw=jV>$tj5OJc`bjyh2eSRK!&b)97CW#fg6q3LT`<35MZ=&xQ{AE{B-j zNdHOwjNaKlR>LX(Go^Qtp4IckVBVL?-9@Iz|f-%VbBj)`UHch2drQU=jykJ zX~G~2|1I5}e~NT}wuY-`H9kLLt|1$!;WpVj{29eyd6Klq-&ykGN+KFj0s(m>MKzR2 zdTLmCgrwwjtp;a2n272VdDiY|Uf1%GV6hM1=^Clt8wm#U4J&<54HaMan$$gZVBlreMABM~9ZKm3QL2`$& wP9S>l6+H|Qz+v2N)NKMQjk?|8O&dH7(%0SwCu_+md4c;v@V}5&68_Eq037a0$p8QV literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/GuiGameOver.class b/bin/main/net/minecraft/src/GuiGameOver.class new file mode 100644 index 0000000000000000000000000000000000000000..6b435cb794a4f52312f4813f84c21bb2f5c7c21e GIT binary patch literal 2510 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 literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/GuiIngameMenu.class b/bin/main/net/minecraft/src/GuiIngameMenu.class new file mode 100644 index 0000000000000000000000000000000000000000..dae68970a01611878e0419d8b52ab2893b92c973 GIT binary patch literal 2602 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 UudmbNHEW`LoS8JtX@^w~e* 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

}ADDQE zd6Ma9Pe*!1CXP&$*W&RwW0*S`6$X|gyYa(g`$ebGStqo24mY8f1kG3KS@OAH;;~HE zu$({8n|9laW_fcf4BEaUj4zpZg0Hzvn{4V+?K?V@p)Z{>GV@&?Gie+g97u|1CcXhD zx*#d$xR4CsBwM90eHwNDi__JN&MLCI0zQpzP1Nuu7mze%mxFfL(DSa$`oQ5=;)e7Y zZxcnDpA`cs*&S*r*_>E%Z(_-i zrdbe3jQABX!k@$}Cijjg86_o;81)ODjUcs@LHdAdie+cGK$L0rT3X&o{WBRf=rL{W z;VX;z7WrJ@Lso|73s3j3d}u9ptZRvNeB#PJR*p+9cDiE_nDpo-yL5+e1g4ebID$D% ZdyWX07ni9?QPU`4m1Qcd@hye#{sR**bgTdX literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/IBlockAccess.class b/bin/main/net/minecraft/src/IBlockAccess.class new file mode 100644 index 0000000000000000000000000000000000000000..e4d312a16b0e2484b8403c24e144db124424f6be GIT binary patch literal 380 zcmZ`#F-`+95F7`%gFt}f0Z51j8m^(E0+dLW2ozA!ZJgzBaD0-_LE>u^Jb*_b_N<%| zDWdVpv$H$1^Yi=l4d4oc936!d&#{=UQ$G&Z|h|Fp$ck(Ww*Jla} lTap`)Ng_MQ&?J*%H`P6KQ{7+U2k52$A&z819Lw85{|}d6VR!%l literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/ICamera.class b/bin/main/net/minecraft/src/ICamera.class new file mode 100644 index 0000000000000000000000000000000000000000..eb591bd8faa44a5cd8d6fe41fbe7a122a86c2f10 GIT binary patch literal 216 zcmZY3u?oU46ouh)tF~$#oCJ4=x|qeyskI0NK|yeEi#3)=n?RC^&*tC*_)uaCZm$1u z&iDR2UjUW}19*g~5{^|;iQMq3W7gy>Tk}d79-vDY-}s%glBW2iC~--W)%-*Vt#Es7rIT6_{3uP+`H?U@=-T9BBTGRT d{S1rt-X{<`jT!J7QV%{_T7Z622!pm`_yxcyH}C)e literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/IChunkLoader.class b/bin/main/net/minecraft/src/IChunkLoader.class new file mode 100644 index 0000000000000000000000000000000000000000..318ad8358c858d8e36fcd2603b2937c564b7ad52 GIT binary patch literal 413 zcmZ`#!A?Rk5S&He$x{^Y?inujqFy*6CNCl3pwV+JRSVD7^cBLldGG`LDC4#oVni<8 z?Ck8!c0NAe-T|DWm!U>DwK|9wW3}?~F^I}5QH-9Kb}?~srhSGwp);2&DN1Rd#PngV zRUouV9w#2*vOn1txp%&t4U1y%&n)c?3Hf-f^lLEARvB7^ljLKZD5jeUTUBzUf2=Nc zTkZ52+!1L7YC`vSE@$!7CV@9O mOrXIrHPGZfS6ot=iZByH-RdFe}YuuO$?y?kxfKZ|6qPuZ2*3>u&Gn3%6x$pseDDlpS zi()r(nEUhH!}7fswQG`LzT?~VcFb=wh{h$Y4d2_;V2ZujNp=XBx literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/IInventory.class b/bin/main/net/minecraft/src/IInventory.class new file mode 100644 index 0000000000000000000000000000000000000000..ee3f013326ba5aef684325a503fed7a6d817e451 GIT binary patch literal 455 zcmah_y-ve07(5qfpwK_45Ca2j$wC%3#!5(*B05B3H?9dTi7h#%58JJFEeEX|7TilukjR21uU!`T!O;}yEmw9>IPo%Q^Q zYEjF$e$XxLi<9bB*Q7h%_IMTa`wYaR>Vbr6-9sOt-URy*4={*$h@*%@j3SPIcoR%% KlI-d1;p7|PAbX4e literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/IProgressUpdate.class b/bin/main/net/minecraft/src/IProgressUpdate.class new file mode 100644 index 0000000000000000000000000000000000000000..544e3e0180c9873b646ebfe48f8c931712c3337c GIT binary patch literal 253 zcmZ8cy9&ZE6g}5g>uV5EcelEj#m!w16a~>ewlSpCR+1?AYYu*ZA0?*PBDmZO=XKA0 zy&q2iGjs#g2;)pxc2=2)G(TBpbi|fhol7l@*wD(A7oz6_ynge{>eir|OK!qVR5R~?CkN?q>Y guh_J>(jX8#_YmN@o^>=(^bN}0M9VQQ$jur$A7V^I0ssI2 literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/IWorldAccess.class b/bin/main/net/minecraft/src/IWorldAccess.class new file mode 100644 index 0000000000000000000000000000000000000000..966186dda753121054fa08144d7b10c53c71a78a GIT binary patch literal 448 zcmZvYK~DlP5QSe+SwT@iFKRR%*Nc1c#tDNYn;0|@^<26m7D|`2MZ;h7;1BRe8QYa8 zMlbU&-f#z~?4rKA60&j-4m4;`2KN;~NmgNf7( z$MN;w*k3>^SQ>^DaZ9V7=Df(&R;o`rBSXeAti=JZ`lpSct_;sKR_i+tA<7J%^qm8d kZ*v1>gjOSL7Ft2I&@F5iTEkAEyGyO3;hhXkKTFvA1aK90g#Z8m literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/ImageBuffer.class b/bin/main/net/minecraft/src/ImageBuffer.class new file mode 100644 index 0000000000000000000000000000000000000000..ff6dec1be8891c12b04bc789143a1081a470f49a GIT binary patch literal 210 zcmX^0Z`VEs1_l!bPId++Mh4lu)Dr#N%)Hd(qQtZk{o$ccE z!~)bsx0NcfOE)aaf=ZA`RIRFRiYhi;^dnX3s+GE~SfQxyc{BEeK$T4u^5(w#-n;Lf zbMAfNhku@a10aPfDgpw#N~V*Xwn}EfHYS{8*)AmW)5fHEYHnh}w0mc6m8NElaTP%U z{f04bB&UqhWO8WihFNe_gaumH3?NWv$#A`fV+aJUYtXPkpuV5U4$e)Fnf4`PY|0df_RkcIsS(4rmbmm zp$-vgHECFnh>8}0mbIcr(2Q*o=-VVBp3mnyMx?7RP>lDXulZ8=gYZwnJXfRu`ZEG0kT|JtbG z5Yp6%!DTghYVgpT7pyF2R2+Vj@|E>`$%&vFM>S+{j9{vKP}%Pg_7gY$;HUtrto^scTe zZ{Gp$LsB-aY_G}4YL&54Y@e&1dC2>a9=XuXB!?ZNaC5+zb=yIve^J9QF0p@#MtLQz z!iPS9s|qTWic;a@z$P7@nX?P#X-hU(qgw#0UxY5H723H~;ctjzKoZ5n0a^6!mnF|{ zi0kZJjvF~k@++h_v4r|B-E9pV!>)53qO>({12*9;&RFNz%#nu!I~hz~@uKs4gv6tS zo_&HX3BBzJwtj`?D~ZRPJ;v715?TlLETV02Z>OS&MeH2iyNE=BE`Ilai|$1nd4l5! zMbX=IeF-NRL(#K(+Y)jKMb|y^gpv;GZRyYhbSvrb1MFt(xbyg7?w)|HJHgMBEA_SMzA)xDi3rleY%) z73I$+>>yupvbCRl9l{ozMkCH+E3Tml6KqclZJ4EG^L$M1ardX#iO)D+p#KYW;1Lp7 zLMOgvXFtbY{Dv<4&iP;T|II%bQkw}^(ic^2s0430Lv?oGN1UYJVc+$lQru+?@B`pR~RL%La1nV|Lqbio@I)^j5hHS zftRR@uAYXO1AEY`82rRLRmRFDnp;|9!6jU{k94!tG|?h8ZK`Q1Yo~bq{jTWc+e5C5 zvEV}GPglm)h04#eQa$#!x$%yW^`m4YLynJ;uMD$2iW7VxBui(#JAIb2WJ&fQ^Wa*9 z8A>ZpOL47pw4|E*sw~B*ipP@Vp#h;~M2R>gHWTklLJG*Is0#5r9+ePNYr-12vo@?I zN&@t9>?5?(EQvnK-iw2jas^V#hm`UmrF=*!A5x0KOGt_jscsb{7Vk3u^H76CJbas~ zc>dry+2lDF&tX@l_-dKnXueSJp)cAmHPN0a4;jW&ZMz$Cfba$hZ-^aqo~m77g%9E| zSwD#p7v@FpY9D6Khne$X=6skrA7)QgxjH^@o^q|!&8upuVZGGQ1Kci)mRLvW4&c3i E0h^%j(EtDd literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/InventoryCraftResult.class b/bin/main/net/minecraft/src/InventoryCraftResult.class new file mode 100644 index 0000000000000000000000000000000000000000..7ee257e833ab4c075cba9454b5b72e50945b0934 GIT binary patch literal 1362 zcma)5U2hUW6g{)7<)cuL*0xAni?$Ugl~{eNQ4YP@N@gh7;6S=*z%z-pi>fskSY!pkAm#+O9S5 z0)fqHyEcn=s$g?$`*#Hd;Tgio*|mq%x>T)oCVpFi@3{Sg6mHO>zh>r+*)^R{sS&7D z+y9krpT08dJ%ROqh|6jAXZG93tJRTK7>^3x=x@RYWRu8@K0B7!rD6*iZY?gTBfHUVVXn*8nHqfN?6q?>NJZqvCeX&Q{CO< zGKfgy7PiQ>tr>;#VF$OPBA)Vv@;#+9H>^oNGTMT5mcF4=ZH94is#KgR#Z+62=I0yt nCpM?>_+o=9GtH^RbFxc0s6p){0G!u1(8rb~|A!f@67qm`R2!;FW&&H;EsWaz!}%}OKr!so1XR5 zFLk|Usp{_9uHW%qt;%1HyJa9Ika%Y8TBVldZj~NxJhPj=fkA;xpY$+aV7TjB&F3|z z>kCXjsr3o=?RH(pR0M{$JZH1+ytV~IRbX5(;`Kdvxjqp0cbwIZ>szeBBg)_n$94Q$ z0(1HQ1y`$uhCpn!vuT@%Vmyu!Bn6`RLSq;L$Kx1=X&@z#K7zRnJrRe2A-Osg$1%hO z#%koVw$t9Qy~ox@i!~){ou<`lSe_&I!Oxh#?R3et57n^jeH&O@Y}fKG>Zz=!WjeEE z`%<M_A&4uRIJHYp#^7itH#*L{y}REAKXSNo&{ zMmE_y>Kg6cY@WIvdCM>+u^7h^%>53LnI`Z%8V78y_)li#Cp<(j+%W+)6oPgPV(Q>p%0@)*3vr<*%1M5X#-ifZ#Nxa^IXj8J|hJ3@i%z9_XYufi5*-NQ|^WcpxNuMyw4vg{};24oD z$(J6HU94s{Cg&lZk6@JJ7`U2(`*FHlkLuTuFwfaVB6;;w+;E&=>)M4i*g;wO|A-|PRGPq?Jd%8Y*l^Pe~& z`9zf_Wo2NR;%6!SG{+fgk;4LwU!tJbxVuYjYRKa;3TW^|TC<{TTMq?T4+H?#nJul! zVw@OPdCxVj_gCP3(WT$W8kqdWTLrG85>(w_Y?RmuMR*}B?4Vgj)%iuXVVSMAteE6< zPRJw?GD(ohRWcE{5w=EXO5)Dp#<<+ql$%Hf^yW!Tc9l5bqdV$)Pa>bZYF2?;42|IS EU*w!_DF6Tf literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/InventoryLargeChest.class b/bin/main/net/minecraft/src/InventoryLargeChest.class new file mode 100644 index 0000000000000000000000000000000000000000..dcbad057255eb5681bef90023dcd9368b7c94b4c GIT binary patch literal 1781 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 Q&+gx2|L^`itp$AIr!cVO3jhEB literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/ItemArmor.class b/bin/main/net/minecraft/src/ItemArmor.class new file mode 100644 index 0000000000000000000000000000000000000000..874e9accfe81d43e8f57ce1d99b537a5f136efae GIT binary patch literal 832 zcmZuuU2hUW6g>mW0^4obQlS-EYwH(X6>Q2fGh*&z^hd-gEB!{`2D(fEM<%NC{L&DryA&NO_@r8#OLMuhEHA z&<=xfn1vxwzP>j(AWP9(mY%=%+@;m_Iei5xM`z|3ftF6=%$-Ca>#3R z%Z8Pp+cxY3?b=vM&|Mq%kf*OJ=laeA8#T?^WKSaLeK_$yQI8Rw`xgRR-RsvI@Bb;w zrZU`5!a)+6NoWaJC*w)zsh7U?w{rDr_4jfrvBS}6zO#vnUJg-3uZD3|yNM&c#F6^r zNJoq*=9jU;`vv~JhQSkPW`A1!w0YDwoZL}A;}DtV(Kk3T?=0zrqZ0)toMmQ;UwAEr z8$2yWu+avklwuZaU&i`k$Y)B;kZ-!x@7QoR=cu|RV~#C%YmROAE1Z&1pJRupNMxRG z&gQt|vf}=~A-mKKzDkDbE$Vluzr=H!jvu3l1FXfvTgfQw!DT&%;vs#D7(F7=Qk%Sy RkN4L^oycImK|X~ie*xLWm0kb< literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/ItemAxe.class b/bin/main/net/minecraft/src/ItemAxe.class new file mode 100644 index 0000000000000000000000000000000000000000..d3ff0749f7f4dfa025f5c73e7d8bd0fd43fcab93 GIT binary patch literal 677 zcmZ`$O>f#j6r4521miXzZ9@srnj}r2hoV-w6;-8CDp?}A7$Kpa7PABwkoi4vUCq8CR}&f=*ECJKFO;h949TPep1 zC|h{0fV?*qaZ&``-9jD)!*-9Ba&e7+px0$gX<0y&1Y$Q_&kYs?v~(#` zrMT5@I7vis%z%z~0s^B3qKG9hjtL#F2u!_%`ekR+gK zU=mY=+;#$mvF-@Ab-z`2{B^6|BwniAwykE>@?E*_8?|7^?FgJ00;DP7?A^iu=ZY7&!NFS7I&l0!{*AWZY!piTGPMNW##tR_hPGQ}G4KvzEUP0^R@`sc zz6|DcWCylN;Tt%Id6HpUp1RzU!-8z5ag!~Jr)Bb5rY2!>2HpkloFeNga>EUFR@;HQ zb-+ndkuq=`7Y&Z)We!U_L=5o+P7WgIKXMFSs7U!1-*H?ViK#quA2N}fJ8@CnKsxIH#j6~D5z<=FBCq?ebMUrtpl z%GWk*;=<_(CoWGC|8I`M$cua>10qAV!;nj%V58(PUkSz4P+S{){KfQ-s-kXNd;Ld~ zinT_O>k#HqXjsXoqdXAc6LJG>nAX> zzhX@3`Dho%yLfHm7j^V?t|=Y?A)*8sBgjc4ae|h~5D0JJP3{OuPmE~J=J z1guxu^4H_@p z-Rq(>x5*N;#uF}&dBq4MAyt@MM@h&SDVgA!;%Z`wl+0k7G|b>MDaw$Vb0i~AIxgc3 z=lCoZkj5H4HDs}iIeg2ArT(aClXBUf o9xBwLN?WHUJKw_{N}aj3S@Q;K{eo5l@&5N0z9aG`Z6m1t3)A$W7XSbN literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/ItemBow.class b/bin/main/net/minecraft/src/ItemBow.class new file mode 100644 index 0000000000000000000000000000000000000000..06bac14fe41474593f71ce715bef5a171fd7af68 GIT binary patch literal 1418 zcmah}Yg5xe6g}G(N<(;6{~p*?MILo6`_BH3txUTaoaSKvoTMH|{fVCYn#qKiSTX#07gm3H&S zd!2!08G3TW_@Y)R>h^1`Xwq&tXO%RwpxK68H#Y-f+o&>(m!TH9pwLm1@(8}MY_seYSm(kJ2QN+SK(|v-k4nky!iF$_p&$ks##&|n ziKAi|R~SMDuj^b`_5s7B7xM3LlRZS2d{xCL#u(Z(+qN1ELtb^HC?%7}RZKWORJV;y zp_j9~tnVwB#LXaXFifGTOVhXny`b!qC)++jWRG!&wfOj2;GAOpj%T{HkXf>q& z(<(R${nkcQjo-K5Vy&}e`6}Gbq0u$((RQ*amegSf{q*m?-ZOBD}5J<_*F&gHEdFRuvK0)|WLFssmUY0 W`Slc8!g)r!ez188Kc`P0a=!qY+jTAg literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/ItemBucket.class b/bin/main/net/minecraft/src/ItemBucket.class new file mode 100644 index 0000000000000000000000000000000000000000..129285cdb3ebaf8464f12b5496d19f20cdfc4f9b GIT binary patch literal 3289 zcmai0TTmO<8U7Bew3av^nVT-Y#BmZEun9J{i7<9bY)nxKwqsm~DQUV$3oHmpl@@H` z)=iuAlGaXoNn4xrk~XQGrZ?=^IMZg@$IkR6eQ#&_(8)}vlj&3M$;AE6?m{%fX3C)b zzw_V!|NQ6d{_eeB{u;o3+}2SgusLtq9dlOR%#@5tyQ5snbfj%_?#O&**0gnK0?qy! z0zs?XKcCA9h%^_6th{AEC=h5#r&~t^w4;Tr8Adf~By>nJTF4JUpiUx!pn#k+&JEi} zW_H+m!c>Bd67@&kFcwFLy!!BF-U~eN&6#rDp!xE=eRv{ysbyEss1dr+%^)1Ai z8HqC(<6f4G#nUAtV;;#BGPC8!vju_2{HD;Y#Al9N!I)q5Lxlw^KXqbahHc{hS!!N- zLKw%#bv!1pV||bPEF>OxPN=iA6lY3#jbnJ!;w0#|ySKxhSA3y>#oCj!y|} zTA$k5Sr74Yydd!zJjvrW;as?*ZklnQG?f`sJde+*`}8Tg_L~exOI@>hd|u)Us&*}B zEEp=*mn5E1vBGYwL5Dq#uSi@}`=XbvtjQf!1wJeBoN7aObz{=mFkOC4;_LVZRju-H zA!lWIDq32do&2W6xA1L&Evp@QD4!kjT36Ye4Nh~|9hJ}(iKU9-kIfZr_HWAv6z|@T z0tp|vd-J-t`96VdJ}Q-Wr+5ADcMT4>q{}4_xTKpyquvmFML3jR{Q|oO&eNekN0$yA zN{fFsfG-hlBCjriD)pKrsv_30fzJ?ES+145xoy*Jgxj=RsBMe(-a@o( z^DQ)7cl4W-oYtUSfRj3gYCBvKJKVY3@iYp3-lCiEYf z(%Nrg3xD@0IvLYuCQ<>y9sIQ_>av1_yZPIr=u}L*G@I$xiTCl>rKraX5qI--cc0u3|Nmio^m+M!`ZVx{8NV8)K1JbS70Ft5c+* z5huGF6ScAWOYz3p*hc5spq?u@b+CDNqBhaob`uRt(6wvOs#oyQgRw;Hw+QT7PQ-5F zV@o2a=qI}3ie$PHicEGTU8C9EP4T8gQ*s5?4a{A|&b4)U2}y53r)Nihh4W`_;M2G9 z+2u7I+B|&~SJ&3Gxw78oi^@ht{qhomPbcm;PoSMyB@WiBNa8vNXoUmyCbr-$epmbzcj0Z0`rok~@8BL$g?mK^_lYQW zh<5B0-DnYg*d+|?7ISD9=dedSiM`?}>=zetKs<+(xQuS`0uG6naadeKuUO`n$!mPk zzky@oHy99qB!d2Abf;f+Bw5Y>H zR`Ci^1eaOUkBOpqNsO>J+u6Za#R>d`s2TcQ!a zz%na%2k)|{LBvHB{(&1r3HI-Ac#SBDo2>R6YVY7rXwV^aoYyg;V{27aRdsc>j$Q(V siNFU%z5KsJtN*L6t*MK5QKMu0J$^c4u~(WdRu~Pq(=I#BGPKg9 zris0&iFdszF{v>oy{Q)(pwr}t!1xsJ)iDOdG=b;b@M6|f!fk?fykhfbG-8cN=vGBhR2wjv114! zsw0d@6awWsbi@UsYt|P@Yt34*1w=|p5;`iSM5kohv(mSxo%<9fCYZ?7#@dpdziKUI z$*G=j(^huI$~*GAz*M|dXILUNSD>R89|%-A>wdXYZhpxMcQm`lAA2d3m}DCvTDe&0PGGk;Hs~rc0kkpK-s= zN$XDGn#QKxjeOc3cjQHm7q`mUTh?6*C%FVdKBCG; zJeBVdDKn#n7WN5pA|w<)d_$KQVBG0xQzsZNf7iA27`pa2*;n~KDdN>Oj0_HW0)cS zZqWWFn(>4S@OQ321ubF-tzr~yVgl{rGR}xObch@15*E6J!-baR+Ij#}JVvkhmOJW4 z^of_~_u=<_0IVYX#4E<0B{C}sMSSWSDV34F zVyX(5EBX|==Ry7)&nQiV{FQgKQ}4`uS<{{!(Fb)u-Fm(VFF^;79Jvm6$G Qqeh5mf|XlzTZW~70frjHF8}}l literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/ItemFlintAndSteel.class b/bin/main/net/minecraft/src/ItemFlintAndSteel.class new file mode 100644 index 0000000000000000000000000000000000000000..faebbc9d0a841301703dd92dc38350a6518e066a GIT binary patch literal 1509 zcmZ`&(Q?~F6g}(6lIVydJ~D5QiGJ8fe~n^15_n${7xxS_2fnPK2Tv1M1SEOiv6 z)9}Je$NWQ|_yAt$P&2~=AHbylz=w1SXIGxggo@S7?%i|mUEOo`?q9F}_!GcYG!0|~ z<^wmb^t`}rMNTKK>_@FiJ$8Gx?*;K@&~C=A>l@GnrqTli^ffQ=;&lP7R4?yvxf!Lbs_d`&N?|b_K3yt*JPLQawvd2#J5q}g0lHxb}Jofw2|KzGNt0~T{ zAok+JJHB)1Mrr=tF!I~gI!F220?uOAz>L83n-!`+6K~_3K%wi#H~g^mu->MiC7E2; zH~!{5apZ8G5_Y`EUGln=+Lfx!n|L1!0y*w`_nd%v#l{2Yu~RvSJ-;H6uvabM1C$Mv z1SbCLGqH$^6eDn-#I_$gvA{^FY-{UBM=!OF#?ebze8t3vpk(8Z$hR3D1nsR($89lo zrc|rdk{|j`(5*D%$P2nv+b-|qaRn;|uBNh9EKRK9W8R14BycW8Wff-AUCrYYR1JJ8 zF#D#4$6+ScWDgm8O2nG1eci+cu2Yu%p|-nTe1AKPz0M&6rN-)pZlGr1X6os(OH?12 z*n-YmYOD5?aC+6p3BzVv7MM#RccO)ow!9*6HYGA?rX+-V$_8FZmepjDDiXXVFs3TK z?K~R3jRLPLYPq&2U(b}R?8I|elKp`5?4%LZWEom~t(*<+?;^twm|UFw9l1sA1qzE3 z*I(e&uLLug}1r&!9ie z{$m;1&(aW9oHE2^OS7_;KERpPoRxcqH3C1K#yc%5n=HCoigV_3 zyf?sw;-v@0%X z=Wqt|m_?bd_7dL3GLaP`n|zBl77*Y9ex&y)-z>% literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/ItemFood.class b/bin/main/net/minecraft/src/ItemFood.class new file mode 100644 index 0000000000000000000000000000000000000000..8bf1b582fedd50bab89f64699eeb7c1c1208059f GIT binary patch literal 880 zcmaJ<+iuf95IvK+abujMgwWC?Eh*Q;6+~R#f{;)}rAQG%q$+~9t!>CsUnFN!QN9YK z1|%N%06q#ayKYe>3@_ukopWYq{PWlM9{?W1vr!_nl28p|nS_2O-l@SX^9Lgp#(QZR z*sus|#dU%+4Mp@UPUndt(1=ieA`_{e5|(?TQU8Eo?WRHKUCf?;xOV&W1RXTIuM!E@mbPRQ#m7a#>GSG zM+{l^SY!|K&qG#B6aBzf^8HlpM$$hb%zOVJFcS?6im%fw3W^HP6D8Hj%SfDr*|1-L z)Y>_11#N8F=n&e)6Et#b_>?-bRqxW4n5^Ci{+YKF7Q3N?=FM#sx>e{`CxbIa&7v5wn}WLDh4 LUB(i6hO7S@I{eEQ literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/ItemHoe.class b/bin/main/net/minecraft/src/ItemHoe.class new file mode 100644 index 0000000000000000000000000000000000000000..a24da72623a8b739e3865aa40425e2dd69af76f4 GIT binary patch literal 2577 zcmZ`*TXPgu5dJ2a&15$x$!5v214Pjw1U?h+j1Z8%2l1wr?8+Iol zLA)b)!yDe<1ud(ztl~kbuvAHvPdr$b{sXK09hN2fotX`2Wyr&HZ+D;5-|7BNpZs#? z$DaUf#TOdN6g1d|)15VKBc0bLo$f+D-JNud?EajgK~=EU->slxr)itcZUuq1WU_rs zfx0J`F+wOuP#}O14Q;dsp+E>!qlPl8FOE8TdUn)2V<=FP(is-0lg=QWLwZ)9qNjG4 zcn-~HQ%3%Xp0a3(4Cm6iHKylH`MYFPooTb6plR42BabjZ6bpKOizgmumYgk5ceKDg zPqf``N8(WT)rU)(NEflcUU->33=f#q-U!Qsa3lm3AqwxCA?Yu~&Y z$-Ov1LXrhq%B{qZMA0j-9er$F#>_h;>izOCMJIaXXFy=5Tv6qimStoTreS5&ILR)Z zae*iBBq>mEjJeU=yv+lz_t|rF#myq_!CnnRq}Xcccf$k{*hg}+O?Pby>f73fXY>WV z+tTf+?olUi+Eea^Nr3}+iZB>Imb2!wWFqUHkjV}T9Fo3D`bJDAJ*~!vfBj98;TeI$ z80F2FBl%qLdnYH2G|ST1HZ(M}I#nXkJ|-6)6&S-fFHoVxvT@UyK9qCJ$t6}>^2p`t z1fJ7y%=e)3zPL9+;JCcjp^SS=r8&q1&kMYOlk8Gnmlch8Q0Ccz?!&a?vOIMP84YPt z*{#Tbd;$h0iNiJ)outjv$eEE;<2^k+a+N7C9vd{z6liM%wqng`^|&_SxyTJGVZj3oqloN^_T5fO_#e>aPrOGmTa6y&X6dM}3i`}6u9 z0tKx;2>&IY$RjMlFB}el`9&L94W{>1eu%$`17gsyf20&5Jis`-2-C;Wq-6-+;R;#AOjw zVht^=-cr;f%3s_BYf;0Er52+mQ>{aTm#XYI1Xn_7>58h+K(wNW#@@H%kB=?I{ zwO!JOBTvs1F;Yq^jXR1sGTx~c@od*JPJ}Cq(68XaO4cuNR_(1S?-k#|icIxY%a|gj zW7RVvRy`TnHIwSAiOlxZ`q;y_U`l*69 zp&MB2YN#vX#dAW5ifGkW|6Ee9v3ljQPMnbS{8q7Q0*(BaqmLEsM;LMbhjE$_7g*)@ z81pr&{|)PXjkW%s)xOQ>pLyke=W89ndW8?O5rN9v6#k~&cDu_0f))fU7e#GBD0h$|7_2p$fH47UF#2QKuDa50$#y~U0sQAX z_yGLTa7i@r0elJ{#2C-a6x6Wpk2y1QzH`oZF0zuFS(u@EHh|nJ5wZauU>IXL}6HnA#Q-7#e#)a2CK&3 zZUnr%z2Uxd7?{n_zD7YF?$%0Y3g|j$inxpW0 z+@EAH>Yhm9af3WQPyfeEa><1#?|Xq8>_4jVea8>eKdJlGO3tP)^VCEaF6-!K=sr(Q z0xk5Qm%)7L1gq70dE2f~)zZS)HgE;~I#Qv=5^P}rgAA>*J=Ba%pX$fZ6T({JbHe3S z3)e)!^^%O2*KwVScb=Zg^R#-}3eALxVWdUpG7JM@g;Tlb^Z86sq&{ll7RIP;jUE2R zQx0uUf*4X^4iqMrDH_OPQpW^C-+5}Hd$K^PT3jnj7_9zw8uTG0z=;Kc(^4e2-&@-b9pY4Mb>1 zkAzm8P7mlDA=xt0cY?%-b_Da21hvuHCQV`zZW6qm?z$8l7tlc`GDIg@$r-~%TxvS~ zK`k{%R~Sob$yhRejO1J*nfQ#pLkxYy#MoC1Z;|eO=Z(^bWK4;;6eqZOjFHi;LyT*c zBU%ok2jnSAT!3DpEyl&7sNJ+KP~=t8o_Dn@R<5nPU)5M9G(2r+UGB02b^D?i3 qwAZBeHhGH4-6HKolmc?J(<#a#mS~s29lE8m{X|}5yG*ADR(=CyFC;bq literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/ItemPainting.class b/bin/main/net/minecraft/src/ItemPainting.class new file mode 100644 index 0000000000000000000000000000000000000000..3ea9a8c313b9585b003b7b8c13268e7d0cfd6316 GIT binary patch literal 1258 zcmZ`(YflqF6g|_&?zWV-3luB@qP8GZUInaCgAZ&1hNN0j5f~)P8Y!?*&iGJb- z@Wn(V(ZnC%Zz9ICyOls#yUE-$Gk4BC_s*UE{`2D(fO#yd2nh^ZhLf$EmQk_gj+1TL zm2AN=>KoFu9MjrW5fSJM_7PAXn3m~06o{k?nG(&DM%9QTj93CuC@~1MC6GY7K&&o5 zK9zO3YY2#fK<64`zTB^G8}=)?UE^xcTB9OsC25=PytNo{-kME;k+on6|77MF`#{<= zjMK1O{jZy3e3Smqv7#d@@ACnh&zQ7xxKWdbh8?uO*|2NXe1X5rmWnbV0k+Nsi642Pd-zM;TGbZEa zv2Rz5=ce10-4|cO^gDSVG0L_M^9cbVBKA2)m9rO|hiDTML#NOtx*ne({?+s9;Mn1v ziF*ER^zYU zLDU5rfs)gHLN8D05k0Cax^{~G`>|x~I|e_acgh9BljUz1k5o@M9FsgudB6&VfWe}0 z1@hVQ>*UwN^#Mv8qNq`}=s0H+NMeee`UokkVi@b}%uV*5o7Rpm_&lvL88S?VN$}jH zmvk9-dEPB!8Pkjt@lcj1>Y;l?iic*1R5Gk$7IV-TaghIB3y2}d{Vph~dWJTkX=li& MR41^=^$?c+0-8!1EC2ui literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/ItemPickaxe.class b/bin/main/net/minecraft/src/ItemPickaxe.class new file mode 100644 index 0000000000000000000000000000000000000000..ac379b3a37477896d018581b7099bb45311b8074 GIT binary patch literal 1423 zcmZ`(ZBr9h6n<`Y^U4K+P<)FDf=WUaR4Q#jloy3)K-#70r2WvjSuS)X>~?mS*!DyJ zf`6g?5c$$Cu5>!%jQ#-sfd9tv+?zx)W0=g`bI)_mdCuG2y!-I_Er1!6lZY`~aAi2P z@3_+T#ZEXC`1VvWl>3{Gy(fN`Ntg`hy1Q(7UX5Y6TJ!9^;K9z0v_q#Z7k7o@1|dcL zT>3n2Njc9k^zX`WP55;gge6&*#KVdVsd>BRxK6mhU`*u84Cb=8O*Ql~oIZgo4UT?} zECv{QY_D3a5vAu!hO;N8S22SeLpml1h2yVy2NbCAVUE+sxaGLJP5dm!IfchHyYkF& zTu?~1BkQ^s1b-;wC5{ngOnSa7`kt$>%N%10%jk(&p_DZRU*Wjgc3t*_#wIxO3QKF( zRj;rIYZ3g(*NlYwD|BaQ?uphPR*IM}aBe@jsB z45vz-Eox=qJ4$bXiTTz(;uFPUzMO%9Z#iZ`D;y!Dc=C?(OAFD183V2dh}}?MLc5Y z)#F$fp`md1eWUr2H0VqdO0S%>XE5mme$4VW;1wf6 zpH(pw(CnK!9z+mAB^NGKaG!OBYafm+&o^D`= z#PtS#A#tsNH4=pe7DOZB)QCmiedrl9W_yhu^}A1hci18{h95oxyR12P literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/ItemRenderer.class b/bin/main/net/minecraft/src/ItemRenderer.class new file mode 100644 index 0000000000000000000000000000000000000000..23d0abdc3ac9610d89a174b2ed85a49184b8b239 GIT binary patch literal 9692 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 t_OAc{ literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/ItemSaddle.class b/bin/main/net/minecraft/src/ItemSaddle.class new file mode 100644 index 0000000000000000000000000000000000000000..c8a1909e45f4a96cdee611ed5f39c83ba5da3e53 GIT binary patch literal 972 zcmZ{i+ins;7{~tu+irKe6iO8kTBOATEKuU%4r7{lNJy}$!I0?P6jnOQE@s&h^$C0h zeG8MKi5Et1eJJBMvt)^J%_g&%`3}GTclh=D+jjtWai}A~ujU~dn2sD1Nf;K^ux@~1(}IN*gXQwK{eTZ& z_r-gMfpw)ZZ6PC#1{oi6mygMk?va$^bNAHopYhWPy<~gSA)gGmFXVmss0C+Y#!&9X zYYWwPNYb49w+KH|fweqrD$_H|TZqgCIf0t*MKFSAw0_F_au{>wsdGgM;S{?Z<{{=wxyw=+x=< z6bbr(ZM*ap8@9H9X=jcW*!oP532f7ug+}L^3Nk4ugAIBEQB@#zaEWe|0+*4Zw6vzk zFVlY@oQ$qEf1>aa<>n6*j$0QfenPfIuwvu+16BulpB25wTmn##%!$Xt(9b;%%`q1%n-7uc&(O;u8k_<2RD Tgl-W@k4XBG#L%Qf3AFwIx7Eq| literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/ItemSeeds.class b/bin/main/net/minecraft/src/ItemSeeds.class new file mode 100644 index 0000000000000000000000000000000000000000..f4b68b33bddf404423f757022a45410adbd9dca1 GIT binary patch literal 1143 zcmZ`(+fEZv6kVsCcG@xpMG7Jy6>n`3${nPn4_-(nL82)_G@3ZHgNzIvG95_j&*%s6 zq5({N@B{n{|HBy9In$6Br}J?3eeZSF*_oezzW)HQfQpWoz(~^$%7;$VuKU(rP;UA4 zvKiQiHQR2qbZ7#D(Fp?SUDvB0Y_*SU0bvRx*PNykR0R?R(=2WaXpg;yok1Ku26Py7 z6zESwpw~bGNrAo%4&FRI+_n8JYu9C?{td5gx!acSNW0_If_; zph`3_f>D9Ydpmd}Ni!Ryi!7N%GmV?b>llwLR>=l#VM3rMa9r1JtUI>L>fs2?D!U>Z z-Z5}j@~f*SGM`9<_YD+KB*U!^h#e=`-}C}!ugydWhF3{r5>q-Jbl(d}n1N~8J>8N< z&G|@%yS|MgSRfyP_aBbKcbkvCS;%&nvJi^JP%MRFITR}b*_xdA%sT4qPNwD^`*nNW zk=xaKx!ThotP_jG3a%%3#^gd$i&58+;+dxPg0_tJlt#WGQyM)-_KQmD<``y2*4?SHXWj;ZE!?GqC5)2W=6OXQLl7+Ol@QeQE4 zhTET!S8nZHE?GK5_5$~ICSRSQq&3cYoW@VtAr6UXf=B>^bF$R>FhES>#4Dr04ZvdWqnq9i8FVou$rig|X_ly8ArLTQWCBw zIA9(q9(d&kc;N@~0%e<29w?sk75Ng1GrO`AO3QB5OwV*r_c=Y?^YWh;e*u`l*EUiD zXMIPHd#>-)L$#^L+hKjYsvWQ9HhmkGz^P=tK<19?yZWwxRjig)I86r)Cx;$nCDO=b zAGPhHab`INc5Gek-VNOPs?9S+|LhwEc$bHwDfl#Er}=IeNSxaS@l8 zo4WFeqwYkiDJ^gziOn&f7|&&icTJ-04HLgQlf!!`+IT+^V{}%cgfbJ~c61bJ)zw>z zfp$0d=%skXbQEJYt_hs)X8LBzB*yUp3n2`&(r)0dsqa_7rVp0HZi4~!zkt@7O==r4Y$3+VtlY%oo%?1e9R*=ACvdZzdORTz_%*O~liO@pLPmZVU8BEx(|4I{loh1-oJ0nPd8>JbHe{ zo~Wk^m-t%rM8%P!#D|5W&GnZ^@dr+phyO%xd2sRoxw3VD6Tfpag_9ifusEipLw!6n zh+ggir{aTn3qxGd1q$e=TRwI;9lIBOwC$zNE7;a=NcTMZIW7Lc+t&(KAzjEE;{2~> zv$LdPAMYIE%4%n0bRSpq*EjMvp5$-(zYJlb`5dfNJHv2cK zhxpuj#(+H$^fFrk=p$Q67$+zVV3-6(NMMY>9})UGVQ&+%q4YQgdrZlr?h8^O0os~e q8R;=uzYbS*Cu=@JneSP()OeeHy1}HqT5GNl!caucluL z4)z1~qsHEow1SW%aCk4zd7k%j{{FlF1K<$v4CDwKfu|aM8F+3azNy9_avP5F`e)(r z#y~zZ-wwkbq3~G-QXLWIb{uE-f{<^9Jf>R*>qY0H>wAQyPUs5% zLPS#g(_mg*$pN9-$*#s`_K}D_5y(l*eZpcG=xR^p_bb)(rF%^n?qrcD;a=M*$;&YE zdufSQprjg~_+sou_HN3}cv3N~?)gOt&#`1+g;2@pLt~3r!-j!%!b&=-gbJ#JVmJKh zxB53~Ojyehw@obLrJnT`i)M9h>(y*#P@Ki}6V_Am$z+mg9}sFOkVi8jnEY@e*K13? z>hkO*?fnoVfo%{^Nq;%E_<8VYu;*}8$BlZWI>G#H3^4gL8HgBIz*Dwr2@EBa+2ad% zh6N_k)*@S)mNzh^{fa#QfK`A0;o}6>y1xx?xNo4+`mWBQpy5%cV6iF$J7LBe8* XS}b9)#CBYeg;#jZr4Zi4Ja7L4`d7_y literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/ItemSpade.class b/bin/main/net/minecraft/src/ItemSpade.class new file mode 100644 index 0000000000000000000000000000000000000000..280a113ddc6a8781eeb9790321d3ebbd79eacc47 GIT binary patch literal 711 zcmZ{i&raJw5XQfC94B#HQqlq?gw&KjO*jy>>J3yutG2R~_Tnf~)YHb8 z4oFDt1MpC&vrZHaBnPi%#@}zgov|Mt@Bab#gu?4|$h;FsHjL5`m7S=Oy z%!8q#-&ojG1%nJH!Y_f=Wg!oPq0*t1{kk3xMAYR2UoccVp~w9mkEF_HMdM^PXTIq; zt)7V-b}TgTj=`pivwTb0T9OM%b8auV_52&rI`s*UJ}@w68h&Ij-S9f{#CNGKwldcq zUGfRX4vmqcKY(Ov7K$_!QJ{yRMA<2HIsv=z7iK?~!gBk1ikEIbpW?OKH&Sf4x2WBa zMnj!WgGdmyomEul2HwuP{Ui_NRzBR)>nUn?u%AGa8i1@#GFPxYm0}lrlo5n|9AwSQ Ocu$c=ag*vATK@qOxtme| literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/ItemStack.class b/bin/main/net/minecraft/src/ItemStack.class new file mode 100644 index 0000000000000000000000000000000000000000..eed68c79771a14d1e83b4c48db795e77866dc485 GIT binary patch literal 4935 zcmb_gYg1d-6F{&p)j&IG%o#axP!Y z+@76SQHabJv$+@u>L7+5g`wv5DOu2yruYk68>_j}vb&n6qeE9`6HhJz>2M%P!xr__S@GAO_MB{9d*zyE8FN0jpfxb2OaWCd^@Hv7UtW9x#eYd zZN9j%S==gQt(RYL@I{|&|7K`VuWAxE&l3g!iA3ZVK$Uxv*-a z+)gTVF`7$$X{D^Yv`Nd@DYGb!UvqE;uPdDT+|E`}m_nP2%ih|$KcDw9w-sIs!!y!9 z%k5@$SgqbMTz7B-E@!gIRz2@l81Jr0`+taH3*ISter~y_n|3iwL_^nxdD&pn4pw1{ zmyKZ!UKHyrnMdc>!)qMe0;AtvW*Mv(OKj5q@pNtHVrh7Vwb`YKm3FY__snzt_yS*a zu!*m*t+;S*$0u*tx;a_L-J{Jksw~`cu#G!pl)^KNeIbk!OJcm^;4QpurjB6=wVmT` zM!56tU7d2-V5L;waquqA+KEw}W@&H3qn9#nXkXPehW8wNU5sN{JyWCtWd6Lz7SW*R z-A%hAcC358XVIXCp*FzK6LOtK2ivsJ-b$01K4g;z%ud(P%JFu%6_T1 zW4k&k+l}6w#_&T2Kf=el7xY(anae613iGC>&S02$n!v4;tAPkTZJ3XK=a#mq-b&x?*rO-$uN?dwzfkBky&bqSx1)#hE*Y}ZULS_+M7mfo znnm#M9Qb&N|ov6s*N#td;h&L=KFFZu`~ zU_BNrO)wD=OHSTH|KI~88u7Y$U~KV|M~DpT+tmN{XOYcdmz<|E$on2AJFnQa6SnL`$Al`)WL_9h=7 znQXm}Bgw>lOeF_-R|`Nt(+#ePFlrqbMmI(niYM#D_XaWUWsHS|m~}Ch(vecwB432p zfe^mr(0$C*NW~Fgl;(#>I!4l`NcuGP^LVtiI(6P*Gh0Z{(%<+b*2VqqJBa{ImXCB zDJCcN+(^ptW&d!jD^iu ziKCP8tfcCb3T{ru^SnLsaRr6Rcu6Wkzpc@k;!ANLzQl3(GMg-2=f`M3JsK1r|4g!k z*Dc|2l8hDj(#RyN;I8yF`SiQG7Bgg*Sb(qSq)0lXwagqI4#L~ocIy^1iHj}u)`5_^t zqHp~f2XqTYqy;79pHiuwZ~W0AXw_TL0bQMMG6dJT)!g84b2(>L+4?yg#d=*hrh{-y zGaOQ5-=_N!v`or=_&z?cjxAbI-Brhu953IgjTf`&-9{Jkb?DszdNbrAf2AA6SI g8A^{Gh2QL+s^8Y|Osd{ts@|=`3`^A?w3t8s59_eX8UO$Q literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/ItemSword.class b/bin/main/net/minecraft/src/ItemSword.class new file mode 100644 index 0000000000000000000000000000000000000000..26c45b1e05611a5a1173d585e57594f591218ebd GIT binary patch literal 1283 zcmb7DTTc@~7(LVOZtb!ZEDF+#Rz+=#QbBwmHF!f}lg5{tKD)FFEVR33yWIRu#>7N4 z@xl1)k20Q_!HP+1Vw28%^Igt&zRUjj`SlxsRjj0t5Xc8!TeCR&IGBP(l)ii1irvnB%YWxd!$k*KX-Lzcv8DEs15;|Jnxy*bpugosuidR4^Jbf2 z$L+P<$d~Ukr4jG?1A$_5GXjxw?0+Tyl+=`?2;8`#1>7;+GM=V_$<#nCa4EW8V7T@ z!WU4$Jo5=9_&Pa3i*_XA~zRchM{`CUD3ce^H zComJsY^fc^GE9SJw$w?(rFtgYcax-5fF)2GY^Pznm4x>@H=9ivX3@UMWU&r61$pe|*2{M^RK}$f~5*XbH+QF`DbZ*93lpRo67jQGu zdE@7-MRAm^3zQe?_4?82stp0_MzSM|$Yb1vi{n%*)T<5a+K<361WvdpU`RdFmd)|8IaUNlG^snm1C3aKL)EU# zwz9O*(H$39T{r?>ht>ud&8VuJg*U*en3+(4=>hh`K@aam+2IJU{cjE?ax>bG;@w)c zQN%J<3Si;0@2*y#k&7#8z(un`O3jfBp!gQJz<3gC(i^gqrOAQZ5jg*T!dyD;keR|2 zf#YnsS%NoP>kUFMiECAE^vsdGIP&6F@-PkMtw^oT$l)$r`aakXaF%-f{E3M!CVj7qlm4{T#VMbkX@9)zJ?di4 zbAH8$|Lt?k*?YYDo^{XO`&k9ddH1?F^NcuoG662}p8>Pke2?)RXT}n9&NAmYjA4PA zWlUlXCvXENQK9#W;X(U(-pB|a5J6~Zo>ERr7bvMZH;Cb|+A8GLnn;Ntfy%jxF1kzFuhS1}6z1cOr8`o9vXZ0XK5B-3C zR5VuuAA(+H<_u?M&Y7?8k52%n*!AEL%37vjUuhW|@sx%G6Nk5Qe5rI>>5d1Nu+kMH z5%z@cg!iqkj8j74MUJoKAU5hXRf#49(VWys4Ue7?JZ4=bZAqXyVewpPm0l1^mA~YA zwMlR-IgbpMedJIeWGdBW4y?e(0v2r*`0$V=6eCuAH|)2hc@V80p9rEP7QLo0%HrRq zn?9=nVK4g6BrA1C!W_@i2_fG|h9;Ib%I+=Bzj0(e;(%pj_<;^*R>c)NMRuBrb>|r` zF?wW%bR^8+VwU8ev5 literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/LoadingScreenRenderer.class b/bin/main/net/minecraft/src/LoadingScreenRenderer.class new file mode 100644 index 0000000000000000000000000000000000000000..40c3d13b57cd3167b885507bf90ae41a23596fec GIT binary patch literal 3888 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 Co$oXN literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/MaterialLiquid.class b/bin/main/net/minecraft/src/MaterialLiquid.class new file mode 100644 index 0000000000000000000000000000000000000000..13e6b55d44f90a0413c8b838f538c1c30daff853 GIT binary patch literal 459 zcmZ`#Jx{|h6ug&@hNgu=yDhfAmGfn8nMWV8ak`~clo1VGnim(^2 z?rLsyO6c5ab5S*N(R)J(xEdE3r-X1^)McX2*>(+nKIiyB%@uYbDftBmlD(y1ASx0j zVgK+2YtOQ95DMC3YwZYj8-wt=D8dGMf;N04Y<-URWN|6!FD0Gt-34|0_iaM~lt|^8zmK>K~#lnQdzz^U@ zAui!VMQWuk@A=O6+(#61JdR$rF6512x`XWEejC{PXqTn$xmo9(1;(?i2sm^s}{_lB558_Fn z3m(Ov0t9^Gtyv?^5{|?%Jb1<03m-hhtmQQrSZ8f~H*jonM%X}$wS*5jmVKW8Tz9G4IPMrNFXFblPCq<#93g$vC(?NQ_)Z%QSbmf z6k;3>xk#im{~SBt9Q*n8{sG_!>j50XcBX7J)|pBS-`c1!Np!_l8O>?ma8^9AQJD?k z5jN+S5^5(p)Ap3$?(Pi;UN;}95H9Ks_^1(DvCO!hjEBnfd6+6fC(aX22P~r`{!M!J zUKfO&c>b))TE~Py7ri{yqv_xqLi!p4kK z4+io|=~WyDp=kLG0hUD@KLui&5)oF=5-s5av1Og( dzLZ)a{R-*)lkEk_`b=_l0kS!h>`XUX`vyo1VFCaE literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/MathHelper.class b/bin/main/net/minecraft/src/MathHelper.class new file mode 100644 index 0000000000000000000000000000000000000000..d124704f140f66502fe565aab7d47fe4b2df42fe GIT binary patch literal 1529 zcmaJ>U2ofD7(H+7*!k)bywJ5tT4>6QQ`V&&jIp&tSt)@?-4JRuP2!?*T#uzqh>8xa!RW0xp;k;s@|I_ygP`5aqnKNv$#w$&TOmdCz&yd7j7q_3xj4 z0q_DY>qrUI25!*Y?G0SVw{Hf`q3<-W+QF^Y-TrOY*P#lOw(Whp*|!I8H{a-PyG|gG zUGH4m+_VDy4NYrhXa3w+ouANJ z6d-?E>-Xp(hcd=>JSlMED4Wz#z$r|Sbl4k^)LLz<3KZ8U_uAfW*Y!8-Zr>F!);!1V zU$_09T*sU0zU?mvh>pP6dSE*{SMA$zNLvoY=Ahu|0;Z86cW|pW6qsK7zj`c54edr- zZP)+!KmiU9$xr)=;|?+T=?)v!p}?w+&b2Au)3rmaq=K}c@h z+w&c_-IFyd9<}+btT|?=o}Q!!*)2Zhk%7*O4d*K09{Y)TBlolR1MPMeFK(?xG9YC!<l4!{>d7dAZXk2cv*K(W;^OMVF?d})MQVX-x zj%TUy+|;owQnSo*o>@}=$s(sG%Cf>}*wuRe(=S=h1ElNwvYe5PXf$RL1^KtDa>&w1 z<*uZt`T|~x`8=vt8JadvP_bs-dCdwRtUDdk`ur>CChKH49d2aD-Tet1nO3`&)WgCO0|Dfw8+z9B1M@g V{X!u^;=;q>Yh1@B7*e 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 literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/MinecraftError.class b/bin/main/net/minecraft/src/MinecraftError.class new file mode 100644 index 0000000000000000000000000000000000000000..a6df318c24613f25f5491cdce743deb1ad9b4112 GIT binary patch literal 302 zcmaivF>b;@5JmqO8-oKFg$n>xNRe&Q5z(Nea?%9RugyXh8CzQ0+>0s_1qa|zD6>{5 zsA&Go`=c5CIbV(^0I%r#a0tUpm13tel^D4$MPU;0d8Kz_a^u4#gj>0nB9+-j)Fz?% zrZZj62#u%7lHktsl?u>6y8{nR-iY|hSG9|kS;#n5gvTgPWV)0_TmCoQ@<$hhada=n zln{L9l}Xfxw$}!?DPL?rjKF#LIdCPLgVkpeH3Q!BFIopS90aU(3|@F(?bN-;waY~4 Iu{sF<0O*cHNB{r; literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/ModelBase.class b/bin/main/net/minecraft/src/ModelBase.class new file mode 100644 index 0000000000000000000000000000000000000000..8b0403d3f567ffc7aa3f0f605f5ee4aa464a2a61 GIT binary patch literal 633 zcmb_YJx{|h5PfcwhK7F7@=e9SRv3tY!U949q>7<@2vB!7HNjQtNRC^67ZVZ#KY$;F zI42bY11wnb-MeSsy}SGPe0vAbLCZsdp{0Zg#!`t;^G6e;It;Fop@`3UDm*w03nM<| zLCjSY+zdt{Gz``BS*qw(Cy^Fu%D}n|r4y;7Ib|rexBCpv1r_m8#C!!F<{0Wd(zu?C z2SPvaK`a=Wy(HvupKEF38R?iONfkGHzqEBsYFenF&sjt+qL(FJ=8v;Po7$WeW>_Rt j$jU7d$~#;pk3H7(KUrNg#Q(;VBg4uaKss0UO#T#Zvl{64FLfgaVPGs4vZH`(m2lYe3yG zT z`>SsOq|peWLttOsYNpogy0zq(%gxlfvy_@|RIJ*Jea)(bpb6}K8pB+-1h$tYan3R; z0*8uEp)OeUise|&xIotv{=1gx`0+E1%KQG^g1xfZ%sOiVy5bhCWq0d_s_UY)(tfSB z!BckKZcYkxCI(6Z+G(~ChQJOTT`+i%$jkHYBAY#XeXVRc7tL~wEf~edl36R6jxG1z zq1Ifr*98tdttIt7<5GXO)ZZfzNaR%l?S|XbOaF89^M4B@93LkC3FlRDG)R(m6^tS0%4}k7YYUDm-okXynsQ0=(^Qh zXf(~H-Kd{y*!3nuB-2$st|LU{DT>NOBRaOpMBa8(=P9?-%=_?DmvT~P`rvkEIHh9( zeCptu?KlnED6VJ^Zjw6fQD<~S7@lRg6hEUwN01)yZH5`Be94z|yo@e16zEZQ+Wmoe$W|fcB7;&Z2?vinrQEkQ={7sg3QO70h<%Br0drN67%8OTZT;6(d zS({3Jv{RcdbpH~@>v$uCtN;D8Fq^A$R_&VQ=y(%van6<+oDexyd2O=x;I>S#q@%Jm z!4+-t)?bb`_2tNjHgW&_AKFCm(U021hbM|M-`hHBN^RY))5!~s>&}vux8-1Vw|Lb44RZx~0WzN>(p?sIVi$K(!SEEOSdZj}k}*p3Y?au-q=u5%<sn^ zm!0BGY7^TSD!T!x%>mJ9ROt^hV%UgBj5Njdkf%PpnVj&*8Im)`2_tQ!LoIT~c(JR! z7N0#v_L#PTak&~(TcXB{>Gr5jFGZH*tdV9tZ5eoAoNi0ulXE2JybQUmLAfqJre)1C z9~?AAqZvEsXdFEl!fs6QyhK~dH0B-b!w1-pTb$`na1dXh7vFIH9^o*4Mhw5B504QS z0{z0k5z&i;7{q`W<#%ZoN5w@PQ?~cIhWfUPOP=jC8F}WB^EZn*cL4Ac$0Eeq=996$ zc#qZ-=n39Mf&IlKC=v|&Amf8EA7p)y^Fd01R^$DgFCfKZARJ~=e2JkiU#IxCYnCW)I^ zJh2pOxy8zQEMxhJSgw_!?KHD^2j#f2A_a`qsZ(mhrZ?j literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/ModelCreeper.class b/bin/main/net/minecraft/src/ModelCreeper.class new file mode 100644 index 0000000000000000000000000000000000000000..42643fdfd1ff009636810ac42664b1134e5b864a GIT binary patch literal 1819 zcmah}O>Yxd6g@AV*pB^ZCIi8kxQT;9u#It?I1t(ZNu1!u5GW1QkX^_2K>UGSjSX#g zY|5&O{(}C6s%jHZEA?a3MWz0NN>#Tk`U@&mJ#WS~iA7XdntSKIb3e{KZ~WW8-~R|; z5f6MA5}0gSow>)=rd77hhn=~$U7owus#uM6+p<2kY#%g%i6byMvuz1zyOvoInBF=9 zwQV&kmTlR~0)7Sk#4>GWm0Fe0Xd2d|dDkqsChM9-0q>P+v)Z{P;E5-SjIML806Z9z zIEJ@;I4&^tKRp95Fs|Sy1%~5=LZUbVfm0I0@M=Fl1GHbb3x$eEyp2gVH7k`|>r;V1 zJfF`O3Wa>4sLrDj(>Nobx2?{0t7CSmt>&Fpwb@~cLb{b_Bz&yA!lJ6tISIdN)O}4# zM!nkVGxzj@WM{9!%}E4ZZ(c&eD=@l6Np3%RT(azYW~sq78(Xci*(jQJRlRqET4%S~ z7Kk3T`>u*yz4p|!xoDAhT`pVXIJ)hKBQT;kI5YyB=c>dtFlp=n*|p}QhSgT9Se1Ae zYpfF|Yqy*djSVQ8G8bKQNy}O3zebp`DN(?ZfV9=-ET`0tI=CsZHF)qqTSDwf zz=t~mkvC{;c6K+d2JffDHtzC2NZmclufiaC~2IhH~>mNL*HrVAqCd?Y)pb=+j>Fd^>J&5&mp$S40Mx0Qe?(HEN&}HPK=f?ToC_Q+J@YEnYb?gXq zn&|W(ngJIc9xR?AJTnN-bc-wWH(c@%7WjOKFrN|{7w+ZC{apDtbR;mwe=`F)9LEk$ zpu%VyC-FH#_!6h^74yEvY5ar<{Ei6zEoyR;|hty=; z&XRN0H<-7?9je#{yS4C2kw{ zYBRMxs8C9Uj1NnPqvwVhwKJ7Ysw2Q1ag!}&i{Sr$- literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/ModelMinecart.class b/bin/main/net/minecraft/src/ModelMinecart.class new file mode 100644 index 0000000000000000000000000000000000000000..cfcecf6c044a3db7564f4b21f415e700b044132a GIT binary patch literal 1677 zcmaJ>O>Y}j6g|)L^j@u@!o1{R~G!2r4s|2A0MMNOciD%lnICeCi zMu-&)$d(;KY!C~?79`S0R8Urx3LDyOw`}_l5aql#w!uh=EX_Oj``mlq^KXCu^b3G_ zT(^)A7^?-*+-{{7ltb@UG}j2rbL(|KsIE(u7e*Fzf#GAER=q|bkZM%?Km|1fCf{2- z#(5*C`9Tw#K{)oV=+E1vt~)4 zXEXB3AFg|QP3C?78KW8y+emHJ?}g={SW*3UT&>x=-oA$kE>h!#WJCt#oYWDVO)2Y2)>@*`DVm+4)hQ;W=$wm_IRi^h z@~Y!3TZ_6XR2Yto>Ooe1-2UOL(S08Sv7uYb=r<22pO$h`IZ`2AdC=MLvxcv?0+NN! z09^$bHxEW4-Iwl`Khn+~8=0n~hH+8|jV$bUMwll>m`z4a#?3~olR~Ukh$_{L&V8mG#}xaU zW-mGZ&rFlaS;cH4&e~+g{M3)LrbOq75(>={$v2cIvvD$$=rtmlH;>neOipZw^IYO| zuTsnZ{=d*K(oD77ZsN8w@U8v38B^7oRb1X=lzgZ0lq70#5p6DlQ;NBWHW$(6BAQ$T Kt}#;rEB^r4i9J~W literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/ModelPig.class b/bin/main/net/minecraft/src/ModelPig.class new file mode 100644 index 0000000000000000000000000000000000000000..c9be4cd0c222ce61918de9f17e45ce84601361de GIT binary patch literal 412 zcmZ{gO-sW-5Qg7L^Uh809xTF6A**Pr3Ylv0Tt#!8Mz>`q^LzE;!6xjjs6W&q z)AdYd1ouJ}s=6d}!oxAazUF=(9rOY?@Cikf~5`vtZ`%*!Y}j6g@AV*oi&ClSvb&b(&8nwVl?k>$E@{8aD|hhP1S4a2sGVu^$;nu3e3t z3U)|Htl04fV8^zCqzELGZjk7vKcEY`V#_Z8ao$YEZLLOVq`AlUop;|o_q_3we}DN6 zzydxEp+{h{A=}w|wT7%X)@SW(%c*3qH>+PT)a6dj3m3eQ_riieaIw~?wXX{FCQHRsnfVnq6h;7s4jqF6 zfn=&2!jQnk{~Q>GiD9*A#I06JmHQzus-qV{?eI%Ld(2TN)|igd80XOea@^hi@WrZFR6v}Aju*|yrXX5(hF)@XB|qI>0Mb%a#;?^O9oz7C%Q>fE%B zKD7XqEAUk~TFB~L4{8PG6z_u0mVyc`=!hUF5M8H1H}>vrOJ~#Cu5;w(db48H%a&79 zzmJky+pe_)rjPTX?WFmB_c5He39cs0 zIrEH}G{T0_*^!7CgWNITZwMHM%TJM?GUp@ad?+3|s-7~>8l$TGxo&ob>`WIsW1c^T zog+Kf#m@P)=eld>$DE`Dr{Ebui2XQfgF>#vT^d(lD^jyH3c#FU22j0eIdZf@5 zEb?^08+_Gs4ZqXt5NWIFnZ#^Ni}l8W2Uwztm;%cL2_K|d|F|Y6A20?1ZytVr?Hq5)biCr(1Q7Ln4`_*jjwb^{v z_7}Rx-E-4)bDnOUrRH<&DuYdAv4it3X|_9>?T%)9(?j2 D)bUGD literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/ModelRenderer.class b/bin/main/net/minecraft/src/ModelRenderer.class new file mode 100644 index 0000000000000000000000000000000000000000..ee6a57aa916e66c60e6cb5ae252c88db546556a7 GIT binary patch literal 3864 zcma)8TWlOx8UAK=y|b6`ZJo__lQ_1sc5QFdxOVF#&L(M`I8IIN#7T@>r@45%J6`W* zyyMKSV<)80OBxD<($E%2R3Y&cL7xb?vFL?Y#7iXvh!-G2AR$2FBDF$@wtVNzI$kG> zK(^-p&N=`8pZ|XLr=R@jeE^T)h6YtZQ{F6g&1Umv$}y&kT?HrAHDaet>zJ8On~v#d z@G7Xw8Rv~I%gATCj!fmuR8fJJvYou?6ci+$8NOe~s9newvvz*WTrAEz=D6t;&BdgG zs%ax-QmCbpP>DHxblymlw}v7@_{j8h!7M(lKpDDsbAlU=T{Og1qjokgxd!juypQXI z0$qxk{rQY#Qg!)~?Bz=``&0JpT-Gwvw1LY|I$M~tj0?lr0wdv@%{q?lC;)M- zN@NR9WYcLg&-2~ce73lkzIO}_b&f0W9$(Jm2q8EEbz#eCG#odFv+1t-j4x$hH#mNB$-5r$*t8z8cc;-V$ zAJj1@65*e=vU7v1P}ki@UGkVqdR;+WGF{d}E@O4sb0#~l>(Fp_w+;s^#bCxdU|5#hQ{E1l85{FD&f_E-GGmQ7M!sMf zMRQtcT-0$vq>Kln^M#oaqv&K8z5C5=cf{!>9na$PY{`rz{WqsMv1HK*XKXyD<9Q(+ zqO?8d3J38bUea*6Voe?z?zb%Vkr*^OuHcIb)@4i%K-yCl3Hl*S9};(bNynG5LE3QG zTo8T*a22m;_^N`&N>yJdm=^uB9UWi8t73-a3q>O@sW}P`LrAU;BkB2NtuHjc})14fv`HM@793y*Nc+t5uL6^VL?RN_bZvPzr0KjRK9RXfafP^DH#*4tgizt!<&uZS2_<604}6%kVz2*4=e9&=%h3?o>;DxgjNL zT={6wRZv?}z_rU?x1u2$Tv1V9QXzJvjxded;faNg3+j#Ol2*m4CH2K>B-LWIlKNwH zlGgcR^)Aq2VF8k!chEPXF;Ej8@=ORt6GF>GiL*1}n~ZoT$@&lxNom7fh`mVF~DXD3#aVu8%%2d!1FYjKl zLONe2Rjy^#%N0dhnIeY8%V1LxwfWpIuh_CCF!#IUFH=Krydut3%mdZP9F*)?jp&*v zubQ``p&Rc`SI#E00Y?nS@)685XV!U6TS z7*PL!gX&*N|BWHp>_6u(FgEW>vlDf5Kv6AG50NU-AtDYQ?mfYF_ewNGR3*`8h&UX1 z`Xu=@#MIwon8=T2_17373ZPy6B@Pn>>8TG#h(gGzuVEBNi7u)yG73jIM6asnaGak2yh-&bbdJLZ>s>Qo%Kjn{dh<%`L!&5}{xT7}WX`-~pYm{Ty@e!-5{RaL{(smtxB5Aq- zejd!sDCBEMwunN%HdRvOTQu#at+)FXMA$rETtRPVDL-cbBHSyEEL?L#16| z+A_Yd+DfPSE`epCu^?(#3K15;2Bx}~Ngid2pJJ9yFi$p4@z>L7yn;zwgMrsEh3_(+ zw;0hM^Vi%@FoR#C5fODf(PBu)`tX|(To-pttV@Bd$a0PNs}g#tq@R$2QbidB%x4_SMh z2JKf#s7A*_rA{rF4D}g|Hxn7AlT#HklwL-0l z21)qEysT@he*~Rxpv2W4{nOWzlYvU#%E3r6h+Y!NQD3H!u5X%VHjKs$tFt~RU&AhC zJx(TRp!`THRc|-6{ZW3B@W{}Bei)r1N`w|w-(k}Y2wL2AE?~EQ!+CEQ7nnN(Z~X)p z3*v!z$V+r==Nyl8&k@U_c8-;t%xm1v=^nlEi2PJ+aGP^px}kfH*qkHw53(s>i*TJx lK_M)Pu|U|MdIx13&=%g&9tLo!2f{oWnrKnQ@Qkp4=T{?=kRAX4 literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/ModelSheepFur.class b/bin/main/net/minecraft/src/ModelSheepFur.class new file mode 100644 index 0000000000000000000000000000000000000000..b175976c51fe71d6d49c6793fba45016279b9c52 GIT binary patch literal 1038 zcmaKr-A)rx5Xb+gUE0zva5#J`3Kc)P6{%1V6@-FhlO|{sOcO4b?h)3ME?Krj@4WH_ zywZ4qkAP7~G|_Tv;wu>LeFAQbb9U*4jkudkd*=M+Ka-i+@4r8P1u%)lI3f%~Rq5xp zoT@B))>A*XKP*YhD~0!|)l<M`V_d6~S6e73 z=s3K;sbjoxKcN-qN<~fTm}+?QT756{-qvxa;hkjYSf=SctZl7J?}@cukqlzlEnAh6 zeT#AXXihCYYcpbTD)s{;|$EC2Ccd^uPjX`(EV#O#-3Tb7SdE^6zZV>npuo& zoDT1hK!kq#vs_OdB9Z-q)LJxph_+AQ*^l6&Tl9z?9#gOAJwTswro?$Mcz_E5%?EiR z;L~)KCi=3t!V{bme>LRODRHfhaFJOG^*Ij$3<@yBXiAL6c`QB>!Uko$A;uc&(Ni`@ zY_6HjiHU!)d1CX;Y(CJv)vP;B>~u3b9q1}{pE?%7U9u(gkZqx^#n4UGpw3Ov_?KuA z*Ju@O=-5CTYG}tRbl^2O-lG#A=zI8vF8rXVpQP~%y*NQ1OQN6k(VowcYHv6L%;FxM QHn5L5%m!z)rO^wxbvub0tf>4o0Wnm$Tq!O?`ZIVeln(WGCTYU7z zAK)+0H=hODib5^ulRrwln-5DWk%1ZR%(>^DbMO56{q+#QDsCqbVOa1)Q0_`kG?m*9 z%01OAKk{3mv++`NMBsY~XbkfcK%0KIAq7MHuJmMZk0EN7>I~WgVn`v1Bu5PK1k#i1 z)P&a(N~jc4$b|4|hM4I%rFs$!I>#v(44H;}C0aGPwH;Jcm!VLdplC$5rhR_{Xh-BU zWS-+VjWZ2~U_l3_f&)Pil<`%h0sqg9g)RHM zV>4fV;qJO9knSk;4|LK@5T`vs!5vH?LbpGy15BkKTHla*rklEc0KSK;^%+?sXUrJ6 zn9gI1`7ac&%&r4=)P1ivh&%x0~1_7q=7FoQ5j`x)J i5eB{>haZ^1GO^4J`hzlVP!z`@R){C;;w_3JSp5U8RK76) literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/ModelSpider.class b/bin/main/net/minecraft/src/ModelSpider.class new file mode 100644 index 0000000000000000000000000000000000000000..9c1a12707eabfb9519792bcc5ab9eb887268b9ad GIT binary patch literal 3282 zcmai0ZERat8Gg?7jUC%J$<1Zm-IjFemS#B48aGMjx~c29*>ICC>AJK_n|8~3liZ|s z6FYU>wEF>O%#o@#co&CcOwCnpfim#gJQK_HUqpA|5l=7AH4V2_1PI5D^aJ^$w%2|S30 zW%(llEvd=L{@FMLx-GOIYTmsGnD4X6vTC1&$M858^_G^#Yd5%+RH;;&oSZE6&zg6O zx~R{>6Zo`%z2P@zY7MVZu2oOh%GCzHC(AW`zl9j0a-jhWt#YAnbD_I;`8aL^GI7wN ziJI@PGxpP)I(Eq7Mxtgha1UEZYL+7wERBv@Xw&GJg?5d`EOcme+=7j$K*tnya_ZXJ zf?q%DEv)k8J5#kqZ*|tIm!%&B&Bo>O23vSPEof;`3Ff9(=bIKK4f&qMI1gM`S`moL zldHogc(Q2=r|_&mXH$!gS65d34cX<>7Ea=M@}$@+O-H531*j2es19ke=D0uj`#8UG z-ohMC2v~L5Z(mW($;3qqFYZj7H^(MBK9<>+EnM1}yHNY>weur85JsVvBs9k-IvV5hadjhEOI?_Op+Df{?(r(*}8?R zs&u1VO<)7pVxTcaS*tk(VD)42a?a&9mmo?#)EVAzStc+ zbPHYSchKeR<>yhmRepMJqesS)k?u=xIP~_b`bb2Trod-fGwcl8c1uf8opJWct+ef|9%1!}to@(r z5$CB-tj@AJyNf%kxvibtIacR(apyGmuIf=%kM80g)!bWM2~U}4b$%CjUUToNF0i_= zi@Tt?o#CAuFS5M2i@d1GRrwF85Ch|UzKuRUZJ1O`lzNF%FD@Ry0QTSrC%HuL0v>{o zhdE7;;4A3D*U^pdU@varQTz-&_zm{qkJR+v@i^|GS9D^(=s}-2fG5NlFYIZg#6|Rr zHKfIB7!YsbN%2h_5Z}k3xPy%N00+hIFeLthVewCl7%~3tKFwY2)0)LI_zbGi$X6DMcEGi1n8zj?y=h8yS}daU^=ta zTR5k1i^3P2mvS-s88^0h3-d%HZcKwLLylL`PR@;O;nC(qz9~`IA}J~oXCc?>Eau{h zKi*bxTNm`|BW`?Cy35+lx^ZhenPXDAL2@*3gRkawZICPkL_xCXs#RpN*IBBxRgw$u z!gsDzHuqO@2_14)n_|fzw$>E0f>^aF)+S?;tVXhTQ72uy3@NhhSci&9vhA3yVv=k- z)+swO_YTgviLfKu+YH>Sa+86V(_WYyRjw5z^V$oO1?9E{$)fhcq+D~}ZD&%wY3<3R zbmf}!Zb#tBHR**(x#qlU2T8dmy)Y@)oOe5eq+FApN^XzFdl;ldOZ+Q!g15;8Z;(m; znLCLLrJCnZOkkR0aS9%u!xfxH1JC0I<^DQ_{ua*S8_a$Wv$&0O_&LtwxBOr72i{D7 z!$lFni^9cAVgU2JZ(bHNxFnY0iC3{8zJ^8dEi8#2z!yKlviJr6YkY*u;?F3Hf1tuU z<%(fr)#$;RaR5~#kD753>&6_e8Y`$9o4obpc;41y6pp8HJseM>U_6O}@gxeylPDNZ zB0Zkn#zkCb7h<@!Yf2^5fKf%N|X?;xP;e;l43wiu@5I;i7}DGXNlUx njOfGXh}y+6@7vE4b@06Z#!Vudr~WIxK-9@=;EUY7fiL|RKb5Zi literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/ModelZombie.class b/bin/main/net/minecraft/src/ModelZombie.class new file mode 100644 index 0000000000000000000000000000000000000000..b71d59fe386885dafbe00046362bc740fd452fb4 GIT binary patch literal 1201 zcmZ`&%T5zf82(O~UKuP5VnwM~q1slZ+^Isjnnsgq5DgJxVy5M^ok=@`(*a*W9|1N# zg9!xULf0BJan0Je@fB?R&rAshX&3+Z-!I>ser<$(u#Bx~f{5u$xZFu4r|J{(OsR?n2WHU3G4+n6_$brm1P?1(xneI^HHKKL3s$(X!7Xl02XO;~ehkpHEsi}& zl@S-~%a*v8JJ+s@*|%gQ#BAA_o#!PnTFM?BeUs*TcXq{qJ2LK`tzDBoe+eIp=&+2D zv(XpQ+|JIfG%LDf51;-P>`cm-a&9l0bt#({k#|#hVqsggMqC(mVa$bb7baYobYaSc z3`6Ldxn&i3P808-^PiVCq^sL1Vsu*@y-vVG8a*G9ezMYpjL@4pK;VND4v`dLP(eFM z*-aqqAd86?K$42t9?2m28mWQ7ctnbLBfbN4ruLvHm-ItKGJaVWR>_rmsp$@oGupn7 z7~#z(MwMj5ucY+S_C9V4|B3CIQDtZ!X~*AGqHB9dQ^}|v2`FQFsnm?0?-tpyxH3*_ zO(+>%$rK9B`Tqr|kyy;>A6M>)L#Tq%o$;dmsaFg=Wo;3i#D#vl4m3C3T#tTq`ZesLc?&R1w)nlz8#95bYe lPuf71G|ACsN%K0|9BE>UpESM4+2uPHNDEM(MauAC=`X%%3#b49 literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/MouseHelper.class b/bin/main/net/minecraft/src/MouseHelper.class new file mode 100644 index 0000000000000000000000000000000000000000..29c151c84ce4d9275adbb196f005ac340149ff34 GIT binary patch literal 972 zcmaJkA2ptN=e%h95>j$8AwOVbW@rA0zKqaYZY2OAIVcP93*&S-?Kk*m% z?1Pc`;1BRe8SiW<#TT>5oqH#D&pG$p`TghTF91)ml|Y1H*_GNpRjzFL;-j_$zh&3F zejsRqALnJoAH!1GCC;i$Nu1j7PH3~`e!awHIE znCQD>_<7t+V1;4Lh^otT?YVVFoPXZj+O)l%bcwHe@a}E3CX~x@3#$y19jVL0Jrlu! zYU^%jOC^OoZgbo*4Vh8Hj#QnlHdEZ=D4@tNMN%(B*1bS!<+%*8LZxDiO`n<#H4e*N z+6g(F#{-UsSf^E~pzbMGOP`EAk?oC;^vD1|;&^OGV??^$FgH&)y@JadT3>oki`Gd^ z^oDy#?RkB_CEqBssqEORST_%XW+ZTWNfA29I?9+aj!ug*S~$fNRW_ZB&RFROCcaS; zL7HMbyo_U#a(>Z(46;CynU5jwyI yN&SlSzq+I0_<8aQm?j%$sGg;4j=p&;VS$`o9AjJ^GHz18g~*)o^%><6JpT({DzIn( literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/MovementInput.class b/bin/main/net/minecraft/src/MovementInput.class new file mode 100644 index 0000000000000000000000000000000000000000..ef55555b9c76f26dede9f579c95e82c1d7dbc18b GIT binary patch literal 830 zcmah`+int36kVI)A~3Yr+Dg5(STBf)M59kN`d}m>qBg+ChZe*gFh;3@8xkQ3~N+H?Xx)LyJUna(WsI&Y)74s>XG z;WRNND7_27urSJ6mU;9%WF6>b@V%PtBi+Gx{7X&G&~xP-E;U3F1GS+L&cbKfPw zP{$wCa6MhCsD+O0`2)jLu-`go`E_V~ zvslg^q=(E^{8+Ge(X5~r>zOuh^diG=cqiKX!koITs4gh9ddC)AdQ^%8Pbm2yN@7oU z{q*FO`A7B#p-GV({@Xk~bz~$~#ne;7)KkH1f||2mWA+g_M!-({JJ#COQ`D{5XgjC4 zV$Jq9HgjmuUQ6K|QsfC#z#8*Sk~B!X!@h+i5a+Jb3vS?MM)Hh#&er~d71QBLy12b; zW{Y<97ItZ=>)AUWrjX}A)c)a?GwvpCbKM^JlAjgkKkj~fJMo`-Iozmmxo@yvBSoB)$pyoFlU$p|a>Fs7<2%P^wzQ9l;u79NVmjgRc zy8?;l&jjSA-B8Oa2wZQIzOnlIM?L7tm=j3PyPg|V1TGanlsvI2U@SD(RTfF)CHl}W zkStED_Ca7!B89ZxnGzX%Brs6t$X~V_Ysz1-*LD;m^`>L*tlGY-?bvAqTP~qa9@G85 zSR!m=&-SMU&Ny4j*(M9Mrhg<`AXQv^rlF0Xkin?Hx&Nm^;vCKk^lz*Es_U)uyjQlr z&az{0v7gQ%$8&wSfJ+%%6c~N~{BEAaWsD1Cc)BJ~KrCuxpGXvS*IeASYCGH7Z%JJ3 z_1D!#p#7gpT+@CT=P$XNTVY^IV!F5BVY|_aNSa|U3PbZX%WYL4PsKRfkL^}`0eN5T zs(@HSB?+8rx7I1CCp-4O3Q3Lq#|q@W7r4QGlsgwGVNPNmw*|6Vq{{&{ujj34Y21;x zt3x>*iYeCqs>A{a&v+T)K2Ekr8u9SuX4`jE&DFXp9J%_Q*Xi0zd(Y+#QKoz!6MU%A za7Tsm-(aK9yhSaX7_$r@1K1|P{YhFE`+o?+JN z=qc{>&%|j)IXBMW;cApL@L>_uSB-du_q!s)v+fdJKeEM zk)5d&en6H-4irXLG}a_E)-w9JN+Qc+kb9G8$GBc3$|>TUA+ozTiz*6uLisO|sZ~b5 z!FV{66`_4M(+kct&RIACYiC2YzUEi%2K#+RZw~3VFvS3Wn$nwW84>F+LDMswoc|el zjdLWq@|_SPgV~?{`Kt>!BDcs(njq{V8&CF-I~)T^aJUGFZptt0Tcm_m(dW1oH+&N} zw5{AB%6h5juF2W&+5YJPDsnA$8C};#>`HZ9Wt~;lh3T$~S!GN6GP8%c*Tp_V#6XGI zrzogtVw@qZH*kg2OcB^EUdIA%qmBwmzK3r~dsjI2JCbeA_65h#v!!7aOw*)wpH>33 Fe*xVBSFZp7 literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/MovingObjectPosition.class b/bin/main/net/minecraft/src/MovingObjectPosition.class new file mode 100644 index 0000000000000000000000000000000000000000..2533d651b110068a62c715b8f69236d8cb8337d3 GIT binary patch literal 1151 zcmZ`&Yg5xe6g}I9#?}=Oq)=W$RcwP&dDIt*4+?^V;*3rQ{Fa6Q!ICg(V8s9A2WRN$ z_`x6Gk8(V_Y5gE2ne07#_U^rB@7?_V^Ya&g1-v$q5Sa4asC4N0t`pk3QK=C+r8mKe z=kIOS4qPXC7c{)c3w#rXK<|NlVwdW+zgLP^1=7*!k-NFO=0yTxT_9Df2hOLhHrQ^1 zj{;`H+i|sHYTt{ht|O4!IG>#h^OZ$LcKyhUPW6W24t^_onU1L^p6^9V0uzOGJ{?@+ zkj1Kiu^jBU86?p!(SvIO$wIN3hCo)L3n_($B+M8MOI(W4s6;wO;}RK#CXhEVDKL1! z0VHnVCbfND4uWupwW+8*Qxdl|eX40i6(uZ9ebH2g)E$Ytm=Tap=-QD>^-&NCj29}E zO7X(uDedL;)!I)&JlKcluT6Ud?x3gv0aXn|hwPm-pWnHzU za@quU^q`mHRnES)c9*U1=(Cbd3|J#g3|ga2vEwT_E0ZpmH|%(^kd7w?QUhi&6M$b~`=WWvj4zv3HlCbc%%p9FhNaA!f-zp5 znY0TzD|lsUhg z5r_G-xjbzaa`Igs^xHRcMTNHUnpraH_S=P=%@x_fyk%!Bn+tYFy!3MU_>gIv$&$TV zvQJ1(!QngU%&MKsTg3oc6n3~UXg8XCKEw118FOKS$CiyAN3Dv(KsIBi)>estpa;kS zzsH23ossCv9BJrK5FRFNGrcrnuDU=22ydX;Bb2_1Wnb}fbhi*?x}$YT@!v8FhZS@I zk}y{?f<~cdQxtU^g%Ck3fT%)qg(xA^g|DLvtqPii7+AB}FmJL{n^ua!hpmMmx)BNz zeUFaAI6|7!T};Ou!TN!XJ*_M$a}ehdac@5XwLJWCxz7*=R>0}4ybAu<}B zmgT2)w4q&=kLoy!F>>je5tPEN%}VYro6uok2ODg&!~!^{&|a$ul0XnigaVjU*jLMJ z@@BqZ2XR5{xMynCbkw5NlvvHw2|Av)vO!!DvnzFijx6U*x|g}l@7R2yoJutZei0#_ zI&w&uS!p<_EPMQ=(^JDLdpgyBdX76qLxIg89|A%HkKIQ3atov3R@svLYq(Rk6q+@B zShjT8)NqfnWuZr!hL07RDsJaoax{Eew(&U7@Oi}{p=x-*Lqt|o5NY_5(Weq)iR8ru zS5D?jg>+^lCug``zB&#GI)9ig-oUFy!6%14-=yhz5%Af_uU?MxFhnr+gra_f{tLf+ zXyUWUUCAqm){R`VjbplJjqPX#Cu9?FWG83*)VnysGho9AuQ#-Eo-K@aJ|*fIYKht$ z`xW|M(2RXQAt3J#2OHerTRekxL7Tmx*iRc?n>x39CyidkYkZ2=lg!&Eld&%1h>0%` zNYEYLMFLt}e=VL_*`IhjKx)Lv>v)56&*8XkA96$}jK-egph9okj|e?O_skOOYv!6M4;vm9qGM%1tyo>iFcg`KaaVE2e z44C zM%FdpBU&D(522w6dT*fmBO@!YJVx*jwJ>tM%*YkK%df&nAK&{aLzL5$vy=(SIf}3} zO_?$Bj`4wG6dj}F7`Gi`%`xse#z&6viDP``8226Hix;tt5y1p^L6X^@$1r`J;l(h9 mi!9y@M`nrlD!=A%nTPRJR-(G2ufKrJSN##oSIo$Vum1;>b4Zy0 literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/NBTTagByte.class b/bin/main/net/minecraft/src/NBTTagByte.class new file mode 100644 index 0000000000000000000000000000000000000000..44723f56aede45fafc55fd1c75f816f02b9f631d GIT binary patch literal 1162 zcmZ{iT~8B17=_Q2!nWOoLW@NN!Ef4vtO)8wi5EplNE*1HY2xM3u60e>ZMIXC|Kx=x z3PBTpfIrH3W_O{j;?3-Qyz`v1=bc}_zyAcVg%<`A0*jub>|@t+nt^<)>|W5c_p9}~ zY*$Z}V<0Ioe{Dro_8fuq5vv-q)8|}N1tzv#&s8r4#)_qeKyt@#IT?(>v|u15kgZW^ zzkht>1a*1T;jLWFZ^}+X2CiPmn@RP~?FlT^u9c3>Rmd+^ON}&0u`rGaZk)(qLty$t z;3~q}JHDqJPmwiOti6{f(sq6Ol~nSeueyCz(IzvmKQ^7Na(%C7;HE(SvTpC->cqq? zEE-s#(&g!ZV&OKHm_;b6W7Ed=G|*OIu) zW{&ZB@;T{_ayG#k-www#SDWDpFkU`K<_k9xusCM;)ngJSCONZM#v)81%dZAZ$ADc{ zhP4_{UigNY0c9$bo+M?8V%d;Xh{+L2Yve;qz$|X?tU!K}?77h1PE0pf%U>~bf%yam z_{d}~L}-%{+Kf$t*7H~njo)Do|3#NqFK|y_#Ce1+5Ir~KdK6tGTA+j#jylSp#EsFaH~X&{lNi6MSi%39ZyZL{5?{ZD?- zL?Ni*2l%6m@60YxpnjRzojLQo?>T4Y&)=UX0Opa?5D*x*O*gY|*=ETx-n*H)Q_5^+ z3k9Q`ZMx=);}}g1A%R5Ou&hxx1-f=mLj?jmS%JNaeC=gn$?wJt;(XB&6 zSfDRYz0Jn{uIUtv-3k%We6?g$iiTs!e}6ILez58S6Zy8F7Ww zWe*HzMxg(bW4T0@SF5&b+AfL1$^1v-z{ptD%$ngETMf6?a2KW3$ol7!S#zzbUDt3; zAa)v;+dA9n#t23=T&L3M?m0!r4crt6E76?o(nd0uD#|lsI>ymYr)p1Nu$>7O$1#n) z3wGld?dELHZ8z>Aso}oBK&ub6ts{lBfF@bW1v`6Ml9=iju*U9My+Prdjg}Z<`qGoycos`&5p_ISbryvugc?V z0#oe-{)>?(H+0Nlo)==f+Hgwdh9z(5;H8%_EmLGuSr@)2W+g8kzdHHFi_Wo&e{*UF z=tv(S@{J1t=o}-QJ>RIw6}p8SDF*dgIYuG?^?8h20bEv!(rt{C!4{>s?-?Y= za9iaufjd`}N?ehJN=zQ(uE277^mmxa_+pc-Vo@3d4e}8Zp5Qp51jjtUnP7r~)2die zWblvz0yCK9C@Vk3Sr#?euYKX<)m=6Re5L0#5BfMETkaoSqmYan`GtkI(Z@%4s;YB{ ZrRd8;WDl|a^%8Nsg*b9Xe5ImZ{{wEq2vGn4 literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/NBTTagCompound.class b/bin/main/net/minecraft/src/NBTTagCompound.class new file mode 100644 index 0000000000000000000000000000000000000000..a325e697f79b91cc3bf0796c1f14603eef1b1b1b GIT binary patch literal 5991 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 literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/NBTTagFloat.class b/bin/main/net/minecraft/src/NBTTagFloat.class new file mode 100644 index 0000000000000000000000000000000000000000..ba601c8e47e2d93412e0452c80a0aa4c75aefd86 GIT binary patch literal 1167 zcmZ{iTW=CU7>3^g$^yHk6e?Kl(R$!y*V?KVG+uy`G$HLp35l0e*y0+xOO~PPfAT^T zZBtGB0sbiCH?zx0@n&`o-#qWT?>E1GfBy;K053Fz7}gz2m>0HVwLN|=%z@W7kE_il z@78-R7aAfAt8+`Ld|)vo&ShDP_lC4!b%yAn?bzZaLpWb(F+^%^$4Vd!-GGJ|!%~B^ zj)xa#me=HGJ-U@{xNY8RanF|PU^61#+5?8o#$4@@y$T8B>xEVvgfXyyC~aJFZ;v7M z-m?YKx;57kmLmw3%QxQfOK#e(`HBmEG8Fxxs7RNI*B{zeU)ZiQ&~Td}Gpai}8K3C5 zgEb9zNojOCp%_?4ia1JCCC9KbPmKcbEZ&*%m7Vo<qnPOmQjIsqN~} z?sY6LfiiSCJTb6`r_^%Z?^{lXVU2q64=lJVXvhUEz*siYT)k|ePuMal+bpCmOh$`Y`GTXdEseuUULWv>>{^-}RGmT#~c z!UXS|Oe=&m>7(_)B*=OO8_M`5w*HSUmTs`kFyq`uX9=B~ay^TFL}-RQ3N*?n%W6#t z#y-)?&ryaAdhL@8L*opoeZkE`s+M)>A1J@M#;*L=E0|Z<|NIweV~Ug>lb)%n=YIhG CE7G_C literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/NBTTagInt.class b/bin/main/net/minecraft/src/NBTTagInt.class new file mode 100644 index 0000000000000000000000000000000000000000..ac96c9d4c177588685615f5a7eafea99f08445de GIT binary patch literal 1155 zcmZ{iT~8B17=_Q2(uM9)pv58rDt@*FSrOEW5-*C9G-=?1riqtByVf;jx7kin|C1M* zCJ3o_Buz{{9od4xSrG2rPS!vQJ#kX$JC*vU@?(KB&~| zvR(C*fuz9Fl?4^qa|EVbPc>wx iq;_4;RWAf43dM#%a?fu$X-vShU|>pMwnm+U z{>iZu)a7x9x3V?ADLV}rxOyFLCe>TFC$L((QaQ3#CcaQDHl{&{g-N8iaVmo?fw}jA ztH^5a`JQq-Mbu)U_D-Hk+x6|2Qpv-<>h@JxdrZIj&~&=W^}U{f>jJsUy6WNJ#KaA( z7+9v#<>`=OVHI;sA{1q20t;7Z@#h0aw#HoL$6Zyu$drjYxM$$5!2GCOcx>T59taqk z6^b!w2A>;~j6kevJF5P%%a~bJp-1H(slfHx^jIiHS31&b+tF^>z#~Q#YL0AI`fjJ? z1Zix*)Wc&7TX@1|%Wl{4S^_KV!#}Y2R$1TJu~5P~vp(|sLDSiHb>}mKSGK7YvBpMD z@LlpH>27kC;*8IR<1|;>;R!HVI!F2oHxjToruo%l5+-IivslI=WH8IG2F%5PeO89G z8c@gp(S7e*LapEKS}mtXm2m3o9m^on7_bM0z-Uc zG8-ba$p~%6CPC{t+zgH1!tMW~OY0X{6Bu(Iq4Pv9j<_C2KO|b9fFeg7f~ikj yMLFuQ!FN8)FfquG&5LjDvRc<=e_-SFIX3mbp20rD_UFGyH%Ca>0qJR2_3RJ≶b^ literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/NBTTagList.class b/bin/main/net/minecraft/src/NBTTagList.class new file mode 100644 index 0000000000000000000000000000000000000000..70131badad7b1c6d8de9bca623ff2f6305715bef GIT binary patch literal 2250 zcmaJ?TT@$A7+pIjG$9-kpj@N`8lc4xq*0(+xl{=kMJZH4u=RQfhj3^($()>2@wval znLhF2L!GhI*crzcU;GEYIsOi{uJ4=>!eu(lWS_mi%U)}J-?#bWzh8a@Fo8k{0fo42 zy6Jt(HnWbg=(^sL*|(N5&|b3L)2bRA^b=Gaef0vTNnj5<2A@ z*AI$xQyGOz)0SvhZ!zEV@>~E``u@448gPt2Ij#dT}*`K85HB9buv) zfqoJ%S>F*fRag?&K^@m{o%@{WDs&{5hW*R)hMh~VZta;_cS>Y>RYwxT6qSCysLYTN zVMcU>5N^UK(jnZS9Nx93!0UJ&Zzwc+Tr&qQ?+@~(4G9|8*$Xs=J>!y1#WlRCqYJOl z>!IP$)_##7zIBY%T~cUXbB*kSJ4Uf8f6OtB?Nh3Do>q0q_C;;NJD3gOU4_zGPpEWlvRDvU3waDol)SY|0v*h#pY%!DNR zS`rxwqxFQVP|l;P!tkWa>evQ*DIz^-wZncNuyqt}Ur&&{NM5z4r_)Ptp3L7jc=tQ7=y;f{ckVvYltTAA=5batE0q z-qX#mAT3wC%zrXY5bUOYLTd$ah3|1CB^#}RfdGDkc7&m)NF5@a3UVExEmgs50mzph zQo&dN+RP!kM`82kslO0M7}og@4^(=^bwkQ%9g@4ry0 zU`}DCPFL;rA^L^r&sdxcb_dDi17Xn}tYA5S%}1K*jX!?z*9n^;-VF4S(^c|FAdUf6 zcaSWv@wK~7C*6 zw8pFodw5XIo}rI;MI~#`anqf}c&jd7w3aW*e3M?jyf=g*dA~g}tsySW9H&Wxf J&)5L${{a$iyLkWr literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/NBTTagLong.class b/bin/main/net/minecraft/src/NBTTagLong.class new file mode 100644 index 0000000000000000000000000000000000000000..a754ec84c70e76c5e4ff61977aa79ba48f3b0390 GIT binary patch literal 1161 zcmZ{iT~8B17=_Q!!a{dxOTktYLHukBvLdJ#C0-OIfi!SI)5Oc6UF({%+ia((|H%tY z6oMxH0DqM6%eP@I;?8QPM>qJCor+)daimQkSLZK0?BQ^<)n~+X~DpxK&D2e z{r>Th6V&BVhh4dv-;|w(3|zgAHbG-iiL4ZaN|S<>jK&L zfvX5>Z~LBdJVjQaSbHZ=r0x3lOR3~RUv>McqD`h=eP}ve<@#RFz;%Jyi@M!|%M%kf zuwdXOl`c*P6brYIWfq~Rj!j_hDlz_k;KGc(JE9qp1dO($>L0sInpIV{DgRIfZfLStids6-YunLo#lRzm6^agRSNm?K zYtk3W*#u{NIvl6C+6Yg8@$wl`U$`*_i(`skJtkpdnlp=KEJ7L?el;K)19phl z0x1nBFMY$zfRYYRrb$UtEEAIQF*zb>joHu=Fo$bA%afHPyAayjCP6zfSIS>8bB_50 z2KdNiE<|XP5!#GRvWe)$(D)K={~ujmImfcVi1P@YC%Q1?dKCSTXn`V19Cehd;hG5= zpSX&0)M0~9eURbUWrn=HxO0ntsq1n-u=@H8Yx-YLVV`2-^IxRJAyV#=^fat`_6HH2 B&|d%m literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/NBTTagShort.class b/bin/main/net/minecraft/src/NBTTagShort.class new file mode 100644 index 0000000000000000000000000000000000000000..b4c1a22b78d6546dcdcde938b617b894029788dd GIT binary patch literal 1174 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 brP*Y1E%9z`_#fDP&M!2O`FfWA7&!MYMS%~l literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/OSMap.class b/bin/main/net/minecraft/src/OSMap.class new file mode 100644 index 0000000000000000000000000000000000000000..428969c62b9b95f8625a4d5f4a24647e670a93e3 GIT binary patch literal 793 zcmZ`$O>fgc6r7EnI5AFJ($b_YrG@g51gIqhTv{O^NTiCiIRu46PaDTj7sp2aX!%E+ z3lboNdgQ>5Ld-6aA_SGZ`*z+Nzj-_R^Vhd?01x3>C#How;e^x&6Vu zd}qNFSU8p^(hX(w#_f-eeJ>Lz$LUapxt|IY4)=(6y)cM^?1_NUYz+m>XYts#aS2rm zjzHtz{+%eF^al>+FfUL#nRZ)mwhnt2k#{N(xa^>aQiZJ-9W3FBK#|hLO+3bIS`9i~0!r~0B6P9LhlhD%e3?{oSp^h!;ZQ(Z89X!Az z#>aSy=Zpq!QLhb~yJDBguaI43ZI0|3`HN)N$#0;8HFi-`gEe3oMElp|qq&$)UwS<68D1B zcilLg7|03CAIlSI`!aZA_eaOBlL!>UcqskUjRi7?UE)2*_X00@B9Lt~hXT20;n+2C z1!V)4!0Nvm?I4}>2TH_31#<$0lWE7TM)R1g=`hqfny6f`vs~6UcLf^u56P z<%iW&H4DqQE?|Vw*bAhu$L^|TbqlMinGuJ+jJ#Oo)-7!4+^H9g!&9BxvT#F-PNWmY z25t(h%zQcs2dQ(^@mzo0j-oIUnCsEugLE=-qnC2zy8_i-=tzG^5rwD8@*t7UTe?5R zg*|Pni7Z+c8Yt4*OT9u2+jv5l1G%(A5K+p!d$Xy0S z7+eA+q93dZ#?Dum=ikjwnE$Ar>SrwF`X7*cq2UT)eg@YF3p2P$XlQtb9J?-}hHdI? z<2KhFJisHy$9Rh8j9J{GUJEAQid`hXM0T0A3fWci7s#%Wzl=8O?4qUyYrqnUuM9Hx p|9-JT%cgg-8P%QgtuJVvag))K1)a?5cGe#P?&2Qn0{1m*=QpP2r9%J! literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/PanelCrashReport.class b/bin/main/net/minecraft/src/PanelCrashReport.class new file mode 100644 index 0000000000000000000000000000000000000000..aa109c850642fb908ac7543c5eef00de97ec12a6 GIT binary patch literal 4925 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 G!Pr0Cp1B+V literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/PathEntity.class b/bin/main/net/minecraft/src/PathEntity.class new file mode 100644 index 0000000000000000000000000000000000000000..a248127b89e6fcea0c1f57ef2b42331182500cf3 GIT binary patch literal 1240 zcmaKr%T5zf7{~voGo^MqK&c8?6$JsOtx~xu2*RSJ2}#8!m?rAR>Gar6g&8tEAou`m z3=iR+g(eV<3m(9SGJa=f!X*?I?K$VW{J!h_{rBetzzmjSh%nr9xX5qX4!1n>lgPI{ zD_=21bHx$1*o#4BNVd!!GrwUvjr^Nhi(7)BYsQ10wskp>G4+7`je+-Zm= z16yT?OTnsB=evYiv>jV4F$^2mb23#1wcysd1_eDjH1skkMy47EL!XW)y5#Mqju>t* z^p>ffwe8Is_uiVd4bG4%yOz08H9cFtL!l~~wyfcb5`q>`4eE~RO%lU)ERSz;N5}^G zCCH$6b;M;*&2E>doOYAf{oLL&bgv83`uy753Iiq@TvXh)Eo|3em^C^C4ufVosH)tW zE-u6|g3%ZrQQ&JjuVYN+)U{i1U9TR;V`O457zQu<1QB&)kzZ-bxir9uf9m5WqKaNEW^NMyq~p>7nozvseh*6BoeMijW>$L;?S`8KSF3?ATN2s|W*C@Iz?OhTuQFub2T!nj`hwx4>^s;!*UJl!vy zdp)~gH>Zvsj2#T92fs1>gNPA7ouFs^NKPvxoB2$|QqMr6_jdb&rQ<^j{kt1&d U<5-}ZLOuyB(oN3ml}}#!54e5+qW}N^ literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/PathPoint.class b/bin/main/net/minecraft/src/PathPoint.class new file mode 100644 index 0000000000000000000000000000000000000000..d0a9b8674711f53a0e0e7a25e2ca73d78d939866 GIT binary patch literal 1688 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 M$>7gq?!X8C1MtP%UjP6A literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/PlayerController.class b/bin/main/net/minecraft/src/PlayerController.class new file mode 100644 index 0000000000000000000000000000000000000000..1440bbc1ee19877a5930b0244352bd38c3cded31 GIT binary patch literal 2838 zcmai0T~icC6g|B=FzjXkT?IuX@q_5HDnvzyV4@L3H(3<6u#xBP%qs*+Mtm4`g$A(i~4B&U037m!7^is_#2d(S=h-qSt&_3!V002su#IuZhB zTq_({v0ba=o0V`N@Jj)balppDTjjU-wPq|hdi%=XQv zKt2X^w8&Y;Kogn;+6xSOe{H2``LkxxVX#cWE1Ax`>D%%>Uev;>9SHO`2>oi}q_3@; z{$&o5u|TWmE_l9E9;>nr3~;hh0?J}klJ9B|Bia>6mmIsaeB1F#%dAK?pU?Nrrr@t*Q{7Tk&lR7iH55woI_T}d4cZNG{Zn2asq8urNZ`26W;PI zp9*Ne^3E=s(KIfiU&kf3Y;SoOB z%bSRJ+MrLc-1)SimEaq1U|UtgTS^JcSc-@3Da=a<7GZ zQ+8OYYBvji|C7e2_*}0~RU*$30gy zE|!;7zP%Bh-hFPB=-8>=$XkV{dN3NOx<jL`6b-{H+)QYemM6{C_%1oT`;fA1 zbp?|_v6*`un->ha>B=twdSZwu@Q;ogoaJah5a5B!ynil3e9yAqpXei6ASwnR|i5FYvYsbRl|q zXGHrISGzQ|cKymoQ#`#n)U0O7E!-Z`yPEz)p+o-xcO$QfuBI3Ga0~alzst-PPs&G+ ze8kIhMzPh6=O1UDE^XnHt_ZlJc?+cu{U@?Xs7BtnYOeYK&!i z&O&|9Tx2V!qb%zAZ`SkQtmnTO=iiACi^S0QUO^Q$WzmnPSYmaWiT)7FMAP9A_ZY-~ z4AP=Q@TX%$$Doj96X11>gbILI~0J}x#(^VkAqZs0ndS_2E;m^!5I#E%2mv%%?#_0*H zVLf);H~Qs$qd!y8zC1Yd!5y({2?%W9t2p+>n07*wg4)S?c!y`A&ieVmtVa)E{k018 F&HtONECT=l literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/PlayerControllerCreative.class b/bin/main/net/minecraft/src/PlayerControllerCreative.class new file mode 100644 index 0000000000000000000000000000000000000000..0144e59852a603f273e943a9c6cbd67dbb47bb81 GIT binary patch literal 1772 zcmah}TXWk)7(FXHR^`Y^n$jC}g41$I>`;faT-^q!(~H4wL!Gz-JSp~)sFkIRq@)v` z`6E2_g%`j~2Rg&>#tgrS0nSQ_lVEi+92%ZUT29CE zZM9Dhv*ETK2rQ;Vf0?=(sq9()I|4H)R)?GkQ{n_N^NPOVxesNqV?A{RuB55G?S^)^ zA4jEN0~c{g$EyOfqnSC1HBrP2{oC%IbVJYIr~edUjf3kXf`QjCr=uh=H|qa?U=x>d zMWE2PYTHPl#RiQUbyooacTEA;x9%UU10+&Vu4%23$f<>wcw`EL} zos<&gXad@640Tl{tI9?i^?e+xgOy8R&^X|2;2Pf5ab4izsIRsR0^4&RgkX!SVSZ@h0oIu76e2NB;FRZX?DVXV{_<^a*YCue1=wKfC~f67MK4-r98mv1H3iB z+v?;6mcIN6%f(;ufrdY@GQcO#vD$uybH{PZ)N}VcO%$h$@BjT-vB^ZjW+Uwd3Y(ye zNjC5lyYe)eC}4v!l+aSlWGJ*lp`VebhBiJ&ozEsw2C{!+OkA7Rc-6xFM93naO0bss zL9J2HI0YAuq(B>{fMriCSBO>x$*F>TahSk-bXp|knaD$2hun}}j`Z45)b*3=P&z__ NBN~-bP`RSo`45^Cmw^BP literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/PlayerControllerSP.class b/bin/main/net/minecraft/src/PlayerControllerSP.class new file mode 100644 index 0000000000000000000000000000000000000000..3c6d25920facd96a75d29242fb9938fce3baad16 GIT binary patch literal 5124 zcma)9Yjjjs75;8AnHwgT*Fb=fgof}6p(QN|q!P*_36FuKjTv4E#r9_Al3bX%Gre<@ z0`<|Vt|n$0y}sM$ON6A{+2K*QXtTHdXk%;{J}Emw-IcRbrW;7jRPOicHh zBW6>|bOxI`Qf7`jmuQ%CwVnN$^nh*YxPb^dr?7;|Hu~vAzPQ#*xH}6Y_fhm~Gpmvdow+^QVEO)CpkYf5o zyD|wgwcT`W@$P>Nc|&$i!@>Y62S7?jkC-mQRU05*puUF4o|K(c3N*|M3Yemy5@D`{ zo^1iCe=Ar>Zo3A+YJ-8dBBG(f&3L9~XPiFsZiX(vrb|wt^&)jOls1UuoRYJgq%0-9 zRys3cB{hT_VzJobe!+>I2KvD2RFY0iz%K08aeH9E@?INw8}86h?hRQxGH#06ssap> zOKlODNaz?~Ik=JnQp7+Kj9FyR@}!Beymc|LdCN0 zQU=m+SXOD&cr=2FUNKDZ9-5a0)AFvsbhuR3Kn_H72JPq=c3sQy*55U3XR}r^=2>Yb zf5YMc6vSHGGZXuG)Cl(LVE6)(Aund&01mQ%XB@xIOH4HAB3?0(#3OjSfp;KGUvoln z+&;*{JA!u^xEEVAOwTw%o4?&kwjbD*qd*q#Ht-&7)i5n-=d!%jHg1c>oDuqwaSu$u z{dk{_2Li(+O)&6&e1KsZ5O+|n%gzyt*}DQfmeLZ~4;lC{9%O9b3={M*Ny{Uq;A;KKr%cAI7IX}f@6|kK_4O1_z4E!e2>dOXB;9zL& zy`oU&Ud+H5e3M-db20yo%x4A`E<%DtciKX0*xw1Q=L~!c=V=Q!ZO^2J(<~}1j~hbk ze1Y#6ct!}6Q=rH85)B>%t1WB{HE@pz!;1!fgdg)5x@D#* zD`t99HlO@lbi6qCmj-@?UlVPTjt$DjRA#_T1rwmRNP?&T2CwM&Z6JKbk_LV!44A46 zC^}t3C1W9x>9x$nP$#R7=_Cls#Ec^|sAGt|9Nz;AipnvOK&AMTfj{7n3~t8RmgV)q zir9)j8+c88j4)_!!rEYq=3%C~K8id3rGizM%RDM2S0t*7)1 zWid8jBj0E{HX%lTG;GEe->)^45q{}QqFtltE*z-bohFYdDAV)GbSmqW%Hr7SD_cTE zn)olM3Cj;Nr9FmP^i^o0J5U?7O+2QY8xJ*}#*WkIudb;b!<{Qa#jkr-lr{4E8Q3er z>ifPiWLD}``UNbh(knx9({Po38uuJURh6C>dS`xiUuF0RmiVtv;=PrjWn=i@5zJC^ zwIEKfEE~f^mEk97Qz-=g%ZMv5o48jK?;0#ZEt)yI8P}m5bwqS7y{X5YScv^xeGrY( z=U(Mk9=1b-O<{5fALC45e+VDvtdzR%!zVZkQLl@`oRv|Njfe3`&YQ6tpTZHw{3!P@ zw*Tc}QMck{%bB|Z3LP>jr z5z@)o5;|Ug3{x8WIEIqccmn?rj#h@w;7iq9opBt`)Nq`29A|4e&OVM)9Eu2AR#|ow zp;H30vSlm7LRC#wfvt}Xh&pi^b%9;TzQtM9&V?h)1n> z_@AFL2BJ?p{>!(cXZMcbyFz`PL7jC}Q6mDgc04ebSEO?3&fLpCSBo-MBg$AU%UB_r z4p|PYAuemhPd`?gc1E=W%b5$E#4|=5H}l!c=OAmzesr;yxDDr6f1YF9U*yV5i1TXN zidUHDuVM#Y$4>l>eE2*1@lW1d|HAFKh~1jT-w~p~Y*JAeXNXoZ&JfQ0OyNvr3ZvyS zq?2q{nbM1gm?=LX4+U$cqHOv_EY~h#kBe*Z)T@_o4s* literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/PositionTextureVertex.class b/bin/main/net/minecraft/src/PositionTextureVertex.class new file mode 100644 index 0000000000000000000000000000000000000000..08d48e1c47d2f9eb738df76612578ed540299e4e GIT binary patch literal 1170 zcma)*Z%@-u6vm&+x<7P7woxdXir_Z46=6~Em4-JiM3Y5LB#XT4>Qzg|YPyc_CHO9y zNHCiC0sK(L=eAvyFpPWA^W3|0p5Hkq?ayD|egN1-CyP0O=12yeV|OGS-+mW##=g^e z<&E9I^+pHsG?@6ZFa1ECW}yibkL(k>GqgwVJ1+-E(g_4|Ck&py(-o-nu6p&Qv(tUd zN?IthsrMTJv48dYP$2Wf9l60Com>0r*X|2wPrbKN#|;#-SQId?;S^9pS)lCr(hk_S zYV4UDew4nzTC3abwy*6_hk#Llj%Ag4ZCcdMVvqZJF*zPc|G*v$C6PVPv4?%zchxz* z)PfK0SYQ@(x`sNGC>(H#+is7I^acugWT0wX^zJ4rI~pL>oNa1&nheb9pccc)i1E| ziN^?>2~8J5=z5fvK=TPSj|i&9s>QY*9Td{EE>O2Nzo2=Jrd2;j+iIL+^UrK6$F`j{kGMa~XgC@#QOk`>1;;Fsvm)M-!QdSn*dn+E;P( zT*PuJda2Svd2ksnjQ9bM#ylBD&juqAYY#<+Wow;jIgUE%WXcuSsbZ+wKr$Kb@q`Zr zSvI=!jE)@f)B=mVX>RWeB9?snsaV+^=rA$5T1cO-3rRlJ>cpt1LF*j|CVLu);=TPaoxG1 zv0KI}u6npa{6BXoQ~S7v>kPqA=sYj^mTID^cNy0I4a@SsM-h6O$8YxdG;e?x+xbzf zt$O$OS-0mcCToUUK2~ta^mNXJq1;PnDi%A^biJ0RYj4yYqee&p99rkhxXiTZN;Nc$-Y#2yZP6nx+f&?d!fFPR|5)fpQJm?Rxo?AZwJA&AV literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/RecipesArmor.class b/bin/main/net/minecraft/src/RecipesArmor.class new file mode 100644 index 0000000000000000000000000000000000000000..915a7740fecd3a8ea8bae8b4ab9f1ec716b452ac GIT binary patch literal 2197 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 literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/RecipesIngots.class b/bin/main/net/minecraft/src/RecipesIngots.class new file mode 100644 index 0000000000000000000000000000000000000000..9018d9e12ce0597c4d317b1d3b861776e82ef6dd GIT binary patch literal 1415 zcma)5+fEZv6kVq??a*O>a;JhIR*`~Gxprlz5Fbvb0}PZIG98G~SD*a{ zpL~|67!AZ{zsEO?y3e$LKuJu~bJlqDH5NuH!su z*Rch-Tf=1m)_m}^#Wx*0FW^@+TorI7e;8x9rXh$BLtTbCvar3GGu>xAS1=hGGLFFu zOWd`@y&ROiHH+Nuu0Zxg6R8y{&*#fAhMwLEFH&Lv$bxxp^HtML#+MW%7}_g)rhDAj zP%(%h(aT|mj!HTGW>KapjM5OqVlfrBa7V#yYW(rMq}I604bOBn+{G91<&tM$^lPbnBsbGS{pXGN-iH3W)PwhQ&fMKK(Sj#z&_ z(n9PE1B=nT?{IgBA@(0;m%wBrOP7u#rHyQ>@j1=&t#Z><-Pv{xbJp_5;zXYZg{SBS zc}<@0~L&{3KsMWLbE}C@O4nr6G&_xOb z4?~yyP)yf9qUXJzzn9ipzp4b8elv8AQ%s|pR0)0Pr=8(C2Ffgc5VIh~UP%-0;Pib! zPsgw{{0(&rrL#=u<}tbdD+aRzd$>{MGi(^4(qajUB@~H$#!Wq|L}mRGl0G&nN5Xq} zK(a_s!!*Impx}VOybiDqQQ+Y1pErWK1VO!%>;e6QWKBJp)Cm=jPz{@6FG-k?GFqZr wmO{iy)*Oimkf9HeroA4|=~W};?8Fm1MwE=m(919azYt_Uu|e>83Iwq57yJuS>;M1& literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/RecipesTools.class b/bin/main/net/minecraft/src/RecipesTools.class new file mode 100644 index 0000000000000000000000000000000000000000..329379ae91f1bacdf04b3fe7fc586096ffa51ebc GIT binary patch literal 2232 zcma)7=~EO(6#w)eDRYXQ=wu^B?Xnw`HxaL%tDa$>(}qS{o~(Xw*d6vdkq1G zwyfzUR;;XPIQqPs$T>#htZ7)QW^U59GdT?^L+z5D*Ap2%yO5ZeTQUuoA?ird8QpbF zC!1qvoShvl(UPuXWfuk*sy*I_Yp!e~dA5jDb@bk8(VA`-W*|g#96olVT(4pEy~P zKE*LyE>aL5;doNuk=&x4H!}t8QI0W5_u!)R1jiYHS9!P)JlzbX+F&{Rc5;& zIm3|>uvT{0S&s7p3lUZndzRz566oJi=a`d5iCLzV<}eFJ3qlJVixOM3i$PuDSe7;k zD+Xcaw^`o|-XQp(= z5^En+-9?L%G*%&f%6kA+Xhct^eTbpGqr!n9(LN|A$MmeeU^)YxQyN}j*j+h^ldf(o zM{pUhi4uREc$I9*9PXTo;0oTM%o#x}zJ^d^q01+w_QeJ+o#`%u_XV40V>Z zq9RdN!@C^siKqp0E+u&cAK)VmA5!IS_w$Y$aeRzVsP2l9VCcP@)AD))}cc{C@7+Bg4X9z`l$k>{+Pb%zjGvMuQ`T!$`YASSN^o! z!WQ;Y>r?1IAwWOse{x27BuBb2BD7x(u=9j58r!>Wf_G_~h^CaPP1L58`ub!_t#3@G zg7l%OkM0y`vp|~(4f^Ok0&Nv&8=+O@Xq%7TK&&gYiG3-BzDi2jz!H$Dp|6TGg6sgzFA>7MXyOIDNGpby@UkE2 z5Y@4Ghl|Sb>#(|h!kW_4+B2>kQLp2)ST?EZ1wwvD_tD_N-*7qA61<65J;!K2)};23 zbG7kb@P>5n9dfUBMy|9&$)EB5y2_eVVQEWEU%U0gdVsZhGF#VfT@|h?5U%f&X%M2c z2qQ{K&`3`2M-4U3YU*hriG6#kl-WpA-E%FuNt>ouRYmOZ&QxA}TQd!M| z9ItS^f7I+a70LV|$5mWFGvc8^o(zd zN>K!^T-S|yxayLsXPcb&cr#L~Bt*F!85zzEH}RN|jZ7-e3Qw#!K_Oc-FvW1Dx$I^r z?DZrjF)dr|Gr~3FRH|o-Nz7o*z$~>-U^K##}@kN!B8{mWA&%bLz4E}X!VS2jQ(4>UGSW~ zhYm|?-9yUK(rMGuWKGMc;a!t9 z4nTPY8d0Dz1^PgN3X*aBN0rVE8q?5e)M(V{!HFTH`Nw48QF6G630g5~mrtU^+4poU z=~&Fru0MsF`w8RPNdL&3c13@R+j7~X>krBDJBF^t&i{rQMM^s7xcdoWB;JTfX4p9)Su+UutQrd_~t)w-P1e( literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/Render.class b/bin/main/net/minecraft/src/Render.class new file mode 100644 index 0000000000000000000000000000000000000000..b984d1c7003d7d5813e881cb8e7fd3551baecc8f GIT binary patch literal 7973 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 iqglxikpq=Y7<>~tEBm(&@j<4Mx8 zmbSEPg?xa34-ilZ1bl%|i1YM$DT4^7fV%v z^~2ZO$qA-kK|5nQG^ZS%^TOSwS2L zfoQp+=f;gw_N>Lo5~<-SeNIo8b+eEjv#pX@=x?8hKtpQ?Eu61dg>-p-s!&c>W(<>J z|8Q5Af*WL_N})VDTP=?0Tz5*YS*PGe+~iD*Te?{->$Z_6VW}Y*TOHc4A%vS(<-aBu z1-D=$X`Hc)xg!-@w@VfCetn)q3`rN86>O37QS0hlVDK|QM$n;PD{d92E0mq3a{G|n z-rK)ZL0T?us&zhEvL}nuH52QWv-K;ky_sJ0g>c8JagQ6-s!?X56-&W3WCX$`vuf++ zB-vfymi4 zf>C*l+KR zNyBc^n{{EYEBai)1DEsL1=dJ^w|kO~#h{0|)|u<^BpoU649g24+ro4#;@$4|r_$ajdNG^Lu@EnA)Fds@18nNR36a zx-%13cP(Kzw-~&j)#Wn@EfIa~ZM13$b!ch{`{%U8R3@n<-L2ITB`PD+;_`0^ht+%J zc&!$f;z(;`5%;!6;cT8*gzwTHZj;^`Jjyh+pr(4AFqgs6K znk`n$YPVQ%SF2+v*KDy8UdEOI${`_!vFn zQ}l|@`4#yVec~5v6MyhyaRu9bYtZFuz)oK?cKMRn?OcnW7#mC9yA~47FlOE*A`4Ys zB#CSy-V>r(qM(E37-85!^F(zxB)-QfWXQ{i_ztJ>82yimukko%+04aPc!H=Nx>&@M zL=7;-hj@yp5hum_c$z4NS@9mu5H;bfcn!}GsaOyf$=^n@`6}~0M-<0pVdFeef((Z7 zEKyRtL&h)gG?KW;b83hG3aM=lL4?re_xpXm5Q*{q_W*z6H}Mx6zQA*M-t7hqGU6Pz z+Oc&RZK;+(OHd1Ib&Gi6YF~*+TCkTv4musCMP#S!X3Z~2qd5g0^-4~XhIS~AS954!wVxIc;Sgk zPyx?)f)`ouW4*8SSY3D5_10C_d-c1zqVW4vS9i}OB#CZDEUT%js%R)*)HI~Ap<>7}RdtnB4HIhXE0#9;$zV!d zQogEuNNsst^^h40msC|WF(ock*`*Z~RgH~IJ*FMVWs1!}ml(s8QNOCHp`oU-%1)kH zwWeuhLlqNG0k1{1HOpfu^O=$x>?V}f)=nx%4NSg6YU*m5#xeEo|4UU3n9XENtgoyJ zlB86NEb7K2`wy6%KuqZt`6-~NkVOd;R8-iaL``K`WRj05Wg5og$d$_$RyE8lUs#J~ zrcJA_D6gGe-cX}{JBdcq;+ifxA3ucXys@ghVHj%C-LgkuR%1YUWAH(ai2Y%Vq#ZHmj52)Ai_94%fFLeH)=~BZE{(gZwlQ zbssp<_Tv@}rXfs8)m2UL4Z^rjQ4bHZXgGmsc4JkOU4BCS%DT$N3FVDdl{4y&Z7Od< z>-%-q`gUUE4aG={Mya7l*CPrBb(Q4}l{RZNR8fnHRera)5ua4MvZk_8<&LrF5S5z} zmwQZARi(-sXVG|-ml~Hhv7vss{a~p@6FO$jtZ%4Tte!m7qQg3JomA5RIb=HAqRAZ} zJiMyB!RC5|MN?H~d}F7TS7HsSN2gnKWJk7#*4Nv4M_F{V%8SG`cDh>2e6~e%RBn8KCsox|U_O#is$%K%^5wR?C(?X6-cQGM3K{XUWYGdT z0SqAu_IymQYAUZRZz{(s?yn|rN&=P9LO&rP??7pq2|%f;tu1e=Z?LF>DwzT`b&Z%` z)uQg5NN?N&W0a^ZvZ$ICW68SpPiUyAUffh?1J$n+u}KNwv&5pMRLc~sRgcduuU&}- zh~v=uLaMWyctX|$VgWPQW3^4f_j7vdQ`$Me-FU1ZV4bP3oj!YaUI zcQSeQ<7$y$>Mo_r{d5^q&VfSV6|-n7wV>jP@;WO;u~=)HE%gg?%K@-x*xvAv|TzR!d9EHsAQ)7ukRIjH(np z)Wy#50ygd8#$?!cOo6%&#};7U0fhE_q;tn?*}t9Vi=1*rPPrmC-rf0CzYxxCeVkK7|yJBT|gWAG>Zi}-8Sn+tyqUYmy=s8yCJ7wAOTHp99 z(Ovxc#&30rYg}TdOWf`fA80~1xyWgHk<;`dx9L&e_`f{={39sq8~>7iLXFXT7QIg& zpfin&>sQuRs`W6T>KI!qsRAY))Y)>32SL4U&o{<{r7>QK-1w}PZE96~V$t8|Q=scY zg&ote^FgTq&g6EoJltHY4yMm7`hvcMa)fEK_p-@V3YjpE3RZva=>e01^fi6sr@y0` zu2z@Y9WDBn{zpUiq}uw`hhkw>G}YACF-`b29sb!i9BMp%(j(+6>7fVNSF+q4?H_5M zpML7JX&8XTldEc%S79^Q4oc!+LyE0C}RIz1o60JjZ(2wV-gcOTYbwc@?d1^O+Mx_?S z2xozU9u%Ylr^ginATM{fxCi%)-&{TU z>1l7SKQ{$I&gI?~_u;lFKd-aa#q(yV;8)_@n3Q>A(84tF2h*HwKVViGg zI<%pDHTWLAvb?g<_wYNIWBjRUEwXron${$De_XESROO7a_+XXem<@-OH#WIh#TJi_ z%bHUa%R0p3u`0{a0l&44Y3CZX?x0_7!JR0~ zb}m4MCtEOoj?gPwV~edg{Mx+?Tl499Xr^0yB+tNedT5}x#nfT7m)UHmudHpVSzcRH zg-Pwz^?YGkl(qtyDCDCpK8BCQym#0s4zH>MYE}Gd9Gs#=Z^%It&_EI!dKF;|r+w|JpjVy-dn5rwfm)KC=iB8#heF~+pL zrNNY-lrYt^*=ivzv3RM{QiE>Krc@f^-cfu~)ulvT08oBj(X~RNwD1I8&X&5QsLNb+ zIZj@_}bUwq+%`j@~ z8>)xYu3l1IJEVSj6*R{ohff2MA26QQBuWEuHp)ZXB$<0n}50F)BAmD5DvaP^Ptghhc5sVOHawhmsa0 z;hKzJl>78LHG$Q|~h*|=ugY!gw1AGUe`k0($%SVh1r z2l<(r5#^!^^_NBYctY(2u=$-|_NWHmRx3q5fpZY6NG6qM0 zGxpCx-jry+?hg9BG|!+>=ACrnXkXk+R7L%FQcdCAv~2Kp@>x-TmM`pA|JrDI1~nB2 zGH6vKP+c6%pf$yoJtw)Cw@r~?b>60kRS_~aMFOjn+vwz0sLxg7KS-k(*8hbSzZe8X5?jco59Y!E_-Fp&L+gHw~l5;S73;is&^sanvj=hXW47 z=grdV-YmWD&C=`MEWPf`QVPrsy$~|!FSS)6TBjTpU!yISXyt3MJ^oWJNfM zscGj%)3hWRl_BF^I?teOzCCx+g|Wmo+Oo}eP1?3-&$KI|y>j!)LPnXf7Hhbui)vC+ z%i7m;rEWoLu34LB*5Y|wYz`?At2jLpEVd%)#X+}HqtZsUEiLqRmYKUT+;idPyp7?s zh2dTcH-`+P4AL2atXzdmS+*%pmTipBN$n&D#UjColhcu*&U6_5Y-YRK+VO0cqg&WT zZL#Ki-7Ryw`z3m0pf^1i#do+}`;0PK8Q0}@jp&fqt{DfijWwjxT03O7tF;5?c6l9I z)OBav?xXWYB}7cmwi?LTT-&qJ#cZpJEO$=PqL>_XXu^REgRc0f$2!*5F4L2(c05%h z+vRxeP&pkLYGIAQTx$!+3L=C-8ZoMRrh@|cN2D?3iZF@bdRns4q+?sGQzPR)x}wHrE)yFq8Jk7 zK2crVJ@%ubxOW!-)gGM`P^NB>oOX3I%|*9u^j4M`$+0IBprfYW9ll69CLbG?PSeZW zO~Vj)GZcGTr>Z&aqCH&#Cfbnawn1_6+7Qxh&}mK^oHW%g7wlqB>r~Z-R^u!OIh71- zj`a4pI&iuvlGSl#sU(*tAW93ZdQ{Kuzuv7lCf#H8E6%E+;aL6n=_Gmet0dj@?oR!! za*rzy*Hjeu^yup1bWa?R5fiOzs*A&Jsq5k->$-~K9PbHa#6$}@-7yUkoUAs)vG)vCo0vO;s2*n_Me@OcH))ib;%R2P;7eL84q}8av&gQ!l z{OMw;b%JQ^X2D%4PNM2zxc!jpByS5*6XPy2S0>}6#GM-O>tqVS%U-l`6RnaoKUW}P zs=io9JE0hd8lg2uwMDuEJS3gvwQQYYfyp)?KZ@?4q(v;J^e2330n9YvSn zP;wg`L)&2l+>EowyJ!|YOta}ZoHYI!$48&har6}(4`1^F`W`NbL>vY7r-eL$D&Y93 zFXsQ>>X}P$7R)|}uK|Do`;;*zy{F7G8 zOj;v{(n<0NI$2iJDRKjyD!0>V@*Y|%U!ybR$F$Dy(|V&fZGdn7OydOFXq-lyj21e} z*h6OBGl;G06N zz7y$2-$J^{x0-JDokO?yuA*CgchYUX`)QZ&DcbG(J>BkmkM8h&M|b*zbeBJm?)DF- z-}pz;J^oU<*FT-^^UtUI{nhks>;(d!8l>5mCB=uZj9(Vr6*(;EpZ=`RWA(whl8=&gji=D`2H=)Ity-Vf%{2f=>yVQ@J8H8_So3LZ`$2al&ug7x&b;5zy=csYF*yp=u= zK1^Q(U!gC9AJN~HX~?r-(!l_8O+!$Qj|7zCBLU_3NI+>Hi5dI=reP(d*9yJ~(=Y(j z@Sxyt9n)}3a2HI&0RBx3-at3voUzTB)S(-Qq?7t+H1YT2wQGYe9^ z8);eoM%kn(v#&^^+mV*zKV2@?lsOEcI(Hx~&wrjgPE+PM{+8}UT6ceoJW^Az6t`l% zHN!aH?%P6lgX(2Y#R}Ska=rbf@&;-H)zdbBH&O5>RE!n49|wZn{RCUMkQvu97R<1S zr2q)T{R#Ze+e=^UrG5IkpEoNGojj1w64K{Zk zTsr;!ZJQgan=-q#{hi?0-$7T6gpnL^Gu=|^3C}=JRCw;#;z^;PhVc|dIEmd{t35r= zY7e<3!*M0E(tZ=oNxLVSYg_KN5pA3EEwmmey)m2%Gg>L-IogW0iAZ83Mcd0dU#a~$ zi)<^~&F|J}zEd!g6ls_5@sH&z{<=lV&UIRJuDx%dPFT7J)amh5+*ApVt3#kxr_~3P zaO?H@<(BYjiIq?-*Io`~g2s)NQ%$U8_TWT9kt{tHZoYF58E$@9=Q~xz+O6}`BOUU+ zHo5tVzt^I&4r7IRi*a3&ctv`w5x4}j`M*NXKvP^QyvvD$|85Zxo{Y#?@QZUmHC%%8zuH9QhG0o-jAq(bcnH*wh;j^WjArRuwoX*)bNa$)uD&Tl8o%=Ot$WC4?4Y$FpSgq9 zgnYgo)BvFN@1Ui);S6D@%{>$jIdz7^;b^Ajo)gYd^{HyJ!`acSRw~CcI8m6dTZEFj zotfdxDC`ndFe{wpwoyHv-AaS(t|+z{x;whC-3whkglc#!HSjoE%j0nhTY@06QsBn~+Jb}eZG0$Q&4k()T!@;SU{Dp&4 z3;06^r)v054o)@jOAb!0<;NYITE~w7r<#HGXYqZux|e~OxEqMo3~b%PyXd!|GBGPR z0=t?ijJdfQrzOoeM7@!>0mYiJOYG)La3<4?bF(%+&%v_?`Ai4T9_O`CLYtwLJ;$r* z2~hc%#pO^!n{gJTPEw-e-$w;XZG=TGWW#vj>8_Fn!t)zIiBtK&g>bs7r0IO`u%TVP zQ!wUj(a)=0-R2+5w|$do{+;A1W*LrR)~=p7=Kwf4idnms#(4@llyK{EeIN?`Y#v^3 zVkJ~>LTNbdRb%3`Hr8vq6R|$I`ChNweC>fz*s4a$R-Np&>U^&qZobzJH($5HjExDN zj&X6CADbJu9Uh-p31@Z=sL3tijjLP2;bm_(YLFZkS`0)H>e>e&dImrg2aLR)(s=`A z@g_Qm&!XXcHjUwP0Ho()xt~XKVK$ZX`Lv8Lpi}umI-M_~^?Wg%jfHpPULZ`=*>5Z!}umq%{Pm)`4({t z7QZ@Ny%p*V7L^BHw|U@on+IOEdEj-M2VOV2N){9)$AT6c9VKgwXmBlPvBUwdX`+U3tE&o7WAoN7%b=jEa=k#iyFMvivkC{6r5lq@|349sarcVaqLo7mgrvE zyqC_z6##;GehnjluLQs=QL%;*cYU`}Rn&()*r)zM_bKqSB3pNIPQ2UbNqb5KuuuhB zAS{IM#FXBJ>Aairc@G`TZT7HE)|I%!iq{R?;EiH;Sdr%J380)kfkrsPnvPOyfuJg2 z1uq;pjlauj{MdiB@f*{wQ24W{jh;QA1NWf=_oD+3paTy=4j+o^z*w&XW4#WH^*S)t z>%dsA15vL71zrabx2`(?>pBS~NxY~!VCf_Cq z#Ey0grPxVn>aLU0!>OAy=!J^njBpx=7b}W0?Ua`*iX(Q)?<Ru`DG{H2g5^`c zs*7{&#NvEAwYs>6liMqUUMudCL9ZA0%d+}M0x6Mx)k`ZPeX1iyq+dnE7YW8vG9sDE ziv0Ov6_JcccE@5B2XL#1M1D=NY7}!TRc%VCi1a{z(Nm`iBnH4e8R?N=h001lFsql! z>efC>vFfD~W30f(PK@Ud=6y7On@K$XSe9LNJN}wgk2wC3T${TO?BY6rRHykWqkRt| z`5p6ORUl8b)#euKLoBsAzK(c4)g9`Huiws#tHWz?wbu_7%%!7@Y&)BOizW3KVE%C| zt0w^SPg5^`2Kw@|fcocXEI&_&@e6bm|BmMIi*Rkf1Q+(p)WomQ$^3ih%&!9KU!x28 z544qEr=9#qx*mGo&HQJ2ncsk3{1@&HaG%6)LF0WJ8tOZI5x>hf@OykezYkmc1OA#n z6h8hdbk&bUls^_T`4iaNe-q98DeUdf#6A4E_#N~~wFUeL9S=*=UFx7*{q;pG^>qX+ zMOuGQhE1&ng@`_+=?EG{=?EHAJPT;AgonWrk3laDV7d3g=5iCLWGWEXLqiR~k{&Lu z0^B#lVLDb^3|+Muo6unb4sK9sbd)&V0seVn6@Y&oVsRFVWzbdE0dtp%N@%F-prJO2 zJO|_9Di{iCxJnEKZMd>RiP|NYqzK0) zm=dydVmC!NiRlCMq4}FQ3Uf&ughl*ba+XKqAS^2Z?kp3+o#h&Xb^=zoN=R4hJ^?30 zCK7TYDRBvSL?zhPqFusHa16@WBOVXbVl(x4xYc?*bV5$YcBq7Q?a1ob4wcZZ9dUip zO^@q~Zbw{S+-fzC*pgcdGlTeREV;i^5`O~|^;^p3?+}ysJ^a=G#H*}7Pzmp)Df}bN z!aSGpJ}kHWv>I}~9)9yJP!_I-AG%E#^pr5^kHSZv2tWNG0-PukI2T6WAd$%9gvB#N z5|@c&ULjI=ok-D`EhlYkywEUOV*=9qgWJkv4vroe30ZmC%?xRw7t9eo@D z%?{@a=;;8*Ew!5S9JkbZIP27@LQYKhvz2)UvB&E*TKIA7WqaDiEB`lz|LvIYza1z1 z*qA-x$La8|6aHTi7;gdnoZxC6ae}Lb?f}7!jgt&$5;DtIxcgeWX z!=QSjhf)1?qvx)_4mBRo^Iu-F|GUxqPt4*kj9v^neupSi5*cKQ5G9FB$`E177TMHW zbo2*w3;=W#06Gc* z9RmR!g8&_a0UbjC9YX;f!vGz_0UbqvjuE_FjD$%xiuZ_v`BCiCuZUuPUySB&#Ta3V zLqw(+D-IIlL{y9yQ$&fFFG|HyF+rRvCW_7CP_bPcCU%QS;t_GUcv(!2L6LaHg(6Vy zZvKi3MM!g?2$Tawpd2U?FSt-7o^YW^>~^6@w7O6vw!2V-JzRUpr--v%C=#c+Py}Pp zfg(}uLJ@Xub<~-KQJm2g6yXhR4Mm7EO+t7u85hT!Jt{5@fobo0QMM`^7BRT*j`I5- zFy=|mfHNvhq|TgY#8S#&;vvO}gSSuK5M_-NCt}x7Ctq-ZzdLg@4gt4OzmR_$^~?&$ zqHUC&6)WTQ^a2%pkMlqJESh1{Mw$KHCB5nE5m3gvIgpzjdP_s@ES;AO>r^ipO!?9f*>FH1vN~dwlh1^JDw_Jr?t^!Xu<#hZ@W_&q2*DF`8`RQ`u z_ zifp3 zMT%OuUh(V|&WQHJkwkVbjvkcjE!qpGo6%f#>D@{z?8^G#q@pJdMzZY!IVg%ksw|4B z8wyUg8`BGgdV-_o7GKOR)EgD`1TU9Qe04S-^g7fXJ~2Cdy-%n+#AQEO8n(khP*loFP_d91UbKh};$~2{iL=CA;%w0-&Jp*CbH&5rJn@9MKs+Zd z6u%Rfh*!lH@h5S)cw1~0?};nK7vf6sow!Qu7u#jBxJIUnYh_qmCv(L0vb(rJ_7$zN zK-?&Yh?`_o+$;|fx5yH4tDGcmlShbM@@TPJ&K0-Ia&d>O5_ifPahF^s?v^XW9=S%e z$m%v&4P!d~v_rA|8+};z7AnJR+|ZkIG%*xAGzJn0!$@F5eMP$gjkc za=&=WFvZh`C7v--#Ir`Gc)=(Tzca>*7mb>K@~}4EX7tDgjU~Vt$A`6V{hX3#gt&# z_cX;*IUk#EfU?AWa97wAx6n&4n{n79b8sA_sS=EkrfR&jvk-x0r*SLlx)V?2$nI#5 zrY4~knp)_Ve{^;CYFtzSN>-)%u=mE|I)la@iw{RF#fB6oMgrfnl@^FnAPVoNH-Akd5)b|n#_xU%Y3?tz7?COHH&GxM*k=c#_3qziKjy60 zFF%O>B5+N$R`sNg`u{7B=s-0h-+ro~$S*%h^aDmrsIM_-{gt1D23cA-}P_mdT+-WiL8pbwOV67J=EgR+bp$h3Aj$xh_?3@UsV4eX z7j;3o$0WA`bw9;eN+6?twagYU!Hae$I`S@av3hYTh6!I)!?We$) z%ROCYA#5%8>YO1A<%o0?CS`fwwi^^q@?qM`b4V0KBlHiMMf+qn3z^56G9RIB-T7eIgU8FBJP~1Tb7Ws$BKz?g zc@Q_t{=7jJ@>V&JZ;^xe4msFfAse)mxhsV4boCNY{rFIY&7hnW0!r&8Dow8t1LwSY zh4}dvtdM4`kVIg`8KB^b=WC&tG-HKiU`JU`m5}PbyxGx9iuiO#FHvh{kV3%ml%x^R zk1!h>QQ;{q)5onPdnxuGmI*$=rWXs|U_(K}vO>y946NgS;X zl%v&wa`9!VGkVFSLUYtR^!ezu9=*W`aM7bT2FDh9^jLjXLwC`ag98qP0m)$s00IX( z17I$iOQOjzQgBNF0^pV!PExmS$n!0UrXdfvbmZZdfjrzo$n!6WW+D%_F!FGVAP={! z*l1!+XKU*)6lbm~Z%7Lr9haikZce+m%yY5=;pA}6l5m>3Wa45kKG&R8JBspE$TmJo zo3$OPal9}swAii2eqRvP6yD9rDVMiUH{}6oCwHtQr!(m>w zuU#3`fG2eF1aB-f!l~NlBwxP0i#k(Pbs6ds>8eiCu5)B(b=vNuc6HjIsOp@bvQ+_l zXZ`#Yb^7c&qaEw?98_MN&KuWyloxc}&u*%VA$7^>s-J$l&M^nn>AJvTb*dCwfY8sf zuKW2b>cj$uG>t=@@g{UH#QBpfhBIw61teZ9f=Zqu$5Of+M`1Z0i@OAnTnbfq0$_O} zjh2T}sXUA(%Skjt9!|66WLhAnP$g9KrE)4>^O;T;Xe2B6I9bUj$ZB3K7xN}r!xzdWyhSeK9kPzE zkt?`OHt>tGkzbLk_*1!>_rhp31ypicRu7agMwI#`A?RbT5K|yG8t7UMk*~mx<5h<>D*3P3)Cdh<$RqOp`lgq1-74 z%WD;=AwsgJ0vZ?8KslfW$^kV{4yb{0wggZE0QER_0;NGsQ5w`tIS`;$3D6730gkC^ z$-a)Mnj(8STSB_bceaEuqO0!%za-2{Iux>I0AOEiiuZ#`!5o>+32zZLR(--dT72i6 z@RmXy)S*3-p)hLmbq3T)ZNAPHZ)o!sYUHche5Fcwr5^+52>kC)+NNL@qP6dF;u5bx z{JI@y%?VKSG_?u9uBp8)CF(uueV4M;z!Q|caxvbhaRaVlDX0T6+}i)C!}2`w0}YA% zNc}{TCUSp?z!rgzXzGnZtilEiV}M7(7)a-es4tx>qyECM59lBE1K-=YO7C@TG-8e% zrS=jVh4l*}Tw{>>M#v6)B1d7f?Jd67O@$ND7!|NHuvqbqgqz_OSE*%Qs$CqfwrnGW zbZ@htP3KzGq-9ZmI@d*m>0BShD=#gSQ<$i>DQK=8S{O=DnP__uIpIXBUGr53!DHF~ zhDTvyVxna!z9G}|w?W5Oi=dUHyb&UM6D7%;;eogXA_yx%-bRIT7tMi3WWKzUHp;u` zY;1;?$luUq@;T~c`2>9+pQcabGxUXg z7XFmy;7NI&6XlDXDqrG!`7&Nrc$J6C*J4%-k8~F#C}%-}a!-Fpx(gC%dO=Dajs+RS zf()>$Wh8NbXF>MoBrM1v7Gxm@odtP4K9jN@iy(-lb*{4@m1fqP681yF@FpGWSF|9w z%32nM!upAZ3X$6{7t)8%ylNRln3o^_h(3i3y29eTBcP5uhN&S>`!Map_LEtd_Mtly zF#&C*D-oE#(|yLCr&z9jq$8tNT8s#J=NU^?)J|wnJD%vksg*_`l71%*R&BHJP$!Rc ztVb8^C^-uOA|(F=$@w#-$v3dI`~}{cH))W3i=y&vnjqhysq$THC+|_2e4lFJlUpS} zq|@bJ>0J2{T?%jAPWcHW=WleE{FEMoAMa`TIlU^sptt1L(EROp6S0}uL+nZgtWQ_> z{M3~Sq`A81r><1c$BtB_!M~;>E7cqa$@mFTLtIoe6qATg{_3eTUI*-^V5-~n+1Mkz ze6(^fz$y(`(F9nfL0F}Uo_1s#Z?2~1oM^}Gu{b`w|D83x2OEMycMvie%QR5x^8z+@%Ap@?Tv!c?M5Ys zlCPws0=(Co5lU_vmF)E@lnis%z*{mBS>7{-t>f8suI#!$UUhcG@pUTQ?&s@--WOk| zr{mdmuIjpi<(EHle>FRiPovXX zc@#dsL=rEk$?qspeh+KzpIDtgP)P2DEskAR{sc@{Ut-!%hZ#gu3`sK$gXS21T51IF zzIFm_GJ3 z9z5LW$p;&~_zO}GE|BMsxCq+$9$INR`*Rt<7^?=BHtA|9kb&i=NR`-!bU zD4-8X@!>4{kQ9MeFpYr zbY=CxqRhrCyove*6Rf>>zGTJCEjV8nOmqu^w^uN&zha3{Wpyt@q;kXnk%&m;h)?lA zq_R!SuPDw%&{76seRJ_XL7F<4)IYP`mnjk=nJQp7lB_?gq<`k(rz#xtb1hNO^) z0_|W@Tko-hNkQp%?oDVwIub4iCpr4H%-+y|bR^tJyt=AC(KeOdgN&)S?-$_2O22*I z2>H7OX=(HVmBFk~fupZM!PkMKZ_x~x5Gru=BfQY214qAtr$+~lDoO22_y|K9#B)Es zOXv8x;QfbERi@u}N6de>Oh_g^H2dEpnaN#Arjk8Z*dUo5L{Z6YoS?>waYxDA1j#%L zl6f{H^E^oAW=Q7wkjx7pnHNGbFM?!V49UC%lDP$vc{wC=D$;t-y>( zGQJgSsKr9n(-|6G@j$3#`8Sh zc)=FlM{tZzT;joMi3h7C9;~YGYid|6f#INGwZwzfF&?Zcua0`#y*C1a9azO%{VuHj zj|Z#od$9U~1FOm$(XjfC2e2P|0Q1HH+d09w7Jg06E_SWXl8Oe|UiWfd|OH z>jaR?9ccc<1LVJZfV|fOWaHliWc>df{5J_Q?6QnsEyzkX+li{O$lBR!?Zn*GJ30um z*@H~8Cs}4MO2Y@`a?F0z+dK$@+#iBG0D@cqK^_P}hO^il3_%_OK^_i4E`lJBfFK_X zL5@O@iy_E|K#<2mkjFug$3u`yAjqW<Pz2139c0C zed;6aPvaXQV;jAg&Zp`B?%}nA5Xv(sF`d^Zw(*97!sO&+Hzo%;rE_$)70ZOucP8R( z;xg64-m^|LO?);S)DB}OQYMzEs*SOB;$ULgR$QhN<6>tjmwMWVXnZT34R7gAIta<} zy~yfeE>$J72Wyi*iG@4g*`ueiaxXTLT7 zkb0HFoJ_);LO$~d$oo|4W=^9#b2{}jkE8-~1|4i3MTeM2Q;B&D9c~^=GtHSa&zyxd zFq;;cbFdEP(i(Ffooddf_2zN-2;=c|sks0jT08+CQallB0p`D1PWPA#>0z@1Yod}~ zHmm5*<|2CEtfr65#q^a~L;KAoSQkq<*{tO>a~bEDbzET9^AK}6N6i&{h}po0nTayG%q;o}qFaH~Y0EuM>QK>c4cC>KLAnfvHX U+oLd`paB0T4SW_-1)u$Y00>pfqyPW_ literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/RenderCreeper.class b/bin/main/net/minecraft/src/RenderCreeper.class new file mode 100644 index 0000000000000000000000000000000000000000..b1e1a3709b9b79852db5ff026f8cc4ed08d2fa3a GIT binary patch literal 1743 zcma)6L2naB7=2^!dd+&1I0oa;hBzT{aGVy`NiYrxrX;Wg$%)h&p;YQ+Z5C&@8{1kt zDLs`t=k`#co_gfcOF^wv^;lK(+<(zuKnriYTZ^cs>S1QSS#1 z(GU^Hw(WlL&}rLE-+It5_WWk?W4nFd_P2f8?%KWvMPTM_hicBT({2gGHl4Q9uL?x- zOZNnn?aqB$!>N%sclnzaqU(qwVL(MpxlU3#q8OLk34ytM?cZ4kcekvbyp)@T1Z{aC$@>0eC{|hJdgHa-%ZeYWJP~7a?t#T}KAz zG)#@O@Wg2Y@8Dg5(>=Q%-Zwp~cW~D^Bw;0QE}6>KuTuOBW;J95rbh_3`Ug9<$ATD` zlW5VN(^fX;|In4{ixB%?+qJr34Ho~0spirh z<;EWY@RD3R<4mU_ya~wVa2+rFg!m`Vpr?#y82g@IB1m%9xq>Ih_?#vg8Nq3!aGEI{+oB$7njTVD79XH6rQns%S#e9lc>a2pjRm-zY#)P$KczWNrbVdiq~VDQ|$+sG(x zMP;}k!*(T>Q8OIRk&{fK112lX4J63iz*+K{#yH!05)0(ANEQWty~LNZjw#&4IqdRn zNX9z>tB^7IVHxiYRP5n>-iQ!!2Sr9vB2@4JBZVkwlo+YR(y_uQhE<})5%~)AlEWP53v^)~7wJQh^BTQar^+gI zZd0Rl;nRTM(1rb>3;Ur9WKZ?d1q~mCE@X*Q;!ruVbm1ypsM6OBMjElx?4PUjL^_i| z^d-(jULqw7nsbc@gBGh1QnsF6SpEeWHpg{Y)HmB}h2&NTG-rd8Lz+5i-WU{14{0jc tV&VX~&OC}t9U#;Do6@NOT6Q>49>5lYV?)@)5H>MXp9s|pm;;R4uK~E3SkeFh literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/RenderEngine.class b/bin/main/net/minecraft/src/RenderEngine.class new file mode 100644 index 0000000000000000000000000000000000000000..f3005880e1f1231f9611b20897dc688775772135 GIT binary patch literal 2858 zcmc(g&u<$=6vy9~kT_0)lQbc;(6Z@In;+e#gaS!P)g(=^e}4TP0M_B! z6jTVD5=^@h7tB+%r`<$(?$=ECOx+Lx?oPo3f%*IN0d+$v0{5%#edcKbHO(ICRIyt$ zCUC563{uTQ_Y0czadVTvVqvl)g=Ru0#p)hi$Hyp*BeSnRfQ9T zJpM)~mdNk{^Bqq{F%M}Lof9kB4Ox_IIJN0cpE(iJeTgQDQO$O_!m^B#)8Ilk9iBKT zma>O+^qrnmjz&K{h?#S`^~gp-EtM>}?6G(7gBA zb>XA3(~+82$3@V>0gyc5a(awQD=Yq-Uv4`b0S(-)!Ww}`W8*E0J@|k67ykuD&9o=g zt~?N-q<+?yCiMg^SlZgs=$N0n>}tw|@yo~ecQ)Ur2d(iaW_!~zNIQKTb^c*&Lq1Aj zUSWD^lE<2#xu95pvkS$RPwKsIak|^a^YC}0(&aSvv*|YwG~(Xjm>}?4!)REs9?s_e zXn&^5giJhsO(c`uapdNG^yunI`R|K2K8;B}b9w+c)ZYZa!=cMWFDItz1V zeFN%doreXpF2XTf=a94n%lLc~zt)jj!L{}qtlV8Z{tLYQhp|0{&q=faw0swzv*x`9 z4n_j_ej3hL31=;Y^AJP0)@rKxBvhE literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/RenderEntity.class b/bin/main/net/minecraft/src/RenderEntity.class new file mode 100644 index 0000000000000000000000000000000000000000..f78635aff3e33ed99130436d9c6769eb3433c30f GIT binary patch literal 906 zcmZ`%Yj4tE6n+k46iRg)I>o6t>SeI$DiasYj0uS72h>FuqJAsz(!H~5m$pp&AN~;& z6Nw-E0sbiCd0XOTVPDSuJm>oJ*Y_U)>e$whB9uH4S%=aS{lFeZRv7fH*TNf!;HekM z=#z#tp?F#hA@fLjGI~syt5my$^b>y|bj%@VU>+I5LWiMWjt+Yw*t2`CAQU=&-*&rp zAeBBfrlWls5>`8>RZ6!uA;;xT|12SWdFmiAHF3}OF35!lutU}DaUmKH%>a<>mb}Ru!ag@ zF^G@$YB&r<)MzxDgtb}g`M)9FQnI6U0~=})d0vEnlwY$c)f zgl#A60T0zq#D@g^jXw(dqAk@6EdBdon+Nu>&13Tm@mm5ZmiTp;YOGnziTV8cH)OxW zZk?%evk`fw##A}%rG;Z32shM{fk^c znlm(RCW{j1ml;7-c^)I0TuoJBOx(tuxUz{&j!eZiizStB;x0>>SgK)*v6Sr|OF7P| IvzEgB-?);;sQ>@~ literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/RenderFallingSand.class b/bin/main/net/minecraft/src/RenderFallingSand.class new file mode 100644 index 0000000000000000000000000000000000000000..18bb5ccb62cc6b664558d64287254162c9556e82 GIT binary patch literal 1819 zcmaJ>?Q+vb6g`_5f5;0aqDkz8rhJ4}R!T(Nl!lm=HaI4xhNjpx1Zb&ZDYAl)JhBY5 z(}&2bv;)D@&UE^_kJAU}^sZz~W~_8Hqq}?e?!D)ny}N(^`}>~&R`E2235JWV8EDUJ z*KGUxUZC~-wsy~S4b!jcj$^x4LwAi75)Ap{0vS&CC@9*s;dt$*J%)4j@wF!v~idl+5L zpoG;FK8fwKF?l#X#Z`t>n7mdYWor^8SmU^cb%wNM2KPPRF&O5RVoc3&u`GnT&ha^@ zwKA4dv3t=`CzP6CSi+YaUtxnfuIu$4P?3s+3aTk=GMpW!P3m{HOs8x59JjDV3hz0d z=RYyLe%L_?rBbYkw6{6Few%hjIPP%Ved~BAdUc!QTij!q@xvPyN_3<<7}nytC{prR zy0se75}cbH-wDoX%h_}VW#PQf@j$dvmRiZ{Mx8{=pX>fge1nf23N^S0FGXfGGIUD9 zxfYpg3@1cJYK%e*&WOM;hRVjpL`O&94KI2~7%s$#5y2~u?h%89$PL6T&bdo)a2P(wN>N`e$fX59h#)`UaBv2l&n#oO+F% zDo?$J{3}IFV21uO67)~gKZzXeoQ8y1@^H#SyOBqMEFs4HF!MiDg_Ey2z**%WpE$@T z4+c1|%9jrD(QjBMP_5QXxxAHwL&#rWTnxnL~UNMl}X# zy~Cvv4&WrQI7MHM-pJEfz!Vk zayC7iImF&O^io)_KzQdubX%mE&^l66jCRlo(a9rp@(7(gLMM;V$%xP~*pz7k`~Lwj CexEG> literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/RenderGiantZombie.class b/bin/main/net/minecraft/src/RenderGiantZombie.class new file mode 100644 index 0000000000000000000000000000000000000000..816afe8e95143a6761fe57e0374231b1aba26528 GIT binary patch literal 981 zcmah{O>fgc5Pg%Rb+b*HG^ORU-w7nHgcaZx#DR+RVmP!_4jhm+?lx?2?8bkHL#3_a;90<{T?Pj#TtWP${P+Ey z?}QgB;N!?`HVfFq7GbI9pO~ed^G56KWLeuY3{A2VRxcuzOmrxHzbn0Wgz9`#$^98u z7WR4I>HC_X7rggc0XK1rurt?5N=XnW;br8hwl=r2F}3E0eL0fYWzH=Bl7x)8P>!-3 zTUg?6p0hW|@dK>b2i02tD}-J9jN(VGWKc5oad)2a0!1vN%r!gdz$z-78O$1PFrSIm zStB!!HaN;MlE+E4jyX48%JwG||GwXF`&vz;y(QK*N;?VuN~z3B+he72s+41lnbFMR mru@P__=&yh7gYact}t$Gf>~TK3$EWEGmDg&@PIipsQ&?wsMnAH literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/RenderGlobal.class b/bin/main/net/minecraft/src/RenderGlobal.class new file mode 100644 index 0000000000000000000000000000000000000000..4a2e21e4a81b3bdc9758ca953c6322ceeb15b49b GIT binary patch literal 28052 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 literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/RenderHelper.class b/bin/main/net/minecraft/src/RenderHelper.class new file mode 100644 index 0000000000000000000000000000000000000000..7fc295fd08d18888d738e1cba221a2060f60231e GIT binary patch literal 2090 zcmaJ>&r@4f6#i}q2_&yTQlNxiEg?X{v_x8LRVuV4K%=3pr3STCc_c64;p08#@u@IyUr&dfL+Ma{Bh#hEebY!Ue~2 z+#5TklHm$;=ahzRI_U+=(Y>mCTA<}>!7^>rn-OSArt$**Ij3lZ5XPw>w1(anbJs1) zDd?W**c#f zl>3@6a8(5vLKC_*bfSfUdh6!4z`5Lu`C*QIMRQwXEql6M)ZJp%Gd6Q(dEGPZatM7G z2%=x0%W=zT>*I~Gm3Foao6}-$a#F(}&I+`atxOe!j+q#V>NV^afyOlqOUstBHLnz< zrx6XK7-QCDYfhGDiKH=4OQ1QKC8~es*|XpLv$6dz1G9gYN~>&xz|&v$_aAW)LK>4n zyd-eu{~70v!ljIci?}49Rf|E9=dkpH$xJ4bYQU1RnU=6GYq*Rn%+hw;P2DngS%$vk z$u_ODc~!$}Ai050<{ZZ@3W$spzpi0Mi9c0hDY~ZNx)SXwQHa%_(~!ZuK-;$ADIyO0 zv|k3xXd8B`WN=Z#O=JavWlNP%2Aa(_)=%Z7uQ#QyoIrnafxi==15Xd>o;{+w4|g>z z%NlBBYk6HS8cVzymW<+U4SB4n0~LijU`r%VjD&6TPAiDiqOSfZ-R zRCT%>f{sEEYXY5(Skh1g%hz1644u{QVHq2#vFK~*D=?+6=zKLB+O?lB}BclaDerz-DQk>W1W!5DWb*5C?yafdf&75&)406ycp`UTG7D-!vH+CL+X-}z$xL94$o zqKF zVSWjIBmAW702^{T_8nDL=Xnz@kc|muovw>xw3aJzYq`o*HCMTMz^t1X!6rTXVE+q` Cbhe=Y literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/RenderItem.class b/bin/main/net/minecraft/src/RenderItem.class new file mode 100644 index 0000000000000000000000000000000000000000..5fdd3452a4a382b1a51486ba0380682982d4dd5e GIT binary patch literal 6327 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 B)`9>4 literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/RenderList.class b/bin/main/net/minecraft/src/RenderList.class new file mode 100644 index 0000000000000000000000000000000000000000..4fa78f6ae9cb936138bdfcb3da66240504dc76ea GIT binary patch literal 1841 zcmZ`(O;;Ob6n-WN1j0}-6cQUipo+<~HY6Y*&<_fRMnge}(ALi(Ov2!h?x$nol_qq4E@BH)cUw;FbLph9qhS93!rBCdt zRdUU;mu|SF^o~_MwA_N-@WKdb7(6zgn`y_aR?=Gs$5zSH5UST2Pc&$G-+b!BGYyft zWBzEl+x~Ix%?)0+YP@g>u{CR(=BzRsA~VNXO_O(H0!V1!mg{@9_h%7Fv0q%C$)a6qkv6z zz_m_H%3rN0`STHy+Y%9mN~Q^$cMqsMlw?&qRFu0?tIDt2q9Zpq5oGA;ub`ri?0G075xe6PI-h*-1& zB9%f4rI0cyq(}-WkwT8CLJp}yjwrF45&2U1z0TDR-8_h?C1v$&53tVpa?TGG!f9@6R||23?)tN4k2ax29GCSD*M ze2Iw!?U^&gMv2)o42%)y&JYg0L@4-*mxGYDNxOkDMb7YpbjYPTp!5ofyb#5p$h#W=?&q-C7rv9!(4997vS*}N$>?k1Zxtyqls{v8(a zHVetf|7T34dp#eo7(@yvGRwrT*dk25z@VRVdtX$YY7_VknHF}rnE9EX`7%FQu@=Re z6Kkp5!V}_n3tzVI?FCgs%}9#c8Jw(J)b=(KNR#diXDP$KK^EJX#V!_93I4nl+a(C` q5CVw>GA(r``!35A=6zQU^ED;^5=Uy8saM_z+Sd-M;gHS&SpNYGXFN{; literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/RenderLiving.class b/bin/main/net/minecraft/src/RenderLiving.class new file mode 100644 index 0000000000000000000000000000000000000000..5e946da70af1b5f2ea6c16c8e120c68c19a2e5de GIT binary patch literal 4307 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 F`c=;QGI0O^ literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/RenderMinecart.class b/bin/main/net/minecraft/src/RenderMinecart.class new file mode 100644 index 0000000000000000000000000000000000000000..de3b3e4667f623173634b3f20301a89c8bd8a074 GIT binary patch literal 3177 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

    Yn#g-{_zeGA!Y?DYJH#o>p?UPuSitZWM ze(8)IDt2NQZIJP#O6E}Wr$~)Xe%$!cy7dvH&f-P zVXc}wNoV_#Nh*0`JRi>>NybYKt?m%#LWfJY98jj0e-i`cU%x>P8Fy|eIG6>GdRcB-*oRMtK$dEW=fuFH)=3Zc8USMJjyu@RkzL=*k=IM)h`eL5G zn5Qr1>5F;#R(twZd-_&WUumyx4BXdkj5x(m-r46>d>8ldAS1c_z7Sr(_XBuQpzg+S zF*k>{nwb%k(fR>iVksKTGw)a{ex%||LFIn`U5tc8f2`ss1@wRf z&Z+pRykx;-+A;_1bS^8a`Oj3G$7{6Ia=J^mku_4LC9r6Yd~h3($I>3eI3@ykgSm5~ z@v~S}T)-q_eJp2Xk~B7LQSl4BMT2>7Hd^V_key{- z%gQWoeuuo{S5*AcNy1cSQ!bOURF!WyQ!8Z)WqV;J^L`2_vTu?qBF#3-XOOdvTooKES}q{eauMqO z3n+U7<>!ehn8#Nn*^#{eImp?RAT)t<0zjGeF8O;sBbz| z?LSprd}OXWG72lybi?@4rf_6xFo2k(Mq)1y=9`t7!2WTDp$5?xm#%Y3m{A&N&V` zKIr$(L94M3`<=7(;{fiV2PAfol;5H5B_(~>kIzs?i9_|13UZey47AaTHQeqlGo51m!MqM4#%g6MRF@4^cu8mFLv&2dZSj8-?%;6(e>G4t4#VG4x;jlWTmutZ> zeg2qUHLcghBC{~=Pd;M$v|bmZtcTIw@Jz)txOz-qFiSD9nvY{tOssZVv1xS8GI z7EEF#E>Y?VZpBqz(RUETyL`!gkN{YgE#jZpsszxf)MA?w#ofv#bSYiv zR{F7Bv9UvW0y~xGuuFLfJ<23{m3OgQ`7`z?|3aVgAsT(fXz*z)I4rHA%PkXylH{u_ zlq6CIkdP&b)E7yytdlxOip7c4qoj%u@Ts_$<);{Bz9KwEiY418ynPMVoSkUOmKex%Pmn63?Jwg?q{=a>Jccims=(t) z9$z6f4^Jxt_$nz4XO&$TBUOoWN;jS)H6Q1dPJE421mj8vPLZm@q_PoTC#B<(vJOv? zs>T(i4c{PDgR4p_zDa5U-ce%s7O7gitE|MgN!8&!rG*hc#Qb<)S&q}B7UG(+1m7Xm zfDe>~cm{c9&9ls>#qj@+BH;i;0Ih-_g&zU@7e(Sf${#;;N;Thxy%yH(v^wB4`_glh z_+G1@#1EHgFK5RFvyvz#@yavMB;V4hWy$@D{{;s=>%gfg<{}q%xgFTyE}qHl z>`~k@j#tO=dc+?oiWE=a=kb8Ki5{H5)#-j7 ya<(01N*#5K+{y%|#FUX5jrSyU{T#6xOu?8X^*=bm%Vz5e~@$4>x{abH7X9?#i4@7(EWvAX}$UGykjx<&c zWT7)umork54hF-(8VU@>K!o$!c@QXJhRSjZDZAb!`!6Tsf$)#{z!AjM^@iN(bKjQn z{4f)q+5y9Mf{(akZ899ML*+N3sjs26k|hA@6wHIu;+piBC>SweEX9<)*{kk=YA5ic?spwV-k&I)^;rH|VSp;c*E?iYODCxJ+zvSE5}??XKXeVy5EfN^j{#R#0jb zZ_H3Ge}U2bhRSDTGw11Zx=1TYT@mO?P|8)Jq*$&*a(9$miRA7Qx~6j3Ce>A^>LOn+ nC{3#Ajpi>@%QG~kMC3|(2Z=4{^_X5K`g`hLpVKq6RHpeCnJM+K literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/RenderPlayer.class b/bin/main/net/minecraft/src/RenderPlayer.class new file mode 100644 index 0000000000000000000000000000000000000000..60eb95cca8612b6696c2369b01df3fba6c11c653 GIT binary patch literal 3812 zcmb_eS#ujz7XGf)R?Bi{>qPN_62~DhvO{8$Kr%!DCQdMRP!bb`fZ01%TW)BzJgv4J zv%|2jnPG;Vfnk8Kgxyi9m>Md)@W3zNg%@6Ur3#9orlu0U+ue~JNp^}Vtg`y{x#xW6 z+;h%%uD(9``4<2#!pABa1Xenx*Hf?@bJ#UTyq=Of+_TSga;7_I8&jsMLYYS=V@+62 zUSMINm^1BOYs}2;HY|r0nOfN06`i!eGT&mmTPV6aM$M8pW*eR<5T6kXEH&hIpJkhl zQ7{KxbHqAC=?$6Nj0vO1Hk^D<)^iyE@nYMCZOgH|%LF2+t^)$f4!TpZNMLcbdJIbh z8i(zoHyXoIxg2HCF(hbZxkav81k{{m6pBtRhBk`xMLX97fpau8Aug~e!;I}2FB~-8 z{l-C?k?Wb_uwfrCTuZ)(!ss?XCKam$lJjLGjt;EWuoCCeS*ow=fO0u&6h{Q-OX(j3 zI#Y9|)F_#0n#lONG<0LFKvRJy@)ItwVqQaOwN67LqH@)vK@C?{!KPIV%n9Z*Ma5MDE!FMZJ8s$JYYe;Tr^i1?PaM0j zS9Z>zKq6I37}+iT*ry?j{Q}Ld&-ek-o&*yE()xggYjK@G)EFD%E}NttObv1vOge_^ ziFAuZx=|wCL;}c+&JjHIZ(*;kA9M23#L#dM!(_Er3>eOV!Ms%)vjzgDh7ozpX1i$Q z_M3;iao21joklfSxQ*R&P>!X3)8H98>r~WdNzlrsn{I*)M+FPjQCrnBR5cVaM)=Zb zaWZ6@U~6~4)lia-7gQWinuaTP#x+dLgw$KiO-bn?4O27v`>gz^$7;)+J2l)TcQhX< zV~(8OxJSdiRVEoTFHP>(@W7cS+>mK{P{Tubm~*ORdLeO*QYj34RXy7Jd%beF`15qa za5vPS1G6bhx+>J%7(6!BpFWZa0f_>&iv(KhR7R?Wco)wNK*%x)9l>2v(F!`TkxEQ=kWq5Hnn$Tgh^z3_sIeMlE%CAWr2CXf@?Az zg3*veLuQE+P(CiIJCl7PQz?s16xpOvi!1g-T48U2ac(yq1 z4x92`7g!P=!vC?cUJ@LgbR6OBr=USzOI$U`OUZxoO5(F!Uc!9F_-Tel{RMp6P7C?h z8T&654n_3E*&#*OvqO#gvg}Y)U!EOO_15fXX#a#t4M_4kN>dPgg)af$R#xB&gp<3Q zy8nZYq2}Z0)YlxxdEMR9NS#2(F%=$DU8o-qtvct2dT$jXuP$WaH~l8;?Ly%D6$lnUXSYEh8u8ah~JCBT)HR zzctzxokl+S5>$oSkz=@B3jSOz@RG`F(2|X>L5)b%P;WA+(9dkkJ8C3%ODioItuno@ zR@~hdE#oiB(a2F|AmW#)4@+w@|JheE>-|Ay!>lvMcm$97l{ksVu%C_5j34nhu_8qM9#7&aR$~pm z!P9t#6}0dy4zr3;{FVKZ!O~NNjH(bSw(x(4iodCpH29KTr|7YEGZJiyHfndA;=$Bv zd&(uEE$!=W65kek&#H0FSv3ZK2aU6PIlIO$WQmZ|Cg1??x46&oMEBZMt3o3DAufwWqN^JkSeQ7LbtQr-m1`--ofU{POTQNaQq=1Pu~1YX4p94B)1 zPp;&TVK!_SOqzC*tP9AN3#Kutzh1__s)OjFdbb}$!0ZJTX1|HILZE(jm7Hzy?zJbd zC0WMXvdd==qjf&Qsz9r9j5v?+jvqoi>{6MlmqXOM!d&S-D$^Ats*HE5W86UIY@C%S wz2ZTyc+e|}(kqG5D~Zx8iP9^HdLKuBb0iltlFf5Q@_~QW-yX?_el|b)6~Gcw4gdfE literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/RenderSheep.class b/bin/main/net/minecraft/src/RenderSheep.class new file mode 100644 index 0000000000000000000000000000000000000000..414893e9c9875236aaaa063266ecc6377f3cc67f GIT binary patch literal 1097 zcmaJ5iaFh2XEjNi_4)chZN?DmBHg8QPr^srHGGbCOTSVtVI z29nSjipv?PNC$&qU=8aGSziQU_iwrHD`AGhatbNC(WC(0jE5cJo$!t=h^gszx!vZT zCHJ$BiC|#)3_B4%7BZ`ojS2T2Q??Pnc^VZ`erNeXmIs% zdlg0OYPc794;C~H>|vilBQfrY9yNLzox?&6<-m>@)>;AYem>@-S%?{b;EwIyd`t{` zS33@`n6xad9T>QU+ceUMU_<2@o)-ZS2YryLYnXy`c?_?xP~n4s1lpFPHb|Oqg70;Zs4Y3 zruJt_AL&GPkgH_xOp(u@!>E2o;T*}tMf`#e;!09i1iBKGa)q$yQZ7ew_my0ZZ yq-xnF^;M?sLSL_`OseUX>TeYDQ&goy=t_DAiOuQtOM0E?AF6YGM$b@FmF7Q|*Zds- literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/RenderSorter.class b/bin/main/net/minecraft/src/RenderSorter.class new file mode 100644 index 0000000000000000000000000000000000000000..570c2a35c9b562dbc0d511ae0f5aaf9a2326adab GIT binary patch literal 1093 zcmah|T~8B16g{(DSljMW`39v>M5WtS8ny93444p_5b8%P!Nj*=JL=+g7pJo%{1Fq3 z?RMwq0L1lD}5f zj&!Oogx?af8Av6h0iEIMK0oADkNa<`&-V6(qYMl)OvJaLa=q$C&_3Xjt3Wag3tzeF zh@sHvr{0Wx&pm!5&Z-1@_iX0`)^K?=mpXusKNL%RqXqB!&ta zP{T!ly_Lo+t{b?EyES0|@_mwOSqx2miEGR}Nd=xQ8)>MMVI3~!VI7||Px*e(Pa(1UeYhQ>W)g#0r(h(A!i-pvZ z6z4+LNyrTnKxwf=Cyo3MaT9ss$kH!-i%vRjlRpdn4`vuMryobUmr?BM-X>^Nu~jPn n!fb`s8SF?!(vIPneLT)yNPy?rEy`Yw{T5{}Qv^dLj=b{^bj0#I literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/RenderSpider.class b/bin/main/net/minecraft/src/RenderSpider.class new file mode 100644 index 0000000000000000000000000000000000000000..b208d0517bc16f44a061efbb1604db3c0cf78467 GIT binary patch literal 1544 zcmah|>rN9v6#k}NC~XI!MexE!6wtOPD~i_wDwow_F$N5Y{xL%tmc?b4>~2vX#dk0! z{;(2F48MI0AH;ZOcg3n$cayoDIp6ut`ObX({^<*VDLhOe!7${=K;N+(S@XnZp!;4; zUy;s+^j3E*8dK0(+^Jf7mSZxsPg{-^%rYbk#We~6MoGn!U;Wa0GSvHDm88CEn4s+9Ai`p&xa zo``i@5>nNz342X=mfFXMTCipL1b76c<}#HTm|z$=D(<2aSi$Qk<8sl^=BGgXwLRfY z9u54P1Hj@>NjxDB<2h zbzAHS-4>3iuLd4TSysgz#rYJ*j+DKb8pj0`7K4!Jt&{P@`oq zj!P+Aqh{ZR)7ITx>Ckk)IyuQP0iB`4v=^O72(3_2G{!-;E6SEO?FGwMMs+&H zaShig8PlG#sa1`-Q)6f=RAR529Jg>g^qO~V*PGg8NEHnF!rr91Um>+Bkpx$1X)tuI z2BP+2S?tELtE862s|6{7tra&Af#o_a<&9nf$*ame&v61LTZtQAr#AMt+`7H-tAktW z9lMdejuQG%VG{x#qT868hQ zBEvs||6DiF^`2}A^w4-L^iP4)gFS&Xj?)>Be9?1$~ zlXC5g%&{w7#A)=CU4ab5ARlO_(cSXE8?+_gMq?>I*uWV+&Knrn%on$fT=v^OO1bR8 zJ}&2yiCi+dkE@*Xv3=ao-jaJV@N7?78CwquWFRl78NI^%4dl9Fo+fGyO z^oJx%QTRiW<(MQ?0=#HvGx-@=((FW%Jtj2It zHPVNH(iCVRti~dY80rB9Q4(fCsDTFVtK^z1I~rmQN4E~KGBK8Vh7oCoO6a-t1L-_R AlmGw# literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/RenderTNTPrimed.class b/bin/main/net/minecraft/src/RenderTNTPrimed.class new file mode 100644 index 0000000000000000000000000000000000000000..c25de4eaee7d6c7dea39c202fb8241e7bb97b816 GIT binary patch literal 1900 zcmaJ>TW=dh6#mBE_&Q1IZ4P8%o1EeRhG0SQQUW7UP2>8*-aQy!_34tRV1j7N24)~-g zx{{b4$T;1#kRD&B4>c(Bu+UC1xqn%x?-ypLNT5Zy9RLvaX-$s<#JCY9D_&@ z;FWq!;F6WD^a0Z3{reBZIl~-DaZaGB=Ls6MB2E89%Tu{0zXb3+ou9N-%ThFBc+IGW z2toh3iJvSXT|(wC*t+Ye$Ql@A5Fik;W`Tu&SrE znyUyYo^=YXY5X9Iqfpm#ym4Ivty-8zqL0c($3ez;PXm&W9RFl|qq&d>& zoq1a+-I-U`nj#OBO}AYc2HN4|9z4-fEklvx2#zuwX~Rl0ntCp8)~%A7(L{G0+VhGG z3rV1#MB}AaW$=i$CCf`T^*sH9G|M@2pf~Xtp~Sb~w;rQw3*8AhvIY4oitwP9{xT%` z2k7rZH)Zx9geZA9?L*m!;V_LS- z(5Ihcjz8-#Dr2E&C`^7|SXlg%hwyP>MMEpCfk#8~xs~ErIO=>2oPTzc5u+lHQgA}P zu#HsW5xT#|*fu7`IRU+6?E$ip&OaNNj)WJT|6dJcB3@6#D>abioOW+uem9RioE(ub z#kn~dCqL7`4S|o>!N|hD65qrY-I$46h9o!;Is9=XG=pjCZ^#)l%sy2l;9bPw}Hm%#_e~Wx! zyiJi^ke*`P6Z{(|p2GIfDevH2mu9N4Q&i`#ZBLA_>ACzIM4BG#p#n!vfJCqr;mSSj!D&=geKkr{Oou zg)3)hhO1}r-M!DKeRM?l70osGZ4!vbCkUANMTTFWE`Ejw_A;>}M7~A-X+f~SbDir1 zKer&8MH3#j(84Z!>?6Q6-i9SL7O}*PB5<7&MS*S*RoJ_OWg-VRSqCFLI%3r4SOm@*2iUODVv9$vn3c&(sV{{zbCgUkQ` literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/Session.class b/bin/main/net/minecraft/src/Session.class new file mode 100644 index 0000000000000000000000000000000000000000..1f407328b4b99e4886b544457a06da47ff327d71 GIT binary patch literal 2009 zcmaJ?>sDJu6#gaza$yP-N-5G(TH6AF5?gE4g4Kdj(Uf9Sso?b_IV1;8&crzS8wUhM}i|1mXfc>&~W=^_`%cy;xXxi;=({?UubTaXay*{xK`z#?4KS zuW}fNCGKZWokdkB_^$EC{85QxCW3ukEAz`=WEk~0F+tn`q?Y2!Omx>#Z65s62c=?o*s(|LL?-(`MU zV#Y|8eR?fs&PqJaOple%1r>(de0WY`mJbu5Q=`W$Gxwy#Q9beO2N`rrL|Xip(XwEb$6638mdRq)FLoicPw*q5j_Sfw_?itDd&j7p-$Y+DqV^3W0? z?~|$!dL_>x-*s#yuz6P-=eMbMs}gTun^aYuTDQMZtDed(QD;WfpRQ9ih5n|*TX>tV z%DYNkL4CN8#yfZ~fp=S7c(<0s`}lxvq{fE)fHcPzxOcmAG-4L()q<-pJ5=^O5meFf zmmTf#zDbVSZPT0+RwFf;@#Qqyu$$ZaGl>L}jJ}XaAxRFSibrKX^dDv49Beds;+u{> z(O6E>8{}187u|V}Ec}Fp=PZ2Q z!p~Uvf`ykXoVW0@g;y;6l7(NjaKXZ^g)0``uyA1E*IPKEYrKW40>9wePjuTcd`SP- zXbyuODNWykz39VX?7L`VSnzpE!!Ya7=VyRPOW;X>)f$BlBp z3dP1{)SbDBPcjoX@M&i920q^jx|b>pR6TL3o)mq_y3lP5jWpEoCBC9_GC-jw$ta_5 N2*n70OS>4p`v=k%zJ>q* literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/SignModel.class b/bin/main/net/minecraft/src/SignModel.class new file mode 100644 index 0000000000000000000000000000000000000000..b64a05c56d25a4d1c21c4d1872259c57e3f5f556 GIT binary patch literal 702 zcmah{-)qxQ7(I7MSDR*OcB^%+&N;Vf+6M#Tn>xna0)eVvN5MC5le;amOW-yW9|!x3 z1l_>Fe!TiejeWT-ouD9ro80d^-#OVE@O(JnabQhNKzRov6K5l75Uv{ zH+`4Ia!`iJ;O>jB!XJoq*Z4884_Y66Dnp{>ikWhhd;_RmP)EuV|+JHqAv{7 zuah*%*BA`1)nhQCsuY4d6wFt0w- zad89`&^a3qFi*-NjyJMz43-xJK^TU?Xz-zpG7Vk=#8T@}6z>lY`ciF+{y;MDP8Nwl zPpG80kBer$mkb#e{;~WdJzCsSI)tKRz8TwDweb|s$j+!o5qM;Tu-)uXMKVYVQD?&P zyoeu5WX&LhQ}m`SwN)}bu267Px9E0EsW5tPwNFuPpJC>cVVt7&6TJNcoZsd5c*C7@ z?Napw_eXu#(SRlan!Ldmc%$Sxy8m6%KcaJ9OVRH@&n!u-kl+gv+(Z?N)VD{XcuYo% o6rW5CZE4FuUF$EOU`6W`AGh?5-p!$*8aUiPDC-kSPn&7o0H}I~pa1{> literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/Slot.class b/bin/main/net/minecraft/src/Slot.class new file mode 100644 index 0000000000000000000000000000000000000000..d393524fd8f54a08d7089d894b5efcd5dd4ca79a GIT binary patch literal 1966 zcmah}T~i}P6g@qeAtVghKsG@nEU+t@1SHGCA_|MTAnPb!ip9e|SPaPsvm0ip$ppdQ z;UCcFebA~!3m^OezW9r@Jl!*d2o(D;eQ)2sefr$fx96{a|M(NYEVh%-1PY!LRu5gz zsRj0TVYM05s@n}eOhOmPzOaw&YQy&StDAc-oLVT5YI4!?>duLPu$XeP;x>;O_UV@2 zbVJwo7&^TcO1a*#(JlYC4<8P9Qf57$sKpJcTkQlBiJp>)Ll}X<|~+HokZ3;ep&W zWumGgC)@51j*Lv3cqAiT2adac5X#W3iN`AGR3-`ZZija5<+^vy!H>h@*A<#`- zRJOoKseEg44?e|m5>Ew+*LAvV6B8@=OdxXsY^e$)S?hLuk~wN!ka<&SJCcoM;tPDq z)@br_FW!jKi|x-B#jY7ES+^D?8@fQMPkAT%f#34#R?YX~C(OpSazJF=CDGvq3hXUJEE&oEHQ>t`6O%dZk$@wT};5f!ip}hOtt10gRvn2OXyhBe{-Z(vjneXB~j*{Wu%rR(pE3c7z zjZ$RZuN#e}$bA@@8Aj&xq2c;sF|XI33^6*W*MCA;dD-l)zWXzZMTUoDxLp6xFGbc1C=vAnsxeFh?uZ)O5)|x}k{Ah}v0* zR@;0v@_nKXUBbsP#yoQ*i43*L^BXwFCmMdag7=_VX;;gf?4YH!Y4Nuf@0^c!rX{U&YzSPH S`61hQx&tNMM)^uf@b!NyX@8Lb literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/SlotArmor.class b/bin/main/net/minecraft/src/SlotArmor.class new file mode 100644 index 0000000000000000000000000000000000000000..46502d16a8f9f1bc585eb4b76a5b0e5bef26c494 GIT binary patch literal 1213 zcmb7E%Wl(95Ir|`;ym2M2_%F*!y{lPZ9}1jMGyjtK$ZdvQf0vk*D-_xn^&5a~Y)MEkEIF3n8rhCzdd4fi zHTKL_cj)>Lypiik5E&}*0EUdgF?&ac76a26-=5#RfGT8}~8b^BHp0v2RskY{)_r}2LfYrPB@6d4lI z+$+gQBE?YXkg#Wy(Z1#F8T&&TQmNyb#;|92Hh-Q4MgPDaGpxkCK(q%Ml{huLtl@~qw)P^6E2vAj z8hfcCpp0v{&L9mepT`&$RV_{=<=PUoxn#i&%|JydetJ056Z1XZJ(ob9?3&$J%fd~5k=4V$lxseu~pSfCFm0fjG`JcX~GERSZ8 zrF@ROca-DNYGZw)ES8hy)ECH&<|zt|vUG~#C(0#oj?NN9I@92HvPkt8sQx@fo`>}) zqe4%_M42?PbFYevRL#9bECrpbSf-Agsfrcyl7Y8M9@kjK8d-^|Yq&I1Xb}VFs5d|3 z@(-x*vCO^iP*2ckoS^stl6Z`?a12rSNI)Twn+hc41BsQ8Ad*-oiA~C{6FLQ9O}J10 p4cNdYoqQ-e#KB)6rxbVtMLBrMiNiUB#HD~(4q-E5hE{;O@f+dW8jt`0 literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/SlotCrafting.class b/bin/main/net/minecraft/src/SlotCrafting.class new file mode 100644 index 0000000000000000000000000000000000000000..20a05f432c880da080137715e6184528a15e305a GIT binary patch literal 1222 zcmbtTO-~b16g_Wd+6uH#imfOh#m}~UR211j+|;0xfHA45iMyeU_@td7(`lowH1UtP za^uECV{qZpg+IaHV$}2AG*IKDF5J9#@4NS&bHCoVpP#<~Si@=xhQN8x4XbVGxy`_N z99BC)vs!QYVNGe$+fTs~D8%~+jOm~qCk*5>LT&%;XWL%S^+G>*z9Ep@l%5Q43G9|) zT<>&c&G$lwxda@42HeF_uOOX@T4S$*OTjATXXr0!e|1ZRUEf z+un792hMKG707M-O{djx0;%-=qZK}p9f4v@)`P8PgRGtttj2r((VfWidUV~0t~CK+ zN8-)sTIYad#}3_g!)eJq;>I;V+3TUxJlH5d5}1og^29?R>wEWQ^PqdU75HtHy?|LN zH^#7liz!?Xm>sqQXp{s46 zWKvGy6weWAFZq_@ovSP^=dFAqpZtW;%F;(<-t*PK1kZ7ez~yArB%`u?yBkGO&rxGM zrf`~=O3D+{&{BbtV$b0WreSI6ETx2&&QVG-W(KqUY}R?JNW*-mPR*`7KyJlah^)t~ z23hB5=dZ>*PgT(?GAfL!x%n3Jl@G|w9HD67D<-sJ9pQ?Jhp&a0QTh=o0&jkOSLK?T ru%Oe+@>Ip;2%W_WsZSE9_7gBTtSJ^DXa}2P{y;)Z8`P`R4P5&T&CDFh literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/SoundManager.class b/bin/main/net/minecraft/src/SoundManager.class new file mode 100644 index 0000000000000000000000000000000000000000..6f616fd41f54c25669f60d66efc18213d9524c79 GIT binary patch literal 3463 zcmeH}ZEsUI6vzJ#p?PSbrHt{gvEB06?tyHhjE$m6Ro5cmcAeBx=-xT^n%32g9ocTA zyx?;oZPNCh4}~~((vmSJYZ1~ksd-_?&N;vM93TJfSFeBn6TmzcDkw30ri5#>q!O9o z&t1cstg){5RKCg;-xj8VGQ-p^@9;*!)pld8xhpcqP_rsu?^-8X45!lI(Hkx>Oj-~4 zRqGPkHC?uw%== zRrioBJkHXvEY)!q7bY-;iwx&x)3@TY?hNVHf)}UBl(hJly;f704NiK)FrDg*7n|Hj zKkiSK-HsfhgyE3(<(ri7j90?m!R^ZPMEyQ2v~O^;>e-HYSBjusV_Rw0*by_<4rhpudqS8r-(=?hV3iGpn;Oy4)xtBQqSFpWA?O6Dwj8EwM zM9&JJ;xdisQH;;2-6xc2u182Bgy{&OgeybVa5X}hi4YjB4sHG~AV zJC>g;+K!d=%qc%v_Oi)Qx8mf^x^6*3M4)-bylf^5rjt(&PtI6bUm)U{PEMdDqdrx9 zyO12A#Vw`;b~so;fTPNl|CAvhne*)&%jYoAI&bGu=BQx8HinIz?-C(l()TQ;BE8^ z=$=(7m|3g8P!Krs94@QDJ_mmz25?ft34x6(&A>)5a0>4VG-h4LH*KeU#+rLZv7qx) zu?rg5k^vRfZ~dNU&SmVfuj4eDg|(KY4(n3h)g}#R1-jPgE7b}* zMlhyfRKQS-YE5Kd9GsPPzB@ibyv@;?7&09#DIFhxR3?_fYIXx3;-gwvW>r{*VZ-=D zj@_pMyI)v@AXz3AJ16BZ4NM|SIr0|e*jpd97I{wGrj;5=fg6!S-oUi1RG0&$V+Pz% zmjrexM|tg_S(tLYqLmvT$()?cS|#6h9Ro!e9O)8=%^&s6?4>bwpQXVS=v1LM;Ms!U)L)&$p0V;e2wDL04Zm&@g!3$kPRS3O>7f=CP?~5zQ0x zXnBM!d~N0Hwnu312|q&T&-4jl2Y=g`7t9c0jwa^l#3sDN^G;f2R_4MkTI7vg3J>oQ zY5L2!yYZoTINs7-#Vb|xWbUJh$13(ma`G5odhPoKhweT3JKl0kx*pH;JVbkZ0q=xx z53TC3h||RP-U7~qaefiQ6N%m`-ml{PJU%`esrg?F;Sc0GA`6%b;e5};Lv%(il1)eC z!BCwB(M#K(9W6d;QH8sDRTXs9B+{2ZF0Or zmOr6eDR5kAez&Fo`JxP8WxtCGE;C;UH*tlwF!OX{7IReQ4t2cBoMC*yTX!Pz7@IZh zX*~P{eF$q1JZRi#e9kc0m-vdmvV7MWBFmk4itu3XpU}j8boA1^rFQ|>1giLE0XL-{ y!w(n`u+)hL*vAS+75c6q*)sY>4ZW;zg(yP`pMlV0v}wqVYutMR-!n%DKl}@@FGMK- literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/SoundPoolEntry.class b/bin/main/net/minecraft/src/SoundPoolEntry.class new file mode 100644 index 0000000000000000000000000000000000000000..3d0a52bca2df4fafcb64c74fc7744e073d31b666 GIT binary patch literal 494 zcmah_O;5r=5Pe%JrKN&`-(FBJfW}7SP2lTIjjt1}UL4pA zD?>izLCljuaN8S-NHe%&Lu>JoV5o$@^R`wp8Jsf|GD1hi45j(poa)?%G|OMeMCwb1 zgZkgqMRKFdU|*$u;UR}*A1+D^xq74Pf^_*t&i5qF&t}c3YY;3?D$;pw$7G+XL6*Jnh zOuoS*TqN{J48too-{3b7XH*=`u=+|Z3ss60*c4rg9>pR`@Ucdn+I$V`*dRm?V3W?U OtlFYO=I}Nl3p?K$aB8^# literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/SpawnerAnimals.class b/bin/main/net/minecraft/src/SpawnerAnimals.class new file mode 100644 index 0000000000000000000000000000000000000000..76acc26afcd8d5eeef70e608fb5876d56158fee3 GIT binary patch literal 4124 zcmai1U2s#!75-L|b&-5+%d)Q|8yhe*;2*$527zs2F#ZW@4RQD}n6wGk^0kpIUpbO& zFl`c=x};4=Nt2QSC21i|-5=VL6buc8rfH!wdFxxA+RpT)(}!lJPn}E({q|n@2P_hK zto?TP>^a|_J?HG|!#nTY1h5`|R^Sj=W*V9Lk+^BZQu;uqKAnoy?;h0;n?|bDjF0Gv zv;voaZ%7~4>l3;;SpQhxkP*uWct-RimSkE$Lxc(3)&KTI^8U= z$P$Pfl=nZ8W8S?vZpJe$0;{T{3#Jz?sOb@KwI%xvFPtb+kq@7Mv%03o0~%0~2e(9} zDikb|D4@avuRu{3ce`_Jq|Zq0(fbl)>+ed&^hA%Iipzd>(3Lq9C)MR$pXVTM%{8v4 z9=4mX-868&NptULzn-Ciis~F%_9at^{^ptGTuGvff)TvmFHT2J@ks3&*My$h) zn}Y%e9!x*_V4XQ;qTQ+FV9H3RZO1g%FmB3n$l0#pj(2DD*zgX0GF?frpr)9T^%{Adh9@iF(^I zeYFvd3O3DT#k@HcO<*`Erg4O%m?W<1XiZeXBLYhop6xxxz1WN`GK#kfxT~Yls1@Ig ztMzt3NlNTRJm|oq3OWTs3pLuOsbV|mSl4JWy`Q<+?!}j|LqQkgaN&|2dgjn}Bf&FQ zu@jFmXa*9=Wa_E@WJ+1syJZv zCS>o+D!yX%j>EypwUJC)&pPm?ZYDsk#a=75(6lkLPX4k)^@x zObAq2zR7WvGa@|2LBtgtV!-FzuBAxD5Ew8{J)WXlK1-dK>PA$UNDAbWPc+>Xe|jv= z*kG|a;M&4kD&0f(rDxpJ>)!ebhpm|^99D5edcd8Qb#=cCvZE@#IyclShn`XK?A*`+ zSNk!raDAQWcwZ&;;uyZ6ViMmJC?ub@q?yj7#$uTychXRuqfpMP5-DRK!RlQsOYbQptUr13I$D=)c`sRgUQAZYo5^ZfSFDzW#cCtjmKMdfET&m&j&=nrj>O@t z-f&iLIIB0D)fdj{31`!L(HRDKt* zm*BjMZE5XQ6xJ@jg5uiMS5Q*B<_ffTtW`mN2dE3w;$p3kS_-M5ggQbTt+m&q4CU-m z6Bg61uuuipI4o4jRZfmB!P2bdGt?<9udb`TjFM?Ad!&M(_yQ`OEmQE<*175~W2Lx? z+I^EwQR(xZzx!{=$O*})+}c|a+4xY*zX1GL&bE$dj@9Z}R;$TsEiHSn0u@~AApa05 ziJYjXzI-_Uhky`;pIEebGh}IAVqc*^O9knKiv^|;IarKi{SnD8OvHgmUgiC>?(5jx ztGTp1&3zRum#D#E5%*i0E+gG?I%6^KpbCrdcH7D<;g&36TFw%d$R_OPOQ)68UDU7) z+lcb0rx0yKa%+4C+3a2a;D(pbbb&LHx8^e1ui=XkH$k@qisVe6Yd7T<7S+~iZcUlS z?j}!}=Q8$2yt3IJ$(PL&5w%Y9YWbQvjVF0@&Wp3%zIQS3wj6Or3Z}#xnm1CY& z)j2E5W;=b;NSqZOTlSzmjZd_~A}WOP?M;8u(3Q82nB{i{0zrJ<)QN7SYt(~q7<3a=df)G7lI{ZIDUL!6BiRr5Cwx8 z(btGV!9XxD6y#^9FBl4jhWa*@16g{)-0w4qW5#;z^lEqKkWAz|SNSk)8Q+%+7p?D!CKZNupN#n2F@% zdOML+YO@nbqwcqvPzqLvf8i%Yi?CMw4O93j(`tkG2tVT(U%uim_&HHN+Qf(W1(AwD z@fI!;6~Gj);g>{(NQsm5iW@~37cb%0L_Qo9FW?g1VdZ*8OyXUR`RT2X@f)xx(r5p~ z6{1pl?(eKTj2E$zKE8@5i`6>r;Tlnheq4&*5|z`ND&8ZipfAI?&J_VM!jt{R2K=!IHJ{P2}I@u@@*13aa?uq2P~#AB9`z z`J(t!2Ol{cj%Gu_$xq=?aN;gWe%>O-U9u^BkY@4|xW#V=ZvP() CBBp}? literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/SpawnerMonsters.class b/bin/main/net/minecraft/src/SpawnerMonsters.class new file mode 100644 index 0000000000000000000000000000000000000000..a472ad15a6f3f94c7262158bfd1c6a717d9dc54f GIT binary patch literal 1166 zcma)4QBTuQ6#g!D>zLixCKacffGBJr)FJXRgE32tO$OP-V2m$Zw#usAExGMb-~36M zs3e;B;+sFpcy0?MZZqMby{D(=JKy)6bASK&{u96k)^$uU%nK*9`mS&~lD`hEKz6L% zBmPb}a@!X{=*U2a#xVEavd6;hb1z`X9eMnNBOAU5rSEx;WLRvD!dgRByRAAy@}Vo- zaEoEPaxsYAe8Z2q<#BOnH9Q^!^;aXA>K=pE@VibLmvGsD4ufH-axv&67_tTuNHR<{ zX+ArH{(&Q(^8?ReC^Y>J_x8AS)%R&q3wtijVPTAep^=hf?U>72e5^AtI}YzN(*_%I!0@RYx#j2y1uAS zqKsJ`HyLI|cNw)YFo${4C`p8xOthFm=z3NxtDeRJ?&!EpS7i8~fkiAa=)!qVibLvB zv8%R@D#Pq3-9O6Gs9;4c^)6kXicMZ<-Ni9}Vz2QKAH>HdLweUA$d2>GRqLD{+RvKO zNwyeW9MC(b?g2#;^yo-YW|E>FG|B_n<GW^Gh)c%DrO>V7S~WD77f>N-EH8Wu*Pq6%nnod9oFAyPM(3wGvBsM6k#6OLR&&9V% n{Awh=jWh9W5^s|D0v?fglRDLCkZTkrs81FaMauBKh^_V)7@ZZ9 literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/StepSound.class b/bin/main/net/minecraft/src/StepSound.class new file mode 100644 index 0000000000000000000000000000000000000000..d971fc0bc3e32fea58fbbecab4cb2e4f67d5ed81 GIT binary patch literal 1045 zcmbVKU2hUm5IqA+`EdDOi;7iSTZOGN_W} zF9{p39nT3)368G$qNT_`^GT6a$WxmD+*X*g@Q3zAV zK3?!j#b_kG9^qgebY+TJyAvhR&|zVljReE!kOZBLwCDFGWY~{y%ci4Nnp^zPP$sa= z2Z-~ZD~_VN3};1kmoV~GI3^g8!5#kU{BjY4#?dfuku~?HD44rbl+3*;j4xb|VUxd` z%mTADzHFM=Ip&v{U*W15@o^9L`Nc|jzS!au*LM6T%|lYYm}`_k?$p798U8`N)b@Of#F%3oT> RVvv{rrBz+4br^O$`VFqn!6EDi-9yp581JbMUvn(ELP z4pyKTYBxa~WVZ~vUH64AxE=D?CmI>V{?KuH69(-*nF$kB)Ge%`#?W+0^Kl+cg&gx~ zC>UC9;_-08WuW}>Qp=u$l;Ox-kwBj2kTe!tUMQZW9E!I~2Idsz6+^=p*_{;pH7}K+ z)9oz>8rWg5B#&oFH1JhB7)%O~o^S${bo+m^21**|U{t9Z6`TYV13k~up0vl)&i?TMcm7@)`$g0w98=X?&j828Bwzl8ts1Px7 Sd7z#XTg7upOh1;R_Wl5mYj6_) literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/StepSoundSand.class b/bin/main/net/minecraft/src/StepSoundSand.class new file mode 100644 index 0000000000000000000000000000000000000000..f5f812e0d5ef8da160cba99bbbf6f937ee9e7e01 GIT binary patch literal 529 zcmaKp%TB^T6o&r;m6igch_|>fCYk_7>TQQ{p-ESb8wmTMjCHUSGZdanS0*le03XVD zdf6Bf+O%`d%s2mk&dks6*EfJ$9GWN)jw2a6Qx!>Hi|5#xYv1X|@~uBxMB~1Q#wHBH z(He+Qx>J#g?+N=YZz7h$2}KmJidIq3bKUlkU_8#o(nb;GDmG9e)IGL*T1-b$55y>x zgoZcsMK}~%C3!w+#4l=2IPumLkW|@Yi>1(4iOfm~+1fRM+$_8y)B+hlXenOPMhVSU zdv&9QJwj#9$I%V6Sjv!KGp~K=sg$74Op4~w+cevm&p^A;&cOD8XjMN?| Pr^3~2ITz;ZN~wcCWngYq literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/TerrainTextureManager.class b/bin/main/net/minecraft/src/TerrainTextureManager.class new file mode 100644 index 0000000000000000000000000000000000000000..834e13b3e5038ed00a2b5b1403b9d4fe9339c0ca GIT binary patch literal 5435 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 aOriZn7%og9<94IxcBAL^4{5ao@BSB7-|2q< literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/TextureFX.class b/bin/main/net/minecraft/src/TextureFX.class new file mode 100644 index 0000000000000000000000000000000000000000..d7ae4a73dde4834fcf1851440df1a4b150b6f4f7 GIT binary patch literal 599 zcmaJ-TWb?R7(L%+n{48yX`{Ak+G@Q(yMl}0o8p6)LLlfvLlFBk*^KGb&8%!ErTVXY z2!e<|z#k=^*#v!)W#@diIp3M{>-YDc0G{AM1A(AtwM%El>a0{BTzXz+=}=#~d8v=y zH4q9m&eVlUb7iOL+wqysoSh3PjJ#GNGLw;@U>@wdb z_YNJ}r#E}-ZY^1H8+VwIpPh(1g;964`yuP%|9{l=s?ez@;$?G1A-KoU0Qdg@?)_w4 literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/TextureFlamesFX.class b/bin/main/net/minecraft/src/TextureFlamesFX.class new file mode 100644 index 0000000000000000000000000000000000000000..cf7feb9be14680a5b39241d156a7832ff9337960 GIT binary patch literal 1957 zcmZ`)U2Icj7=FI?{Pb_^tZO&mSa33AE5ZhBhr#ALR#vEvDQ*%XH$Ce*+OF%c>j=aP zZ{|-j6Cp+uf>B3Ec4J6Xe#8)snh-TyVB(b_@y-hqFHH1C4fXlXsR#(o>GwYG`@R3) z`Go7q|5cP1w=Xk zFII=(gWnHu7mFguy6OxTkpCKVo?%i5(wcBLTsx=^X+3-baS z9+2>TJ?>|9$L-2C0d1~4QOM2+csn`|DT&uEL;`pm9Xd7%tSZ{a?XHqtKH7D_uI5AN zM4T2CyF4{F>saj7h72Aqe_G<|nKK_a;9D0ciJzyZm81zM!{2a8zRV>-4O!XF5c;r- zmDy$cXzAp!{76|AGR1DZAou%27{HSP{=%$%G`H8T+VY5p-L$v6q=(8pbXiERODvb{ z5Kv`x)N?3#skGB2eKZ?)Aro*Ey6cqvXc({B*_i|OF{h_a_XFc|3zcjxRgjI3+}Fvi zvPWoR%3hY{fg;b2NRcP!NQ69B?gz+CQtlyrEdDWq7tv%IMm}=|t??!?bWOX2HU9$h zBgZzzHB1}OM9uHc$?UVog*vm5dQNCR6B+YOfYYqN*}AxPpXfDJ$3-JB#+Hau(}jhH;MSiV-=7aJw{( zk󛩐?R76yvtMj#+i(V0<6T&a3W-@|QYp3&Yd$D}bG@6&O`L3N$v60V={70}^ z(g?Q9WFzRxo;tWFglR;UYtJpJBB~n3axE!McdK!k!X=pTH7YwMYx-46%cpZE~_#Z{!m zb-qJxV$>Po%gmRn5*Xr_V+=33i21#NJ=F6upD$g+9Cu-u zGKKkFb`ksYwR0s@_T)U0+|_VHsMt%Yvc6jwp=V84IE55(YG*OV*17E?Y(UGR}s`1CA#tSN0$vbQtbjk9oCuKDTt@A?i?P`thgu6BV zM7qXHeUA^{y%E;m+0}6X_!|+Azs8*XPFx`<^|--CT^YImWWD!VGs`jN>cKPr0DS&+ Ab^rhX literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/TextureGearsFX.class b/bin/main/net/minecraft/src/TextureGearsFX.class new file mode 100644 index 0000000000000000000000000000000000000000..5074286ef47e2453ca9260ea35e0d5d57cb887dd GIT binary patch literal 2209 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 literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/TexturedQuad.class b/bin/main/net/minecraft/src/TexturedQuad.class new file mode 100644 index 0000000000000000000000000000000000000000..0c095898799ec164cab14677b62efade3bea7d7b GIT binary patch literal 2211 zcmb7ET~8ZF6g_LNz2GbmJ{-a~A+*8Xf{Sq|1(LLwx}_n6@L`~7+OF*-S!(QPy>@7x z`Vi$URivn|m7*f$xe{@tO5q1o>EGzTXz7_B^e9o;!2q-gEAqKmPfBA3zM7 z3Oo{ebA}z+HgiVW(l_l$!AeI~j2*jZ8JSx}J)=ODaCS>C>5;6SyBoQg+A`9%gr<^V z*~ZRdzF^vBK39+szCC{$s_L&mCY?i566$lpG}8tTN^=tY(`L@JuSysmdUu#mQi2@M zXN&;6Xi!m)MhV`bP_iD3S%rc+VYR66!OxKAndL%pJ7riadMazsGoMfE*`#in;(ujP zw(psYs=r1y$BAJQa!I#FC5--$kmvY?k^x55DdG*tlW*SqDNoIFnE4TqXQ)g7{TNVi zLBgeXBvi#k3^JX9VOK(|@-7HXBtkWEsqT1N8Ie@f&27w`V(xU=oyI9x!ZkmVP`8;i z?$MmDS4d21>mBQ+ouBrG0pNe|UTibfpd`Kd?hW-mIj?WY@v!2sYAEQJ?LKJgz!PYH% zmMogNyP_Qn^}O^86?6EKO|uiv=dBC{nH9_PDsDK-KRC-`>86TBXX&A{6hItHDweUr zh*>NPPS6BmjZ`#9s#rsq?PI%-K($QPg+LoBzN+Qi5WrunxPx!lW_l*$_W7D=-&yPt<)J->HZ|clwll-&aH5V>GbIYH?W&>h0PMEa!_>+DMq9xtl9q=NTIjFBmSc z@4W0V4`)6Jv?TFJaF%JY9XX!izYXs2a1MrFK@EFfqA9GsL~~f%r}-Nl9<*{iM-UJ| zCPck>eF)G-fHueH03gU+;tQgk7g8$jJMUg2dAK4jFNL*N=xFJh@V9hND4JLEMuYO> zmY!U@f3xRtOK+}SNtMyJtjU@j?RFih6Aqu|J9Gqn?vYLBh+p#`ft_$2CNx?KnfQRbxwJpy9&vIsyocuf*L;G#S6-l9>lXi=weF0Zi7r3#NY2v!^Mk(} zVMHokN0LrQ)$_cnldxUr@2?m+CiU*2)Vt&Is8P7 z82KE=148$_& literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/ThreadDownloadImage.class b/bin/main/net/minecraft/src/ThreadDownloadImage.class new file mode 100644 index 0000000000000000000000000000000000000000..813d7719c12ebcb8bf4135a55122a62a4471ea86 GIT binary patch literal 1865 zcmb7E>r)$56#v~MuuWJ3$fK3gLMzB70b(E22eoRUNHkDQLbND$Zk8ooNp|CA1Nc#_^_w&PPdVi@s+& z)fIvMN^5`L@&u;y-EjiX_X7p0#%&d7P5M$G(?h#QR!Ug~xobPNe^21C@jvXk)9qn= zKE+g7Ahzo6SqVfjq+F&%yASJZ?K4HpE4@`QJ*Rj*iHNmgo> z!iuof%F?sdz0HjIPwb|^e2+AG)XutNhtj(d9yi0|78CMXj)oZlJ!pqQeY=oPU>es| z%C88F8{MU+%1UES$E%nZNV*NnS#=!_McCU(BNf`T-F0Lu8d3t2XR$VXzrlDNg#-*_ zbSz*|Aknn^H8{F^#%DTp;Q%tY~)b=<-0gtTh; z1*_R`ou;K)5;P*GG~U$l76?v~8bKt^q9yAB7yquocC+UMD+#=fcQkN(##I%^*Ry8$%~gY~V;%1c z^abe%Tn!uWq6h=X;X@4{2wdroaBhlq4XZs5PQC#=Bm56Qr`{l`8t*ZlW9jEerZXoPNiUpWG`)C&@uz|IMSdsf z3$%&RCXOV3Ll~v!OXQ|Qd%TQE-slOJ8Ak-v6f;oq#&Cr>M9IBMt01x{@~$Eui~Nt6 zew2QO(dW3fxp0cvUtr`ju~Vco(NipCPH}_(+au!ZZ?HkV@n4zlGmMb=#&@`Tg8ScM zQZbaQ&HNr45m3VG)>Gy5fpz-C&&&o=I{h zSnp-lIm1e4NiAUt%dBjbRju=d+U1~0T&I^=n3$t40|$JxYM4iz^jAos$@2)AbI2XH zk&EDvKFdTWi4r}3!nh{U{uGZ$?J$#T==&Y(8Vn876MquChz7x{`V?{+KI^CPE)^sA F;x88~$*2GT literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/ThreadDownloadImageData.class b/bin/main/net/minecraft/src/ThreadDownloadImageData.class new file mode 100644 index 0000000000000000000000000000000000000000..c65b967f4286dfd0793028e571773856ddb37e81 GIT binary patch literal 856 zcmbVKO-~b16g{_{GPWH7`4$mc6m19MM8dAdg(W5=4K7NW=!U#bU(1mBAg^!0zvZHm zXu=QhM;Y&%X`%^rp_{p1@1A?_IrHP^w>tnwaBUO_%~)zL3S#LiG1T5z`QF)ul45Y2 z+{9rb1}Bji$z!2~4U4dNDXxVVig@IG=wC`-6H0-3LD=qOHF2Z8EaSaPheN4kj?f~^ zD{11`m+d5txsy%^RV_d3RLN5jF~-U?>PnqnwUg*7l$z7@i7@vjhy(qWaMZ{LWlMCm z3gS_#bN`BL?|g+;vq!Mn$v{?6#G(TSj|jy^vsVUT*@2A*##?nz&b@U96;y3JChXmZ zoVe#o3HbrN5M zJ)r^XGuDvz>_^bAwRGDFrFw9fTf4v1Ym0 literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/ThreadDownloadResources.class b/bin/main/net/minecraft/src/ThreadDownloadResources.class new file mode 100644 index 0000000000000000000000000000000000000000..ee085da7c27c83c3f6bd3b343983d43d06fc373f GIT binary patch literal 4560 zcma)93wRV)75*nXo7pT=0!tRyl#=BUNHz%z0Rl}*D=9^iZW5ZLp&_j@*_|YtY<9Q1 zvjkAET51bEtMvg^E4CWnik98lRH)BtwTksw6l;BJebu*q)%f3;eT4v@@O^V<=bn4+ zIsf_3e{Y`r@1v&yY{0)1lt`$J>V|(j9MyvfZOHH^6G4CPNJ7^_+hP;ZNK6ZL>&aLu z5!90kWC`;|wY{1@qD6V#y!ZH8$a71sBP%<8ra8+RTRvo#G zX`}=rv1B+pEJ4~Wq4b(?G;CZeVNK0UZ13STdcx^N`{uyjZSS`m*CDuVyQy!I_86??e?=ieRfHthg}U0^s@WL<*}_ z*ikB0)~fKKj)>{|!bu}(=DS-=G^ki(PK=L*!U@)It%S;gyY5uf2#@PG>|(-L9vJNr>KM#99b?jp3hL?4i<@?I^m z&Kii>6+MO)9P7~Hrb`7oBwTqJs!U7ZRlo5{jw3URJ>AjzFMrdP8`A=3SO1th`_un->NEJEzl^B zQ-4@IvadIx1-ZA|ig6~RNZ70*=Q6RVyPoy3>}PQ#%W?L+Yj)Pw>W$RtHtUt$mfd(} zn50G(-k{=*coTIoLUN1qfZaB~rgk8|vw21c%X?M4Md;O>aB^EtT%3sDJ{51n+o{5P zwMa_u8j`T;{}K;#`**51Cg`M)Cqlx7lDtcZ(ft=_kVTHmXpjT%VagQim*TxDPT+kk zK=@LeDblbkZwQT_5HjbL#QhW=R`6+3rr;wGiw>(eg*2;Z zIuIW&;i28m%Z2z?B1-zGiYYus*^lVaVPnK>j&?C|TE!VWPVHn_c4`SdYEpyUS|lDmxOg4-A{SRTt`z`%S;Z6hig|>_Bjo+oNJPTsi=Z@{yTvMzO%=(>DEKj3J*W7>qAO+OWnaNhie?4q#j{R4 zi=PT~ekR&>X38St^Z13B{Uwi-!fdevQzXyf*D8L4-!erZ>rAm`pjF7^ISdIO=Hm}4 z{)j(uZXyvjC}s+6+6XJ}j{~jrpWpm~94S_nGv;P&Z=t$L!3*THd3@wAorJN+yxWST zd4s#efxku|hh-#(jl8yTnU0Z`(3^a=K5@>FyB{y z3JZKLcN&X)avE3qrcl*i=USG*ic?tSdl;+Is5y=r>#hDcmQKOnKZSMuuJsvgv_5Z2 zqa}mu&YYxc8(zZaD&A@V7i7%i+XBo*1^>Hwb6tqlScDcVMjtA%l~!IWB(&ms{$g<0 zW`-@^ZeTJc*v_vmNYh+mQy?j*QYd&}Qf>5arY6O+034h`dw&Ljz!Wu_ zM%>$9pGIE>yEC}0)3v8rZb)OWS@y_Jppmb-t;s%#CBFJPw>^!K#}UaO%Jk+RgM9L^ zU2@y&(ny?`evU?U9zwNu*W~n>fKMRc+LOTnP9HqUV1XWt^Q7$MQ;ZfModf|`%5)m{q>^U%L(rv*-&1hk*dEl@tx#fn_C#D}N zkZrli_!b7Rg}8q9KU3!3r@?w6Q$V#%OUj6S8B7cs)qG92g{C zM~IieMuq$z%u(==v~GC`?RZbK5|{4f8qsG*>RsZOP4^(j@ z`!RqeJZDy-ljQ1RNA2YQn@FB+(yfR0$6k84g+BTT%5IY8HWS7nE8#qhM+oDcgo7Yt zVN|f6E1o8d;udPru7XsuXt#uS>7)2Idwe~2{|-k7_pHQsS%NaIlkq)#pKAs1jgY4q zn8PF`85vRV13o308UQp*Q`Ia*5Oac;XJwX$hb5oSaJ|g94hiX#yeyQ^q@MZn@R*}n zp2E3)l9ht+qh|XQ&Ql?t?XS<^xeR{ZTxx4lJa*CLziM*09rt6dhobPjr!XUg$hy+U*xcFm8gp%Zzh8egx RSi~V?X}5%b@K*```9GOqQiK2i literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/ThreadRunIsoClient.class b/bin/main/net/minecraft/src/ThreadRunIsoClient.class new file mode 100644 index 0000000000000000000000000000000000000000..e8d6732b5e68d571af81d89ae22d6dfdbcb6fc8a GIT binary patch literal 774 zcma)4$!-%t6s)!Ey-fq%W0rDt?@DU2+8_iA;0&^i|P!OoJ>EP9{ccSdEJc*S+t(`4J+(BJn zW)LgYCw1eX*>R-zLfpp#0U@Vf$y*=m0t^2iWbaF)`l(KgK=~+@(Z@sC&pZc5$ zU%Ra=PuhIqSU3W0^0(kKyN&Xeay0wfSc6cuo@Agh!&EH5gh*1{!J4%{Z2fvhIGsmUbe&HwNR zI8%jadGG`L8UMi8lf=p)6o;Md?&*H7-<#imfBpjS0?#aD7&a53f=-->Nb)lk^kfvA zw4~t8T3d+jVJgKyNDC%I@gpDbpv{x>Ne4rw6EUoZvk*uB0S_4FUdBnRUNP)@w|0h8 z{F;(+a(+;)GnlW_rm$gP!GQ&bq3qq%m;*!JK^Aj1MMVdTSYpWagnGk8Crt>*JFV9B zWywJqD-7A5;!-gfp5`fpwDNJk(-886H`;<>DNG~Yu5%gdd{Q)3EABCD-=JjHHWF_R zxO_hT?Q6&xjl?heNtRv&Uxve>R{F@nV{GaL^%LmLKUC{EY{RqggkkL#yB$>FGgt(f zkb?~D)WR;q{VDJJLo zv}xL;4M|^V(l&j+AG8f^2ub7+9|C=x^ql?`{h@zGPup*1^)fcJKF69nvorVc-S6I+ zzyJIF4*(p%Uo`{-9=B6F@5Gdq zv4iL)DpJxAr#JW8KjF+y<&6c~bc5K-Fluv|Qj%h_n42}-X=65P3Pi@8l#xASxR#u& z#Sj|MPIKOzRS?*=MqX6xdXcqR+cT z_fr~%1a{O2napO*jFCO+W{Nq}_KsajnR(B082TaRxwg+oeYj|4(=t}FXZ>g~pS4nk zXU44bP%MN5j!3E;y~}hpUvkHYj!_&VnV4(SCQ0|!ds*4KD%)kd38~^S9mhdx2R+B% zFVNoAz3K?}4&sPJY+T0#CQ0{vk(GC_-e4J)y2BNqRxdG07Y%nm%cSm`&rbhSzfADm zh_N8oO?gIYo@pwxAnck(ddzillf%;jySvuNIloLBnGq+KcZznJTo2+b3;I$BGx&st zr`BZg%0oIniBFM{8PiMJo|!S-d*mf4>-ZTRA%uf4Xk}3@q;%+Vfvgpml}j6zIcXi)*$$dHzc}zKj=% zGtXDE+p&g%r0VeG?SOz@%%@qc{>8)$q{u_hJZh)M9V1;?9sYmlxCRC4x|DSAYdXG; zZ!kcnu@c~lwq6c!jk?wFP4>=O+7vfJcm=QN_!hp+HfNg)NxR?~c8cs=S^MRzh44DQ zr{TMdvZkn-cpcvdFSOP?FA{pk;+%GQIm!FzhdQS5WD9VKrJTs@`XZShk z>BwHP$uD=y>3hOgMMQInAb!bL!PLB^uCrJTnb?Bm&9PasSNq72 z9dF=mcIB>QGTF`E8gcBTeUbNp<1UWO@!?{Uw%1Y8v4r<{>H18nMK&^5wCBmBQD@TO zO(rjKUl-pOt#ohH^3x@|p8PaAI@&$j{OCXUjN%_#%%~qFZ#LOvAMuAl-rJn@v$2Mz zoT8gD$M~?K#+u=MGQH@eiUulbW)tJXgi=U8OO$HHuST{vHL|Ozk zV#Lzx#0^B_H}Oz_e{yJ(XT}_-1etPjE(qjP5j@n4;VOv5O*0r|i`;T#{aG?}+slDdA+65Qh+wiR#_sT}O#e9< zQwbMt!VcgL+=<@5p>r9Yf?^35<+lTPhj~Ck)y_oyK_*b9&QIE#*OU=i zl0JIFb?8Z#WgQ8;Q-yu_-n!ncWgwZHrqTv>q) literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/TileEntityChest.class b/bin/main/net/minecraft/src/TileEntityChest.class new file mode 100644 index 0000000000000000000000000000000000000000..875b352615fddf8327c0ff805ed387afd3a74afa GIT binary patch literal 2679 zcma)8U2{`a6kVrDnl`;jOQ40?Cgr1)Gz|pO778t;Bv1*Y6-_N7f?m=~x!NR5a>2m| zpZo*9>J#dWFFxQ5q%$%yjt@NW6W{jt{C`<(RoKR-PM zFabM=Hidl^%So5*idCwax14mnR!T3~Yu5RSV>|bAx2?JpgkNEBJGUU(TYBX4m3vmj zsn+f*giDeuSFJd-)D_~_3NNS3J65^qn59pq720R)itWrQ_!6Vb3jSPm#R|cPuz^m5 zg6LKl*d{|K6m}R0qC=s(Kz@sN%Qvmsl6iB@Qiv9+C39`rtl6^njDF{~O=JgJ0NWx7 z;q|OqPSO6%+C-5+^9m7pAsq6R;#$>F*qg|Ywn({|tN)%^JEou*9$sN5+<3{({v`6R z3GYM%Lk9L@K%uiPl_fGn>wW_V(611x-&wOYC<@718NG}v#9o6e>_S;E?|2&RsasBy zvhdsJD3NZPY;-xqo{SktVYfmbW!gw2s0()4rd%QYV$m#<{jS7l;bZfjnO-w1tLdUs zvn#999XP5GaA#AYt7e%i^R;SuF}tL2Fwp`6-z=G{xoY`N^=@TlT5$LHkgVOt9NT9Yo1pzPr;V!=ZG8$?Bn?O_zCdSCKnxVb-DF;JMz1WyE)nw*GO_5 zMzUx4XG9*O=SN!F5EVP)!H=JRVXiy5Gjs%Yp_e6zcyy*#6iaU7~ktX9b$|D-^gEx1rhnvWtYIH$F4?S z>Bx`^FjY)FLtl!JlMN)lLsv@H$B0Vt$*?jv*9j3%Gi9!S^=?gP2p3a;|tqdE|d*kW52S$iMppb63}K zWkD#93#nM<84f+c6s_-R>ai~yxT;_E`y04^B_+#8!qipa!HegVkfc{O7$0$u^ehXV z;bA??5zP`=j_A*^h39dSqj`q*OSnk%mo^P)vB|pVu@2K$v+l->$6AI~vzFO#xkiO+ bO1SbT+vD1tk)FA&x4>e{8ChkvHr)Of=`}1o literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/TileEntityFurnace.class b/bin/main/net/minecraft/src/TileEntityFurnace.class new file mode 100644 index 0000000000000000000000000000000000000000..f786c1125761fed65451f8fb9387cece6784cd24 GIT binary patch literal 6025 zcmai234D{~8UKGx($MtfXlM()I7LcZDHOzm!ybSJ3o5BNa8pAP+R!u~CMkzHugNxb z)2Y*m2bV|P#yl#tPL#RB>fGgS=T3JxcVD_gQTBh{_e)Y}Kz_d_-}k)F`G2lAy!77F zhXBmC3cV<>Fg+1XH}=F5(Qq=fA>Eith8sI#@#wNdI+otHyf>K$g`-}$EmWU~(Tl>o z9DzV$b2O2*liMtmY%tma>1ayFdXH{zlGgq6(1)g+-I@|1?O?Gc0 zvQYeRVX?xQpsKT|O45+>p#^PTv@%&EOYUeD3QMufcuK|XG4Z3RcBG^EQf@Sf%tC?V zY=tS9>O%nMda)vJkLDy4+Od-UrbC@AG&w1MQIWqjl!`L8^O$DIk%V@E!fFI9cnNRo zwluLV%ja>c)Xjy`esnK@ixfT}*&0QYZA33U3hVfm>1k2?L4^9)BF`qDfQKMo?zC7l-MS5)7`)8UE9hXUGz_h`9^K~j`7qjo%l8mLJ z9X4TZepyIHMFTcy;Wvn*CedqP|QiOvj9Q7k2Ar0A8vQd7N~BB8Xi?xbcu zu5cr^GYjERBG?m+v$!qXtZ)Oi%hM+nZowECgmNYoBMaeE3b)~Q3T?5I@yL1WH*!bh z3F9I;T_^&dR=88(T+l-hO2buYkuz#Kh*hrD=@N=BN}VJJL|J`QDLBe%WUx_T4c zEs4lddzH;?CrB4^#ZV{9f1Q-z=M+AVeP&V!fXo@E@JKUqMz9{m<6b<*fu5g3;R%6A zrMhAp($PpD5s7YwMORiwQ@!!D?6U!dL5(b1u_v%p-1?%z(=v)= zSgZ_f&8|rC;2DKyafn$L_LLdO700`}u$dpla|&M;ZDL*m(dzUD5?f!D0r)jeT3Nnp ziZFy1y?7xn*g9AIukJn;;j^*1r@>%?@t{cR-y25ASKY-FY*8!Bv$3*$4d_qfC^Rp6#{B+TZ zn>S()O88z*dsU>>@I)D1n1soE;{?*4iJduo6FY@<`%!vmAD;>!8VfbmH%z)PD?JU< zc`DKi$z8y2uSi!lJ${V%7%g6ISR8RO<0J+wW@q4JN72jLdEgwQXb8>bVLxV8KY;P( zWtIN2f~P!g-m3>tXJ}32y9d7Pxh0;sbRcyOxJ4)>BxUrdoc1Tsas}oRxWxo%DScZ` zNCc|+gpYn?y**(g9$%!sWUKcqg zYX=*G4MQkzpv!dwnD-!x8|3={W=cMd(|+a=bkU2Mbhnny)NALa7&TevCTE?SOy?Tu zoH)XYn?%bCaGGQP6zvZW{HGtAqS;!nsSlT<*OI%l5w$7^ht$?pb@hW-RPSFhfaaBT zba=TbN!OA-oZe6~fODQh%bD&9w|~_D&R^gu^W2M?GLHm&Xs=0Nndcz<|!E59Sf>`Ap*iCiyfX zbvmOz154=nD$>^SDU7qwgJxXG3y&mriHReN-BrXc$|w~!5xWh^cA&v1ogwBb-IsCOkhPK+?lv2!l5C%FFYd!Ay^5-M%D|1YyKs{6Ekoep zt^B)#e|Pb3$5XhkdI$9!Lmt51Tv;brZeWLvMmJYYoMW(uYb$|ixSXw+WJ#x3;As|j zFUxu}BG|%4-pbFbnU-sCE3U;3T!)>kh`p?f2TAQC%=>U7p21BxgqwLmx&^P1^G)2Y zvt!2VTTaeL;|=Eg5uM`K*$$7eq9kJ{K@~S!@1o4I-a$vB`&{dY~*9Pz#?~c8^9%ydaCHi3iPwmx`xr2TjtfHAO8M=E|VVW&-C)e3soNRY8ac0#ihJ%5imQNGFnD^Vs*>GX_<(75;l%JhRQgDNhA zuLS$dV)Sr}AE??5zv0t0%EHr;xtfkDS(hyQ`_004S;1V@m~GFx!!AtZ@35)Z!<_Bq zV1IxE@L^oS8raB8Ud}p@rC=sW(g}4U7e_8sE`r0DXH~sTEd}y(#)GQ%zb-(l0Wk*Z9zfI+A|NL#^xgnri|{f6Q?G zMRU0ej-4ux4T~b3omJ_hqVSIQ%RgqTK>kC|+4SSuCElr3d}95qjz!C`K$azz7M Vd^~?N=I*|wj#0~!n^l43`9A~}PxAl( literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/TileEntityMobSpawner.class b/bin/main/net/minecraft/src/TileEntityMobSpawner.class new file mode 100644 index 0000000000000000000000000000000000000000..d653fa702248042d46c8d2f0f0933c06c645e631 GIT binary patch literal 3872 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 DTuGap literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/TileEntityMobSpawnerRenderer.class b/bin/main/net/minecraft/src/TileEntityMobSpawnerRenderer.class new file mode 100644 index 0000000000000000000000000000000000000000..0159dd1f005960cd9545a74d21eed399201fab0c GIT binary patch literal 2180 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 literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/TileEntitySign.class b/bin/main/net/minecraft/src/TileEntitySign.class new file mode 100644 index 0000000000000000000000000000000000000000..8824bc482dbb9af3320a670b9f5273ca2f2bc9a7 GIT binary patch literal 1414 zcmaJ>+fEZv6kVrNIzt_#3^y-T0R?(dY7y~**CJrGfJqw?q7M%3SVqf~OsA+XKKUai zCO#XrBpUVIZ!+pS?I?jZzU
  1. ~r>7d!2pe$FI-d0Le43Pk_6OF*k}W5Igi3G_eAJvDdCRK;}4sl4afPI*qCw?c%B z#bBXidsaz6WCcRkY{&L)2q>}mnm};ATC&1W(4(UpVHLdsk%PrF^a(IcBpqD{NpDbx z3XLc^qO8=nHY~SbZd5D*BUde&l{M3~W$Z5oy-m9&FqZpYQ?hju4?lOww@_Wl6a>a& z9gZ+lFw67Rt?g>vDb2;#WCtg79K&%9rv$pBF6l5vaazS#N5S`(&~XOi0^K#sYw0I2 z8EY4{eI>r8VbTYj))4pI3mTHXJ42CoOgG)R`TaE5{2|veON(xGiy7I~c^y+Yu3}nX z_~5-{>UO1Mxf&#fY&ncHX5~d*;stf!FNI3uijJ!wRLI=kwj9nyG?tCGwdNO}lP9k0 zxPhCTIj{Oxo`G2V5$+wuZ5ET`;kHs>@e6ImVi za9`e0eWTW#ae<*&wgYpvCKab*J$cV8K3g`o{V5FRt97?%E%LE(miNE8DXA{`6Om6f zz%M7Ao{)3SuR@P6g!T}lN6hj~U?Q;#J)wTZ;dRA`P+5(GtzO$Dk3vDUVBlPt;NW;ZSiXzdT% zI;~D${14hb`Ov4%*qEs^w0-Ss|AGDi?OSK+bUL-?Zh|PJ$_#tY?mg$+^L^*LC%^pr z!zzFw+>+sAh+4WEFB+Dfb+mamzUXA*vxcdkv|Pizo;LEW9kg*l%3VgIn6P|d+np-7K}xPSe@$X(?F#%jiERC z!idD=s1o&tl+s8T*K$yzWkzcJ|7& z?rJ&BB{)QSN;-bCdR~m953f-B^5!|)tsW+e!|1dC`Wc$zhN~Cji`2gUl9gA8_5&OP zILNRiV_3Oa{hGVv=o8mxv?3AT8l76umbJL4S^0RH@LBmp@0|2w?YLJt4heXHyqTs3 z>GPtO!yHEhEsEpGPbfuDk>D5=pF_l!U8<2adi(Yr>1gHb@5194$8nKO$(u8_Q`F2s z%ExemV-hDx7KA-%Tkg6@yP~~yTKTk3B8YCB;&=@ys#2g902#Jk+KfxMp5~asG@WIV z1SfQYdoo9aoQ&rqY$P zz2s!|B#nC-uIpRkvaQ{Zeo-d&&<*m_NFpJL=}MNLY?{mT4AR?#_YQ<(51_;zf?s@q z=I_z+9qswBg`Uk`d;=tkZlN41ed82OG1!W2w32ABy_(P0LSD`E?NJ4h=v{SJrcJu5 z?#{F|3cG@izB0PDutMQ;HEIn9Bf;em4^_|`Q}>qmds)H2_#qOh}jKdX-s7HsD zkh)79qv(hdQI;bL?T13@U_@D{U_4gF#7M}0h~LB2zWYeF@`EEyt(?r)zsAvrn7OE) zd4O~6O=ZlgZ_=ZTw?>-UL+##w8SlCcW-AXX1rfX&DCGQQA)^ z#^Dmhe}ooR*)+B7A{!|dEcQLmMOD?8(5(oPW5DP4c7_9`xM;` z=`pz|GMJ2Rzu)ik`D9!sY5arJGH(2h4j&cqA%#`NR-yxh=)$qSpU@p`liC_1figZ` u7n|ahx{v6IdcelKGS`GABzFa$c)-F>fQ6p`3u6sfxCV^jQ##Lw&;A3-{xOOG literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/TileEntitySpecialRenderer.class b/bin/main/net/minecraft/src/TileEntitySpecialRenderer.class new file mode 100644 index 0000000000000000000000000000000000000000..e10da6128562085d7dbfa2847694b21bcc3f1da4 GIT binary patch literal 1163 zcma)6-EI;=7(D}&pJfG$wbfQDt!-U?+O>^$m|iF)X+movgm^nFQ@RZ-%`jB^R+>~y zyzl{hDC0M~P)Li!o86gj&YbU@Gqd~q&(B`~-e5n55JSNe%I>L}k@GEY2xYxEnG%tjs7&7X1#~8}6Q=P{=#+4YNZ(Yw- zhYVpW*Ih%=lI zUCK2QpcNAfh$gUtr!hQX*!rKKOsry!!3^Xcd2I@XAv;4~5N&`c8F-EtF|0GJ-|sSw zG?B#ygV7dhWaJ+fjy2^=6I3M2gWZ1NFGxC_mP#!DTGf_a1yw-XH>4*yHpm-*7?p%^RZ6mTl2N$OA zhAimQqtOD5>4MTTK{K1)Ojq+iV0@!N2qrzFeld&(G&TbOQb@!9lCVhC2r_s?E1KjJ zwa`s6`5P?VVELq2EDZ5%h|LLO%10!qu|fNjK65tM6)@}l*ug8})EEnEq=g}e{HV(z z%|nEW<_q7kG+{RUYKn}deb(gwb;}whR_%v=8Yqsq4*WR~*NTVO{Yt#k&NEZa<0B?U IVQJLszl>236#xJL literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/Timer.class b/bin/main/net/minecraft/src/Timer.class new file mode 100644 index 0000000000000000000000000000000000000000..999383dc3a9bf57145eb353dd8175fe0d3d5823d GIT binary patch literal 1346 zcmZ`&L2nyX5dPNodb{hb*G*ixV0@W(s5mZDVk2FE9yHknXa1(Mgrm2MR3OnLeFUq14byh zY8@e1X>@q$<&=!9UAyPIwR_#oX4`GB+${yxzwWK=p?5^ql8M*qhrMpt5H?d(EcD;mL4I*0^9I4NKNoFk#E=6TaiOWva@B0MB9YRdyy89-?Os|r-f zM5>du&~Y2LozAdHqt@;PuBdo&3?u4bNxm(LL4hJtNQG&|Br{Qwyb+Q$LhdI*Zig6? zYDP%4BIK?jq)-^;{VY!(vTBTY(f$snZL^QOo$6!4w)&W~XZo13zsI>g<_PmyTx|8R z_#`S)oEQ(cq`Y5L#wM&})?o&+WHF_rxvRG}nvh9NG zH>a}IY5l#}YoJs^3u8 zZ>i}s>iIKP@H^hXpD0DzZ$~?NKGZ&eKbU7x^Avs~m&LBK_z4@dR8}ltlldB%_J-Ch md9O37vx5$9M4PT~f(+Cbs3sDL%-@)c$MtpAe3Skdw*CQ0jQl77 literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/UnexpectedThrowable.class b/bin/main/net/minecraft/src/UnexpectedThrowable.class new file mode 100644 index 0000000000000000000000000000000000000000..a2d2a329e186207c7e52489c798bb127a0085283 GIT binary patch literal 526 zcma)3!A=4(5Pe-%aA6feQPhhbjDW_C#+$~A(G$@FNaC@S3MJ4br69lMftYyk1NVHmydbWSY=3*%8dYIG{h2;4&_6nu*{IHQipe=ep8yd z>&JPG1@ASuQ7)g8zU`Xl= z&-qySA7B3EZvdw7K?FS-QVq))TdOv#l5O5}##(l1Y{@E379t30=(}a!Hpl8_qcV1B z<(5@)G{kOmY1#|b79aW+)P=TFt&hph49^?Z9fuZpM}t<>5WX|lY}#c$6!>u0dkAlO zLUguNuQsYqPD3D_S<(=kYnH7Dp3|_eWBg^?Ht&ju82YeJ$9^PeY*s1uLc@TL5W*rE zIwFW_*t@`(UTd$dSoRfjrEY0RE;LJKeaW<|^1QWKvMtlGT)^{IecdAL!|6hykXhJ) znVA^f92N{mh(TQy*tbo4++9w&%M{5FfK{_z-K2lL+f^JdARWPwhD0Yy2~bA{!!*!R zI;5m1?oQ}9h(S>r)iDM-3YcYb+Mjka(3PT@%yqeUO2;G!AyBcHsQz>@^Yl%zd|JmD z3~JcZvYff*+Iq8LHJlco7ag-yyJ)T}qGAYOU-%yDM*a!U=X5SHkzUdfccqtg=!g-# zvs$Hz13NP45;Wm1lkPIDA=+xMIJPNeHkIB{dH2Lz(D7Y~r?=6x*F5GArgzhM4VNRh zq+#&sd|x!3RktW~ypA_C#9JG-bEDjBtBMMy3z_rbm!3cUuYV8Dom3fawpy3%X1Ogf z^fEEFm>`>a-D*^v z)h(Ya9$r1b0w^{d%U-j}RhIhIsE_&YQg`?O#WsK^rv z?*I{{aEQ)2F=YK1vVII%FNPPDzIKSTaoBsP{z|+N9!w8EM0RLD&VKkCgc9?aE$M<0 za>Z~W8yX(EkJ;hOedLCX(0$}37cQbv4owhC5QoX$5h6Q|0di(=b|1qKhuARR1S1&5 z3BIdOD#XLQO~-fzb6iC#kZZ}xG`>$sif0<Ne=*PGEq?Sn=&G8EpTLmoLruA>zVky(4~m;Ix4>tZsM#(!MGww#Ce2NUP|v$x zU@~xp)bsxj{rETJgy-kPi$pB&^1?x_;zR@&~htqp1c*&j|*(qR~4!$)};K5-D-v@ zFWeX##~nufY%6yd9cBM6(}EP!bsyg^J$&Q;C%*02F46L3Vtbv~-sr+M?qeJGu}O1F z1@v?5Zei=|!uF=e-N(eXhw+UJDdMt`j7wXu5u%Wh>FAp_=JD;blw_=6<;RfUEypl zF?D55Vv9e(D>#eQE>0UhrwuRFMD3+IPE9w}1I&e6hR1M`cH}*LmL+_XQcO+kJ_NqR z7>D&2m<{CJ;ZgZId`KgGg^ygt2!AtttdWlf`Dik}b@H)6K3a^!`Ih)t{W^R^jp$eT z$XAT$H^awW^07%i-XS0Fl8^Vu$NS{t-nYaDe^h#%_$J?c(n}LhP+Lx}J%qf=W*@*# j-hO~PlyhBjUgUSU{{Zi8f8GA9t1&11#(bZqdvNc6J(<{E literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/World.class b/bin/main/net/minecraft/src/World.class new file mode 100644 index 0000000000000000000000000000000000000000..4c37ccff9dd2935e1d3aa7a8f20afbc5e20da3a9 GIT binary patch literal 39478 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 literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/WorldGenFlowers.class b/bin/main/net/minecraft/src/WorldGenFlowers.class new file mode 100644 index 0000000000000000000000000000000000000000..1ff53f73ecc7dc59e9896910d1b446e26714ed0e GIT binary patch literal 1207 zcmZ`(OHUI~6#i~I%*!cMWI({mOQkJHs4mdKMA=4??y}!Vn z?p(QXqfty;7}x$Kje73P1d~b^bI;?RbIH0@@(3BuBjCT*S12gmk2JOH#z3{f{Tl+?xff)?qy5l+F27{0{ z3N;dU{JO0ojWZe~XbkCmp{9VLS3?g(hQ2Cwa=+Esv4e-^j%zdYSAENLYi8hZJ8=r( zGpETgRqftY(tL%A9-6^CgS=;Zyj41LKHn{|Qhjb7nx$6gxTOcCSN9tg!!QbuR19HQ z!g+>lXMlzgj50``{US8HFve=A$YD&vMTVg+J!%-o1cSO~|Km)|^J<2IDO{Ft>D1(i zU=3F=P02f)?Pk?!Qr(fqr=W_WD-sF}x&Ir9c4MYgnxs%sqZ!x~WrC2P-q8y8rSggikjUht~ zTl@FSgJe$BEx#35_NK!pX`o}S=Xga-(DbG0e_%-Q5hN`|x&)b4g{)1oQzX^m7y3p& zBl97O>7%tb%9J5cqyiOL@(sq(IE#L=C=ci8RQeq-06jjF6{wO*d+l^te1}GEHY*=v z@M$dSWl0xirO3h8dRf+cIwF)AUD9P;ImU%ID1O9b@e?u&-;qD@7hj`4G5Fpw=C)so zOc%4a-u`(dyr<%6a0rtG6v$AEy)@!|m?jWw)cg}_zd`;Z0>okM#tomqY7?vlf^!?Gxe$rk)f}7nc=9e?Jz_tUj40#t*sSx23BN{ zZkU$o-eeHd#moYQ+qQ0mA>f<>8481t&Mbt$5LFO_#L!xzR%UDKONR4MU8)!i?Il}N zD+{V)@^u{)-Bq*7Fj#8dR=xWIUAmz<;|wh;hQ)g&&hd1!gN4##bwkb7T(gp!Q!U+I zFBFT#%%d=pNXa?|@A1;Q_jb0f&4G(+83i{B`5UjekMg653 zwCB|oIMtwnOI#~?$&>mH?`>GYWu!^1YW?~}(_NjlU32*v74kOd5sisGyX!JdaJ~Oi zz?X2+4^w`)=7+o=rpf+!SJl?;t550{h3D;>qZuZ%Y?mlG! z%4M|BH$oX!By_#0~M!l0Q5UDbRFk*xy{A#qJomO-X9mGnLh)%?P zPNEAEKUg%|9T&xNJh+R*CtTdYz&iwmEf3Wjp&s@INnUYwU&u?@Zc#tAu?gv=#0V}o zggGec$Cn>fdvN&-Eac@A^lyn+K1qB898;bGIGGQ`C214MxGZj>&40zn4kEi4S`@cP zEdg9t3tjY$kYZ8NvlSzx>?kREk2Eb2`hb+wXlEHIJg1R=K?C^;J$OxSzQ+JQUiFoe;QY?{39H4{6VzCtQPS9Qelm7r# CD+kd4 literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/WorldGenMinable.class b/bin/main/net/minecraft/src/WorldGenMinable.class new file mode 100644 index 0000000000000000000000000000000000000000..a07cb9a09215393c0e851cd479bc03f4be165906 GIT binary patch literal 2188 zcmZ`(O>c_$j3mvz(ah!47FmCh@s6&0uy=jM!HXrAG&U@bTex2u> zpPzpJ1Asl4RnQ<1Hw$*^YRN3*tHz9-s#Wu;^H#MoeWGBFl}ux*Qc&O(h;3|Es2a9a z6=r0&s;bFP;* z#PHXR>TXvI2y7}AOj!?I@9y1b|Ip~HaotGG*`-SAjA2e&SBG+}WeIu|vgc*eRgMa5%u`orYyOWVdj!T-Ooo|8(7dn*N*5+D5)SW?ZY^gTPs9u9`1oOY){fUbxjeB}EbE z?eg%H8~EjAa}ckZBiT^M+ZW*M9j;5eVE;F0>fiDZE&ZJj(fXBR7~&X$m!qF!fMXL{ zpdw67%-x0vG|uP%QMwlnYA0$S*0I?Q<9Wh+-Uo<3cPyhL6r0`e+uFKma-rS#E#mzT z(7G@i>M^HoWt4T)Gq*B+t#Q@7_gV9%_4KrF*1S7>%h*2IIJuY!K09gi>XzP7 z4(2nR8!dF{5xp~ly;kw|zSt7J)1!JPkNGTqM*Tys|46%E(Jr3waU?Z`kA6tCRcaDNF)FD^)Q&MyQ=-!(DVa|+ zPDGLuy-CyvzxW+*;S90#eHQ0P-a+vt-X`*6T-?C~Q4@;d2F?>T!xlAMAPVB9nBko| z$4cjgfs6DJ#$9m;?@|}RebJBih@yBTqIjQ3$7AMuiKv4$|BcH;ovi#9OcHg8Hv9y` z$s~p)OcBLJ3Jb^+$&OsYH0@+xPN6`QWOw#shNy=<1}gBcu)!?~gn|PKwg@2_JkEy= lS;0rp)>~S$_zx{Y{{O|bhJVn;-wJEnz#V&hg)tjY`X4Si!)yQm literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/WorldGenTrees.class b/bin/main/net/minecraft/src/WorldGenTrees.class new file mode 100644 index 0000000000000000000000000000000000000000..cd9daf81289afa0555652e226f24e35cdb6b5297 GIT binary patch literal 2334 zcmZ`)O>9(E6#nkan|brzyiQByQhqv=f~745rnT@W7K^k%9W01YLCdDEea|v7ovG6) z>Pix-#>9m&Zh%AzG?|6n(2#005#!337&a{2;=;tl7{gAYjNg54Fgk794Dh zIK_NHAbKE^%M|+r!fowm1hj#?>zN3{un<91pmvBcPRvY>d4*wTEb9r>59P<5>=~z! zQTvKeE1u6x3p5X{9?_@OD-fITawDJSRVCwtTBbo+>j zHF!!#y+B>HfrYh@0(#DSyO_=unM+%`J#C@^8+5D}Xjp}sg^k!GU`}|&{%n5yLfU0j z+Elc(fh3xAY+muOZ){-;nrWZ)oQoa{(6mBAzTuE>&}(2DT68=ukX%mZKZX{zqm{{w z`HT(=2%k*5g&pV+h)fimX@=XpTDU=_XS7`^+HQfyRigQJD$Py{U3i8?b2A0jZo_Jh z=`)EIRn@%~Z0zHGPFD&?x~gpcE$v6Ij%NiD{w-yl+(hcQQ#^0sfV!iwGd8XK^jSEF z=Xsa;Dd)`@Z(wH38_MS|%uES{&W$LGehULWt+(=d-ivn8DRiyO&hLJz>#VGd>hD#FDBn-Z{)&i)eHA_XD_#35eb<~WI^!3P zJ5!ZsVxG>=6vn-y8UG>u@4@a?l|nOE9X@j)M8p@!ug+bHtKb^h@daYHeYMH2Qd5XH zzg7iXsNs&KM=ifRto=lbI*K0dj4q*0AGM>JtxHY2As$FgMn|>LHMn$3+?SdiE8!!} zwq#6dbBKlmq>a)j;@&_sVp~aRxwcWlu#6~Vme3<(*RV^*=;S6^I;6qV<`UM~aT&jY z1{q&O;~i|h4l8WyCFND0HH9>lgV9@vN&Ra1?yMoCLEldV^RqFbSopE$%Q+e$5?<&? zQsl~ravzhiMYP?)&g)1hn7V`RIblhSL}b*}+?yyru@AIM*mG8DQJ3l1RtcX<8WS@g zO&XCbvq?(Rwc{mB%6QVXYeR@QvUe9bv*l(iL9x07t@u3(2WuApTR z&vnQ+9VbY!`zqE}c0mmkf!Tym&ZIdyUtXAv3r6zs$Fr8G5SlNaXX#7Wr|7dLLB56x zkdQ{;Y7XoE)h^-?bN8M5KB70u-)jqD{<9OpP@S^GQ2=&>ffzf*Kok38J3FMEozcmm z+Rf>C2oi^}9>=i(XE_yJY{C>8afuJ{GEcnEVfP_**J!iA^Iy}$w`j$8^m31b=^;mx z#%WWBl-P()v6U~k1Kpwvdqpp7(a&*FM2~on`%kF*jJBVnPu#{qahG%89uA40x&IAE z#P1jsf8a&Gv+t7^yO+FGXDf6VM^v{H9mOD@ib5}t37-y8nn?4}F`@_z@hd&G^0ipv z7Ys2!9oxi@I6+wq$Kc^5B7>YisGz&d%$H%9`jga}%;wzyu_o*AGG%emhIazQ3S7o1 zoMwa?Jm9HTqAoaig{VgKU<7A~60E@hYun1oze9GVgJj#-9_rL!m^Oby=pZoU4IZ6^!m4AymJ$%zLap6%Z-2BdRq4&A(AA v#9#cqdW7cCpRmfjwQ9@2M{Sv{RILh6@nWNC(r6+E6K_jdaY<>DW#NB$GV$OK@JAVE z7cQC@4}I^=wDbCAKEK{S0G#2lgdE{0mByc`RK{978-K22|1s0a_(rBu3zO**Ji_)= zEQOzlbmHHQrZP5!;)P0;xg_LU?IFRt%Eq#aJSsI5P$bkNHoaZUMp8eBQ6dSAD2qih z6k6GO-So_hniEc<|8n#R<;f}(d-Ym>4fG?IbzxNE--~pd&H7;&wx4)>F3o@w@OZHm z1c8ga6uL*CfHz=yx}tMJb&xG|EU%UQy!rDaUHb>`7`!`Q5{zVbW-M{#GZS;6^M>*( ziyW$q_BA)L!B|`C8a83iyM;P;`OMg1v?d`xmg%=a#Tj(qxdCV3R0B`Qeou-^M+{#uPa&S2p^t5!Pnlf>`&9vti_+%azSD=bdKYZ?#Wzb!u({NPxB>Vouw-CKg$cs^@;i)svGS?z(8T|Hd`zzu$ literal 0 HcmV?d00001 diff --git a/bin/main/net/minecraft/src/WorldRenderer.class b/bin/main/net/minecraft/src/WorldRenderer.class new file mode 100644 index 0000000000000000000000000000000000000000..b6ace8513038623b0fc6074aee2ea64df86eda82 GIT binary patch literal 6980 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 Av;Y7A literal 0 HcmV?d00001 diff --git a/bin/main/org/lwjgl/input/Keyboard.class b/bin/main/org/lwjgl/input/Keyboard.class new file mode 100644 index 0000000000000000000000000000000000000000..afffd62cb918170408e71d0895fa4c6958c8e8a6 GIT binary patch literal 899 zcmZ{hQBM;=5Xb*p4z83%S_G*TR4i(X$~`EF3C5R3P4%e6nws=&uWXL1$6j-6(fXNu z&?kuxegHp|ads`?Xye1~&d$tlcILmo|NQ&~;0ZhzIfinQhF<)sAI4s!21D(=k)t3H z>7fgUq1YFv!i$9py|+PM_B6xXvq(kyIm1k?-eGVW$)PM@2J;-Vm}6M-BPCnI<3OhG zMG#AdWk2bOxFgcY+{aEwA4Mk&75{(l?=ciYsi~coIHoGAwPxMFXs4~yNQHX^lyKF> zGDB5K?H$OGPSimxMqhTH?s~~UDjLlH@cNa%FCxWp1xpO>M>#TWGq5I2pyX$oi^l1i zYS%d`SYyaj(n-sPiqyx8Q>jcdZ7np-Tfzp%4U@N!3EC=66W!#viCYY%^JwEpq@t%~ zYI7PU=Pt)RR2g_ShvbsV==4qwr1EzV9^^SqIIqsuIod>kKq)|H=rak#GGD{WwT}}3 literal 0 HcmV?d00001 diff --git a/bin/main/org/lwjgl/input/Mouse.class b/bin/main/org/lwjgl/input/Mouse.class new file mode 100644 index 0000000000000000000000000000000000000000..7764a45fd456051ae63e49fa350b8d71955542f4 GIT binary patch literal 1365 zcma))-%`^+6vn?Tg+g6vp-`ZJfFQPr1O*fYQ7OvQX)7~zD)cTbJ2gy6m~@NaGkN2c z9WQ(UAIkA;+F%-U;YIdO&i6aJ=iBq^_m7_dHgOO^h+*8a>ssUUS-qhd=0!_t1*_E* z5ri4yXZoeCHFUGCy|12$nq(N*HB3Y9G4!P~WrlFpIu%j$VThw20}QdeVTxkwyejMu zdbJ@KM)OupZ52+87A_9hwm`-*M&Sdc8+c z(67I2ZEtDTg)r&v`H$}o^99{7ImQrUh@Pu54m(+#Y$qzu1jl4=_=KvU!;V#Snqx*q zhg`TDq$$=EvZzbrQe<0p)3S+5S2ATqEpXh$97!CiB;=v3SF7TbfmP|NFpLn~!H%q^ zAq~r<3e&k=^C==v8iHj;FgEFaDL0XTxr`&PCK6 zUU9ru+C)#vPMjXCWVP&?cx$M}i5AoguBjfx0;ptaT7c7vI*rB%?KGMh&HXFiG5C!Z zAw+3ZVfu+%G%7%?Id0QDgki+!kAjz+2oP=~{+0G#cFe>U5K}=!%1^{S z#O!|&V;L=13;&~9U X<0n=<#9k2b(od}45Dfd|LkQVFvtiQC literal 0 HcmV?d00001 diff --git a/bin/main/org/lwjgl/opengl/Display.class b/bin/main/org/lwjgl/opengl/Display.class new file mode 100644 index 0000000000000000000000000000000000000000..86aed273547824477a3971b3e9ac74980ea88d5b GIT binary patch literal 499 zcmZ`#%Sr<=6g_FDPCHKR!&j{<(M5IPY%BWELc z<8w81F8U+k#SAn1Qpxy$A>Z2UF&Ia|Kv>A5WTSu?hKehdI8W~SBD~^#Uoh0&z~g?8 zhf?E=G~!zsF*M!({P!4&GCK5PIiWkq?8ZV3^Cs#H>q^8V>Um6rX6w!J?|SiNq{bJDY8k36(I13Nc!|k?sJ-3#yNV|7y)t gn@bgoKXxs`dXZx3*Ucg&=zN~Mw4+80E9uny1i24fqyPW_ literal 0 HcmV?d00001 diff --git a/bin/main/org/lwjgl/opengl/GL11$DisplayList.class b/bin/main/org/lwjgl/opengl/GL11$DisplayList.class new file mode 100644 index 0000000000000000000000000000000000000000..b7dde2f35faef310386df73dbbae2bc6d527dd94 GIT binary patch literal 1976 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
    {c3AB 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�-sTJ zKG3Biz+KHWKyo^-MK0hc6+}8hl#2!=M_b51`a=OO3j6raL3>)jMFZ2xtvIH;ACtrK zhjJkvC!BcN_d=?{&aKe$1P~O>XN7;jLZJeORNsEL>9S@S2uK~WQ$xCW)+a0r_K!Q0 z%h+MkBUjRnTB`?vuR#|toX=Pqhlda7WsjJBr>w;R^oEMH_A3cQ4mFo|Z80*m}}2hg80%=k#j;BlnUNaz)+ z7y=z{!98e@E`Lt{;hD*8Ej|xG$`CQTdEOJt6tcoPTaPv8#gVrXQi0Yirbn4xw6rP2 ztGKeiEHa?FrV(Crw);enB%b2cZarB320X!BNR6OrqGxhAAw5`-Ic9VJUGdQwrDv7K zvLpyZ^3+AA01X8^8EzEdaF|eEja8?--=P{4=$LR|qM?I~3ZB=wDD|hd#<0M?yrN8~ zCt>)(q=#Bif+`KL^8~Yia5PN#YUSjM&^c5cj2ise^<<2oW8%*+Ck0DH4@Y4HNC%L36kot z?iE3ItAl?-OEJzHVv#{`OM(A?MaZ4is95tHb70YdhtTrnz}81JaM$R6jVWcI9ZE@VpWI_Tmr`I1?Efu+c2e@w$mDNK5TZ8zSf! zufL$f;36C*eR+p>Uj1Y#Ag=(y(LIy8*?2mfb-@nXgj5-=6p)W9&qKYV-dr5Xlgo+% z0fj7o_<#~Gl6XOJqjPW=2aJFPF*GWn>O345KIroA*IY#FZ90x!$uNXTtL2<1sd6EX zL_UUiG0pl5sE2VIs@>4#n)6B`33l=9!{NR`Qug!MqK_sSpg?Lz88ypqYw4iWy;_7w zs)y--SP#H8LJy-(>OEvB#4WwE#ULj&ud)a?8G0ShOXC5Pa#ScYC7zD?r)m;ElMH>K zoSqCa&H~?zGUslfV?wPK(QcRxhc{LNGZh>(bb7bPZZjRz0}9IUQjXYUZutZ_)O?2) ze+4EIiKOevdfsnbd<+8ID6nZ%ysb$@7_Fn2bnkcSIA}0+92gxaTT`VOVa#xjzz@p3 z3}8y<`Wx5-DyU$*65(V`W7*H48`%RlceKQ3MeQ_ZF zl_NAb1X2-bgHIo(ht6h3V2KVhtTfh=ai3CKE~`OCHAKFC`QkiBm}R(dlF)OOGgi9W zPuto`fZ_*4G-opItT@f7vpcY$v@b>je}avChBl5v#F|_v4&tzV`Aj~W1s(jyVw`7B zo8nAu$lKuMT+w{GBnNg~%q>LmJ1^1Uojd=b=)d6;hg_6f2X10N-06o-hneMccv!td zAp19ZPgARxy(mlBDf)u7{?oZ z*mpGs_JAe5MQzEWQ5@$2mlo3v@MX)^dZvRN>42r9!l`}}r@6DKn+0hMy)7%;P#JLB zpuK8HTjhUXaFqX{Iq=z2#`M-BI9WYun(CxPZ34eG;ReX+dWz{U*h-I?S0LxWxa074SI!zAD)l~UFO^`UX8rZO$lAg$#EeuHX%b23L?%!%dw|ay0#Bs<+ Z`rM|=fcJuYpu{|h+E7Rw7(h2L{tpYkg-QSb diff --git a/jars/deobfuscated.jar b/jars/deobfuscated.jar deleted file mode 100644 index 786f946a9901035d3c688f60dba4e16e4a37aa9b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 833329 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ⅇ28(eftuc(@29F(C4uVGOfFZGaC@ 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.j8g`d@aBxwEJrwc|-uuXlK$o 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 S+PExogbGF7I}MaH^NUZgrGyTTPLV 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 ZsI8Vb0%r;f219kGYDoG4?gt+DYk$2*XNPihF9 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 z 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 3.0D) { - var16 = 3.0D; - } - - var13 = var16; - } - - var15 = var5.addVector((double)var10 * var13, (double)var9 * var13, (double)var12 * var13); - this.pointedEntity = null; - List var18 = this.mc.theWorld.getEntitiesWithinAABBExcludingEntity(var2, var2.boundingBox.addCoord((double)var10 * var13, (double)var9 * var13, (double)var12 * var13)); - double var19 = 0.0D; - - for(int var21 = 0; var21 < var18.size(); ++var21) { - Entity var22 = (Entity)var18.get(var21); - if(var22.canBeCollidedWith()) { - float var23 = 0.1F; - AxisAlignedBB var24 = var22.boundingBox.expand((double)var23, (double)var23, (double)var23); - MovingObjectPosition var25 = var24.calculateIntercept(var5, var15); - if(var25 != null) { - double var26 = var5.distanceTo(var25.hitVec); - if(var26 < var19 || var19 == 0.0D) { - this.pointedEntity = var22; - var19 = var26; - } - } - } - } - - if(this.pointedEntity != null && !(this.mc.playerController instanceof PlayerControllerCreative)) { - this.mc.objectMouseOver = new MovingObjectPosition(this.pointedEntity); - } - - } - - private float getFOVModifier(float var1) { - EntityPlayerSP var2 = this.mc.thePlayer; - float var3 = 70.0F; - if(var2.isInsideOfMaterial(Material.water)) { - var3 = 60.0F; - } - - if(var2.health <= 0) { - float var4 = (float)var2.deathTime + var1; - var3 /= (1.0F - 500.0F / (var4 + 500.0F)) * 2.0F + 1.0F; - } - - return var3; - } - - private void hurtCameraEffect(float var1) { - EntityPlayerSP var2 = this.mc.thePlayer; - float var3 = (float)var2.hurtTime - var1; - float var4; - if(var2.health <= 0) { - var4 = (float)var2.deathTime + var1; - GL11.glRotatef(40.0F - 8000.0F / (var4 + 200.0F), 0.0F, 0.0F, 1.0F); - } - - if(var3 >= 0.0F) { - var3 /= (float)var2.maxHurtTime; - var3 = MathHelper.sin(var3 * var3 * var3 * var3 * (float)Math.PI); - var4 = var2.attackedAtYaw; - GL11.glRotatef(-var4, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(-var3 * 14.0F, 0.0F, 0.0F, 1.0F); - GL11.glRotatef(var4, 0.0F, 1.0F, 0.0F); - } - } - - private void setupViewBobbing(float var1) { - if(!this.mc.gameSettings.thirdPersonView) { - EntityPlayerSP var2 = this.mc.thePlayer; - float var3 = var2.distanceWalkedModified - var2.prevDistanceWalkedModified; - float var4 = var2.distanceWalkedModified + var3 * var1; - float var5 = var2.prevCameraYaw + (var2.cameraYaw - var2.prevCameraYaw) * var1; - float var6 = var2.prevCameraPitch + (var2.cameraPitch - var2.prevCameraPitch) * var1; - GL11.glTranslatef(MathHelper.sin(var4 * (float)Math.PI) * var5 * 0.5F, -Math.abs(MathHelper.cos(var4 * (float)Math.PI) * var5), 0.0F); - GL11.glRotatef(MathHelper.sin(var4 * (float)Math.PI) * var5 * 3.0F, 0.0F, 0.0F, 1.0F); - GL11.glRotatef(Math.abs(MathHelper.cos(var4 * (float)Math.PI + 0.2F) * var5) * 5.0F, 1.0F, 0.0F, 0.0F); - GL11.glRotatef(var6, 1.0F, 0.0F, 0.0F); - } - } - - private void orientCamera(float var1) { - EntityPlayerSP var2 = this.mc.thePlayer; - double var3 = var2.prevPosX + (var2.posX - var2.prevPosX) * (double)var1; - double var5 = var2.prevPosY + (var2.posY - var2.prevPosY) * (double)var1; - double var7 = var2.prevPosZ + (var2.posZ - var2.prevPosZ) * (double)var1; - if(this.mc.gameSettings.thirdPersonView) { - double var9 = 4.0D; - double var11 = (double)(-MathHelper.sin(var2.rotationYaw / 180.0F * (float)Math.PI) * MathHelper.cos(var2.rotationPitch / 180.0F * (float)Math.PI)) * var9; - double var13 = (double)(MathHelper.cos(var2.rotationYaw / 180.0F * (float)Math.PI) * MathHelper.cos(var2.rotationPitch / 180.0F * (float)Math.PI)) * var9; - double var15 = (double)(-MathHelper.sin(var2.rotationPitch / 180.0F * (float)Math.PI)) * var9; - - for(int var17 = 0; var17 < 8; ++var17) { - float var18 = (float)((var17 & 1) * 2 - 1); - float var19 = (float)((var17 >> 1 & 1) * 2 - 1); - float var20 = (float)((var17 >> 2 & 1) * 2 - 1); - var18 *= 0.1F; - var19 *= 0.1F; - var20 *= 0.1F; - MovingObjectPosition var21 = this.mc.theWorld.rayTraceBlocks(Vec3D.createVector(var3 + (double)var18, var5 + (double)var19, var7 + (double)var20), Vec3D.createVector(var3 - var11 + (double)var18 + (double)var20, var5 - var15 + (double)var19, var7 - var13 + (double)var20)); - if(var21 != null) { - double var22 = var21.hitVec.distanceTo(Vec3D.createVector(var3, var5, var7)); - if(var22 < var9) { - var9 = var22; - } - } - } - - GL11.glTranslatef(0.0F, 0.0F, (float)(-var9)); - } else { - GL11.glTranslatef(0.0F, 0.0F, -0.1F); - } - - GL11.glRotatef(var2.prevRotationPitch + (var2.rotationPitch - var2.prevRotationPitch) * var1, 1.0F, 0.0F, 0.0F); - GL11.glRotatef(var2.prevRotationYaw + (var2.rotationYaw - var2.prevRotationYaw) * var1 + 180.0F, 0.0F, 1.0F, 0.0F); - } - - private void setupCameraTransform(float var1, int var2) { - this.farPlaneDistance = (float)(256 >> this.mc.gameSettings.renderDistance); - GL11.glMatrixMode(GL11.GL_PROJECTION); - GL11.glLoadIdentity(); - float var3 = 0.07F; - if(this.mc.gameSettings.anaglyph) { - GL11.glTranslatef((float)(-(var2 * 2 - 1)) * var3, 0.0F, 0.0F); - } - - GLU.gluPerspective(this.getFOVModifier(var1), (float)this.mc.displayWidth / (float)this.mc.displayHeight, 0.05F, this.farPlaneDistance); - GL11.glMatrixMode(GL11.GL_MODELVIEW); - GL11.glLoadIdentity(); - if(this.mc.gameSettings.anaglyph) { - GL11.glTranslatef((float)(var2 * 2 - 1) * 0.1F, 0.0F, 0.0F); - } - - this.hurtCameraEffect(var1); - if(this.mc.gameSettings.viewBobbing) { - this.setupViewBobbing(var1); - } - - this.orientCamera(var1); - } - - private void renderHand(float var1, int var2) { - GL11.glLoadIdentity(); - if(this.mc.gameSettings.anaglyph) { - GL11.glTranslatef((float)(var2 * 2 - 1) * 0.1F, 0.0F, 0.0F); - } - - GL11.glPushMatrix(); - this.hurtCameraEffect(var1); - if(this.mc.gameSettings.viewBobbing) { - this.setupViewBobbing(var1); - } - - if(!this.mc.gameSettings.thirdPersonView) { - this.itemRenderer.renderItemInFirstPerson(var1); - } - - GL11.glPopMatrix(); - if(!this.mc.gameSettings.thirdPersonView) { - this.itemRenderer.renderOverlays(var1); - this.hurtCameraEffect(var1); - } - - if(this.mc.gameSettings.viewBobbing) { - this.setupViewBobbing(var1); - } - - } - - public void updateCameraAndRender(float var1) { - if(this.isDisplayActive && !Display.isActive()) { - this.mc.displayInGameMenu(); - } - - this.isDisplayActive = Display.isActive(); - int var3; - int var9; - int var10; - if(this.mc.inGameHasFocus) { - int var2 = Mouse.getDX() * 0; - var3 = Mouse.getDY() * 0; - this.mc.mouseHelper.mouseXYChange(); - byte var4 = 1; - if(this.mc.gameSettings.invertMouse) { - var4 = -1; - } - - boolean var5 = false; - boolean var6 = false; - var9 = var2 + this.mc.mouseHelper.deltaX; - var10 = var3 - this.mc.mouseHelper.deltaY; - if(var2 != 0 || this.mouseDX != 0) { - System.out.println("xxo: " + var2 + ", " + this.mouseDX + ": " + this.mouseDX + ", xo: " + var9); - } - - if(this.mouseDX != 0) { - this.mouseDX = 0; - } - - if(this.mouseDY != 0) { - this.mouseDY = 0; - } - - if(var2 != 0) { - this.mouseDX = var2; - } - - if(var3 != 0) { - this.mouseDY = var3; - } - - this.mc.thePlayer.setAngles((float)var9, (float)(var10 * var4)); - } - - if(!this.mc.skipRenderWorld) { - ScaledResolution var7 = new ScaledResolution(this.mc.displayWidth, this.mc.displayHeight); - var3 = var7.getScaledWidth(); - int var8 = var7.getScaledHeight(); - var9 = Mouse.getX() * var3 / this.mc.displayWidth; - var10 = var8 - Mouse.getY() * var8 / this.mc.displayHeight - 1; - if(this.mc.theWorld != null) { - this.renderWorld(var1); - this.mc.ingameGUI.renderGameOverlay(var1, this.mc.currentScreen != null, var9, var10); - } else { - GL11.glViewport(0, 0, this.mc.displayWidth, this.mc.displayHeight); - GL11.glClearColor(0.0F, 0.0F, 0.0F, 0.0F); - GL11.glClear(GL11.GL_DEPTH_BUFFER_BIT | GL11.GL_COLOR_BUFFER_BIT); - GL11.glMatrixMode(GL11.GL_PROJECTION); - GL11.glLoadIdentity(); - GL11.glMatrixMode(GL11.GL_MODELVIEW); - GL11.glLoadIdentity(); - this.setupOverlayRendering(); - } - - if(this.mc.currentScreen != null) { - GL11.glClear(GL11.GL_DEPTH_BUFFER_BIT); - this.mc.currentScreen.drawScreen(var9, var10, var1); - } - - } - } - - public void renderWorld(float var1) { - this.getMouseOver(var1); - EntityPlayerSP var2 = this.mc.thePlayer; - RenderGlobal var3 = this.mc.renderGlobal; - EffectRenderer var4 = this.mc.effectRenderer; - double var5 = var2.lastTickPosX + (var2.posX - var2.lastTickPosX) * (double)var1; - double var7 = var2.lastTickPosY + (var2.posY - var2.lastTickPosY) * (double)var1; - double var9 = var2.lastTickPosZ + (var2.posZ - var2.lastTickPosZ) * (double)var1; - - for(int var11 = 0; var11 < 2; ++var11) { - if(this.mc.gameSettings.anaglyph) { - if(var11 == 0) { - GL11.glColorMask(false, true, true, false); - } else { - GL11.glColorMask(true, false, false, false); - } - } - - GL11.glViewport(0, 0, this.mc.displayWidth, this.mc.displayHeight); - this.updateFogColor(var1); - GL11.glClear(GL11.GL_DEPTH_BUFFER_BIT | GL11.GL_COLOR_BUFFER_BIT); - GL11.glEnable(GL11.GL_CULL_FACE); - this.setupCameraTransform(var1, var11); - ClippingHelperImplementation.getInstance(); - if(this.mc.gameSettings.renderDistance < 2) { - this.setupFog(-1); - var3.renderSky(var1); - } - - GL11.glEnable(GL11.GL_FOG); - this.setupFog(1); - Frustrum var12 = new Frustrum(); - var12.setPosition(var5, var7, var9); - this.mc.renderGlobal.clipRenderersByFrustrum(var12, var1); - this.mc.renderGlobal.updateRenderers(var2, false); - this.setupFog(0); - GL11.glEnable(GL11.GL_FOG); - GL11.glBindTexture(GL11.GL_TEXTURE_2D, this.mc.renderEngine.getTexture("/terrain.png")); - RenderHelper.disableStandardItemLighting(); - var3.sortAndRender(var2, 0, (double)var1); - RenderHelper.enableStandardItemLighting(); - var3.renderEntities(this.getPlayerPosition(var1), var12, var1); - var4.renderLitParticles(var2, var1); - RenderHelper.disableStandardItemLighting(); - this.setupFog(0); - var4.renderParticles(var2, var1); - if(this.mc.objectMouseOver != null && var2.isInsideOfMaterial(Material.water)) { - GL11.glDisable(GL11.GL_ALPHA_TEST); - var3.drawBlockBreaking(var2, this.mc.objectMouseOver, 0, var2.inventory.getCurrentItem(), var1); - var3.drawSelectionBox(var2, this.mc.objectMouseOver, 0, var2.inventory.getCurrentItem(), var1); - GL11.glEnable(GL11.GL_ALPHA_TEST); - } - - GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); - this.setupFog(0); - GL11.glEnable(GL11.GL_BLEND); - GL11.glDisable(GL11.GL_CULL_FACE); - GL11.glBindTexture(GL11.GL_TEXTURE_2D, this.mc.renderEngine.getTexture("/terrain.png")); - if(this.mc.gameSettings.fancyGraphics) { - GL11.glColorMask(false, false, false, false); - int var13 = var3.sortAndRender(var2, 1, (double)var1); - GL11.glColorMask(true, true, true, true); - if(this.mc.gameSettings.anaglyph) { - if(var11 == 0) { - GL11.glColorMask(false, true, true, false); - } else { - GL11.glColorMask(true, false, false, false); - } - } - - if(var13 > 0) { - var3.renderAllRenderLists(1, (double)var1); - } - } else { - var3.sortAndRender(var2, 1, (double)var1); - } - - GL11.glDepthMask(true); - GL11.glEnable(GL11.GL_CULL_FACE); - GL11.glDisable(GL11.GL_BLEND); - if(this.mc.objectMouseOver != null && !var2.isInsideOfMaterial(Material.water)) { - GL11.glDisable(GL11.GL_ALPHA_TEST); - var3.drawBlockBreaking(var2, this.mc.objectMouseOver, 0, var2.inventory.getCurrentItem(), var1); - var3.drawSelectionBox(var2, this.mc.objectMouseOver, 0, var2.inventory.getCurrentItem(), var1); - GL11.glEnable(GL11.GL_ALPHA_TEST); - } - - GL11.glDisable(GL11.GL_FOG); - if(this.mc.isRaining) { - this.renderRain(var1); - } - - if(this.pointedEntity != null) { - } - - this.setupFog(0); - GL11.glEnable(GL11.GL_FOG); - var3.renderClouds(var1); - GL11.glDisable(GL11.GL_FOG); - this.setupFog(1); - GL11.glClear(GL11.GL_DEPTH_BUFFER_BIT); - this.renderHand(var1, var11); - if(!this.mc.gameSettings.anaglyph) { - return; - } - } - - GL11.glColorMask(true, true, true, false); - } - - private void addRainParticles() { - EntityPlayerSP var1 = this.mc.thePlayer; - World var2 = this.mc.theWorld; - int var3 = MathHelper.floor_double(var1.posX); - int var4 = MathHelper.floor_double(var1.posY); - int var5 = MathHelper.floor_double(var1.posZ); - byte var6 = 4; - - for(int var7 = 0; var7 < 50; ++var7) { - int var8 = var3 + this.random.nextInt(var6 * 2 + 1) - var6; - int var9 = var5 + this.random.nextInt(var6 * 2 + 1) - var6; - int var10 = var2.getTopSolidOrLiquidBlock(var8, var9); - int var11 = var2.getBlockId(var8, var10 - 1, var9); - if(var10 <= var4 + var6 && var10 >= var4 - var6) { - float var12 = this.random.nextFloat(); - float var13 = this.random.nextFloat(); - if(var11 > 0) { - this.mc.effectRenderer.addEffect(new EntityRainFX(var2, (double)((float)var8 + var12), (double)((float)var10 + 0.1F) - Block.blocksList[var11].minY, (double)((float)var9 + var13))); - } - } - } - - } - - private void renderRain(float var1) { - EntityPlayerSP var2 = this.mc.thePlayer; - World var3 = this.mc.theWorld; - int var4 = MathHelper.floor_double(var2.posX); - int var5 = MathHelper.floor_double(var2.posY); - int var6 = MathHelper.floor_double(var2.posZ); - Tessellator var7 = Tessellator.instance; - GL11.glDisable(GL11.GL_CULL_FACE); - GL11.glNormal3f(0.0F, 1.0F, 0.0F); - GL11.glEnable(GL11.GL_BLEND); - GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); - GL11.glBindTexture(GL11.GL_TEXTURE_2D, this.mc.renderEngine.getTexture("/rain.png")); - byte var8 = 5; - - for(int var9 = var4 - var8; var9 <= var4 + var8; ++var9) { - for(int var10 = var6 - var8; var10 <= var6 + var8; ++var10) { - int var11 = var3.getTopSolidOrLiquidBlock(var9, var10); - int var12 = var5 - var8; - int var13 = var5 + var8; - if(var12 < var11) { - var12 = var11; - } - - if(var13 < var11) { - var13 = var11; - } - - float var14 = 2.0F; - if(var12 != var13) { - float var15 = ((float)((this.rendererUpdateCount + var9 * 3121 + var10 * 418711) % 32) + var1) / 32.0F; - double var16 = (double)((float)var9 + 0.5F) - var2.posX; - double var18 = (double)((float)var10 + 0.5F) - var2.posZ; - float var20 = MathHelper.sqrt_double(var16 * var16 + var18 * var18) / (float)var8; - GL11.glColor4f(1.0F, 1.0F, 1.0F, (1.0F - var20 * var20) * 0.7F); - var7.startDrawingQuads(); - var7.addVertexWithUV((double)(var9 + 0), (double)var12, (double)(var10 + 0), (double)(0.0F * var14), (double)((float)var12 * var14 / 8.0F + var15 * var14)); - var7.addVertexWithUV((double)(var9 + 1), (double)var12, (double)(var10 + 1), (double)(1.0F * var14), (double)((float)var12 * var14 / 8.0F + var15 * var14)); - var7.addVertexWithUV((double)(var9 + 1), (double)var13, (double)(var10 + 1), (double)(1.0F * var14), (double)((float)var13 * var14 / 8.0F + var15 * var14)); - var7.addVertexWithUV((double)(var9 + 0), (double)var13, (double)(var10 + 0), (double)(0.0F * var14), (double)((float)var13 * var14 / 8.0F + var15 * var14)); - var7.addVertexWithUV((double)(var9 + 0), (double)var12, (double)(var10 + 1), (double)(0.0F * var14), (double)((float)var12 * var14 / 8.0F + var15 * var14)); - var7.addVertexWithUV((double)(var9 + 1), (double)var12, (double)(var10 + 0), (double)(1.0F * var14), (double)((float)var12 * var14 / 8.0F + var15 * var14)); - var7.addVertexWithUV((double)(var9 + 1), (double)var13, (double)(var10 + 0), (double)(1.0F * var14), (double)((float)var13 * var14 / 8.0F + var15 * var14)); - var7.addVertexWithUV((double)(var9 + 0), (double)var13, (double)(var10 + 1), (double)(0.0F * var14), (double)((float)var13 * var14 / 8.0F + var15 * var14)); - var7.draw(); - } - } - } - - GL11.glEnable(GL11.GL_CULL_FACE); - GL11.glDisable(GL11.GL_BLEND); - } - - public void setupOverlayRendering() { - ScaledResolution var1 = new ScaledResolution(this.mc.displayWidth, this.mc.displayHeight); - int var2 = var1.getScaledWidth(); - int var3 = var1.getScaledHeight(); - GL11.glClear(GL11.GL_DEPTH_BUFFER_BIT); - GL11.glMatrixMode(GL11.GL_PROJECTION); - GL11.glLoadIdentity(); - GL11.glOrtho(0.0D, (double)var2, (double)var3, 0.0D, 1000.0D, 3000.0D); - GL11.glMatrixMode(GL11.GL_MODELVIEW); - GL11.glLoadIdentity(); - GL11.glTranslatef(0.0F, 0.0F, -2000.0F); - } - - private void updateFogColor(float var1) { - World var2 = this.mc.theWorld; - EntityPlayerSP var3 = this.mc.thePlayer; - float var4 = 1.0F / (float)(4 - this.mc.gameSettings.renderDistance); - var4 = 1.0F - (float)Math.pow((double)var4, 0.25D); - Vec3D var5 = var2.getSkyColor(var1); - float var6 = (float)var5.xCoord; - float var7 = (float)var5.yCoord; - float var8 = (float)var5.zCoord; - Vec3D var9 = var2.getFogColor(var1); - this.fogColorRed = (float)var9.xCoord; - this.fogColorGreen = (float)var9.yCoord; - this.fogColorBlue = (float)var9.zCoord; - this.fogColorRed += (var6 - this.fogColorRed) * var4; - this.fogColorGreen += (var7 - this.fogColorGreen) * var4; - this.fogColorBlue += (var8 - this.fogColorBlue) * var4; - if(var3.isInsideOfMaterial(Material.water)) { - this.fogColorRed = 0.02F; - this.fogColorGreen = 0.02F; - this.fogColorBlue = 0.2F; - } else if(var3.isInsideOfMaterial(Material.lava)) { - this.fogColorRed = 0.6F; - this.fogColorGreen = 0.1F; - this.fogColorBlue = 0.0F; - } - - float var10 = this.prevFogColor + (this.fogColor - this.prevFogColor) * var1; - this.fogColorRed *= var10; - this.fogColorGreen *= var10; - this.fogColorBlue *= var10; - if(this.mc.gameSettings.anaglyph) { - float var11 = (this.fogColorRed * 30.0F + this.fogColorGreen * 59.0F + this.fogColorBlue * 11.0F) / 100.0F; - float var12 = (this.fogColorRed * 30.0F + this.fogColorGreen * 70.0F) / 100.0F; - float var13 = (this.fogColorRed * 30.0F + this.fogColorBlue * 70.0F) / 100.0F; - this.fogColorRed = var11; - this.fogColorGreen = var12; - this.fogColorBlue = var13; - } - - GL11.glClearColor(this.fogColorRed, this.fogColorGreen, this.fogColorBlue, 0.0F); - } - - private void setupFog(int var1) { - EntityPlayerSP var2 = this.mc.thePlayer; - GL11.glFog(GL11.GL_FOG_COLOR, this.setFogColorBuffer(this.fogColorRed, this.fogColorGreen, this.fogColorBlue, 1.0F)); - GL11.glNormal3f(0.0F, -1.0F, 0.0F); - GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); - float var3; - float var4; - float var5; - float var6; - float var7; - float var8; - if(var2.isInsideOfMaterial(Material.water)) { - GL11.glFogi(GL11.GL_FOG_MODE, GL11.GL_EXP); - GL11.glFogf(GL11.GL_FOG_DENSITY, 0.1F); - var3 = 0.4F; - var4 = 0.4F; - var5 = 0.9F; - if(this.mc.gameSettings.anaglyph) { - var6 = (var3 * 30.0F + var4 * 59.0F + var5 * 11.0F) / 100.0F; - var7 = (var3 * 30.0F + var4 * 70.0F) / 100.0F; - var8 = (var3 * 30.0F + var5 * 70.0F) / 100.0F; - } - } else if(var2.isInsideOfMaterial(Material.lava)) { - GL11.glFogi(GL11.GL_FOG_MODE, GL11.GL_EXP); - GL11.glFogf(GL11.GL_FOG_DENSITY, 2.0F); - var3 = 0.4F; - var4 = 0.3F; - var5 = 0.3F; - if(this.mc.gameSettings.anaglyph) { - var6 = (var3 * 30.0F + var4 * 59.0F + var5 * 11.0F) / 100.0F; - var7 = (var3 * 30.0F + var4 * 70.0F) / 100.0F; - var8 = (var3 * 30.0F + var5 * 70.0F) / 100.0F; - } - } else { - GL11.glFogi(GL11.GL_FOG_MODE, GL11.GL_LINEAR); - GL11.glFogf(GL11.GL_FOG_START, this.farPlaneDistance * 0.25F); - GL11.glFogf(GL11.GL_FOG_END, this.farPlaneDistance); - if(var1 < 0) { - GL11.glFogf(GL11.GL_FOG_START, 0.0F); - GL11.glFogf(GL11.GL_FOG_END, this.farPlaneDistance * 0.8F); - } - - if(GLContext.getCapabilities().GL_NV_fog_distance) { - GL11.glFogi(NVFogDistance.GL_FOG_DISTANCE_MODE_NV, NVFogDistance.GL_EYE_RADIAL_NV); - } - } - - GL11.glEnable(GL11.GL_COLOR_MATERIAL); - GL11.glColorMaterial(GL11.GL_FRONT, GL11.GL_AMBIENT); - } - - private FloatBuffer setFogColorBuffer(float var1, float var2, float var3, float var4) { - this.fogColorBuffer.clear(); - this.fogColorBuffer.put(var1).put(var2).put(var3).put(var4); - this.fogColorBuffer.flip(); - return this.fogColorBuffer; - } -} diff --git a/source/net/minecraft/src/GLAllocation.java b/source/net/minecraft/src/GLAllocation.java deleted file mode 100644 index bcde76b..0000000 --- a/source/net/minecraft/src/GLAllocation.java +++ /dev/null @@ -1,62 +0,0 @@ -package net.minecraft.src; - -import java.nio.ByteBuffer; -import java.nio.ByteOrder; -import java.nio.FloatBuffer; -import java.nio.IntBuffer; -import java.util.ArrayList; -import java.util.List; -import org.lwjgl.opengl.GL11; - -public class GLAllocation { - private static List displayLists = new ArrayList(); - private static List textureNames = new ArrayList(); - - public static synchronized int generateDisplayLists(int var0) { - int var1 = GL11.glGenLists(var0); - displayLists.add(Integer.valueOf(var1)); - displayLists.add(Integer.valueOf(var0)); - return var1; - } - - public static synchronized void generateDisplayLists(IntBuffer var0) { - GL11.glGenTextures(var0); - - for(int var1 = var0.position(); var1 < var0.limit(); ++var1) { - textureNames.add(Integer.valueOf(var0.get(var1))); - } - - } - - public static synchronized void deleteTexturesAndDisplayLists() { - for(int var0 = 0; var0 < displayLists.size(); var0 += 2) { - GL11.glDeleteLists(((Integer)displayLists.get(var0)).intValue(), ((Integer)displayLists.get(var0 + 1)).intValue()); - } - - IntBuffer var2 = createIntBuffer(textureNames.size()); - var2.flip(); - GL11.glDeleteTextures(var2); - - for(int var1 = 0; var1 < textureNames.size(); ++var1) { - var2.put(((Integer)textureNames.get(var1)).intValue()); - } - - var2.flip(); - GL11.glDeleteTextures(var2); - displayLists.clear(); - textureNames.clear(); - } - - public static synchronized ByteBuffer createDirectByteBuffer(int var0) { - ByteBuffer var1 = ByteBuffer.allocateDirect(var0).order(ByteOrder.nativeOrder()); - return var1; - } - - public static IntBuffer createIntBuffer(int var0) { - return createDirectByteBuffer(var0 << 2).asIntBuffer(); - } - - public static FloatBuffer createFloatBuffer(int var0) { - return createDirectByteBuffer(var0 << 2).asFloatBuffer(); - } -} diff --git a/source/net/minecraft/src/MouseHelper.java b/source/net/minecraft/src/MouseHelper.java deleted file mode 100644 index d1671d3..0000000 --- a/source/net/minecraft/src/MouseHelper.java +++ /dev/null @@ -1,81 +0,0 @@ -package net.minecraft.src; - -import java.awt.AWTException; -import java.awt.Component; -import java.awt.MouseInfo; -import java.awt.Point; -import java.awt.Robot; -import java.nio.IntBuffer; -import org.lwjgl.LWJGLException; -import org.lwjgl.input.Cursor; -import org.lwjgl.input.Mouse; - -public class MouseHelper { - private Component windowComponent; - private Robot robot; - private int componentWidth; - private int componentHeight; - private Cursor cursor; - public int deltaX; - public int deltaY; - private int mouseInt = 10; - - public MouseHelper(Component var1) { - this.windowComponent = var1; - - try { - this.robot = new Robot(); - } catch (AWTException var6) { - var6.printStackTrace(); - } - - IntBuffer var2 = GLAllocation.createIntBuffer(1); - var2.put(0); - var2.flip(); - IntBuffer var3 = GLAllocation.createIntBuffer(1024); - - try { - this.cursor = new Cursor(32, 32, 16, 16, 1, var3, var2); - } catch (LWJGLException var5) { - var5.printStackTrace(); - } - - } - - public void grabMouseCursor() { - try { - Mouse.setNativeCursor(this.cursor); - } catch (LWJGLException var2) { - var2.printStackTrace(); - } - - this.mouseXYChange(); - this.deltaX = 0; - this.deltaY = 0; - } - - public void ungrabMouseCursor() { - try { - Mouse.setNativeCursor((Cursor)null); - } catch (LWJGLException var2) { - var2.printStackTrace(); - } - - } - - public void mouseXYChange() { - Point var1 = MouseInfo.getPointerInfo().getLocation(); - Point var2 = this.windowComponent.getLocationOnScreen(); - this.robot.mouseMove(this.componentWidth, this.componentHeight); - this.componentWidth = var2.x + this.windowComponent.getWidth() / 2; - this.componentHeight = var2.y + this.windowComponent.getHeight() / 2; - if(this.mouseInt == 0) { - this.deltaX = var1.x - this.componentWidth; - this.deltaY = var1.y - this.componentHeight; - } else { - this.deltaX = this.deltaY = 0; - --this.mouseInt; - } - - } -} diff --git a/source/net/minecraft/src/OpenGlCapsChecker.java b/source/net/minecraft/src/OpenGlCapsChecker.java deleted file mode 100644 index eaf1238..0000000 --- a/source/net/minecraft/src/OpenGlCapsChecker.java +++ /dev/null @@ -1,9 +0,0 @@ -package net.minecraft.src; - -import org.lwjgl.opengl.GLContext; - -public class OpenGlCapsChecker { - public boolean checkARBOcclusion() { - return false & GLContext.getCapabilities().GL_ARB_occlusion_query; - } -} diff --git a/source/net/minecraft/src/PanelCrashReport.java b/source/net/minecraft/src/PanelCrashReport.java deleted file mode 100644 index 59d6613..0000000 --- a/source/net/minecraft/src/PanelCrashReport.java +++ /dev/null @@ -1,85 +0,0 @@ -package net.minecraft.src; - -import java.awt.BorderLayout; -import java.awt.Color; -import java.awt.Font; -import java.awt.Panel; -import java.awt.TextArea; -import java.io.PrintWriter; -import java.io.StringWriter; -import java.text.SimpleDateFormat; -import java.util.Date; -import org.lwjgl.Sys; -import org.lwjgl.opengl.GL11; - -public class PanelCrashReport extends Panel { - public PanelCrashReport(UnexpectedThrowable var1) { - this.setBackground(new Color(3028036)); - this.setLayout(new BorderLayout()); - StringWriter var2 = new StringWriter(); - var1.exception.printStackTrace(new PrintWriter(var2)); - String var3 = var2.toString(); - String var4 = ""; - String var5 = ""; - - try { - var5 = var5 + "Generated " + (new SimpleDateFormat()).format(new Date()) + "\n"; - var5 = var5 + "\n"; - var5 = var5 + "Minecraft: Minecraft Infdev\n"; - var5 = var5 + "OS: " + System.getProperty("os.name") + " (" + System.getProperty("os.arch") + ") version " + System.getProperty("os.version") + "\n"; - var5 = var5 + "Java: " + System.getProperty("java.version") + ", " + System.getProperty("java.vendor") + "\n"; - var5 = var5 + "VM: " + System.getProperty("java.vm.name") + " (" + System.getProperty("java.vm.info") + "), " + System.getProperty("java.vm.vendor") + "\n"; - var5 = var5 + "LWJGL: " + Sys.getVersion() + "\n"; - var4 = GL11.glGetString(GL11.GL_VENDOR); - var5 = var5 + "OpenGL: " + GL11.glGetString(GL11.GL_RENDERER) + " version " + GL11.glGetString(GL11.GL_VERSION) + ", " + GL11.glGetString(GL11.GL_VENDOR) + "\n"; - } catch (Throwable var8) { - var5 = var5 + "[failed to get system properties]\n"; - } - - var5 = var5 + "\n"; - var5 = var5 + var3; - String var6 = ""; - var6 = var6 + "\n"; - var6 = var6 + "\n"; - if(var3.contains("Pixel format not accelerated")) { - var6 = var6 + " Bad video card drivers! \n"; - var6 = var6 + " ----------------------- \n"; - var6 = var6 + "\n"; - var6 = var6 + "Minecraft was unable to start because it failed to find an accelerated OpenGL mode.\n"; - var6 = var6 + "This can usually be fixed by updating the video card drivers.\n"; - if(var4.toLowerCase().contains("nvidia")) { - var6 = var6 + "\n"; - var6 = var6 + "You might be able to find drivers for your video card here:\n"; - var6 = var6 + " http://www.nvidia.com/\n"; - } else if(var4.toLowerCase().contains("ati")) { - var6 = var6 + "\n"; - var6 = var6 + "You might be able to find drivers for your video card here:\n"; - var6 = var6 + " http://www.amd.com/\n"; - } - } else { - var6 = var6 + " Minecraft has crashed! \n"; - var6 = var6 + " ---------------------- \n"; - var6 = var6 + "\n"; - var6 = var6 + "Minecraft has stopped running because it encountered a problem.\n"; - var6 = var6 + "\n"; - var6 = var6 + "If you wish to report this, please copy this entire text and email it to support@mojang.com.\n"; - var6 = var6 + "Please include a description of what you did when the error occured.\n"; - } - - var6 = var6 + "\n"; - var6 = var6 + "\n"; - var6 = var6 + "\n"; - var6 = var6 + "--- BEGIN ERROR REPORT " + Integer.toHexString(var6.hashCode()) + " --------\n"; - var6 = var6 + var5; - var6 = var6 + "--- END ERROR REPORT " + Integer.toHexString(var6.hashCode()) + " ----------\n"; - var6 = var6 + "\n"; - var6 = var6 + "\n"; - TextArea var7 = new TextArea(var6, 0, 0, 1); - var7.setFont(new Font("Monospaced", 0, 12)); - this.add(new CanvasMojangLogo(), "North"); - this.add(new CanvasCrashReport(80), "East"); - this.add(new CanvasCrashReport(80), "West"); - this.add(new CanvasCrashReport(100), "South"); - this.add(var7, "Center"); - } -} diff --git a/source/net/minecraft/src/Tessellator.java b/source/net/minecraft/src/Tessellator.java deleted file mode 100644 index 0ca7e03..0000000 --- a/source/net/minecraft/src/Tessellator.java +++ /dev/null @@ -1,298 +0,0 @@ -package net.minecraft.src; - -import java.nio.ByteBuffer; -import java.nio.FloatBuffer; -import java.nio.IntBuffer; -import org.lwjgl.opengl.ARBVertexBufferObject; -import org.lwjgl.opengl.GL11; -import org.lwjgl.opengl.GL15; -import org.lwjgl.opengl.GLContext; - -public class Tessellator { - private static boolean convertQuadsToTriangles = true; - private static boolean tryVBO = false; - private ByteBuffer byteBuffer; - private IntBuffer intBuffer; - private FloatBuffer floatBuffer; - private int[] rawBuffer; - private int vertexCount = 0; - private double textureU; - private double textureV; - private int color; - private boolean hasColor = false; - private boolean hasTexture = false; - private boolean hasNormals = false; - private int rawBufferIndex = 0; - private int addedVertices = 0; - private boolean isColorDisabled = false; - private int drawMode; - private double xOffset; - private double yOffset; - private double zOffset; - private int normal; - public static final Tessellator instance = new Tessellator(2097152); - private boolean isDrawing = false; - private boolean useVBO = false; - private IntBuffer vertexBuffers; - private int vboIndex = 0; - private int vboCount = 10; - private int bufferSize; - - private Tessellator(int var1) { - this.bufferSize = var1; - this.byteBuffer = GLAllocation.createDirectByteBuffer(var1 * 4); - this.intBuffer = this.byteBuffer.asIntBuffer(); - this.floatBuffer = this.byteBuffer.asFloatBuffer(); - this.rawBuffer = new int[var1]; - this.useVBO = tryVBO && GLContext.getCapabilities().GL_ARB_vertex_buffer_object; - if(this.useVBO) { - this.vertexBuffers = GLAllocation.createIntBuffer(this.vboCount); - ARBVertexBufferObject.glGenBuffersARB(this.vertexBuffers); - } - - } - - public void draw() { - if(!this.isDrawing) { - throw new IllegalStateException("Not tesselating!"); - } else { - this.isDrawing = false; - if(this.vertexCount > 0) { - this.intBuffer.clear(); - this.intBuffer.put(this.rawBuffer, 0, this.rawBufferIndex); - this.byteBuffer.position(0); - this.byteBuffer.limit(this.rawBufferIndex * 4); - if(this.useVBO) { - this.vboIndex = (this.vboIndex + 1) % this.vboCount; - ARBVertexBufferObject.glBindBufferARB(GL15.GL_ARRAY_BUFFER, this.vertexBuffers.get(this.vboIndex)); - ARBVertexBufferObject.glBufferDataARB(GL15.GL_ARRAY_BUFFER, this.byteBuffer, GL15.GL_STREAM_DRAW); - } - - if(this.hasTexture) { - if(this.useVBO) { - GL11.glTexCoordPointer(2, GL11.GL_FLOAT, 32, 12L); - } else { - this.floatBuffer.position(3); - GL11.glTexCoordPointer(2, 32, (FloatBuffer)this.floatBuffer); - } - - GL11.glEnableClientState(GL11.GL_TEXTURE_COORD_ARRAY); - } - - if(this.hasColor) { - if(this.useVBO) { - GL11.glColorPointer(4, GL11.GL_UNSIGNED_BYTE, 32, 20L); - } else { - this.byteBuffer.position(20); - GL11.glColorPointer(4, true, 32, this.byteBuffer); - } - - GL11.glEnableClientState(GL11.GL_COLOR_ARRAY); - } - - if(this.hasNormals) { - if(this.useVBO) { - GL11.glNormalPointer(GL11.GL_BYTE, 32, 24L); - } else { - this.byteBuffer.position(24); - GL11.glNormalPointer(32, (ByteBuffer)this.byteBuffer); - } - - GL11.glEnableClientState(GL11.GL_NORMAL_ARRAY); - } - - if(this.useVBO) { - GL11.glVertexPointer(3, GL11.GL_FLOAT, 32, 0L); - } else { - this.floatBuffer.position(0); - GL11.glVertexPointer(3, 32, (FloatBuffer)this.floatBuffer); - } - - GL11.glEnableClientState(GL11.GL_VERTEX_ARRAY); - if(this.drawMode == 7 && convertQuadsToTriangles) { - GL11.glDrawArrays(GL11.GL_TRIANGLES, GL11.GL_POINTS, this.vertexCount); - } else { - GL11.glDrawArrays(this.drawMode, GL11.GL_POINTS, this.vertexCount); - } - - GL11.glDisableClientState(GL11.GL_VERTEX_ARRAY); - if(this.hasTexture) { - GL11.glDisableClientState(GL11.GL_TEXTURE_COORD_ARRAY); - } - - if(this.hasColor) { - GL11.glDisableClientState(GL11.GL_COLOR_ARRAY); - } - - if(this.hasNormals) { - GL11.glDisableClientState(GL11.GL_NORMAL_ARRAY); - } - } - - this.reset(); - } - } - - private void reset() { - this.vertexCount = 0; - this.byteBuffer.clear(); - this.rawBufferIndex = 0; - this.addedVertices = 0; - } - - public void startDrawingQuads() { - this.startDrawing(7); - } - - public void startDrawing(int var1) { - if(this.isDrawing) { - throw new IllegalStateException("Already tesselating!"); - } else { - this.isDrawing = true; - this.reset(); - this.drawMode = var1; - this.hasNormals = false; - this.hasColor = false; - this.hasTexture = false; - this.isColorDisabled = false; - } - } - - public void setTextureUV(double var1, double var3) { - this.hasTexture = true; - this.textureU = var1; - this.textureV = var3; - } - - public void setColorOpaque_F(float var1, float var2, float var3) { - this.setColorOpaque((int)(var1 * 255.0F), (int)(var2 * 255.0F), (int)(var3 * 255.0F)); - } - - public void setColorRGBA_F(float var1, float var2, float var3, float var4) { - this.setColorRGBA((int)(var1 * 255.0F), (int)(var2 * 255.0F), (int)(var3 * 255.0F), (int)(var4 * 255.0F)); - } - - public void setColorOpaque(int var1, int var2, int var3) { - this.setColorRGBA(var1, var2, var3, 255); - } - - public void setColorRGBA(int var1, int var2, int var3, int var4) { - if(!this.isColorDisabled) { - if(var1 > 255) { - var1 = 255; - } - - if(var2 > 255) { - var2 = 255; - } - - if(var3 > 255) { - var3 = 255; - } - - if(var4 > 255) { - var4 = 255; - } - - if(var1 < 0) { - var1 = 0; - } - - if(var2 < 0) { - var2 = 0; - } - - if(var3 < 0) { - var3 = 0; - } - - if(var4 < 0) { - var4 = 0; - } - - this.hasColor = true; - this.color = var4 << 24 | var3 << 16 | var2 << 8 | var1; - } - } - - public void addVertexWithUV(double var1, double var3, double var5, double var7, double var9) { - this.setTextureUV(var7, var9); - this.addVertex(var1, var3, var5); - } - - public void addVertex(double var1, double var3, double var5) { - ++this.addedVertices; - if(this.drawMode == 7 && convertQuadsToTriangles && this.addedVertices % 4 == 0) { - for(int var7 = 0; var7 < 2; ++var7) { - int var8 = 8 * (3 - var7); - if(this.hasTexture) { - this.rawBuffer[this.rawBufferIndex + 3] = this.rawBuffer[this.rawBufferIndex - var8 + 3]; - this.rawBuffer[this.rawBufferIndex + 4] = this.rawBuffer[this.rawBufferIndex - var8 + 4]; - } - - if(this.hasColor) { - this.rawBuffer[this.rawBufferIndex + 5] = this.rawBuffer[this.rawBufferIndex - var8 + 5]; - } - - this.rawBuffer[this.rawBufferIndex + 0] = this.rawBuffer[this.rawBufferIndex - var8 + 0]; - this.rawBuffer[this.rawBufferIndex + 1] = this.rawBuffer[this.rawBufferIndex - var8 + 1]; - this.rawBuffer[this.rawBufferIndex + 2] = this.rawBuffer[this.rawBufferIndex - var8 + 2]; - ++this.vertexCount; - this.rawBufferIndex += 8; - } - } - - if(this.hasTexture) { - this.rawBuffer[this.rawBufferIndex + 3] = Float.floatToRawIntBits((float)this.textureU); - this.rawBuffer[this.rawBufferIndex + 4] = Float.floatToRawIntBits((float)this.textureV); - } - - if(this.hasColor) { - this.rawBuffer[this.rawBufferIndex + 5] = this.color; - } - - if(this.hasNormals) { - this.rawBuffer[this.rawBufferIndex + 6] = this.normal; - } - - this.rawBuffer[this.rawBufferIndex + 0] = Float.floatToRawIntBits((float)(var1 + this.xOffset)); - this.rawBuffer[this.rawBufferIndex + 1] = Float.floatToRawIntBits((float)(var3 + this.yOffset)); - this.rawBuffer[this.rawBufferIndex + 2] = Float.floatToRawIntBits((float)(var5 + this.zOffset)); - this.rawBufferIndex += 8; - ++this.vertexCount; - if(this.vertexCount % 4 == 0 && this.rawBufferIndex >= this.bufferSize - 32) { - this.draw(); - this.isDrawing = true; - } - - } - - public void setColorOpaque_I(int var1) { - int var2 = var1 >> 16 & 255; - int var3 = var1 >> 8 & 255; - int var4 = var1 & 255; - this.setColorOpaque(var2, var3, var4); - } - - public void disableColor() { - this.isColorDisabled = true; - } - - public void setNormal(float var1, float var2, float var3) { - if(!this.isDrawing) { - System.out.println("But.."); - } - - this.hasNormals = true; - byte var4 = (byte)((int)(var1 * 128.0F)); - byte var5 = (byte)((int)(var2 * 127.0F)); - byte var6 = (byte)((int)(var3 * 127.0F)); - this.normal = var4 | var5 << 8 | var6 << 16; - } - - public void setTranslationD(double var1, double var3, double var5) { - this.xOffset = var1; - this.yOffset = var3; - this.zOffset = var5; - } -} diff --git a/src/main/java/net/PeytonPlayz585/Main.java b/src/main/java/net/PeytonPlayz585/Main.java new file mode 100644 index 0000000..8806de1 --- /dev/null +++ b/src/main/java/net/PeytonPlayz585/Main.java @@ -0,0 +1,5 @@ +package net.PeytonPlayz585; + +public class Main { + +} diff --git a/src/main/java/net/PeytonPlayz585/minecraft/AssetRepository.java b/src/main/java/net/PeytonPlayz585/minecraft/AssetRepository.java new file mode 100644 index 0000000..753c9fe --- /dev/null +++ b/src/main/java/net/PeytonPlayz585/minecraft/AssetRepository.java @@ -0,0 +1,55 @@ +package net.PeytonPlayz585.minecraft; + +import java.io.ByteArrayInputStream; +import java.io.DataInputStream; +import java.io.IOException; +import java.nio.charset.Charset; +import java.util.Arrays; +import java.util.HashMap; + +import com.jcraft.jzlib.InflaterInputStream; + +public class AssetRepository { + + private static final HashMap filePool = new HashMap(); + + public static final void install(byte[] pkg) throws IOException { + ByteArrayInputStream in2 = new ByteArrayInputStream(pkg); + DataInputStream in = new DataInputStream(in2); + byte[] header = new byte[8]; + in.read(header); + if (!"EAGPKG!!".equals(new String(header, Charset.forName("UTF-8")))) + throw new IOException("invalid epk file"); + in.readUTF(); + in = new DataInputStream(new InflaterInputStream(in2)); + String s = null; + SHA1Digest dg = new SHA1Digest(); + while ("".equals(s = in.readUTF())) { + String path = in.readUTF(); + byte[] digest = new byte[20]; + byte[] digest2 = new byte[20]; + in.read(digest); + int len = in.readInt(); + byte[] file = new byte[len]; + in.read(file); + if (filePool.containsKey(path)) + continue; + dg.update(file, 0, len); + dg.doFinal(digest2, 0); + if (!Arrays.equals(digest, digest2)) + throw new IOException("invalid file hash for " + path); + filePool.put(path, file); + if (!"".equals(in.readUTF())) + throw new IOException("invalid epk file"); + } + if (in.available() > 0 || !" end".equals(s)) + throw new IOException("invalid epk file"); + } + + public static final byte[] getResource(String path) { + if (path.startsWith("/")) + path = path.substring(1); + return filePool.get(path); + } + +} \ No newline at end of file diff --git a/src/main/java/net/PeytonPlayz585/minecraft/Base64.java b/src/main/java/net/PeytonPlayz585/minecraft/Base64.java new file mode 100644 index 0000000..ab0b0ec --- /dev/null +++ b/src/main/java/net/PeytonPlayz585/minecraft/Base64.java @@ -0,0 +1,857 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package net.PeytonPlayz585.minecraft; + +import java.math.BigInteger; +import java.nio.charset.Charset; + +/** + * Provides Base64 encoding and decoding as defined by + * RFC 2045. + * + *

    + * This class implements section 6.8. Base64 + * Content-Transfer-Encoding from RFC 2045 Multipurpose Internet + * Mail Extensions (MIME) Part One: Format of Internet Message Bodies by + * Freed and Borenstein. + *

    + *

    + * The class can be parameterized in the following manner with various + * constructors: + *

    + *
      + *
    • URL-safe mode: Default off.
    • + *
    • Line length: Default 76. Line length that aren't multiples of 4 will + * still essentially end up being multiples of 4 in the encoded data. + *
    • Line separator: Default is CRLF ("\r\n")
    • + *
    + *

    + * The URL-safe parameter is only applied to encode operations. Decoding + * seamlessly handles both modes. + *

    + *

    + * Since this class operates directly on byte streams, and not character + * streams, it is hard-coded to only encode/decode character encodings which are + * compatible with the lower 127 ASCII chart (ISO-8859-1, Windows-1252, UTF-8, + * etc). + *

    + *

    + * This class is thread-safe. + *

    + * + * @see RFC 2045 + * @since 1.0 + */ +public class Base64 extends BaseNCodec { + + /** + * BASE32 characters are 6 bits in length. They are formed by taking a block of + * 3 octets to form a 24-bit string, which is converted into 4 BASE64 + * characters. + */ + private static final int BITS_PER_ENCODED_BYTE = 6; + private static final int BYTES_PER_UNENCODED_BLOCK = 3; + private static final int BYTES_PER_ENCODED_BLOCK = 4; + + /** + * This array is a lookup table that translates 6-bit positive integer index + * values into their "Base64 Alphabet" equivalents as specified in Table 1 of + * RFC 2045. + * + * Thanks to "commons" project in ws.apache.org for this code. + * http://svn.apache.org/repos/asf/webservices/commons/trunk/modules/util/ + */ + private static final byte[] STANDARD_ENCODE_TABLE = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', + 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', 'g', + 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '0', '1', + '2', '3', '4', '5', '6', '7', '8', '9', '+', '/' }; + + /** + * This is a copy of the STANDARD_ENCODE_TABLE above, but with + and / changed + * to - and _ to make the encoded Base64 results more URL-SAFE. This table is + * only used when the Base64's mode is set to URL-SAFE. + */ + private static final byte[] URL_SAFE_ENCODE_TABLE = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', + 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', 'g', + 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '0', '1', + '2', '3', '4', '5', '6', '7', '8', '9', '-', '_' }; + + /** + * This array is a lookup table that translates Unicode characters drawn from + * the "Base64 Alphabet" (as specified in Table 1 of RFC 2045) into their 6-bit + * positive integer equivalents. Characters that are not in the Base64 alphabet + * but fall within the bounds of the array are translated to -1. + * + * Note: '+' and '-' both decode to 62. '/' and '_' both decode to 63. This + * means decoder seamlessly handles both URL_SAFE and STANDARD base64. (The + * encoder, on the other hand, needs to know ahead of time what to emit). + * + * Thanks to "commons" project in ws.apache.org for this code. + * http://svn.apache.org/repos/asf/webservices/commons/trunk/modules/util/ + */ + private static final byte[] DECODE_TABLE = { + // 0 1 2 3 4 5 6 7 8 9 A B C D E F + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, // 00-0f + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, // 10-1f + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 62, -1, 62, -1, 63, // 20-2f + - / + 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, -1, -1, -1, -1, -1, -1, // 30-3f 0-9 + -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, // 40-4f A-O + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, 63, // 50-5f P-Z _ + -1, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, // 60-6f a-o + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51 // 70-7a p-z + }; + + /** + * Base64 uses 6-bit fields. + */ + /** Mask used to extract 6 bits, used when encoding */ + private static final int MASK_6BITS = 0x3f; + /** Mask used to extract 4 bits, used when decoding final trailing character. */ + private static final int MASK_4BITS = 0xf; + /** Mask used to extract 2 bits, used when decoding final trailing character. */ + private static final int MASK_2BITS = 0x3; + + // The static final fields above are used for the original static byte[] methods + // on Base64. + // The private member fields below are used with the new streaming approach, + // which requires + // some state be preserved between calls of encode() and decode(). + + /** + * Decodes Base64 data into octets. + *

    + * Note: this method seamlessly handles data encoded in URL-safe or + * normal mode. + *

    + * + * @param base64Data Byte array containing Base64 data + * @return Array containing decoded data. + */ + public static byte[] decodeBase64(final byte[] base64Data) { + return new Base64().decode(base64Data); + } + + /** + * Decodes a Base64 String into octets. + *

    + * Note: this method seamlessly handles data encoded in URL-safe or + * normal mode. + *

    + * + * @param base64String String containing Base64 data + * @return Array containing decoded data. + * @since 1.4 + */ + public static byte[] decodeBase64(final String base64String) { + return new Base64().decode(base64String); + } + + // Implementation of integer encoding used for crypto + /** + * Decodes a byte64-encoded integer according to crypto standards such as W3C's + * XML-Signature. + * + * @param pArray a byte array containing base64 character data + * @return A BigInteger + * @since 1.4 + */ + public static BigInteger decodeInteger(final byte[] pArray) { + return new BigInteger(1, decodeBase64(pArray)); + } + + /** + * Encodes binary data using the base64 algorithm but does not chunk the output. + * + * @param binaryData binary data to encode + * @return byte[] containing Base64 characters in their UTF-8 representation. + */ + public static byte[] encodeBase64(final byte[] binaryData) { + return encodeBase64(binaryData, false); + } + + /** + * Encodes binary data using the base64 algorithm, optionally chunking the + * output into 76 character blocks. + * + * @param binaryData Array containing binary data to encode. + * @param isChunked if {@code true} this encoder will chunk the base64 output + * into 76 character blocks + * @return Base64-encoded data. + * @throws IllegalArgumentException Thrown when the input array needs an output + * array bigger than {@link Integer#MAX_VALUE} + */ + public static byte[] encodeBase64(final byte[] binaryData, final boolean isChunked) { + return encodeBase64(binaryData, isChunked, false); + } + + /** + * Encodes binary data using the base64 algorithm, optionally chunking the + * output into 76 character blocks. + * + * @param binaryData Array containing binary data to encode. + * @param isChunked if {@code true} this encoder will chunk the base64 output + * into 76 character blocks + * @param urlSafe if {@code true} this encoder will emit - and _ instead of + * the usual + and / characters. Note: no padding is added + * when encoding using the URL-safe alphabet. + * @return Base64-encoded data. + * @throws IllegalArgumentException Thrown when the input array needs an output + * array bigger than {@link Integer#MAX_VALUE} + * @since 1.4 + */ + public static byte[] encodeBase64(final byte[] binaryData, final boolean isChunked, final boolean urlSafe) { + return encodeBase64(binaryData, isChunked, urlSafe, Integer.MAX_VALUE); + } + + /** + * Encodes binary data using the base64 algorithm, optionally chunking the + * output into 76 character blocks. + * + * @param binaryData Array containing binary data to encode. + * @param isChunked if {@code true} this encoder will chunk the base64 + * output into 76 character blocks + * @param urlSafe if {@code true} this encoder will emit - and _ instead + * of the usual + and / characters. Note: no padding is + * added when encoding using the URL-safe alphabet. + * @param maxResultSize The maximum result size to accept. + * @return Base64-encoded data. + * @throws IllegalArgumentException Thrown when the input array needs an output + * array bigger than maxResultSize + * @since 1.4 + */ + public static byte[] encodeBase64(final byte[] binaryData, final boolean isChunked, final boolean urlSafe, + final int maxResultSize) { + if (binaryData == null || binaryData.length == 0) { + return binaryData; + } + + // Create this so can use the super-class method + // Also ensures that the same roundings are performed by the ctor and the code + final Base64 b64 = isChunked ? new Base64(urlSafe) : new Base64(0, CHUNK_SEPARATOR, urlSafe); + final long len = b64.getEncodedLength(binaryData); + if (len > maxResultSize) { + throw new IllegalArgumentException("Input array too big, the output array would be bigger (" + len + + ") than the specified maximum size of " + maxResultSize); + } + + return b64.encode(binaryData); + } + + /** + * Encodes binary data using the base64 algorithm and chunks the encoded output + * into 76 character blocks + * + * @param binaryData binary data to encode + * @return Base64 characters chunked in 76 character blocks + */ + public static byte[] encodeBase64Chunked(final byte[] binaryData) { + return encodeBase64(binaryData, true); + } + + /** + * Encodes binary data using the base64 algorithm but does not chunk the output. + * + * NOTE: We changed the behavior of this method from multi-line chunking + * (commons-codec-1.4) to single-line non-chunking (commons-codec-1.5). + * + * @param binaryData binary data to encode + * @return String containing Base64 characters. + * @since 1.4 (NOTE: 1.4 chunked the output, whereas 1.5 does not). + */ + public static String encodeBase64String(final byte[] binaryData) { + return new String(encodeBase64(binaryData, false), Charset.forName("UTF-8")); + } + + /** + * Encodes binary data using a URL-safe variation of the base64 algorithm but + * does not chunk the output. The url-safe variation emits - and _ instead of + + * and / characters. Note: no padding is added. + * + * @param binaryData binary data to encode + * @return byte[] containing Base64 characters in their UTF-8 representation. + * @since 1.4 + */ + public static byte[] encodeBase64URLSafe(final byte[] binaryData) { + return encodeBase64(binaryData, false, true); + } + + /** + * Encodes binary data using a URL-safe variation of the base64 algorithm but + * does not chunk the output. The url-safe variation emits - and _ instead of + + * and / characters. Note: no padding is added. + * + * @param binaryData binary data to encode + * @return String containing Base64 characters + * @since 1.4 + */ + public static String encodeBase64URLSafeString(final byte[] binaryData) { + return new String(encodeBase64(binaryData, false, true), Charset.forName("UTF-8")); + } + + /** + * Encodes to a byte64-encoded integer according to crypto standards such as + * W3C's XML-Signature. + * + * @param bigInteger a BigInteger + * @return A byte array containing base64 character data + * @throws NullPointerException if null is passed in + * @since 1.4 + */ + public static byte[] encodeInteger(final BigInteger bigInteger) { + return encodeBase64(toIntegerBytes(bigInteger), false); + } + + /** + * Tests a given byte array to see if it contains only valid characters within + * the Base64 alphabet. Currently the method treats whitespace as valid. + * + * @param arrayOctet byte array to test + * @return {@code true} if all bytes are valid characters in the Base64 alphabet + * or if the byte array is empty; {@code false}, otherwise + * @deprecated 1.5 Use {@link #isBase64(byte[])}, will be removed in 2.0. + */ + @Deprecated + public static boolean isArrayByteBase64(final byte[] arrayOctet) { + return isBase64(arrayOctet); + } + + /** + * Returns whether or not the {@code octet} is in the base 64 alphabet. + * + * @param octet The value to test + * @return {@code true} if the value is defined in the the base 64 alphabet, + * {@code false} otherwise. + * @since 1.4 + */ + public static boolean isBase64(final byte octet) { + return octet == PAD_DEFAULT || (octet >= 0 && octet < DECODE_TABLE.length && DECODE_TABLE[octet] != -1); + } + + /** + * Tests a given byte array to see if it contains only valid characters within + * the Base64 alphabet. Currently the method treats whitespace as valid. + * + * @param arrayOctet byte array to test + * @return {@code true} if all bytes are valid characters in the Base64 alphabet + * or if the byte array is empty; {@code false}, otherwise + * @since 1.5 + */ + public static boolean isBase64(final byte[] arrayOctet) { + for (int i = 0; i < arrayOctet.length; i++) { + if (!isBase64(arrayOctet[i]) && !isWhiteSpace(arrayOctet[i])) { + return false; + } + } + return true; + } + + /** + * Tests a given String to see if it contains only valid characters within the + * Base64 alphabet. Currently the method treats whitespace as valid. + * + * @param base64 String to test + * @return {@code true} if all characters in the String are valid characters in + * the Base64 alphabet or if the String is empty; {@code false}, + * otherwise + * @since 1.5 + */ + public static boolean isBase64(final String base64) { + return isBase64(base64.getBytes(Charset.forName("UTF-8"))); + } + + /** + * Returns a byte-array representation of a {@code BigInteger} without sign bit. + * + * @param bigInt {@code BigInteger} to be converted + * @return a byte array representation of the BigInteger parameter + */ + static byte[] toIntegerBytes(final BigInteger bigInt) { + int bitlen = bigInt.bitLength(); + // round bitlen + bitlen = ((bitlen + 7) >> 3) << 3; + final byte[] bigBytes = bigInt.toByteArray(); + + if (((bigInt.bitLength() % 8) != 0) && (((bigInt.bitLength() / 8) + 1) == (bitlen / 8))) { + return bigBytes; + } + // set up params for copying everything but sign bit + int startSrc = 0; + int len = bigBytes.length; + + // if bigInt is exactly byte-aligned, just skip signbit in copy + if ((bigInt.bitLength() % 8) == 0) { + startSrc = 1; + len--; + } + final int startDst = bitlen / 8 - len; // to pad w/ nulls as per spec + final byte[] resizedBytes = new byte[bitlen / 8]; + System.arraycopy(bigBytes, startSrc, resizedBytes, startDst, len); + return resizedBytes; + } + + /** + * Encode table to use: either STANDARD or URL_SAFE. Note: the DECODE_TABLE + * above remains static because it is able to decode both STANDARD and URL_SAFE + * streams, but the encodeTable must be a member variable so we can switch + * between the two modes. + */ + private final byte[] encodeTable; + + // Only one decode table currently; keep for consistency with Base32 code + private final byte[] decodeTable = DECODE_TABLE; + + /** + * Line separator for encoding. Not used when decoding. Only used if lineLength + * > 0. + */ + private final byte[] lineSeparator; + + /** + * Convenience variable to help us determine when our buffer is going to run out + * of room and needs resizing. {@code decodeSize = 3 + lineSeparator.length;} + */ + private final int decodeSize; + + /** + * Convenience variable to help us determine when our buffer is going to run out + * of room and needs resizing. {@code encodeSize = 4 + lineSeparator.length;} + */ + private final int encodeSize; + + /** + * Creates a Base64 codec used for decoding (all modes) and encoding in + * URL-unsafe mode. + *

    + * When encoding the line length is 0 (no chunking), and the encoding table is + * STANDARD_ENCODE_TABLE. + *

    + * + *

    + * When decoding all variants are supported. + *

    + */ + public Base64() { + this(0); + } + + /** + * Creates a Base64 codec used for decoding (all modes) and encoding in the + * given URL-safe mode. + *

    + * When encoding the line length is 76, the line separator is CRLF, and the + * encoding table is STANDARD_ENCODE_TABLE. + *

    + * + *

    + * When decoding all variants are supported. + *

    + * + * @param urlSafe if {@code true}, URL-safe encoding is used. In most cases this + * should be set to {@code false}. + * @since 1.4 + */ + public Base64(final boolean urlSafe) { + this(MIME_CHUNK_SIZE, CHUNK_SEPARATOR, urlSafe); + } + + /** + * Creates a Base64 codec used for decoding (all modes) and encoding in + * URL-unsafe mode. + *

    + * When encoding the line length is given in the constructor, the line separator + * is CRLF, and the encoding table is STANDARD_ENCODE_TABLE. + *

    + *

    + * Line lengths that aren't multiples of 4 will still essentially end up being + * multiples of 4 in the encoded data. + *

    + *

    + * When decoding all variants are supported. + *

    + * + * @param lineLength Each line of encoded data will be at most of the given + * length (rounded down to nearest multiple of 4). If + * lineLength <= 0, then the output will not be divided + * into lines (chunks). Ignored when decoding. + * @since 1.4 + */ + public Base64(final int lineLength) { + this(lineLength, CHUNK_SEPARATOR); + } + + /** + * Creates a Base64 codec used for decoding (all modes) and encoding in + * URL-unsafe mode. + *

    + * When encoding the line length and line separator are given in the + * constructor, and the encoding table is STANDARD_ENCODE_TABLE. + *

    + *

    + * Line lengths that aren't multiples of 4 will still essentially end up being + * multiples of 4 in the encoded data. + *

    + *

    + * When decoding all variants are supported. + *

    + * + * @param lineLength Each line of encoded data will be at most of the given + * length (rounded down to nearest multiple of 4). If + * lineLength <= 0, then the output will not be divided + * into lines (chunks). Ignored when decoding. + * @param lineSeparator Each line of encoded data will end with this sequence of + * bytes. + * @throws IllegalArgumentException Thrown when the provided lineSeparator + * included some base64 characters. + * @since 1.4 + */ + public Base64(final int lineLength, final byte[] lineSeparator) { + this(lineLength, lineSeparator, false); + } + + /** + * Creates a Base64 codec used for decoding (all modes) and encoding in + * URL-unsafe mode. + *

    + * When encoding the line length and line separator are given in the + * constructor, and the encoding table is STANDARD_ENCODE_TABLE. + *

    + *

    + * Line lengths that aren't multiples of 4 will still essentially end up being + * multiples of 4 in the encoded data. + *

    + *

    + * When decoding all variants are supported. + *

    + * + * @param lineLength Each line of encoded data will be at most of the given + * length (rounded down to nearest multiple of 4). If + * lineLength <= 0, then the output will not be divided + * into lines (chunks). Ignored when decoding. + * @param lineSeparator Each line of encoded data will end with this sequence of + * bytes. + * @param urlSafe Instead of emitting '+' and '/' we emit '-' and '_' + * respectively. urlSafe is only applied to encode + * operations. Decoding seamlessly handles both modes. + * Note: no padding is added when using the URL-safe + * alphabet. + * @throws IllegalArgumentException Thrown when the {@code lineSeparator} + * contains Base64 characters. + * @since 1.4 + */ + public Base64(final int lineLength, final byte[] lineSeparator, final boolean urlSafe) { + this(lineLength, lineSeparator, urlSafe, CodecPolicy.LENIANT); + } + + /** + * Creates a Base64 codec used for decoding (all modes) and encoding in + * URL-unsafe mode. + *

    + * When encoding the line length and line separator are given in the + * constructor, and the encoding table is STANDARD_ENCODE_TABLE. + *

    + *

    + * Line lengths that aren't multiples of 4 will still essentially end up being + * multiples of 4 in the encoded data. + *

    + *

    + * When decoding all variants are supported. + *

    + * + * @param lineLength Each line of encoded data will be at most of the given + * length (rounded down to nearest multiple of 4). If + * lineLength <= 0, then the output will not be divided + * into lines (chunks). Ignored when decoding. + * @param lineSeparator Each line of encoded data will end with this sequence + * of bytes. + * @param urlSafe Instead of emitting '+' and '/' we emit '-' and '_' + * respectively. urlSafe is only applied to encode + * operations. Decoding seamlessly handles both modes. + * Note: no padding is added when using the URL-safe + * alphabet. + * @param decodingPolicy The decoding policy. + * @throws IllegalArgumentException Thrown when the {@code lineSeparator} + * contains Base64 characters. + * @since 1.15 + */ + public Base64(final int lineLength, final byte[] lineSeparator, final boolean urlSafe, + final CodecPolicy decodingPolicy) { + super(BYTES_PER_UNENCODED_BLOCK, BYTES_PER_ENCODED_BLOCK, lineLength, + lineSeparator == null ? 0 : lineSeparator.length, PAD_DEFAULT, decodingPolicy); + // TODO could be simplified if there is no requirement to reject invalid line + // sep when length <=0 + // @see test case Base64Test.testConstructors() + if (lineSeparator != null) { + if (containsAlphabetOrPad(lineSeparator)) { + final String sep = new String(lineSeparator, Charset.forName("UTF-8")); + throw new IllegalArgumentException("lineSeparator must not contain base64 characters: [" + sep + "]"); + } + if (lineLength > 0) { // null line-sep forces no chunking rather than throwing IAE + this.encodeSize = BYTES_PER_ENCODED_BLOCK + lineSeparator.length; + this.lineSeparator = new byte[lineSeparator.length]; + System.arraycopy(lineSeparator, 0, this.lineSeparator, 0, lineSeparator.length); + } else { + this.encodeSize = BYTES_PER_ENCODED_BLOCK; + this.lineSeparator = null; + } + } else { + this.encodeSize = BYTES_PER_ENCODED_BLOCK; + this.lineSeparator = null; + } + this.decodeSize = this.encodeSize - 1; + this.encodeTable = urlSafe ? URL_SAFE_ENCODE_TABLE : STANDARD_ENCODE_TABLE; + } + + // Implementation of the Encoder Interface + + /** + *

    + * Decodes all of the provided data, starting at inPos, for inAvail bytes. + * Should be called at least twice: once with the data to decode, and once with + * inAvail set to "-1" to alert decoder that EOF has been reached. The "-1" call + * is not necessary when decoding, but it doesn't hurt, either. + *

    + *

    + * Ignores all non-base64 characters. This is how chunked (e.g. 76 character) + * data is handled, since CR and LF are silently ignored, but has implications + * for other bytes, too. This method subscribes to the garbage-in, garbage-out + * philosophy: it will not check the provided data for validity. + *

    + *

    + * Thanks to "commons" project in ws.apache.org for the bitwise operations, and + * general approach. + * http://svn.apache.org/repos/asf/webservices/commons/trunk/modules/util/ + *

    + * + * @param in byte[] array of ascii data to base64 decode. + * @param inPos Position to start reading data from. + * @param inAvail Amount of bytes available from input for decoding. + * @param context the context to be used + */ + @Override + void decode(final byte[] in, int inPos, final int inAvail, final Context context) { + if (context.eof) { + return; + } + if (inAvail < 0) { + context.eof = true; + } + for (int i = 0; i < inAvail; i++) { + final byte[] buffer = ensureBufferSize(decodeSize, context); + final byte b = in[inPos++]; + if (b == pad) { + // We're done. + context.eof = true; + break; + } + if (b >= 0 && b < DECODE_TABLE.length) { + final int result = DECODE_TABLE[b]; + if (result >= 0) { + context.modulus = (context.modulus + 1) % BYTES_PER_ENCODED_BLOCK; + context.ibitWorkArea = (context.ibitWorkArea << BITS_PER_ENCODED_BYTE) + result; + if (context.modulus == 0) { + buffer[context.pos++] = (byte) ((context.ibitWorkArea >> 16) & MASK_8BITS); + buffer[context.pos++] = (byte) ((context.ibitWorkArea >> 8) & MASK_8BITS); + buffer[context.pos++] = (byte) (context.ibitWorkArea & MASK_8BITS); + } + } + } + } + + // Two forms of EOF as far as base64 decoder is concerned: actual + // EOF (-1) and first time '=' character is encountered in stream. + // This approach makes the '=' padding characters completely optional. + if (context.eof && context.modulus != 0) { + final byte[] buffer = ensureBufferSize(decodeSize, context); + + // We have some spare bits remaining + // Output all whole multiples of 8 bits and ignore the rest + switch (context.modulus) { +// case 0 : // impossible, as excluded above + case 1: // 6 bits - either ignore entirely, or raise an exception + validateTrailingCharacter(); + break; + case 2: // 12 bits = 8 + 4 + validateCharacter(MASK_4BITS, context); + context.ibitWorkArea = context.ibitWorkArea >> 4; // dump the extra 4 bits + buffer[context.pos++] = (byte) ((context.ibitWorkArea) & MASK_8BITS); + break; + case 3: // 18 bits = 8 + 8 + 2 + validateCharacter(MASK_2BITS, context); + context.ibitWorkArea = context.ibitWorkArea >> 2; // dump 2 bits + buffer[context.pos++] = (byte) ((context.ibitWorkArea >> 8) & MASK_8BITS); + buffer[context.pos++] = (byte) ((context.ibitWorkArea) & MASK_8BITS); + break; + default: + throw new IllegalStateException("Impossible modulus " + context.modulus); + } + } + } + + /** + *

    + * Encodes all of the provided data, starting at inPos, for inAvail bytes. Must + * be called at least twice: once with the data to encode, and once with inAvail + * set to "-1" to alert encoder that EOF has been reached, to flush last + * remaining bytes (if not multiple of 3). + *

    + *

    + * Note: no padding is added when encoding using the URL-safe alphabet. + *

    + *

    + * Thanks to "commons" project in ws.apache.org for the bitwise operations, and + * general approach. + * http://svn.apache.org/repos/asf/webservices/commons/trunk/modules/util/ + *

    + * + * @param in byte[] array of binary data to base64 encode. + * @param inPos Position to start reading data from. + * @param inAvail Amount of bytes available from input for encoding. + * @param context the context to be used + */ + @Override + void encode(final byte[] in, int inPos, final int inAvail, final Context context) { + if (context.eof) { + return; + } + // inAvail < 0 is how we're informed of EOF in the underlying data we're + // encoding. + if (inAvail < 0) { + context.eof = true; + if (0 == context.modulus && lineLength == 0) { + return; // no leftovers to process and not using chunking + } + final byte[] buffer = ensureBufferSize(encodeSize, context); + final int savedPos = context.pos; + switch (context.modulus) { // 0-2 + case 0: // nothing to do here + break; + case 1: // 8 bits = 6 + 2 + // top 6 bits: + buffer[context.pos++] = encodeTable[(context.ibitWorkArea >> 2) & MASK_6BITS]; + // remaining 2: + buffer[context.pos++] = encodeTable[(context.ibitWorkArea << 4) & MASK_6BITS]; + // URL-SAFE skips the padding to further reduce size. + if (encodeTable == STANDARD_ENCODE_TABLE) { + buffer[context.pos++] = pad; + buffer[context.pos++] = pad; + } + break; + + case 2: // 16 bits = 6 + 6 + 4 + buffer[context.pos++] = encodeTable[(context.ibitWorkArea >> 10) & MASK_6BITS]; + buffer[context.pos++] = encodeTable[(context.ibitWorkArea >> 4) & MASK_6BITS]; + buffer[context.pos++] = encodeTable[(context.ibitWorkArea << 2) & MASK_6BITS]; + // URL-SAFE skips the padding to further reduce size. + if (encodeTable == STANDARD_ENCODE_TABLE) { + buffer[context.pos++] = pad; + } + break; + default: + throw new IllegalStateException("Impossible modulus " + context.modulus); + } + context.currentLinePos += context.pos - savedPos; // keep track of current line position + // if currentPos == 0 we are at the start of a line, so don't add CRLF + if (lineLength > 0 && context.currentLinePos > 0) { + System.arraycopy(lineSeparator, 0, buffer, context.pos, lineSeparator.length); + context.pos += lineSeparator.length; + } + } else { + for (int i = 0; i < inAvail; i++) { + final byte[] buffer = ensureBufferSize(encodeSize, context); + context.modulus = (context.modulus + 1) % BYTES_PER_UNENCODED_BLOCK; + int b = in[inPos++]; + if (b < 0) { + b += 256; + } + context.ibitWorkArea = (context.ibitWorkArea << 8) + b; // BITS_PER_BYTE + if (0 == context.modulus) { // 3 bytes = 24 bits = 4 * 6 bits to extract + buffer[context.pos++] = encodeTable[(context.ibitWorkArea >> 18) & MASK_6BITS]; + buffer[context.pos++] = encodeTable[(context.ibitWorkArea >> 12) & MASK_6BITS]; + buffer[context.pos++] = encodeTable[(context.ibitWorkArea >> 6) & MASK_6BITS]; + buffer[context.pos++] = encodeTable[context.ibitWorkArea & MASK_6BITS]; + context.currentLinePos += BYTES_PER_ENCODED_BLOCK; + if (lineLength > 0 && lineLength <= context.currentLinePos) { + System.arraycopy(lineSeparator, 0, buffer, context.pos, lineSeparator.length); + context.pos += lineSeparator.length; + context.currentLinePos = 0; + } + } + } + } + } + + /** + * Returns whether or not the {@code octet} is in the Base64 alphabet. + * + * @param octet The value to test + * @return {@code true} if the value is defined in the the Base64 alphabet + * {@code false} otherwise. + */ + @Override + protected boolean isInAlphabet(final byte octet) { + return octet >= 0 && octet < decodeTable.length && decodeTable[octet] != -1; + } + + /** + * Returns our current encode mode. True if we're URL-SAFE, false otherwise. + * + * @return true if we're in URL-SAFE mode, false otherwise. + * @since 1.4 + */ + public boolean isUrlSafe() { + return this.encodeTable == URL_SAFE_ENCODE_TABLE; + } + + /** + * Validates whether decoding the final trailing character is possible in the + * context of the set of possible base 64 values. + * + *

    + * The character is valid if the lower bits within the provided mask are zero. + * This is used to test the final trailing base-64 digit is zero in the bits + * that will be discarded. + * + * @param emptyBitsMask The mask of the lower bits that should be empty + * @param context the context to be used + * + * @throws IllegalArgumentException if the bits being checked contain any + * non-zero value + */ + private void validateCharacter(final int emptyBitsMask, final Context context) { + if (isStrictDecoding() && (context.ibitWorkArea & emptyBitsMask) != 0) { + throw new IllegalArgumentException( + "Strict decoding: Last encoded character (before the paddings if any) is a valid base 64 alphabet but not a possible encoding. " + + "Expected the discarded bits from the character to be zero."); + } + } + + /** + * Validates whether decoding allows an entire final trailing character that + * cannot be used for a complete byte. + * + * @throws IllegalArgumentException if strict decoding is enabled + */ + private void validateTrailingCharacter() { + if (isStrictDecoding()) { + throw new IllegalArgumentException( + "Strict decoding: Last encoded character (before the paddings if any) is a valid base 64 alphabet but not a possible encoding. " + + "Decoding requires at least two trailing 6-bit characters to create bytes."); + } + } + +} \ No newline at end of file diff --git a/src/main/java/net/PeytonPlayz585/minecraft/BaseNCodec.java b/src/main/java/net/PeytonPlayz585/minecraft/BaseNCodec.java new file mode 100644 index 0000000..8fbeceb --- /dev/null +++ b/src/main/java/net/PeytonPlayz585/minecraft/BaseNCodec.java @@ -0,0 +1,692 @@ +package net.PeytonPlayz585.minecraft; + +import java.nio.charset.Charset; +import java.util.Arrays; + +public abstract class BaseNCodec { + + static enum CodecPolicy { + STRICT, LENIANT; + } + + /** + * Holds thread context so classes can be thread-safe. + * + * This class is not itself thread-safe; each thread must allocate its own copy. + * + * @since 1.7 + */ + static class Context { + + /** + * Place holder for the bytes we're dealing with for our based logic. Bitwise + * operations store and extract the encoding or decoding from this variable. + */ + int ibitWorkArea; + + /** + * Place holder for the bytes we're dealing with for our based logic. Bitwise + * operations store and extract the encoding or decoding from this variable. + */ + long lbitWorkArea; + + /** + * Buffer for streaming. + */ + byte[] buffer; + + /** + * Position where next character should be written in the buffer. + */ + int pos; + + /** + * Position where next character should be read from the buffer. + */ + int readPos; + + /** + * Boolean flag to indicate the EOF has been reached. Once EOF has been reached, + * this object becomes useless, and must be thrown away. + */ + boolean eof; + + /** + * Variable tracks how many characters have been written to the current line. + * Only used when encoding. We use it to make sure each encoded line never goes + * beyond lineLength (if lineLength > 0). + */ + int currentLinePos; + + /** + * Writes to the buffer only occur after every 3/5 reads when encoding, and + * every 4/8 reads when decoding. This variable helps track that. + */ + int modulus; + + Context() { + } + + /** + * Returns a String useful for debugging (especially within a debugger.) + * + * @return a String useful for debugging. + */ + @SuppressWarnings("boxing") // OK to ignore boxing here + @Override + public String toString() { + return String.format( + "%s[buffer=%s, currentLinePos=%s, eof=%s, ibitWorkArea=%s, lbitWorkArea=%s, " + + "modulus=%s, pos=%s, readPos=%s]", + this.getClass().getSimpleName(), Arrays.toString(buffer), currentLinePos, eof, ibitWorkArea, + lbitWorkArea, modulus, pos, readPos); + } + } + + /** + * EOF + * + * @since 1.7 + */ + static final int EOF = -1; + + /** + * MIME chunk size per RFC 2045 section 6.8. + * + *

    + * The {@value} character limit does not count the trailing CRLF, but counts all + * other characters, including any equal signs. + *

    + * + * @see RFC 2045 section 6.8 + */ + public static final int MIME_CHUNK_SIZE = 76; + + /** + * PEM chunk size per RFC 1421 section 4.3.2.4. + * + *

    + * The {@value} character limit does not count the trailing CRLF, but counts all + * other characters, including any equal signs. + *

    + * + * @see RFC 1421 section + * 4.3.2.4 + */ + public static final int PEM_CHUNK_SIZE = 64; + + private static final int DEFAULT_BUFFER_RESIZE_FACTOR = 2; + + /** + * Defines the default buffer size - currently {@value} - must be large enough + * for at least one encoded block+separator + */ + private static final int DEFAULT_BUFFER_SIZE = 8192; + + /** + * The maximum size buffer to allocate. + * + *

    + * This is set to the same size used in the JDK {@code java.util.ArrayList}: + *

    + *
    Some VMs reserve some header words in an array. Attempts to + * allocate larger arrays may result in OutOfMemoryError: Requested array size + * exceeds VM limit.
    + */ + private static final int MAX_BUFFER_SIZE = Integer.MAX_VALUE - 8; + + /** Mask used to extract 8 bits, used in decoding bytes */ + protected static final int MASK_8BITS = 0xff; + + /** + * Byte used to pad output. + */ + protected static final byte PAD_DEFAULT = '='; // Allow static access to default + + /** + * Chunk separator per RFC 2045 section 2.1. + * + * @see RFC 2045 section 2.1 + */ + static final byte[] CHUNK_SEPARATOR = { '\r', '\n' }; + + /** + * Compares two {@code int} values numerically treating the values as unsigned. + * Taken from JDK 1.8. + * + *

    + * TODO: Replace with JDK 1.8 Integer::compareUnsigned(int, int). + *

    + * + * @param x the first {@code int} to compare + * @param y the second {@code int} to compare + * @return the value {@code 0} if {@code x == y}; a value less than {@code 0} if + * {@code x < y} as unsigned values; and a value greater than {@code 0} + * if {@code x > y} as unsigned values + */ + private static int compareUnsigned(final int xx, final int yy) { + int x = xx + Integer.MIN_VALUE; + int y = yy + Integer.MIN_VALUE; + return (x < y) ? -1 : ((x == y) ? 0 : 1); + } + + /** + * Create a positive capacity at least as large the minimum required capacity. + * If the minimum capacity is negative then this throws an OutOfMemoryError as + * no array can be allocated. + * + * @param minCapacity the minimum capacity + * @return the capacity + * @throws OutOfMemoryError if the {@code minCapacity} is negative + */ + private static int createPositiveCapacity(final int minCapacity) { + if (minCapacity < 0) { + // overflow + throw new OutOfMemoryError("Unable to allocate array size: " + (minCapacity & 0xffffffffL)); + } + // This is called when we require buffer expansion to a very big array. + // Use the conservative maximum buffer size if possible, otherwise the biggest + // required. + // + // Note: In this situation JDK 1.8 java.util.ArrayList returns + // Integer.MAX_VALUE. + // This excludes some VMs that can exceed MAX_BUFFER_SIZE but not allocate a + // full + // Integer.MAX_VALUE length array. + // The result is that we may have to allocate an array of this size more than + // once if + // the capacity must be expanded again. + return (minCapacity > MAX_BUFFER_SIZE) ? minCapacity : MAX_BUFFER_SIZE; + } + + /** + * Gets a copy of the chunk separator per RFC 2045 section 2.1. + * + * @return the chunk separator + * @see RFC 2045 section 2.1 + * @since 1.15 + */ + public static byte[] getChunkSeparator() { + return CHUNK_SEPARATOR.clone(); + } + + /** + * Checks if a byte value is whitespace or not. Whitespace is taken to mean: + * space, tab, CR, LF + * + * @param byteToCheck the byte to check + * @return true if byte is whitespace, false otherwise + */ + protected static boolean isWhiteSpace(final byte byteToCheck) { + switch (byteToCheck) { + case ' ': + case '\n': + case '\r': + case '\t': + return true; + default: + return false; + } + } + + /** + * Increases our buffer by the {@link #DEFAULT_BUFFER_RESIZE_FACTOR}. + * + * @param context the context to be used + * @param minCapacity the minimum required capacity + * @return the resized byte[] buffer + * @throws OutOfMemoryError if the {@code minCapacity} is negative + */ + private static byte[] resizeBuffer(final Context context, final int minCapacity) { + // Overflow-conscious code treats the min and new capacity as unsigned. + final int oldCapacity = context.buffer.length; + int newCapacity = oldCapacity * DEFAULT_BUFFER_RESIZE_FACTOR; + if (compareUnsigned(newCapacity, minCapacity) < 0) { + newCapacity = minCapacity; + } + if (compareUnsigned(newCapacity, MAX_BUFFER_SIZE) > 0) { + newCapacity = createPositiveCapacity(minCapacity); + } + + final byte[] b = new byte[newCapacity]; + System.arraycopy(context.buffer, 0, b, 0, context.buffer.length); + context.buffer = b; + return b; + } + + /** + * @deprecated Use {@link #pad}. Will be removed in 2.0. + */ + @Deprecated + protected final byte PAD = PAD_DEFAULT; // instance variable just in case it needs to vary later + + protected final byte pad; // instance variable just in case it needs to vary later + + /** + * Number of bytes in each full block of unencoded data, e.g. 4 for Base64 and 5 + * for Base32 + */ + private final int unencodedBlockSize; + + /** + * Number of bytes in each full block of encoded data, e.g. 3 for Base64 and 8 + * for Base32 + */ + private final int encodedBlockSize; + + /** + * Chunksize for encoding. Not used when decoding. A value of zero or less + * implies no chunking of the encoded data. Rounded down to nearest multiple of + * encodedBlockSize. + */ + protected final int lineLength; + + /** + * Size of chunk separator. Not used unless {@link #lineLength} > 0. + */ + private final int chunkSeparatorLength; + + /** + * Defines the decoding behavior when the input bytes contain leftover trailing + * bits that cannot be created by a valid encoding. These can be bits that are + * unused from the final character or entire characters. The default mode is + * lenient decoding. Set this to {@code true} to enable strict decoding. + *
      + *
    • Lenient: Any trailing bits are composed into 8-bit bytes where possible. + * The remainder are discarded. + *
    • Strict: The decoding will raise an {@link IllegalArgumentException} if + * trailing bits are not part of a valid encoding. Any unused bits from the + * final character must be zero. Impossible counts of entire final characters + * are not allowed. + *
    + * + *

    + * When strict decoding is enabled it is expected that the decoded bytes will be + * re-encoded to a byte array that matches the original, i.e. no changes occur + * on the final character. This requires that the input bytes use the same + * padding and alphabet as the encoder. + */ + private final CodecPolicy decodingPolicy; + + /** + * Note {@code lineLength} is rounded down to the nearest multiple of the + * encoded block size. If {@code chunkSeparatorLength} is zero, then chunking is + * disabled. + * + * @param unencodedBlockSize the size of an unencoded block (e.g. Base64 = 3) + * @param encodedBlockSize the size of an encoded block (e.g. Base64 = 4) + * @param lineLength if > 0, use chunking with a length + * {@code lineLength} + * @param chunkSeparatorLength the chunk separator length, if relevant + */ + protected BaseNCodec(final int unencodedBlockSize, final int encodedBlockSize, final int lineLength, + final int chunkSeparatorLength) { + this(unencodedBlockSize, encodedBlockSize, lineLength, chunkSeparatorLength, PAD_DEFAULT); + } + + /** + * Note {@code lineLength} is rounded down to the nearest multiple of the + * encoded block size. If {@code chunkSeparatorLength} is zero, then chunking is + * disabled. + * + * @param unencodedBlockSize the size of an unencoded block (e.g. Base64 = 3) + * @param encodedBlockSize the size of an encoded block (e.g. Base64 = 4) + * @param lineLength if > 0, use chunking with a length + * {@code lineLength} + * @param chunkSeparatorLength the chunk separator length, if relevant + * @param pad byte used as padding byte. + */ + protected BaseNCodec(final int unencodedBlockSize, final int encodedBlockSize, final int lineLength, + final int chunkSeparatorLength, final byte pad) { + this(unencodedBlockSize, encodedBlockSize, lineLength, chunkSeparatorLength, pad, CodecPolicy.LENIANT); + } + + /** + * Note {@code lineLength} is rounded down to the nearest multiple of the + * encoded block size. If {@code chunkSeparatorLength} is zero, then chunking is + * disabled. + * + * @param unencodedBlockSize the size of an unencoded block (e.g. Base64 = 3) + * @param encodedBlockSize the size of an encoded block (e.g. Base64 = 4) + * @param lineLength if > 0, use chunking with a length + * {@code lineLength} + * @param chunkSeparatorLength the chunk separator length, if relevant + * @param pad byte used as padding byte. + * @param decodingPolicy Decoding policy. + * @since 1.15 + */ + protected BaseNCodec(final int unencodedBlockSize, final int encodedBlockSize, final int lineLength, + final int chunkSeparatorLength, final byte pad, final CodecPolicy decodingPolicy) { + this.unencodedBlockSize = unencodedBlockSize; + this.encodedBlockSize = encodedBlockSize; + final boolean useChunking = lineLength > 0 && chunkSeparatorLength > 0; + this.lineLength = useChunking ? (lineLength / encodedBlockSize) * encodedBlockSize : 0; + this.chunkSeparatorLength = chunkSeparatorLength; + this.pad = pad; + this.decodingPolicy = decodingPolicy; + } + + /** + * Returns the amount of buffered data available for reading. + * + * @param context the context to be used + * @return The amount of buffered data available for reading. + */ + int available(final Context context) { // package protected for access from I/O streams + return context.buffer != null ? context.pos - context.readPos : 0; + } + + /** + * Tests a given byte array to see if it contains any characters within the + * alphabet or PAD. + * + * Intended for use in checking line-ending arrays + * + * @param arrayOctet byte array to test + * @return {@code true} if any byte is a valid character in the alphabet or PAD; + * {@code false} otherwise + */ + protected boolean containsAlphabetOrPad(final byte[] arrayOctet) { + if (arrayOctet == null) { + return false; + } + for (final byte element : arrayOctet) { + if (pad == element || isInAlphabet(element)) { + return true; + } + } + return false; + } + + /** + * Decodes a byte[] containing characters in the Base-N alphabet. + * + * @param pArray A byte array containing Base-N character data + * @return a byte array containing binary data + */ + public byte[] decode(final byte[] pArray) { + if (pArray == null || pArray.length == 0) { + return pArray; + } + final Context context = new Context(); + decode(pArray, 0, pArray.length, context); + decode(pArray, 0, EOF, context); // Notify decoder of EOF. + final byte[] result = new byte[context.pos]; + readResults(result, 0, result.length, context); + return result; + } + + // package protected for access from I/O streams + abstract void decode(byte[] pArray, int i, int length, Context context); + + /** + * Decodes an Object using the Base-N algorithm. This method is provided in + * order to satisfy the requirements of the Decoder interface, and will throw a + * DecoderException if the supplied object is not of type byte[] or String. + * + * @param obj Object to decode + * @return An object (of type byte[]) containing the binary data which + * corresponds to the byte[] or String supplied. + * @throws DecoderException if the parameter supplied is not of type byte[] + */ + public Object decode(final Object obj) { + if (obj instanceof byte[]) { + return decode((byte[]) obj); + } else if (obj instanceof String) { + return decode((String) obj); + } else { + return null; + } + } + + /** + * Decodes a String containing characters in the Base-N alphabet. + * + * @param pArray A String containing Base-N character data + * @return a byte array containing binary data + */ + public byte[] decode(final String pArray) { + return decode(pArray.getBytes(Charset.forName("UTF-8"))); + } + + /** + * Encodes a byte[] containing binary data, into a byte[] containing characters + * in the alphabet. + * + * @param pArray a byte array containing binary data + * @return A byte array containing only the base N alphabetic character data + */ + public byte[] encode(final byte[] pArray) { + if (pArray == null || pArray.length == 0) { + return pArray; + } + return encode(pArray, 0, pArray.length); + } + + /** + * Encodes a byte[] containing binary data, into a byte[] containing characters + * in the alphabet. + * + * @param pArray a byte array containing binary data + * @param offset initial offset of the subarray. + * @param length length of the subarray. + * @return A byte array containing only the base N alphabetic character data + * @since 1.11 + */ + public byte[] encode(final byte[] pArray, final int offset, final int length) { + if (pArray == null || pArray.length == 0) { + return pArray; + } + final Context context = new Context(); + encode(pArray, offset, length, context); + encode(pArray, offset, EOF, context); // Notify encoder of EOF. + final byte[] buf = new byte[context.pos - context.readPos]; + readResults(buf, 0, buf.length, context); + return buf; + } + + // package protected for access from I/O streams + abstract void encode(byte[] pArray, int i, int length, Context context); + + /** + * Encodes an Object using the Base-N algorithm. This method is provided in + * order to satisfy the requirements of the Encoder interface, and will throw an + * EncoderException if the supplied object is not of type byte[]. + * + * @param obj Object to encode + * @return An object (of type byte[]) containing the Base-N encoded data which + * corresponds to the byte[] supplied. + * @throws EncoderException if the parameter supplied is not of type byte[] + */ + public Object encode(final Object obj) { + return encode((byte[]) obj); + } + + /** + * Encodes a byte[] containing binary data, into a String containing characters + * in the appropriate alphabet. Uses UTF8 encoding. + * + * @param pArray a byte array containing binary data + * @return String containing only character data in the appropriate alphabet. + * @since 1.5 This is a duplicate of {@link #encodeToString(byte[])}; it was + * merged during refactoring. + */ + public String encodeAsString(final byte[] pArray) { + return new String(encode(pArray), Charset.forName("UTF-8")); + } + + /** + * Encodes a byte[] containing binary data, into a String containing characters + * in the Base-N alphabet. Uses UTF8 encoding. + * + * @param pArray a byte array containing binary data + * @return A String containing only Base-N character data + */ + public String encodeToString(final byte[] pArray) { + return new String(encode(pArray), Charset.forName("UTF-8")); + } + + /** + * Ensure that the buffer has room for {@code size} bytes + * + * @param size minimum spare space required + * @param context the context to be used + * @return the buffer + */ + protected byte[] ensureBufferSize(final int size, final Context context) { + if (context.buffer == null) { + context.buffer = new byte[Math.max(size, getDefaultBufferSize())]; + context.pos = 0; + context.readPos = 0; + + // Overflow-conscious: + // x + y > z == x + y - z > 0 + } else if (context.pos + size - context.buffer.length > 0) { + return resizeBuffer(context, context.pos + size); + } + return context.buffer; + } + + /** + * Returns the decoding behavior policy. + * + *

    + * The default is lenient. If the decoding policy is strict, then decoding will + * raise an {@link IllegalArgumentException} if trailing bits are not part of a + * valid encoding. Decoding will compose trailing bits into 8-bit bytes and + * discard the remainder. + *

    + * + * @return true if using strict decoding + * @since 1.15 + */ + public CodecPolicy getCodecPolicy() { + return decodingPolicy; + } + + /** + * Get the default buffer size. Can be overridden. + * + * @return the default buffer size. + */ + protected int getDefaultBufferSize() { + return DEFAULT_BUFFER_SIZE; + } + + /** + * Calculates the amount of space needed to encode the supplied array. + * + * @param pArray byte[] array which will later be encoded + * + * @return amount of space needed to encoded the supplied array. Returns a long + * since a max-len array will require > Integer.MAX_VALUE + */ + public long getEncodedLength(final byte[] pArray) { + // Calculate non-chunked size - rounded up to allow for padding + // cast to long is needed to avoid possibility of overflow + long len = ((pArray.length + unencodedBlockSize - 1) / unencodedBlockSize) * (long) encodedBlockSize; + if (lineLength > 0) { // We're using chunking + // Round up to nearest multiple + len += ((len + lineLength - 1) / lineLength) * chunkSeparatorLength; + } + return len; + } + + /** + * Returns true if this object has buffered data for reading. + * + * @param context the context to be used + * @return true if there is data still available for reading. + */ + boolean hasData(final Context context) { // package protected for access from I/O streams + return context.buffer != null; + } + + /** + * Returns whether or not the {@code octet} is in the current alphabet. Does not + * allow whitespace or pad. + * + * @param value The value to test + * + * @return {@code true} if the value is defined in the current alphabet, + * {@code false} otherwise. + */ + protected abstract boolean isInAlphabet(byte value); + + /** + * Tests a given byte array to see if it contains only valid characters within + * the alphabet. The method optionally treats whitespace and pad as valid. + * + * @param arrayOctet byte array to test + * @param allowWSPad if {@code true}, then whitespace and PAD are also allowed + * + * @return {@code true} if all bytes are valid characters in the alphabet or if + * the byte array is empty; {@code false}, otherwise + */ + public boolean isInAlphabet(final byte[] arrayOctet, final boolean allowWSPad) { + for (final byte octet : arrayOctet) { + if (!isInAlphabet(octet) && (!allowWSPad || (octet != pad) && !isWhiteSpace(octet))) { + return false; + } + } + return true; + } + + /** + * Tests a given String to see if it contains only valid characters within the + * alphabet. The method treats whitespace and PAD as valid. + * + * @param basen String to test + * @return {@code true} if all characters in the String are valid characters in + * the alphabet or if the String is empty; {@code false}, otherwise + * @see #isInAlphabet(byte[], boolean) + */ + public boolean isInAlphabet(final String basen) { + return isInAlphabet(basen.getBytes(Charset.forName("UTF-8")), true); + } + + /** + * Returns true if decoding behavior is strict. Decoding will raise an + * {@link IllegalArgumentException} if trailing bits are not part of a valid + * encoding. + * + *

    + * The default is false for lenient decoding. Decoding will compose trailing + * bits into 8-bit bytes and discard the remainder. + *

    + * + * @return true if using strict decoding + * @since 1.15 + */ + public boolean isStrictDecoding() { + return decodingPolicy == CodecPolicy.STRICT; + } + + /** + * Extracts buffered data into the provided byte[] array, starting at position + * bPos, up to a maximum of bAvail bytes. Returns how many bytes were actually + * extracted. + *

    + * Package protected for access from I/O streams. + * + * @param b byte[] array to extract the buffered data into. + * @param bPos position in byte[] array to start extraction at. + * @param bAvail amount of bytes we're allowed to extract. We may extract fewer + * (if fewer are available). + * @param context the context to be used + * @return The number of bytes successfully extracted into the provided byte[] + * array. + */ + int readResults(final byte[] b, final int bPos, final int bAvail, final Context context) { + if (context.buffer != null) { + final int len = Math.min(available(context), bAvail); + System.arraycopy(context.buffer, context.readPos, b, bPos, len); + context.readPos += len; + if (context.readPos >= context.pos) { + context.buffer = null; // so hasData() will return false, and this method can return -1 + } + return len; + } + return context.eof ? EOF : 0; + } +} \ No newline at end of file diff --git a/src/main/java/net/PeytonPlayz585/minecraft/FixedFunctionShader.java b/src/main/java/net/PeytonPlayz585/minecraft/FixedFunctionShader.java new file mode 100644 index 0000000..b5d068f --- /dev/null +++ b/src/main/java/net/PeytonPlayz585/minecraft/FixedFunctionShader.java @@ -0,0 +1,397 @@ +package net.PeytonPlayz585.minecraft; + +import static org.lwjgl.opengl.GL11.*; + +import net.PeytonPlayz585.opengl.*; + +public class FixedFunctionShader { + + private static final FixedFunctionShader[] instances = new FixedFunctionShader[128]; + + public static void refreshCoreGL() { + for (int i = 0; i < instances.length; ++i) { + if (instances[i] != null) { + _wglDeleteProgram(instances[i].globject); + instances[i] = null; + } + } + shaderSource = null; + } + + public static final int COLOR = 1; + //public static final int NORMAL = 2; + public static final int TEXTURE0 = 4; + public static final int LIGHTING = 8; + public static final int FOG = 16; + public static final int ALPHATEST = 32; + public static final int UNIT0 = 64; + + public static FixedFunctionShader instance(int i) { + FixedFunctionShader s = instances[i]; + if (s == null) { + boolean CC_a_color = false; +// boolean CC_a_normal = false; + boolean CC_a_texture0 = false; + boolean CC_lighting = false; + boolean CC_fog = false; + boolean CC_alphatest = false; + boolean CC_unit0 = false; + if ((i & COLOR) == COLOR) { + CC_a_color = true; + } +// if ((i & NORMAL) == NORMAL) { +// CC_a_normal = true; +// } + if ((i & TEXTURE0) == TEXTURE0) { + CC_a_texture0 = true; + } + if ((i & LIGHTING) == LIGHTING) { + CC_lighting = true; + } + if ((i & FOG) == FOG) { + CC_fog = true; + } + if ((i & ALPHATEST) == ALPHATEST) { + CC_alphatest = true; + } + if ((i & UNIT0) == UNIT0) { + CC_unit0 = true; + } + s = new FixedFunctionShader(i, CC_a_color, CC_a_texture0, CC_lighting, CC_fog, CC_alphatest, CC_unit0); + instances[i] = s; + } + return s; + } + + private static String shaderSource = null; + + private final boolean enable_color; +// private final boolean enable_normal; + private final boolean enable_texture0; + private final boolean enable_lighting; + private final boolean enable_fog; + private final boolean enable_alphatest; + private final boolean enable_unit0; + private final ProgramGL globject; + + private UniformGL u_matrix_m = null; + private UniformGL u_matrix_p = null; + private UniformGL u_matrix_t = null; + + private UniformGL u_fogColor = null; + private UniformGL u_fogMode = null; + private UniformGL u_fogStart = null; + private UniformGL u_fogEnd = null; + private UniformGL u_fogDensity = null; + private UniformGL u_fogPremultiply = null; + + private UniformGL u_colorUniform = null; + private UniformGL u_normalUniform = null; + + private UniformGL u_alphaTestF = null; + + private UniformGL u_texCoordV0 = null; + + private UniformGL u_light0Pos = null; + private UniformGL u_light1Pos = null; + + private final int a_position; + private final int a_texture0; + private final int a_color; + private final int a_normal; + + private final int attributeIndexesToEnable; + + public final BufferArrayGL genericArray; + public final BufferGL genericBuffer; + public boolean bufferIsInitialized = false; + + private FixedFunctionShader(int j, boolean CC_a_color, boolean CC_a_texture0, + boolean CC_lighting, boolean CC_fog, boolean CC_alphatest, boolean CC_unit0) { + enable_color = CC_a_color; +// enable_normal = CC_a_normal; + enable_texture0 = CC_a_texture0; + enable_lighting = CC_lighting; + enable_fog = CC_fog; + enable_alphatest = CC_alphatest; + enable_unit0 = CC_unit0; + + if (shaderSource == null) { + shaderSource = fileContents("/glsl/core.glsl"); + } + + String source = ""; + if (enable_color) + source += "\n#define CC_a_color\n"; + //if (enable_normal) + //source += "#define CC_a_normal\n"; + if (enable_texture0) + source += "#define CC_a_texture0\n"; + if (enable_lighting) + source += "#define CC_lighting\n"; + if (enable_fog) + source += "#define CC_fog\n"; + if (enable_alphatest) + source += "#define CC_alphatest\n"; + if (enable_unit0) + source += "#define CC_unit0\n"; + source += shaderSource; + + ShaderGL v = _wglCreateShader(_wGL_VERTEX_SHADER); + _wglShaderSource(v, _wgetShaderHeader() + "\n#define CC_VERT\n" + source); + _wglCompileShader(v); + + if (!_wglGetShaderCompiled(v)) { + System.err.println(("\n\n" + _wglGetShaderInfoLog(v)).replace("\n", "\n[/glsl/core.glsl][CC_VERT] ")); + throw new RuntimeException("broken shader file"); + } + + ShaderGL f = _wglCreateShader(_wGL_FRAGMENT_SHADER); + _wglShaderSource(f, _wgetShaderHeader() + "\n#define CC_FRAG\n" + source); + _wglCompileShader(f); + + if (!_wglGetShaderCompiled(f)) { + System.err.println(("\n\n" + _wglGetShaderInfoLog(f)).replace("\n", "\n[/glsl/core.glsl][CC_FRAG] ")); + throw new RuntimeException("broken shader file"); + } + + globject = _wglCreateProgram(); + _wglAttachShader(globject, v); + _wglAttachShader(globject, f); + + int i = 0; + a_position = i++; + _wglBindAttributeLocation(globject, a_position, "a_position"); + + if (enable_texture0) { + a_texture0 = i++; + _wglBindAttributeLocation(globject, a_texture0, "a_texture0"); + } else { + a_texture0 = -1; + } + if (enable_color) { + a_color = i++; + _wglBindAttributeLocation(globject, a_color, "a_color"); + } else { + a_color = -1; + } + //if (enable_normal) { + //a_normal = i++; + //_wglBindAttributeLocation(globject, a_normal, "a_normal"); + //} else { + a_normal = -1; + //} + + attributeIndexesToEnable = i; + + _wglLinkProgram(globject); + + _wglDetachShader(globject, v); + _wglDetachShader(globject, f); + _wglDeleteShader(v); + _wglDeleteShader(f); + + if (!_wglGetProgramLinked(globject)) { + System.err.println(("\n\n" + _wglGetProgramInfoLog(globject)).replace("\n", "\n[LINKER] ")); + throw new RuntimeException("broken shader file"); + } + + _wglUseProgram(globject); + + u_matrix_m = _wglGetUniformLocation(globject, "matrix_m"); + u_matrix_p = _wglGetUniformLocation(globject, "matrix_p"); + u_matrix_t = _wglGetUniformLocation(globject, "matrix_t"); + + u_colorUniform = _wglGetUniformLocation(globject, "colorUniform"); + + if (enable_lighting) { + u_normalUniform = _wglGetUniformLocation(globject, "normalUniform"); + // u_invertNormals = _wglGetUniformLocation(globject, "invertNormals"); + u_light0Pos = _wglGetUniformLocation(globject, "light0Pos"); + u_light1Pos = _wglGetUniformLocation(globject, "light1Pos"); + } + + if (enable_fog) { + u_fogColor = _wglGetUniformLocation(globject, "fogColor"); + u_fogMode = _wglGetUniformLocation(globject, "fogMode"); + u_fogStart = _wglGetUniformLocation(globject, "fogStart"); + u_fogEnd = _wglGetUniformLocation(globject, "fogEnd"); + u_fogDensity = _wglGetUniformLocation(globject, "fogDensity"); + u_fogPremultiply = _wglGetUniformLocation(globject, "fogPremultiply"); + } + + if (enable_alphatest) { + u_alphaTestF = _wglGetUniformLocation(globject, "alphaTestF"); + } + + _wglUniform1i(_wglGetUniformLocation(globject, "tex0"), 0); + u_texCoordV0 = _wglGetUniformLocation(globject, "texCoordV0"); + + genericArray = _wglCreateVertexArray(); + genericBuffer = _wglCreateBuffer(); + _wglBindVertexArray(genericArray); + _wglBindBuffer(_wGL_ARRAY_BUFFER, genericBuffer); + setupArrayForProgram(); + + } + + public void setupArrayForProgram() { + _wglEnableVertexAttribArray(a_position); + _wglVertexAttribPointer(a_position, 3, _wGL_FLOAT, false, 28, 0); + if (enable_texture0) { + _wglEnableVertexAttribArray(a_texture0); + _wglVertexAttribPointer(a_texture0, 2, _wGL_FLOAT, false, 28, 12); + } + if (enable_color) { + _wglEnableVertexAttribArray(a_color); + _wglVertexAttribPointer(a_color, 4, _wGL_UNSIGNED_BYTE, true, 28, 20); + } + //if (enable_normal) { + //_wglEnableVertexAttribArray(a_normal); + //_wglVertexAttribPointer(a_normal, 4, _wGL_UNSIGNED_BYTE, true, 28, 24); + //} + } + + public void useProgram() { + _wglUseProgram(globject); + } + + public void unuseProgram() { + + } + + private float[] modelBuffer = new float[16]; + private float[] projectionBuffer = new float[16]; + private float[] textureBuffer = new float[16]; + + private Matrix4f modelMatrix = (Matrix4f) new Matrix4f().setZero(); + private Matrix4f projectionMatrix = (Matrix4f) new Matrix4f().setZero(); + private Matrix4f textureMatrix = (Matrix4f) new Matrix4f().setZero(); + private Vector4f light0Pos = new Vector4f(); + private Vector4f light1Pos = new Vector4f(); + + public void setModelMatrix(Matrix4f mat) { + if (!mat.equals(modelMatrix)) { + modelMatrix.load(mat).store(modelBuffer); + _wglUniformMat4fv(u_matrix_m, modelBuffer); + } + } + + public void setProjectionMatrix(Matrix4f mat) { + if (!mat.equals(projectionMatrix)) { + projectionMatrix.load(mat).store(projectionBuffer); + _wglUniformMat4fv(u_matrix_p, projectionBuffer); + } + } + + public void setTextureMatrix(Matrix4f mat) { + if (!mat.equals(textureMatrix)) { + textureMatrix.load(mat).store(textureBuffer); + _wglUniformMat4fv(u_matrix_t, textureBuffer); + } + } + + public void setLightPositions(Vector4f pos0, Vector4f pos1) { + if (!pos0.equals(light0Pos) || !pos1.equals(light1Pos)) { + light0Pos.set(pos0); + light1Pos.set(pos1); + _wglUniform3f(u_light0Pos, light0Pos.x, light0Pos.y, light0Pos.z); + _wglUniform3f(u_light1Pos, light1Pos.x, light1Pos.y, light1Pos.z); + } + } + + private int fogMode = 0; + + public void setFogMode(int mode) { + if (fogMode != mode) { + fogMode = mode; + _wglUniform1i(u_fogMode, mode % 2); + _wglUniform1f(u_fogPremultiply, mode / 2); + } + } + + private float fogColorR = 0.0f; + private float fogColorG = 0.0f; + private float fogColorB = 0.0f; + private float fogColorA = 0.0f; + + public void setFogColor(float r, float g, float b, float a) { + if (fogColorR != r || fogColorG != g || fogColorB != b || fogColorA != a) { + fogColorR = r; + fogColorG = g; + fogColorB = b; + fogColorA = a; + _wglUniform4f(u_fogColor, fogColorR, fogColorG, fogColorB, fogColorA); + } + } + + private float fogStart = 0.0f; + private float fogEnd = 0.0f; + + public void setFogStartEnd(float s, float e) { + if (fogStart != s || fogEnd != e) { + fogStart = s; + fogEnd = e; + _wglUniform1f(u_fogStart, fogStart); + _wglUniform1f(u_fogEnd, fogEnd); + } + } + + private float fogDensity = 0.0f; + + public void setFogDensity(float d) { + if (fogDensity != d) { + fogDensity = d; + _wglUniform1f(u_fogDensity, fogDensity); + } + } + + private float alphaTestValue = 0.0f; + + public void setAlphaTest(float limit) { + if (alphaTestValue != limit) { + alphaTestValue = limit; + _wglUniform1f(u_alphaTestF, alphaTestValue); + } + } + + private float tex0x = 0.0f; + private float tex0y = 0.0f; + + public void setTex0Coords(float x, float y) { + if (tex0x != x || tex0y != y) { + tex0x = x; + tex0y = y; + _wglUniform2f(u_texCoordV0, tex0x, tex0y); + } + } + + private float colorUniformR = 0.0f; + private float colorUniformG = 0.0f; + private float colorUniformB = 0.0f; + private float colorUniformA = 0.0f; + + public void setColor(float r, float g, float b, float a) { + if (colorUniformR != r || colorUniformG != g || colorUniformB != b || colorUniformA != a) { + colorUniformR = r; + colorUniformG = g; + colorUniformB = b; + colorUniformA = a; + _wglUniform4f(u_colorUniform, colorUniformR, colorUniformG, colorUniformB, colorUniformA); + } + } + + private float normalUniformX = 0.0f; + private float normalUniformY = 0.0f; + private float normalUniformZ = 0.0f; + + public void setNormal(float x, float y, float z) { + if (normalUniformX != x || normalUniformY != y || normalUniformZ != z) { + normalUniformX = x; + normalUniformY = y; + normalUniformZ = z; + _wglUniform3f(u_normalUniform, normalUniformX, normalUniformY, normalUniformZ); + } + } + +} \ No newline at end of file diff --git a/src/main/java/net/PeytonPlayz585/minecraft/GeneralDigest.java b/src/main/java/net/PeytonPlayz585/minecraft/GeneralDigest.java new file mode 100644 index 0000000..c7054e1 --- /dev/null +++ b/src/main/java/net/PeytonPlayz585/minecraft/GeneralDigest.java @@ -0,0 +1,108 @@ +package net.PeytonPlayz585.minecraft; + +/** + * base implementation of MD4 family style digest as outlined in "Handbook of + * Applied Cryptography", pages 344 - 347. + */ +public abstract class GeneralDigest { + private byte[] xBuf; + private int xBufOff; + + private long byteCount; + + /** + * Standard constructor + */ + protected GeneralDigest() { + xBuf = new byte[4]; + xBufOff = 0; + } + + /** + * Copy constructor. We are using copy constructors in place of the + * Object.clone() interface as this interface is not supported by J2ME. + */ + protected GeneralDigest(GeneralDigest t) { + xBuf = new byte[t.xBuf.length]; + System.arraycopy(t.xBuf, 0, xBuf, 0, t.xBuf.length); + + xBufOff = t.xBufOff; + byteCount = t.byteCount; + } + + public void update(byte in) { + xBuf[xBufOff++] = in; + + if (xBufOff == xBuf.length) { + processWord(xBuf, 0); + xBufOff = 0; + } + + byteCount++; + } + + public void update(byte[] in, int inOff, int len) { + // + // fill the current word + // + while ((xBufOff != 0) && (len > 0)) { + update(in[inOff]); + + inOff++; + len--; + } + + // + // process whole words. + // + while (len > xBuf.length) { + processWord(in, inOff); + + inOff += xBuf.length; + len -= xBuf.length; + byteCount += xBuf.length; + } + + // + // load in the remainder. + // + while (len > 0) { + update(in[inOff]); + + inOff++; + len--; + } + } + + public void finish() { + long bitLength = (byteCount << 3); + + // + // add the pad bytes. + // + update((byte) 128); + + while (xBufOff != 0) { + update((byte) 0); + } + + processLength(bitLength); + + processBlock(); + } + + public void reset() { + byteCount = 0; + + xBufOff = 0; + for (int i = 0; i < xBuf.length; i++) { + xBuf[i] = 0; + } + } + + protected abstract void processWord(byte[] in, int inOff); + + protected abstract void processLength(long bitLength); + + protected abstract void processBlock(); +} \ No newline at end of file diff --git a/src/main/java/net/PeytonPlayz585/minecraft/SHA1Digest.java b/src/main/java/net/PeytonPlayz585/minecraft/SHA1Digest.java new file mode 100644 index 0000000..c93990a --- /dev/null +++ b/src/main/java/net/PeytonPlayz585/minecraft/SHA1Digest.java @@ -0,0 +1,213 @@ +package net.PeytonPlayz585.minecraft; + +/** + * implementation of SHA-1 as outlined in "Handbook of Applied Cryptography", + * pages 346 - 349. + * + * It is interesting to ponder why the, apart from the extra IV, the other + * difference here from MD5 is the "endienness" of the word processing! + */ +public class SHA1Digest extends GeneralDigest { + private static final int DIGEST_LENGTH = 20; + + private int H1, H2, H3, H4, H5; + + private int[] X = new int[80]; + private int xOff; + + /** + * Standard constructor + */ + public SHA1Digest() { + reset(); + } + + /** + * Copy constructor. This will copy the state of the provided message digest. + */ + public SHA1Digest(SHA1Digest t) { + super(t); + + H1 = t.H1; + H2 = t.H2; + H3 = t.H3; + H4 = t.H4; + H5 = t.H5; + + System.arraycopy(t.X, 0, X, 0, t.X.length); + xOff = t.xOff; + } + + public String getAlgorithmName() { + return "SHA-1"; + } + + public int getDigestSize() { + return DIGEST_LENGTH; + } + + protected void processWord(byte[] in, int inOff) { + X[xOff++] = ((in[inOff] & 0xff) << 24) | ((in[inOff + 1] & 0xff) << 16) | ((in[inOff + 2] & 0xff) << 8) + | ((in[inOff + 3] & 0xff)); + + if (xOff == 16) { + processBlock(); + } + } + + private void unpackWord(int word, byte[] out, int outOff) { + out[outOff] = (byte) (word >>> 24); + out[outOff + 1] = (byte) (word >>> 16); + out[outOff + 2] = (byte) (word >>> 8); + out[outOff + 3] = (byte) word; + } + + protected void processLength(long bitLength) { + if (xOff > 14) { + processBlock(); + } + + X[14] = (int) (bitLength >>> 32); + X[15] = (int) (bitLength & 0xffffffff); + } + + public int doFinal(byte[] out, int outOff) { + finish(); + + unpackWord(H1, out, outOff); + unpackWord(H2, out, outOff + 4); + unpackWord(H3, out, outOff + 8); + unpackWord(H4, out, outOff + 12); + unpackWord(H5, out, outOff + 16); + + reset(); + + return DIGEST_LENGTH; + } + + /** + * reset the chaining variables + */ + public void reset() { + super.reset(); + + H1 = 0x67452301; + H2 = 0xefcdab89; + H3 = 0x98badcfe; + H4 = 0x10325476; + H5 = 0xc3d2e1f0; + + xOff = 0; + for (int i = 0; i != X.length; i++) { + X[i] = 0; + } + } + + // + // Additive constants + // + private static final int Y1 = 0x5a827999; + private static final int Y2 = 0x6ed9eba1; + private static final int Y3 = 0x8f1bbcdc; + private static final int Y4 = 0xca62c1d6; + + private int f(int u, int v, int w) { + return ((u & v) | ((~u) & w)); + } + + private int h(int u, int v, int w) { + return (u ^ v ^ w); + } + + private int g(int u, int v, int w) { + return ((u & v) | (u & w) | (v & w)); + } + + private int rotateLeft(int x, int n) { + return (x << n) | (x >>> (32 - n)); + } + + protected void processBlock() { + // + // expand 16 word block into 80 word block. + // + for (int i = 16; i <= 79; i++) { + X[i] = rotateLeft((X[i - 3] ^ X[i - 8] ^ X[i - 14] ^ X[i - 16]), 1); + } + + // + // set up working variables. + // + int A = H1; + int B = H2; + int C = H3; + int D = H4; + int E = H5; + + // + // round 1 + // + for (int j = 0; j <= 19; j++) { + int t = rotateLeft(A, 5) + f(B, C, D) + E + X[j] + Y1; + + E = D; + D = C; + C = rotateLeft(B, 30); + B = A; + A = t; + } + + // + // round 2 + // + for (int j = 20; j <= 39; j++) { + int t = rotateLeft(A, 5) + h(B, C, D) + E + X[j] + Y2; + + E = D; + D = C; + C = rotateLeft(B, 30); + B = A; + A = t; + } + + // + // round 3 + // + for (int j = 40; j <= 59; j++) { + int t = rotateLeft(A, 5) + g(B, C, D) + E + X[j] + Y3; + + E = D; + D = C; + C = rotateLeft(B, 30); + B = A; + A = t; + } + + // + // round 4 + // + for (int j = 60; j <= 79; j++) { + int t = rotateLeft(A, 5) + h(B, C, D) + E + X[j] + Y4; + + E = D; + D = C; + C = rotateLeft(B, 30); + B = A; + A = t; + } + + H1 += A; + H2 += B; + H3 += C; + H4 += D; + H5 += E; + + // + // reset the offset and clean out the word buffer. + // + xOff = 0; + for (int i = 0; i != X.length; i++) { + X[i] = 0; + } + } +} \ No newline at end of file diff --git a/src/main/java/net/PeytonPlayz585/opengl/GLObjectMap.java b/src/main/java/net/PeytonPlayz585/opengl/GLObjectMap.java new file mode 100644 index 0000000..7b7d60b --- /dev/null +++ b/src/main/java/net/PeytonPlayz585/opengl/GLObjectMap.java @@ -0,0 +1,55 @@ +package net.PeytonPlayz585.opengl; + +public class GLObjectMap { + private Object[] values; + private int size; + private int insertIndex; + public int allocatedObjects; + + public GLObjectMap(int initialSize) { + this.values = new Object[initialSize]; + this.size = initialSize; + this.insertIndex = 0; + this.allocatedObjects = 0; + } + + public int register(T obj) { + int start = insertIndex; + do { + ++insertIndex; + if (insertIndex >= size) { + insertIndex = 0; + } + if (insertIndex == start) { + resize(); + return register(obj); + } + } while (values[insertIndex] != null); + values[insertIndex] = obj; + ++allocatedObjects; + return insertIndex; + } + + public T free(int obj) { + if (obj >= size || obj < 0) + return null; + Object ret = values[obj]; + values[obj] = null; + --allocatedObjects; + return (T) ret; + } + + public T get(int obj) { + if (obj >= size || obj < 0) + return null; + return (T) values[obj]; + } + + private void resize() { + int oldSize = size; + size += size / 2; + Object[] oldValues = values; + values = new Object[size]; + System.arraycopy(oldValues, 0, values, 0, oldSize); + } +} \ No newline at end of file diff --git a/src/main/java/net/PeytonPlayz585/opengl/LWJGLMain.java b/src/main/java/net/PeytonPlayz585/opengl/LWJGLMain.java new file mode 100644 index 0000000..1f455ae --- /dev/null +++ b/src/main/java/net/PeytonPlayz585/opengl/LWJGLMain.java @@ -0,0 +1,1966 @@ +package net.PeytonPlayz585.opengl; + +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.nio.ByteBuffer; +import java.nio.IntBuffer; +import java.nio.charset.Charset; +import java.util.Collection; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Set; +import java.util.LinkedList; + +import org.teavm.interop.Async; +import org.teavm.interop.AsyncCallback; +import org.teavm.jso.JSBody; +import org.teavm.jso.JSFunctor; +import org.teavm.jso.JSObject; +import org.teavm.jso.ajax.ReadyStateChangeHandler; +import org.teavm.jso.ajax.XMLHttpRequest; +import org.teavm.jso.browser.TimerHandler; +import org.teavm.jso.browser.Window; +import org.teavm.jso.canvas.CanvasRenderingContext2D; +import org.teavm.jso.canvas.ImageData; +import org.teavm.jso.dom.events.Event; +import org.teavm.jso.dom.events.EventListener; +import org.teavm.jso.dom.events.KeyboardEvent; +import org.teavm.jso.dom.events.MessageEvent; +import org.teavm.jso.dom.events.MouseEvent; +import org.teavm.jso.dom.events.WheelEvent; +import org.teavm.jso.dom.html.HTMLCanvasElement; +import org.teavm.jso.dom.html.HTMLDocument; +import org.teavm.jso.dom.html.HTMLElement; +import org.teavm.jso.dom.html.HTMLImageElement; +import org.teavm.jso.typedarrays.ArrayBuffer; +import org.teavm.jso.typedarrays.Float32Array; +import org.teavm.jso.typedarrays.Int32Array; +import org.teavm.jso.typedarrays.Uint8Array; +import org.teavm.jso.typedarrays.Uint8ClampedArray; +import org.teavm.jso.webaudio.AudioBuffer; +import org.teavm.jso.webaudio.AudioBufferSourceNode; +import org.teavm.jso.webaudio.AudioContext; +import org.teavm.jso.webaudio.AudioListener; +import org.teavm.jso.webaudio.DecodeErrorCallback; +import org.teavm.jso.webaudio.DecodeSuccessCallback; +import org.teavm.jso.webaudio.GainNode; +import org.teavm.jso.webaudio.MediaEvent; +import org.teavm.jso.webaudio.PannerNode; +import org.teavm.jso.webgl.WebGLBuffer; +import org.teavm.jso.webgl.WebGLFramebuffer; +import org.teavm.jso.webgl.WebGLProgram; +import org.teavm.jso.webgl.WebGLRenderbuffer; +import org.teavm.jso.webgl.WebGLShader; +import org.teavm.jso.webgl.WebGLTexture; +import org.teavm.jso.webgl.WebGLUniformLocation; +import org.teavm.jso.websocket.CloseEvent; +import org.teavm.jso.websocket.WebSocket; + +import net.PeytonPlayz585.minecraft.AssetRepository; +import net.PeytonPlayz585.minecraft.Base64; +import net.minecraft.src.MathHelper; + +import static org.teavm.jso.webgl.WebGLRenderingContext.*; +import static net.PeytonPlayz585.opengl.WebGL2RenderingContext.*; +import static net.PeytonPlayz585.opengl.RealOpenGLEmuns.*; + +public class LWJGLMain { + public static final boolean _wisWebGL() { + return true; + } + private static boolean isAnisotropicPatched = false; + public static final boolean _wisAnisotropicPatched() { + return isAnisotropicPatched; + } + public static final String _wgetShaderHeader() { + return "#version 300 es"; + } + + @JSBody(params = { }, script = "return window.location.href;") + private static native String getLocationString(); + + public static final boolean isSSLPage() { + return getLocationString().startsWith("https"); + } + + public static final InputStream loadResource(String path) { + byte[] file = loadResourceBytes(path); + if (file != null) { + return new ByteArrayInputStream(file); + } else { + return null; + } + } + + public static final byte[] loadResourceBytes(String path) { + return AssetRepository.getResource(path); + } + + public static final String fileContents(String path) { + byte[] contents = loadResourceBytes(path); + if(contents == null) { + return null; + }else { + return new String(contents, Charset.forName("UTF-8")); + } + } + +// public static void onWindowUnload() { +// LocalStorageManager.saveStorageG(); +// LocalStorageManager.saveStorageP(); +// } + +// @JSBody(params = { }, script = "window.onbeforeunload = function(){javaMethods.get('net.lax1dude.eaglercraft.adapter.EaglerAdapterImpl2.onWindowUnload()V').invoke();return false;};") +// private static native void onBeforeCloseRegister(); + + public static final String[] fileContentsLines(String path) { + String contents = fileContents(path); + if(contents == null) { + return null; + }else { + return contents.replace("\r\n", "\n").split("[\r\n]"); + } + } + + @Async + public static native String downloadAssetPack(String assetPackageURI); + + private static void downloadAssetPack(String assetPackageURI, final AsyncCallback cb) { + final XMLHttpRequest request = XMLHttpRequest.create(); + request.setResponseType("arraybuffer"); + request.open("GET", assetPackageURI, true); + request.setOnReadyStateChange(new ReadyStateChangeHandler() { + @Override + public void stateChanged() { + if(request.getReadyState() == XMLHttpRequest.DONE) { + Uint8Array bl = Uint8Array.create((ArrayBuffer)request.getResponse()); + loadedPackage = new byte[bl.getByteLength()]; + for(int i = 0; i < loadedPackage.length; ++i) { + loadedPackage[i] = (byte) bl.get(i); + } + cb.complete("yee"); + } + } + }); + request.send(); + } + + @JSBody(params = { "obj" }, script = "window.currentContext = obj;") + private static native int setContextVar(JSObject obj); + + @JSBody(params = { "v", "s" }, script = "window[v] = s;") + public static native void setDebugVar(String v, String s); + + @JSBody(params = { }, script = "if(window.navigator.userActivation){return window.navigator.userActivation.hasBeenActive;}else{return false;}") + public static native boolean hasBeenActive(); + + public static HTMLDocument doc = null; + public static HTMLElement parent = null; + public static HTMLCanvasElement canvas = null; + public static CanvasRenderingContext2D canvasContext = null; + public static HTMLCanvasElement canvasBack = null; + public static WebGL2RenderingContext webgl = null; + public static Window win = null; + private static byte[] loadedPackage = null; + private static EventListener contextmenu = null; + private static EventListener mousedown = null; + private static EventListener mouseup = null; + private static EventListener mousemove = null; + private static EventListener keydown = null; + private static EventListener keyup = null; + private static EventListener keypress = null; + private static EventListener wheel = null; + private static String[] identifier = new String[0]; + + public static final String[] getIdentifier() { + return identifier; + } + + @JSBody(params = { }, script = "return window.navigator.userAgent;") + private static native String getUA(); + + @JSBody(params = { }, script = "return window.navigator.platform;") + private static native String getPlaf(); + + @JSBody(params = { "m" }, script = "return m.offsetX;") + private static native int getOffsetX(MouseEvent m); + + @JSBody(params = { "m" }, script = "return m.offsetY;") + private static native int getOffsetY(MouseEvent m); + + @JSBody(params = { "e" }, script = "return e.which;") + private static native int getWhich(KeyboardEvent e); + + public static final void initializeContext(HTMLElement rootElement, String assetPackageURI) { + parent = rootElement; + String s = parent.getAttribute("style"); + parent.setAttribute("style", (s == null ? "" : s)+"overflow-x:hidden;overflow-y:hidden;"); + win = Window.current(); + doc = win.getDocument(); + canvas = (HTMLCanvasElement)doc.createElement("canvas"); + width = rootElement.getClientWidth(); + height = rootElement.getClientHeight(); + canvas.setWidth(width); + canvas.setHeight(height); + canvasContext = (CanvasRenderingContext2D) canvas.getContext("2d"); + canvas.setAttribute("id", "deevis589723589"); + rootElement.appendChild(canvas); + canvasBack = (HTMLCanvasElement)doc.createElement("canvas"); + canvasBack.setWidth(width); + canvasBack.setHeight(height); + webgl = (WebGL2RenderingContext) canvasBack.getContext("webgl2", youEagler()); + if(webgl == null) { + throw new RuntimeException("WebGL 2.0 is not supported in your browser ("+getUA()+")"); + } + setContextVar(webgl); + + webgl.getExtension("EXT_texture_filter_anisotropic"); + + win.addEventListener("contextmenu", contextmenu = new EventListener() { + @Override + public void handleEvent(MouseEvent evt) { + evt.preventDefault(); + evt.stopPropagation(); + } + }); + canvas.addEventListener("mousedown", mousedown = new EventListener() { + @Override + public void handleEvent(MouseEvent evt) { + int b = evt.getButton(); + buttonStates[b == 1 ? 2 : (b == 2 ? 1 : b)] = true; + mouseEvents.add(evt); + evt.preventDefault(); + evt.stopPropagation(); + forceMouseGrabbed(); + } + }); + canvas.addEventListener("mouseup", mouseup = new EventListener() { + @Override + public void handleEvent(MouseEvent evt) { + int b = evt.getButton(); + buttonStates[b == 1 ? 2 : (b == 2 ? 1 : b)] = false; + mouseEvents.add(evt); + evt.preventDefault(); + evt.stopPropagation(); + } + }); + canvas.addEventListener("mousemove", mousemove = new EventListener() { + @Override + public void handleEvent(MouseEvent evt) { + mouseX = getOffsetX(evt); + mouseY = canvas.getClientHeight() - getOffsetY(evt); + mouseDX += evt.getMovementX(); + mouseDY += -evt.getMovementY(); + evt.preventDefault(); + evt.stopPropagation(); + } + }); + win.addEventListener("keydown", keydown = new EventListener() { + @Override + public void handleEvent(KeyboardEvent evt) { + //keyStates[remapKey(evt.getKeyCode())] = true; + keyStates[remapKey(getWhich(evt))] = true; + keyEvents.add(evt); + evt.preventDefault(); + evt.stopPropagation(); + forceMouseGrabbed(); + } + }); + win.addEventListener("keyup", keyup = new EventListener() { + @Override + public void handleEvent(KeyboardEvent evt) { + //keyStates[remapKey(evt.getKeyCode())] = false; + keyStates[remapKey(getWhich(evt))] = false; + keyEvents.add(evt); + evt.preventDefault(); + evt.stopPropagation(); + } + }); + win.addEventListener("keypress", keypress = new EventListener() { + @Override + public void handleEvent(KeyboardEvent evt) { + if(enableRepeatEvents && evt.isRepeat()) keyEvents.add(evt); + evt.preventDefault(); + evt.stopPropagation(); + } + }); + canvas.addEventListener("wheel", wheel = new EventListener() { + @Override + public void handleEvent(WheelEvent evt) { + mouseEvents.add(evt); + evt.preventDefault(); + evt.stopPropagation(); + } + }); + win.addEventListener("blur", new EventListener() { + @Override + public void handleEvent(WheelEvent evt) { + isWindowFocused = false; + } + }); + win.addEventListener("focus", new EventListener() { + @Override + public void handleEvent(WheelEvent evt) { + isWindowFocused = true; + forceMouseGrabbed(); + } + }); + //onBeforeCloseRegister(); + initFileChooser(); + + downloadAssetPack(assetPackageURI); + + try { + AssetRepository.install(loadedPackage); + } catch (IOException e) { + e.printStackTrace(); + } + + audioctx = AudioContext.create(); + + mouseEvents.clear(); + keyEvents.clear(); + } + + @JSBody(params = { }, script = + "window.eagsFileChooser = {\r\n" + + "inputElement: null,\r\n" + + "openFileChooser: function(ext, mime){\r\n" + + "var el = window.eagsFileChooser.inputElement = document.createElement(\"input\");\r\n" + + "el.type = \"file\";\r\n" + + "el.multiple = false;\r\n" + + "el.addEventListener(\"change\", function(evt){\r\n" + + "var f = window.eagsFileChooser.inputElement.files;\r\n" + + "if(f.length == 0){\r\n" + + "window.eagsFileChooser.getFileChooserResult = null;\r\n" + + "}else{\r\n" + + "(async function(){\r\n" + + "window.eagsFileChooser.getFileChooserResult = await f[0].arrayBuffer();\r\n" + + "window.eagsFileChooser.getFileChooserResultName = f[0].name;\r\n" + + "})();\r\n" + + "}\r\n" + + "});\r\n" + + "window.eagsFileChooser.getFileChooserResult = null;\r\n" + + "window.eagsFileChooser.getFileChooserResultName = null;\r\n" + + "el.accept = mime;\r\n" + + "el.click();\r\n" + + "},\r\n" + + "getFileChooserResult: null,\r\n" + + "getFileChooserResultName: null\r\n" + + "};") + private static native void initFileChooser(); + + public static final void destroyContext() { + + } + + public static final void removeEventHandlers() { + win.removeEventListener("contextmenu", contextmenu); + win.removeEventListener("mousedown", mousedown); + win.removeEventListener("mouseup", mouseup); + win.removeEventListener("mousemove", mousemove); + win.removeEventListener("keydown", keydown); + win.removeEventListener("keyup", keyup); + win.removeEventListener("keypress", keypress); + win.removeEventListener("wheel", wheel); + } + + private static LinkedList mouseEvents = new LinkedList(); + private static LinkedList keyEvents = new LinkedList(); + + private static int mouseX = 0; + private static int mouseY = 0; + private static double mouseDX = 0.0D; + private static double mouseDY = 0.0D; + private static int width = 0; + private static int height = 0; + private static boolean enableRepeatEvents = false; + private static boolean isWindowFocused = true; + + @JSBody(params = { }, script = "return {antialias: false, depth: true, powerPreference: \"high-performance\", desynchronized: false, preserveDrawingBuffer: false, premultipliedAlpha: false, alpha: false};") + public static native JSObject youEagler(); + + public static final int _wGL_TEXTURE_2D = GL_TEXTURE_2D; + public static final int _wGL_DEPTH_TEST = GL_DEPTH_TEST; + public static final int _wGL_LEQUAL = GL_LEQUAL; + public static final int _wGL_GEQUAL = GL_GEQUAL; + public static final int _wGL_GREATER = GL_GREATER; + public static final int _wGL_LESS = GL_LESS; + public static final int _wGL_BACK = GL_BACK; + public static final int _wGL_FRONT = GL_FRONT; + public static final int _wGL_FRONT_AND_BACK = GL_FRONT_AND_BACK; + public static final int _wGL_COLOR_BUFFER_BIT = GL_COLOR_BUFFER_BIT; + public static final int _wGL_DEPTH_BUFFER_BIT = GL_DEPTH_BUFFER_BIT; + public static final int _wGL_BLEND = GL_BLEND; + public static final int _wGL_RGBA = GL_RGBA; + public static final int _wGL_RGB = GL_RGB; + public static final int _wGL_RGB8 = GL_RGB8; + public static final int _wGL_RGBA8 = GL_RGBA8; + public static final int _wGL_UNSIGNED_BYTE = GL_UNSIGNED_BYTE; + public static final int _wGL_UNSIGNED_SHORT = GL_UNSIGNED_SHORT; + public static final int _wGL_SRC_ALPHA = GL_SRC_ALPHA; + public static final int _wGL_ONE_MINUS_SRC_ALPHA = GL_ONE_MINUS_SRC_ALPHA; + public static final int _wGL_ONE_MINUS_DST_COLOR = GL_ONE_MINUS_DST_COLOR; + public static final int _wGL_ONE_MINUS_SRC_COLOR = GL_ONE_MINUS_SRC_COLOR; + public static final int _wGL_ZERO = GL_ZERO; + public static final int _wGL_CULL_FACE = GL_CULL_FACE; + public static final int _wGL_TEXTURE_MIN_FILTER = GL_TEXTURE_MIN_FILTER; + public static final int _wGL_TEXTURE_MAG_FILTER = GL_TEXTURE_MAG_FILTER; + public static final int _wGL_LINEAR = GL_LINEAR; + public static final int _wGL_EQUAL = GL_EQUAL; + public static final int _wGL_SRC_COLOR = GL_SRC_COLOR; + public static final int _wGL_ONE = GL_ONE; + public static final int _wGL_NEAREST = GL_NEAREST; + public static final int _wGL_CLAMP = GL_CLAMP_TO_EDGE; + public static final int _wGL_TEXTURE_WRAP_S = GL_TEXTURE_WRAP_S; + public static final int _wGL_TEXTURE_WRAP_T = GL_TEXTURE_WRAP_T; + public static final int _wGL_REPEAT = GL_REPEAT; + public static final int _wGL_DST_COLOR = GL_DST_COLOR; + public static final int _wGL_DST_ALPHA = GL_DST_ALPHA; + public static final int _wGL_FLOAT = GL_FLOAT; + public static final int _wGL_SHORT = GL_SHORT; + public static final int _wGL_TRIANGLES = GL_TRIANGLES; + public static final int _wGL_TRIANGLE_STRIP = GL_TRIANGLE_STRIP; + public static final int _wGL_TRIANGLE_FAN = GL_TRIANGLE_FAN; + public static final int _wGL_LINE_STRIP = GL_LINE_STRIP; + public static final int _wGL_LINES = GL_LINES; + public static final int _wGL_PACK_ALIGNMENT = GL_PACK_ALIGNMENT; + public static final int _wGL_UNPACK_ALIGNMENT = GL_UNPACK_ALIGNMENT; + public static final int _wGL_TEXTURE0 = GL_TEXTURE0; + public static final int _wGL_TEXTURE1 = GL_TEXTURE1; + public static final int _wGL_TEXTURE2 = GL_TEXTURE2; + public static final int _wGL_TEXTURE3 = GL_TEXTURE3; + public static final int _wGL_VIEWPORT = GL_VIEWPORT; + public static final int _wGL_VERTEX_SHADER = GL_VERTEX_SHADER; + public static final int _wGL_FRAGMENT_SHADER = GL_FRAGMENT_SHADER; + public static final int _wGL_ARRAY_BUFFER = GL_ARRAY_BUFFER; + public static final int _wGL_ELEMENT_ARRAY_BUFFER = GL_ELEMENT_ARRAY_BUFFER; + public static final int _wGL_STATIC_DRAW = GL_STATIC_DRAW; + public static final int _wGL_DYNAMIC_DRAW = GL_DYNAMIC_DRAW; + public static final int _wGL_INVALID_ENUM = GL_INVALID_ENUM; + public static final int _wGL_INVALID_VALUE= GL_INVALID_VALUE; + public static final int _wGL_INVALID_OPERATION = GL_INVALID_OPERATION; + public static final int _wGL_OUT_OF_MEMORY = GL_OUT_OF_MEMORY; + public static final int _wGL_CONTEXT_LOST_WEBGL = GL_CONTEXT_LOST_WEBGL; + public static final int _wGL_FRAMEBUFFER_COMPLETE = FRAMEBUFFER_COMPLETE; + public static final int _wGL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT = FRAMEBUFFER_INCOMPLETE_ATTACHMENT; + public static final int _wGL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT = FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT; + public static final int _wGL_COLOR_ATTACHMENT0 = COLOR_ATTACHMENT0; + public static final int _wGL_DEPTH_STENCIL_ATTACHMENT = DEPTH_STENCIL_ATTACHMENT; + public static final int _wGL_DEPTH_STENCIL = DEPTH_STENCIL; + public static final int _wGL_NEAREST_MIPMAP_LINEAR = GL_NEAREST_MIPMAP_LINEAR; + public static final int _wGL_LINEAR_MIPMAP_LINEAR = GL_LINEAR_MIPMAP_LINEAR; + public static final int _wGL_LINEAR_MIPMAP_NEAREST = GL_LINEAR_MIPMAP_NEAREST; + public static final int _wGL_NEAREST_MIPMAP_NEAREST = GL_NEAREST_MIPMAP_NEAREST; + public static final int _wGL_TEXTURE_MAX_LEVEL = GL_TEXTURE_MAX_LEVEL; + public static final int _wGL_UNSIGNED_INT_24_8 = UNSIGNED_INT_24_8; + public static final int _wGL_UNSIGNED_INT = GL_UNSIGNED_INT; + public static final int _wGL_ANY_SAMPLES_PASSED = ANY_SAMPLES_PASSED; + public static final int _wGL_QUERY_RESULT = GL_QUERY_RESULT; + public static final int _wGL_QUERY_RESULT_AVAILABLE = GL_QUERY_RESULT_AVAILABLE; + public static final int _wGL_TEXTURE_MAX_ANISOTROPY = TEXTURE_MAX_ANISOTROPY_EXT; + public static final int _wGL_DEPTH24_STENCIL8 = DEPTH24_STENCIL8; + public static final int _wGL_DEPTH_COMPONENT32F = DEPTH_COMPONENT32F; + public static final int _wGL_DEPTH_ATTACHMENT = DEPTH_ATTACHMENT; + public static final int _wGL_MULTISAMPLE = -1; + public static final int _wGL_LINE_SMOOTH = -1; + public static final int _wGL_READ_FRAMEBUFFER = READ_FRAMEBUFFER; + public static final int _wGL_DRAW_FRAMEBUFFER = DRAW_FRAMEBUFFER; + public static final int _wGL_FRAMEBUFFER = FRAMEBUFFER; + public static final int _wGL_POLYGON_OFFSET_FILL = GL_POLYGON_OFFSET_FILL; + + public static final class TextureGL { + protected final WebGLTexture obj; + public int w = -1; + public int h = -1; + public boolean nearest = true; + public boolean anisotropic = false; + protected TextureGL(WebGLTexture obj) { + this.obj = obj; + } + } + public static final class BufferGL { + protected final WebGLBuffer obj; + protected BufferGL(WebGLBuffer obj) { + this.obj = obj; + } + } + public static final class ShaderGL { + protected final WebGLShader obj; + protected ShaderGL(WebGLShader obj) { + this.obj = obj; + } + } + private static int progId = 0; + public static final class ProgramGL { + protected final WebGLProgram obj; + protected final int hashcode; + protected ProgramGL(WebGLProgram obj) { + this.obj = obj; + this.hashcode = ++progId; + } + } + public static final class UniformGL { + protected final WebGLUniformLocation obj; + protected UniformGL(WebGLUniformLocation obj) { + this.obj = obj; + } + } + public static final class BufferArrayGL { + protected final WebGLVertexArray obj; + public boolean isQuadBufferBound; + protected BufferArrayGL(WebGLVertexArray obj) { + this.obj = obj; + this.isQuadBufferBound = false; + } + } + public static final class FramebufferGL { + protected final WebGLFramebuffer obj; + protected FramebufferGL(WebGLFramebuffer obj) { + this.obj = obj; + } + } + public static final class RenderbufferGL { + protected final WebGLRenderbuffer obj; + protected RenderbufferGL(WebGLRenderbuffer obj) { + this.obj = obj; + } + } + public static final class QueryGL { + protected final WebGLQuery obj; + protected QueryGL(WebGLQuery obj) { + this.obj = obj; + } + } + + public static final void _wglEnable(int p1) { + webgl.enable(p1); + } + public static final void _wglClearDepth(float p1) { + webgl.clearDepth(p1); + } + public static final void _wglDepthFunc(int p1) { + webgl.depthFunc(p1); + } + public static final void _wglCullFace(int p1) { + webgl.cullFace(p1); + } + private static int[] viewportCache = new int[4]; + public static final void _wglViewport(int p1, int p2, int p3, int p4) { + viewportCache[0] = p1; viewportCache[1] = p2; + viewportCache[2] = p3; viewportCache[3] = p4; + webgl.viewport(p1, p2, p3, p4); + } + public static final void _wglClear(int p1) { + webgl.clear(p1); + } + public static final void _wglClearColor(float p1, float p2, float p3, float p4) { + webgl.clearColor(p1, p2, p3, p4); + } + public static final void _wglDisable(int p1) { + webgl.disable(p1); + } + public static final int _wglGetError() { + return webgl.getError(); + } + public static final void _wglFlush() { + //webgl.flush(); + } + private static Uint8Array uploadBuffer = Uint8Array.create(ArrayBuffer.create(4 * 1024 * 1024)); + public static final void _wglTexImage2D(int p1, int p2, int p3, int p4, int p5, int p6, int p7, int p8, ByteBuffer p9) { + if(p9 == null) { + webgl.texImage2D(p1, p2, p3, p4, p5, p6, p7, p8, null); + }else { + int len = p9.remaining(); + Uint8Array uploadBuffer1 = uploadBuffer; + for(int i = 0; i < len; ++i) { + uploadBuffer1.set(i, (short) ((int)p9.get() & 0xff)); + } + Uint8Array data = Uint8Array.create(uploadBuffer.getBuffer(), 0, len); + webgl.texImage2D(p1, p2, p3, p4, p5, p6, p7, p8, data); + } + } + public static final void _wglBlendFunc(int p1, int p2) { + webgl.blendFunc(p1, p2); + } + public static final void _wglBlendFuncSeparate(int p1, int p2, int p3, int p4) { + webgl.blendFuncSeparate(p1, p2, p3, p4); + } + public static final void _wglDepthMask(boolean p1) { + webgl.depthMask(p1); + } + public static final void _wglColorMask(boolean p1, boolean p2, boolean p3, boolean p4) { + webgl.colorMask(p1, p2, p3, p4); + } + public static final void _wglBindTexture(int p1, TextureGL p2) { + webgl.bindTexture(p1, p2 == null ? null : p2.obj); + } + public static final void _wglCopyTexSubImage2D(int p1, int p2, int p3, int p4, int p5, int p6, int p7, int p8) { + webgl.copyTexSubImage2D(p1, p2, p3, p4, p5, p6, p7, p8); + } + public static final void _wglTexParameteri(int p1, int p2, int p3) { + webgl.texParameteri(p1, p2, p3); + } + public static final void _wglTexParameterf(int p1, int p2, float p3) { + webgl.texParameterf(p1, p2, p3); + } + public static final void _wglTexImage2D(int p1, int p2, int p3, int p4, int p5, int p6, int p7, int p8, IntBuffer p9) { + int len = p9.remaining(); + Int32Array deevis = Int32Array.create(uploadBuffer.getBuffer()); + for(int i = 0; i < len; ++i) { + deevis.set(i, p9.get()); + } + Uint8Array data = Uint8Array.create(uploadBuffer.getBuffer(), 0, len*4); + webgl.texImage2D(p1, p2, p3, p4, p5, p6, p7, p8, data); + } + public static final void _wglTexSubImage2D(int p1, int p2, int p3, int p4, int p5, int p6, int p7, int p8, IntBuffer p9) { + int len = p9.remaining(); + Int32Array deevis = Int32Array.create(uploadBuffer.getBuffer()); + for(int i = 0; i < len; ++i) { + deevis.set(i, p9.get()); + } + Uint8Array data = Uint8Array.create(uploadBuffer.getBuffer(), 0, len*4); + webgl.texSubImage2D(p1, p2, p3, p4, p5, p6, p7, p8, data); + } + public static final void _wglDeleteTextures(TextureGL p1) { + webgl.deleteTexture(p1.obj); + } + public static final void _wglDrawArrays(int p1, int p2, int p3) { + webgl.drawArrays(p1, p2, p3); + } + public static final void _wglDrawElements(int p1, int p2, int p3, int p4) { + webgl.drawElements(p1, p2, p3, p4); + } + public static final TextureGL _wglGenTextures() { + return new TextureGL(webgl.createTexture()); + } + public static final void _wglTexSubImage2D(int p1, int p2, int p3, int p4, int p5, int p6, int p7, int p8, ByteBuffer p9) { + int len = p9.remaining(); + for(int i = 0; i < len; ++i) { + uploadBuffer.set(i, (short) ((int)p9.get() & 0xff)); + } + Uint8Array data = Uint8Array.create(uploadBuffer.getBuffer(), 0, len); + webgl.texSubImage2D(p1, p2, p3, p4, p5, p6, p7, p8, data); + } + public static final void _wglActiveTexture(int p1) { + webgl.activeTexture(p1); + } + public static final ProgramGL _wglCreateProgram() { + return new ProgramGL(webgl.createProgram()); + } + public static final ShaderGL _wglCreateShader(int p1) { + return new ShaderGL(webgl.createShader(p1)); + } + public static final void _wglAttachShader(ProgramGL p1, ShaderGL p2) { + webgl.attachShader(p1.obj, p2.obj); + } + public static final void _wglDetachShader(ProgramGL p1, ShaderGL p2) { + webgl.detachShader(p1.obj, p2.obj); + } + public static final void _wglCompileShader(ShaderGL p1) { + webgl.compileShader(p1.obj); + } + public static final void _wglLinkProgram(ProgramGL p1) { + webgl.linkProgram(p1.obj); + } + public static final void _wglShaderSource(ShaderGL p1, String p2) { + webgl.shaderSource(p1.obj, p2); + } + public static final String _wglGetShaderInfoLog(ShaderGL p1) { + return webgl.getShaderInfoLog(p1.obj); + } + public static final String _wglGetProgramInfoLog(ProgramGL p1) { + return webgl.getProgramInfoLog(p1.obj); + } + public static final boolean _wglGetShaderCompiled(ShaderGL p1) { + return webgl.getShaderParameteri(p1.obj, GL_COMPILE_STATUS) == 1; + } + public static final boolean _wglGetProgramLinked(ProgramGL p1) { + return webgl.getProgramParameteri(p1.obj, GL_LINK_STATUS) == 1; + } + public static final void _wglDeleteShader(ShaderGL p1) { + webgl.deleteShader(p1.obj); + } + public static final void _wglDeleteProgram(ProgramGL p1) { + webgl.deleteProgram(p1.obj); + } + public static final BufferGL _wglCreateBuffer() { + return new BufferGL(webgl.createBuffer()); + } + public static final void _wglDeleteBuffer(BufferGL p1) { + webgl.deleteBuffer(p1.obj); + } + public static final void _wglBindBuffer(int p1, BufferGL p2) { + webgl.bindBuffer(p1, p2 == null ? null : p2.obj); + } + public static final void _wglBufferData0(int p1, IntBuffer p2, int p3) { + int len = p2.remaining(); + Int32Array deevis = Int32Array.create(uploadBuffer.getBuffer()); + for(int i = 0; i < len; ++i) { + deevis.set(i, p2.get()); + } + Uint8Array data = Uint8Array.create(uploadBuffer.getBuffer(), 0, len*4); + webgl.bufferData(p1, data, p3); + } + public static final void _wglBufferSubData0(int p1, int p2, IntBuffer p3) { + int len = p3.remaining(); + Int32Array deevis = Int32Array.create(uploadBuffer.getBuffer()); + for(int i = 0; i < len; ++i) { + deevis.set(i, p3.get()); + } + Uint8Array data = Uint8Array.create(uploadBuffer.getBuffer(), 0, len*4); + webgl.bufferSubData(p1, p2, data); + } + public static final void _wglBufferData(int p1, Object p2, int p3) { + webgl.bufferData(p1, (Int32Array)p2, p3); + } + public static final void _wglBufferSubData(int p1, int p2, Object p3) { + webgl.bufferSubData(p1, p2, (Int32Array)p3); + } + public static final void _wglBindAttribLocation(ProgramGL p1, int p2, String p3) { + webgl.bindAttribLocation(p1.obj, p2, p3); + } + public static final void _wglEnableVertexAttribArray(int p1) { + webgl.enableVertexAttribArray(p1); + } + public static final void _wglDisableVertexAttribArray(int p1) { + webgl.disableVertexAttribArray(p1); + } + public static final UniformGL _wglGetUniformLocation(ProgramGL p1, String p2) { + WebGLUniformLocation u = webgl.getUniformLocation(p1.obj, p2); + return u == null ? null : new UniformGL(u); + } + public static final void _wglBindAttributeLocation(ProgramGL p1, int p2, String p3) { + webgl.bindAttribLocation(p1.obj, p2, p3); + } + public static final void _wglUniform1f(UniformGL p1, float p2) { + if(p1 != null) webgl.uniform1f(p1.obj, p2); + } + public static final void _wglUniform2f(UniformGL p1, float p2, float p3) { + if(p1 != null) webgl.uniform2f(p1.obj, p2, p3); + } + public static final void _wglUniform3f(UniformGL p1, float p2, float p3, float p4) { + if(p1 != null) webgl.uniform3f(p1.obj, p2, p3, p4); + } + public static final void _wglUniform4f(UniformGL p1, float p2, float p3, float p4, float p5) { + if(p1 != null) webgl.uniform4f(p1.obj, p2, p3, p4, p5); + } + public static final void _wglUniform1i(UniformGL p1, int p2) { + if(p1 != null) webgl.uniform1i(p1.obj, p2); + } + public static final void _wglUniform2i(UniformGL p1, int p2, int p3) { + if(p1 != null) webgl.uniform2i(p1.obj, p2, p3); + } + public static final void _wglUniform3i(UniformGL p1, int p2, int p3, int p4) { + if(p1 != null) webgl.uniform3i(p1.obj, p2, p3, p4); + } + public static final void _wglUniform4i(UniformGL p1, int p2, int p3, int p4, int p5) { + if(p1 != null) webgl.uniform4i(p1.obj, p2, p3, p4, p5); + } + private static Float32Array mat2 = Float32Array.create(4); + private static Float32Array mat3 = Float32Array.create(9); + private static Float32Array mat4 = Float32Array.create(16); + public static final void _wglUniformMat2fv(UniformGL p1, float[] mat) { + mat2.set(mat); + if(p1 != null) webgl.uniformMatrix2fv(p1.obj, false, mat2); + } + public static final void _wglUniformMat3fv(UniformGL p1, float[] mat) { + mat3.set(mat); + if(p1 != null) webgl.uniformMatrix3fv(p1.obj, false, mat3); + } + public static final void _wglUniformMat4fv(UniformGL p1, float[] mat) { + mat4.set(mat); + if(p1 != null) webgl.uniformMatrix4fv(p1.obj, false, mat4); + } + private static int currentProgram = -1; + public static final void _wglUseProgram(ProgramGL p1) { + if(p1 != null && currentProgram != p1.hashcode) { + currentProgram = p1.hashcode; + webgl.useProgram(p1.obj); + } + } + public static final void _wglGetParameter(int p1, int size, int[] ret) { + if(p1 == _wGL_VIEWPORT) { + ret[0] = viewportCache[0]; + ret[1] = viewportCache[1]; + ret[2] = viewportCache[2]; + ret[3] = viewportCache[3]; + } + } + public static final void _wglPolygonOffset(float p1, float p2) { + webgl.polygonOffset(p1, p2); + } + public static final void _wglVertexAttribPointer(int p1, int p2, int p3, boolean p4, int p5, int p6) { + webgl.vertexAttribPointer(p1, p2, p3, p4, p5, p6); + } + public static final void _wglBindFramebuffer(int p1, FramebufferGL p2) { + webgl.bindFramebuffer(p1, p2 == null ? null : p2.obj); + } + public static final FramebufferGL _wglCreateFramebuffer() { + return new FramebufferGL(webgl.createFramebuffer()); + } + public static final void _wglDeleteFramebuffer(FramebufferGL p1) { + webgl.deleteFramebuffer(p1.obj); + } + public static final void _wglFramebufferTexture2D(int p1, TextureGL p2) { + webgl.framebufferTexture2D(FRAMEBUFFER, p1, GL_TEXTURE_2D, p2 == null ? null : p2.obj, 0); + } + public static final QueryGL _wglCreateQuery() { + return new QueryGL(webgl.createQuery()); + } + public static final void _wglBeginQuery(int p1, QueryGL p2) { + webgl.beginQuery(p1, p2.obj); + } + public static final void _wglEndQuery(int p1) { + webgl.endQuery(p1); + } + public static final void _wglDeleteQuery(QueryGL p1) { + webgl.deleteQuery(p1.obj); + } + public static final int _wglGetQueryObjecti(QueryGL p1, int p2) { + return webgl.getQueryParameter(p1.obj, p2); + } + public static final BufferArrayGL _wglCreateVertexArray() { + return new BufferArrayGL(webgl.createVertexArray()); + } + public static final void _wglDeleteVertexArray(BufferArrayGL p1) { + webgl.deleteVertexArray(p1.obj); + } + public static final void _wglBindVertexArray(BufferArrayGL p1) { + webgl.bindVertexArray(p1 == null ? null : p1.obj); + } + public static final void _wglDrawBuffer(int p1) { + webgl.drawBuffers(new int[] { p1 }); + } + public static final RenderbufferGL _wglCreateRenderBuffer() { + return new RenderbufferGL(webgl.createRenderbuffer()); + } + public static final void _wglBindRenderbuffer(RenderbufferGL p1) { + webgl.bindRenderbuffer(RENDERBUFFER, p1 == null ? null : p1.obj); + } + public static final void _wglRenderbufferStorage(int p1, int p2, int p3) { + webgl.renderbufferStorage(RENDERBUFFER, p1, p2, p3); + } + public static final void _wglFramebufferRenderbuffer(int p1, RenderbufferGL p2) { + webgl.framebufferRenderbuffer(FRAMEBUFFER, p1, RENDERBUFFER, p2 == null ? null : p2.obj); + } + public static final void _wglDeleteRenderbuffer(RenderbufferGL p1) { + webgl.deleteRenderbuffer(p1.obj); + } + public static final void _wglRenderbufferStorageMultisample(int p1, int p2, int p3, int p4) { + webgl.renderbufferStorageMultisample(RENDERBUFFER, p1, p2, p3, p4); + } + public static final void _wglBlitFramebuffer(int p1, int p2, int p3, int p4, int p5, int p6, int p7, int p8, int p9, int p10) { + webgl.blitFramebuffer(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10); + } + public static final int _wglGetAttribLocation(ProgramGL p1, String p2) { + return webgl.getAttribLocation(p1.obj, p2); + } + + @JSBody(params = { "ctx", "p" }, script = "return ctx.getTexParameter(0x0DE1, p) | 0;") + private static final native int __wglGetTexParameteri(WebGL2RenderingContext ctx, int p); + public static final int _wglGetTexParameteri(int p1) { + return __wglGetTexParameteri(webgl, p1); + } + @JSBody(params = { "ctx", "p" }, script = "return (0.0 + ctx.getTexParameter(0x0DE1, p));") + private static final native float __wglGetTexParameterf(WebGL2RenderingContext ctx, int p); + public static final float _wglGetTexParameterf(int p1) { + return __wglGetTexParameterf(webgl, p1); + } + public static final boolean isWindows() { + return getPlaf().toLowerCase().contains("win"); + } + private static HTMLCanvasElement imageLoadCanvas = null; + private static CanvasRenderingContext2D imageLoadContext = null; + + @JSBody(params = { "buf", "mime" }, script = "return URL.createObjectURL(new Blob([buf], {type: mime}));") + private static native String getDataURL(ArrayBuffer buf, String mime); + + @JSBody(params = { "url" }, script = "URL.revokeObjectURL(url);") + private static native void freeDataURL(String url); + + public static final MinecraftImageData loadPNG(byte[] data) { + ArrayBuffer arr = ArrayBuffer.create(data.length); + Uint8Array.create(arr).set(data); + return loadPNG0(arr); + } + + @Async + private static native MinecraftImageData loadPNG0(ArrayBuffer data); + + private static void loadPNG0(ArrayBuffer data, final AsyncCallback ret) { + final HTMLImageElement toLoad = (HTMLImageElement) doc.createElement("img"); + toLoad.addEventListener("load", new EventListener() { + @Override + public void handleEvent(Event evt) { + if(imageLoadCanvas == null) { + imageLoadCanvas = (HTMLCanvasElement) doc.createElement("canvas"); + } + if(imageLoadCanvas.getWidth() < toLoad.getWidth()) { + imageLoadCanvas.setWidth(toLoad.getWidth()); + } + if(imageLoadCanvas.getHeight() < toLoad.getHeight()) { + imageLoadCanvas.setHeight(toLoad.getHeight()); + } + if(imageLoadContext == null) { + imageLoadContext = (CanvasRenderingContext2D) imageLoadCanvas.getContext("2d"); + } + imageLoadContext.clearRect(0, 0, toLoad.getWidth(), toLoad.getHeight()); + imageLoadContext.drawImage(toLoad, 0, 0, toLoad.getWidth(), toLoad.getHeight()); + ImageData pxlsDat = imageLoadContext.getImageData(0, 0, toLoad.getWidth(), toLoad.getHeight()); + Uint8ClampedArray pxls = pxlsDat.getData(); + int totalPixels = pxlsDat.getWidth() * pxlsDat.getHeight(); + freeDataURL(toLoad.getSrc()); + if(pxls.getByteLength() < totalPixels * 4) { + ret.complete(null); + return; + } + int[] pixels = new int[totalPixels]; + for(int i = 0; i < pixels.length; ++i) { + pixels[i] = (pxls.get(i * 4) << 16) | (pxls.get(i * 4 + 1) << 8) | pxls.get(i * 4 + 2) | (pxls.get(i * 4 + 3) << 24); + } + ret.complete(new MinecraftImageData(pixels, pxlsDat.getWidth(), pxlsDat.getHeight(), true)); + } + }); + toLoad.addEventListener("error", new EventListener() { + @Override + public void handleEvent(Event evt) { + freeDataURL(toLoad.getSrc()); + ret.complete(null); + } + }); + String src = getDataURL(data, "image/png"); + if(src == null) { + ret.complete(null); + }else { + toLoad.setSrc(src); + } + } + + private static MouseEvent currentEvent = null; + private static KeyboardEvent currentEventK = null; + private static boolean[] buttonStates = new boolean[8]; + private static boolean[] keyStates = new boolean[256]; + public static final boolean mouseNext() { + currentEvent = null; + return !mouseEvents.isEmpty() && (currentEvent = mouseEvents.remove(0)) != null; + } + public static final int mouseGetEventButton() { + if(currentEvent == null) return -1; + int b = currentEvent.getButton(); + return b == 1 ? 2 : (b == 2 ? 1 : b); + } + public static final boolean mouseGetEventButtonState() { + return currentEvent == null ? false : currentEvent.getType().equals(MouseEvent.MOUSEDOWN); + } + public static final boolean mouseIsButtonDown(int p1) { + return buttonStates[p1]; + } + public static final int mouseGetEventDWheel() { + return ("wheel".equals(currentEvent.getType())) ? (((WheelEvent)currentEvent).getDeltaY() == 0.0D ? 0 : (((WheelEvent)currentEvent).getDeltaY() > 0.0D ? -1 : 1)) : 0; + } + public static final void mouseSetCursorPosition(int x, int y) { + + } + private static long mouseUngrabTimer = 0l; + private static int mouseUngrabTimeout = 0; + private static boolean needsPointerLock = false; + public static final void mouseSetGrabbed(boolean grabbed) { + needsPointerLock = grabbed; + if(grabbed) { + mouseDX = 0.0D; + mouseDY = 0.0D; + Window.setTimeout(new TimerHandler() { + @Override + public void onTimer() { + canvas.requestPointerLock(); + long t = System.currentTimeMillis(); + if(mouseUngrabTimeout != 0) Window.clearTimeout(mouseUngrabTimeout); + mouseUngrabTimeout = 0; + if(t - mouseUngrabTimer < 3000l) { + mouseUngrabTimeout = Window.setTimeout(new TimerHandler() { + @Override + public void onTimer() { + canvas.requestPointerLock(); + mouseUngrabTimeout = 0; + } + }, 3000 - (int)(t - mouseUngrabTimer)); + } + } + }, 200); + }else { + mouseUngrabTimer = System.currentTimeMillis(); + if(mouseUngrabTimeout != 0) Window.clearTimeout(mouseUngrabTimeout); + mouseUngrabTimeout = 0; + doc.exitPointerLock(); + } + } + private static void forceMouseGrabbed() { + long t = System.currentTimeMillis(); + if(t - mouseUngrabTimer > 3000l) { + if(needsPointerLock && !isPointerLocked()) { + canvas.requestPointerLock(); + if(isPointerLocked()) { + needsPointerLock = false; + } + } + } + } + public static final int mouseGetDX() { + double dx = mouseDX; + mouseDX = 0.0D; + return (int)dx; + } + public static final int mouseGetDY() { + double dy = mouseDY; + mouseDY = 0.0D; + return (int)dy; + } + public static final int mouseGetX() { + return mouseX; + } + public static final int mouseGetY() { + return mouseY; + } + public static final int mouseGetEventX() { + return currentEvent == null ? -1 : currentEvent.getClientX(); + } + public static final int mouseGetEventY() { + return currentEvent == null ? -1 : canvas.getClientHeight() - currentEvent.getClientY(); + } + public static final boolean keysNext() { + if(unpressCTRL) { //un-press ctrl after copy/paste permission + keyEvents.clear(); + currentEventK = null; + keyStates[29] = false; + keyStates[157] = false; + keyStates[28] = false; + keyStates[219] = false; + keyStates[220] = false; + unpressCTRL = false; + return false; + } + currentEventK = null; + return !keyEvents.isEmpty() && (currentEventK = keyEvents.remove(0)) != null; + } + public static final int getEventKey() { + return currentEventK == null ? -1 : remapKey(getWhich(currentEventK)); + } + public static final char getEventChar() { + if(currentEventK == null) return '\0'; + String s = currentEventK.getKey(); + return currentEventK == null ? ' ' : (char) (s.length() > 1 ? '\0' : s.charAt(0)); + } + public static final boolean getEventKeyState() { + return currentEventK == null? false : !currentEventK.getType().equals("keyup"); + } + public static final boolean isKeyDown(int p1) { + if(unpressCTRL) { //un-press ctrl after copy/paste permission + keyStates[28] = false; + keyStates[29] = false; + keyStates[157] = false; + keyStates[219] = false; + keyStates[220] = false; + } + return keyStates[p1]; + } + public static final String getKeyName(int p1) { + return (p1 >= 0 && p1 < 256) ? LWJGLKeyNames[p1] : "null"; + } + public static final void setFullscreen(boolean p1) { + if(p1) { + fullscreen(); + } else { + exitFullscreen(); + } + } + + @JSBody(script = "if(!document.fullscreenElement){document.documentElement.requestFullscreen();}") + public static final native void fullscreen(); + + @JSBody(script = "if(document.fullscreenElement){document.exitFullscreen();}") + public static final native void exitFullscreen(); + + public static final boolean shouldShutdown() { + return false; + } + public static final boolean isFunctionKeyDown(boolean mod, int p1) { + return mod && p1 >= 59 && p1 <= 67 && getEventKey() == (2 + (p1 - 59)); + } + public static final boolean isFunctionKeyDown(int mod, int p1) { + return isKeyDown(mod) && p1 >= 59 && p1 <= 67 & getEventKey() == (2 + (p1 - 59)); + } + public static final boolean isFunctionKeyHeldDown(int mod, int p1) { + return isKeyDown(mod) && p1 >= 59 && p1 <= 67 & isKeyDown(2 + (p1 - 59)); + } + + @JSBody(params = { "obj" }, script = "if(obj.commit) obj.commit();") + private static native int commitContext(JSObject obj); + + public static final void updateDisplay() { + commitContext(webgl); + canvasContext.drawImage(canvasBack, 0d, 0d, canvas.getWidth(), canvas.getHeight()); + + int ww = canvas.getClientWidth(); + int hh = canvas.getClientHeight(); + if(ww != width || hh != height) { + width = ww; + height = hh; + canvasBack.setWidth(ww); + canvasBack.setHeight(hh); + } + + try { + Thread.sleep(1l); + } catch (InterruptedException e) { + ; + } + } + public static final void setVSyncEnabled(boolean p1) { + + } + public static final void enableRepeatEvents(boolean b) { + enableRepeatEvents = b; + } + + public static boolean isPointerLocked2() { + return mouseUngrabTimeout != 0 || isPointerLocked(); + } + + @JSBody(params = { }, script = "return document.pointerLockElement != null;") + public static native boolean isPointerLocked(); + + private static boolean pointerLockFlag = false; + + public static final boolean isFocused() { + boolean yee = isPointerLocked(); + boolean dee = pointerLockFlag; + pointerLockFlag = yee; + if(!dee && yee) { + mouseDX = 0.0D; + mouseDY = 0.0D; + } + return isWindowFocused && !(dee && !yee); + } + public static final int getScreenWidth() { + return win.getScreen().getAvailWidth(); + } + public static final int getScreenHeight() { + return win.getScreen().getAvailHeight(); + } + public static final int getCanvasWidth() { + int w = parent.getClientWidth(); + if(w != width) { + canvas.setWidth(w); + canvasBack.setWidth(w); + width = w; + } + return w; + } + public static final int getCanvasHeight() { + int h = parent.getClientHeight(); + if(h != height) { + canvas.setHeight(h); + canvasBack.setHeight(h); + height = h; + } + return h; + } + + public static enum RateLimit { + NONE, FAILED, BLOCKED, FAILED_POSSIBLY_LOCKED, LOCKED, NOW_LOCKED; + } + + private static final Set rateLimitedAddresses = new HashSet(); + private static final Set blockedAddresses = new HashSet(); + + private static WebSocket sock = null; + private static boolean sockIsConnecting = false; + private static boolean sockIsConnected = false; + private static boolean sockIsAlive = false; + private static LinkedList readPackets = new LinkedList(); + private static RateLimit rateLimitStatus = null; + private static String currentSockURI = null; + + public static final RateLimit getRateLimitStatus() { + RateLimit l = rateLimitStatus; + rateLimitStatus = null; + return l; + } + public static final void logRateLimit(String addr, RateLimit l) { + if(l == RateLimit.BLOCKED) { + blockedAddresses.add(addr); + }else { + rateLimitedAddresses.add(addr); + } + } + public static final RateLimit checkRateLimitHistory(String addr) { + if(blockedAddresses.contains(addr)) { + return RateLimit.LOCKED; + }else if(rateLimitedAddresses.contains(addr)) { + return RateLimit.BLOCKED; + }else { + return RateLimit.NONE; + } + } + + @Async + public static native String connectWebSocket(String sockURI); + + private static void connectWebSocket(String sockURI, final AsyncCallback cb) { + sockIsConnecting = true; + sockIsConnected = false; + sockIsAlive = false; + rateLimitStatus = null; + currentSockURI = sockURI; + try { + sock = WebSocket.create(sockURI); + } catch(Throwable t) { + sockIsConnecting = false; + sockIsAlive = false; + return; + } + sock.setBinaryType("arraybuffer"); + sock.onOpen(new EventListener() { + @Override + public void handleEvent(MessageEvent evt) { + sockIsConnecting = false; + sockIsAlive = false; + sockIsConnected = true; + readPackets.clear(); + cb.complete("okay"); + } + }); + sock.onClose(new EventListener() { + @Override + public void handleEvent(CloseEvent evt) { + sock = null; + if(sockIsConnecting) { + if(rateLimitStatus == null) { + if(blockedAddresses.contains(currentSockURI)) { + rateLimitStatus = RateLimit.LOCKED; + }else if(rateLimitedAddresses.contains(currentSockURI)) { + rateLimitStatus = RateLimit.FAILED_POSSIBLY_LOCKED; + }else { + rateLimitStatus = RateLimit.FAILED; + } + } + }else if(!sockIsAlive) { + if(rateLimitStatus == null) { + if(blockedAddresses.contains(currentSockURI)) { + rateLimitStatus = RateLimit.LOCKED; + }else if(rateLimitedAddresses.contains(currentSockURI)) { + rateLimitStatus = RateLimit.BLOCKED; + } + } + } + boolean b = sockIsConnecting; + sockIsConnecting = false; + sockIsConnected = false; + sockIsAlive = false; + if(b) cb.complete("fail"); + } + }); + sock.onMessage(new EventListener() { + @Override + public void handleEvent(MessageEvent evt) { + sockIsAlive = true; + if(isString(evt.getData())) { + String stat = evt.getDataAsString(); + if(stat.equalsIgnoreCase("BLOCKED")) { + if(rateLimitStatus == null) { + rateLimitStatus = RateLimit.BLOCKED; + } + rateLimitedAddresses.add(currentSockURI); + }else if(stat.equalsIgnoreCase("LOCKED")) { + if(rateLimitStatus == null) { + rateLimitStatus = RateLimit.NOW_LOCKED; + } + rateLimitedAddresses.add(currentSockURI); + blockedAddresses.add(currentSockURI); + } + sockIsConnecting = false; + sockIsConnected = false; + sock.close(); + return; + } + Uint8Array a = Uint8Array.create(evt.getDataAsArray()); + byte[] b = new byte[a.getByteLength()]; + for(int i = 0; i < b.length; ++i) { + b[i] = (byte) (a.get(i) & 0xFF); + } + readPackets.add(b); + } + }); + } + + public static final boolean startConnection(String uri) { + String res = connectWebSocket(uri); + return "fail".equals(res) ? false : true; + } + public static final void endConnection() { + if(sock == null || sock.getReadyState() == 3) { + sockIsConnecting = false; + } + if(sock != null && !sockIsConnecting) sock.close(); + } + public static final boolean connectionOpen() { + if(sock == null || sock.getReadyState() == 3) { + sockIsConnecting = false; + } + return sock != null && !sockIsConnecting && sock.getReadyState() != 3; + } + @JSBody(params = { "sock", "buffer" }, script = "sock.send(buffer);") + private static native void nativeBinarySend(WebSocket sock, ArrayBuffer buffer); + public static final void writePacket(byte[] packet) { + if(sock != null && !sockIsConnecting) { + Uint8Array arr = Uint8Array.create(packet.length); + arr.set(packet); + nativeBinarySend(sock, arr.getBuffer()); + } + } + public static final byte[] readPacket() { + if(!readPackets.isEmpty()) { + return readPackets.remove(0); + }else { + return null; + } + } + public static final byte[] loadLocalStorage(String key) { + String s = win.getLocalStorage().getItem("_eaglercraft_beta."+key); + if(s != null) { + return Base64.decodeBase64(s); + }else { + return null; + } + } + public static final void saveLocalStorage(String key, byte[] data) { + win.getLocalStorage().setItem("_eaglercraft_beta."+key, Base64.encodeBase64String(data)); + } + public static final void openLink(String url) { + win.open(url, "_blank"); + } + public static final void redirectTo(String url) { + Window.current().getLocation().setFullURL(url); + } + + @JSBody(params = { "ext", "mime" }, script = "window.eagsFileChooser.openFileChooser(ext, mime);") + public static native void openFileChooser(String ext, String mime); + + public static final byte[] getFileChooserResult() { + ArrayBuffer b = getFileChooserResult0(); + if(b == null) return null; + Uint8Array array = Uint8Array.create(b); + byte[] ret = new byte[array.getByteLength()]; + for(int i = 0; i < ret.length; ++i) { + ret[i] = (byte) array.get(i); + } + return ret; + } + + @JSBody(params = { }, script = "var ret = window.eagsFileChooser.getFileChooserResult; window.eagsFileChooser.getFileChooserResult = null; return ret;") + private static native ArrayBuffer getFileChooserResult0(); + + @JSBody(params = { }, script = "var ret = window.eagsFileChooser.getFileChooserResultName; window.eagsFileChooser.getFileChooserResultName = null; return ret;") + public static native String getFileChooserResultName(); + + public static final void setListenerPos(float x, float y, float z, float vx, float vy, float vz, float pitch, float yaw) { + float var2 = MathHelper.cos(-yaw * 0.017453292F); + float var3 = MathHelper.sin(-yaw * 0.017453292F); + float var4 = -MathHelper.cos(pitch * 0.017453292F); + float var5 = MathHelper.sin(pitch * 0.017453292F); + AudioListener l = audioctx.getListener(); + l.setPosition(x, y, z); + l.setOrientation(-var3 * var4, -var5, -var2 * var4, 0.0f, 1.0f, 0.0f); + } + + private static int playbackId = 0; + private static final HashMap loadedSoundFiles = new HashMap(); + private static AudioContext audioctx = null; + private static float playbackOffsetDelay = 0.03f; + + public static final void setPlaybackOffsetDelay(float f) { + playbackOffsetDelay = f; + } + + @Async + public static native AudioBuffer decodeAudioAsync(ArrayBuffer buffer); + + private static void decodeAudioAsync(ArrayBuffer buffer, final AsyncCallback cb) { + audioctx.decodeAudioData(buffer, new DecodeSuccessCallback() { + @Override + public void onSuccess(AudioBuffer decodedData) { + cb.complete(decodedData); + } + }, new DecodeErrorCallback() { + @Override + public void onError(JSObject error) { + cb.complete(null); + } + }); + } + + private static final HashMap activeSoundEffects = new HashMap(); + + private static class AudioBufferX { + private final AudioBuffer buffer; + private AudioBufferX(AudioBuffer buffer) { + this.buffer = buffer; + } + } + + private static class AudioBufferSourceNodeX { + private final AudioBufferSourceNode source; + private final PannerNode panner; + private final GainNode gain; + private AudioBufferSourceNodeX(AudioBufferSourceNode source, PannerNode panner, GainNode gain) { + this.source = source; + this.panner = panner; + this.gain = gain; + } + } + + private static final AudioBuffer getBufferFor(String fileName) { + AudioBufferX ret = loadedSoundFiles.get(fileName); + if(ret == null) { + byte[] file = loadResourceBytes(fileName); + if(file == null) return null; + Uint8Array buf = Uint8Array.create(file.length); + buf.set(file); + ret = new AudioBufferX(decodeAudioAsync(buf.getBuffer())); + loadedSoundFiles.put(fileName, ret); + } + return ret.buffer; + } + + public static void beginPlayback(String fileName) { + AudioBuffer b = getBufferFor(fileName); + if(b == null) return; + AudioBufferSourceNode s = audioctx.createBufferSource(); + s.setBuffer(b); + PannerNode p = audioctx.createPanner(); + GainNode g = audioctx.createGain(); + g.getGain().setValue(1.0f); + s.connect(g); + g.connect(p); + p.connect(audioctx.getDestination()); + s.start(0.0d, playbackOffsetDelay); + } + + public static final int beginPlayback(String fileName, float x, float y, float z, float volume) { + AudioBuffer b = getBufferFor(fileName); + if(b == null) return -1; + AudioBufferSourceNode s = audioctx.createBufferSource(); + s.setBuffer(b); + //s.getPlaybackRate().setValue(pitch); + PannerNode p = audioctx.createPanner(); + p.setPosition(x, y, z); + p.setMaxDistance(volume * 16f + 0.1f); + p.setRolloffFactor(1f); + //p.setVelocity(0f, 0f, 0f); + p.setDistanceModel("linear"); + p.setPanningModel("HRTF"); + p.setConeInnerAngle(360f); + p.setConeOuterAngle(0f); + p.setConeOuterGain(0f); + p.setOrientation(0f, 1f, 0f); + GainNode g = audioctx.createGain(); + g.getGain().setValue(volume > 1.0f ? 1.0f : volume); + s.connect(g); + g.connect(p); + p.connect(audioctx.getDestination()); + s.start(0.0d, playbackOffsetDelay); + final int theId = ++playbackId; + activeSoundEffects.put(theId, new AudioBufferSourceNodeX(s, p, g)); + s.setOnEnded(new EventListener() { + + @Override + public void handleEvent(MediaEvent evt) { + activeSoundEffects.remove(theId); + } + + }); + return theId; + } + public static final int beginPlaybackStatic(String fileName, float volume, float pitch) { + AudioBuffer b = getBufferFor(fileName); + if(b == null) return -1; + AudioBufferSourceNode s = audioctx.createBufferSource(); + s.setBuffer(b); + s.getPlaybackRate().setValue(pitch); + GainNode g = audioctx.createGain(); + g.getGain().setValue(volume > 1.0f ? 1.0f : volume); + s.connect(g); + g.connect(audioctx.getDestination()); + s.start(0.0d, playbackOffsetDelay); + final int theId = ++playbackId; + activeSoundEffects.put(theId, new AudioBufferSourceNodeX(s, null, g)); + s.setOnEnded(new EventListener() { + @Override + public void handleEvent(MediaEvent evt) { + activeSoundEffects.remove(theId); + } + + }); + return playbackId; + } + public static final void setPitch(int id, float pitch) { + AudioBufferSourceNodeX b = activeSoundEffects.get(id); + if(b != null) { + b.source.getPlaybackRate().setValue(pitch); + } + } + public static final void setVolume(int id, float volume) { + AudioBufferSourceNodeX b = activeSoundEffects.get(id); + if(b != null) { + b.gain.getGain().setValue(volume > 1.0f ? 1.0f : volume); + if(b.panner != null) b.panner.setMaxDistance(volume * 16f + 0.1f); + } + } + public static final void moveSound(int id, float x, float y, float z, float vx, float vy, float vz) { + AudioBufferSourceNodeX b = activeSoundEffects.get(id); + if(b != null && b.panner != null) { + b.panner.setPosition(x, y, z); + //b.panner.setVelocity(vx, vy, vz); + } + } + public static final void endSound(int id) { + AudioBufferSourceNodeX b = activeSoundEffects.get(id); + if(b != null) { + b.source.stop(); + activeSoundEffects.remove(id); + } + } + public static final boolean isPlaying(int id) { + return activeSoundEffects.containsKey(id); + } + public static final void openConsole() { + + } + private static boolean connected = false; + public static final void voiceConnect(String channel) { + win.alert("voice channels are not implemented yet"); + connected = true; + } + public static final void voiceVolume(float volume) { + + } + public static final boolean voiceActive() { + return connected; + } + public static final boolean voiceRelayed() { + return connected; + } + public static final String[] voiceUsers() { + return new String[0]; + } + public static final String[] voiceUsersTalking() { + return new String[0]; + } + public static final void voiceEnd() { + connected = false; + } + public static final void doJavascriptCoroutines() { + + } + public static final long maxMemory() { + return 1024*1024*1024; + } + public static final long totalMemory() { + return 1024*1024*1024; + } + public static final long freeMemory() { + return 0l; + } + public static final void exit() { + + } + + @JSBody(params = { }, script = "return window.navigator.userAgent;") + public static native String getUserAgent(); + + private static String[] LWJGLKeyNames = new String[] {"NONE", "ESCAPE", "1", "2", "3", "4", "5", "6", "7", "8", "9", "0", "MINUS", "EQUALS", "BACK", "TAB", "Q", "W", "E", "R", "T", "Y", "U", "I", "O", "P", "LBRACKET", "RBRACKET", "RETURN", "LCONTROL", "A", "S", "D", "F", "G", "H", "J", "K", "L", "SEMICOLON", "APOSTROPHE", "GRAVE", "LSHIFT", "BACKSLASH", "Z", "X", "C", "V", "B", "N", "M", "COMMA", "PERIOD", "SLASH", "RSHIFT", "MULTIPLY", "LMENU", "SPACE", "CAPITAL", "F1", "F2", "F3", "F4", "F5", "F6", "F7", "F8", "F9", "F10", "NUMLOCK", "SCROLL", "NUMPAD7", "NUMPAD8", "NUMPAD9", "SUBTRACT", "NUMPAD4", "NUMPAD5", "NUMPAD6", "ADD", "NUMPAD1", "NUMPAD2", "NUMPAD3", "NUMPAD0", "DECIMAL", "null", "null", "null", "F11", "F12", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "F13", "F14", "F15", "F16", "F17", "F18", "null", "null", "null", "null", "null", "null", "KANA", "F19", "null", "null", "null", "null", "null", "null", "null", "CONVERT", "null", "NOCONVERT", "null", "YEN", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "NUMPADEQUALS", "null", "null", "CIRCUMFLEX", "AT", "COLON", "UNDERLINE", "KANJI", "STOP", "AX", "UNLABELED", "null", "null", "null", "null", "NUMPADENTER", "RCONTROL", "null", "null", "null", "null", "null", "null", "null", "null", "null", "SECTION", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "NUMPADCOMMA", "null", "DIVIDE", "null", "SYSRQ", "RMENU", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "FUNCTION", "PAUSE", "null", "HOME", "UP", "PRIOR", "null", "LEFT", "null", "RIGHT", "null", "END", "DOWN", "NEXT", "INSERT", "DELETE", "null", "null", "null", "null", "null", "null", "CLEAR", "LMETA", "RMETA", "APPS", "POWER", "SLEEP", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null"}; + + private static int[] LWJGLKeyCodes = new int[] { + /* 0 */ -1, + /* 1 */ -1, + /* 2 */ -1, + /* 3 */ -1, + /* 4 */ -1, + /* 5 */ -1, + /* 6 */ -1, + /* 7 */ -1, + /* 8 */ 14, + /* 9 */ 15, + /* 10 */ -1, + /* 11 */ -1, + /* 12 */ -1, + /* 13 */ 28, + /* 14 */ -1, + /* 15 */ -1, + /* 16 */ 42, + /* 17 */ 29, + /* 18 */ 56, + /* 19 */ -1, + /* 20 */ -1, + /* 21 */ -1, + /* 22 */ -1, + /* 23 */ -1, + /* 24 */ -1, + /* 25 */ -1, + /* 26 */ -1, + /* 27 */ 1, + /* 28 */ -1, + /* 29 */ -1, + /* 30 */ -1, + /* 31 */ -1, + /* 32 */ 57, + /* 33 */ 210, + /* 34 */ 201, + /* 35 */ 207, + /* 36 */ 199, + /* 37 */ 203, + /* 38 */ 200, + /* 39 */ 205, + /* 40 */ 208, + /* 41 */ 205, + /* 42 */ 208, + /* 43 */ -1, + /* 44 */ -1, + /* 45 */ 210, + /* 46 */ 211, + /* 47 */ 211, + /* 48 */ 11, + /* 49 */ 2, + /* 50 */ 3, + /* 51 */ 4, + /* 52 */ 5, + /* 53 */ 6, + /* 54 */ 7, + /* 55 */ 8, + /* 56 */ 9, + /* 57 */ 10, + /* 58 */ -1, + /* 59 */ -1, + /* 60 */ -1, + /* 61 */ -1, + /* 62 */ -1, + /* 63 */ -1, + /* 64 */ -1, + /* 65 */ 30, + /* 66 */ 48, + /* 67 */ 46, + /* 68 */ 32, + /* 69 */ 18, + /* 70 */ 33, + /* 71 */ 34, + /* 72 */ 35, + /* 73 */ 23, + /* 74 */ 36, + /* 75 */ 37, + /* 76 */ 38, + /* 77 */ 50, + /* 78 */ 49, + /* 79 */ 24, + /* 80 */ 25, + /* 81 */ 16, + /* 82 */ 19, + /* 83 */ 31, + /* 84 */ 20, + /* 85 */ 22, + /* 86 */ 47, + /* 87 */ 17, + /* 88 */ 45, + /* 89 */ 21, + /* 90 */ 44, + /* 91 */ -1, + /* 92 */ -1, + /* 93 */ -1, + /* 94 */ -1, + /* 95 */ -1, + /* 96 */ -1, + /* 97 */ -1, + /* 98 */ -1, + /* 99 */ -1, + /* 100 */ -1, + /* 101 */ -1, + /* 102 */ -1, + /* 103 */ -1, + /* 104 */ -1, + /* 105 */ -1, + /* 106 */ -1, + /* 107 */ -1, + /* 108 */ -1, + /* 109 */ 12, + /* 110 */ 52, + /* 111 */ 53, + /* 112 */ -1, + /* 113 */ -1, + /* 114 */ -1, + /* 115 */ -1, + /* 116 */ -1, + /* 117 */ -1, + /* 118 */ -1, + /* 119 */ -1, + /* 120 */ -1, + /* 121 */ -1, + /* 122 */ -1, + /* 123 */ -1, + /* 124 */ -1, + /* 125 */ -1, + /* 126 */ -1, + /* 127 */ -1, + /* 128 */ -1, + /* 129 */ -1, + /* 130 */ -1, + /* 131 */ -1, + /* 132 */ -1, + /* 133 */ -1, + /* 134 */ -1, + /* 135 */ -1, + /* 136 */ -1, + /* 137 */ -1, + /* 138 */ -1, + /* 139 */ -1, + /* 140 */ -1, + /* 141 */ -1, + /* 142 */ -1, + /* 143 */ -1, + /* 144 */ -1, + /* 145 */ -1, + /* 146 */ -1, + /* 147 */ -1, + /* 148 */ -1, + /* 149 */ -1, + /* 150 */ -1, + /* 151 */ -1, + /* 152 */ -1, + /* 153 */ -1, + /* 154 */ -1, + /* 155 */ -1, + /* 156 */ -1, + /* 157 */ -1, + /* 158 */ -1, + /* 159 */ -1, + /* 160 */ -1, + /* 161 */ -1, + /* 162 */ -1, + /* 163 */ -1, + /* 164 */ -1, + /* 165 */ -1, + /* 166 */ -1, + /* 167 */ -1, + /* 168 */ -1, + /* 169 */ -1, + /* 170 */ -1, + /* 171 */ -1, + /* 172 */ -1, + /* 173 */ -1, + /* 174 */ -1, + /* 175 */ -1, + /* 176 */ -1, + /* 177 */ -1, + /* 178 */ -1, + /* 179 */ -1, + /* 180 */ -1, + /* 181 */ -1, + /* 182 */ -1, + /* 183 */ -1, + /* 184 */ -1, + /* 185 */ -1, + /* 186 */ 39, + /* 187 */ 13, + /* 188 */ 51, + /* 189 */ 12, + /* 190 */ 52, + /* 191 */ 53, + /* 192 */ -1, + /* 193 */ -1, + /* 194 */ -1, + /* 195 */ -1, + /* 196 */ -1, + /* 197 */ -1, + /* 198 */ -1, + /* 199 */ -1, + /* 200 */ -1, + /* 200 */ -1, + /* 201 */ -1, + /* 202 */ -1, + /* 203 */ -1, + /* 204 */ -1, + /* 205 */ -1, + /* 206 */ -1, + /* 207 */ -1, + /* 208 */ -1, + /* 209 */ -1, + /* 210 */ -1, + /* 211 */ -1, + /* 212 */ -1, + /* 213 */ -1, + /* 214 */ -1, + /* 215 */ -1, + /* 216 */ -1, + /* 217 */ -1, + /* 218 */ -1, + /* 219 */ 26, + /* 220 */ 43, + /* 221 */ 27, + /* 222 */ 40 + }; + + public static final int _wArrayByteLength(Object obj) { + return ((Int32Array)obj).getByteLength(); + } + + public static final Object _wCreateLowLevelIntBuffer(int len) { + return Int32Array.create(len); + } + + private static int appendbufferindex = 0; + private static Int32Array appendbuffer = Int32Array.create(ArrayBuffer.create(525000*4)); + + public static final void _wAppendLowLevelBuffer(Object arr) { + Int32Array a = ((Int32Array)arr); + if(appendbufferindex + a.getLength() < appendbuffer.getLength()) { + appendbuffer.set(a, appendbufferindex); + appendbufferindex += a.getLength(); + } + } + + public static final Object _wGetLowLevelBuffersAppended() { + Int32Array ret = Int32Array.create(appendbuffer.getBuffer(), 0, appendbufferindex); + appendbufferindex = 0; + return ret; + } + + private static int remapKey(int k) { + return (k > LWJGLKeyCodes.length || k < 0) ? -1 : LWJGLKeyCodes[k]; + } + + @JSFunctor + private static interface StupidFunctionResolveString extends JSObject { + void resolveStr(String s); + } + + private static boolean unpressCTRL = false; + + @Async + public static native String getClipboard(); + + private static void getClipboard(final AsyncCallback cb) { + final long start = System.currentTimeMillis(); + getClipboard0(new StupidFunctionResolveString() { + @Override + public void resolveStr(String s) { + if(System.currentTimeMillis() - start > 500l) { + unpressCTRL = true; + } + cb.complete(s); + } + }); + } + + @JSBody(params = { "cb" }, script = "if(!window.navigator.clipboard) cb(null); else window.navigator.clipboard.readText().then(function(s) { cb(s); }, function(s) { cb(null); });") + private static native void getClipboard0(StupidFunctionResolveString cb); + + @JSBody(params = { "str" }, script = "if(window.navigator.clipboard) window.navigator.clipboard.writeText(str);") + public static native void setClipboard(String str); + + @JSBody(params = { "obj" }, script = "return typeof obj === \"string\";") + private static native boolean isString(JSObject obj); + +// public static final boolean fileExists(String path) { +// return IndexedDBFilesystem.fileExists(path); +// } +// +// public static final boolean directoryExists(String path) { +// return IndexedDBFilesystem.directoryExists(path); +// } +// +// public static final boolean pathExists(String path) { +// return IndexedDBFilesystem.pathExists(path); +// } +// +// public static final void writeFile(String path, byte[] data) { +// IndexedDBFilesystem.writeFile(path, data); +// } +// +// public static final byte[] readFile(String path) { +// return IndexedDBFilesystem.readFile(path); +// } +// +// public static final long getLastModified(String path) { +// return IndexedDBFilesystem.getLastModified(path); +// } +// +// public static final int getFileSize(String path) { +// return IndexedDBFilesystem.getFileSize(path); +// } +// +// public static final void renameFile(String oldPath, String newPath) { +// IndexedDBFilesystem.renameFile(oldPath, newPath); +// } +// +// public static final void copyFile(String oldPath, String newPath) { +// IndexedDBFilesystem.copyFile(oldPath, newPath); +// } +// +// public static final void deleteFile(String path) { +// IndexedDBFilesystem.deleteFile(path); +// } +// +// public static final Collection listFiles(String path, boolean listDirs, boolean recursiveDirs) { +// return IndexedDBFilesystem.listFiles(path, listDirs, recursiveDirs); +// } +// +// public static final Collection listFilesAndDirectories(String path) { +// return listFiles(path, true, false); +// } +// +// public static final Collection listFilesRecursive(String path) { +// return listFiles(path, false, true); +// } + +// public static class FileEntry { +// +// public final String path; +// public final boolean isDirectory; +// public final long lastModified; +// +// public FileEntry(String path, boolean isDirectory, long lastModified) { +// this.path = path; +// this.isDirectory = isDirectory; +// this.lastModified = lastModified; +// } +// +// public String getName() { +// int i = path.indexOf('/'); +// if(i >= 0) { +// return path.substring(i + 1); +// }else { +// return path; +// } +// } +// +// } + + private static String stripPath(String str) { + if(str.startsWith("/")) { + str = str.substring(1); + } + if(str.endsWith("/")) { + str = str.substring(0, str.length() - 1); + } + return str; + } + +// @JSBody(params = { "name", "cvs" }, script = "var a=document.createElement(\"a\");a.href=URL.createObjectURL(new Blob([cvs],{type:\"application/octet-stream\"}));a.download=name;a.click();URL.revokeObjectURL(a.href);") +// private static native void downloadFile0(String name, ArrayBuffer cvs); +// +// public static final void downloadFile(String filename, byte[] data) { +// Uint8Array b = Uint8Array.create(data.length); +// b.set(data); +// downloadFile0(filename, b.getBuffer()); +// } +} diff --git a/src/main/java/net/PeytonPlayz585/opengl/Matrix.java b/src/main/java/net/PeytonPlayz585/opengl/Matrix.java new file mode 100644 index 0000000..c5b7a34 --- /dev/null +++ b/src/main/java/net/PeytonPlayz585/opengl/Matrix.java @@ -0,0 +1,130 @@ +/* + * Copyright (c) 2002-2008 LWJGL Project + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of 'LWJGL' nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package net.PeytonPlayz585.opengl; + +import java.io.Serializable; +import java.nio.FloatBuffer; + +/** + * + * Base class for matrices. When a matrix is constructed it will be the identity + * matrix unless otherwise stated. + * + * @author cix_foo + * @version $Revision$ $Id$ + */ +public abstract class Matrix implements Serializable { + + /** + * Constructor for Matrix. + */ + protected Matrix() { + super(); + } + + /** + * Set this matrix to be the identity matrix. + * + * @return this + */ + public abstract Matrix setIdentity(); + + /** + * Invert this matrix + * + * @return this + */ + public abstract Matrix invert(); + + /** + * Load from a float buffer. The buffer stores the matrix in column major + * (OpenGL) order. + * + * @param buf A float buffer to read from + * @return this + */ + public abstract Matrix load(FloatBuffer buf); + + /** + * Load from a float buffer. The buffer stores the matrix in row major + * (mathematical) order. + * + * @param buf A float buffer to read from + * @return this + */ + public abstract Matrix loadTranspose(FloatBuffer buf); + + /** + * Negate this matrix + * + * @return this + */ + public abstract Matrix negate(); + + /** + * Store this matrix in a float buffer. The matrix is stored in column major + * (openGL) order. + * + * @param buf The buffer to store this matrix in + * @return this + */ + public abstract Matrix store(FloatBuffer buf); + + /** + * Store this matrix in a float buffer. The matrix is stored in row major + * (maths) order. + * + * @param buf The buffer to store this matrix in + * @return this + */ + public abstract Matrix storeTranspose(FloatBuffer buf); + + /** + * Transpose this matrix + * + * @return this + */ + public abstract Matrix transpose(); + + /** + * Set this matrix to 0. + * + * @return this + */ + public abstract Matrix setZero(); + + /** + * @return the determinant of the matrix + */ + public abstract float determinant(); + +} \ No newline at end of file diff --git a/src/main/java/net/PeytonPlayz585/opengl/Matrix4f.java b/src/main/java/net/PeytonPlayz585/opengl/Matrix4f.java new file mode 100644 index 0000000..0182de6 --- /dev/null +++ b/src/main/java/net/PeytonPlayz585/opengl/Matrix4f.java @@ -0,0 +1,902 @@ +/* + * Copyright (c) 2002-2008 LWJGL Project + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of 'LWJGL' nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package net.PeytonPlayz585.opengl; + +import java.io.Serializable; +import java.nio.FloatBuffer; + +/** + * Holds a 4x4 float matrix. + * + * @author foo + */ +public class Matrix4f extends Matrix implements Serializable { + private static final long serialVersionUID = 1L; + + public float m00, m01, m02, m03, m10, m11, m12, m13, m20, m21, m22, m23, m30, m31, m32, m33; + + /** + * Construct a new matrix, initialized to the identity. + */ + public Matrix4f() { + super(); + setIdentity(); + } + + public Matrix4f(final Matrix4f src) { + super(); + load(src); + } + + /** + * Returns a string representation of this matrix + */ + public String toString() { + StringBuilder buf = new StringBuilder(); + buf.append(m00).append(' ').append(m10).append(' ').append(m20).append(' ').append(m30).append('\n'); + buf.append(m01).append(' ').append(m11).append(' ').append(m21).append(' ').append(m31).append('\n'); + buf.append(m02).append(' ').append(m12).append(' ').append(m22).append(' ').append(m32).append('\n'); + buf.append(m03).append(' ').append(m13).append(' ').append(m23).append(' ').append(m33).append('\n'); + return buf.toString(); + } + + /** + * Set this matrix to be the identity matrix. + * + * @return this + */ + public Matrix setIdentity() { + return setIdentity(this); + } + + /** + * Set the given matrix to be the identity matrix. + * + * @param m The matrix to set to the identity + * @return m + */ + public static Matrix4f setIdentity(Matrix4f m) { + m.m00 = 1.0f; + m.m01 = 0.0f; + m.m02 = 0.0f; + m.m03 = 0.0f; + m.m10 = 0.0f; + m.m11 = 1.0f; + m.m12 = 0.0f; + m.m13 = 0.0f; + m.m20 = 0.0f; + m.m21 = 0.0f; + m.m22 = 1.0f; + m.m23 = 0.0f; + m.m30 = 0.0f; + m.m31 = 0.0f; + m.m32 = 0.0f; + m.m33 = 1.0f; + + return m; + } + + /** + * Set this matrix to 0. + * + * @return this + */ + public Matrix setZero() { + return setZero(this); + } + + /** + * Set the given matrix to 0. + * + * @param m The matrix to set to 0 + * @return m + */ + public static Matrix4f setZero(Matrix4f m) { + m.m00 = 0.0f; + m.m01 = 0.0f; + m.m02 = 0.0f; + m.m03 = 0.0f; + m.m10 = 0.0f; + m.m11 = 0.0f; + m.m12 = 0.0f; + m.m13 = 0.0f; + m.m20 = 0.0f; + m.m21 = 0.0f; + m.m22 = 0.0f; + m.m23 = 0.0f; + m.m30 = 0.0f; + m.m31 = 0.0f; + m.m32 = 0.0f; + m.m33 = 0.0f; + + return m; + } + + /** + * Load from another matrix4f + * + * @param src The source matrix + * @return this + */ + public Matrix4f load(Matrix4f src) { + return load(src, this); + } + + /** + * Copy the source matrix to the destination matrix + * + * @param src The source matrix + * @param dest The destination matrix, or null of a new one is to be created + * @return The copied matrix + */ + public static Matrix4f load(Matrix4f src, Matrix4f dest) { + if (dest == null) + dest = new Matrix4f(); + dest.m00 = src.m00; + dest.m01 = src.m01; + dest.m02 = src.m02; + dest.m03 = src.m03; + dest.m10 = src.m10; + dest.m11 = src.m11; + dest.m12 = src.m12; + dest.m13 = src.m13; + dest.m20 = src.m20; + dest.m21 = src.m21; + dest.m22 = src.m22; + dest.m23 = src.m23; + dest.m30 = src.m30; + dest.m31 = src.m31; + dest.m32 = src.m32; + dest.m33 = src.m33; + + return dest; + } + + /** + * Load from a float buffer. The buffer stores the matrix in column major + * (OpenGL) order. + * + * @param buf A float buffer to read from + * @return this + */ + public Matrix load(FloatBuffer buf) { + + m00 = buf.get(); + m01 = buf.get(); + m02 = buf.get(); + m03 = buf.get(); + m10 = buf.get(); + m11 = buf.get(); + m12 = buf.get(); + m13 = buf.get(); + m20 = buf.get(); + m21 = buf.get(); + m22 = buf.get(); + m23 = buf.get(); + m30 = buf.get(); + m31 = buf.get(); + m32 = buf.get(); + m33 = buf.get(); + + return this; + } + + /** + * Load from a float buffer. The buffer stores the matrix in row major (maths) + * order. + * + * @param buf A float buffer to read from + * @return this + */ + public Matrix loadTranspose(FloatBuffer buf) { + + m00 = buf.get(); + m10 = buf.get(); + m20 = buf.get(); + m30 = buf.get(); + m01 = buf.get(); + m11 = buf.get(); + m21 = buf.get(); + m31 = buf.get(); + m02 = buf.get(); + m12 = buf.get(); + m22 = buf.get(); + m32 = buf.get(); + m03 = buf.get(); + m13 = buf.get(); + m23 = buf.get(); + m33 = buf.get(); + + return this; + } + + /** + * Store this matrix in a float buffer. The matrix is stored in column major + * (openGL) order. + * + * @param buf The buffer to store this matrix in + */ + public Matrix store(FloatBuffer buf) { + buf.put(m00); + buf.put(m01); + buf.put(m02); + buf.put(m03); + buf.put(m10); + buf.put(m11); + buf.put(m12); + buf.put(m13); + buf.put(m20); + buf.put(m21); + buf.put(m22); + buf.put(m23); + buf.put(m30); + buf.put(m31); + buf.put(m32); + buf.put(m33); + return this; + } + + public Matrix store(float[] buf) { + buf[0] = m00; + buf[1] = m01; + buf[2] = m02; + buf[3] = m03; + buf[4] = m10; + buf[5] = m11; + buf[6] = m12; + buf[7] = m13; + buf[8] = m20; + buf[9] = m21; + buf[10] = m22; + buf[11] = m23; + buf[12] = m30; + buf[13] = m31; + buf[14] = m32; + buf[15] = m33; + return this; + } + + /** + * Store this matrix in a float buffer. The matrix is stored in row major + * (maths) order. + * + * @param buf The buffer to store this matrix in + */ + public Matrix storeTranspose(FloatBuffer buf) { + buf.put(m00); + buf.put(m10); + buf.put(m20); + buf.put(m30); + buf.put(m01); + buf.put(m11); + buf.put(m21); + buf.put(m31); + buf.put(m02); + buf.put(m12); + buf.put(m22); + buf.put(m32); + buf.put(m03); + buf.put(m13); + buf.put(m23); + buf.put(m33); + return this; + } + + /** + * Store the rotation portion of this matrix in a float buffer. The matrix is + * stored in column major (openGL) order. + * + * @param buf The buffer to store this matrix in + */ + public Matrix store3f(FloatBuffer buf) { + buf.put(m00); + buf.put(m01); + buf.put(m02); + buf.put(m10); + buf.put(m11); + buf.put(m12); + buf.put(m20); + buf.put(m21); + buf.put(m22); + return this; + } + + /** + * Add two matrices together and place the result in a third matrix. + * + * @param left The left source matrix + * @param right The right source matrix + * @param dest The destination matrix, or null if a new one is to be created + * @return the destination matrix + */ + public static Matrix4f add(Matrix4f left, Matrix4f right, Matrix4f dest) { + if (dest == null) + dest = new Matrix4f(); + + dest.m00 = left.m00 + right.m00; + dest.m01 = left.m01 + right.m01; + dest.m02 = left.m02 + right.m02; + dest.m03 = left.m03 + right.m03; + dest.m10 = left.m10 + right.m10; + dest.m11 = left.m11 + right.m11; + dest.m12 = left.m12 + right.m12; + dest.m13 = left.m13 + right.m13; + dest.m20 = left.m20 + right.m20; + dest.m21 = left.m21 + right.m21; + dest.m22 = left.m22 + right.m22; + dest.m23 = left.m23 + right.m23; + dest.m30 = left.m30 + right.m30; + dest.m31 = left.m31 + right.m31; + dest.m32 = left.m32 + right.m32; + dest.m33 = left.m33 + right.m33; + + return dest; + } + + /** + * Subtract the right matrix from the left and place the result in a third + * matrix. + * + * @param left The left source matrix + * @param right The right source matrix + * @param dest The destination matrix, or null if a new one is to be created + * @return the destination matrix + */ + public static Matrix4f sub(Matrix4f left, Matrix4f right, Matrix4f dest) { + if (dest == null) + dest = new Matrix4f(); + + dest.m00 = left.m00 - right.m00; + dest.m01 = left.m01 - right.m01; + dest.m02 = left.m02 - right.m02; + dest.m03 = left.m03 - right.m03; + dest.m10 = left.m10 - right.m10; + dest.m11 = left.m11 - right.m11; + dest.m12 = left.m12 - right.m12; + dest.m13 = left.m13 - right.m13; + dest.m20 = left.m20 - right.m20; + dest.m21 = left.m21 - right.m21; + dest.m22 = left.m22 - right.m22; + dest.m23 = left.m23 - right.m23; + dest.m30 = left.m30 - right.m30; + dest.m31 = left.m31 - right.m31; + dest.m32 = left.m32 - right.m32; + dest.m33 = left.m33 - right.m33; + + return dest; + } + + /** + * Multiply the right matrix by the left and place the result in a third matrix. + * + * @param left The left source matrix + * @param right The right source matrix + * @param dest The destination matrix, or null if a new one is to be created + * @return the destination matrix + */ + public static Matrix4f mul(Matrix4f left, Matrix4f right, Matrix4f dest) { + if (dest == null) + dest = new Matrix4f(); + + float m00 = left.m00 * right.m00 + left.m10 * right.m01 + left.m20 * right.m02 + left.m30 * right.m03; + float m01 = left.m01 * right.m00 + left.m11 * right.m01 + left.m21 * right.m02 + left.m31 * right.m03; + float m02 = left.m02 * right.m00 + left.m12 * right.m01 + left.m22 * right.m02 + left.m32 * right.m03; + float m03 = left.m03 * right.m00 + left.m13 * right.m01 + left.m23 * right.m02 + left.m33 * right.m03; + float m10 = left.m00 * right.m10 + left.m10 * right.m11 + left.m20 * right.m12 + left.m30 * right.m13; + float m11 = left.m01 * right.m10 + left.m11 * right.m11 + left.m21 * right.m12 + left.m31 * right.m13; + float m12 = left.m02 * right.m10 + left.m12 * right.m11 + left.m22 * right.m12 + left.m32 * right.m13; + float m13 = left.m03 * right.m10 + left.m13 * right.m11 + left.m23 * right.m12 + left.m33 * right.m13; + float m20 = left.m00 * right.m20 + left.m10 * right.m21 + left.m20 * right.m22 + left.m30 * right.m23; + float m21 = left.m01 * right.m20 + left.m11 * right.m21 + left.m21 * right.m22 + left.m31 * right.m23; + float m22 = left.m02 * right.m20 + left.m12 * right.m21 + left.m22 * right.m22 + left.m32 * right.m23; + float m23 = left.m03 * right.m20 + left.m13 * right.m21 + left.m23 * right.m22 + left.m33 * right.m23; + float m30 = left.m00 * right.m30 + left.m10 * right.m31 + left.m20 * right.m32 + left.m30 * right.m33; + float m31 = left.m01 * right.m30 + left.m11 * right.m31 + left.m21 * right.m32 + left.m31 * right.m33; + float m32 = left.m02 * right.m30 + left.m12 * right.m31 + left.m22 * right.m32 + left.m32 * right.m33; + float m33 = left.m03 * right.m30 + left.m13 * right.m31 + left.m23 * right.m32 + left.m33 * right.m33; + + dest.m00 = m00; + dest.m01 = m01; + dest.m02 = m02; + dest.m03 = m03; + dest.m10 = m10; + dest.m11 = m11; + dest.m12 = m12; + dest.m13 = m13; + dest.m20 = m20; + dest.m21 = m21; + dest.m22 = m22; + dest.m23 = m23; + dest.m30 = m30; + dest.m31 = m31; + dest.m32 = m32; + dest.m33 = m33; + + return dest; + } + + /** + * Transform a Vector by a matrix and return the result in a destination vector. + * + * @param left The left matrix + * @param right The right vector + * @param dest The destination vector, or null if a new one is to be created + * @return the destination vector + */ + public static Vector4f transform(Matrix4f left, Vector4f right, Vector4f dest) { + if (dest == null) + dest = new Vector4f(); + + float x = left.m00 * right.x + left.m10 * right.y + left.m20 * right.z + left.m30 * right.w; + float y = left.m01 * right.x + left.m11 * right.y + left.m21 * right.z + left.m31 * right.w; + float z = left.m02 * right.x + left.m12 * right.y + left.m22 * right.z + left.m32 * right.w; + float w = left.m03 * right.x + left.m13 * right.y + left.m23 * right.z + left.m33 * right.w; + + dest.x = x; + dest.y = y; + dest.z = z; + dest.w = w; + + return dest; + } + + /** + * Transpose this matrix + * + * @return this + */ + public Matrix transpose() { + return transpose(this); + } + + /** + * Translate this matrix + * + * @param vec The vector to translate by + * @return this + */ + public Matrix4f translate(Vector2f vec) { + return translate(vec, this); + } + + /** + * Translate this matrix + * + * @param vec The vector to translate by + * @return this + */ + public Matrix4f translate(Vector3f vec) { + return translate(vec, this); + } + + /** + * Scales this matrix + * + * @param vec The vector to scale by + * @return this + */ + public Matrix4f scale(Vector3f vec) { + return scale(vec, this, this); + } + + /** + * Scales the source matrix and put the result in the destination matrix + * + * @param vec The vector to scale by + * @param src The source matrix + * @param dest The destination matrix, or null if a new matrix is to be created + * @return The scaled matrix + */ + public static Matrix4f scale(Vector3f vec, Matrix4f src, Matrix4f dest) { + if (dest == null) + dest = new Matrix4f(); + dest.m00 = src.m00 * vec.x; + dest.m01 = src.m01 * vec.x; + dest.m02 = src.m02 * vec.x; + dest.m03 = src.m03 * vec.x; + dest.m10 = src.m10 * vec.y; + dest.m11 = src.m11 * vec.y; + dest.m12 = src.m12 * vec.y; + dest.m13 = src.m13 * vec.y; + dest.m20 = src.m20 * vec.z; + dest.m21 = src.m21 * vec.z; + dest.m22 = src.m22 * vec.z; + dest.m23 = src.m23 * vec.z; + return dest; + } + + /** + * Rotates the matrix around the given axis the specified angle + * + * @param angle the angle, in radians. + * @param axis The vector representing the rotation axis. Must be normalized. + * @return this + */ + public Matrix4f rotate(float angle, Vector3f axis) { + return rotate(angle, axis, this); + } + + /** + * Rotates the matrix around the given axis the specified angle + * + * @param angle the angle, in radians. + * @param axis The vector representing the rotation axis. Must be normalized. + * @param dest The matrix to put the result, or null if a new matrix is to be + * created + * @return The rotated matrix + */ + public Matrix4f rotate(float angle, Vector3f axis, Matrix4f dest) { + return rotate(angle, axis, this, dest); + } + + /** + * Rotates the source matrix around the given axis the specified angle and put + * the result in the destination matrix. + * + * @param angle the angle, in radians. + * @param axis The vector representing the rotation axis. Must be normalized. + * @param src The matrix to rotate + * @param dest The matrix to put the result, or null if a new matrix is to be + * created + * @return The rotated matrix + */ + public static Matrix4f rotate(float angle, Vector3f axis, Matrix4f src, Matrix4f dest) { + if (dest == null) + dest = new Matrix4f(); + float c = (float) Math.cos(angle); + float s = (float) Math.sin(angle); + float oneminusc = 1.0f - c; + float xy = axis.x * axis.y; + float yz = axis.y * axis.z; + float xz = axis.x * axis.z; + float xs = axis.x * s; + float ys = axis.y * s; + float zs = axis.z * s; + + float f00 = axis.x * axis.x * oneminusc + c; + float f01 = xy * oneminusc + zs; + float f02 = xz * oneminusc - ys; + // n[3] not used + float f10 = xy * oneminusc - zs; + float f11 = axis.y * axis.y * oneminusc + c; + float f12 = yz * oneminusc + xs; + // n[7] not used + float f20 = xz * oneminusc + ys; + float f21 = yz * oneminusc - xs; + float f22 = axis.z * axis.z * oneminusc + c; + + float t00 = src.m00 * f00 + src.m10 * f01 + src.m20 * f02; + float t01 = src.m01 * f00 + src.m11 * f01 + src.m21 * f02; + float t02 = src.m02 * f00 + src.m12 * f01 + src.m22 * f02; + float t03 = src.m03 * f00 + src.m13 * f01 + src.m23 * f02; + float t10 = src.m00 * f10 + src.m10 * f11 + src.m20 * f12; + float t11 = src.m01 * f10 + src.m11 * f11 + src.m21 * f12; + float t12 = src.m02 * f10 + src.m12 * f11 + src.m22 * f12; + float t13 = src.m03 * f10 + src.m13 * f11 + src.m23 * f12; + dest.m20 = src.m00 * f20 + src.m10 * f21 + src.m20 * f22; + dest.m21 = src.m01 * f20 + src.m11 * f21 + src.m21 * f22; + dest.m22 = src.m02 * f20 + src.m12 * f21 + src.m22 * f22; + dest.m23 = src.m03 * f20 + src.m13 * f21 + src.m23 * f22; + dest.m00 = t00; + dest.m01 = t01; + dest.m02 = t02; + dest.m03 = t03; + dest.m10 = t10; + dest.m11 = t11; + dest.m12 = t12; + dest.m13 = t13; + return dest; + } + + /** + * Translate this matrix and stash the result in another matrix + * + * @param vec The vector to translate by + * @param dest The destination matrix or null if a new matrix is to be created + * @return the translated matrix + */ + public Matrix4f translate(Vector3f vec, Matrix4f dest) { + return translate(vec, this, dest); + } + + /** + * Translate the source matrix and stash the result in the destination matrix + * + * @param vec The vector to translate by + * @param src The source matrix + * @param dest The destination matrix or null if a new matrix is to be created + * @return The translated matrix + */ + public static Matrix4f translate(Vector3f vec, Matrix4f src, Matrix4f dest) { + if (dest == null) + dest = new Matrix4f(); + + dest.m30 += src.m00 * vec.x + src.m10 * vec.y + src.m20 * vec.z; + dest.m31 += src.m01 * vec.x + src.m11 * vec.y + src.m21 * vec.z; + dest.m32 += src.m02 * vec.x + src.m12 * vec.y + src.m22 * vec.z; + dest.m33 += src.m03 * vec.x + src.m13 * vec.y + src.m23 * vec.z; + + return dest; + } + + /** + * Translate this matrix and stash the result in another matrix + * + * @param vec The vector to translate by + * @param dest The destination matrix or null if a new matrix is to be created + * @return the translated matrix + */ + public Matrix4f translate(Vector2f vec, Matrix4f dest) { + return translate(vec, this, dest); + } + + /** + * Translate the source matrix and stash the result in the destination matrix + * + * @param vec The vector to translate by + * @param src The source matrix + * @param dest The destination matrix or null if a new matrix is to be created + * @return The translated matrix + */ + public static Matrix4f translate(Vector2f vec, Matrix4f src, Matrix4f dest) { + if (dest == null) + dest = new Matrix4f(); + + dest.m30 += src.m00 * vec.x + src.m10 * vec.y; + dest.m31 += src.m01 * vec.x + src.m11 * vec.y; + dest.m32 += src.m02 * vec.x + src.m12 * vec.y; + dest.m33 += src.m03 * vec.x + src.m13 * vec.y; + + return dest; + } + + /** + * Transpose this matrix and place the result in another matrix + * + * @param dest The destination matrix or null if a new matrix is to be created + * @return the transposed matrix + */ + public Matrix4f transpose(Matrix4f dest) { + return transpose(this, dest); + } + + /** + * Transpose the source matrix and place the result in the destination matrix + * + * @param src The source matrix + * @param dest The destination matrix or null if a new matrix is to be created + * @return the transposed matrix + */ + public static Matrix4f transpose(Matrix4f src, Matrix4f dest) { + if (dest == null) + dest = new Matrix4f(); + float m00 = src.m00; + float m01 = src.m10; + float m02 = src.m20; + float m03 = src.m30; + float m10 = src.m01; + float m11 = src.m11; + float m12 = src.m21; + float m13 = src.m31; + float m20 = src.m02; + float m21 = src.m12; + float m22 = src.m22; + float m23 = src.m32; + float m30 = src.m03; + float m31 = src.m13; + float m32 = src.m23; + float m33 = src.m33; + + dest.m00 = m00; + dest.m01 = m01; + dest.m02 = m02; + dest.m03 = m03; + dest.m10 = m10; + dest.m11 = m11; + dest.m12 = m12; + dest.m13 = m13; + dest.m20 = m20; + dest.m21 = m21; + dest.m22 = m22; + dest.m23 = m23; + dest.m30 = m30; + dest.m31 = m31; + dest.m32 = m32; + dest.m33 = m33; + + return dest; + } + + /** + * @return the determinant of the matrix + */ + public float determinant() { + float f = m00 * ((m11 * m22 * m33 + m12 * m23 * m31 + m13 * m21 * m32) - m13 * m22 * m31 - m11 * m23 * m32 + - m12 * m21 * m33); + f -= m01 * ((m10 * m22 * m33 + m12 * m23 * m30 + m13 * m20 * m32) - m13 * m22 * m30 - m10 * m23 * m32 + - m12 * m20 * m33); + f += m02 * ((m10 * m21 * m33 + m11 * m23 * m30 + m13 * m20 * m31) - m13 * m21 * m30 - m10 * m23 * m31 + - m11 * m20 * m33); + f -= m03 * ((m10 * m21 * m32 + m11 * m22 * m30 + m12 * m20 * m31) - m12 * m21 * m30 - m10 * m22 * m31 + - m11 * m20 * m32); + return f; + } + + /** + * Calculate the determinant of a 3x3 matrix + * + * @return result + */ + + private static float determinant3x3(float t00, float t01, float t02, float t10, float t11, float t12, float t20, + float t21, float t22) { + return t00 * (t11 * t22 - t12 * t21) + t01 * (t12 * t20 - t10 * t22) + t02 * (t10 * t21 - t11 * t20); + } + + /** + * Invert this matrix + * + * @return this if successful, null otherwise + */ + public Matrix invert() { + return invert(this, this); + } + + /** + * Invert the source matrix and put the result in the destination + * + * @param src The source matrix + * @param dest The destination matrix, or null if a new matrix is to be created + * @return The inverted matrix if successful, null otherwise + */ + public static Matrix4f invert(Matrix4f src, Matrix4f dest) { + float determinant = src.determinant(); + + if (determinant != 0) { + /* + * m00 m01 m02 m03 m10 m11 m12 m13 m20 m21 m22 m23 m30 m31 m32 m33 + */ + if (dest == null) + dest = new Matrix4f(); + float determinant_inv = 1f / determinant; + + // first row + float t00 = determinant3x3(src.m11, src.m12, src.m13, src.m21, src.m22, src.m23, src.m31, src.m32, src.m33); + float t01 = -determinant3x3(src.m10, src.m12, src.m13, src.m20, src.m22, src.m23, src.m30, src.m32, + src.m33); + float t02 = determinant3x3(src.m10, src.m11, src.m13, src.m20, src.m21, src.m23, src.m30, src.m31, src.m33); + float t03 = -determinant3x3(src.m10, src.m11, src.m12, src.m20, src.m21, src.m22, src.m30, src.m31, + src.m32); + // second row + float t10 = -determinant3x3(src.m01, src.m02, src.m03, src.m21, src.m22, src.m23, src.m31, src.m32, + src.m33); + float t11 = determinant3x3(src.m00, src.m02, src.m03, src.m20, src.m22, src.m23, src.m30, src.m32, src.m33); + float t12 = -determinant3x3(src.m00, src.m01, src.m03, src.m20, src.m21, src.m23, src.m30, src.m31, + src.m33); + float t13 = determinant3x3(src.m00, src.m01, src.m02, src.m20, src.m21, src.m22, src.m30, src.m31, src.m32); + // third row + float t20 = determinant3x3(src.m01, src.m02, src.m03, src.m11, src.m12, src.m13, src.m31, src.m32, src.m33); + float t21 = -determinant3x3(src.m00, src.m02, src.m03, src.m10, src.m12, src.m13, src.m30, src.m32, + src.m33); + float t22 = determinant3x3(src.m00, src.m01, src.m03, src.m10, src.m11, src.m13, src.m30, src.m31, src.m33); + float t23 = -determinant3x3(src.m00, src.m01, src.m02, src.m10, src.m11, src.m12, src.m30, src.m31, + src.m32); + // fourth row + float t30 = -determinant3x3(src.m01, src.m02, src.m03, src.m11, src.m12, src.m13, src.m21, src.m22, + src.m23); + float t31 = determinant3x3(src.m00, src.m02, src.m03, src.m10, src.m12, src.m13, src.m20, src.m22, src.m23); + float t32 = -determinant3x3(src.m00, src.m01, src.m03, src.m10, src.m11, src.m13, src.m20, src.m21, + src.m23); + float t33 = determinant3x3(src.m00, src.m01, src.m02, src.m10, src.m11, src.m12, src.m20, src.m21, src.m22); + + // transpose and divide by the determinant + dest.m00 = t00 * determinant_inv; + dest.m11 = t11 * determinant_inv; + dest.m22 = t22 * determinant_inv; + dest.m33 = t33 * determinant_inv; + dest.m01 = t10 * determinant_inv; + dest.m10 = t01 * determinant_inv; + dest.m20 = t02 * determinant_inv; + dest.m02 = t20 * determinant_inv; + dest.m12 = t21 * determinant_inv; + dest.m21 = t12 * determinant_inv; + dest.m03 = t30 * determinant_inv; + dest.m30 = t03 * determinant_inv; + dest.m13 = t31 * determinant_inv; + dest.m31 = t13 * determinant_inv; + dest.m32 = t23 * determinant_inv; + dest.m23 = t32 * determinant_inv; + return dest; + } else + return null; + } + + /** + * Negate this matrix + * + * @return this + */ + public Matrix negate() { + return negate(this); + } + + /** + * Negate this matrix and place the result in a destination matrix. + * + * @param dest The destination matrix, or null if a new matrix is to be created + * @return the negated matrix + */ + public Matrix4f negate(Matrix4f dest) { + return negate(this, dest); + } + + /** + * Negate this matrix and place the result in a destination matrix. + * + * @param src The source matrix + * @param dest The destination matrix, or null if a new matrix is to be created + * @return The negated matrix + */ + public static Matrix4f negate(Matrix4f src, Matrix4f dest) { + if (dest == null) + dest = new Matrix4f(); + + dest.m00 = -src.m00; + dest.m01 = -src.m01; + dest.m02 = -src.m02; + dest.m03 = -src.m03; + dest.m10 = -src.m10; + dest.m11 = -src.m11; + dest.m12 = -src.m12; + dest.m13 = -src.m13; + dest.m20 = -src.m20; + dest.m21 = -src.m21; + dest.m22 = -src.m22; + dest.m23 = -src.m23; + dest.m30 = -src.m30; + dest.m31 = -src.m31; + dest.m32 = -src.m32; + dest.m33 = -src.m33; + + return dest; + } + + public boolean equals(Object m) { + return (m instanceof Matrix4f) && equal(this, (Matrix4f) m); + } + + public static boolean equal(Matrix4f a, Matrix4f b) { + return a.m00 == b.m00 && a.m01 == b.m01 && a.m02 == b.m02 && a.m03 == b.m03 && a.m10 == b.m10 && a.m11 == b.m11 + && a.m12 == b.m12 && a.m13 == b.m13 && a.m20 == b.m20 && a.m21 == b.m21 && a.m22 == b.m22 + && a.m23 == b.m23 && a.m30 == b.m30 && a.m31 == b.m31 && a.m32 == b.m32 && a.m33 == b.m33; + } +} \ No newline at end of file diff --git a/src/main/java/net/PeytonPlayz585/opengl/MinecraftImageData.java b/src/main/java/net/PeytonPlayz585/opengl/MinecraftImageData.java new file mode 100644 index 0000000..70225c1 --- /dev/null +++ b/src/main/java/net/PeytonPlayz585/opengl/MinecraftImageData.java @@ -0,0 +1,40 @@ +package net.PeytonPlayz585.opengl; + +public class MinecraftImageData { + + public final int[] data; + public final int w; + public final int h; + public final boolean alpha; + + public MinecraftImageData(int pw, int ph, boolean palpha) { + this.w = pw; + this.h = ph; + this.alpha = palpha; + this.data = new int[pw * ph]; + } + + public MinecraftImageData(int[] pdata, int pw, int ph, boolean palpha) { + if (pdata.length != pw * ph) { + throw new IllegalArgumentException("array size does not equal image size"); + } + this.w = pw; + this.h = ph; + this.alpha = palpha; + if (!palpha) { + for (int i = 0; i < pdata.length; ++i) { + pdata[i] = pdata[i] | 0xFF000000; + } + } + this.data = pdata; + } + + public MinecraftImageData getSubImage(int x, int y, int pw, int ph) { + int[] img = new int[pw * ph]; + for (int i = 0; i < ph; ++i) { + System.arraycopy(data, (i + y) * this.w + x, img, i * pw, pw); + } + return new MinecraftImageData(img, pw, ph, alpha); + } + +} \ No newline at end of file diff --git a/src/main/java/net/PeytonPlayz585/opengl/ReadableVector.java b/src/main/java/net/PeytonPlayz585/opengl/ReadableVector.java new file mode 100644 index 0000000..e708c04 --- /dev/null +++ b/src/main/java/net/PeytonPlayz585/opengl/ReadableVector.java @@ -0,0 +1,57 @@ +/* + * Copyright (c) 2002-2008 LWJGL Project + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of 'LWJGL' nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package net.PeytonPlayz585.opengl; + +import java.nio.FloatBuffer; + +/** + * @author foo + */ +public interface ReadableVector { + /** + * @return the length of the vector + */ + float length(); + + /** + * @return the length squared of the vector + */ + float lengthSquared(); + + /** + * Store this vector in a FloatBuffer + * + * @param buf The buffer to store it in, at the current position + * @return this + */ + Vector store(FloatBuffer buf); +} \ No newline at end of file diff --git a/src/main/java/net/PeytonPlayz585/opengl/ReadableVector2f.java b/src/main/java/net/PeytonPlayz585/opengl/ReadableVector2f.java new file mode 100644 index 0000000..0be9077 --- /dev/null +++ b/src/main/java/net/PeytonPlayz585/opengl/ReadableVector2f.java @@ -0,0 +1,47 @@ +/* + * Copyright (c) 2002-2008 LWJGL Project + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of 'LWJGL' nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package net.PeytonPlayz585.opengl; + +/** + * @author foo + */ +public interface ReadableVector2f extends ReadableVector { + /** + * @return x + */ + float getX(); + + /** + * @return y + */ + float getY(); +} \ No newline at end of file diff --git a/src/main/java/net/PeytonPlayz585/opengl/ReadableVector3f.java b/src/main/java/net/PeytonPlayz585/opengl/ReadableVector3f.java new file mode 100644 index 0000000..b0f7bee --- /dev/null +++ b/src/main/java/net/PeytonPlayz585/opengl/ReadableVector3f.java @@ -0,0 +1,42 @@ +/* + * Copyright (c) 2002-2008 LWJGL Project + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of 'LWJGL' nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package net.PeytonPlayz585.opengl; + +/** + * @author foo + */ +public interface ReadableVector3f extends ReadableVector2f { + /** + * @return z + */ + float getZ(); +} \ No newline at end of file diff --git a/src/main/java/net/PeytonPlayz585/opengl/ReadableVector4f.java b/src/main/java/net/PeytonPlayz585/opengl/ReadableVector4f.java new file mode 100644 index 0000000..7e10ef6 --- /dev/null +++ b/src/main/java/net/PeytonPlayz585/opengl/ReadableVector4f.java @@ -0,0 +1,44 @@ +/* + * Copyright (c) 2002-2008 LWJGL Project + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of 'LWJGL' nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package net.PeytonPlayz585.opengl; + +/** + * @author foo + */ +public interface ReadableVector4f extends ReadableVector3f { + + /** + * @return w + */ + float getW(); + +} \ No newline at end of file diff --git a/src/main/java/net/PeytonPlayz585/opengl/RealOpenGLEmuns.java b/src/main/java/net/PeytonPlayz585/opengl/RealOpenGLEmuns.java new file mode 100644 index 0000000..ad90888 --- /dev/null +++ b/src/main/java/net/PeytonPlayz585/opengl/RealOpenGLEmuns.java @@ -0,0 +1,2419 @@ +package net.PeytonPlayz585.opengl; + +public interface RealOpenGLEmuns { + // Field descriptor #544 I + public static final int GL_ACCUM = 256; + + // Field descriptor #544 I + public static final int GL_LOAD = 257; + + // Field descriptor #544 I + public static final int GL_RETURN = 258; + + // Field descriptor #544 I + public static final int GL_MULT = 259; + + // Field descriptor #544 I + public static final int GL_ADD = 260; + + // Field descriptor #544 I + public static final int GL_NEVER = 512; + + // Field descriptor #544 I + public static final int GL_LESS = 513; + + // Field descriptor #544 I + public static final int GL_EQUAL = 514; + + // Field descriptor #544 I + public static final int GL_LEQUAL = 515; + + // Field descriptor #544 I + public static final int GL_GREATER = 516; + + // Field descriptor #544 I + public static final int GL_NOTEQUAL = 517; + + // Field descriptor #544 I + public static final int GL_GEQUAL = 518; + + // Field descriptor #544 I + public static final int GL_ALWAYS = 519; + + // Field descriptor #544 I + public static final int GL_CURRENT_BIT = 1; + + // Field descriptor #544 I + public static final int GL_POINT_BIT = 2; + + // Field descriptor #544 I + public static final int GL_LINE_BIT = 4; + + // Field descriptor #544 I + public static final int GL_POLYGON_BIT = 8; + + // Field descriptor #544 I + public static final int GL_POLYGON_STIPPLE_BIT = 16; + + // Field descriptor #544 I + public static final int GL_PIXEL_MODE_BIT = 32; + + // Field descriptor #544 I + public static final int GL_LIGHTING_BIT = 64; + + // Field descriptor #544 I + public static final int GL_FOG_BIT = 128; + + // Field descriptor #544 I + public static final int GL_DEPTH_BUFFER_BIT = 256; + + // Field descriptor #544 I + public static final int GL_ACCUM_BUFFER_BIT = 512; + + // Field descriptor #544 I + public static final int GL_STENCIL_BUFFER_BIT = 1024; + + // Field descriptor #544 I + public static final int GL_VIEWPORT_BIT = 2048; + + // Field descriptor #544 I + public static final int GL_TRANSFORM_BIT = 4096; + + // Field descriptor #544 I + public static final int GL_ENABLE_BIT = 8192; + + // Field descriptor #544 I + public static final int GL_COLOR_BUFFER_BIT = 16384; + + // Field descriptor #544 I + public static final int GL_HINT_BIT = 32768; + + // Field descriptor #544 I + public static final int GL_EVAL_BIT = 65536; + + // Field descriptor #544 I + public static final int GL_LIST_BIT = 131072; + + // Field descriptor #544 I + public static final int GL_TEXTURE_BIT = 262144; + + // Field descriptor #544 I + public static final int GL_SCISSOR_BIT = 524288; + + // Field descriptor #544 I + public static final int GL_ALL_ATTRIB_BITS = 1048575; + + // Field descriptor #544 I + public static final int GL_POINTS = 0; + + // Field descriptor #544 I + public static final int GL_LINES = 1; + + // Field descriptor #544 I + public static final int GL_LINE_LOOP = 2; + + // Field descriptor #544 I + public static final int GL_LINE_STRIP = 3; + + // Field descriptor #544 I + public static final int GL_TRIANGLES = 4; + + // Field descriptor #544 I + public static final int GL_TRIANGLE_STRIP = 5; + + // Field descriptor #544 I + public static final int GL_TRIANGLE_FAN = 6; + + // Field descriptor #544 I + public static final int GL_QUADS = 7; + + // Field descriptor #544 I + public static final int GL_QUAD_STRIP = 8; + + // Field descriptor #544 I + public static final int GL_POLYGON = 9; + + // Field descriptor #544 I + public static final int GL_ZERO = 0; + + // Field descriptor #544 I + public static final int GL_ONE = 1; + + // Field descriptor #544 I + public static final int GL_SRC_COLOR = 768; + + // Field descriptor #544 I + public static final int GL_ONE_MINUS_SRC_COLOR = 769; + + // Field descriptor #544 I + public static final int GL_SRC_ALPHA = 770; + + // Field descriptor #544 I + public static final int GL_ONE_MINUS_SRC_ALPHA = 771; + + // Field descriptor #544 I + public static final int GL_DST_ALPHA = 772; + + // Field descriptor #544 I + public static final int GL_ONE_MINUS_DST_ALPHA = 773; + + // Field descriptor #544 I + public static final int GL_DST_COLOR = 774; + + // Field descriptor #544 I + public static final int GL_ONE_MINUS_DST_COLOR = 775; + + // Field descriptor #544 I + public static final int GL_SRC_ALPHA_SATURATE = 776; + + // Field descriptor #544 I + public static final int GL_CONSTANT_COLOR = 32769; + + // Field descriptor #544 I + public static final int GL_ONE_MINUS_CONSTANT_COLOR = 32770; + + // Field descriptor #544 I + public static final int GL_CONSTANT_ALPHA = 32771; + + // Field descriptor #544 I + public static final int GL_ONE_MINUS_CONSTANT_ALPHA = 32772; + + // Field descriptor #544 I + public static final int GL_TRUE = 1; + + // Field descriptor #544 I + public static final int GL_FALSE = 0; + + // Field descriptor #544 I + public static final int GL_CLIP_PLANE0 = 12288; + + // Field descriptor #544 I + public static final int GL_CLIP_PLANE1 = 12289; + + // Field descriptor #544 I + public static final int GL_CLIP_PLANE2 = 12290; + + // Field descriptor #544 I + public static final int GL_CLIP_PLANE3 = 12291; + + // Field descriptor #544 I + public static final int GL_CLIP_PLANE4 = 12292; + + // Field descriptor #544 I + public static final int GL_CLIP_PLANE5 = 12293; + + // Field descriptor #544 I + public static final int GL_BYTE = 5120; + + // Field descriptor #544 I + public static final int GL_UNSIGNED_BYTE = 5121; + + // Field descriptor #544 I + public static final int GL_SHORT = 5122; + + // Field descriptor #544 I + public static final int GL_UNSIGNED_SHORT = 5123; + + // Field descriptor #544 I + public static final int GL_INT = 5124; + + // Field descriptor #544 I + public static final int GL_UNSIGNED_INT = 5125; + + // Field descriptor #544 I + public static final int GL_FLOAT = 5126; + + // Field descriptor #544 I + public static final int GL_2_BYTES = 5127; + + // Field descriptor #544 I + public static final int GL_3_BYTES = 5128; + + // Field descriptor #544 I + public static final int GL_4_BYTES = 5129; + + // Field descriptor #544 I + public static final int GL_DOUBLE = 5130; + + // Field descriptor #544 I + public static final int GL_NONE = 0; + + // Field descriptor #544 I + public static final int GL_FRONT_LEFT = 1024; + + // Field descriptor #544 I + public static final int GL_FRONT_RIGHT = 1025; + + // Field descriptor #544 I + public static final int GL_BACK_LEFT = 1026; + + // Field descriptor #544 I + public static final int GL_BACK_RIGHT = 1027; + + // Field descriptor #544 I + public static final int GL_FRONT = 1028; + + // Field descriptor #544 I + public static final int GL_BACK = 1029; + + // Field descriptor #544 I + public static final int GL_LEFT = 1030; + + // Field descriptor #544 I + public static final int GL_RIGHT = 1031; + + // Field descriptor #544 I + public static final int GL_FRONT_AND_BACK = 1032; + + // Field descriptor #544 I + public static final int GL_AUX0 = 1033; + + // Field descriptor #544 I + public static final int GL_AUX1 = 1034; + + // Field descriptor #544 I + public static final int GL_AUX2 = 1035; + + // Field descriptor #544 I + public static final int GL_AUX3 = 1036; + + // Field descriptor #544 I + public static final int GL_NO_ERROR = 0; + + // Field descriptor #544 I + public static final int GL_INVALID_ENUM = 1280; + + // Field descriptor #544 I + public static final int GL_INVALID_VALUE = 1281; + + // Field descriptor #544 I + public static final int GL_INVALID_OPERATION = 1282; + + // Field descriptor #544 I + public static final int GL_STACK_OVERFLOW = 1283; + + // Field descriptor #544 I + public static final int GL_STACK_UNDERFLOW = 1284; + + // Field descriptor #544 I + public static final int GL_OUT_OF_MEMORY = 1285; + + // Field descriptor #544 I + public static final int GL_2D = 1536; + + // Field descriptor #544 I + public static final int GL_3D = 1537; + + // Field descriptor #544 I + public static final int GL_3D_COLOR = 1538; + + // Field descriptor #544 I + public static final int GL_3D_COLOR_TEXTURE = 1539; + + // Field descriptor #544 I + public static final int GL_4D_COLOR_TEXTURE = 1540; + + // Field descriptor #544 I + public static final int GL_PASS_THROUGH_TOKEN = 1792; + + // Field descriptor #544 I + public static final int GL_POINT_TOKEN = 1793; + + // Field descriptor #544 I + public static final int GL_LINE_TOKEN = 1794; + + // Field descriptor #544 I + public static final int GL_POLYGON_TOKEN = 1795; + + // Field descriptor #544 I + public static final int GL_BITMAP_TOKEN = 1796; + + // Field descriptor #544 I + public static final int GL_DRAW_PIXEL_TOKEN = 1797; + + // Field descriptor #544 I + public static final int GL_COPY_PIXEL_TOKEN = 1798; + + // Field descriptor #544 I + public static final int GL_LINE_RESET_TOKEN = 1799; + + // Field descriptor #544 I + public static final int GL_EXP = 2048; + + // Field descriptor #544 I + public static final int GL_EXP2 = 2049; + + // Field descriptor #544 I + public static final int GL_CW = 2304; + + // Field descriptor #544 I + public static final int GL_CCW = 2305; + + // Field descriptor #544 I + public static final int GL_COEFF = 2560; + + // Field descriptor #544 I + public static final int GL_ORDER = 2561; + + // Field descriptor #544 I + public static final int GL_DOMAIN = 2562; + + // Field descriptor #544 I + public static final int GL_CURRENT_COLOR = 2816; + + // Field descriptor #544 I + public static final int GL_CURRENT_INDEX = 2817; + + // Field descriptor #544 I + public static final int GL_CURRENT_NORMAL = 2818; + + // Field descriptor #544 I + public static final int GL_CURRENT_TEXTURE_COORDS = 2819; + + // Field descriptor #544 I + public static final int GL_CURRENT_RASTER_COLOR = 2820; + + // Field descriptor #544 I + public static final int GL_CURRENT_RASTER_INDEX = 2821; + + // Field descriptor #544 I + public static final int GL_CURRENT_RASTER_TEXTURE_COORDS = 2822; + + // Field descriptor #544 I + public static final int GL_CURRENT_RASTER_POSITION = 2823; + + // Field descriptor #544 I + public static final int GL_CURRENT_RASTER_POSITION_VALID = 2824; + + // Field descriptor #544 I + public static final int GL_CURRENT_RASTER_DISTANCE = 2825; + + // Field descriptor #544 I + public static final int GL_POINT_SMOOTH = 2832; + + // Field descriptor #544 I + public static final int GL_POINT_SIZE = 2833; + + // Field descriptor #544 I + public static final int GL_POINT_SIZE_RANGE = 2834; + + // Field descriptor #544 I + public static final int GL_POINT_SIZE_GRANULARITY = 2835; + + // Field descriptor #544 I + public static final int GL_LINE_SMOOTH = 2848; + + // Field descriptor #544 I + public static final int GL_LINE_WIDTH = 2849; + + // Field descriptor #544 I + public static final int GL_LINE_WIDTH_RANGE = 2850; + + // Field descriptor #544 I + public static final int GL_LINE_WIDTH_GRANULARITY = 2851; + + // Field descriptor #544 I + public static final int GL_LINE_STIPPLE = 2852; + + // Field descriptor #544 I + public static final int GL_LINE_STIPPLE_PATTERN = 2853; + + // Field descriptor #544 I + public static final int GL_LINE_STIPPLE_REPEAT = 2854; + + // Field descriptor #544 I + public static final int GL_LIST_MODE = 2864; + + // Field descriptor #544 I + public static final int GL_MAX_LIST_NESTING = 2865; + + // Field descriptor #544 I + public static final int GL_LIST_BASE = 2866; + + // Field descriptor #544 I + public static final int GL_LIST_INDEX = 2867; + + // Field descriptor #544 I + public static final int GL_POLYGON_MODE = 2880; + + // Field descriptor #544 I + public static final int GL_POLYGON_SMOOTH = 2881; + + // Field descriptor #544 I + public static final int GL_POLYGON_STIPPLE = 2882; + + // Field descriptor #544 I + public static final int GL_EDGE_FLAG = 2883; + + // Field descriptor #544 I + public static final int GL_CULL_FACE = 2884; + + // Field descriptor #544 I + public static final int GL_CULL_FACE_MODE = 2885; + + // Field descriptor #544 I + public static final int GL_FRONT_FACE = 2886; + + // Field descriptor #544 I + public static final int GL_LIGHTING = 2896; + + // Field descriptor #544 I + public static final int GL_LIGHT_MODEL_LOCAL_VIEWER = 2897; + + // Field descriptor #544 I + public static final int GL_LIGHT_MODEL_TWO_SIDE = 2898; + + // Field descriptor #544 I + public static final int GL_LIGHT_MODEL_AMBIENT = 2899; + + // Field descriptor #544 I + public static final int GL_SHADE_MODEL = 2900; + + // Field descriptor #544 I + public static final int GL_COLOR_MATERIAL_FACE = 2901; + + // Field descriptor #544 I + public static final int GL_COLOR_MATERIAL_PARAMETER = 2902; + + // Field descriptor #544 I + public static final int GL_COLOR_MATERIAL = 2903; + + // Field descriptor #544 I + public static final int GL_FOG = 2912; + + // Field descriptor #544 I + public static final int GL_FOG_INDEX = 2913; + + // Field descriptor #544 I + public static final int GL_FOG_DENSITY = 2914; + + // Field descriptor #544 I + public static final int GL_FOG_START = 2915; + + // Field descriptor #544 I + public static final int GL_FOG_END = 2916; + + // Field descriptor #544 I + public static final int GL_FOG_MODE = 2917; + + // Field descriptor #544 I + public static final int GL_FOG_COLOR = 2918; + + // Field descriptor #544 I + public static final int GL_DEPTH_RANGE = 2928; + + // Field descriptor #544 I + public static final int GL_DEPTH_TEST = 2929; + + // Field descriptor #544 I + public static final int GL_DEPTH_WRITEMASK = 2930; + + // Field descriptor #544 I + public static final int GL_DEPTH_CLEAR_VALUE = 2931; + + // Field descriptor #544 I + public static final int GL_DEPTH_FUNC = 2932; + + // Field descriptor #544 I + public static final int GL_ACCUM_CLEAR_VALUE = 2944; + + // Field descriptor #544 I + public static final int GL_STENCIL_TEST = 2960; + + // Field descriptor #544 I + public static final int GL_STENCIL_CLEAR_VALUE = 2961; + + // Field descriptor #544 I + public static final int GL_STENCIL_FUNC = 2962; + + // Field descriptor #544 I + public static final int GL_STENCIL_VALUE_MASK = 2963; + + // Field descriptor #544 I + public static final int GL_STENCIL_FAIL = 2964; + + // Field descriptor #544 I + public static final int GL_STENCIL_PASS_DEPTH_FAIL = 2965; + + // Field descriptor #544 I + public static final int GL_STENCIL_PASS_DEPTH_PASS = 2966; + + // Field descriptor #544 I + public static final int GL_STENCIL_REF = 2967; + + // Field descriptor #544 I + public static final int GL_STENCIL_WRITEMASK = 2968; + + // Field descriptor #544 I + public static final int GL_MATRIX_MODE = 2976; + + // Field descriptor #544 I + public static final int GL_NORMALIZE = 2977; + + // Field descriptor #544 I + public static final int GL_VIEWPORT = 2978; + + // Field descriptor #544 I + public static final int GL_MODELVIEW_STACK_DEPTH = 2979; + + // Field descriptor #544 I + public static final int GL_PROJECTION_STACK_DEPTH = 2980; + + // Field descriptor #544 I + public static final int GL_TEXTURE_STACK_DEPTH = 2981; + + // Field descriptor #544 I + public static final int GL_MODELVIEW_MATRIX = 2982; + + // Field descriptor #544 I + public static final int GL_PROJECTION_MATRIX = 2983; + + // Field descriptor #544 I + public static final int GL_TEXTURE_MATRIX = 2984; + + // Field descriptor #544 I + public static final int GL_ATTRIB_STACK_DEPTH = 2992; + + // Field descriptor #544 I + public static final int GL_CLIENT_ATTRIB_STACK_DEPTH = 2993; + + // Field descriptor #544 I + public static final int GL_ALPHA_TEST = 3008; + + // Field descriptor #544 I + public static final int GL_ALPHA_TEST_FUNC = 3009; + + // Field descriptor #544 I + public static final int GL_ALPHA_TEST_REF = 3010; + + // Field descriptor #544 I + public static final int GL_DITHER = 3024; + + // Field descriptor #544 I + public static final int GL_BLEND_DST = 3040; + + // Field descriptor #544 I + public static final int GL_BLEND_SRC = 3041; + + // Field descriptor #544 I + public static final int GL_BLEND = 3042; + + // Field descriptor #544 I + public static final int GL_LOGIC_OP_MODE = 3056; + + // Field descriptor #544 I + public static final int GL_INDEX_LOGIC_OP = 3057; + + // Field descriptor #544 I + public static final int GL_COLOR_LOGIC_OP = 3058; + + // Field descriptor #544 I + public static final int GL_AUX_BUFFERS = 3072; + + // Field descriptor #544 I + public static final int GL_DRAW_BUFFER = 3073; + + // Field descriptor #544 I + public static final int GL_READ_BUFFER = 3074; + + // Field descriptor #544 I + public static final int GL_SCISSOR_BOX = 3088; + + // Field descriptor #544 I + public static final int GL_SCISSOR_TEST = 3089; + + // Field descriptor #544 I + public static final int GL_INDEX_CLEAR_VALUE = 3104; + + // Field descriptor #544 I + public static final int GL_INDEX_WRITEMASK = 3105; + + // Field descriptor #544 I + public static final int GL_COLOR_CLEAR_VALUE = 3106; + + // Field descriptor #544 I + public static final int GL_COLOR_WRITEMASK = 3107; + + // Field descriptor #544 I + public static final int GL_INDEX_MODE = 3120; + + // Field descriptor #544 I + public static final int GL_RGBA_MODE = 3121; + + // Field descriptor #544 I + public static final int GL_DOUBLEBUFFER = 3122; + + // Field descriptor #544 I + public static final int GL_STEREO = 3123; + + // Field descriptor #544 I + public static final int GL_RENDER_MODE = 3136; + + // Field descriptor #544 I + public static final int GL_PERSPECTIVE_CORRECTION_HINT = 3152; + + // Field descriptor #544 I + public static final int GL_POINT_SMOOTH_HINT = 3153; + + // Field descriptor #544 I + public static final int GL_LINE_SMOOTH_HINT = 3154; + + // Field descriptor #544 I + public static final int GL_POLYGON_SMOOTH_HINT = 3155; + + // Field descriptor #544 I + public static final int GL_FOG_HINT = 3156; + + // Field descriptor #544 I + public static final int GL_TEXTURE_GEN_S = 3168; + + // Field descriptor #544 I + public static final int GL_TEXTURE_GEN_T = 3169; + + // Field descriptor #544 I + public static final int GL_TEXTURE_GEN_R = 3170; + + // Field descriptor #544 I + public static final int GL_TEXTURE_GEN_Q = 3171; + + // Field descriptor #544 I + public static final int GL_PIXEL_MAP_I_TO_I = 3184; + + // Field descriptor #544 I + public static final int GL_PIXEL_MAP_S_TO_S = 3185; + + // Field descriptor #544 I + public static final int GL_PIXEL_MAP_I_TO_R = 3186; + + // Field descriptor #544 I + public static final int GL_PIXEL_MAP_I_TO_G = 3187; + + // Field descriptor #544 I + public static final int GL_PIXEL_MAP_I_TO_B = 3188; + + // Field descriptor #544 I + public static final int GL_PIXEL_MAP_I_TO_A = 3189; + + // Field descriptor #544 I + public static final int GL_PIXEL_MAP_R_TO_R = 3190; + + // Field descriptor #544 I + public static final int GL_PIXEL_MAP_G_TO_G = 3191; + + // Field descriptor #544 I + public static final int GL_PIXEL_MAP_B_TO_B = 3192; + + // Field descriptor #544 I + public static final int GL_PIXEL_MAP_A_TO_A = 3193; + + // Field descriptor #544 I + public static final int GL_PIXEL_MAP_I_TO_I_SIZE = 3248; + + // Field descriptor #544 I + public static final int GL_PIXEL_MAP_S_TO_S_SIZE = 3249; + + // Field descriptor #544 I + public static final int GL_PIXEL_MAP_I_TO_R_SIZE = 3250; + + // Field descriptor #544 I + public static final int GL_PIXEL_MAP_I_TO_G_SIZE = 3251; + + // Field descriptor #544 I + public static final int GL_PIXEL_MAP_I_TO_B_SIZE = 3252; + + // Field descriptor #544 I + public static final int GL_PIXEL_MAP_I_TO_A_SIZE = 3253; + + // Field descriptor #544 I + public static final int GL_PIXEL_MAP_R_TO_R_SIZE = 3254; + + // Field descriptor #544 I + public static final int GL_PIXEL_MAP_G_TO_G_SIZE = 3255; + + // Field descriptor #544 I + public static final int GL_PIXEL_MAP_B_TO_B_SIZE = 3256; + + // Field descriptor #544 I + public static final int GL_PIXEL_MAP_A_TO_A_SIZE = 3257; + + // Field descriptor #544 I + public static final int GL_UNPACK_SWAP_BYTES = 3312; + + // Field descriptor #544 I + public static final int GL_UNPACK_LSB_FIRST = 3313; + + // Field descriptor #544 I + public static final int GL_UNPACK_ROW_LENGTH = 3314; + + // Field descriptor #544 I + public static final int GL_UNPACK_SKIP_ROWS = 3315; + + // Field descriptor #544 I + public static final int GL_UNPACK_SKIP_PIXELS = 3316; + + // Field descriptor #544 I + public static final int GL_UNPACK_ALIGNMENT = 3317; + + // Field descriptor #544 I + public static final int GL_PACK_SWAP_BYTES = 3328; + + // Field descriptor #544 I + public static final int GL_PACK_LSB_FIRST = 3329; + + // Field descriptor #544 I + public static final int GL_PACK_ROW_LENGTH = 3330; + + // Field descriptor #544 I + public static final int GL_PACK_SKIP_ROWS = 3331; + + // Field descriptor #544 I + public static final int GL_PACK_SKIP_PIXELS = 3332; + + // Field descriptor #544 I + public static final int GL_PACK_ALIGNMENT = 3333; + + // Field descriptor #544 I + public static final int GL_MAP_COLOR = 3344; + + // Field descriptor #544 I + public static final int GL_MAP_STENCIL = 3345; + + // Field descriptor #544 I + public static final int GL_INDEX_SHIFT = 3346; + + // Field descriptor #544 I + public static final int GL_INDEX_OFFSET = 3347; + + // Field descriptor #544 I + public static final int GL_RED_SCALE = 3348; + + // Field descriptor #544 I + public static final int GL_RED_BIAS = 3349; + + // Field descriptor #544 I + public static final int GL_ZOOM_X = 3350; + + // Field descriptor #544 I + public static final int GL_ZOOM_Y = 3351; + + // Field descriptor #544 I + public static final int GL_GREEN_SCALE = 3352; + + // Field descriptor #544 I + public static final int GL_GREEN_BIAS = 3353; + + // Field descriptor #544 I + public static final int GL_BLUE_SCALE = 3354; + + // Field descriptor #544 I + public static final int GL_BLUE_BIAS = 3355; + + // Field descriptor #544 I + public static final int GL_ALPHA_SCALE = 3356; + + // Field descriptor #544 I + public static final int GL_ALPHA_BIAS = 3357; + + // Field descriptor #544 I + public static final int GL_DEPTH_SCALE = 3358; + + // Field descriptor #544 I + public static final int GL_DEPTH_BIAS = 3359; + + // Field descriptor #544 I + public static final int GL_MAX_EVAL_ORDER = 3376; + + // Field descriptor #544 I + public static final int GL_MAX_LIGHTS = 3377; + + // Field descriptor #544 I + public static final int GL_MAX_CLIP_PLANES = 3378; + + // Field descriptor #544 I + public static final int GL_MAX_TEXTURE_SIZE = 3379; + + // Field descriptor #544 I + public static final int GL_MAX_PIXEL_MAP_TABLE = 3380; + + // Field descriptor #544 I + public static final int GL_MAX_ATTRIB_STACK_DEPTH = 3381; + + // Field descriptor #544 I + public static final int GL_MAX_MODELVIEW_STACK_DEPTH = 3382; + + // Field descriptor #544 I + public static final int GL_MAX_NAME_STACK_DEPTH = 3383; + + // Field descriptor #544 I + public static final int GL_MAX_PROJECTION_STACK_DEPTH = 3384; + + // Field descriptor #544 I + public static final int GL_MAX_TEXTURE_STACK_DEPTH = 3385; + + // Field descriptor #544 I + public static final int GL_MAX_VIEWPORT_DIMS = 3386; + + // Field descriptor #544 I + public static final int GL_MAX_CLIENT_ATTRIB_STACK_DEPTH = 3387; + + // Field descriptor #544 I + public static final int GL_SUBPIXEL_BITS = 3408; + + // Field descriptor #544 I + public static final int GL_INDEX_BITS = 3409; + + // Field descriptor #544 I + public static final int GL_RED_BITS = 3410; + + // Field descriptor #544 I + public static final int GL_GREEN_BITS = 3411; + + // Field descriptor #544 I + public static final int GL_BLUE_BITS = 3412; + + // Field descriptor #544 I + public static final int GL_ALPHA_BITS = 3413; + + // Field descriptor #544 I + public static final int GL_DEPTH_BITS = 3414; + + // Field descriptor #544 I + public static final int GL_STENCIL_BITS = 3415; + + // Field descriptor #544 I + public static final int GL_ACCUM_RED_BITS = 3416; + + // Field descriptor #544 I + public static final int GL_ACCUM_GREEN_BITS = 3417; + + // Field descriptor #544 I + public static final int GL_ACCUM_BLUE_BITS = 3418; + + // Field descriptor #544 I + public static final int GL_ACCUM_ALPHA_BITS = 3419; + + // Field descriptor #544 I + public static final int GL_NAME_STACK_DEPTH = 3440; + + // Field descriptor #544 I + public static final int GL_AUTO_NORMAL = 3456; + + // Field descriptor #544 I + public static final int GL_MAP1_COLOR_4 = 3472; + + // Field descriptor #544 I + public static final int GL_MAP1_INDEX = 3473; + + // Field descriptor #544 I + public static final int GL_MAP1_NORMAL = 3474; + + // Field descriptor #544 I + public static final int GL_MAP1_TEXTURE_COORD_1 = 3475; + + // Field descriptor #544 I + public static final int GL_MAP1_TEXTURE_COORD_2 = 3476; + + // Field descriptor #544 I + public static final int GL_MAP1_TEXTURE_COORD_3 = 3477; + + // Field descriptor #544 I + public static final int GL_MAP1_TEXTURE_COORD_4 = 3478; + + // Field descriptor #544 I + public static final int GL_MAP1_VERTEX_3 = 3479; + + // Field descriptor #544 I + public static final int GL_MAP1_VERTEX_4 = 3480; + + // Field descriptor #544 I + public static final int GL_MAP2_COLOR_4 = 3504; + + // Field descriptor #544 I + public static final int GL_MAP2_INDEX = 3505; + + // Field descriptor #544 I + public static final int GL_MAP2_NORMAL = 3506; + + // Field descriptor #544 I + public static final int GL_MAP2_TEXTURE_COORD_1 = 3507; + + // Field descriptor #544 I + public static final int GL_MAP2_TEXTURE_COORD_2 = 3508; + + // Field descriptor #544 I + public static final int GL_MAP2_TEXTURE_COORD_3 = 3509; + + // Field descriptor #544 I + public static final int GL_MAP2_TEXTURE_COORD_4 = 3510; + + // Field descriptor #544 I + public static final int GL_MAP2_VERTEX_3 = 3511; + + // Field descriptor #544 I + public static final int GL_MAP2_VERTEX_4 = 3512; + + // Field descriptor #544 I + public static final int GL_MAP1_GRID_DOMAIN = 3536; + + // Field descriptor #544 I + public static final int GL_MAP1_GRID_SEGMENTS = 3537; + + // Field descriptor #544 I + public static final int GL_MAP2_GRID_DOMAIN = 3538; + + // Field descriptor #544 I + public static final int GL_MAP2_GRID_SEGMENTS = 3539; + + // Field descriptor #544 I + public static final int GL_TEXTURE_1D = 3552; + + // Field descriptor #544 I + public static final int GL_TEXTURE_2D = 3553; + + // Field descriptor #544 I + public static final int GL_FEEDBACK_BUFFER_POINTER = 3568; + + // Field descriptor #544 I + public static final int GL_FEEDBACK_BUFFER_SIZE = 3569; + + // Field descriptor #544 I + public static final int GL_FEEDBACK_BUFFER_TYPE = 3570; + + // Field descriptor #544 I + public static final int GL_SELECTION_BUFFER_POINTER = 3571; + + // Field descriptor #544 I + public static final int GL_SELECTION_BUFFER_SIZE = 3572; + + // Field descriptor #544 I + public static final int GL_TEXTURE_WIDTH = 4096; + + // Field descriptor #544 I + public static final int GL_TEXTURE_HEIGHT = 4097; + + // Field descriptor #544 I + public static final int GL_TEXTURE_INTERNAL_FORMAT = 4099; + + // Field descriptor #544 I + public static final int GL_TEXTURE_BORDER_COLOR = 4100; + + // Field descriptor #544 I + public static final int GL_TEXTURE_BORDER = 4101; + + // Field descriptor #544 I + public static final int GL_DONT_CARE = 4352; + + // Field descriptor #544 I + public static final int GL_FASTEST = 4353; + + // Field descriptor #544 I + public static final int GL_NICEST = 4354; + + // Field descriptor #544 I + public static final int GL_LIGHT0 = 16384; + + // Field descriptor #544 I + public static final int GL_LIGHT1 = 16385; + + // Field descriptor #544 I + public static final int GL_LIGHT2 = 16386; + + // Field descriptor #544 I + public static final int GL_LIGHT3 = 16387; + + // Field descriptor #544 I + public static final int GL_LIGHT4 = 16388; + + // Field descriptor #544 I + public static final int GL_LIGHT5 = 16389; + + // Field descriptor #544 I + public static final int GL_LIGHT6 = 16390; + + // Field descriptor #544 I + public static final int GL_LIGHT7 = 16391; + + // Field descriptor #544 I + public static final int GL_AMBIENT = 4608; + + // Field descriptor #544 I + public static final int GL_DIFFUSE = 4609; + + // Field descriptor #544 I + public static final int GL_SPECULAR = 4610; + + // Field descriptor #544 I + public static final int GL_POSITION = 4611; + + // Field descriptor #544 I + public static final int GL_SPOT_DIRECTION = 4612; + + // Field descriptor #544 I + public static final int GL_SPOT_EXPONENT = 4613; + + // Field descriptor #544 I + public static final int GL_SPOT_CUTOFF = 4614; + + // Field descriptor #544 I + public static final int GL_CONSTANT_ATTENUATION = 4615; + + // Field descriptor #544 I + public static final int GL_LINEAR_ATTENUATION = 4616; + + // Field descriptor #544 I + public static final int GL_QUADRATIC_ATTENUATION = 4617; + + // Field descriptor #544 I + public static final int GL_COMPILE = 4864; + + // Field descriptor #544 I + public static final int GL_COMPILE_AND_EXECUTE = 4865; + + // Field descriptor #544 I + public static final int GL_CLEAR = 5376; + + // Field descriptor #544 I + public static final int GL_AND = 5377; + + // Field descriptor #544 I + public static final int GL_AND_REVERSE = 5378; + + // Field descriptor #544 I + public static final int GL_COPY = 5379; + + // Field descriptor #544 I + public static final int GL_AND_INVERTED = 5380; + + // Field descriptor #544 I + public static final int GL_NOOP = 5381; + + // Field descriptor #544 I + public static final int GL_XOR = 5382; + + // Field descriptor #544 I + public static final int GL_OR = 5383; + + // Field descriptor #544 I + public static final int GL_NOR = 5384; + + // Field descriptor #544 I + public static final int GL_EQUIV = 5385; + + // Field descriptor #544 I + public static final int GL_INVERT = 5386; + + // Field descriptor #544 I + public static final int GL_OR_REVERSE = 5387; + + // Field descriptor #544 I + public static final int GL_COPY_INVERTED = 5388; + + // Field descriptor #544 I + public static final int GL_OR_INVERTED = 5389; + + // Field descriptor #544 I + public static final int GL_NAND = 5390; + + // Field descriptor #544 I + public static final int GL_SET = 5391; + + // Field descriptor #544 I + public static final int GL_EMISSION = 5632; + + // Field descriptor #544 I + public static final int GL_SHININESS = 5633; + + // Field descriptor #544 I + public static final int GL_AMBIENT_AND_DIFFUSE = 5634; + + // Field descriptor #544 I + public static final int GL_COLOR_INDEXES = 5635; + + // Field descriptor #544 I + public static final int GL_MODELVIEW = 5888; + + // Field descriptor #544 I + public static final int GL_PROJECTION = 5889; + + // Field descriptor #544 I + public static final int GL_TEXTURE = 5890; + + // Field descriptor #544 I + public static final int GL_COLOR = 6144; + + // Field descriptor #544 I + public static final int GL_DEPTH = 6145; + + // Field descriptor #544 I + public static final int GL_STENCIL = 6146; + + // Field descriptor #544 I + public static final int GL_COLOR_INDEX = 6400; + + // Field descriptor #544 I + public static final int GL_STENCIL_INDEX = 6401; + + // Field descriptor #544 I + public static final int GL_DEPTH_COMPONENT = 6402; + + // Field descriptor #544 I + public static final int GL_RED = 6403; + + // Field descriptor #544 I + public static final int GL_GREEN = 6404; + + // Field descriptor #544 I + public static final int GL_BLUE = 6405; + + // Field descriptor #544 I + public static final int GL_ALPHA = 6406; + + // Field descriptor #544 I + public static final int GL_RGB = 6407; + + // Field descriptor #544 I + public static final int GL_RGBA = 6408; + + // Field descriptor #544 I + public static final int GL_LUMINANCE = 6409; + + // Field descriptor #544 I + public static final int GL_LUMINANCE_ALPHA = 6410; + + // Field descriptor #544 I + public static final int GL_BITMAP = 6656; + + // Field descriptor #544 I + public static final int GL_POINT = 6912; + + // Field descriptor #544 I + public static final int GL_LINE = 6913; + + // Field descriptor #544 I + public static final int GL_FILL = 6914; + + // Field descriptor #544 I + public static final int GL_RENDER = 7168; + + // Field descriptor #544 I + public static final int GL_FEEDBACK = 7169; + + // Field descriptor #544 I + public static final int GL_SELECT = 7170; + + // Field descriptor #544 I + public static final int GL_FLAT = 7424; + + // Field descriptor #544 I + public static final int GL_SMOOTH = 7425; + + // Field descriptor #544 I + public static final int GL_KEEP = 7680; + + // Field descriptor #544 I + public static final int GL_REPLACE = 7681; + + // Field descriptor #544 I + public static final int GL_INCR = 7682; + + // Field descriptor #544 I + public static final int GL_DECR = 7683; + + // Field descriptor #544 I + public static final int GL_VENDOR = 7936; + + // Field descriptor #544 I + public static final int GL_RENDERER = 7937; + + // Field descriptor #544 I + public static final int GL_VERSION = 7938; + + // Field descriptor #544 I + public static final int GL_EXTENSIONS = 7939; + + // Field descriptor #544 I + public static final int GL_S = 8192; + + // Field descriptor #544 I + public static final int GL_T = 8193; + + // Field descriptor #544 I + public static final int GL_R = 8194; + + // Field descriptor #544 I + public static final int GL_Q = 8195; + + // Field descriptor #544 I + public static final int GL_MODULATE = 8448; + + // Field descriptor #544 I + public static final int GL_DECAL = 8449; + + // Field descriptor #544 I + public static final int GL_TEXTURE_ENV_MODE = 8704; + + // Field descriptor #544 I + public static final int GL_TEXTURE_ENV_COLOR = 8705; + + // Field descriptor #544 I + public static final int GL_TEXTURE_ENV = 8960; + + // Field descriptor #544 I + public static final int GL_EYE_LINEAR = 9216; + + // Field descriptor #544 I + public static final int GL_OBJECT_LINEAR = 9217; + + // Field descriptor #544 I + public static final int GL_SPHERE_MAP = 9218; + + // Field descriptor #544 I + public static final int GL_TEXTURE_GEN_MODE = 9472; + + // Field descriptor #544 I + public static final int GL_OBJECT_PLANE = 9473; + + // Field descriptor #544 I + public static final int GL_EYE_PLANE = 9474; + + // Field descriptor #544 I + public static final int GL_NEAREST = 9728; + + // Field descriptor #544 I + public static final int GL_LINEAR = 9729; + + // Field descriptor #544 I + public static final int GL_NEAREST_MIPMAP_NEAREST = 9984; + + // Field descriptor #544 I + public static final int GL_LINEAR_MIPMAP_NEAREST = 9985; + + // Field descriptor #544 I + public static final int GL_NEAREST_MIPMAP_LINEAR = 9986; + + // Field descriptor #544 I + public static final int GL_LINEAR_MIPMAP_LINEAR = 9987; + + // Field descriptor #544 I + public static final int GL_TEXTURE_MAG_FILTER = 10240; + + // Field descriptor #544 I + public static final int GL_TEXTURE_MIN_FILTER = 10241; + + // Field descriptor #544 I + public static final int GL_TEXTURE_WRAP_S = 10242; + + // Field descriptor #544 I + public static final int GL_TEXTURE_WRAP_T = 10243; + + // Field descriptor #544 I + public static final int GL_CLAMP = 10496; + + // Field descriptor #544 I + public static final int GL_REPEAT = 10497; + + // Field descriptor #544 I + public static final int GL_CLIENT_PIXEL_STORE_BIT = 1; + + // Field descriptor #544 I + public static final int GL_CLIENT_VERTEX_ARRAY_BIT = 2; + + // Field descriptor #544 I + public static final int GL_ALL_CLIENT_ATTRIB_BITS = -1; + + // Field descriptor #544 I + public static final int GL_POLYGON_OFFSET_FACTOR = 32824; + + // Field descriptor #544 I + public static final int GL_POLYGON_OFFSET_UNITS = 10752; + + // Field descriptor #544 I + public static final int GL_POLYGON_OFFSET_POINT = 10753; + + // Field descriptor #544 I + public static final int GL_POLYGON_OFFSET_LINE = 10754; + + // Field descriptor #544 I + public static final int GL_POLYGON_OFFSET_FILL = 32823; + + // Field descriptor #544 I + public static final int GL_ALPHA4 = 32827; + + // Field descriptor #544 I + public static final int GL_ALPHA8 = 32828; + + // Field descriptor #544 I + public static final int GL_ALPHA12 = 32829; + + // Field descriptor #544 I + public static final int GL_ALPHA16 = 32830; + + // Field descriptor #544 I + public static final int GL_LUMINANCE4 = 32831; + + // Field descriptor #544 I + public static final int GL_LUMINANCE8 = 32832; + + // Field descriptor #544 I + public static final int GL_LUMINANCE12 = 32833; + + // Field descriptor #544 I + public static final int GL_LUMINANCE16 = 32834; + + // Field descriptor #544 I + public static final int GL_LUMINANCE4_ALPHA4 = 32835; + + // Field descriptor #544 I + public static final int GL_LUMINANCE6_ALPHA2 = 32836; + + // Field descriptor #544 I + public static final int GL_LUMINANCE8_ALPHA8 = 32837; + + // Field descriptor #544 I + public static final int GL_LUMINANCE12_ALPHA4 = 32838; + + // Field descriptor #544 I + public static final int GL_LUMINANCE12_ALPHA12 = 32839; + + // Field descriptor #544 I + public static final int GL_LUMINANCE16_ALPHA16 = 32840; + + // Field descriptor #544 I + public static final int GL_INTENSITY = 32841; + + // Field descriptor #544 I + public static final int GL_INTENSITY4 = 32842; + + // Field descriptor #544 I + public static final int GL_INTENSITY8 = 32843; + + // Field descriptor #544 I + public static final int GL_INTENSITY12 = 32844; + + // Field descriptor #544 I + public static final int GL_INTENSITY16 = 32845; + + // Field descriptor #544 I + public static final int GL_R3_G3_B2 = 10768; + + // Field descriptor #544 I + public static final int GL_RGB4 = 32847; + + // Field descriptor #544 I + public static final int GL_RGB5 = 32848; + + // Field descriptor #544 I + public static final int GL_RGB8 = 32849; + + // Field descriptor #544 I + public static final int GL_RGB10 = 32850; + + // Field descriptor #544 I + public static final int GL_RGB12 = 32851; + + // Field descriptor #544 I + public static final int GL_RGB16 = 32852; + + // Field descriptor #544 I + public static final int GL_RGBA2 = 32853; + + // Field descriptor #544 I + public static final int GL_RGBA4 = 32854; + + // Field descriptor #544 I + public static final int GL_RGB5_A1 = 32855; + + // Field descriptor #544 I + public static final int GL_RGBA8 = 32856; + + // Field descriptor #544 I + public static final int GL_RGB10_A2 = 32857; + + // Field descriptor #544 I + public static final int GL_RGBA12 = 32858; + + // Field descriptor #544 I + public static final int GL_RGBA16 = 32859; + + // Field descriptor #544 I + public static final int GL_TEXTURE_RED_SIZE = 32860; + + // Field descriptor #544 I + public static final int GL_TEXTURE_GREEN_SIZE = 32861; + + // Field descriptor #544 I + public static final int GL_TEXTURE_BLUE_SIZE = 32862; + + // Field descriptor #544 I + public static final int GL_TEXTURE_ALPHA_SIZE = 32863; + + // Field descriptor #544 I + public static final int GL_TEXTURE_LUMINANCE_SIZE = 32864; + + // Field descriptor #544 I + public static final int GL_TEXTURE_INTENSITY_SIZE = 32865; + + // Field descriptor #544 I + public static final int GL_PROXY_TEXTURE_1D = 32867; + + // Field descriptor #544 I + public static final int GL_PROXY_TEXTURE_2D = 32868; + + // Field descriptor #544 I + public static final int GL_TEXTURE_PRIORITY = 32870; + + // Field descriptor #544 I + public static final int GL_TEXTURE_RESIDENT = 32871; + + // Field descriptor #544 I + public static final int GL_TEXTURE_BINDING_1D = 32872; + + // Field descriptor #544 I + public static final int GL_TEXTURE_BINDING_2D = 32873; + + // Field descriptor #544 I + public static final int GL_VERTEX_ARRAY = 32884; + + // Field descriptor #544 I + public static final int GL_NORMAL_ARRAY = 32885; + + // Field descriptor #544 I + public static final int GL_COLOR_ARRAY = 32886; + + // Field descriptor #544 I + public static final int GL_INDEX_ARRAY = 32887; + + // Field descriptor #544 I + public static final int GL_TEXTURE_COORD_ARRAY = 32888; + + // Field descriptor #544 I + public static final int GL_EDGE_FLAG_ARRAY = 32889; + + // Field descriptor #544 I + public static final int GL_VERTEX_ARRAY_SIZE = 32890; + + // Field descriptor #544 I + public static final int GL_VERTEX_ARRAY_TYPE = 32891; + + // Field descriptor #544 I + public static final int GL_VERTEX_ARRAY_STRIDE = 32892; + + // Field descriptor #544 I + public static final int GL_NORMAL_ARRAY_TYPE = 32894; + + // Field descriptor #544 I + public static final int GL_NORMAL_ARRAY_STRIDE = 32895; + + // Field descriptor #544 I + public static final int GL_COLOR_ARRAY_SIZE = 32897; + + // Field descriptor #544 I + public static final int GL_COLOR_ARRAY_TYPE = 32898; + + // Field descriptor #544 I + public static final int GL_COLOR_ARRAY_STRIDE = 32899; + + // Field descriptor #544 I + public static final int GL_INDEX_ARRAY_TYPE = 32901; + + // Field descriptor #544 I + public static final int GL_INDEX_ARRAY_STRIDE = 32902; + + // Field descriptor #544 I + public static final int GL_TEXTURE_COORD_ARRAY_SIZE = 32904; + + // Field descriptor #544 I + public static final int GL_TEXTURE_COORD_ARRAY_TYPE = 32905; + + // Field descriptor #544 I + public static final int GL_TEXTURE_COORD_ARRAY_STRIDE = 32906; + + // Field descriptor #544 I + public static final int GL_EDGE_FLAG_ARRAY_STRIDE = 32908; + + // Field descriptor #544 I + public static final int GL_VERTEX_ARRAY_POINTER = 32910; + + // Field descriptor #544 I + public static final int GL_NORMAL_ARRAY_POINTER = 32911; + + // Field descriptor #544 I + public static final int GL_COLOR_ARRAY_POINTER = 32912; + + // Field descriptor #544 I + public static final int GL_INDEX_ARRAY_POINTER = 32913; + + // Field descriptor #544 I + public static final int GL_TEXTURE_COORD_ARRAY_POINTER = 32914; + + // Field descriptor #544 I + public static final int GL_EDGE_FLAG_ARRAY_POINTER = 32915; + + // Field descriptor #544 I + public static final int GL_V2F = 10784; + + // Field descriptor #544 I + public static final int GL_V3F = 10785; + + // Field descriptor #544 I + public static final int GL_C4UB_V2F = 10786; + + // Field descriptor #544 I + public static final int GL_C4UB_V3F = 10787; + + // Field descriptor #544 I + public static final int GL_C3F_V3F = 10788; + + // Field descriptor #544 I + public static final int GL_N3F_V3F = 10789; + + // Field descriptor #544 I + public static final int GL_C4F_N3F_V3F = 10790; + + // Field descriptor #544 I + public static final int GL_T2F_V3F = 10791; + + // Field descriptor #544 I + public static final int GL_T4F_V4F = 10792; + + // Field descriptor #544 I + public static final int GL_T2F_C4UB_V3F = 10793; + + // Field descriptor #544 I + public static final int GL_T2F_C3F_V3F = 10794; + + // Field descriptor #544 I + public static final int GL_T2F_N3F_V3F = 10795; + + // Field descriptor #544 I + public static final int GL_T2F_C4F_N3F_V3F = 10796; + + // Field descriptor #544 I + public static final int GL_T4F_C4F_N3F_V4F = 10797; + + // Field descriptor #544 I + public static final int GL_LOGIC_OP = 3057; + + // Field descriptor #544 I + public static final int GL_TEXTURE_COMPONENTS = 4099; + + // Field descriptor #45 I + public static final int GL_TEXTURE_BINDING_3D = 32874; + + // Field descriptor #45 I + public static final int GL_PACK_SKIP_IMAGES = 32875; + + // Field descriptor #45 I + public static final int GL_PACK_IMAGE_HEIGHT = 32876; + + // Field descriptor #45 I + public static final int GL_UNPACK_SKIP_IMAGES = 32877; + + // Field descriptor #45 I + public static final int GL_UNPACK_IMAGE_HEIGHT = 32878; + + // Field descriptor #45 I + public static final int GL_TEXTURE_3D = 32879; + + // Field descriptor #45 I + public static final int GL_PROXY_TEXTURE_3D = 32880; + + // Field descriptor #45 I + public static final int GL_TEXTURE_DEPTH = 32881; + + // Field descriptor #45 I + public static final int GL_TEXTURE_WRAP_R = 32882; + + // Field descriptor #45 I + public static final int GL_MAX_3D_TEXTURE_SIZE = 32883; + + // Field descriptor #45 I + public static final int GL_BGR = 32992; + + // Field descriptor #45 I + public static final int GL_BGRA = 32993; + + // Field descriptor #45 I + public static final int GL_UNSIGNED_BYTE_3_3_2 = 32818; + + // Field descriptor #45 I + public static final int GL_UNSIGNED_BYTE_2_3_3_REV = 33634; + + // Field descriptor #45 I + public static final int GL_UNSIGNED_SHORT_5_6_5 = 33635; + + // Field descriptor #45 I + public static final int GL_UNSIGNED_SHORT_5_6_5_REV = 33636; + + // Field descriptor #45 I + public static final int GL_UNSIGNED_SHORT_4_4_4_4 = 32819; + + // Field descriptor #45 I + public static final int GL_UNSIGNED_SHORT_4_4_4_4_REV = 33637; + + // Field descriptor #45 I + public static final int GL_UNSIGNED_SHORT_5_5_5_1 = 32820; + + // Field descriptor #45 I + public static final int GL_UNSIGNED_SHORT_1_5_5_5_REV = 33638; + + // Field descriptor #45 I + public static final int GL_UNSIGNED_INT_8_8_8_8 = 32821; + + // Field descriptor #45 I + public static final int GL_UNSIGNED_INT_8_8_8_8_REV = 33639; + + // Field descriptor #45 I + public static final int GL_UNSIGNED_INT_10_10_10_2 = 32822; + + // Field descriptor #45 I + public static final int GL_UNSIGNED_INT_2_10_10_10_REV = 33640; + + // Field descriptor #45 I + public static final int GL_RESCALE_NORMAL = 32826; + + // Field descriptor #45 I + public static final int GL_LIGHT_MODEL_COLOR_CONTROL = 33272; + + // Field descriptor #45 I + public static final int GL_SINGLE_COLOR = 33273; + + // Field descriptor #45 I + public static final int GL_SEPARATE_SPECULAR_COLOR = 33274; + + // Field descriptor #45 I + public static final int GL_CLAMP_TO_EDGE = 33071; + + // Field descriptor #45 I + public static final int GL_TEXTURE_MIN_LOD = 33082; + + // Field descriptor #45 I + public static final int GL_TEXTURE_MAX_LOD = 33083; + + // Field descriptor #45 I + public static final int GL_TEXTURE_BASE_LEVEL = 33084; + + // Field descriptor #45 I + public static final int GL_TEXTURE_MAX_LEVEL = 33085; + + // Field descriptor #45 I + public static final int GL_MAX_ELEMENTS_VERTICES = 33000; + + // Field descriptor #45 I + public static final int GL_MAX_ELEMENTS_INDICES = 33001; + + // Field descriptor #45 I + public static final int GL_ALIASED_POINT_SIZE_RANGE = 33901; + + // Field descriptor #45 I + public static final int GL_ALIASED_LINE_WIDTH_RANGE = 33902; + + // Field descriptor #45 I + public static final int GL_SMOOTH_POINT_SIZE_RANGE = 2834; + + // Field descriptor #45 I + public static final int GL_SMOOTH_POINT_SIZE_GRANULARITY = 2835; + + // Field descriptor #45 I + public static final int GL_SMOOTH_LINE_WIDTH_RANGE = 2850; + + // Field descriptor #45 I + public static final int GL_SMOOTH_LINE_WIDTH_GRANULARITY = 2851; + + // Field descriptor #76 I + public static final int GL_TEXTURE0 = 33984; + + // Field descriptor #76 I + public static final int GL_TEXTURE1 = 33985; + + // Field descriptor #76 I + public static final int GL_TEXTURE2 = 33986; + + // Field descriptor #76 I + public static final int GL_TEXTURE3 = 33987; + + // Field descriptor #76 I + public static final int GL_TEXTURE4 = 33988; + + // Field descriptor #76 I + public static final int GL_TEXTURE5 = 33989; + + // Field descriptor #76 I + public static final int GL_TEXTURE6 = 33990; + + // Field descriptor #76 I + public static final int GL_TEXTURE7 = 33991; + + // Field descriptor #76 I + public static final int GL_TEXTURE8 = 33992; + + // Field descriptor #76 I + public static final int GL_TEXTURE9 = 33993; + + // Field descriptor #76 I + public static final int GL_TEXTURE10 = 33994; + + // Field descriptor #76 I + public static final int GL_TEXTURE11 = 33995; + + // Field descriptor #76 I + public static final int GL_TEXTURE12 = 33996; + + // Field descriptor #76 I + public static final int GL_TEXTURE13 = 33997; + + // Field descriptor #76 I + public static final int GL_TEXTURE14 = 33998; + + // Field descriptor #76 I + public static final int GL_TEXTURE15 = 33999; + + // Field descriptor #76 I + public static final int GL_TEXTURE16 = 34000; + + // Field descriptor #76 I + public static final int GL_TEXTURE17 = 34001; + + // Field descriptor #76 I + public static final int GL_TEXTURE18 = 34002; + + // Field descriptor #76 I + public static final int GL_TEXTURE19 = 34003; + + // Field descriptor #76 I + public static final int GL_TEXTURE20 = 34004; + + // Field descriptor #76 I + public static final int GL_TEXTURE21 = 34005; + + // Field descriptor #76 I + public static final int GL_TEXTURE22 = 34006; + + // Field descriptor #76 I + public static final int GL_TEXTURE23 = 34007; + + // Field descriptor #76 I + public static final int GL_TEXTURE24 = 34008; + + // Field descriptor #76 I + public static final int GL_TEXTURE25 = 34009; + + // Field descriptor #76 I + public static final int GL_TEXTURE26 = 34010; + + // Field descriptor #76 I + public static final int GL_TEXTURE27 = 34011; + + // Field descriptor #76 I + public static final int GL_TEXTURE28 = 34012; + + // Field descriptor #76 I + public static final int GL_TEXTURE29 = 34013; + + // Field descriptor #76 I + public static final int GL_TEXTURE30 = 34014; + + // Field descriptor #76 I + public static final int GL_TEXTURE31 = 34015; + + // Field descriptor #76 I + public static final int GL_ACTIVE_TEXTURE = 34016; + + // Field descriptor #76 I + public static final int GL_CLIENT_ACTIVE_TEXTURE = 34017; + + // Field descriptor #76 I + public static final int GL_MAX_TEXTURE_UNITS = 34018; + + // Field descriptor #76 I + public static final int GL_NORMAL_MAP = 34065; + + // Field descriptor #76 I + public static final int GL_REFLECTION_MAP = 34066; + + // Field descriptor #76 I + public static final int GL_TEXTURE_CUBE_MAP = 34067; + + // Field descriptor #76 I + public static final int GL_TEXTURE_BINDING_CUBE_MAP = 34068; + + // Field descriptor #76 I + public static final int GL_TEXTURE_CUBE_MAP_POSITIVE_X = 34069; + + // Field descriptor #76 I + public static final int GL_TEXTURE_CUBE_MAP_NEGATIVE_X = 34070; + + // Field descriptor #76 I + public static final int GL_TEXTURE_CUBE_MAP_POSITIVE_Y = 34071; + + // Field descriptor #76 I + public static final int GL_TEXTURE_CUBE_MAP_NEGATIVE_Y = 34072; + + // Field descriptor #76 I + public static final int GL_TEXTURE_CUBE_MAP_POSITIVE_Z = 34073; + + // Field descriptor #76 I + public static final int GL_TEXTURE_CUBE_MAP_NEGATIVE_Z = 34074; + + // Field descriptor #76 I + public static final int GL_PROXY_TEXTURE_CUBE_MAP = 34075; + + // Field descriptor #76 I + public static final int GL_MAX_CUBE_MAP_TEXTURE_SIZE = 34076; + + // Field descriptor #76 I + public static final int GL_COMPRESSED_ALPHA = 34025; + + // Field descriptor #76 I + public static final int GL_COMPRESSED_LUMINANCE = 34026; + + // Field descriptor #76 I + public static final int GL_COMPRESSED_LUMINANCE_ALPHA = 34027; + + // Field descriptor #76 I + public static final int GL_COMPRESSED_INTENSITY = 34028; + + // Field descriptor #76 I + public static final int GL_COMPRESSED_RGB = 34029; + + // Field descriptor #76 I + public static final int GL_COMPRESSED_RGBA = 34030; + + // Field descriptor #76 I + public static final int GL_TEXTURE_COMPRESSION_HINT = 34031; + + // Field descriptor #76 I + public static final int GL_TEXTURE_COMPRESSED_IMAGE_SIZE = 34464; + + // Field descriptor #76 I + public static final int GL_TEXTURE_COMPRESSED = 34465; + + // Field descriptor #76 I + public static final int GL_NUM_COMPRESSED_TEXTURE_FORMATS = 34466; + + // Field descriptor #76 I + public static final int GL_COMPRESSED_TEXTURE_FORMATS = 34467; + + // Field descriptor #76 I + public static final int GL_MULTISAMPLE = 32925; + + // Field descriptor #76 I + public static final int GL_SAMPLE_ALPHA_TO_COVERAGE = 32926; + + // Field descriptor #76 I + public static final int GL_SAMPLE_ALPHA_TO_ONE = 32927; + + // Field descriptor #76 I + public static final int GL_SAMPLE_COVERAGE = 32928; + + // Field descriptor #76 I + public static final int GL_SAMPLE_BUFFERS = 32936; + + // Field descriptor #76 I + public static final int GL_SAMPLES = 32937; + + // Field descriptor #76 I + public static final int GL_SAMPLE_COVERAGE_VALUE = 32938; + + // Field descriptor #76 I + public static final int GL_SAMPLE_COVERAGE_INVERT = 32939; + + // Field descriptor #76 I + public static final int GL_MULTISAMPLE_BIT = 536870912; + + // Field descriptor #76 I + public static final int GL_TRANSPOSE_MODELVIEW_MATRIX = 34019; + + // Field descriptor #76 I + public static final int GL_TRANSPOSE_PROJECTION_MATRIX = 34020; + + // Field descriptor #76 I + public static final int GL_TRANSPOSE_TEXTURE_MATRIX = 34021; + + // Field descriptor #76 I + public static final int GL_TRANSPOSE_COLOR_MATRIX = 34022; + + // Field descriptor #76 I + public static final int GL_COMBINE = 34160; + + // Field descriptor #76 I + public static final int GL_COMBINE_RGB = 34161; + + // Field descriptor #76 I + public static final int GL_COMBINE_ALPHA = 34162; + + // Field descriptor #76 I + public static final int GL_SOURCE0_RGB = 34176; + + // Field descriptor #76 I + public static final int GL_SOURCE1_RGB = 34177; + + // Field descriptor #76 I + public static final int GL_SOURCE2_RGB = 34178; + + // Field descriptor #76 I + public static final int GL_SOURCE0_ALPHA = 34184; + + // Field descriptor #76 I + public static final int GL_SOURCE1_ALPHA = 34185; + + // Field descriptor #76 I + public static final int GL_SOURCE2_ALPHA = 34186; + + // Field descriptor #76 I + public static final int GL_OPERAND0_RGB = 34192; + + // Field descriptor #76 I + public static final int GL_OPERAND1_RGB = 34193; + + // Field descriptor #76 I + public static final int GL_OPERAND2_RGB = 34194; + + // Field descriptor #76 I + public static final int GL_OPERAND0_ALPHA = 34200; + + // Field descriptor #76 I + public static final int GL_OPERAND1_ALPHA = 34201; + + // Field descriptor #76 I + public static final int GL_OPERAND2_ALPHA = 34202; + + // Field descriptor #76 I + public static final int GL_RGB_SCALE = 34163; + + // Field descriptor #76 I + public static final int GL_ADD_SIGNED = 34164; + + // Field descriptor #76 I + public static final int GL_INTERPOLATE = 34165; + + // Field descriptor #76 I + public static final int GL_SUBTRACT = 34023; + + // Field descriptor #76 I + public static final int GL_CONSTANT = 34166; + + // Field descriptor #76 I + public static final int GL_PRIMARY_COLOR = 34167; + + // Field descriptor #76 I + public static final int GL_PREVIOUS = 34168; + + // Field descriptor #76 I + public static final int GL_DOT3_RGB = 34478; + + // Field descriptor #76 I + public static final int GL_DOT3_RGBA = 34479; + + // Field descriptor #76 I + public static final int GL_CLAMP_TO_BORDER = 33069; + + // Field descriptor #71 I + public static final int GL_ARRAY_BUFFER = 34962; + + // Field descriptor #71 I + public static final int GL_ELEMENT_ARRAY_BUFFER = 34963; + + // Field descriptor #71 I + public static final int GL_ARRAY_BUFFER_BINDING = 34964; + + // Field descriptor #71 I + public static final int GL_ELEMENT_ARRAY_BUFFER_BINDING = 34965; + + // Field descriptor #71 I + public static final int GL_VERTEX_ARRAY_BUFFER_BINDING = 34966; + + // Field descriptor #71 I + public static final int GL_NORMAL_ARRAY_BUFFER_BINDING = 34967; + + // Field descriptor #71 I + public static final int GL_COLOR_ARRAY_BUFFER_BINDING = 34968; + + // Field descriptor #71 I + public static final int GL_INDEX_ARRAY_BUFFER_BINDING = 34969; + + // Field descriptor #71 I + public static final int GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING = 34970; + + // Field descriptor #71 I + public static final int GL_EDGE_FLAG_ARRAY_BUFFER_BINDING = 34971; + + // Field descriptor #71 I + public static final int GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING = 34972; + + // Field descriptor #71 I + public static final int GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING = 34973; + + // Field descriptor #71 I + public static final int GL_WEIGHT_ARRAY_BUFFER_BINDING = 34974; + + // Field descriptor #71 I + public static final int GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING = 34975; + + // Field descriptor #71 I + public static final int GL_STREAM_DRAW = 35040; + + // Field descriptor #71 I + public static final int GL_STREAM_READ = 35041; + + // Field descriptor #71 I + public static final int GL_STREAM_COPY = 35042; + + // Field descriptor #71 I + public static final int GL_STATIC_DRAW = 35044; + + // Field descriptor #71 I + public static final int GL_STATIC_READ = 35045; + + // Field descriptor #71 I + public static final int GL_STATIC_COPY = 35046; + + // Field descriptor #71 I + public static final int GL_DYNAMIC_DRAW = 35048; + + // Field descriptor #71 I + public static final int GL_DYNAMIC_READ = 35049; + + // Field descriptor #71 I + public static final int GL_DYNAMIC_COPY = 35050; + + // Field descriptor #71 I + public static final int GL_READ_ONLY = 35000; + + // Field descriptor #71 I + public static final int GL_WRITE_ONLY = 35001; + + // Field descriptor #71 I + public static final int GL_READ_WRITE = 35002; + + // Field descriptor #71 I + public static final int GL_BUFFER_SIZE = 34660; + + // Field descriptor #71 I + public static final int GL_BUFFER_USAGE = 34661; + + // Field descriptor #71 I + public static final int GL_BUFFER_ACCESS = 35003; + + // Field descriptor #71 I + public static final int GL_BUFFER_MAPPED = 35004; + + // Field descriptor #71 I + public static final int GL_BUFFER_MAP_POINTER = 35005; + + // Field descriptor #71 I + public static final int GL_FOG_COORD_SRC = 33872; + + // Field descriptor #71 I + public static final int GL_FOG_COORD = 33873; + + // Field descriptor #71 I + public static final int GL_CURRENT_FOG_COORD = 33875; + + // Field descriptor #71 I + public static final int GL_FOG_COORD_ARRAY_TYPE = 33876; + + // Field descriptor #71 I + public static final int GL_FOG_COORD_ARRAY_STRIDE = 33877; + + // Field descriptor #71 I + public static final int GL_FOG_COORD_ARRAY_POINTER = 33878; + + // Field descriptor #71 I + public static final int GL_FOG_COORD_ARRAY = 33879; + + // Field descriptor #71 I + public static final int GL_FOG_COORD_ARRAY_BUFFER_BINDING = 34973; + + // Field descriptor #71 I + public static final int GL_SRC0_RGB = 34176; + + // Field descriptor #71 I + public static final int GL_SRC1_RGB = 34177; + + // Field descriptor #71 I + public static final int GL_SRC2_RGB = 34178; + + // Field descriptor #71 I + public static final int GL_SRC0_ALPHA = 34184; + + // Field descriptor #71 I + public static final int GL_SRC1_ALPHA = 34185; + + // Field descriptor #71 I + public static final int GL_SRC2_ALPHA = 34186; + + // Field descriptor #71 I + public static final int GL_SAMPLES_PASSED = 35092; + + // Field descriptor #71 I + public static final int GL_QUERY_COUNTER_BITS = 34916; + + // Field descriptor #71 I + public static final int GL_CURRENT_QUERY = 34917; + + // Field descriptor #71 I + public static final int GL_QUERY_RESULT = 34918; + + // Field descriptor #71 I + public static final int GL_QUERY_RESULT_AVAILABLE = 34919; + + // Field descriptor #194 I + public static final int GL_SHADING_LANGUAGE_VERSION = 35724; + + // Field descriptor #194 I + public static final int GL_CURRENT_PROGRAM = 35725; + + // Field descriptor #194 I + public static final int GL_SHADER_TYPE = 35663; + + // Field descriptor #194 I + public static final int GL_DELETE_STATUS = 35712; + + // Field descriptor #194 I + public static final int GL_COMPILE_STATUS = 35713; + + // Field descriptor #194 I + public static final int GL_LINK_STATUS = 35714; + + // Field descriptor #194 I + public static final int GL_VALIDATE_STATUS = 35715; + + // Field descriptor #194 I + public static final int GL_INFO_LOG_LENGTH = 35716; + + // Field descriptor #194 I + public static final int GL_ATTACHED_SHADERS = 35717; + + // Field descriptor #194 I + public static final int GL_ACTIVE_UNIFORMS = 35718; + + // Field descriptor #194 I + public static final int GL_ACTIVE_UNIFORM_MAX_LENGTH = 35719; + + // Field descriptor #194 I + public static final int GL_ACTIVE_ATTRIBUTES = 35721; + + // Field descriptor #194 I + public static final int GL_ACTIVE_ATTRIBUTE_MAX_LENGTH = 35722; + + // Field descriptor #194 I + public static final int GL_SHADER_SOURCE_LENGTH = 35720; + + // Field descriptor #194 I + public static final int GL_SHADER_OBJECT = 35656; + + // Field descriptor #194 I + public static final int GL_FLOAT_VEC2 = 35664; + + // Field descriptor #194 I + public static final int GL_FLOAT_VEC3 = 35665; + + // Field descriptor #194 I + public static final int GL_FLOAT_VEC4 = 35666; + + // Field descriptor #194 I + public static final int GL_INT_VEC2 = 35667; + + // Field descriptor #194 I + public static final int GL_INT_VEC3 = 35668; + + // Field descriptor #194 I + public static final int GL_INT_VEC4 = 35669; + + // Field descriptor #194 I + public static final int GL_BOOL = 35670; + + // Field descriptor #194 I + public static final int GL_BOOL_VEC2 = 35671; + + // Field descriptor #194 I + public static final int GL_BOOL_VEC3 = 35672; + + // Field descriptor #194 I + public static final int GL_BOOL_VEC4 = 35673; + + // Field descriptor #194 I + public static final int GL_FLOAT_MAT2 = 35674; + + // Field descriptor #194 I + public static final int GL_FLOAT_MAT3 = 35675; + + // Field descriptor #194 I + public static final int GL_FLOAT_MAT4 = 35676; + + // Field descriptor #194 I + public static final int GL_SAMPLER_1D = 35677; + + // Field descriptor #194 I + public static final int GL_SAMPLER_2D = 35678; + + // Field descriptor #194 I + public static final int GL_SAMPLER_3D = 35679; + + // Field descriptor #194 I + public static final int GL_SAMPLER_CUBE = 35680; + + // Field descriptor #194 I + public static final int GL_SAMPLER_1D_SHADOW = 35681; + + // Field descriptor #194 I + public static final int GL_SAMPLER_2D_SHADOW = 35682; + + // Field descriptor #194 I + public static final int GL_VERTEX_SHADER = 35633; + + // Field descriptor #194 I + public static final int GL_MAX_VERTEX_UNIFORM_COMPONENTS = 35658; + + // Field descriptor #194 I + public static final int GL_MAX_VARYING_FLOATS = 35659; + + // Field descriptor #194 I + public static final int GL_MAX_VERTEX_ATTRIBS = 34921; + + // Field descriptor #194 I + public static final int GL_MAX_TEXTURE_IMAGE_UNITS = 34930; + + // Field descriptor #194 I + public static final int GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS = 35660; + + // Field descriptor #194 I + public static final int GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS = 35661; + + // Field descriptor #194 I + public static final int GL_MAX_TEXTURE_COORDS = 34929; + + // Field descriptor #194 I + public static final int GL_VERTEX_PROGRAM_POINT_SIZE = 34370; + + // Field descriptor #194 I + public static final int GL_VERTEX_PROGRAM_TWO_SIDE = 34371; + + // Field descriptor #194 I + public static final int GL_VERTEX_ATTRIB_ARRAY_ENABLED = 34338; + + // Field descriptor #194 I + public static final int GL_VERTEX_ATTRIB_ARRAY_SIZE = 34339; + + // Field descriptor #194 I + public static final int GL_VERTEX_ATTRIB_ARRAY_STRIDE = 34340; + + // Field descriptor #194 I + public static final int GL_VERTEX_ATTRIB_ARRAY_TYPE = 34341; + + // Field descriptor #194 I + public static final int GL_VERTEX_ATTRIB_ARRAY_NORMALIZED = 34922; + + // Field descriptor #194 I + public static final int GL_CURRENT_VERTEX_ATTRIB = 34342; + + // Field descriptor #194 I + public static final int GL_VERTEX_ATTRIB_ARRAY_POINTER = 34373; + + // Field descriptor #194 I + public static final int GL_FRAGMENT_SHADER = 35632; + + // Field descriptor #194 I + public static final int GL_MAX_FRAGMENT_UNIFORM_COMPONENTS = 35657; + + // Field descriptor #194 I + public static final int GL_FRAGMENT_SHADER_DERIVATIVE_HINT = 35723; + + // Field descriptor #194 I + public static final int GL_MAX_DRAW_BUFFERS = 34852; + + // Field descriptor #194 I + public static final int GL_DRAW_BUFFER0 = 34853; + + // Field descriptor #194 I + public static final int GL_DRAW_BUFFER1 = 34854; + + // Field descriptor #194 I + public static final int GL_DRAW_BUFFER2 = 34855; + + // Field descriptor #194 I + public static final int GL_DRAW_BUFFER3 = 34856; + + // Field descriptor #194 I + public static final int GL_DRAW_BUFFER4 = 34857; + + // Field descriptor #194 I + public static final int GL_DRAW_BUFFER5 = 34858; + + // Field descriptor #194 I + public static final int GL_DRAW_BUFFER6 = 34859; + + // Field descriptor #194 I + public static final int GL_DRAW_BUFFER7 = 34860; + + // Field descriptor #194 I + public static final int GL_DRAW_BUFFER8 = 34861; + + // Field descriptor #194 I + public static final int GL_DRAW_BUFFER9 = 34862; + + // Field descriptor #194 I + public static final int GL_DRAW_BUFFER10 = 34863; + + // Field descriptor #194 I + public static final int GL_DRAW_BUFFER11 = 34864; + + // Field descriptor #194 I + public static final int GL_DRAW_BUFFER12 = 34865; + + // Field descriptor #194 I + public static final int GL_DRAW_BUFFER13 = 34866; + + // Field descriptor #194 I + public static final int GL_DRAW_BUFFER14 = 34867; + + // Field descriptor #194 I + public static final int GL_DRAW_BUFFER15 = 34868; + + // Field descriptor #194 I + public static final int GL_POINT_SPRITE = 34913; + + // Field descriptor #194 I + public static final int GL_COORD_REPLACE = 34914; + + // Field descriptor #194 I + public static final int GL_POINT_SPRITE_COORD_ORIGIN = 36000; + + // Field descriptor #194 I + public static final int GL_LOWER_LEFT = 36001; + + // Field descriptor #194 I + public static final int GL_UPPER_LEFT = 36002; + + // Field descriptor #194 I + public static final int GL_STENCIL_BACK_FUNC = 34816; + + // Field descriptor #194 I + public static final int GL_STENCIL_BACK_FAIL = 34817; + + // Field descriptor #194 I + public static final int GL_STENCIL_BACK_PASS_DEPTH_FAIL = 34818; + + // Field descriptor #194 I + public static final int GL_STENCIL_BACK_PASS_DEPTH_PASS = 34819; + + // Field descriptor #194 I + public static final int GL_STENCIL_BACK_REF = 36003; + + // Field descriptor #194 I + public static final int GL_STENCIL_BACK_VALUE_MASK = 36004; + + // Field descriptor #194 I + public static final int GL_STENCIL_BACK_WRITEMASK = 36005; + + // Field descriptor #194 I + public static final int GL_BLEND_EQUATION_RGB = 32777; + + // Field descriptor #194 I + public static final int GL_BLEND_EQUATION_ALPHA = 34877; + + public static final int GL_CONTEXT_LOST_WEBGL = -144; + + public static final int GL_TEXTURE_MAX_ANISOTROPY = -150; +} diff --git a/src/main/java/net/PeytonPlayz585/opengl/Vector.java b/src/main/java/net/PeytonPlayz585/opengl/Vector.java new file mode 100644 index 0000000..d7bb1fd --- /dev/null +++ b/src/main/java/net/PeytonPlayz585/opengl/Vector.java @@ -0,0 +1,110 @@ +/* + * Copyright (c) 2002-2008 LWJGL Project + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of 'LWJGL' nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package net.PeytonPlayz585.opengl; + +import java.io.Serializable; +import java.nio.FloatBuffer; + +/** + * + * Base class for vectors. + * + * @author cix_foo + * @version $Revision$ $Id$ + */ +public abstract class Vector implements Serializable, ReadableVector { + + /** + * Constructor for Vector. + */ + protected Vector() { + super(); + } + + /** + * @return the length of the vector + */ + public final float length() { + return (float) Math.sqrt(lengthSquared()); + } + + /** + * @return the length squared of the vector + */ + public abstract float lengthSquared(); + + /** + * Load this vector from a FloatBuffer + * + * @param buf The buffer to load it from, at the current position + * @return this + */ + public abstract Vector load(FloatBuffer buf); + + /** + * Negate a vector + * + * @return this + */ + public abstract Vector negate(); + + /** + * Normalise this vector + * + * @return this + */ + public final Vector normalise() { + float len = length(); + if (len != 0.0f) { + float l = 1.0f / len; + return scale(l); + } else + throw new IllegalStateException("Zero length vector"); + } + + /** + * Store this vector in a FloatBuffer + * + * @param buf The buffer to store it in, at the current position + * @return this + */ + public abstract Vector store(FloatBuffer buf); + + /** + * Scale this vector + * + * @param scale The scale factor + * @return this + */ + public abstract Vector scale(float scale); + +} \ No newline at end of file diff --git a/src/main/java/net/PeytonPlayz585/opengl/Vector2f.java b/src/main/java/net/PeytonPlayz585/opengl/Vector2f.java new file mode 100644 index 0000000..af67998 --- /dev/null +++ b/src/main/java/net/PeytonPlayz585/opengl/Vector2f.java @@ -0,0 +1,319 @@ +/* + * Copyright (c) 2002-2008 LWJGL Project + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of 'LWJGL' nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package net.PeytonPlayz585.opengl; + +import java.io.Serializable; +import java.nio.FloatBuffer; + +/** + * + * Holds a 2-tuple vector. + * + * @author cix_foo + * @version $Revision$ $Id$ + */ + +public class Vector2f extends Vector implements Serializable, ReadableVector2f, WritableVector2f { + + private static final long serialVersionUID = 1L; + + public float x, y; + + /** + * Constructor for Vector2f. + */ + public Vector2f() { + super(); + } + + /** + * Constructor. + */ + public Vector2f(ReadableVector2f src) { + set(src); + } + + /** + * Constructor. + */ + public Vector2f(float x, float y) { + set(x, y); + } + + /* + * (non-Javadoc) + * + * @see org.lwjgl.util.vector.WritableVector2f#set(float, float) + */ + public void set(float x, float y) { + this.x = x; + this.y = y; + } + + /** + * Load from another Vector2f + * + * @param src The source vector + * @return this + */ + public Vector2f set(ReadableVector2f src) { + x = src.getX(); + y = src.getY(); + return this; + } + + /** + * @return the length squared of the vector + */ + public float lengthSquared() { + return x * x + y * y; + } + + /** + * Translate a vector + * + * @param x The translation in x + * @param y the translation in y + * @return this + */ + public Vector2f translate(float x, float y) { + this.x += x; + this.y += y; + return this; + } + + /** + * Negate a vector + * + * @return this + */ + public Vector negate() { + x = -x; + y = -y; + return this; + } + + /** + * Negate a vector and place the result in a destination vector. + * + * @param dest The destination vector or null if a new vector is to be created + * @return the negated vector + */ + public Vector2f negate(Vector2f dest) { + if (dest == null) + dest = new Vector2f(); + dest.x = -x; + dest.y = -y; + return dest; + } + + /** + * Normalise this vector and place the result in another vector. + * + * @param dest The destination vector, or null if a new vector is to be created + * @return the normalised vector + */ + public Vector2f normalise(Vector2f dest) { + float l = length(); + + if (dest == null) + dest = new Vector2f(x / l, y / l); + else + dest.set(x / l, y / l); + + return dest; + } + + /** + * The dot product of two vectors is calculated as v1.x * v2.x + v1.y * v2.y + + * v1.z * v2.z + * + * @param left The LHS vector + * @param right The RHS vector + * @return left dot right + */ + public static float dot(Vector2f left, Vector2f right) { + return left.x * right.x + left.y * right.y; + } + + /** + * Calculate the angle between two vectors, in radians + * + * @param a A vector + * @param b The other vector + * @return the angle between the two vectors, in radians + */ + public static float angle(Vector2f a, Vector2f b) { + float dls = dot(a, b) / (a.length() * b.length()); + if (dls < -1f) + dls = -1f; + else if (dls > 1.0f) + dls = 1.0f; + return (float) Math.acos(dls); + } + + /** + * Add a vector to another vector and place the result in a destination vector. + * + * @param left The LHS vector + * @param right The RHS vector + * @param dest The destination vector, or null if a new vector is to be created + * @return the sum of left and right in dest + */ + public static Vector2f add(Vector2f left, Vector2f right, Vector2f dest) { + if (dest == null) + return new Vector2f(left.x + right.x, left.y + right.y); + else { + dest.set(left.x + right.x, left.y + right.y); + return dest; + } + } + + /** + * Subtract a vector from another vector and place the result in a destination + * vector. + * + * @param left The LHS vector + * @param right The RHS vector + * @param dest The destination vector, or null if a new vector is to be created + * @return left minus right in dest + */ + public static Vector2f sub(Vector2f left, Vector2f right, Vector2f dest) { + if (dest == null) + return new Vector2f(left.x - right.x, left.y - right.y); + else { + dest.set(left.x - right.x, left.y - right.y); + return dest; + } + } + + /** + * Store this vector in a FloatBuffer + * + * @param buf The buffer to store it in, at the current position + * @return this + */ + public Vector store(FloatBuffer buf) { + buf.put(x); + buf.put(y); + return this; + } + + /** + * Load this vector from a FloatBuffer + * + * @param buf The buffer to load it from, at the current position + * @return this + */ + public Vector load(FloatBuffer buf) { + x = buf.get(); + y = buf.get(); + return this; + } + + /* + * (non-Javadoc) + * + * @see org.lwjgl.vector.Vector#scale(float) + */ + public Vector scale(float scale) { + + x *= scale; + y *= scale; + + return this; + } + + /* + * (non-Javadoc) + * + * @see java.lang.Object#toString() + */ + public String toString() { + StringBuilder sb = new StringBuilder(64); + + sb.append("Vector2f["); + sb.append(x); + sb.append(", "); + sb.append(y); + sb.append(']'); + return sb.toString(); + } + + /** + * @return x + */ + public final float getX() { + return x; + } + + /** + * @return y + */ + public final float getY() { + return y; + } + + /** + * Set X + * + * @param x + */ + public final void setX(float x) { + this.x = x; + } + + /** + * Set Y + * + * @param y + */ + public final void setY(float y) { + this.y = y; + } + + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + Vector2f other = (Vector2f) obj; + + if (x == other.x && y == other.y) + return true; + + return false; + } + +} \ No newline at end of file diff --git a/src/main/java/net/PeytonPlayz585/opengl/Vector3f.java b/src/main/java/net/PeytonPlayz585/opengl/Vector3f.java new file mode 100644 index 0000000..adbbabf --- /dev/null +++ b/src/main/java/net/PeytonPlayz585/opengl/Vector3f.java @@ -0,0 +1,376 @@ +/* + * Copyright (c) 2002-2008 LWJGL Project + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of 'LWJGL' nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package net.PeytonPlayz585.opengl; + +import java.io.Serializable; +import java.nio.FloatBuffer; + +/** + * + * Holds a 3-tuple vector. + * + * @author cix_foo + * @version $Revision$ $Id$ + */ + +public class Vector3f extends Vector implements Serializable, ReadableVector3f, WritableVector3f { + + private static final long serialVersionUID = 1L; + + public float x, y, z; + + /** + * Constructor for Vector3f. + */ + public Vector3f() { + super(); + } + + /** + * Constructor + */ + public Vector3f(ReadableVector3f src) { + set(src); + } + + /** + * Constructor + */ + public Vector3f(float x, float y, float z) { + set(x, y, z); + } + + /* + * (non-Javadoc) + * + * @see org.lwjgl.util.vector.WritableVector2f#set(float, float) + */ + public void set(float x, float y) { + this.x = x; + this.y = y; + } + + /* + * (non-Javadoc) + * + * @see org.lwjgl.util.vector.WritableVector3f#set(float, float, float) + */ + public void set(float x, float y, float z) { + this.x = x; + this.y = y; + this.z = z; + } + + /** + * Load from another Vector3f + * + * @param src The source vector + * @return this + */ + public Vector3f set(ReadableVector3f src) { + x = src.getX(); + y = src.getY(); + z = src.getZ(); + return this; + } + + /** + * @return the length squared of the vector + */ + public float lengthSquared() { + return x * x + y * y + z * z; + } + + /** + * Translate a vector + * + * @param x The translation in x + * @param y the translation in y + * @return this + */ + public Vector3f translate(float x, float y, float z) { + this.x += x; + this.y += y; + this.z += z; + return this; + } + + /** + * Add a vector to another vector and place the result in a destination vector. + * + * @param left The LHS vector + * @param right The RHS vector + * @param dest The destination vector, or null if a new vector is to be created + * @return the sum of left and right in dest + */ + public static Vector3f add(Vector3f left, Vector3f right, Vector3f dest) { + if (dest == null) + return new Vector3f(left.x + right.x, left.y + right.y, left.z + right.z); + else { + dest.set(left.x + right.x, left.y + right.y, left.z + right.z); + return dest; + } + } + + /** + * Subtract a vector from another vector and place the result in a destination + * vector. + * + * @param left The LHS vector + * @param right The RHS vector + * @param dest The destination vector, or null if a new vector is to be created + * @return left minus right in dest + */ + public static Vector3f sub(Vector3f left, Vector3f right, Vector3f dest) { + if (dest == null) + return new Vector3f(left.x - right.x, left.y - right.y, left.z - right.z); + else { + dest.set(left.x - right.x, left.y - right.y, left.z - right.z); + return dest; + } + } + + /** + * The cross product of two vectors. + * + * @param left The LHS vector + * @param right The RHS vector + * @param dest The destination result, or null if a new vector is to be created + * @return left cross right + */ + public static Vector3f cross(Vector3f left, Vector3f right, Vector3f dest) { + + if (dest == null) + dest = new Vector3f(); + + dest.set(left.y * right.z - left.z * right.y, right.x * left.z - right.z * left.x, + left.x * right.y - left.y * right.x); + + return dest; + } + + /** + * Negate a vector + * + * @return this + */ + public Vector negate() { + x = -x; + y = -y; + z = -z; + return this; + } + + /** + * Negate a vector and place the result in a destination vector. + * + * @param dest The destination vector or null if a new vector is to be created + * @return the negated vector + */ + public Vector3f negate(Vector3f dest) { + if (dest == null) + dest = new Vector3f(); + dest.x = -x; + dest.y = -y; + dest.z = -z; + return dest; + } + + /** + * Normalise this vector and place the result in another vector. + * + * @param dest The destination vector, or null if a new vector is to be created + * @return the normalised vector + */ + public Vector3f normalise(Vector3f dest) { + float l = length(); + + if (dest == null) + dest = new Vector3f(x / l, y / l, z / l); + else + dest.set(x / l, y / l, z / l); + + return dest; + } + + /** + * The dot product of two vectors is calculated as v1.x * v2.x + v1.y * v2.y + + * v1.z * v2.z + * + * @param left The LHS vector + * @param right The RHS vector + * @return left dot right + */ + public static float dot(Vector3f left, Vector3f right) { + return left.x * right.x + left.y * right.y + left.z * right.z; + } + + /** + * Calculate the angle between two vectors, in radians + * + * @param a A vector + * @param b The other vector + * @return the angle between the two vectors, in radians + */ + public static float angle(Vector3f a, Vector3f b) { + float dls = dot(a, b) / (a.length() * b.length()); + if (dls < -1f) + dls = -1f; + else if (dls > 1.0f) + dls = 1.0f; + return (float) Math.acos(dls); + } + + /* + * (non-Javadoc) + * + * @see org.lwjgl.vector.Vector#load(FloatBuffer) + */ + public Vector load(FloatBuffer buf) { + x = buf.get(); + y = buf.get(); + z = buf.get(); + return this; + } + + /* + * (non-Javadoc) + * + * @see org.lwjgl.vector.Vector#scale(float) + */ + public Vector scale(float scale) { + + x *= scale; + y *= scale; + z *= scale; + + return this; + + } + + /* + * (non-Javadoc) + * + * @see org.lwjgl.vector.Vector#store(FloatBuffer) + */ + public Vector store(FloatBuffer buf) { + + buf.put(x); + buf.put(y); + buf.put(z); + + return this; + } + + /* + * (non-Javadoc) + * + * @see java.lang.Object#toString() + */ + public String toString() { + StringBuilder sb = new StringBuilder(64); + + sb.append("Vector3f["); + sb.append(x); + sb.append(", "); + sb.append(y); + sb.append(", "); + sb.append(z); + sb.append(']'); + return sb.toString(); + } + + /** + * @return x + */ + public final float getX() { + return x; + } + + /** + * @return y + */ + public final float getY() { + return y; + } + + /** + * Set X + * + * @param x + */ + public final void setX(float x) { + this.x = x; + } + + /** + * Set Y + * + * @param y + */ + public final void setY(float y) { + this.y = y; + } + + /** + * Set Z + * + * @param z + */ + public void setZ(float z) { + this.z = z; + } + + /* + * (Overrides) + * + * @see org.lwjgl.vector.ReadableVector3f#getZ() + */ + public float getZ() { + return z; + } + + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + Vector3f other = (Vector3f) obj; + + if (x == other.x && y == other.y && z == other.z) + return true; + + return false; + } +} \ No newline at end of file diff --git a/src/main/java/net/PeytonPlayz585/opengl/Vector4f.java b/src/main/java/net/PeytonPlayz585/opengl/Vector4f.java new file mode 100644 index 0000000..c292173 --- /dev/null +++ b/src/main/java/net/PeytonPlayz585/opengl/Vector4f.java @@ -0,0 +1,377 @@ +/* + * Copyright (c) 2002-2008 LWJGL Project + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of 'LWJGL' nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package net.PeytonPlayz585.opengl; + +import java.io.Serializable; +import java.nio.FloatBuffer; + +/** + * + * Holds a 4-tuple vector. + * + * @author cix_foo + * @version $Revision$ $Id$ + */ + +public class Vector4f extends Vector implements Serializable, ReadableVector4f, WritableVector4f { + + private static final long serialVersionUID = 1L; + + public float x, y, z, w; + + /** + * Constructor for Vector4f. + */ + public Vector4f() { + super(); + } + + /** + * Constructor + */ + public Vector4f(ReadableVector4f src) { + set(src); + } + + /** + * Constructor + */ + public Vector4f(float x, float y, float z, float w) { + set(x, y, z, w); + } + + /* + * (non-Javadoc) + * + * @see org.lwjgl.util.vector.WritableVector2f#set(float, float) + */ + public void set(float x, float y) { + this.x = x; + this.y = y; + } + + /* + * (non-Javadoc) + * + * @see org.lwjgl.util.vector.WritableVector3f#set(float, float, float) + */ + public void set(float x, float y, float z) { + this.x = x; + this.y = y; + this.z = z; + } + + /* + * (non-Javadoc) + * + * @see org.lwjgl.util.vector.WritableVector4f#set(float, float, float, float) + */ + public void set(float x, float y, float z, float w) { + this.x = x; + this.y = y; + this.z = z; + this.w = w; + } + + /** + * Load from another Vector4f + * + * @param src The source vector + * @return this + */ + public Vector4f set(ReadableVector4f src) { + x = src.getX(); + y = src.getY(); + z = src.getZ(); + w = src.getW(); + return this; + } + + /** + * @return the length squared of the vector + */ + public float lengthSquared() { + return x * x + y * y + z * z + w * w; + } + + /** + * Translate a vector + * + * @param x The translation in x + * @param y the translation in y + * @return this + */ + public Vector4f translate(float x, float y, float z, float w) { + this.x += x; + this.y += y; + this.z += z; + this.w += w; + return this; + } + + /** + * Add a vector to another vector and place the result in a destination vector. + * + * @param left The LHS vector + * @param right The RHS vector + * @param dest The destination vector, or null if a new vector is to be created + * @return the sum of left and right in dest + */ + public static Vector4f add(Vector4f left, Vector4f right, Vector4f dest) { + if (dest == null) + return new Vector4f(left.x + right.x, left.y + right.y, left.z + right.z, left.w + right.w); + else { + dest.set(left.x + right.x, left.y + right.y, left.z + right.z, left.w + right.w); + return dest; + } + } + + /** + * Subtract a vector from another vector and place the result in a destination + * vector. + * + * @param left The LHS vector + * @param right The RHS vector + * @param dest The destination vector, or null if a new vector is to be created + * @return left minus right in dest + */ + public static Vector4f sub(Vector4f left, Vector4f right, Vector4f dest) { + if (dest == null) + return new Vector4f(left.x - right.x, left.y - right.y, left.z - right.z, left.w - right.w); + else { + dest.set(left.x - right.x, left.y - right.y, left.z - right.z, left.w - right.w); + return dest; + } + } + + /** + * Negate a vector + * + * @return this + */ + public Vector negate() { + x = -x; + y = -y; + z = -z; + w = -w; + return this; + } + + /** + * Negate a vector and place the result in a destination vector. + * + * @param dest The destination vector or null if a new vector is to be created + * @return the negated vector + */ + public Vector4f negate(Vector4f dest) { + if (dest == null) + dest = new Vector4f(); + dest.x = -x; + dest.y = -y; + dest.z = -z; + dest.w = -w; + return dest; + } + + /** + * Normalise this vector and place the result in another vector. + * + * @param dest The destination vector, or null if a new vector is to be created + * @return the normalised vector + */ + public Vector4f normalise(Vector4f dest) { + float l = length(); + + if (dest == null) + dest = new Vector4f(x / l, y / l, z / l, w / l); + else + dest.set(x / l, y / l, z / l, w / l); + + return dest; + } + + /** + * The dot product of two vectors is calculated as v1.x * v2.x + v1.y * v2.y + + * v1.z * v2.z + v1.w * v2.w + * + * @param left The LHS vector + * @param right The RHS vector + * @return left dot right + */ + public static float dot(Vector4f left, Vector4f right) { + return left.x * right.x + left.y * right.y + left.z * right.z + left.w * right.w; + } + + /** + * Calculate the angle between two vectors, in radians + * + * @param a A vector + * @param b The other vector + * @return the angle between the two vectors, in radians + */ + public static float angle(Vector4f a, Vector4f b) { + float dls = dot(a, b) / (a.length() * b.length()); + if (dls < -1f) + dls = -1f; + else if (dls > 1.0f) + dls = 1.0f; + return (float) Math.acos(dls); + } + + /* + * (non-Javadoc) + * + * @see org.lwjgl.vector.Vector#load(FloatBuffer) + */ + public Vector load(FloatBuffer buf) { + x = buf.get(); + y = buf.get(); + z = buf.get(); + w = buf.get(); + return this; + } + + /* + * (non-Javadoc) + * + * @see org.lwjgl.vector.Vector#scale(float) + */ + public Vector scale(float scale) { + x *= scale; + y *= scale; + z *= scale; + w *= scale; + return this; + } + + /* + * (non-Javadoc) + * + * @see org.lwjgl.vector.Vector#store(FloatBuffer) + */ + public Vector store(FloatBuffer buf) { + + buf.put(x); + buf.put(y); + buf.put(z); + buf.put(w); + + return this; + } + + public String toString() { + return "Vector4f: " + x + " " + y + " " + z + " " + w; + } + + /** + * @return x + */ + public final float getX() { + return x; + } + + /** + * @return y + */ + public final float getY() { + return y; + } + + /** + * Set X + * + * @param x + */ + public final void setX(float x) { + this.x = x; + } + + /** + * Set Y + * + * @param y + */ + public final void setY(float y) { + this.y = y; + } + + /** + * Set Z + * + * @param z + */ + public void setZ(float z) { + this.z = z; + } + + /* + * (Overrides) + * + * @see org.lwjgl.vector.ReadableVector3f#getZ() + */ + public float getZ() { + return z; + } + + /** + * Set W + * + * @param w + */ + public void setW(float w) { + this.w = w; + } + + /* + * (Overrides) + * + * @see org.lwjgl.vector.ReadableVector3f#getZ() + */ + public float getW() { + return w; + } + + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + Vector4f other = (Vector4f) obj; + + if (x == other.x && y == other.y && z == other.z && w == other.w) + return true; + + return false; + } +} \ No newline at end of file diff --git a/src/main/java/net/PeytonPlayz585/opengl/WebGL2RenderingContext.java b/src/main/java/net/PeytonPlayz585/opengl/WebGL2RenderingContext.java new file mode 100644 index 0000000..40f7baa --- /dev/null +++ b/src/main/java/net/PeytonPlayz585/opengl/WebGL2RenderingContext.java @@ -0,0 +1,42 @@ +package net.PeytonPlayz585.opengl; + +import org.teavm.jso.webgl.WebGLRenderingContext; + +public interface WebGL2RenderingContext extends WebGLRenderingContext { + + int TEXTURE_MAX_LEVEL = 0x0000813D; + int TEXTURE_MAX_ANISOTROPY_EXT = 0x000084FE; + int UNSIGNED_INT_24_8 = 0x000084FA; + int ANY_SAMPLES_PASSED = 0x00008D6A; + int QUERY_RESULT = 0x00008866; + int QUERY_RESULT_AVAILABLE = 0x00008867; + int DEPTH24_STENCIL8 = 0x000088F0; + int DEPTH_COMPONENT32F = 0x00008CAC; + int READ_FRAMEBUFFER = 0x00008CA8; + int DRAW_FRAMEBUFFER = 0x00008CA9; + int RGB8 = 0x00008051; + int RGBA8 = 0x00008058; + + WebGLQuery createQuery(); + + void beginQuery(int p1, WebGLQuery obj); + + void endQuery(int p1); + + void deleteQuery(WebGLQuery obj); + + int getQueryParameter(WebGLQuery obj, int p2); + + WebGLVertexArray createVertexArray(); + + void deleteVertexArray(WebGLVertexArray obj); + + void bindVertexArray(WebGLVertexArray obj); + + void renderbufferStorageMultisample(int p1, int p2, int p3, int p4, int p5); + + void blitFramebuffer(int p1, int p2, int p3, int p4, int p5, int p6, int p7, int p8, int p9, int p10); + + void drawBuffers(int[] p1); + +} \ No newline at end of file diff --git a/src/main/java/net/PeytonPlayz585/opengl/WebGLQuery.java b/src/main/java/net/PeytonPlayz585/opengl/WebGLQuery.java new file mode 100644 index 0000000..9b41f7a --- /dev/null +++ b/src/main/java/net/PeytonPlayz585/opengl/WebGLQuery.java @@ -0,0 +1,6 @@ +package net.PeytonPlayz585.opengl; + +import org.teavm.jso.JSObject; + +public interface WebGLQuery extends JSObject { +} \ No newline at end of file diff --git a/src/main/java/net/PeytonPlayz585/opengl/WebGLVertexArray.java b/src/main/java/net/PeytonPlayz585/opengl/WebGLVertexArray.java new file mode 100644 index 0000000..eab5995 --- /dev/null +++ b/src/main/java/net/PeytonPlayz585/opengl/WebGLVertexArray.java @@ -0,0 +1,6 @@ +package net.PeytonPlayz585.opengl; + +import org.teavm.jso.JSObject; + +public interface WebGLVertexArray extends JSObject { +} \ No newline at end of file diff --git a/src/main/java/net/PeytonPlayz585/opengl/WritableVector2f.java b/src/main/java/net/PeytonPlayz585/opengl/WritableVector2f.java new file mode 100644 index 0000000..1ffb150 --- /dev/null +++ b/src/main/java/net/PeytonPlayz585/opengl/WritableVector2f.java @@ -0,0 +1,64 @@ +/* + * Copyright (c) 2002-2008 LWJGL Project + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of 'LWJGL' nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package net.PeytonPlayz585.opengl; + +/** + * Writable interface to Vector2fs + * + * @author $author$ + * @version $revision$ $Id$ + */ +public interface WritableVector2f { + + /** + * Set the X value + * + * @param x + */ + void setX(float x); + + /** + * Set the Y value + * + * @param y + */ + void setY(float y); + + /** + * Set the X,Y values + * + * @param x + * @param y + */ + void set(float x, float y); + +} \ No newline at end of file diff --git a/src/main/java/net/PeytonPlayz585/opengl/WritableVector3f.java b/src/main/java/net/PeytonPlayz585/opengl/WritableVector3f.java new file mode 100644 index 0000000..5b6afd9 --- /dev/null +++ b/src/main/java/net/PeytonPlayz585/opengl/WritableVector3f.java @@ -0,0 +1,58 @@ +/* + * Copyright (c) 2002-2008 LWJGL Project + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of 'LWJGL' nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package net.PeytonPlayz585.opengl; + +/** + * Writable interface to Vector3fs + * + * @author $author$ + * @version $revision$ $Id$ + */ +public interface WritableVector3f extends WritableVector2f { + + /** + * Set the Z value + * + * @param z + */ + void setZ(float z); + + /** + * Set the X,Y,Z values + * + * @param x + * @param y + * @param z + */ + void set(float x, float y, float z); + +} \ No newline at end of file diff --git a/src/main/java/net/PeytonPlayz585/opengl/WritableVector4f.java b/src/main/java/net/PeytonPlayz585/opengl/WritableVector4f.java new file mode 100644 index 0000000..ec77b0a --- /dev/null +++ b/src/main/java/net/PeytonPlayz585/opengl/WritableVector4f.java @@ -0,0 +1,59 @@ +/* + * Copyright (c) 2002-2008 LWJGL Project + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of 'LWJGL' nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package net.PeytonPlayz585.opengl; + +/** + * Writable interface to Vector4fs + * + * @author $author$ + * @version $revision$ $Id$ + */ +public interface WritableVector4f extends WritableVector3f { + + /** + * Set the W value + * + * @param w + */ + void setW(float w); + + /** + * Set the X,Y,Z,W values + * + * @param x + * @param y + * @param z + * @param w + */ + void set(float x, float y, float z, float w); + +} \ No newline at end of file diff --git a/source/net/minecraft/client/MinecraftApplet.java b/src/main/java/net/minecraft/client/MinecraftApplet.java similarity index 100% rename from source/net/minecraft/client/MinecraftApplet.java rename to src/main/java/net/minecraft/client/MinecraftApplet.java diff --git a/source/net/minecraft/isom/IsomPreviewApplet.java b/src/main/java/net/minecraft/isom/IsomPreviewApplet.java similarity index 100% rename from source/net/minecraft/isom/IsomPreviewApplet.java rename to src/main/java/net/minecraft/isom/IsomPreviewApplet.java diff --git a/source/net/minecraft/src/AxisAlignedBB.java b/src/main/java/net/minecraft/src/AxisAlignedBB.java similarity index 100% rename from source/net/minecraft/src/AxisAlignedBB.java rename to src/main/java/net/minecraft/src/AxisAlignedBB.java diff --git a/source/net/minecraft/src/Block.java b/src/main/java/net/minecraft/src/Block.java similarity index 100% rename from source/net/minecraft/src/Block.java rename to src/main/java/net/minecraft/src/Block.java diff --git a/source/net/minecraft/src/BlockBookshelf.java b/src/main/java/net/minecraft/src/BlockBookshelf.java similarity index 100% rename from source/net/minecraft/src/BlockBookshelf.java rename to src/main/java/net/minecraft/src/BlockBookshelf.java diff --git a/source/net/minecraft/src/BlockBreakable.java b/src/main/java/net/minecraft/src/BlockBreakable.java similarity index 100% rename from source/net/minecraft/src/BlockBreakable.java rename to src/main/java/net/minecraft/src/BlockBreakable.java diff --git a/source/net/minecraft/src/BlockChest.java b/src/main/java/net/minecraft/src/BlockChest.java similarity index 100% rename from source/net/minecraft/src/BlockChest.java rename to src/main/java/net/minecraft/src/BlockChest.java diff --git a/source/net/minecraft/src/BlockContainer.java b/src/main/java/net/minecraft/src/BlockContainer.java similarity index 100% rename from source/net/minecraft/src/BlockContainer.java rename to src/main/java/net/minecraft/src/BlockContainer.java diff --git a/source/net/minecraft/src/BlockCrops.java b/src/main/java/net/minecraft/src/BlockCrops.java similarity index 100% rename from source/net/minecraft/src/BlockCrops.java rename to src/main/java/net/minecraft/src/BlockCrops.java diff --git a/source/net/minecraft/src/BlockDirt.java b/src/main/java/net/minecraft/src/BlockDirt.java similarity index 100% rename from source/net/minecraft/src/BlockDirt.java rename to src/main/java/net/minecraft/src/BlockDirt.java diff --git a/source/net/minecraft/src/BlockDoor.java b/src/main/java/net/minecraft/src/BlockDoor.java similarity index 100% rename from source/net/minecraft/src/BlockDoor.java rename to src/main/java/net/minecraft/src/BlockDoor.java diff --git a/source/net/minecraft/src/BlockFarmland.java b/src/main/java/net/minecraft/src/BlockFarmland.java similarity index 100% rename from source/net/minecraft/src/BlockFarmland.java rename to src/main/java/net/minecraft/src/BlockFarmland.java diff --git a/source/net/minecraft/src/BlockFire.java b/src/main/java/net/minecraft/src/BlockFire.java similarity index 100% rename from source/net/minecraft/src/BlockFire.java rename to src/main/java/net/minecraft/src/BlockFire.java diff --git a/source/net/minecraft/src/BlockFlower.java b/src/main/java/net/minecraft/src/BlockFlower.java similarity index 100% rename from source/net/minecraft/src/BlockFlower.java rename to src/main/java/net/minecraft/src/BlockFlower.java diff --git a/source/net/minecraft/src/BlockFlowing.java b/src/main/java/net/minecraft/src/BlockFlowing.java similarity index 100% rename from source/net/minecraft/src/BlockFlowing.java rename to src/main/java/net/minecraft/src/BlockFlowing.java diff --git a/source/net/minecraft/src/BlockFluid.java b/src/main/java/net/minecraft/src/BlockFluid.java similarity index 100% rename from source/net/minecraft/src/BlockFluid.java rename to src/main/java/net/minecraft/src/BlockFluid.java diff --git a/source/net/minecraft/src/BlockFurnace.java b/src/main/java/net/minecraft/src/BlockFurnace.java similarity index 100% rename from source/net/minecraft/src/BlockFurnace.java rename to src/main/java/net/minecraft/src/BlockFurnace.java diff --git a/source/net/minecraft/src/BlockGears.java b/src/main/java/net/minecraft/src/BlockGears.java similarity index 100% rename from source/net/minecraft/src/BlockGears.java rename to src/main/java/net/minecraft/src/BlockGears.java diff --git a/source/net/minecraft/src/BlockGlass.java b/src/main/java/net/minecraft/src/BlockGlass.java similarity index 100% rename from source/net/minecraft/src/BlockGlass.java rename to src/main/java/net/minecraft/src/BlockGlass.java diff --git a/source/net/minecraft/src/BlockGrass.java b/src/main/java/net/minecraft/src/BlockGrass.java similarity index 100% rename from source/net/minecraft/src/BlockGrass.java rename to src/main/java/net/minecraft/src/BlockGrass.java diff --git a/source/net/minecraft/src/BlockGravel.java b/src/main/java/net/minecraft/src/BlockGravel.java similarity index 100% rename from source/net/minecraft/src/BlockGravel.java rename to src/main/java/net/minecraft/src/BlockGravel.java diff --git a/source/net/minecraft/src/BlockLadder.java b/src/main/java/net/minecraft/src/BlockLadder.java similarity index 100% rename from source/net/minecraft/src/BlockLadder.java rename to src/main/java/net/minecraft/src/BlockLadder.java diff --git a/source/net/minecraft/src/BlockLeaves.java b/src/main/java/net/minecraft/src/BlockLeaves.java similarity index 100% rename from source/net/minecraft/src/BlockLeaves.java rename to src/main/java/net/minecraft/src/BlockLeaves.java diff --git a/source/net/minecraft/src/BlockLeavesBase.java b/src/main/java/net/minecraft/src/BlockLeavesBase.java similarity index 100% rename from source/net/minecraft/src/BlockLeavesBase.java rename to src/main/java/net/minecraft/src/BlockLeavesBase.java diff --git a/source/net/minecraft/src/BlockLog.java b/src/main/java/net/minecraft/src/BlockLog.java similarity index 100% rename from source/net/minecraft/src/BlockLog.java rename to src/main/java/net/minecraft/src/BlockLog.java diff --git a/source/net/minecraft/src/BlockMinecartTrack.java b/src/main/java/net/minecraft/src/BlockMinecartTrack.java similarity index 100% rename from source/net/minecraft/src/BlockMinecartTrack.java rename to src/main/java/net/minecraft/src/BlockMinecartTrack.java diff --git a/source/net/minecraft/src/BlockMobSpawner.java b/src/main/java/net/minecraft/src/BlockMobSpawner.java similarity index 100% rename from source/net/minecraft/src/BlockMobSpawner.java rename to src/main/java/net/minecraft/src/BlockMobSpawner.java diff --git a/source/net/minecraft/src/BlockMushroom.java b/src/main/java/net/minecraft/src/BlockMushroom.java similarity index 100% rename from source/net/minecraft/src/BlockMushroom.java rename to src/main/java/net/minecraft/src/BlockMushroom.java diff --git a/source/net/minecraft/src/BlockObsidian.java b/src/main/java/net/minecraft/src/BlockObsidian.java similarity index 100% rename from source/net/minecraft/src/BlockObsidian.java rename to src/main/java/net/minecraft/src/BlockObsidian.java diff --git a/source/net/minecraft/src/BlockOre.java b/src/main/java/net/minecraft/src/BlockOre.java similarity index 100% rename from source/net/minecraft/src/BlockOre.java rename to src/main/java/net/minecraft/src/BlockOre.java diff --git a/source/net/minecraft/src/BlockOreBlock.java b/src/main/java/net/minecraft/src/BlockOreBlock.java similarity index 100% rename from source/net/minecraft/src/BlockOreBlock.java rename to src/main/java/net/minecraft/src/BlockOreBlock.java diff --git a/source/net/minecraft/src/BlockSand.java b/src/main/java/net/minecraft/src/BlockSand.java similarity index 100% rename from source/net/minecraft/src/BlockSand.java rename to src/main/java/net/minecraft/src/BlockSand.java diff --git a/source/net/minecraft/src/BlockSapling.java b/src/main/java/net/minecraft/src/BlockSapling.java similarity index 100% rename from source/net/minecraft/src/BlockSapling.java rename to src/main/java/net/minecraft/src/BlockSapling.java diff --git a/source/net/minecraft/src/BlockSign.java b/src/main/java/net/minecraft/src/BlockSign.java similarity index 100% rename from source/net/minecraft/src/BlockSign.java rename to src/main/java/net/minecraft/src/BlockSign.java diff --git a/source/net/minecraft/src/BlockSponge.java b/src/main/java/net/minecraft/src/BlockSponge.java similarity index 100% rename from source/net/minecraft/src/BlockSponge.java rename to src/main/java/net/minecraft/src/BlockSponge.java diff --git a/source/net/minecraft/src/BlockStairs.java b/src/main/java/net/minecraft/src/BlockStairs.java similarity index 100% rename from source/net/minecraft/src/BlockStairs.java rename to src/main/java/net/minecraft/src/BlockStairs.java diff --git a/source/net/minecraft/src/BlockStationary.java b/src/main/java/net/minecraft/src/BlockStationary.java similarity index 100% rename from source/net/minecraft/src/BlockStationary.java rename to src/main/java/net/minecraft/src/BlockStationary.java diff --git a/source/net/minecraft/src/BlockStep.java b/src/main/java/net/minecraft/src/BlockStep.java similarity index 100% rename from source/net/minecraft/src/BlockStep.java rename to src/main/java/net/minecraft/src/BlockStep.java diff --git a/source/net/minecraft/src/BlockStone.java b/src/main/java/net/minecraft/src/BlockStone.java similarity index 100% rename from source/net/minecraft/src/BlockStone.java rename to src/main/java/net/minecraft/src/BlockStone.java diff --git a/source/net/minecraft/src/BlockTNT.java b/src/main/java/net/minecraft/src/BlockTNT.java similarity index 100% rename from source/net/minecraft/src/BlockTNT.java rename to src/main/java/net/minecraft/src/BlockTNT.java diff --git a/source/net/minecraft/src/BlockTorch.java b/src/main/java/net/minecraft/src/BlockTorch.java similarity index 100% rename from source/net/minecraft/src/BlockTorch.java rename to src/main/java/net/minecraft/src/BlockTorch.java diff --git a/source/net/minecraft/src/BlockWorkbench.java b/src/main/java/net/minecraft/src/BlockWorkbench.java similarity index 100% rename from source/net/minecraft/src/BlockWorkbench.java rename to src/main/java/net/minecraft/src/BlockWorkbench.java diff --git a/source/net/minecraft/src/CanvasCrashReport.java b/src/main/java/net/minecraft/src/CanvasCrashReport.java similarity index 100% rename from source/net/minecraft/src/CanvasCrashReport.java rename to src/main/java/net/minecraft/src/CanvasCrashReport.java diff --git a/source/net/minecraft/src/CanvasIsomPreview.java b/src/main/java/net/minecraft/src/CanvasIsomPreview.java similarity index 100% rename from source/net/minecraft/src/CanvasIsomPreview.java rename to src/main/java/net/minecraft/src/CanvasIsomPreview.java diff --git a/source/net/minecraft/src/CanvasMinecraftApplet.java b/src/main/java/net/minecraft/src/CanvasMinecraftApplet.java similarity index 100% rename from source/net/minecraft/src/CanvasMinecraftApplet.java rename to src/main/java/net/minecraft/src/CanvasMinecraftApplet.java diff --git a/source/net/minecraft/src/CanvasMojangLogo.java b/src/main/java/net/minecraft/src/CanvasMojangLogo.java similarity index 100% rename from source/net/minecraft/src/CanvasMojangLogo.java rename to src/main/java/net/minecraft/src/CanvasMojangLogo.java diff --git a/source/net/minecraft/src/ChatLine.java b/src/main/java/net/minecraft/src/ChatLine.java similarity index 100% rename from source/net/minecraft/src/ChatLine.java rename to src/main/java/net/minecraft/src/ChatLine.java diff --git a/source/net/minecraft/src/Chunk.java b/src/main/java/net/minecraft/src/Chunk.java similarity index 100% rename from source/net/minecraft/src/Chunk.java rename to src/main/java/net/minecraft/src/Chunk.java diff --git a/source/net/minecraft/src/ChunkCache.java b/src/main/java/net/minecraft/src/ChunkCache.java similarity index 100% rename from source/net/minecraft/src/ChunkCache.java rename to src/main/java/net/minecraft/src/ChunkCache.java diff --git a/source/net/minecraft/src/ChunkLoader.java b/src/main/java/net/minecraft/src/ChunkLoader.java similarity index 100% rename from source/net/minecraft/src/ChunkLoader.java rename to src/main/java/net/minecraft/src/ChunkLoader.java diff --git a/source/net/minecraft/src/ChunkPosition.java b/src/main/java/net/minecraft/src/ChunkPosition.java similarity index 100% rename from source/net/minecraft/src/ChunkPosition.java rename to src/main/java/net/minecraft/src/ChunkPosition.java diff --git a/source/net/minecraft/src/ChunkProviderGenerate.java b/src/main/java/net/minecraft/src/ChunkProviderGenerate.java similarity index 100% rename from source/net/minecraft/src/ChunkProviderGenerate.java rename to src/main/java/net/minecraft/src/ChunkProviderGenerate.java diff --git a/source/net/minecraft/src/ChunkProviderIso.java b/src/main/java/net/minecraft/src/ChunkProviderIso.java similarity index 100% rename from source/net/minecraft/src/ChunkProviderIso.java rename to src/main/java/net/minecraft/src/ChunkProviderIso.java diff --git a/source/net/minecraft/src/ChunkProviderLoadOrGenerate.java b/src/main/java/net/minecraft/src/ChunkProviderLoadOrGenerate.java similarity index 100% rename from source/net/minecraft/src/ChunkProviderLoadOrGenerate.java rename to src/main/java/net/minecraft/src/ChunkProviderLoadOrGenerate.java diff --git a/source/net/minecraft/src/ClippingHelper.java b/src/main/java/net/minecraft/src/ClippingHelper.java similarity index 100% rename from source/net/minecraft/src/ClippingHelper.java rename to src/main/java/net/minecraft/src/ClippingHelper.java diff --git a/source/net/minecraft/src/ClippingHelperImplementation.java b/src/main/java/net/minecraft/src/ClippingHelperImplementation.java similarity index 100% rename from source/net/minecraft/src/ClippingHelperImplementation.java rename to src/main/java/net/minecraft/src/ClippingHelperImplementation.java diff --git a/source/net/minecraft/src/CompressedStreamTools.java b/src/main/java/net/minecraft/src/CompressedStreamTools.java similarity index 100% rename from source/net/minecraft/src/CompressedStreamTools.java rename to src/main/java/net/minecraft/src/CompressedStreamTools.java diff --git a/source/net/minecraft/src/CraftingManager.java b/src/main/java/net/minecraft/src/CraftingManager.java similarity index 100% rename from source/net/minecraft/src/CraftingManager.java rename to src/main/java/net/minecraft/src/CraftingManager.java diff --git a/source/net/minecraft/src/CraftingRecipe.java b/src/main/java/net/minecraft/src/CraftingRecipe.java similarity index 100% rename from source/net/minecraft/src/CraftingRecipe.java rename to src/main/java/net/minecraft/src/CraftingRecipe.java diff --git a/source/net/minecraft/src/EffectRenderer.java b/src/main/java/net/minecraft/src/EffectRenderer.java similarity index 100% rename from source/net/minecraft/src/EffectRenderer.java rename to src/main/java/net/minecraft/src/EffectRenderer.java diff --git a/source/net/minecraft/src/Entity.java b/src/main/java/net/minecraft/src/Entity.java similarity index 100% rename from source/net/minecraft/src/Entity.java rename to src/main/java/net/minecraft/src/Entity.java diff --git a/source/net/minecraft/src/EntityAnimal.java b/src/main/java/net/minecraft/src/EntityAnimal.java similarity index 100% rename from source/net/minecraft/src/EntityAnimal.java rename to src/main/java/net/minecraft/src/EntityAnimal.java diff --git a/source/net/minecraft/src/EntityArrow.java b/src/main/java/net/minecraft/src/EntityArrow.java similarity index 100% rename from source/net/minecraft/src/EntityArrow.java rename to src/main/java/net/minecraft/src/EntityArrow.java diff --git a/source/net/minecraft/src/EntityBubbleFX.java b/src/main/java/net/minecraft/src/EntityBubbleFX.java similarity index 100% rename from source/net/minecraft/src/EntityBubbleFX.java rename to src/main/java/net/minecraft/src/EntityBubbleFX.java diff --git a/source/net/minecraft/src/EntityCreature.java b/src/main/java/net/minecraft/src/EntityCreature.java similarity index 100% rename from source/net/minecraft/src/EntityCreature.java rename to src/main/java/net/minecraft/src/EntityCreature.java diff --git a/source/net/minecraft/src/EntityCreeper.java b/src/main/java/net/minecraft/src/EntityCreeper.java similarity index 100% rename from source/net/minecraft/src/EntityCreeper.java rename to src/main/java/net/minecraft/src/EntityCreeper.java diff --git a/source/net/minecraft/src/EntityDiggingFX.java b/src/main/java/net/minecraft/src/EntityDiggingFX.java similarity index 100% rename from source/net/minecraft/src/EntityDiggingFX.java rename to src/main/java/net/minecraft/src/EntityDiggingFX.java diff --git a/source/net/minecraft/src/EntityExplodeFX.java b/src/main/java/net/minecraft/src/EntityExplodeFX.java similarity index 100% rename from source/net/minecraft/src/EntityExplodeFX.java rename to src/main/java/net/minecraft/src/EntityExplodeFX.java diff --git a/source/net/minecraft/src/EntityFX.java b/src/main/java/net/minecraft/src/EntityFX.java similarity index 100% rename from source/net/minecraft/src/EntityFX.java rename to src/main/java/net/minecraft/src/EntityFX.java diff --git a/source/net/minecraft/src/EntityFallingSand.java b/src/main/java/net/minecraft/src/EntityFallingSand.java similarity index 100% rename from source/net/minecraft/src/EntityFallingSand.java rename to src/main/java/net/minecraft/src/EntityFallingSand.java diff --git a/source/net/minecraft/src/EntityFlameFX.java b/src/main/java/net/minecraft/src/EntityFlameFX.java similarity index 100% rename from source/net/minecraft/src/EntityFlameFX.java rename to src/main/java/net/minecraft/src/EntityFlameFX.java diff --git a/source/net/minecraft/src/EntityGiant.java b/src/main/java/net/minecraft/src/EntityGiant.java similarity index 100% rename from source/net/minecraft/src/EntityGiant.java rename to src/main/java/net/minecraft/src/EntityGiant.java diff --git a/source/net/minecraft/src/EntityItem.java b/src/main/java/net/minecraft/src/EntityItem.java similarity index 100% rename from source/net/minecraft/src/EntityItem.java rename to src/main/java/net/minecraft/src/EntityItem.java diff --git a/source/net/minecraft/src/EntityLavaFX.java b/src/main/java/net/minecraft/src/EntityLavaFX.java similarity index 100% rename from source/net/minecraft/src/EntityLavaFX.java rename to src/main/java/net/minecraft/src/EntityLavaFX.java diff --git a/source/net/minecraft/src/EntityList.java b/src/main/java/net/minecraft/src/EntityList.java similarity index 100% rename from source/net/minecraft/src/EntityList.java rename to src/main/java/net/minecraft/src/EntityList.java diff --git a/source/net/minecraft/src/EntityLiving.java b/src/main/java/net/minecraft/src/EntityLiving.java similarity index 100% rename from source/net/minecraft/src/EntityLiving.java rename to src/main/java/net/minecraft/src/EntityLiving.java diff --git a/source/net/minecraft/src/EntityMinecart.java b/src/main/java/net/minecraft/src/EntityMinecart.java similarity index 100% rename from source/net/minecraft/src/EntityMinecart.java rename to src/main/java/net/minecraft/src/EntityMinecart.java diff --git a/source/net/minecraft/src/EntityMonster.java b/src/main/java/net/minecraft/src/EntityMonster.java similarity index 100% rename from source/net/minecraft/src/EntityMonster.java rename to src/main/java/net/minecraft/src/EntityMonster.java diff --git a/source/net/minecraft/src/EntityPainting.java b/src/main/java/net/minecraft/src/EntityPainting.java similarity index 100% rename from source/net/minecraft/src/EntityPainting.java rename to src/main/java/net/minecraft/src/EntityPainting.java diff --git a/source/net/minecraft/src/EntityPickupFX.java b/src/main/java/net/minecraft/src/EntityPickupFX.java similarity index 100% rename from source/net/minecraft/src/EntityPickupFX.java rename to src/main/java/net/minecraft/src/EntityPickupFX.java diff --git a/source/net/minecraft/src/EntityPig.java b/src/main/java/net/minecraft/src/EntityPig.java similarity index 100% rename from source/net/minecraft/src/EntityPig.java rename to src/main/java/net/minecraft/src/EntityPig.java diff --git a/source/net/minecraft/src/EntityPlayer.java b/src/main/java/net/minecraft/src/EntityPlayer.java similarity index 100% rename from source/net/minecraft/src/EntityPlayer.java rename to src/main/java/net/minecraft/src/EntityPlayer.java diff --git a/source/net/minecraft/src/EntityPlayerSP.java b/src/main/java/net/minecraft/src/EntityPlayerSP.java similarity index 100% rename from source/net/minecraft/src/EntityPlayerSP.java rename to src/main/java/net/minecraft/src/EntityPlayerSP.java diff --git a/source/net/minecraft/src/EntityRainFX.java b/src/main/java/net/minecraft/src/EntityRainFX.java similarity index 100% rename from source/net/minecraft/src/EntityRainFX.java rename to src/main/java/net/minecraft/src/EntityRainFX.java diff --git a/src/net/minecraft/src/EntityRenderer.java b/src/main/java/net/minecraft/src/EntityRenderer.java similarity index 98% rename from src/net/minecraft/src/EntityRenderer.java rename to src/main/java/net/minecraft/src/EntityRenderer.java index 7d2ce97..4be94a9 100644 --- a/src/net/minecraft/src/EntityRenderer.java +++ b/src/main/java/net/minecraft/src/EntityRenderer.java @@ -6,9 +6,6 @@ import java.util.Random; import org.lwjgl.input.Mouse; import org.lwjgl.opengl.Display; import org.lwjgl.opengl.GL11; -import org.lwjgl.opengl.GLContext; -import org.lwjgl.opengl.NVFogDistance; -import org.lwjgl.util.glu.GLU; public class EntityRenderer { private Minecraft mc; @@ -206,7 +203,7 @@ public class EntityRenderer { GL11.glTranslatef((float)(-(var2 * 2 - 1)) * var3, 0.0F, 0.0F); } - GLU.gluPerspective(this.getFOVModifier(var1), (float)this.mc.displayWidth / (float)this.mc.displayHeight, 0.05F, this.farPlaneDistance); + GL11.gluPerspective(this.getFOVModifier(var1), (float)this.mc.displayWidth / (float)this.mc.displayHeight, 0.05F, this.farPlaneDistance); GL11.glMatrixMode(GL11.GL_MODELVIEW); GL11.glLoadIdentity(); if(this.mc.gameSettings.anaglyph) { @@ -604,10 +601,6 @@ public class EntityRenderer { GL11.glFogf(GL11.GL_FOG_START, 0.0F); GL11.glFogf(GL11.GL_FOG_END, this.farPlaneDistance * 0.8F); } - - if(GLContext.getCapabilities().GL_NV_fog_distance) { - GL11.glFogi(NVFogDistance.GL_FOG_DISTANCE_MODE_NV, NVFogDistance.GL_EYE_RADIAL_NV); - } } GL11.glEnable(GL11.GL_COLOR_MATERIAL); diff --git a/source/net/minecraft/src/EntitySheep.java b/src/main/java/net/minecraft/src/EntitySheep.java similarity index 100% rename from source/net/minecraft/src/EntitySheep.java rename to src/main/java/net/minecraft/src/EntitySheep.java diff --git a/source/net/minecraft/src/EntitySkeleton.java b/src/main/java/net/minecraft/src/EntitySkeleton.java similarity index 100% rename from source/net/minecraft/src/EntitySkeleton.java rename to src/main/java/net/minecraft/src/EntitySkeleton.java diff --git a/source/net/minecraft/src/EntitySmokeFX.java b/src/main/java/net/minecraft/src/EntitySmokeFX.java similarity index 100% rename from source/net/minecraft/src/EntitySmokeFX.java rename to src/main/java/net/minecraft/src/EntitySmokeFX.java diff --git a/source/net/minecraft/src/EntitySorter.java b/src/main/java/net/minecraft/src/EntitySorter.java similarity index 100% rename from source/net/minecraft/src/EntitySorter.java rename to src/main/java/net/minecraft/src/EntitySorter.java diff --git a/source/net/minecraft/src/EntitySpider.java b/src/main/java/net/minecraft/src/EntitySpider.java similarity index 100% rename from source/net/minecraft/src/EntitySpider.java rename to src/main/java/net/minecraft/src/EntitySpider.java diff --git a/source/net/minecraft/src/EntitySplashFX.java b/src/main/java/net/minecraft/src/EntitySplashFX.java similarity index 100% rename from source/net/minecraft/src/EntitySplashFX.java rename to src/main/java/net/minecraft/src/EntitySplashFX.java diff --git a/source/net/minecraft/src/EntityTNTPrimed.java b/src/main/java/net/minecraft/src/EntityTNTPrimed.java similarity index 100% rename from source/net/minecraft/src/EntityTNTPrimed.java rename to src/main/java/net/minecraft/src/EntityTNTPrimed.java diff --git a/source/net/minecraft/src/EntityZombie.java b/src/main/java/net/minecraft/src/EntityZombie.java similarity index 100% rename from source/net/minecraft/src/EntityZombie.java rename to src/main/java/net/minecraft/src/EntityZombie.java diff --git a/source/net/minecraft/src/EnumArt.java b/src/main/java/net/minecraft/src/EnumArt.java similarity index 100% rename from source/net/minecraft/src/EnumArt.java rename to src/main/java/net/minecraft/src/EnumArt.java diff --git a/source/net/minecraft/src/EnumOS.java b/src/main/java/net/minecraft/src/EnumOS.java similarity index 100% rename from source/net/minecraft/src/EnumOS.java rename to src/main/java/net/minecraft/src/EnumOS.java diff --git a/source/net/minecraft/src/EnumOSIsom.java b/src/main/java/net/minecraft/src/EnumOSIsom.java similarity index 100% rename from source/net/minecraft/src/EnumOSIsom.java rename to src/main/java/net/minecraft/src/EnumOSIsom.java diff --git a/source/net/minecraft/src/EnumSkyBlock.java b/src/main/java/net/minecraft/src/EnumSkyBlock.java similarity index 100% rename from source/net/minecraft/src/EnumSkyBlock.java rename to src/main/java/net/minecraft/src/EnumSkyBlock.java diff --git a/source/net/minecraft/src/Explosion.java b/src/main/java/net/minecraft/src/Explosion.java similarity index 100% rename from source/net/minecraft/src/Explosion.java rename to src/main/java/net/minecraft/src/Explosion.java diff --git a/source/net/minecraft/src/FontRenderer.java b/src/main/java/net/minecraft/src/FontRenderer.java similarity index 100% rename from source/net/minecraft/src/FontRenderer.java rename to src/main/java/net/minecraft/src/FontRenderer.java diff --git a/source/net/minecraft/src/Frustrum.java b/src/main/java/net/minecraft/src/Frustrum.java similarity index 100% rename from source/net/minecraft/src/Frustrum.java rename to src/main/java/net/minecraft/src/Frustrum.java diff --git a/src/main/java/net/minecraft/src/GLAllocation.java b/src/main/java/net/minecraft/src/GLAllocation.java new file mode 100644 index 0000000..f5931e3 --- /dev/null +++ b/src/main/java/net/minecraft/src/GLAllocation.java @@ -0,0 +1,60 @@ +package net.minecraft.src; + +import java.nio.*; +import java.util.ArrayList; +import java.util.List; + +import org.lwjgl.opengl.GL11; + +public class GLAllocation { + + public GLAllocation() { + } + + public static synchronized int generateDisplayLists(int i) { + int j = GL11.glGenLists(i); + displayLists.add(Integer.valueOf(j)); + displayLists.add(Integer.valueOf(i)); + return j; + } + + public static synchronized void generateTextureNames(IntBuffer intbuffer) { + + for (int i = intbuffer.position(); i < intbuffer.limit(); i++) { + int tx = GL11.glGenTextures(); + intbuffer.put(i, tx); + textureNames.add(Integer.valueOf(tx)); + } + + } + + public static synchronized void deleteTexturesAndDisplayLists() { + for (int i = 0; i < displayLists.size(); i += 2) { + GL11.glDeleteLists(((Integer) displayLists.get(i)).intValue(), + ((Integer) displayLists.get(i + 1)).intValue()); + } + + for (int j = 0; j < textureNames.size(); j++) { + GL11.glDeleteTextures(((Integer) textureNames.get(j)).intValue()); + } + + displayLists.clear(); + textureNames.clear(); + } + + public static ByteBuffer createByteBuffer(int par0) { + return ByteBuffer.wrap(new byte[par0]).order(ByteOrder.nativeOrder()); + } + + public static IntBuffer createIntBuffer(int par0) { + return IntBuffer.wrap(new int[par0]); + } + + public static FloatBuffer createFloatBuffer(int par0) { + return FloatBuffer.wrap(new float[par0]); + } + + private static List displayLists = new ArrayList(); + private static List textureNames = new ArrayList(); + +} \ No newline at end of file diff --git a/source/net/minecraft/src/GameSettings.java b/src/main/java/net/minecraft/src/GameSettings.java similarity index 100% rename from source/net/minecraft/src/GameSettings.java rename to src/main/java/net/minecraft/src/GameSettings.java diff --git a/source/net/minecraft/src/Gui.java b/src/main/java/net/minecraft/src/Gui.java similarity index 100% rename from source/net/minecraft/src/Gui.java rename to src/main/java/net/minecraft/src/Gui.java diff --git a/source/net/minecraft/src/GuiButton.java b/src/main/java/net/minecraft/src/GuiButton.java similarity index 100% rename from source/net/minecraft/src/GuiButton.java rename to src/main/java/net/minecraft/src/GuiButton.java diff --git a/source/net/minecraft/src/GuiChest.java b/src/main/java/net/minecraft/src/GuiChest.java similarity index 100% rename from source/net/minecraft/src/GuiChest.java rename to src/main/java/net/minecraft/src/GuiChest.java diff --git a/source/net/minecraft/src/GuiContainer.java b/src/main/java/net/minecraft/src/GuiContainer.java similarity index 100% rename from source/net/minecraft/src/GuiContainer.java rename to src/main/java/net/minecraft/src/GuiContainer.java diff --git a/source/net/minecraft/src/GuiControls.java b/src/main/java/net/minecraft/src/GuiControls.java similarity index 100% rename from source/net/minecraft/src/GuiControls.java rename to src/main/java/net/minecraft/src/GuiControls.java diff --git a/source/net/minecraft/src/GuiCrafting.java b/src/main/java/net/minecraft/src/GuiCrafting.java similarity index 100% rename from source/net/minecraft/src/GuiCrafting.java rename to src/main/java/net/minecraft/src/GuiCrafting.java diff --git a/source/net/minecraft/src/GuiCreateWorld.java b/src/main/java/net/minecraft/src/GuiCreateWorld.java similarity index 100% rename from source/net/minecraft/src/GuiCreateWorld.java rename to src/main/java/net/minecraft/src/GuiCreateWorld.java diff --git a/source/net/minecraft/src/GuiDeleteWorld.java b/src/main/java/net/minecraft/src/GuiDeleteWorld.java similarity index 100% rename from source/net/minecraft/src/GuiDeleteWorld.java rename to src/main/java/net/minecraft/src/GuiDeleteWorld.java diff --git a/source/net/minecraft/src/GuiEditSign.java b/src/main/java/net/minecraft/src/GuiEditSign.java similarity index 100% rename from source/net/minecraft/src/GuiEditSign.java rename to src/main/java/net/minecraft/src/GuiEditSign.java diff --git a/source/net/minecraft/src/GuiErrorScreen.java b/src/main/java/net/minecraft/src/GuiErrorScreen.java similarity index 100% rename from source/net/minecraft/src/GuiErrorScreen.java rename to src/main/java/net/minecraft/src/GuiErrorScreen.java diff --git a/source/net/minecraft/src/GuiFurnace.java b/src/main/java/net/minecraft/src/GuiFurnace.java similarity index 100% rename from source/net/minecraft/src/GuiFurnace.java rename to src/main/java/net/minecraft/src/GuiFurnace.java diff --git a/source/net/minecraft/src/GuiGameOver.java b/src/main/java/net/minecraft/src/GuiGameOver.java similarity index 100% rename from source/net/minecraft/src/GuiGameOver.java rename to src/main/java/net/minecraft/src/GuiGameOver.java diff --git a/source/net/minecraft/src/GuiIngame.java b/src/main/java/net/minecraft/src/GuiIngame.java similarity index 100% rename from source/net/minecraft/src/GuiIngame.java rename to src/main/java/net/minecraft/src/GuiIngame.java diff --git a/source/net/minecraft/src/GuiIngameMenu.java b/src/main/java/net/minecraft/src/GuiIngameMenu.java similarity index 100% rename from source/net/minecraft/src/GuiIngameMenu.java rename to src/main/java/net/minecraft/src/GuiIngameMenu.java diff --git a/source/net/minecraft/src/GuiInventory.java b/src/main/java/net/minecraft/src/GuiInventory.java similarity index 100% rename from source/net/minecraft/src/GuiInventory.java rename to src/main/java/net/minecraft/src/GuiInventory.java diff --git a/source/net/minecraft/src/GuiMainMenu.java b/src/main/java/net/minecraft/src/GuiMainMenu.java similarity index 100% rename from source/net/minecraft/src/GuiMainMenu.java rename to src/main/java/net/minecraft/src/GuiMainMenu.java diff --git a/source/net/minecraft/src/GuiOptions.java b/src/main/java/net/minecraft/src/GuiOptions.java similarity index 100% rename from source/net/minecraft/src/GuiOptions.java rename to src/main/java/net/minecraft/src/GuiOptions.java diff --git a/source/net/minecraft/src/GuiScreen.java b/src/main/java/net/minecraft/src/GuiScreen.java similarity index 97% rename from source/net/minecraft/src/GuiScreen.java rename to src/main/java/net/minecraft/src/GuiScreen.java index 392f9fc..c5c420e 100644 --- a/source/net/minecraft/src/GuiScreen.java +++ b/src/main/java/net/minecraft/src/GuiScreen.java @@ -88,10 +88,10 @@ public class GuiScreen extends Gui { public void handleKeyboardInput() { if(Keyboard.getEventKeyState()) { - if(Keyboard.getEventKey() == Keyboard.KEY_F11) { - this.mc.toggleFullscreen(); - return; - } +// if(Keyboard.getEventKey() == Keyboard.KEY_F11) { +// this.mc.toggleFullscreen(); +// return; +// } this.keyTyped(Keyboard.getEventCharacter(), Keyboard.getEventKey()); } diff --git a/source/net/minecraft/src/GuiSmallButton.java b/src/main/java/net/minecraft/src/GuiSmallButton.java similarity index 100% rename from source/net/minecraft/src/GuiSmallButton.java rename to src/main/java/net/minecraft/src/GuiSmallButton.java diff --git a/source/net/minecraft/src/GuiYesNo.java b/src/main/java/net/minecraft/src/GuiYesNo.java similarity index 100% rename from source/net/minecraft/src/GuiYesNo.java rename to src/main/java/net/minecraft/src/GuiYesNo.java diff --git a/source/net/minecraft/src/IBlockAccess.java b/src/main/java/net/minecraft/src/IBlockAccess.java similarity index 100% rename from source/net/minecraft/src/IBlockAccess.java rename to src/main/java/net/minecraft/src/IBlockAccess.java diff --git a/source/net/minecraft/src/ICamera.java b/src/main/java/net/minecraft/src/ICamera.java similarity index 100% rename from source/net/minecraft/src/ICamera.java rename to src/main/java/net/minecraft/src/ICamera.java diff --git a/source/net/minecraft/src/IChunkLoader.java b/src/main/java/net/minecraft/src/IChunkLoader.java similarity index 100% rename from source/net/minecraft/src/IChunkLoader.java rename to src/main/java/net/minecraft/src/IChunkLoader.java diff --git a/source/net/minecraft/src/IChunkProvider.java b/src/main/java/net/minecraft/src/IChunkProvider.java similarity index 100% rename from source/net/minecraft/src/IChunkProvider.java rename to src/main/java/net/minecraft/src/IChunkProvider.java diff --git a/source/net/minecraft/src/IInventory.java b/src/main/java/net/minecraft/src/IInventory.java similarity index 100% rename from source/net/minecraft/src/IInventory.java rename to src/main/java/net/minecraft/src/IInventory.java diff --git a/source/net/minecraft/src/IProgressUpdate.java b/src/main/java/net/minecraft/src/IProgressUpdate.java similarity index 100% rename from source/net/minecraft/src/IProgressUpdate.java rename to src/main/java/net/minecraft/src/IProgressUpdate.java diff --git a/source/net/minecraft/src/IWorldAccess.java b/src/main/java/net/minecraft/src/IWorldAccess.java similarity index 100% rename from source/net/minecraft/src/IWorldAccess.java rename to src/main/java/net/minecraft/src/IWorldAccess.java diff --git a/source/net/minecraft/src/ImageBuffer.java b/src/main/java/net/minecraft/src/ImageBuffer.java similarity index 100% rename from source/net/minecraft/src/ImageBuffer.java rename to src/main/java/net/minecraft/src/ImageBuffer.java diff --git a/source/net/minecraft/src/ImageBufferDownload.java b/src/main/java/net/minecraft/src/ImageBufferDownload.java similarity index 100% rename from source/net/minecraft/src/ImageBufferDownload.java rename to src/main/java/net/minecraft/src/ImageBufferDownload.java diff --git a/source/net/minecraft/src/InventoryCraftResult.java b/src/main/java/net/minecraft/src/InventoryCraftResult.java similarity index 100% rename from source/net/minecraft/src/InventoryCraftResult.java rename to src/main/java/net/minecraft/src/InventoryCraftResult.java diff --git a/source/net/minecraft/src/InventoryCrafting.java b/src/main/java/net/minecraft/src/InventoryCrafting.java similarity index 100% rename from source/net/minecraft/src/InventoryCrafting.java rename to src/main/java/net/minecraft/src/InventoryCrafting.java diff --git a/source/net/minecraft/src/InventoryLargeChest.java b/src/main/java/net/minecraft/src/InventoryLargeChest.java similarity index 100% rename from source/net/minecraft/src/InventoryLargeChest.java rename to src/main/java/net/minecraft/src/InventoryLargeChest.java diff --git a/source/net/minecraft/src/InventoryPlayer.java b/src/main/java/net/minecraft/src/InventoryPlayer.java similarity index 100% rename from source/net/minecraft/src/InventoryPlayer.java rename to src/main/java/net/minecraft/src/InventoryPlayer.java diff --git a/source/net/minecraft/src/IsoImageBuffer.java b/src/main/java/net/minecraft/src/IsoImageBuffer.java similarity index 100% rename from source/net/minecraft/src/IsoImageBuffer.java rename to src/main/java/net/minecraft/src/IsoImageBuffer.java diff --git a/source/net/minecraft/src/Item.java b/src/main/java/net/minecraft/src/Item.java similarity index 100% rename from source/net/minecraft/src/Item.java rename to src/main/java/net/minecraft/src/Item.java diff --git a/source/net/minecraft/src/ItemArmor.java b/src/main/java/net/minecraft/src/ItemArmor.java similarity index 100% rename from source/net/minecraft/src/ItemArmor.java rename to src/main/java/net/minecraft/src/ItemArmor.java diff --git a/source/net/minecraft/src/ItemAxe.java b/src/main/java/net/minecraft/src/ItemAxe.java similarity index 100% rename from source/net/minecraft/src/ItemAxe.java rename to src/main/java/net/minecraft/src/ItemAxe.java diff --git a/source/net/minecraft/src/ItemBlock.java b/src/main/java/net/minecraft/src/ItemBlock.java similarity index 100% rename from source/net/minecraft/src/ItemBlock.java rename to src/main/java/net/minecraft/src/ItemBlock.java diff --git a/source/net/minecraft/src/ItemBow.java b/src/main/java/net/minecraft/src/ItemBow.java similarity index 100% rename from source/net/minecraft/src/ItemBow.java rename to src/main/java/net/minecraft/src/ItemBow.java diff --git a/source/net/minecraft/src/ItemBucket.java b/src/main/java/net/minecraft/src/ItemBucket.java similarity index 100% rename from source/net/minecraft/src/ItemBucket.java rename to src/main/java/net/minecraft/src/ItemBucket.java diff --git a/source/net/minecraft/src/ItemDoor.java b/src/main/java/net/minecraft/src/ItemDoor.java similarity index 100% rename from source/net/minecraft/src/ItemDoor.java rename to src/main/java/net/minecraft/src/ItemDoor.java diff --git a/source/net/minecraft/src/ItemFlintAndSteel.java b/src/main/java/net/minecraft/src/ItemFlintAndSteel.java similarity index 100% rename from source/net/minecraft/src/ItemFlintAndSteel.java rename to src/main/java/net/minecraft/src/ItemFlintAndSteel.java diff --git a/source/net/minecraft/src/ItemFood.java b/src/main/java/net/minecraft/src/ItemFood.java similarity index 100% rename from source/net/minecraft/src/ItemFood.java rename to src/main/java/net/minecraft/src/ItemFood.java diff --git a/source/net/minecraft/src/ItemHoe.java b/src/main/java/net/minecraft/src/ItemHoe.java similarity index 100% rename from source/net/minecraft/src/ItemHoe.java rename to src/main/java/net/minecraft/src/ItemHoe.java diff --git a/source/net/minecraft/src/ItemMinecart.java b/src/main/java/net/minecraft/src/ItemMinecart.java similarity index 100% rename from source/net/minecraft/src/ItemMinecart.java rename to src/main/java/net/minecraft/src/ItemMinecart.java diff --git a/source/net/minecraft/src/ItemPainting.java b/src/main/java/net/minecraft/src/ItemPainting.java similarity index 100% rename from source/net/minecraft/src/ItemPainting.java rename to src/main/java/net/minecraft/src/ItemPainting.java diff --git a/source/net/minecraft/src/ItemPickaxe.java b/src/main/java/net/minecraft/src/ItemPickaxe.java similarity index 100% rename from source/net/minecraft/src/ItemPickaxe.java rename to src/main/java/net/minecraft/src/ItemPickaxe.java diff --git a/source/net/minecraft/src/ItemRenderer.java b/src/main/java/net/minecraft/src/ItemRenderer.java similarity index 100% rename from source/net/minecraft/src/ItemRenderer.java rename to src/main/java/net/minecraft/src/ItemRenderer.java diff --git a/source/net/minecraft/src/ItemSaddle.java b/src/main/java/net/minecraft/src/ItemSaddle.java similarity index 100% rename from source/net/minecraft/src/ItemSaddle.java rename to src/main/java/net/minecraft/src/ItemSaddle.java diff --git a/source/net/minecraft/src/ItemSeeds.java b/src/main/java/net/minecraft/src/ItemSeeds.java similarity index 100% rename from source/net/minecraft/src/ItemSeeds.java rename to src/main/java/net/minecraft/src/ItemSeeds.java diff --git a/source/net/minecraft/src/ItemSign.java b/src/main/java/net/minecraft/src/ItemSign.java similarity index 100% rename from source/net/minecraft/src/ItemSign.java rename to src/main/java/net/minecraft/src/ItemSign.java diff --git a/source/net/minecraft/src/ItemSoup.java b/src/main/java/net/minecraft/src/ItemSoup.java similarity index 100% rename from source/net/minecraft/src/ItemSoup.java rename to src/main/java/net/minecraft/src/ItemSoup.java diff --git a/source/net/minecraft/src/ItemSpade.java b/src/main/java/net/minecraft/src/ItemSpade.java similarity index 100% rename from source/net/minecraft/src/ItemSpade.java rename to src/main/java/net/minecraft/src/ItemSpade.java diff --git a/source/net/minecraft/src/ItemStack.java b/src/main/java/net/minecraft/src/ItemStack.java similarity index 100% rename from source/net/minecraft/src/ItemStack.java rename to src/main/java/net/minecraft/src/ItemStack.java diff --git a/source/net/minecraft/src/ItemSword.java b/src/main/java/net/minecraft/src/ItemSword.java similarity index 100% rename from source/net/minecraft/src/ItemSword.java rename to src/main/java/net/minecraft/src/ItemSword.java diff --git a/source/net/minecraft/src/ItemTool.java b/src/main/java/net/minecraft/src/ItemTool.java similarity index 100% rename from source/net/minecraft/src/ItemTool.java rename to src/main/java/net/minecraft/src/ItemTool.java diff --git a/source/net/minecraft/src/KeyBinding.java b/src/main/java/net/minecraft/src/KeyBinding.java similarity index 100% rename from source/net/minecraft/src/KeyBinding.java rename to src/main/java/net/minecraft/src/KeyBinding.java diff --git a/source/net/minecraft/src/LoadingScreenRenderer.java b/src/main/java/net/minecraft/src/LoadingScreenRenderer.java similarity index 100% rename from source/net/minecraft/src/LoadingScreenRenderer.java rename to src/main/java/net/minecraft/src/LoadingScreenRenderer.java diff --git a/source/net/minecraft/src/Material.java b/src/main/java/net/minecraft/src/Material.java similarity index 100% rename from source/net/minecraft/src/Material.java rename to src/main/java/net/minecraft/src/Material.java diff --git a/source/net/minecraft/src/MaterialLiquid.java b/src/main/java/net/minecraft/src/MaterialLiquid.java similarity index 100% rename from source/net/minecraft/src/MaterialLiquid.java rename to src/main/java/net/minecraft/src/MaterialLiquid.java diff --git a/source/net/minecraft/src/MaterialLogic.java b/src/main/java/net/minecraft/src/MaterialLogic.java similarity index 100% rename from source/net/minecraft/src/MaterialLogic.java rename to src/main/java/net/minecraft/src/MaterialLogic.java diff --git a/source/net/minecraft/src/MaterialTransparent.java b/src/main/java/net/minecraft/src/MaterialTransparent.java similarity index 100% rename from source/net/minecraft/src/MaterialTransparent.java rename to src/main/java/net/minecraft/src/MaterialTransparent.java diff --git a/source/net/minecraft/src/MathHelper.java b/src/main/java/net/minecraft/src/MathHelper.java similarity index 100% rename from source/net/minecraft/src/MathHelper.java rename to src/main/java/net/minecraft/src/MathHelper.java diff --git a/source/net/minecraft/src/MetadataChunkBlock.java b/src/main/java/net/minecraft/src/MetadataChunkBlock.java similarity index 100% rename from source/net/minecraft/src/MetadataChunkBlock.java rename to src/main/java/net/minecraft/src/MetadataChunkBlock.java diff --git a/source/net/minecraft/src/MinecartTrackLogic.java b/src/main/java/net/minecraft/src/MinecartTrackLogic.java similarity index 100% rename from source/net/minecraft/src/MinecartTrackLogic.java rename to src/main/java/net/minecraft/src/MinecartTrackLogic.java diff --git a/source/net/minecraft/src/Minecraft.java b/src/main/java/net/minecraft/src/Minecraft.java similarity index 100% rename from source/net/minecraft/src/Minecraft.java rename to src/main/java/net/minecraft/src/Minecraft.java diff --git a/source/net/minecraft/src/MinecraftAppletImpl.java b/src/main/java/net/minecraft/src/MinecraftAppletImpl.java similarity index 100% rename from source/net/minecraft/src/MinecraftAppletImpl.java rename to src/main/java/net/minecraft/src/MinecraftAppletImpl.java diff --git a/source/net/minecraft/src/MinecraftError.java b/src/main/java/net/minecraft/src/MinecraftError.java similarity index 100% rename from source/net/minecraft/src/MinecraftError.java rename to src/main/java/net/minecraft/src/MinecraftError.java diff --git a/source/net/minecraft/src/ModelBase.java b/src/main/java/net/minecraft/src/ModelBase.java similarity index 100% rename from source/net/minecraft/src/ModelBase.java rename to src/main/java/net/minecraft/src/ModelBase.java diff --git a/source/net/minecraft/src/ModelBiped.java b/src/main/java/net/minecraft/src/ModelBiped.java similarity index 100% rename from source/net/minecraft/src/ModelBiped.java rename to src/main/java/net/minecraft/src/ModelBiped.java diff --git a/source/net/minecraft/src/ModelCreeper.java b/src/main/java/net/minecraft/src/ModelCreeper.java similarity index 100% rename from source/net/minecraft/src/ModelCreeper.java rename to src/main/java/net/minecraft/src/ModelCreeper.java diff --git a/source/net/minecraft/src/ModelMinecart.java b/src/main/java/net/minecraft/src/ModelMinecart.java similarity index 100% rename from source/net/minecraft/src/ModelMinecart.java rename to src/main/java/net/minecraft/src/ModelMinecart.java diff --git a/source/net/minecraft/src/ModelPig.java b/src/main/java/net/minecraft/src/ModelPig.java similarity index 100% rename from source/net/minecraft/src/ModelPig.java rename to src/main/java/net/minecraft/src/ModelPig.java diff --git a/source/net/minecraft/src/ModelQuadruped.java b/src/main/java/net/minecraft/src/ModelQuadruped.java similarity index 100% rename from source/net/minecraft/src/ModelQuadruped.java rename to src/main/java/net/minecraft/src/ModelQuadruped.java diff --git a/source/net/minecraft/src/ModelRenderer.java b/src/main/java/net/minecraft/src/ModelRenderer.java similarity index 100% rename from source/net/minecraft/src/ModelRenderer.java rename to src/main/java/net/minecraft/src/ModelRenderer.java diff --git a/source/net/minecraft/src/ModelSheep.java b/src/main/java/net/minecraft/src/ModelSheep.java similarity index 100% rename from source/net/minecraft/src/ModelSheep.java rename to src/main/java/net/minecraft/src/ModelSheep.java diff --git a/source/net/minecraft/src/ModelSheepFur.java b/src/main/java/net/minecraft/src/ModelSheepFur.java similarity index 100% rename from source/net/minecraft/src/ModelSheepFur.java rename to src/main/java/net/minecraft/src/ModelSheepFur.java diff --git a/source/net/minecraft/src/ModelSkeleton.java b/src/main/java/net/minecraft/src/ModelSkeleton.java similarity index 100% rename from source/net/minecraft/src/ModelSkeleton.java rename to src/main/java/net/minecraft/src/ModelSkeleton.java diff --git a/source/net/minecraft/src/ModelSpider.java b/src/main/java/net/minecraft/src/ModelSpider.java similarity index 100% rename from source/net/minecraft/src/ModelSpider.java rename to src/main/java/net/minecraft/src/ModelSpider.java diff --git a/source/net/minecraft/src/ModelZombie.java b/src/main/java/net/minecraft/src/ModelZombie.java similarity index 100% rename from source/net/minecraft/src/ModelZombie.java rename to src/main/java/net/minecraft/src/ModelZombie.java diff --git a/src/main/java/net/minecraft/src/MouseHelper.java b/src/main/java/net/minecraft/src/MouseHelper.java new file mode 100644 index 0000000..63f3071 --- /dev/null +++ b/src/main/java/net/minecraft/src/MouseHelper.java @@ -0,0 +1,31 @@ +package net.minecraft.src; + +import org.lwjgl.input.Mouse; +import net.PeytonPlayz585.opengl.LWJGLMain; + +public class MouseHelper { + + public void grabMouse() { + Mouse.setNativeCursor(true); + deltaX = 0; + deltaY = 0; + } + + public void ungrabMouse() { + Mouse.setCursorPosition(LWJGLMain.getCanvasWidth() / 2, LWJGLMain.getCanvasHeight() / 2); + Mouse.setNativeCursor(false); + } + + public void mouseXYChange() { + if(LWJGLMain.isPointerLocked2()) { + deltaX = Mouse.getDX(); + deltaY = Mouse.getDY(); + }else { + deltaX = 0; + deltaY = 0; + } + } + + public int deltaX; + public int deltaY; +} \ No newline at end of file diff --git a/source/net/minecraft/src/MovementInput.java b/src/main/java/net/minecraft/src/MovementInput.java similarity index 100% rename from source/net/minecraft/src/MovementInput.java rename to src/main/java/net/minecraft/src/MovementInput.java diff --git a/source/net/minecraft/src/MovementInputFromOptions.java b/src/main/java/net/minecraft/src/MovementInputFromOptions.java similarity index 100% rename from source/net/minecraft/src/MovementInputFromOptions.java rename to src/main/java/net/minecraft/src/MovementInputFromOptions.java diff --git a/source/net/minecraft/src/MovingObjectPosition.java b/src/main/java/net/minecraft/src/MovingObjectPosition.java similarity index 100% rename from source/net/minecraft/src/MovingObjectPosition.java rename to src/main/java/net/minecraft/src/MovingObjectPosition.java diff --git a/source/net/minecraft/src/NBTBase.java b/src/main/java/net/minecraft/src/NBTBase.java similarity index 100% rename from source/net/minecraft/src/NBTBase.java rename to src/main/java/net/minecraft/src/NBTBase.java diff --git a/source/net/minecraft/src/NBTTagByte.java b/src/main/java/net/minecraft/src/NBTTagByte.java similarity index 100% rename from source/net/minecraft/src/NBTTagByte.java rename to src/main/java/net/minecraft/src/NBTTagByte.java diff --git a/source/net/minecraft/src/NBTTagByteArray.java b/src/main/java/net/minecraft/src/NBTTagByteArray.java similarity index 100% rename from source/net/minecraft/src/NBTTagByteArray.java rename to src/main/java/net/minecraft/src/NBTTagByteArray.java diff --git a/source/net/minecraft/src/NBTTagCompound.java b/src/main/java/net/minecraft/src/NBTTagCompound.java similarity index 100% rename from source/net/minecraft/src/NBTTagCompound.java rename to src/main/java/net/minecraft/src/NBTTagCompound.java diff --git a/source/net/minecraft/src/NBTTagDouble.java b/src/main/java/net/minecraft/src/NBTTagDouble.java similarity index 100% rename from source/net/minecraft/src/NBTTagDouble.java rename to src/main/java/net/minecraft/src/NBTTagDouble.java diff --git a/source/net/minecraft/src/NBTTagEnd.java b/src/main/java/net/minecraft/src/NBTTagEnd.java similarity index 100% rename from source/net/minecraft/src/NBTTagEnd.java rename to src/main/java/net/minecraft/src/NBTTagEnd.java diff --git a/source/net/minecraft/src/NBTTagFloat.java b/src/main/java/net/minecraft/src/NBTTagFloat.java similarity index 100% rename from source/net/minecraft/src/NBTTagFloat.java rename to src/main/java/net/minecraft/src/NBTTagFloat.java diff --git a/source/net/minecraft/src/NBTTagInt.java b/src/main/java/net/minecraft/src/NBTTagInt.java similarity index 100% rename from source/net/minecraft/src/NBTTagInt.java rename to src/main/java/net/minecraft/src/NBTTagInt.java diff --git a/source/net/minecraft/src/NBTTagList.java b/src/main/java/net/minecraft/src/NBTTagList.java similarity index 100% rename from source/net/minecraft/src/NBTTagList.java rename to src/main/java/net/minecraft/src/NBTTagList.java diff --git a/source/net/minecraft/src/NBTTagLong.java b/src/main/java/net/minecraft/src/NBTTagLong.java similarity index 100% rename from source/net/minecraft/src/NBTTagLong.java rename to src/main/java/net/minecraft/src/NBTTagLong.java diff --git a/source/net/minecraft/src/NBTTagShort.java b/src/main/java/net/minecraft/src/NBTTagShort.java similarity index 100% rename from source/net/minecraft/src/NBTTagShort.java rename to src/main/java/net/minecraft/src/NBTTagShort.java diff --git a/source/net/minecraft/src/NBTTagString.java b/src/main/java/net/minecraft/src/NBTTagString.java similarity index 100% rename from source/net/minecraft/src/NBTTagString.java rename to src/main/java/net/minecraft/src/NBTTagString.java diff --git a/source/net/minecraft/src/NextTickListEntry.java b/src/main/java/net/minecraft/src/NextTickListEntry.java similarity index 100% rename from source/net/minecraft/src/NextTickListEntry.java rename to src/main/java/net/minecraft/src/NextTickListEntry.java diff --git a/source/net/minecraft/src/NibbleArray.java b/src/main/java/net/minecraft/src/NibbleArray.java similarity index 100% rename from source/net/minecraft/src/NibbleArray.java rename to src/main/java/net/minecraft/src/NibbleArray.java diff --git a/source/net/minecraft/src/NoiseGenerator.java b/src/main/java/net/minecraft/src/NoiseGenerator.java similarity index 100% rename from source/net/minecraft/src/NoiseGenerator.java rename to src/main/java/net/minecraft/src/NoiseGenerator.java diff --git a/source/net/minecraft/src/NoiseGeneratorOctaves.java b/src/main/java/net/minecraft/src/NoiseGeneratorOctaves.java similarity index 100% rename from source/net/minecraft/src/NoiseGeneratorOctaves.java rename to src/main/java/net/minecraft/src/NoiseGeneratorOctaves.java diff --git a/source/net/minecraft/src/NoiseGeneratorPerlin.java b/src/main/java/net/minecraft/src/NoiseGeneratorPerlin.java similarity index 100% rename from source/net/minecraft/src/NoiseGeneratorPerlin.java rename to src/main/java/net/minecraft/src/NoiseGeneratorPerlin.java diff --git a/source/net/minecraft/src/OSMap.java b/src/main/java/net/minecraft/src/OSMap.java similarity index 100% rename from source/net/minecraft/src/OSMap.java rename to src/main/java/net/minecraft/src/OSMap.java diff --git a/source/net/minecraft/src/OSMapIsom.java b/src/main/java/net/minecraft/src/OSMapIsom.java similarity index 100% rename from source/net/minecraft/src/OSMapIsom.java rename to src/main/java/net/minecraft/src/OSMapIsom.java diff --git a/src/net/minecraft/src/PanelCrashReport.java b/src/main/java/net/minecraft/src/PanelCrashReport.java similarity index 84% rename from src/net/minecraft/src/PanelCrashReport.java rename to src/main/java/net/minecraft/src/PanelCrashReport.java index 59d6613..c26bc59 100644 --- a/src/net/minecraft/src/PanelCrashReport.java +++ b/src/main/java/net/minecraft/src/PanelCrashReport.java @@ -9,7 +9,6 @@ import java.io.PrintWriter; import java.io.StringWriter; import java.text.SimpleDateFormat; import java.util.Date; -import org.lwjgl.Sys; import org.lwjgl.opengl.GL11; public class PanelCrashReport extends Panel { @@ -27,11 +26,11 @@ public class PanelCrashReport extends Panel { var5 = var5 + "\n"; var5 = var5 + "Minecraft: Minecraft Infdev\n"; var5 = var5 + "OS: " + System.getProperty("os.name") + " (" + System.getProperty("os.arch") + ") version " + System.getProperty("os.version") + "\n"; - var5 = var5 + "Java: " + System.getProperty("java.version") + ", " + System.getProperty("java.vendor") + "\n"; - var5 = var5 + "VM: " + System.getProperty("java.vm.name") + " (" + System.getProperty("java.vm.info") + "), " + System.getProperty("java.vm.vendor") + "\n"; - var5 = var5 + "LWJGL: " + Sys.getVersion() + "\n"; - var4 = GL11.glGetString(GL11.GL_VENDOR); - var5 = var5 + "OpenGL: " + GL11.glGetString(GL11.GL_RENDERER) + " version " + GL11.glGetString(GL11.GL_VERSION) + ", " + GL11.glGetString(GL11.GL_VENDOR) + "\n"; + var5 = var5 + "Java: " + "1.8" + ", " + "JDK (Java Development Kit)" + "\n"; + var5 = var5 + "VM: " + "OpenGL Desktop Emulator" + " (" + "WebGL 2.0" + "), " + "\n"; + var5 = var5 + "WebGL: " + "2.0" + "\n"; + var4 = GL11.gluErrorString(GL11.GL_VENDOR); + var5 = var5 + "OpenGL: " + GL11.gluErrorString(GL11.GL_RENDERER) + " version " + GL11.gluErrorString(GL11.GL_VERSION) + ", " + GL11.gluErrorString(GL11.GL_VENDOR) + "\n"; } catch (Throwable var8) { var5 = var5 + "[failed to get system properties]\n"; } diff --git a/source/net/minecraft/src/Path.java b/src/main/java/net/minecraft/src/Path.java similarity index 100% rename from source/net/minecraft/src/Path.java rename to src/main/java/net/minecraft/src/Path.java diff --git a/source/net/minecraft/src/PathEntity.java b/src/main/java/net/minecraft/src/PathEntity.java similarity index 100% rename from source/net/minecraft/src/PathEntity.java rename to src/main/java/net/minecraft/src/PathEntity.java diff --git a/source/net/minecraft/src/PathPoint.java b/src/main/java/net/minecraft/src/PathPoint.java similarity index 100% rename from source/net/minecraft/src/PathPoint.java rename to src/main/java/net/minecraft/src/PathPoint.java diff --git a/source/net/minecraft/src/Pathfinder.java b/src/main/java/net/minecraft/src/Pathfinder.java similarity index 100% rename from source/net/minecraft/src/Pathfinder.java rename to src/main/java/net/minecraft/src/Pathfinder.java diff --git a/source/net/minecraft/src/PlayerController.java b/src/main/java/net/minecraft/src/PlayerController.java similarity index 100% rename from source/net/minecraft/src/PlayerController.java rename to src/main/java/net/minecraft/src/PlayerController.java diff --git a/source/net/minecraft/src/PlayerControllerCreative.java b/src/main/java/net/minecraft/src/PlayerControllerCreative.java similarity index 100% rename from source/net/minecraft/src/PlayerControllerCreative.java rename to src/main/java/net/minecraft/src/PlayerControllerCreative.java diff --git a/source/net/minecraft/src/PlayerControllerSP.java b/src/main/java/net/minecraft/src/PlayerControllerSP.java similarity index 100% rename from source/net/minecraft/src/PlayerControllerSP.java rename to src/main/java/net/minecraft/src/PlayerControllerSP.java diff --git a/source/net/minecraft/src/PositionTextureVertex.java b/src/main/java/net/minecraft/src/PositionTextureVertex.java similarity index 100% rename from source/net/minecraft/src/PositionTextureVertex.java rename to src/main/java/net/minecraft/src/PositionTextureVertex.java diff --git a/source/net/minecraft/src/RecipeSorter.java b/src/main/java/net/minecraft/src/RecipeSorter.java similarity index 100% rename from source/net/minecraft/src/RecipeSorter.java rename to src/main/java/net/minecraft/src/RecipeSorter.java diff --git a/source/net/minecraft/src/RecipesArmor.java b/src/main/java/net/minecraft/src/RecipesArmor.java similarity index 100% rename from source/net/minecraft/src/RecipesArmor.java rename to src/main/java/net/minecraft/src/RecipesArmor.java diff --git a/source/net/minecraft/src/RecipesCrafting.java b/src/main/java/net/minecraft/src/RecipesCrafting.java similarity index 100% rename from source/net/minecraft/src/RecipesCrafting.java rename to src/main/java/net/minecraft/src/RecipesCrafting.java diff --git a/source/net/minecraft/src/RecipesFood.java b/src/main/java/net/minecraft/src/RecipesFood.java similarity index 100% rename from source/net/minecraft/src/RecipesFood.java rename to src/main/java/net/minecraft/src/RecipesFood.java diff --git a/source/net/minecraft/src/RecipesIngots.java b/src/main/java/net/minecraft/src/RecipesIngots.java similarity index 100% rename from source/net/minecraft/src/RecipesIngots.java rename to src/main/java/net/minecraft/src/RecipesIngots.java diff --git a/source/net/minecraft/src/RecipesTools.java b/src/main/java/net/minecraft/src/RecipesTools.java similarity index 100% rename from source/net/minecraft/src/RecipesTools.java rename to src/main/java/net/minecraft/src/RecipesTools.java diff --git a/source/net/minecraft/src/RecipesWeapons.java b/src/main/java/net/minecraft/src/RecipesWeapons.java similarity index 100% rename from source/net/minecraft/src/RecipesWeapons.java rename to src/main/java/net/minecraft/src/RecipesWeapons.java diff --git a/source/net/minecraft/src/Render.java b/src/main/java/net/minecraft/src/Render.java similarity index 100% rename from source/net/minecraft/src/Render.java rename to src/main/java/net/minecraft/src/Render.java diff --git a/source/net/minecraft/src/RenderArrow.java b/src/main/java/net/minecraft/src/RenderArrow.java similarity index 100% rename from source/net/minecraft/src/RenderArrow.java rename to src/main/java/net/minecraft/src/RenderArrow.java diff --git a/source/net/minecraft/src/RenderBlocks.java b/src/main/java/net/minecraft/src/RenderBlocks.java similarity index 100% rename from source/net/minecraft/src/RenderBlocks.java rename to src/main/java/net/minecraft/src/RenderBlocks.java diff --git a/source/net/minecraft/src/RenderCreeper.java b/src/main/java/net/minecraft/src/RenderCreeper.java similarity index 100% rename from source/net/minecraft/src/RenderCreeper.java rename to src/main/java/net/minecraft/src/RenderCreeper.java diff --git a/source/net/minecraft/src/RenderEngine.java b/src/main/java/net/minecraft/src/RenderEngine.java similarity index 100% rename from source/net/minecraft/src/RenderEngine.java rename to src/main/java/net/minecraft/src/RenderEngine.java diff --git a/source/net/minecraft/src/RenderEntity.java b/src/main/java/net/minecraft/src/RenderEntity.java similarity index 100% rename from source/net/minecraft/src/RenderEntity.java rename to src/main/java/net/minecraft/src/RenderEntity.java diff --git a/source/net/minecraft/src/RenderFallingSand.java b/src/main/java/net/minecraft/src/RenderFallingSand.java similarity index 100% rename from source/net/minecraft/src/RenderFallingSand.java rename to src/main/java/net/minecraft/src/RenderFallingSand.java diff --git a/source/net/minecraft/src/RenderGiantZombie.java b/src/main/java/net/minecraft/src/RenderGiantZombie.java similarity index 100% rename from source/net/minecraft/src/RenderGiantZombie.java rename to src/main/java/net/minecraft/src/RenderGiantZombie.java diff --git a/source/net/minecraft/src/RenderGlobal.java b/src/main/java/net/minecraft/src/RenderGlobal.java similarity index 90% rename from source/net/minecraft/src/RenderGlobal.java rename to src/main/java/net/minecraft/src/RenderGlobal.java index 2de314c..bf0c3bd 100644 --- a/source/net/minecraft/src/RenderGlobal.java +++ b/src/main/java/net/minecraft/src/RenderGlobal.java @@ -6,9 +6,7 @@ import java.util.Arrays; import java.util.Collections; import java.util.List; import java.util.Random; -import org.lwjgl.opengl.ARBOcclusionQuery; import org.lwjgl.opengl.GL11; -import org.lwjgl.opengl.GL15; public class RenderGlobal implements IWorldAccess { public List tileEntities = new ArrayList(); @@ -23,8 +21,8 @@ public class RenderGlobal implements IWorldAccess { private int glRenderListBase; private Minecraft mc; private RenderBlocks globalRenderBlocks; - private IntBuffer glOcclusionQueryBase; - private boolean occlusionEnabled = false; + //private IntBuffer glOcclusionQueryBase; + //private boolean occlusionEnabled = false; private int cloudTickCounter = 0; private int starGLCallList; private int glSkyList; @@ -61,15 +59,15 @@ public class RenderGlobal implements IWorldAccess { this.renderEngine = var2; byte var3 = 64; this.glRenderListBase = GLAllocation.generateDisplayLists(var3 * var3 * var3 * 3); - this.occlusionEnabled = var1.getOpenGlCapsChecker().checkARBOcclusion(); - if(this.occlusionEnabled) { - this.occlusionResult.clear(); - this.glOcclusionQueryBase = GLAllocation.createIntBuffer(var3 * var3 * var3); - this.glOcclusionQueryBase.clear(); - this.glOcclusionQueryBase.position(0); - this.glOcclusionQueryBase.limit(var3 * var3 * var3); - ARBOcclusionQuery.glGenQueriesARB(this.glOcclusionQueryBase); - } +// this.occlusionEnabled = var1.getOpenGlCapsChecker().checkARBOcclusion(); +// if(this.occlusionEnabled) { +// this.occlusionResult.clear(); +// this.glOcclusionQueryBase = GLAllocation.createIntBuffer(var3 * var3 * var3); +// this.glOcclusionQueryBase.clear(); +// this.glOcclusionQueryBase.position(0); +// this.glOcclusionQueryBase.limit(var3 * var3 * var3); +// ARBOcclusionQuery.glGenQueriesARB(this.glOcclusionQueryBase); +// } this.starGLCallList = GLAllocation.generateDisplayLists(3); GL11.glPushMatrix(); @@ -225,9 +223,9 @@ public class RenderGlobal implements IWorldAccess { } this.worldRenderers[(var6 * this.renderChunksTall + var5) * this.renderChunksWide + var4] = new WorldRenderer(this.theWorld, this.tileEntities, var4 * 16, var5 * 16, var6 * 16, 16, this.glRenderListBase + var2); - if(this.occlusionEnabled) { - this.worldRenderers[(var6 * this.renderChunksTall + var5) * this.renderChunksWide + var4].glOcclusionQuery = this.glOcclusionQueryBase.get(var3); - } +// if(this.occlusionEnabled) { +// this.worldRenderers[(var6 * this.renderChunksTall + var5) * this.renderChunksWide + var4].glOcclusionQuery = this.glOcclusionQueryBase.get(var3); +// } this.worldRenderers[(var6 * this.renderChunksTall + var5) * this.renderChunksWide + var4].isWaitingOnOcclusionQuery = false; this.worldRenderers[(var6 * this.renderChunksTall + var5) * this.renderChunksWide + var4].isVisible = true; @@ -386,101 +384,101 @@ public class RenderGlobal implements IWorldAccess { byte var17 = 0; int var33; - if(this.occlusionEnabled && !this.mc.gameSettings.anaglyph && var2 == 0) { - byte var18 = 0; - int var19 = 16; - this.checkOcclusionQueryResult(var18, var19); - - for(int var20 = var18; var20 < var19; ++var20) { - this.sortedWorldRenderers[var20].isVisible = true; - } - - var33 = var17 + this.renderSortedRenderers(var18, var19, var2, var3); - - do { - int var34 = var19; - var19 *= 2; - if(var19 > this.sortedWorldRenderers.length) { - var19 = this.sortedWorldRenderers.length; - } - - GL11.glDisable(GL11.GL_TEXTURE_2D); - GL11.glDisable(GL11.GL_LIGHTING); - GL11.glDisable(GL11.GL_ALPHA_TEST); - GL11.glDisable(GL11.GL_FOG); - GL11.glColorMask(false, false, false, false); - GL11.glDepthMask(false); - this.checkOcclusionQueryResult(var34, var19); - GL11.glPushMatrix(); - float var35 = 0.0F; - float var21 = 0.0F; - float var22 = 0.0F; - - for(int var23 = var34; var23 < var19; ++var23) { - if(this.sortedWorldRenderers[var23].skipAllRenderPasses()) { - this.sortedWorldRenderers[var23].isInFrustum = false; - } else { - if(!this.sortedWorldRenderers[var23].isInFrustum) { - this.sortedWorldRenderers[var23].isVisible = true; - } - - if(this.sortedWorldRenderers[var23].isInFrustum && !this.sortedWorldRenderers[var23].isWaitingOnOcclusionQuery) { - float var24 = MathHelper.sqrt_float(this.sortedWorldRenderers[var23].distanceToEntitySquared(var1)); - int var25 = (int)(1.0F + var24 / 128.0F); - if(this.cloudTickCounter % var25 == var23 % var25) { - WorldRenderer var26 = this.sortedWorldRenderers[var23]; - float var27 = (float)((double)var26.posXMinus - var5); - float var28 = (float)((double)var26.posYMinus - var7); - float var29 = (float)((double)var26.posZMinus - var9); - float var30 = var27 - var35; - float var31 = var28 - var21; - float var32 = var29 - var22; - if(var30 != 0.0F || var31 != 0.0F || var32 != 0.0F) { - GL11.glTranslatef(var30, var31, var32); - var35 += var30; - var21 += var31; - var22 += var32; - } - - ARBOcclusionQuery.glBeginQueryARB(GL15.GL_SAMPLES_PASSED, this.sortedWorldRenderers[var23].glOcclusionQuery); - this.sortedWorldRenderers[var23].callOcclusionQueryList(); - ARBOcclusionQuery.glEndQueryARB(GL15.GL_SAMPLES_PASSED); - this.sortedWorldRenderers[var23].isWaitingOnOcclusionQuery = true; - } - } - } - } - - GL11.glPopMatrix(); - GL11.glColorMask(true, true, true, true); - GL11.glDepthMask(true); - GL11.glEnable(GL11.GL_TEXTURE_2D); - GL11.glEnable(GL11.GL_ALPHA_TEST); - GL11.glEnable(GL11.GL_FOG); - var33 += this.renderSortedRenderers(var34, var19, var2, var3); - } while(var19 < this.sortedWorldRenderers.length); - } else { +// if(this.occlusionEnabled && !this.mc.gameSettings.anaglyph && var2 == 0) { +// byte var18 = 0; +// int var19 = 16; +// this.checkOcclusionQueryResult(var18, var19); +// +// for(int var20 = var18; var20 < var19; ++var20) { +// this.sortedWorldRenderers[var20].isVisible = true; +// } +// +// var33 = var17 + this.renderSortedRenderers(var18, var19, var2, var3); +// +// do { +// int var34 = var19; +// var19 *= 2; +// if(var19 > this.sortedWorldRenderers.length) { +// var19 = this.sortedWorldRenderers.length; +// } +// +// GL11.glDisable(GL11.GL_TEXTURE_2D); +// GL11.glDisable(GL11.GL_LIGHTING); +// GL11.glDisable(GL11.GL_ALPHA_TEST); +// GL11.glDisable(GL11.GL_FOG); +// GL11.glColorMask(false, false, false, false); +// GL11.glDepthMask(false); +// this.checkOcclusionQueryResult(var34, var19); +// GL11.glPushMatrix(); +// float var35 = 0.0F; +// float var21 = 0.0F; +// float var22 = 0.0F; +// +// for(int var23 = var34; var23 < var19; ++var23) { +// if(this.sortedWorldRenderers[var23].skipAllRenderPasses()) { +// this.sortedWorldRenderers[var23].isInFrustum = false; +// } else { +// if(!this.sortedWorldRenderers[var23].isInFrustum) { +// this.sortedWorldRenderers[var23].isVisible = true; +// } +// +// if(this.sortedWorldRenderers[var23].isInFrustum && !this.sortedWorldRenderers[var23].isWaitingOnOcclusionQuery) { +// float var24 = MathHelper.sqrt_float(this.sortedWorldRenderers[var23].distanceToEntitySquared(var1)); +// int var25 = (int)(1.0F + var24 / 128.0F); +// if(this.cloudTickCounter % var25 == var23 % var25) { +// WorldRenderer var26 = this.sortedWorldRenderers[var23]; +// float var27 = (float)((double)var26.posXMinus - var5); +// float var28 = (float)((double)var26.posYMinus - var7); +// float var29 = (float)((double)var26.posZMinus - var9); +// float var30 = var27 - var35; +// float var31 = var28 - var21; +// float var32 = var29 - var22; +// if(var30 != 0.0F || var31 != 0.0F || var32 != 0.0F) { +// GL11.glTranslatef(var30, var31, var32); +// var35 += var30; +// var21 += var31; +// var22 += var32; +// } +// +// ARBOcclusionQuery.glBeginQueryARB(GL15.GL_SAMPLES_PASSED, this.sortedWorldRenderers[var23].glOcclusionQuery); +// this.sortedWorldRenderers[var23].callOcclusionQueryList(); +// ARBOcclusionQuery.glEndQueryARB(GL15.GL_SAMPLES_PASSED); +// this.sortedWorldRenderers[var23].isWaitingOnOcclusionQuery = true; +// } +// } +// } +// } +// +// GL11.glPopMatrix(); +// GL11.glColorMask(true, true, true, true); +// GL11.glDepthMask(true); +// GL11.glEnable(GL11.GL_TEXTURE_2D); +// GL11.glEnable(GL11.GL_ALPHA_TEST); +// GL11.glEnable(GL11.GL_FOG); +// var33 += this.renderSortedRenderers(var34, var19, var2, var3); +// } while(var19 < this.sortedWorldRenderers.length); +// } else { var33 = var17 + this.renderSortedRenderers(0, this.sortedWorldRenderers.length, var2, var3); - } + //} return var33; } - private void checkOcclusionQueryResult(int var1, int var2) { - for(int var3 = var1; var3 < var2; ++var3) { - if(this.sortedWorldRenderers[var3].isWaitingOnOcclusionQuery) { - this.occlusionResult.clear(); - ARBOcclusionQuery.glGetQueryObjectuARB(this.sortedWorldRenderers[var3].glOcclusionQuery, GL15.GL_QUERY_RESULT_AVAILABLE, this.occlusionResult); - if(this.occlusionResult.get(0) != 0) { - this.sortedWorldRenderers[var3].isWaitingOnOcclusionQuery = false; - this.occlusionResult.clear(); - ARBOcclusionQuery.glGetQueryObjectuARB(this.sortedWorldRenderers[var3].glOcclusionQuery, GL15.GL_QUERY_RESULT, this.occlusionResult); - this.sortedWorldRenderers[var3].isVisible = this.occlusionResult.get(0) != 0; - } - } - } - - } +// private void checkOcclusionQueryResult(int var1, int var2) { +// for(int var3 = var1; var3 < var2; ++var3) { +// if(this.sortedWorldRenderers[var3].isWaitingOnOcclusionQuery) { +// this.occlusionResult.clear(); +// ARBOcclusionQuery.glGetQueryObjectuARB(this.sortedWorldRenderers[var3].glOcclusionQuery, GL15.GL_QUERY_RESULT_AVAILABLE, this.occlusionResult); +// if(this.occlusionResult.get(0) != 0) { +// this.sortedWorldRenderers[var3].isWaitingOnOcclusionQuery = false; +// this.occlusionResult.clear(); +// ARBOcclusionQuery.glGetQueryObjectuARB(this.sortedWorldRenderers[var3].glOcclusionQuery, GL15.GL_QUERY_RESULT, this.occlusionResult); +// this.sortedWorldRenderers[var3].isVisible = this.occlusionResult.get(0) != 0; +// } +// } +// } +// +// } private int renderSortedRenderers(int var1, int var2, int var3, double var4) { this.glRenderLists.clear(); @@ -493,8 +491,6 @@ public class RenderGlobal implements IWorldAccess { ++this.renderersSkippingRenderPass; } else if(!this.sortedWorldRenderers[var7].isInFrustum) { ++this.renderersBeingClipped; - } else if(this.occlusionEnabled && !this.sortedWorldRenderers[var7].isVisible) { - ++this.renderersBeingOccluded; } else { ++this.renderersBeingRendered; } diff --git a/source/net/minecraft/src/RenderHelper.java b/src/main/java/net/minecraft/src/RenderHelper.java similarity index 100% rename from source/net/minecraft/src/RenderHelper.java rename to src/main/java/net/minecraft/src/RenderHelper.java diff --git a/source/net/minecraft/src/RenderItem.java b/src/main/java/net/minecraft/src/RenderItem.java similarity index 100% rename from source/net/minecraft/src/RenderItem.java rename to src/main/java/net/minecraft/src/RenderItem.java diff --git a/source/net/minecraft/src/RenderList.java b/src/main/java/net/minecraft/src/RenderList.java similarity index 100% rename from source/net/minecraft/src/RenderList.java rename to src/main/java/net/minecraft/src/RenderList.java diff --git a/source/net/minecraft/src/RenderLiving.java b/src/main/java/net/minecraft/src/RenderLiving.java similarity index 100% rename from source/net/minecraft/src/RenderLiving.java rename to src/main/java/net/minecraft/src/RenderLiving.java diff --git a/source/net/minecraft/src/RenderManager.java b/src/main/java/net/minecraft/src/RenderManager.java similarity index 100% rename from source/net/minecraft/src/RenderManager.java rename to src/main/java/net/minecraft/src/RenderManager.java diff --git a/source/net/minecraft/src/RenderMinecart.java b/src/main/java/net/minecraft/src/RenderMinecart.java similarity index 100% rename from source/net/minecraft/src/RenderMinecart.java rename to src/main/java/net/minecraft/src/RenderMinecart.java diff --git a/source/net/minecraft/src/RenderPainting.java b/src/main/java/net/minecraft/src/RenderPainting.java similarity index 100% rename from source/net/minecraft/src/RenderPainting.java rename to src/main/java/net/minecraft/src/RenderPainting.java diff --git a/source/net/minecraft/src/RenderPig.java b/src/main/java/net/minecraft/src/RenderPig.java similarity index 100% rename from source/net/minecraft/src/RenderPig.java rename to src/main/java/net/minecraft/src/RenderPig.java diff --git a/source/net/minecraft/src/RenderPlayer.java b/src/main/java/net/minecraft/src/RenderPlayer.java similarity index 100% rename from source/net/minecraft/src/RenderPlayer.java rename to src/main/java/net/minecraft/src/RenderPlayer.java diff --git a/source/net/minecraft/src/RenderSheep.java b/src/main/java/net/minecraft/src/RenderSheep.java similarity index 100% rename from source/net/minecraft/src/RenderSheep.java rename to src/main/java/net/minecraft/src/RenderSheep.java diff --git a/source/net/minecraft/src/RenderSorter.java b/src/main/java/net/minecraft/src/RenderSorter.java similarity index 100% rename from source/net/minecraft/src/RenderSorter.java rename to src/main/java/net/minecraft/src/RenderSorter.java diff --git a/source/net/minecraft/src/RenderSpider.java b/src/main/java/net/minecraft/src/RenderSpider.java similarity index 100% rename from source/net/minecraft/src/RenderSpider.java rename to src/main/java/net/minecraft/src/RenderSpider.java diff --git a/source/net/minecraft/src/RenderTNTPrimed.java b/src/main/java/net/minecraft/src/RenderTNTPrimed.java similarity index 100% rename from source/net/minecraft/src/RenderTNTPrimed.java rename to src/main/java/net/minecraft/src/RenderTNTPrimed.java diff --git a/source/net/minecraft/src/ScaledResolution.java b/src/main/java/net/minecraft/src/ScaledResolution.java similarity index 100% rename from source/net/minecraft/src/ScaledResolution.java rename to src/main/java/net/minecraft/src/ScaledResolution.java diff --git a/source/net/minecraft/src/Session.java b/src/main/java/net/minecraft/src/Session.java similarity index 100% rename from source/net/minecraft/src/Session.java rename to src/main/java/net/minecraft/src/Session.java diff --git a/source/net/minecraft/src/SignModel.java b/src/main/java/net/minecraft/src/SignModel.java similarity index 100% rename from source/net/minecraft/src/SignModel.java rename to src/main/java/net/minecraft/src/SignModel.java diff --git a/source/net/minecraft/src/Slot.java b/src/main/java/net/minecraft/src/Slot.java similarity index 100% rename from source/net/minecraft/src/Slot.java rename to src/main/java/net/minecraft/src/Slot.java diff --git a/source/net/minecraft/src/SlotArmor.java b/src/main/java/net/minecraft/src/SlotArmor.java similarity index 100% rename from source/net/minecraft/src/SlotArmor.java rename to src/main/java/net/minecraft/src/SlotArmor.java diff --git a/source/net/minecraft/src/SlotCrafting.java b/src/main/java/net/minecraft/src/SlotCrafting.java similarity index 100% rename from source/net/minecraft/src/SlotCrafting.java rename to src/main/java/net/minecraft/src/SlotCrafting.java diff --git a/source/net/minecraft/src/SoundManager.java b/src/main/java/net/minecraft/src/SoundManager.java similarity index 100% rename from source/net/minecraft/src/SoundManager.java rename to src/main/java/net/minecraft/src/SoundManager.java diff --git a/source/net/minecraft/src/SoundPool.java b/src/main/java/net/minecraft/src/SoundPool.java similarity index 100% rename from source/net/minecraft/src/SoundPool.java rename to src/main/java/net/minecraft/src/SoundPool.java diff --git a/source/net/minecraft/src/SoundPoolEntry.java b/src/main/java/net/minecraft/src/SoundPoolEntry.java similarity index 100% rename from source/net/minecraft/src/SoundPoolEntry.java rename to src/main/java/net/minecraft/src/SoundPoolEntry.java diff --git a/source/net/minecraft/src/SpawnerAnimals.java b/src/main/java/net/minecraft/src/SpawnerAnimals.java similarity index 100% rename from source/net/minecraft/src/SpawnerAnimals.java rename to src/main/java/net/minecraft/src/SpawnerAnimals.java diff --git a/source/net/minecraft/src/SpawnerMonsters.java b/src/main/java/net/minecraft/src/SpawnerMonsters.java similarity index 100% rename from source/net/minecraft/src/SpawnerMonsters.java rename to src/main/java/net/minecraft/src/SpawnerMonsters.java diff --git a/source/net/minecraft/src/StepSound.java b/src/main/java/net/minecraft/src/StepSound.java similarity index 100% rename from source/net/minecraft/src/StepSound.java rename to src/main/java/net/minecraft/src/StepSound.java diff --git a/source/net/minecraft/src/StepSoundGlass.java b/src/main/java/net/minecraft/src/StepSoundGlass.java similarity index 100% rename from source/net/minecraft/src/StepSoundGlass.java rename to src/main/java/net/minecraft/src/StepSoundGlass.java diff --git a/source/net/minecraft/src/StepSoundSand.java b/src/main/java/net/minecraft/src/StepSoundSand.java similarity index 100% rename from source/net/minecraft/src/StepSoundSand.java rename to src/main/java/net/minecraft/src/StepSoundSand.java diff --git a/source/net/minecraft/src/TerrainTextureManager.java b/src/main/java/net/minecraft/src/TerrainTextureManager.java similarity index 100% rename from source/net/minecraft/src/TerrainTextureManager.java rename to src/main/java/net/minecraft/src/TerrainTextureManager.java diff --git a/src/main/java/net/minecraft/src/Tessellator.java b/src/main/java/net/minecraft/src/Tessellator.java new file mode 100644 index 0000000..d326d95 --- /dev/null +++ b/src/main/java/net/minecraft/src/Tessellator.java @@ -0,0 +1,344 @@ +package net.minecraft.src; + +import org.lwjgl.opengl.GL11; +import org.teavm.jso.typedarrays.ArrayBuffer; +import org.teavm.jso.typedarrays.Float32Array; +import org.teavm.jso.typedarrays.Int32Array; + +public class Tessellator { + + /** The byte buffer used for GL allocation. */ + private Int32Array intBuffer; + private Float32Array floatBuffer; + + /** + * The number of vertices to be drawn in the next draw call. Reset to 0 between + * draw calls. + */ + private int vertexCount = 0; + + /** The first coordinate to be used for the texture. */ + private float textureU; + + /** The second coordinate to be used for the texture. */ + private float textureV; + + /** The color (RGBA) value to be used for the following draw call. */ + private int color; + + /** + * Whether the current draw object for this tessellator has color values. + */ + private boolean hasColor = false; + + /** + * Whether the current draw object for this tessellator has texture coordinates. + */ + private boolean hasTexture = false; + + /** + * Whether the current draw object for this tessellator has normal values. + */ + private boolean hasNormals = false; + + /** The index into the raw buffer to be used for the next data. */ + private int rawBufferIndex = 0; + + /** + * The number of vertices manually added to the given draw call. This differs + * from vertexCount because it adds extra vertices when converting quads to + * triangles. + */ + private int addedVertices = 0; + + /** Disables all color information for the following draw call. */ + private boolean isColorDisabled = false; + + /** The draw mode currently being used by the tessellator. */ + private int drawMode; + + /** + * An offset to be applied along the x-axis for all vertices in this draw call. + */ + private double xOffset; + + /** + * An offset to be applied along the y-axis for all vertices in this draw call. + */ + private double yOffset; + + /** + * An offset to be applied along the z-axis for all vertices in this draw call. + */ + private double zOffset; + + /** The normal to be applied to the face being drawn. */ + private int normal; + + /** The static instance of the Tessellator. */ + public static final Tessellator instance = new Tessellator(525000); + + /** Whether this tessellator is currently in draw mode. */ + private boolean isDrawing = false; + + /** Whether we are currently using VBO or not. */ + private boolean useVBO = false; + + /** The size of the buffers used (in integers). */ + private int bufferSize; + + private Tessellator(int par1) { + this.bufferSize = par1; + ArrayBuffer a = ArrayBuffer.create(par1 * 4); + this.intBuffer = Int32Array.create(a); + this.floatBuffer = Float32Array.create(a); + } + + /** + * Draws the data set up in this tessellator and resets the state to prepare for + * new drawing. + */ + public int draw() { + if (!this.isDrawing) { + return 0; + } else { + this.isDrawing = false; + + if (this.vertexCount > 0) { + + if (this.hasTexture) { + GL11.glEnableVertexAttrib(GL11.GL_TEXTURE_COORD_ARRAY); + } + + if (this.hasColor) { + GL11.glEnableVertexAttrib(GL11.GL_COLOR_ARRAY); + } + + if (this.hasNormals) { + GL11.glEnableVertexAttrib(GL11.GL_NORMAL_ARRAY); + } + + GL11.glDrawArrays(this.drawMode, 0, this.vertexCount, Int32Array.create(intBuffer.getBuffer(), 0, this.vertexCount * 7)); + + if (this.hasTexture) { + GL11.glDisableVertexAttrib(GL11.GL_TEXTURE_COORD_ARRAY); + } + + if (this.hasColor) { + GL11.glDisableVertexAttrib(GL11.GL_COLOR_ARRAY); + } + + if (this.hasNormals) { + GL11.glDisableVertexAttrib(GL11.GL_NORMAL_ARRAY); + } + } + + int var1 = this.rawBufferIndex * 4; + this.reset(); + return var1; + } + } + + /** + * Clears the tessellator state in preparation for new drawing. + */ + private void reset() { + this.vertexCount = 0; + //this.byteBuffer.clear(); + this.rawBufferIndex = 0; + this.addedVertices = 0; + } + + /** + * Sets draw mode in the tessellator to draw quads. + */ + public void startDrawingQuads() { + this.startDrawing(GL11.GL_QUADS); + } + + /** + * Resets tessellator state and prepares for drawing (with the specified draw + * mode). + */ + public void startDrawing(int par1) { + if (this.isDrawing) { + this.draw(); + } + this.isDrawing = true; + this.reset(); + this.drawMode = par1; + this.hasNormals = false; + this.hasColor = false; + this.hasTexture = false; + this.isColorDisabled = false; + } + + /** + * Sets the texture coordinates. + */ + public void setTextureUV(double par1, double par3) { + this.hasTexture = true; + this.textureU = (float) par1; + this.textureV = (float) par3; + } + + /** + * Sets the RGB values as specified, converting from floats between 0 and 1 to + * integers from 0-255. + */ + public void setColorOpaque_F(float par1, float par2, float par3) { + this.setColorOpaque((int) (par1 * 255.0F), (int) (par2 * 255.0F), (int) (par3 * 255.0F)); + } + + /** + * Sets the RGBA values for the color, converting from floats between 0 and 1 to + * integers from 0-255. + */ + public void setColorRGBA_F(float par1, float par2, float par3, float par4) { + this.setColorRGBA((int) (par1 * 255.0F), (int) (par2 * 255.0F), (int) (par3 * 255.0F), (int) (par4 * 255.0F)); + } + + /** + * Sets the RGB values as specified, and sets alpha to opaque. + */ + public void setColorOpaque(int par1, int par2, int par3) { + this.setColorRGBA(par1, par2, par3, 255); + } + + /** + * Sets the RGBA values for the color. Also clamps them to 0-255. + */ + public void setColorRGBA(int par1, int par2, int par3, int par4) { + if (!this.isColorDisabled) { + if (par1 > 255) { + par1 = 255; + } + + if (par2 > 255) { + par2 = 255; + } + + if (par3 > 255) { + par3 = 255; + } + + if (par4 > 255) { + par4 = 255; + } + + if (par1 < 0) { + par1 = 0; + } + + if (par2 < 0) { + par2 = 0; + } + + if (par3 < 0) { + par3 = 0; + } + + if (par4 < 0) { + par4 = 0; + } + + this.hasColor = true; + this.color = par4 << 24 | par3 << 16 | par2 << 8 | par1; + } + } + + /** + * Adds a vertex specifying both x,y,z and the texture u,v for it. + */ + public void addVertexWithUV(double par1, double par3, double par5, double par7, double par9) { + this.setTextureUV(par7, par9); + this.addVertex(par1, par3, par5); + } + + /** + * Adds a vertex with the specified x,y,z to the current draw call. It will + * trigger a draw() if the buffer gets full. + */ + public void addVertex(double par1, double par3, double par5) { + if(this.addedVertices > 65534) return; + ++this.addedVertices; + ++this.vertexCount; + + int bufferIndex = this.rawBufferIndex; + Int32Array intBuffer0 = intBuffer; + Float32Array floatBuffer0 = floatBuffer; + + floatBuffer0.set(bufferIndex + 0, (float) (par1 + this.xOffset)); + floatBuffer0.set(bufferIndex + 1, (float) (par3 + this.yOffset)); + floatBuffer0.set(bufferIndex + 2, (float) (par5 + this.zOffset)); + + if (this.hasTexture) { + floatBuffer0.set(bufferIndex + 3, this.textureU); + floatBuffer0.set(bufferIndex + 4, this.textureV); + } + + if (this.hasColor) { + intBuffer0.set(bufferIndex + 5, this.color); + } + + if (this.hasNormals) { + intBuffer0.set(bufferIndex + 6, this.normal); + } + + this.rawBufferIndex += 7; + } + + /** + * Sets the color to the given opaque value (stored as byte values packed in an + * integer). + */ + public void setColorOpaque_I(int par1) { + int var2 = par1 >> 16 & 255; + int var3 = par1 >> 8 & 255; + int var4 = par1 & 255; + this.setColorOpaque(var2, var3, var4); + } + + /** + * Sets the color to the given color (packed as bytes in integer) and alpha + * values. + */ + public void setColorRGBA_I(int par1, int par2) { + int var3 = par1 >> 16 & 255; + int var4 = par1 >> 8 & 255; + int var5 = par1 & 255; + this.setColorRGBA(var3, var4, var5, par2); + } + + /** + * Disables colors for the current draw call. + */ + public void disableColor() { + this.isColorDisabled = true; + } + + /** + * Sets the normal for the current draw call. + */ + public void setNormal(float par1, float par2, float par3) { + GL11.glNormal3f(par1, par2, par3); + } + + /** + * Sets the translation for all vertices in the current draw call. + */ + public void setTranslationD(double par1, double par3, double par5) { + this.xOffset = par1; + this.yOffset = par3; + this.zOffset = par5; + } + + /** + * Offsets the translation for all vertices in the current draw call. + */ + public void setTranslationF(float par1, float par2, float par3) { + this.xOffset += (float) par1; + this.yOffset += (float) par2; + this.zOffset += (float) par3; + } +} \ No newline at end of file diff --git a/source/net/minecraft/src/TextureFX.java b/src/main/java/net/minecraft/src/TextureFX.java similarity index 100% rename from source/net/minecraft/src/TextureFX.java rename to src/main/java/net/minecraft/src/TextureFX.java diff --git a/source/net/minecraft/src/TextureFlamesFX.java b/src/main/java/net/minecraft/src/TextureFlamesFX.java similarity index 100% rename from source/net/minecraft/src/TextureFlamesFX.java rename to src/main/java/net/minecraft/src/TextureFlamesFX.java diff --git a/source/net/minecraft/src/TextureGearsFX.java b/src/main/java/net/minecraft/src/TextureGearsFX.java similarity index 100% rename from source/net/minecraft/src/TextureGearsFX.java rename to src/main/java/net/minecraft/src/TextureGearsFX.java diff --git a/source/net/minecraft/src/TextureLavaFX.java b/src/main/java/net/minecraft/src/TextureLavaFX.java similarity index 100% rename from source/net/minecraft/src/TextureLavaFX.java rename to src/main/java/net/minecraft/src/TextureLavaFX.java diff --git a/source/net/minecraft/src/TextureLavaFlowFX.java b/src/main/java/net/minecraft/src/TextureLavaFlowFX.java similarity index 100% rename from source/net/minecraft/src/TextureLavaFlowFX.java rename to src/main/java/net/minecraft/src/TextureLavaFlowFX.java diff --git a/source/net/minecraft/src/TextureWaterFX.java b/src/main/java/net/minecraft/src/TextureWaterFX.java similarity index 100% rename from source/net/minecraft/src/TextureWaterFX.java rename to src/main/java/net/minecraft/src/TextureWaterFX.java diff --git a/source/net/minecraft/src/TextureWaterFlowFX.java b/src/main/java/net/minecraft/src/TextureWaterFlowFX.java similarity index 100% rename from source/net/minecraft/src/TextureWaterFlowFX.java rename to src/main/java/net/minecraft/src/TextureWaterFlowFX.java diff --git a/source/net/minecraft/src/TexturedQuad.java b/src/main/java/net/minecraft/src/TexturedQuad.java similarity index 100% rename from source/net/minecraft/src/TexturedQuad.java rename to src/main/java/net/minecraft/src/TexturedQuad.java diff --git a/source/net/minecraft/src/ThreadDownloadImage.java b/src/main/java/net/minecraft/src/ThreadDownloadImage.java similarity index 100% rename from source/net/minecraft/src/ThreadDownloadImage.java rename to src/main/java/net/minecraft/src/ThreadDownloadImage.java diff --git a/source/net/minecraft/src/ThreadDownloadImageData.java b/src/main/java/net/minecraft/src/ThreadDownloadImageData.java similarity index 100% rename from source/net/minecraft/src/ThreadDownloadImageData.java rename to src/main/java/net/minecraft/src/ThreadDownloadImageData.java diff --git a/source/net/minecraft/src/ThreadDownloadResources.java b/src/main/java/net/minecraft/src/ThreadDownloadResources.java similarity index 100% rename from source/net/minecraft/src/ThreadDownloadResources.java rename to src/main/java/net/minecraft/src/ThreadDownloadResources.java diff --git a/source/net/minecraft/src/ThreadRunIsoClient.java b/src/main/java/net/minecraft/src/ThreadRunIsoClient.java similarity index 100% rename from source/net/minecraft/src/ThreadRunIsoClient.java rename to src/main/java/net/minecraft/src/ThreadRunIsoClient.java diff --git a/source/net/minecraft/src/ThreadSleepForever.java b/src/main/java/net/minecraft/src/ThreadSleepForever.java similarity index 100% rename from source/net/minecraft/src/ThreadSleepForever.java rename to src/main/java/net/minecraft/src/ThreadSleepForever.java diff --git a/source/net/minecraft/src/TileEntity.java b/src/main/java/net/minecraft/src/TileEntity.java similarity index 100% rename from source/net/minecraft/src/TileEntity.java rename to src/main/java/net/minecraft/src/TileEntity.java diff --git a/source/net/minecraft/src/TileEntityChest.java b/src/main/java/net/minecraft/src/TileEntityChest.java similarity index 100% rename from source/net/minecraft/src/TileEntityChest.java rename to src/main/java/net/minecraft/src/TileEntityChest.java diff --git a/source/net/minecraft/src/TileEntityFurnace.java b/src/main/java/net/minecraft/src/TileEntityFurnace.java similarity index 100% rename from source/net/minecraft/src/TileEntityFurnace.java rename to src/main/java/net/minecraft/src/TileEntityFurnace.java diff --git a/source/net/minecraft/src/TileEntityMobSpawner.java b/src/main/java/net/minecraft/src/TileEntityMobSpawner.java similarity index 100% rename from source/net/minecraft/src/TileEntityMobSpawner.java rename to src/main/java/net/minecraft/src/TileEntityMobSpawner.java diff --git a/source/net/minecraft/src/TileEntityMobSpawnerRenderer.java b/src/main/java/net/minecraft/src/TileEntityMobSpawnerRenderer.java similarity index 100% rename from source/net/minecraft/src/TileEntityMobSpawnerRenderer.java rename to src/main/java/net/minecraft/src/TileEntityMobSpawnerRenderer.java diff --git a/source/net/minecraft/src/TileEntityRenderer.java b/src/main/java/net/minecraft/src/TileEntityRenderer.java similarity index 100% rename from source/net/minecraft/src/TileEntityRenderer.java rename to src/main/java/net/minecraft/src/TileEntityRenderer.java diff --git a/source/net/minecraft/src/TileEntitySign.java b/src/main/java/net/minecraft/src/TileEntitySign.java similarity index 100% rename from source/net/minecraft/src/TileEntitySign.java rename to src/main/java/net/minecraft/src/TileEntitySign.java diff --git a/source/net/minecraft/src/TileEntitySignRenderer.java b/src/main/java/net/minecraft/src/TileEntitySignRenderer.java similarity index 100% rename from source/net/minecraft/src/TileEntitySignRenderer.java rename to src/main/java/net/minecraft/src/TileEntitySignRenderer.java diff --git a/source/net/minecraft/src/TileEntitySpecialRenderer.java b/src/main/java/net/minecraft/src/TileEntitySpecialRenderer.java similarity index 100% rename from source/net/minecraft/src/TileEntitySpecialRenderer.java rename to src/main/java/net/minecraft/src/TileEntitySpecialRenderer.java diff --git a/source/net/minecraft/src/Timer.java b/src/main/java/net/minecraft/src/Timer.java similarity index 100% rename from source/net/minecraft/src/Timer.java rename to src/main/java/net/minecraft/src/Timer.java diff --git a/source/net/minecraft/src/UnexpectedThrowable.java b/src/main/java/net/minecraft/src/UnexpectedThrowable.java similarity index 100% rename from source/net/minecraft/src/UnexpectedThrowable.java rename to src/main/java/net/minecraft/src/UnexpectedThrowable.java diff --git a/source/net/minecraft/src/Vec3D.java b/src/main/java/net/minecraft/src/Vec3D.java similarity index 100% rename from source/net/minecraft/src/Vec3D.java rename to src/main/java/net/minecraft/src/Vec3D.java diff --git a/source/net/minecraft/src/World.java b/src/main/java/net/minecraft/src/World.java similarity index 100% rename from source/net/minecraft/src/World.java rename to src/main/java/net/minecraft/src/World.java diff --git a/source/net/minecraft/src/WorldGenDungeons.java b/src/main/java/net/minecraft/src/WorldGenDungeons.java similarity index 100% rename from source/net/minecraft/src/WorldGenDungeons.java rename to src/main/java/net/minecraft/src/WorldGenDungeons.java diff --git a/source/net/minecraft/src/WorldGenFlowers.java b/src/main/java/net/minecraft/src/WorldGenFlowers.java similarity index 100% rename from source/net/minecraft/src/WorldGenFlowers.java rename to src/main/java/net/minecraft/src/WorldGenFlowers.java diff --git a/source/net/minecraft/src/WorldGenLiquids.java b/src/main/java/net/minecraft/src/WorldGenLiquids.java similarity index 100% rename from source/net/minecraft/src/WorldGenLiquids.java rename to src/main/java/net/minecraft/src/WorldGenLiquids.java diff --git a/source/net/minecraft/src/WorldGenMinable.java b/src/main/java/net/minecraft/src/WorldGenMinable.java similarity index 100% rename from source/net/minecraft/src/WorldGenMinable.java rename to src/main/java/net/minecraft/src/WorldGenMinable.java diff --git a/source/net/minecraft/src/WorldGenTrees.java b/src/main/java/net/minecraft/src/WorldGenTrees.java similarity index 100% rename from source/net/minecraft/src/WorldGenTrees.java rename to src/main/java/net/minecraft/src/WorldGenTrees.java diff --git a/source/net/minecraft/src/WorldGenerator.java b/src/main/java/net/minecraft/src/WorldGenerator.java similarity index 100% rename from source/net/minecraft/src/WorldGenerator.java rename to src/main/java/net/minecraft/src/WorldGenerator.java diff --git a/source/net/minecraft/src/WorldIso.java b/src/main/java/net/minecraft/src/WorldIso.java similarity index 100% rename from source/net/minecraft/src/WorldIso.java rename to src/main/java/net/minecraft/src/WorldIso.java diff --git a/source/net/minecraft/src/WorldRenderer.java b/src/main/java/net/minecraft/src/WorldRenderer.java similarity index 100% rename from source/net/minecraft/src/WorldRenderer.java rename to src/main/java/net/minecraft/src/WorldRenderer.java diff --git a/src/main/java/org/lwjgl/input/Keyboard.java b/src/main/java/org/lwjgl/input/Keyboard.java new file mode 100644 index 0000000..b323046 --- /dev/null +++ b/src/main/java/org/lwjgl/input/Keyboard.java @@ -0,0 +1,31 @@ +package org.lwjgl.input; + +import net.PeytonPlayz585.opengl.LWJGLMain; + +public class Keyboard { + + public static String getKeyName(int keyCode) { + return LWJGLMain.getKeyName(keyCode); + } + + public static boolean next() { + return LWJGLMain.keysNext(); + } + + public static boolean getEventKeyState() { + return LWJGLMain.getEventKeyState(); + } + + public static int getEventKey() { + return LWJGLMain.getEventKey(); + } + + public static char getEventCharacter() { + return LWJGLMain.getEventChar(); + } + + public static void enableRepeatEvents(boolean b) { + LWJGLMain.enableRepeatEvents(b); + } + +} diff --git a/src/main/java/org/lwjgl/input/Mouse.java b/src/main/java/org/lwjgl/input/Mouse.java new file mode 100644 index 0000000..25661fe --- /dev/null +++ b/src/main/java/org/lwjgl/input/Mouse.java @@ -0,0 +1,51 @@ +package org.lwjgl.input; + +import net.PeytonPlayz585.opengl.LWJGLMain; + +public class Mouse { + + public static int getDX() { + return LWJGLMain.mouseGetDX(); + } + + public static int getDY() { + return LWJGLMain.mouseGetDY(); + } + + public static int getX() { + return LWJGLMain.mouseGetY(); + } + + public static int getY() { + return LWJGLMain.mouseGetY(); + } + + public static void setNativeCursor(boolean b) { + LWJGLMain.mouseSetGrabbed(b); + } + + public static void setCursorPosition(int x, int y) { + LWJGLMain.mouseSetCursorPosition(x, y); + } + + public static boolean next() { + return LWJGLMain.mouseNext(); + } + + public static boolean getEventButtonState() { + return LWJGLMain.mouseGetEventButtonState(); + } + + public static int getEventX() { + return LWJGLMain.mouseGetEventX(); + } + + public static int getEventY() { + return LWJGLMain.mouseGetEventY(); + } + + public static int getEventButton() { + return LWJGLMain.mouseGetEventButton(); + } + +} diff --git a/src/main/java/org/lwjgl/opengl/Display.java b/src/main/java/org/lwjgl/opengl/Display.java new file mode 100644 index 0000000..f42d237 --- /dev/null +++ b/src/main/java/org/lwjgl/opengl/Display.java @@ -0,0 +1,13 @@ +package org.lwjgl.opengl; + +import net.PeytonPlayz585.opengl.LWJGLMain; + +public class Display { + public static boolean isActive() { + return LWJGLMain.isFocused(); + } + + public static void update() { + LWJGLMain.updateDisplay(); + } +} diff --git a/src/main/java/org/lwjgl/opengl/GL11.java b/src/main/java/org/lwjgl/opengl/GL11.java new file mode 100644 index 0000000..bf73c2b --- /dev/null +++ b/src/main/java/org/lwjgl/opengl/GL11.java @@ -0,0 +1,1131 @@ +package org.lwjgl.opengl; + +import java.nio.ByteBuffer; +import java.nio.ByteOrder; +import java.nio.FloatBuffer; +import java.nio.IntBuffer; +import java.util.HashMap; + +import net.PeytonPlayz585.minecraft.FixedFunctionShader; +import net.PeytonPlayz585.opengl.*; + +public class GL11 extends LWJGLMain implements RealOpenGLEmuns { + + public static final boolean isWebGL = _wisWebGL(); + + private static final GLObjectMap texObjects = new GLObjectMap(256); + + private static boolean enableTexture2D = false; + private static boolean enableLighting = false; + private static boolean enableAlphaTest = false; + private static float alphaThresh = 0.1f; + + private static boolean isCompilingDisplayList = false; + private static DisplayList compilingDisplayList = null; + + private static boolean enableColorArray = false; + //private static boolean enableNormalArray = false; + private static boolean enableTex0Array = false; + + private static float colorR = 1.0f; + private static float colorG = 1.0f; + private static float colorB = 1.0f; + private static float colorA = 1.0f; + + private static float normalX = 1.0f; + private static float normalY = 0.0f; + private static float normalZ = 0.0f; + + private static float tex0X = 0; + private static float tex0Y = 0; + + private static boolean enableColorMaterial = false; + + private static float fogColorR = 1.0f; + private static float fogColorG = 1.0f; + private static float fogColorB = 1.0f; + private static float fogColorA = 1.0f; + private static int fogMode = 1; + private static boolean fogEnabled = false; + private static boolean fogPremultiply = false; + private static float fogStart = 1.0f; + private static float fogEnd = 1.0f; + private static float fogDensity = 1.0f; + + private static int bytesUploaded = 0; + private static int vertexDrawn = 0; + private static int triangleDrawn = 0; + + private static int matrixMode = GL_MODELVIEW; + + static Matrix4f[] matModelV = new Matrix4f[32]; + static int matModelPointer = 0; + + static Matrix4f[] matProjV = new Matrix4f[6]; + static int matProjPointer = 0; + + static Matrix4f[] matTexV = new Matrix4f[16]; + static int matTexPointer = 0; + + static { + for (int i = 0; i < matModelV.length; ++i) { + matModelV[i] = new Matrix4f(); + } + for (int i = 0; i < matProjV.length; ++i) { + matProjV[i] = new Matrix4f(); + } + for (int i = 0; i < matTexV.length; ++i) { + matTexV[i] = new Matrix4f(); + } + } + + public static void glClearStack() { + matModelV[0].load(matModelV[matModelPointer]); + matModelPointer = 0; + matProjV[0].load(matProjV[matProjPointer]); + matProjPointer = 0; + matTexV[0].load(matTexV[matTexPointer]); + matTexPointer = 0; + } + + private static BufferGL quadsToTrianglesBuffer = null; + private static BufferArrayGL currentArray = null; + + private static class DisplayList { + private final int id; + private BufferArrayGL glarray; + private BufferGL glbuffer; + private int shaderMode; + private int listLength; + + private DisplayList(int id) { + this.id = id; + this.glarray = null; + this.glbuffer = null; + this.shaderMode = -1; + this.listLength = 0; + } + } + + private static final HashMap displayLists = new HashMap(); + private static final HashMap displayListsInitialized = new HashMap(); + + public static final int getDisplayListCount() { + return displayListsInitialized.size(); + } + + public static final void glEnable(int p1) { + switch (p1) { + case GL_DEPTH_TEST: + _wglEnable(_wGL_DEPTH_TEST); + break; + case GL_CULL_FACE: + _wglEnable(_wGL_CULL_FACE); + break; + case GL_BLEND: + _wglEnable(_wGL_BLEND); + break; + case GL_RESCALE_NORMAL: + break; + case GL_TEXTURE_2D: + enableTexture2D = true; + break; + case GL_LIGHTING: + enableLighting = true; + break; + case GL_ALPHA_TEST: + enableAlphaTest = true; + break; + case GL_FOG: + fogEnabled = true; + break; + case GL_COLOR_MATERIAL: + enableColorMaterial = true; + break; + case GL_POLYGON_OFFSET_FILL: + _wglEnable(_wGL_POLYGON_OFFSET_FILL); + default: + break; + } + } + + public static final void glShadeModel(int p1) { + + } + + public static final void glClearDepth(float p1) { + _wglClearDepth(-p1); + } + + public static final void glDepthFunc(int p1) { + int f = _wGL_GEQUAL; + switch (p1) { + case GL_GREATER: + f = _wGL_LESS; + break; + case GL_LEQUAL: + f = _wGL_GEQUAL; + break; + case GL_EQUAL: + f = _wGL_EQUAL; + default: + break; + } + _wglDepthFunc(f); + } + + public static final void glAlphaFunc(int p1, float p2) { + alphaThresh = p2; + } + + public static final void glCullFace(int p1) { + _wglCullFace(p1); + } + + public static final void glMatrixMode(int p1) { + matrixMode = p1; + } + + private static final Matrix4f getMatrix() { + switch (matrixMode) { + case GL_MODELVIEW: + default: + return matModelV[matModelPointer]; + case GL_PROJECTION: + return matProjV[matProjPointer]; + case GL_TEXTURE: + return matTexV[matTexPointer]; + } + } + + public static final void glLoadIdentity() { + getMatrix().setIdentity(); + } + + public static final void glViewport(int p1, int p2, int p3, int p4) { + _wglViewport(p1, p2, p3, p4); + } + + public static final void glClear(int p1) { + _wglClear(p1); + } + + public static final void glOrtho(double left, double right, double bottom, double top, double zNear, double zFar) { + Matrix4f res = getMatrix(); + res.m00 = (float) (2.0f / (right - left)); + res.m01 = 0.0f; + res.m02 = 0.0f; + res.m03 = 0.0f; + res.m10 = 0.0f; + res.m11 = (float) (2.0f / (top - bottom)); + res.m12 = 0.0f; + res.m13 = 0.0f; + res.m20 = 0.0f; + res.m21 = 0.0f; + res.m22 = (float) (2.0f / (zFar - zNear)); + res.m23 = 0.0f; + res.m30 = (float) (-(right + left) / (right - left)); + res.m31 = (float) (-(top + bottom) / (top - bottom)); + res.m32 = (float) ((zFar + zNear) / (zFar - zNear)); + res.m33 = 1.0f; + } + + public static final void glOrtho(float left, float right, float bottom, float top, float zNear, float zFar) { + Matrix4f res = getMatrix(); + res.m00 = 2.0f / (right - left); + res.m01 = 0.0f; + res.m02 = 0.0f; + res.m03 = 0.0f; + res.m10 = 0.0f; + res.m11 = 2.0f / (top - bottom); + res.m12 = 0.0f; + res.m13 = 0.0f; + res.m20 = 0.0f; + res.m21 = 0.0f; + res.m22 = 2.0f / (zFar - zNear); + res.m23 = 0.0f; + res.m30 = -(right + left) / (right - left); + res.m31 = -(top + bottom) / (top - bottom); + res.m32 = (zFar + zNear) / (zFar - zNear); + res.m33 = 1.0f; + } + + private static final Vector3f deevis = new Vector3f(); + + public static final void glTranslatef(float p1, float p2, float p3) { + deevis.set(p1, p2, p3); + getMatrix().translate(deevis); + if (isCompilingDisplayList) { + throw new IllegalArgumentException("matrix is not supported while recording display list use tessellator class instead"); + } + } + + public static final void glClearColor(float p1, float p2, float p3, float p4) { + _wglClearColor(p1, p2, p3, p4); + } + + public static final void glDisable(int p1) { + switch (p1) { + case GL_DEPTH_TEST: + _wglDisable(_wGL_DEPTH_TEST); + break; + case GL_CULL_FACE: + _wglDisable(_wGL_CULL_FACE); + break; + case GL_BLEND: + _wglDisable(_wGL_BLEND); + break; + case GL_RESCALE_NORMAL: + break; + case GL_TEXTURE_2D: + enableTexture2D = false; + break; + case GL_LIGHTING: + enableLighting = false; + break; + case GL_ALPHA_TEST: + enableAlphaTest = false; + break; + case GL_FOG: + fogEnabled = false; + break; + case GL_COLOR_MATERIAL: + enableColorMaterial = false; + break; + case GL_POLYGON_OFFSET_FILL: + _wglDisable(_wGL_POLYGON_OFFSET_FILL); + default: + break; + } + } + + public static final void glColor4f(float p1, float p2, float p3, float p4) { + colorR = p1; + colorG = p2; + colorB = p3; + colorA = p4; + } + + public static final int glGetError() { + int err = _wglGetError(); + if (err == _wGL_CONTEXT_LOST_WEBGL) + return GL_CONTEXT_LOST_WEBGL; + return err; + } + + public static final void glFlush() { + //...??? + } + + public static final void glLineWidth(float p1) { + + } + + public static final void glTexImage2D(int p1, int p2, int p3, int p4, int p5, int p6, int p7, int p8, + ByteBuffer p9) { + _wglTexImage2D(_wGL_TEXTURE_2D, p2, _wGL_RGBA8, p4, p5, p6, _wGL_RGBA, _wGL_UNSIGNED_BYTE, p9); + } + + public static final void glLight(int p1, int p2, FloatBuffer p3) { + + } + + public static final void glLightModel(int p1, FloatBuffer p2) { + + } + + private static Vector4f lightPos0vec0 = new Vector4f(); + private static Vector4f lightPos1vec0 = new Vector4f(); + private static Vector4f lightPos0vec = new Vector4f(); + private static Vector4f lightPos1vec = new Vector4f(); + + public static final void copyModelToLightMatrix() { + lightPos0vec0.set(lightPos0vec); + lightPos1vec0.set(lightPos1vec); + lightPos0vec.set(0.2f, 1.0f, -0.7f, 0.0f); + lightPos0vec.normalise(); + lightPos1vec.set(-0.2f, 1.0f, 0.7f, 0.0f); + lightPos1vec.normalise(); + Matrix4f.transform(matModelV[matModelPointer], lightPos0vec, lightPos0vec).normalise(); + Matrix4f.transform(matModelV[matModelPointer], lightPos1vec, lightPos1vec).normalise(); + } + + public static final void flipLightMatrix() { + lightPos0vec.x = -lightPos0vec.x; + lightPos1vec.x = -lightPos1vec.x; + lightPos0vec.y = -lightPos0vec.y; + lightPos1vec.y = -lightPos1vec.y; + lightPos0vec.z = -lightPos0vec.z; + lightPos1vec.z = -lightPos1vec.z; + } + + public static final void revertLightMatrix() { + lightPos0vec.set(lightPos0vec0); + lightPos1vec.set(lightPos1vec0); + } + + public static final void glPushMatrix() { + switch (matrixMode) { + case GL_MODELVIEW: + default: + if (matModelPointer < matModelV.length - 1) { + ++matModelPointer; + matModelV[matModelPointer].load(matModelV[matModelPointer - 1]); + } else { + System.err.println("modelview matrix stack overflow"); + } + break; + case GL_PROJECTION: + if (matProjPointer < matProjV.length - 1) { + ++matProjPointer; + matProjV[matProjPointer].load(matProjV[matProjPointer - 1]); + } else { + System.err.println("projection matrix stack overflow"); + } + break; + case GL_TEXTURE: + if (matTexPointer < matTexV.length - 1) { + ++matTexPointer; + matTexV[matTexPointer].load(matTexV[matTexPointer - 1]); + } else { + System.err.println("texture matrix stack overflow"); + } + break; + } + } + + private static final float toRad = 0.0174532925f; + + public static final void glRotatef(float p1, float p2, float p3, float p4) { + deevis.set(p2, p3, p4); + getMatrix().rotate(p1 * toRad, deevis); + if (isCompilingDisplayList) { + throw new IllegalArgumentException("matrix is not supported while recording display list use tessellator class instead"); + } + } + + public static final void glPopMatrix() { + switch (matrixMode) { + case GL_MODELVIEW: + default: + if (matModelPointer > 0) { + --matModelPointer; + } else { + System.err.println("modelview matrix stack underflow"); + } + break; + case GL_PROJECTION: + if (matProjPointer > 0) { + --matProjPointer; + } else { + System.err.println("projection matrix stack underflow"); + } + break; + case GL_TEXTURE: + if (matTexPointer > 0) { + --matTexPointer; + } else { + System.err.println("texture matrix stack underflow"); + } + break; + } + } + + public static final void glColorMaterial(int p1, int p2) { + + } + + public static final void glGetFloat(int p1, FloatBuffer p2) { + switch (p1) { + case GL_MODELVIEW_MATRIX: + default: + matModelV[matModelPointer].store(p2); + break; + case GL_PROJECTION_MATRIX: + matProjV[matProjPointer].store(p2); + break; + } + } + + public static final void glGetInteger(int p1, int[] p2) { + if (p1 == GL_VIEWPORT) { + _wglGetParameter(_wGL_VIEWPORT, 4, p2); + } + } + + public static final void glScalef(float p1, float p2, float p3) { + deevis.set(p1, p2, p3); + getMatrix().scale(deevis); + if (isCompilingDisplayList) { + throw new IllegalArgumentException("matrix is not supported while recording display list use tessellator class instead"); + } + } + + public static final void glBlendFunc(int p1, int p2) { + fogPremultiply = (p1 == GL_ONE && p2 == GL_ONE_MINUS_SRC_ALPHA); + _wglBlendFunc(p1, p2); + } + + public static final void glBlendFuncSeparate(int p1, int p2, int p3, int p4) { + fogPremultiply = (p3 == GL_ONE && p4 == GL_ONE_MINUS_SRC_ALPHA); + _wglBlendFuncSeparate(p1, p2, p3, p4); + } + + public static final void glDepthMask(boolean p1) { + _wglDepthMask(p1); + } + + public static final void glColorMask(boolean p1, boolean p2, boolean p3, boolean p4) { + _wglColorMask(p1, p2, p3, p4); + } + + public static final void glBindTexture(int p1, int p2) { + TextureGL t = texObjects.get(p2); + _wglBindTexture(_wGL_TEXTURE_2D, t); + } + + public static final void glCopyTexSubImage2D(int p1, int p2, int p3, int p4, int p5, int p6, int p7, int p8) { + _wglCopyTexSubImage2D(_wGL_TEXTURE_2D, p2, p3, p4, p5, p6, p7, p8); + } + + public static final void glTexParameteri(int p1, int p2, int p3) { + if(p3 == GL_CLAMP_TO_EDGE || p3 == 10496) { + p3 = _wGL_CLAMP; + } + _wglTexParameteri(p1, p2, p3); + } + + public static final void glTexParameterf(int p1, int p2, float p3) { + int pp1 = 0; + switch (p1) { + default: + case GL_TEXTURE_2D: + pp1 = _wGL_TEXTURE_2D; + break; + // case GL_TEXTURE_3D: pp1 = _wGL_TEXTURE_3D; break; + } + int pp2 = 0; + switch (p2) { + default: + case GL_TEXTURE_MAX_ANISOTROPY: + pp2 = _wGL_TEXTURE_MAX_ANISOTROPY; + break; + } + _wglTexParameterf(pp1, pp2, p3); + } + + public static final void glLogicOp(int p1) { + + } + + public static final void glNormal3f(float p1, float p2, float p3) { + float len = (float) Math.sqrt(p1 * p1 + p2 * p2 + p3 * p3); + normalX = p1 / len; + normalY = p2 / len; + normalZ = p3 / len; + } + + public static final int glGenLists(int p1) { + int base = displayListId + 1; + for (int i = 0; i < p1; i++) { + int id = ++displayListId; + displayLists.put(id, new DisplayList(id)); + } + return base; + } + + public static final void _wglBindVertexArray0(BufferArrayGL p1) { + currentArray = p1; + _wglBindVertexArray(p1); + } + + private static int displayListId = 0; + + public static final void glCallList(int p1) { + if (!isCompilingDisplayList) { + DisplayList d = displayListsInitialized.get(p1); + if (d != null && d.listLength > 0) { + bindTheShader(d.shaderMode | getShaderModeFlag1()); + _wglBindVertexArray0(d.glarray); + _wglDrawQuadArrays(0, d.listLength); + shader.unuseProgram(); + vertexDrawn += d.listLength * 6 / 4; + triangleDrawn += d.listLength / 2; + } + } + } + + public static final void glNewList(int p1, int p2) { + if (!isCompilingDisplayList) { + compilingDisplayList = displayLists.get(p1); + if (compilingDisplayList != null) { + compilingDisplayList.shaderMode = -1; + compilingDisplayList.listLength = 0; + isCompilingDisplayList = true; + } + } + } + + public static final void glEndList() { + if (isCompilingDisplayList) { + isCompilingDisplayList = false; + Object upload = _wGetLowLevelBuffersAppended(); + int l = _wArrayByteLength(upload); + if (l > 0) { + if (compilingDisplayList.glbuffer == null) { + displayListsInitialized.put(compilingDisplayList.id, compilingDisplayList); + compilingDisplayList.glarray = _wglCreateVertexArray(); + compilingDisplayList.glbuffer = _wglCreateBuffer(); + FixedFunctionShader f = FixedFunctionShader.instance(compilingDisplayList.shaderMode); + _wglBindVertexArray0(compilingDisplayList.glarray); + _wglBindBuffer(_wGL_ARRAY_BUFFER, compilingDisplayList.glbuffer); + f.setupArrayForProgram(); + } + _wglBindBuffer(_wGL_ARRAY_BUFFER, compilingDisplayList.glbuffer); + _wglBufferData(_wGL_ARRAY_BUFFER, upload, _wGL_STATIC_DRAW); + bytesUploaded += l; + } + } + } + + public static final void glColor3f(float p1, float p2, float p3) { + colorR = p1; + colorG = p2; + colorB = p3; + colorA = 1.0f; + } + + public static final void glTexImage2D(int p1, int p2, int p3, int p4, int p5, int p6, int p7, int p8, + IntBuffer p9) { + /* + * int pp2 = 0; switch(p3) { default: case GL_RGBA: pp2 = _wGL_RGBA; break; case + * GL_BGRA: pp2 = _wGL_BGRA; break; } int pp3 = 0; switch(p7) { default: case + * GL_RGBA: pp3 = _wGL_RGBA; break; case GL_BGRA: pp3 = _wGL_BGRA; break; } + */ + bytesUploaded += p9.remaining() * 4; + _wglTexImage2D(_wGL_TEXTURE_2D, p2, _wGL_RGBA8, p4, p5, p6, _wGL_RGBA, _wGL_UNSIGNED_BYTE, p9); + } + + public static final void glTexImage2D_2(int p1, int p2, int p3, int p4, int p5, int p6, int p7, int p8, + IntBuffer p9) { + bytesUploaded += p9.remaining() * 4; + _wglTexImage2D(_wGL_TEXTURE_2D, p2, _wGL_RGB8, p4, p5, p6, _wGL_RGB, _wGL_UNSIGNED_BYTE, p9); + } + + public static final void glTexSubImage2D(int p1, int p2, int p3, int p4, int p5, int p6, int p7, int p8, + IntBuffer p9) { + int pp1 = 0; + switch (p1) { + default: + case GL_TEXTURE_2D: + pp1 = _wGL_TEXTURE_2D; + break; + // case GL_TEXTURE_3D: pp1 = _wGL_TEXTURE_3D; break; + } + /* + * int pp3 = 0; switch(p7) { default: case GL_RGBA: pp3 = _wGL_RGBA; break; case + * GL_BGRA: pp3 = _wGL_BGRA; break; } + */ + bytesUploaded += p9.remaining() * 4; + _wglTexSubImage2D(pp1, p2, p3, p4, p5, p6, _wGL_RGBA, _wGL_UNSIGNED_BYTE, p9); + } + + public static final void glDeleteTextures(int p1) { + _wglDeleteTextures(texObjects.free(p1)); + } + + public static final void glPolygonOffset(float p1, float p2) { + _wglPolygonOffset(p1, p2); + } + + public static final void glCallLists(IntBuffer p1) { + while (p1.hasRemaining()) { + glCallList(p1.get()); + } + } + + public static final void glEnableVertexAttrib(int p1) { + switch (p1) { + case GL_COLOR_ARRAY: + enableColorArray = true; + break; +// case GL_NORMAL_ARRAY: +// enableNormalArray = true; +// break; + case GL_TEXTURE_COORD_ARRAY: + enableTex0Array = true; + break; + default: + break; + } + } + + public static final void glDisableVertexAttrib(int p1) { + switch (p1) { + case GL_COLOR_ARRAY: + enableColorArray = false; + break; +// case GL_NORMAL_ARRAY: +// enableNormalArray = false; +// break; + case GL_TEXTURE_COORD_ARRAY: + enableTex0Array = false; + break; + default: + break; + } + } + + private static final int getShaderModeFlag0() { + int mode = 0; + mode = (mode | (enableColorArray ? FixedFunctionShader.COLOR : 0)); + //mode = (mode | (enableNormalArray ? FixedFunctionShader.NORMAL : 0)); + mode = (mode | (enableTex0Array ? FixedFunctionShader.TEXTURE0 : 0)); + return mode; + } + + private static final int getShaderModeFlag1() { + int mode = 0; + mode = (mode | ((enableColorMaterial && enableLighting) ? FixedFunctionShader.LIGHTING : 0)); + mode = (mode | (fogEnabled ? FixedFunctionShader.FOG : 0)); + mode = (mode | (enableAlphaTest ? FixedFunctionShader.ALPHATEST : 0)); + mode = (mode | (enableTexture2D ? FixedFunctionShader.UNIT0 : 0)); + return mode; + } + + private static final int getShaderModeFlag() { + int mode = 0; + mode = (mode | (enableColorArray ? FixedFunctionShader.COLOR : 0)); + //mode = (mode | (enableNormalArray ? FixedFunctionShader.NORMAL : 0)); + mode = (mode | (enableTex0Array ? FixedFunctionShader.TEXTURE0 : 0)); + mode = (mode | ((enableColorMaterial && enableLighting) ? FixedFunctionShader.LIGHTING : 0)); + mode = (mode | (fogEnabled ? FixedFunctionShader.FOG : 0)); + mode = (mode | (enableAlphaTest ? FixedFunctionShader.ALPHATEST : 0)); + mode = (mode | (enableTexture2D ? FixedFunctionShader.UNIT0 : 0)); + return mode; + } + + private static FixedFunctionShader shader = null; + + private static final void bindTheShader() { + bindTheShader(getShaderModeFlag()); + } + + private static final void bindTheShader(int mode) { + FixedFunctionShader s = shader = FixedFunctionShader.instance(mode); + s.useProgram(); + if (enableAlphaTest) { + s.setAlphaTest(alphaThresh); + } + s.setColor(colorR, colorG, colorB, colorA); + if (fogEnabled) { + s.setFogMode((fogPremultiply ? 2 : 0) + fogMode); + s.setFogColor(fogColorR, fogColorG, fogColorB, fogColorA); + s.setFogDensity(fogDensity); + s.setFogStartEnd(fogStart, fogEnd); + } + s.setModelMatrix(matModelV[matModelPointer]); + s.setProjectionMatrix(matProjV[matProjPointer]); + s.setTextureMatrix(matTexV[matTexPointer]); + if (enableColorMaterial && enableLighting) { + s.setNormal(normalX, normalY, normalZ); + s.setLightPositions(lightPos0vec, lightPos1vec); + } + s.setTex0Coords(tex0X, tex0Y); + } + + private static Object blankUploadArray = _wCreateLowLevelIntBuffer(525000); + + public static final void glDrawArrays(int p1, int p2, int p3, Object buffer) { + if (isCompilingDisplayList) { + if (p1 == GL_QUADS) { + if (compilingDisplayList.shaderMode == -1) { + compilingDisplayList.shaderMode = getShaderModeFlag0(); + } else { + if (compilingDisplayList.shaderMode != getShaderModeFlag0()) { + System.err.println("vertex format inconsistent in display list"); + } + } + compilingDisplayList.listLength += p3; + _wAppendLowLevelBuffer(buffer); + } else { + System.err.println("only GL_QUADS supported in a display list"); + } + } else { + bytesUploaded += _wArrayByteLength(buffer); + vertexDrawn += p3; + + bindTheShader(); + + _wglBindVertexArray0(shader.genericArray); + _wglBindBuffer(_wGL_ARRAY_BUFFER, shader.genericBuffer); + if (!shader.bufferIsInitialized) { + shader.bufferIsInitialized = true; + _wglBufferData(_wGL_ARRAY_BUFFER, blankUploadArray, _wGL_DYNAMIC_DRAW); + } + _wglBufferSubData(_wGL_ARRAY_BUFFER, 0, buffer); + + if (p1 == GL_QUADS) { + _wglDrawQuadArrays(p2, p3); + triangleDrawn += p3 / 2; + } else { + int drawMode = 0; + switch (p1) { + default: + case GL_TRIANGLES: + drawMode = _wGL_TRIANGLES; + triangleDrawn += p3 / 3; + break; + case GL_TRIANGLE_STRIP: + drawMode = _wGL_TRIANGLE_STRIP; + triangleDrawn += p3 - 2; + break; + case GL_TRIANGLE_FAN: + drawMode = _wGL_TRIANGLE_FAN; + triangleDrawn += p3 - 2; + break; + case GL_LINE_STRIP: + drawMode = _wGL_LINE_STRIP; + triangleDrawn += p3 - 1; + break; + case GL_LINES: + drawMode = _wGL_LINES; + triangleDrawn += p3 / 2; + break; + } + _wglDrawArrays(drawMode, p2, p3); + } + + shader.unuseProgram(); + + } + } + + private static final void _wglDrawQuadArrays(int p2, int p3) { + if (quadsToTrianglesBuffer == null) { + IntBuffer upload = isWebGL ? IntBuffer.wrap(new int[98400 / 2]) + : ByteBuffer.allocateDirect(98400 * 2).order(ByteOrder.nativeOrder()).asIntBuffer(); + for (int i = 0; i < 16384; ++i) { + int v1 = i * 4; + int v2 = i * 4 + 1; + int v3 = i * 4 + 2; + int v4 = i * 4 + 3; + upload.put(v1 | (v2 << 16)); + upload.put(v4 | (v2 << 16)); + upload.put(v3 | (v4 << 16)); + } + upload.flip(); + quadsToTrianglesBuffer = _wglCreateBuffer(); + _wglBindBuffer(_wGL_ELEMENT_ARRAY_BUFFER, quadsToTrianglesBuffer); + _wglBufferData0(_wGL_ELEMENT_ARRAY_BUFFER, upload, _wGL_STATIC_DRAW); + } + if (!currentArray.isQuadBufferBound) { + currentArray.isQuadBufferBound = true; + _wglBindBuffer(_wGL_ELEMENT_ARRAY_BUFFER, quadsToTrianglesBuffer); + } + _wglDrawElements(_wGL_TRIANGLES, p3 * 6 / 4, _wGL_UNSIGNED_SHORT, p2 * 6 / 4); + } + + private static BufferArrayGL occlusion_vao = null; + private static BufferGL occlusion_vbo = null; + private static ProgramGL occlusion_program = null; + private static UniformGL occlusion_matrix_m = null; + private static UniformGL occlusion_matrix_p = null; + + private static final void initializeOcclusionObjects() { + occlusion_vao = _wglCreateVertexArray(); + occlusion_vbo = _wglCreateBuffer(); + + IntBuffer upload = (isWebGL ? IntBuffer.wrap(new int[108]) + : ByteBuffer.allocateDirect(108 << 2).order(ByteOrder.nativeOrder()).asIntBuffer()); + float[] verts = new float[] { 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 1.0f, 1.0f, 1.0f, 1.0f, 0.0f, 0.0f, + 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 1.0f, 1.0f, 0.0f, + 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, + 1.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 1.0f, 0.0f, 0.0f, 1.0f, 1.0f, 0.0f, 1.0f, 1.0f, + 1.0f, 1.0f, 1.0f, 0.0f, 0.0f, 1.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 1.0f, 1.0f, 1.0f, 1.0f, 0.0f, 1.0f, + 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 0.0f, 0.0f, 1.0f, 0.0f, 1.0f, 1.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 1.0f, + 1.0f, 1.0f, 1.0f, 1.0f, 0.0f, 1.0f, 1.0f, 1.0f, 0.0f, 1.0f }; + for (int i = 0; i < verts.length; i++) { + upload.put(Float.floatToRawIntBits(verts[i])); + } + upload.flip(); + + _wglBindVertexArray(occlusion_vao); + _wglBindBuffer(_wGL_ARRAY_BUFFER, occlusion_vbo); + _wglBufferData0(_wGL_ARRAY_BUFFER, upload, _wGL_STATIC_DRAW); + _wglEnableVertexAttribArray(0); + _wglVertexAttribPointer(0, 3, _wGL_FLOAT, false, 12, 0); + + ShaderGL vert = _wglCreateShader(_wGL_VERTEX_SHADER); + ShaderGL frag = _wglCreateShader(_wGL_FRAGMENT_SHADER); + + String src = fileContents("/glsl/occl.glsl"); + _wglShaderSource(vert, _wgetShaderHeader() + "\n#define CC_VERT\n" + src); + _wglShaderSource(frag, _wgetShaderHeader() + "\n#define CC_FRAG\n" + src); + + _wglCompileShader(vert); + if (!_wglGetShaderCompiled(vert)) + System.err.println(("\n" + _wglGetShaderInfoLog(vert)).replace("\n", "\n[/glsl/occl.glsl][VERT] ") + "\n"); + + _wglCompileShader(frag); + if (!_wglGetShaderCompiled(frag)) + System.err.println(("\n" + _wglGetShaderInfoLog(frag)).replace("\n", "\n[/glsl/occl.glsl][FRAG] ") + "\n"); + + occlusion_program = _wglCreateProgram(); + + _wglAttachShader(occlusion_program, vert); + _wglAttachShader(occlusion_program, frag); + _wglLinkProgram(occlusion_program); + _wglDetachShader(occlusion_program, vert); + _wglDetachShader(occlusion_program, frag); + _wglDeleteShader(vert); + _wglDeleteShader(frag); + + if (!_wglGetProgramLinked(occlusion_program)) + System.err.println( + ("\n\n" + _wglGetProgramInfoLog(occlusion_program)).replace("\n", "\n[/glsl/occl.glsl][LINKER] ")); + + _wglUseProgram(occlusion_program); + occlusion_matrix_m = _wglGetUniformLocation(occlusion_program, "matrix_m"); + occlusion_matrix_p = _wglGetUniformLocation(occlusion_program, "matrix_p"); + + } + + private static final GLObjectMap queryObjs = new GLObjectMap(256); + + public static final int glCreateQuery() { + return queryObjs.register(_wglCreateQuery()); + } + + public static final void glBeginQuery(int obj) { + _wglBeginQuery(_wGL_ANY_SAMPLES_PASSED, queryObjs.get(obj)); + } + + public static final void glDeleteQuery(int obj) { + _wglDeleteQuery(queryObjs.free(obj)); + } + + private static final Matrix4f cachedOcclusionP = (Matrix4f) (new Matrix4f()).setZero(); + private static float[] occlusionModel = new float[16]; + private static float[] occlusionProj = new float[16]; + + public static final void glBindOcclusionBB() { + if (occlusion_vao == null) + initializeOcclusionObjects(); + _wglUseProgram(occlusion_program); + _wglBindVertexArray(occlusion_vao); + if (!cachedOcclusionP.equals(matProjV[matProjPointer])) { + cachedOcclusionP.load(matProjV[matProjPointer]); + cachedOcclusionP.store(occlusionProj); + _wglUniformMat4fv(occlusion_matrix_p, occlusionProj); + } + } + + public static final void glEndOcclusionBB() { + + } + + public static final void glDrawOcclusionBB(float posX, float posY, float posZ, float sizeX, float sizeY, + float sizeZ) { + glPushMatrix(); + glTranslatef(posX - sizeX * 0.01f, posY - sizeY * 0.01f, posZ - sizeZ * 0.01f); + glScalef(sizeX * 1.02f, sizeY * 1.02f, sizeZ * 1.02f); + matModelV[matModelPointer].store(occlusionModel); + _wglUniformMat4fv(occlusion_matrix_m, occlusionModel); + _wglDrawArrays(_wGL_TRIANGLES, 0, 36); + glPopMatrix(); + + } + + public static final void glEndQuery() { + _wglEndQuery(_wGL_ANY_SAMPLES_PASSED); + } + + public static final boolean glGetQueryResult(int obj) { + QueryGL q = queryObjs.get(obj); + return _wglGetQueryObjecti(q, _wGL_QUERY_RESULT) > 0; + } + + public static final boolean glGetQueryResultAvailable(int obj) { + QueryGL q = queryObjs.get(obj); + return _wglGetQueryObjecti(q, _wGL_QUERY_RESULT_AVAILABLE) > 0; + } + + public static final int glGenTextures() { + return texObjects.register(_wglGenTextures()); + } + + public static final void glTexSubImage2D(int p1, int p2, int p3, int p4, int p5, int p6, int p7, int p8, + ByteBuffer p9) { + int pp1 = 0; + switch (p1) { + default: + case GL_TEXTURE_2D: + pp1 = _wGL_TEXTURE_2D; + break; + // case GL_TEXTURE_3D: pp1 = _wGL_TEXTURE_3D; break; + } + /* + * int pp3 = 0; switch(p7) { default: case GL_RGBA: pp3 = _wGL_RGBA; break; case + * GL_BGRA: pp3 = _wGL_BGRA; break; } + */ + bytesUploaded += p9.remaining(); + _wglTexSubImage2D(pp1, p2, p3, p4, p5, p6, _wGL_RGBA, _wGL_UNSIGNED_BYTE, p9); + } + + public static final void glFogi(int p1, int p2) { + if (p1 == GL_FOG_MODE) { + switch (p2) { + default: + case GL_LINEAR: + fogMode = 1; + break; + case GL_EXP: + fogMode = 2; + break; + } + } + } + + public static final void glFogf(int p1, float p2) { + switch (p1) { + case GL_FOG_START: + fogStart = p2; + break; + case GL_FOG_END: + fogEnd = p2; + break; + case GL_FOG_DENSITY: + fogDensity = p2; + break; + default: + break; + } + } + + public static final void glFog(int p1, FloatBuffer p2) { + if (p1 == GL_FOG_COLOR) { + fogColorR = p2.get(); + fogColorG = p2.get(); + fogColorB = p2.get(); + fogColorA = p2.get(); + } + } + + public static final void glDeleteLists(int p1, int p2) { + for (int i = 0; i < p2; i++) { + DisplayList d = displayListsInitialized.remove(p1 + i); + if (d != null) { + _wglDeleteVertexArray(d.glarray); + _wglDeleteBuffer(d.glbuffer); + } + displayLists.remove(p1 + i); + } + } + + public static final void glMultiTexCoord2f(int p1, float p2, float p3) { + tex0X = p2; + tex0Y = p3; + } + + private static Matrix4f unprojA = new Matrix4f(); + private static Matrix4f unprojB = new Matrix4f(); + private static Vector4f unprojC = new Vector4f(); + + public static final void gluUnProject(float p1, float p2, float p3, FloatBuffer p4, FloatBuffer p5, int[] p6, + FloatBuffer p7) { + unprojA.load(p4); + unprojB.load(p5); + Matrix4f.mul(unprojA, unprojB, unprojB); + unprojB.invert(); + unprojC.set(((p1 - (float) p6[0]) / (float) p6[2]) * 2f - 1f, ((p2 - (float) p6[1]) / (float) p6[3]) * 2f - 1f, + p3, 1.0f); + Matrix4f.transform(unprojB, unprojC, unprojC); + p7.put(unprojC.x / unprojC.w); + p7.put(unprojC.y / unprojC.w); + p7.put(unprojC.z / unprojC.w); + } + + public static final void gluPerspective(float fovy, float aspect, float zNear, float zFar) { + Matrix4f res = getMatrix(); + float cotangent = (float) Math.cos(fovy * toRad * 0.5f) / (float) Math.sin(fovy * toRad * 0.5f); + res.m00 = cotangent / aspect; + res.m01 = 0.0f; + res.m02 = 0.0f; + res.m03 = 0.0f; + res.m10 = 0.0f; + res.m11 = cotangent; + res.m12 = 0.0f; + res.m13 = 0.0f; + res.m20 = 0.0f; + res.m21 = 0.0f; + res.m22 = (zFar + zNear) / (zFar - zNear); + res.m23 = -1.0f; + res.m30 = 0.0f; + res.m31 = 0.0f; + res.m32 = 2.0f * zFar * zNear / (zFar - zNear); + res.m33 = 0.0f; + } + + public static final void gluPerspectiveFlat(float fovy, float aspect, float zNear, float zFar) { + Matrix4f res = getMatrix(); + float cotangent = (float) Math.cos(fovy * toRad * 0.5f) / (float) Math.sin(fovy * toRad * 0.5f); + res.m00 = cotangent / aspect; + res.m01 = 0.0f; + res.m02 = 0.0f; + res.m03 = 0.0f; + res.m10 = 0.0f; + res.m11 = cotangent; + res.m12 = 0.0f; + res.m13 = 0.0f; + res.m20 = 0.0f; + res.m21 = 0.0f; + res.m22 = ((zFar + zNear) / (zFar - zNear)) * 0.001f; + res.m23 = -1.0f; + res.m30 = 0.0f; + res.m31 = 0.0f; + res.m32 = 2.0f * zFar * zNear / (zFar - zNear); + res.m33 = 0.0f; + } + + public static final String gluErrorString(int p1) { + switch (p1) { + case GL_INVALID_ENUM: + return "GL_INVALID_ENUM"; + case GL_INVALID_VALUE: + return "GL_INVALID_VALUE"; + case GL_INVALID_OPERATION: + return "GL_INVALID_OPERATION"; + case GL_OUT_OF_MEMORY: + return "GL_OUT_OF_MEMORY"; + case GL_CONTEXT_LOST_WEBGL: + return "CONTEXT_LOST_WEBGL"; + default: + return "Unknown Error"; + } + } + + private static long lastBandwidthReset = 0l; + private static int lastBandwidth = 0; + + public static final int getBitsPerSecond() { + if (System.currentTimeMillis() - lastBandwidthReset > 1000) { + lastBandwidthReset = System.currentTimeMillis(); + lastBandwidth = bytesUploaded * 8; + bytesUploaded = 0; + } + return lastBandwidth; + } + + public static final int getVertexesPerSecond() { + int ret = vertexDrawn; + vertexDrawn = 0; + return ret; + } + + public static final int getTrianglesPerSecond() { + int ret = triangleDrawn; + triangleDrawn = 0; + return ret; + } +} diff --git a/src/main/java/org/lwjgl/opengl/GL12.java b/src/main/java/org/lwjgl/opengl/GL12.java new file mode 100644 index 0000000..4b04504 --- /dev/null +++ b/src/main/java/org/lwjgl/opengl/GL12.java @@ -0,0 +1,5 @@ +package org.lwjgl.opengl; + +public class GL12 extends GL11 { + +} diff --git a/src/net/minecraft/client/MinecraftApplet.java b/src/net/minecraft/client/MinecraftApplet.java deleted file mode 100644 index da453ec..0000000 --- a/src/net/minecraft/client/MinecraftApplet.java +++ /dev/null @@ -1,105 +0,0 @@ -package net.minecraft.client; - -import java.applet.Applet; -import java.awt.BorderLayout; -import java.awt.Canvas; -import net.minecraft.src.CanvasMinecraftApplet; -import net.minecraft.src.Minecraft; -import net.minecraft.src.MinecraftAppletImpl; -import net.minecraft.src.Session; - -public class MinecraftApplet extends Applet { - private Canvas mcCanvas; - private Minecraft mc; - private Thread mcThread = null; - - public void init() { - this.mcCanvas = new CanvasMinecraftApplet(this); - boolean var1 = false; - if(this.getParameter("fullscreen") != null) { - var1 = this.getParameter("fullscreen").equalsIgnoreCase("true"); - } - - this.mc = new MinecraftAppletImpl(this, this, this.mcCanvas, this, this.getWidth(), this.getHeight(), var1); - this.mc.minecraftUri = this.getDocumentBase().getHost(); - if(this.getDocumentBase().getPort() > 0) { - this.mc.minecraftUri = this.mc.minecraftUri + ":" + this.getDocumentBase().getPort(); - } - - if(this.getParameter("username") != null && this.getParameter("sessionid") != null) { - this.mc.session = new Session(this.getParameter("username"), this.getParameter("sessionid")); - if(this.getParameter("mppass") != null) { - this.mc.session.mpPassParameter = this.getParameter("mppass"); - } - } - - if(this.getParameter("loadmap_user") != null && this.getParameter("loadmap_id") != null) { - this.mc.objectMouseOverString = this.getParameter("loadmap_user"); - this.mc.rightClickDelayTimer = Integer.parseInt(this.getParameter("loadmap_id")); - } else if(this.getParameter("server") != null && this.getParameter("port") != null) { - this.mc.setServer(this.getParameter("server"), Integer.parseInt(this.getParameter("port"))); - } - - this.mc.appletMode = true; - this.setLayout(new BorderLayout()); - this.add(this.mcCanvas, "Center"); - this.mcCanvas.setFocusable(true); - this.validate(); - } - - public void startMainThread() { - if(this.mcThread == null) { - this.mcThread = new Thread(this.mc, "Minecraft main thread"); - this.mcThread.start(); - } - } - - public void start() { - if(this.mc != null) { - this.mc.isGamePaused = false; - } - - } - - public void stop() { - if(this.mc != null) { - this.mc.isGamePaused = true; - } - - } - - public void destroy() { - this.shutdown(); - } - - public void shutdown() { - if(this.mcThread != null) { - this.mc.shutdown(); - - try { - this.mcThread.join(10000L); - } catch (InterruptedException var4) { - try { - this.mc.shutdownMinecraftApplet(); - } catch (Exception var3) { - var3.printStackTrace(); - } - } - - this.mcThread = null; - } - } - - public void clearApplet() { - this.mcCanvas = null; - this.mc = null; - this.mcThread = null; - - try { - this.removeAll(); - this.validate(); - } catch (Exception var2) { - } - - } -} diff --git a/src/net/minecraft/isom/IsomPreviewApplet.java b/src/net/minecraft/isom/IsomPreviewApplet.java deleted file mode 100644 index b192ed2..0000000 --- a/src/net/minecraft/isom/IsomPreviewApplet.java +++ /dev/null @@ -1,22 +0,0 @@ -package net.minecraft.isom; - -import java.applet.Applet; -import java.awt.BorderLayout; -import net.minecraft.src.CanvasIsomPreview; - -public class IsomPreviewApplet extends Applet { - private CanvasIsomPreview isomCanvas = new CanvasIsomPreview(); - - public IsomPreviewApplet() { - this.setLayout(new BorderLayout()); - this.add(this.isomCanvas, "Center"); - } - - public void start() { - this.isomCanvas.start(); - } - - public void stop() { - this.isomCanvas.stop(); - } -} diff --git a/src/net/minecraft/src/AxisAlignedBB.java b/src/net/minecraft/src/AxisAlignedBB.java deleted file mode 100644 index e680fee..0000000 --- a/src/net/minecraft/src/AxisAlignedBB.java +++ /dev/null @@ -1,313 +0,0 @@ -package net.minecraft.src; - -import java.util.ArrayList; -import java.util.List; - -public class AxisAlignedBB { - private static List boundingBoxes = new ArrayList(); - private static int numBoundingBoxesInUse = 0; - public double minX; - public double minY; - public double minZ; - public double maxX; - public double maxY; - public double maxZ; - - public static AxisAlignedBB getBoundingBox(double var0, double var2, double var4, double var6, double var8, double var10) { - return new AxisAlignedBB(var0, var2, var4, var6, var8, var10); - } - - public static void clearBoundingBoxPool() { - numBoundingBoxesInUse = 0; - } - - public static AxisAlignedBB getBoundingBoxFromPool(double var0, double var2, double var4, double var6, double var8, double var10) { - if(numBoundingBoxesInUse >= boundingBoxes.size()) { - boundingBoxes.add(getBoundingBox(0.0D, 0.0D, 0.0D, 0.0D, 0.0D, 0.0D)); - } - - return ((AxisAlignedBB)boundingBoxes.get(numBoundingBoxesInUse++)).setBounds(var0, var2, var4, var6, var8, var10); - } - - private AxisAlignedBB(double var1, double var3, double var5, double var7, double var9, double var11) { - this.minX = var1; - this.minY = var3; - this.minZ = var5; - this.maxX = var7; - this.maxY = var9; - this.maxZ = var11; - } - - public AxisAlignedBB setBounds(double var1, double var3, double var5, double var7, double var9, double var11) { - this.minX = var1; - this.minY = var3; - this.minZ = var5; - this.maxX = var7; - this.maxY = var9; - this.maxZ = var11; - return this; - } - - public AxisAlignedBB addCoord(double var1, double var3, double var5) { - double var7 = this.minX; - double var9 = this.minY; - double var11 = this.minZ; - double var13 = this.maxX; - double var15 = this.maxY; - double var17 = this.maxZ; - if(var1 < 0.0D) { - var7 += var1; - } - - if(var1 > 0.0D) { - var13 += var1; - } - - if(var3 < 0.0D) { - var9 += var3; - } - - if(var3 > 0.0D) { - var15 += var3; - } - - if(var5 < 0.0D) { - var11 += var5; - } - - if(var5 > 0.0D) { - var17 += var5; - } - - return getBoundingBoxFromPool(var7, var9, var11, var13, var15, var17); - } - - public AxisAlignedBB expand(double var1, double var3, double var5) { - double var7 = this.minX - var1; - double var9 = this.minY - var3; - double var11 = this.minZ - var5; - double var13 = this.maxX + var1; - double var15 = this.maxY + var3; - double var17 = this.maxZ + var5; - return getBoundingBoxFromPool(var7, var9, var11, var13, var15, var17); - } - - public AxisAlignedBB getOffsetBoundingBox(double var1, double var3, double var5) { - return getBoundingBoxFromPool(this.minX + var1, this.minY + var3, this.minZ + var5, this.maxX + var1, this.maxY + var3, this.maxZ + var5); - } - - public double calculateXOffset(AxisAlignedBB var1, double var2) { - if(var1.maxY > this.minY && var1.minY < this.maxY) { - if(var1.maxZ > this.minZ && var1.minZ < this.maxZ) { - double var4; - if(var2 > 0.0D && var1.maxX <= this.minX) { - var4 = this.minX - var1.maxX; - if(var4 < var2) { - var2 = var4; - } - } - - if(var2 < 0.0D && var1.minX >= this.maxX) { - var4 = this.maxX - var1.minX; - if(var4 > var2) { - var2 = var4; - } - } - - return var2; - } else { - return var2; - } - } else { - return var2; - } - } - - public double calculateYOffset(AxisAlignedBB var1, double var2) { - if(var1.maxX > this.minX && var1.minX < this.maxX) { - if(var1.maxZ > this.minZ && var1.minZ < this.maxZ) { - double var4; - if(var2 > 0.0D && var1.maxY <= this.minY) { - var4 = this.minY - var1.maxY; - if(var4 < var2) { - var2 = var4; - } - } - - if(var2 < 0.0D && var1.minY >= this.maxY) { - var4 = this.maxY - var1.minY; - if(var4 > var2) { - var2 = var4; - } - } - - return var2; - } else { - return var2; - } - } else { - return var2; - } - } - - public double calculateZOffset(AxisAlignedBB var1, double var2) { - if(var1.maxX > this.minX && var1.minX < this.maxX) { - if(var1.maxY > this.minY && var1.minY < this.maxY) { - double var4; - if(var2 > 0.0D && var1.maxZ <= this.minZ) { - var4 = this.minZ - var1.maxZ; - if(var4 < var2) { - var2 = var4; - } - } - - if(var2 < 0.0D && var1.minZ >= this.maxZ) { - var4 = this.maxZ - var1.minZ; - if(var4 > var2) { - var2 = var4; - } - } - - return var2; - } else { - return var2; - } - } else { - return var2; - } - } - - public boolean intersectsWith(AxisAlignedBB var1) { - return var1.maxX > this.minX && var1.minX < this.maxX ? (var1.maxY > this.minY && var1.minY < this.maxY ? var1.maxZ > this.minZ && var1.minZ < this.maxZ : false) : false; - } - - public AxisAlignedBB offset(double var1, double var3, double var5) { - this.minX += var1; - this.minY += var3; - this.minZ += var5; - this.maxX += var1; - this.maxY += var3; - this.maxZ += var5; - return this; - } - - public double getAverageEdgeLength() { - double var1 = this.maxX - this.minX; - double var3 = this.maxY - this.minY; - double var5 = this.maxZ - this.minZ; - return (var1 + var3 + var5) / 3.0D; - } - - public AxisAlignedBB copy() { - return getBoundingBoxFromPool(this.minX, this.minY, this.minZ, this.maxX, this.maxY, this.maxZ); - } - - public MovingObjectPosition calculateIntercept(Vec3D var1, Vec3D var2) { - Vec3D var3 = var1.getIntermediateWithXValue(var2, this.minX); - Vec3D var4 = var1.getIntermediateWithXValue(var2, this.maxX); - Vec3D var5 = var1.getIntermediateWithYValue(var2, this.minY); - Vec3D var6 = var1.getIntermediateWithYValue(var2, this.maxY); - Vec3D var7 = var1.getIntermediateWithZValue(var2, this.minZ); - Vec3D var8 = var1.getIntermediateWithZValue(var2, this.maxZ); - if(!this.isVecInYZ(var3)) { - var3 = null; - } - - if(!this.isVecInYZ(var4)) { - var4 = null; - } - - if(!this.isVecInXZ(var5)) { - var5 = null; - } - - if(!this.isVecInXZ(var6)) { - var6 = null; - } - - if(!this.isVecInXY(var7)) { - var7 = null; - } - - if(!this.isVecInXY(var8)) { - var8 = null; - } - - Vec3D var9 = null; - if(var3 != null && (var9 == null || var1.squareDistanceTo(var3) < var1.squareDistanceTo(var9))) { - var9 = var3; - } - - if(var4 != null && (var9 == null || var1.squareDistanceTo(var4) < var1.squareDistanceTo(var9))) { - var9 = var4; - } - - if(var5 != null && (var9 == null || var1.squareDistanceTo(var5) < var1.squareDistanceTo(var9))) { - var9 = var5; - } - - if(var6 != null && (var9 == null || var1.squareDistanceTo(var6) < var1.squareDistanceTo(var9))) { - var9 = var6; - } - - if(var7 != null && (var9 == null || var1.squareDistanceTo(var7) < var1.squareDistanceTo(var9))) { - var9 = var7; - } - - if(var8 != null && (var9 == null || var1.squareDistanceTo(var8) < var1.squareDistanceTo(var9))) { - var9 = var8; - } - - if(var9 == null) { - return null; - } else { - byte var10 = -1; - if(var9 == var3) { - var10 = 4; - } - - if(var9 == var4) { - var10 = 5; - } - - if(var9 == var5) { - var10 = 0; - } - - if(var9 == var6) { - var10 = 1; - } - - if(var9 == var7) { - var10 = 2; - } - - if(var9 == var8) { - var10 = 3; - } - - return new MovingObjectPosition(0, 0, 0, var10, var9); - } - } - - private boolean isVecInYZ(Vec3D var1) { - return var1 == null ? false : var1.yCoord >= this.minY && var1.yCoord <= this.maxY && var1.zCoord >= this.minZ && var1.zCoord <= this.maxZ; - } - - private boolean isVecInXZ(Vec3D var1) { - return var1 == null ? false : var1.xCoord >= this.minX && var1.xCoord <= this.maxX && var1.zCoord >= this.minZ && var1.zCoord <= this.maxZ; - } - - private boolean isVecInXY(Vec3D var1) { - return var1 == null ? false : var1.xCoord >= this.minX && var1.xCoord <= this.maxX && var1.yCoord >= this.minY && var1.yCoord <= this.maxY; - } - - public void setBB(AxisAlignedBB var1) { - this.minX = var1.minX; - this.minY = var1.minY; - this.minZ = var1.minZ; - this.maxX = var1.maxX; - this.maxY = var1.maxY; - this.maxZ = var1.maxZ; - } -} diff --git a/src/net/minecraft/src/Block.java b/src/net/minecraft/src/Block.java deleted file mode 100644 index a962b9d..0000000 --- a/src/net/minecraft/src/Block.java +++ /dev/null @@ -1,432 +0,0 @@ -package net.minecraft.src; - -import java.util.ArrayList; -import java.util.Random; - -public class Block { - public static final StepSound soundPowderFootstep = new StepSound("stone", 1.0F, 1.0F); - public static final StepSound soundWoodFootstep = new StepSound("wood", 1.0F, 1.0F); - public static final StepSound soundGravelFootstep = new StepSound("gravel", 1.0F, 1.0F); - public static final StepSound soundGrassFootstep = new StepSound("grass", 1.0F, 1.0F); - public static final StepSound soundStoneFootstep = new StepSound("stone", 1.0F, 1.0F); - public static final StepSound soundMetalFootstep = new StepSound("stone", 1.0F, 1.5F); - public static final StepSound soundGlassFootstep = new StepSoundGlass("stone", 1.0F, 1.0F); - public static final StepSound soundClothFootstep = new StepSound("cloth", 1.0F, 1.0F); - public static final StepSound soundSandFootstep = new StepSoundSand("sand", 1.0F, 1.0F); - public static final Block[] blocksList = new Block[256]; - public static final boolean[] tickOnLoad = new boolean[256]; - public static final boolean[] opaqueCubeLookup = new boolean[256]; - public static final int[] lightOpacity = new int[256]; - public static final boolean[] canBlockGrass = new boolean[256]; - public static final int[] lightValue = new int[256]; - public static final Block stone = (new BlockStone(1, 1)).setHardness(1.5F).setResistance(10.0F).setStepSound(soundStoneFootstep); - public static final BlockGrass grass = (BlockGrass)(new BlockGrass(2)).setHardness(0.6F).setStepSound(soundGrassFootstep); - public static final Block dirt = (new BlockDirt(3, 2)).setHardness(0.5F).setStepSound(soundGravelFootstep); - public static final Block cobblestone = (new Block(4, 16, Material.rock)).setHardness(2.0F).setResistance(10.0F).setStepSound(soundStoneFootstep); - public static final Block planks = (new Block(5, 4, Material.wood)).setHardness(2.0F).setResistance(5.0F).setStepSound(soundWoodFootstep); - public static final Block sapling = (new BlockSapling(6, 15)).setHardness(0.0F).setStepSound(soundGrassFootstep); - public static final Block bedrock = (new Block(7, 17, Material.rock)).setHardness(-1.0F).setResistance(6000000.0F).setStepSound(soundStoneFootstep); - public static final Block waterMoving = (new BlockFlowing(8, Material.water)).setHardness(100.0F).setLightOpacity(3); - public static final Block waterStill = (new BlockStationary(9, Material.water)).setHardness(100.0F).setLightOpacity(3); - public static final Block lavaMoving = (new BlockFlowing(10, Material.lava)).setHardness(0.0F).setLightValue(1.0F).setLightOpacity(255); - public static final Block lavaStill = (new BlockStationary(11, Material.lava)).setHardness(100.0F).setLightValue(1.0F).setLightOpacity(255); - public static final Block sand = (new BlockSand(12, 18)).setHardness(0.5F).setStepSound(soundSandFootstep); - public static final Block gravel = (new BlockGravel(13, 19)).setHardness(0.6F).setStepSound(soundGravelFootstep); - public static final Block oreGold = (new BlockOre(14, 32)).setHardness(3.0F).setResistance(5.0F).setStepSound(soundStoneFootstep); - public static final Block oreIron = (new BlockOre(15, 33)).setHardness(3.0F).setResistance(5.0F).setStepSound(soundStoneFootstep); - public static final Block oreCoal = (new BlockOre(16, 34)).setHardness(3.0F).setResistance(5.0F).setStepSound(soundStoneFootstep); - public static final Block wood = (new BlockLog(17)).setHardness(2.0F).setStepSound(soundWoodFootstep); - public static final BlockLeaves leaves = (BlockLeaves)(new BlockLeaves(18, 52)).setHardness(0.2F).setLightOpacity(1).setStepSound(soundGrassFootstep); - public static final Block sponge = (new BlockSponge(19)).setHardness(0.6F).setStepSound(soundGrassFootstep); - public static final Block glass = (new BlockGlass(20, 49, Material.glass, false)).setHardness(0.3F).setStepSound(soundGlassFootstep); - public static final Block clothRed = null; - public static final Block clothOrange = null; - public static final Block clothYellow = null; - public static final Block clothChartreuse = null; - public static final Block clothGreen = null; - public static final Block clothSpringGreen = null; - public static final Block clothCyan = null; - public static final Block clothCapri = null; - public static final Block clothUltramarine = null; - public static final Block clothViolet = null; - public static final Block clothPurple = null; - public static final Block clothMagenta = null; - public static final Block clothRose = null; - public static final Block clothDarkGray = null; - public static final Block cloth = (new Block(35, 64, Material.cloth)).setHardness(0.8F).setStepSound(soundClothFootstep); - public static final Block clothWhite = null; - public static final BlockFlower plantYellow = (BlockFlower)(new BlockFlower(37, 13)).setHardness(0.0F).setStepSound(soundGrassFootstep); - public static final BlockFlower plantRed = (BlockFlower)(new BlockFlower(38, 12)).setHardness(0.0F).setStepSound(soundGrassFootstep); - public static final BlockFlower mushroomBrown = (BlockFlower)(new BlockMushroom(39, 29)).setHardness(0.0F).setStepSound(soundGrassFootstep).setLightValue(2.0F / 16.0F); - public static final BlockFlower mushroomRed = (BlockFlower)(new BlockMushroom(40, 28)).setHardness(0.0F).setStepSound(soundGrassFootstep); - public static final Block blockGold = (new BlockOreBlock(41, 39)).setHardness(3.0F).setResistance(10.0F).setStepSound(soundMetalFootstep); - public static final Block blockSteel = (new BlockOreBlock(42, 38)).setHardness(5.0F).setResistance(10.0F).setStepSound(soundMetalFootstep); - public static final Block stairDouble = (new BlockStep(43, true)).setHardness(2.0F).setResistance(10.0F).setStepSound(soundStoneFootstep); - public static final Block stairSingle = (new BlockStep(44, false)).setHardness(2.0F).setResistance(10.0F).setStepSound(soundStoneFootstep); - public static final Block brick = (new Block(45, 7, Material.rock)).setHardness(2.0F).setResistance(10.0F).setStepSound(soundStoneFootstep); - public static final Block tnt = (new BlockTNT(46, 8)).setHardness(0.0F).setStepSound(soundGrassFootstep); - public static final Block bookshelf = (new BlockBookshelf(47, 35)).setHardness(1.5F).setStepSound(soundWoodFootstep); - public static final Block cobblestoneMossy = (new Block(48, 36, Material.rock)).setHardness(2.0F).setResistance(10.0F).setStepSound(soundStoneFootstep); - public static final Block obsidian = (new BlockObsidian(49, 37)).setHardness(10.0F).setResistance(20.0F).setStepSound(soundStoneFootstep); - public static final Block torch = (new BlockTorch(50, 80)).setHardness(0.0F).setLightValue(15.0F / 16.0F).setStepSound(soundWoodFootstep); - public static final BlockFire fire = (BlockFire)((BlockFire)(new BlockFire(51, 31)).setHardness(0.0F).setLightValue(1.0F).setStepSound(soundWoodFootstep)); - public static final Block mobSpawner = (new BlockMobSpawner(52, 65)).setHardness(5.0F).setStepSound(soundMetalFootstep); - public static final Block stairCompactWood = new BlockStairs(53, planks); - public static final Block chest = (new BlockChest(54)).setHardness(2.5F).setStepSound(soundWoodFootstep); - public static final Block cog = (new BlockGears(55, 62)).setHardness(0.5F).setStepSound(soundMetalFootstep); - public static final Block oreDiamond = (new BlockOre(56, 50)).setHardness(3.0F).setResistance(5.0F).setStepSound(soundStoneFootstep); - public static final Block blockDiamond = (new BlockOreBlock(57, 40)).setHardness(5.0F).setResistance(10.0F).setStepSound(soundMetalFootstep); - public static final Block workbench = (new BlockWorkbench(58)).setHardness(2.5F).setStepSound(soundWoodFootstep); - public static final Block crops = (new BlockCrops(59, 88)).setHardness(0.0F).setStepSound(soundGrassFootstep); - public static final Block tilledField = (new BlockFarmland(60)).setHardness(0.6F).setStepSound(soundGravelFootstep); - public static final Block stoneOvenIdle = (new BlockFurnace(61, false)).setHardness(3.5F).setStepSound(soundStoneFootstep); - public static final Block stoneOvenActive = (new BlockFurnace(62, true)).setHardness(3.5F).setStepSound(soundStoneFootstep).setLightValue(14.0F / 16.0F); - public static final Block signStanding = (new BlockSign(63, TileEntitySign.class, Item.sign.shiftedIndex)).setHardness(1.0F).setStepSound(soundWoodFootstep); - public static final Block doorWood = (new BlockDoor(64)).setHardness(3.0F).setStepSound(soundWoodFootstep); - public static final Block ladder = (new BlockLadder(65, 83)).setHardness(0.4F).setStepSound(soundWoodFootstep); - public static final Block minecartTrack = (new BlockMinecartTrack(66, 128)).setHardness(1.0F).setStepSound(soundMetalFootstep); - public static final Block stairCompactStone = new BlockStairs(67, cobblestone); - public int blockIndexInTexture; - public final int blockID; - protected float blockHardness; - protected float blockResistance; - public double minX; - public double minY; - public double minZ; - public double maxX; - public double maxY; - public double maxZ; - public StepSound stepSound; - public float blockParticleGravity; - public final Material blockMaterial; - - protected Block(int var1, Material var2) { - this.stepSound = soundPowderFootstep; - this.blockParticleGravity = 1.0F; - if(blocksList[var1] != null) { - throw new IllegalArgumentException("Slot " + var1 + " is already occupied by " + blocksList[var1] + " when adding " + this); - } else { - this.blockMaterial = var2; - blocksList[var1] = this; - this.blockID = var1; - this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F); - opaqueCubeLookup[var1] = this.isOpaqueCube(); - lightOpacity[var1] = this.isOpaqueCube() ? 255 : 0; - canBlockGrass[var1] = this.getCanBlockGrass(); - } - } - - protected Block(int var1, int var2, Material var3) { - this(var1, var3); - this.blockIndexInTexture = var2; - } - - protected Block setStepSound(StepSound var1) { - this.stepSound = var1; - return this; - } - - protected Block setLightOpacity(int var1) { - lightOpacity[this.blockID] = var1; - return this; - } - - protected Block setLightValue(float var1) { - lightValue[this.blockID] = (int)(15.0F * var1); - return this; - } - - protected Block setResistance(float var1) { - this.blockResistance = var1 * 3.0F; - return this; - } - - private boolean getCanBlockGrass() { - return false; - } - - public boolean renderAsNormalBlock() { - return true; - } - - public int getRenderType() { - return 0; - } - - protected Block setHardness(float var1) { - this.blockHardness = var1; - if(this.blockResistance < var1 * 5.0F) { - this.blockResistance = var1 * 5.0F; - } - - return this; - } - - protected void setTickOnLoad(boolean var1) { - tickOnLoad[this.blockID] = var1; - } - - public void setBlockBounds(float var1, float var2, float var3, float var4, float var5, float var6) { - this.minX = (double)var1; - this.minY = (double)var2; - this.minZ = (double)var3; - this.maxX = (double)var4; - this.maxY = (double)var5; - this.maxZ = (double)var6; - } - - public float getBlockBrightness(IBlockAccess var1, int var2, int var3, int var4) { - return var1.getBrightness(var2, var3, var4); - } - - public boolean shouldSideBeRendered(IBlockAccess var1, int var2, int var3, int var4, int var5) { - return var5 == 0 && this.minY > 0.0D ? true : (var5 == 1 && this.maxY < 1.0D ? true : (var5 == 2 && this.minZ > 0.0D ? true : (var5 == 3 && this.maxZ < 1.0D ? true : (var5 == 4 && this.minX > 0.0D ? true : (var5 == 5 && this.maxX < 1.0D ? true : !var1.isBlockNormalCube(var2, var3, var4)))))); - } - - public int getBlockTextureGeneric(IBlockAccess var1, int var2, int var3, int var4, int var5) { - return this.getBlockTextureFromSideAndMetadata(var5, var1.getBlockMetadata(var2, var3, var4)); - } - - public int getBlockTextureFromSideAndMetadata(int var1, int var2) { - return this.getBlockTextureFromSide(var1); - } - - public int getBlockTextureFromSide(int var1) { - return this.blockIndexInTexture; - } - - public AxisAlignedBB getSelectedBoundingBoxFromPool(World var1, int var2, int var3, int var4) { - return AxisAlignedBB.getBoundingBoxFromPool((double)var2 + this.minX, (double)var3 + this.minY, (double)var4 + this.minZ, (double)var2 + this.maxX, (double)var3 + this.maxY, (double)var4 + this.maxZ); - } - - public void getCollidingBoundingBoxes(World var1, int var2, int var3, int var4, AxisAlignedBB var5, ArrayList var6) { - AxisAlignedBB var7 = this.getCollisionBoundingBoxFromPool(var1, var2, var3, var4); - if(var7 != null && var5.intersectsWith(var7)) { - var6.add(var7); - } - - } - - public AxisAlignedBB getCollisionBoundingBoxFromPool(World var1, int var2, int var3, int var4) { - return AxisAlignedBB.getBoundingBoxFromPool((double)var2 + this.minX, (double)var3 + this.minY, (double)var4 + this.minZ, (double)var2 + this.maxX, (double)var3 + this.maxY, (double)var4 + this.maxZ); - } - - public boolean isOpaqueCube() { - return true; - } - - public boolean canCollideCheck(int var1, boolean var2) { - return this.isCollidable(); - } - - public boolean isCollidable() { - return true; - } - - public void updateTick(World var1, int var2, int var3, int var4, Random var5) { - } - - public void randomDisplayTick(World var1, int var2, int var3, int var4, Random var5) { - } - - public void onBlockDestroyedByPlayer(World var1, int var2, int var3, int var4, int var5) { - } - - public void onNeighborBlockChange(World var1, int var2, int var3, int var4, int var5) { - } - - public int tickRate() { - return 10; - } - - public void onBlockAdded(World var1, int var2, int var3, int var4) { - } - - public void onBlockRemoval(World var1, int var2, int var3, int var4) { - } - - public int quantityDropped(Random var1) { - return 1; - } - - public int idDropped(int var1, Random var2) { - return this.blockID; - } - - public float blockStrength(EntityPlayer var1) { - return this.blockHardness < 0.0F ? 0.0F : (!var1.canHarvestBlock(this) ? 1.0F / this.blockHardness / 100.0F : var1.getCurrentPlayerStrVsBlock(this) / this.blockHardness / 30.0F); - } - - public void dropBlockAsItem(World var1, int var2, int var3, int var4, int var5) { - this.dropBlockAsItemWithChance(var1, var2, var3, var4, var5, 1.0F); - } - - public void dropBlockAsItemWithChance(World var1, int var2, int var3, int var4, int var5, float var6) { - int var7 = this.quantityDropped(var1.rand); - - for(int var8 = 0; var8 < var7; ++var8) { - if(var1.rand.nextFloat() <= var6) { - int var9 = this.idDropped(var5, var1.rand); - if(var9 > 0) { - float var10 = 0.7F; - double var11 = (double)(var1.rand.nextFloat() * var10) + (double)(1.0F - var10) * 0.5D; - double var13 = (double)(var1.rand.nextFloat() * var10) + (double)(1.0F - var10) * 0.5D; - double var15 = (double)(var1.rand.nextFloat() * var10) + (double)(1.0F - var10) * 0.5D; - EntityItem var17 = new EntityItem(var1, (double)var2 + var11, (double)var3 + var13, (double)var4 + var15, new ItemStack(var9)); - var17.delayBeforeCanPickup = 10; - var1.spawnEntityInWorld(var17); - } - } - } - - } - - public float getExplosionResistance(Entity var1) { - return this.blockResistance / 5.0F; - } - - public MovingObjectPosition collisionRayTrace(World var1, int var2, int var3, int var4, Vec3D var5, Vec3D var6) { - var5 = var5.addVector((double)(-var2), (double)(-var3), (double)(-var4)); - var6 = var6.addVector((double)(-var2), (double)(-var3), (double)(-var4)); - Vec3D var7 = var5.getIntermediateWithXValue(var6, this.minX); - Vec3D var8 = var5.getIntermediateWithXValue(var6, this.maxX); - Vec3D var9 = var5.getIntermediateWithYValue(var6, this.minY); - Vec3D var10 = var5.getIntermediateWithYValue(var6, this.maxY); - Vec3D var11 = var5.getIntermediateWithZValue(var6, this.minZ); - Vec3D var12 = var5.getIntermediateWithZValue(var6, this.maxZ); - if(!this.isVecInsideYZBounds(var7)) { - var7 = null; - } - - if(!this.isVecInsideYZBounds(var8)) { - var8 = null; - } - - if(!this.isVecInsideXZBounds(var9)) { - var9 = null; - } - - if(!this.isVecInsideXZBounds(var10)) { - var10 = null; - } - - if(!this.isVecInsideXYBounds(var11)) { - var11 = null; - } - - if(!this.isVecInsideXYBounds(var12)) { - var12 = null; - } - - Vec3D var13 = null; - if(var7 != null && (var13 == null || var5.distanceTo(var7) < var5.distanceTo(var13))) { - var13 = var7; - } - - if(var8 != null && (var13 == null || var5.distanceTo(var8) < var5.distanceTo(var13))) { - var13 = var8; - } - - if(var9 != null && (var13 == null || var5.distanceTo(var9) < var5.distanceTo(var13))) { - var13 = var9; - } - - if(var10 != null && (var13 == null || var5.distanceTo(var10) < var5.distanceTo(var13))) { - var13 = var10; - } - - if(var11 != null && (var13 == null || var5.distanceTo(var11) < var5.distanceTo(var13))) { - var13 = var11; - } - - if(var12 != null && (var13 == null || var5.distanceTo(var12) < var5.distanceTo(var13))) { - var13 = var12; - } - - if(var13 == null) { - return null; - } else { - byte var14 = -1; - if(var13 == var7) { - var14 = 4; - } - - if(var13 == var8) { - var14 = 5; - } - - if(var13 == var9) { - var14 = 0; - } - - if(var13 == var10) { - var14 = 1; - } - - if(var13 == var11) { - var14 = 2; - } - - if(var13 == var12) { - var14 = 3; - } - - return new MovingObjectPosition(var2, var3, var4, var14, var13.addVector((double)var2, (double)var3, (double)var4)); - } - } - - private boolean isVecInsideYZBounds(Vec3D var1) { - return var1 == null ? false : var1.yCoord >= this.minY && var1.yCoord <= this.maxY && var1.zCoord >= this.minZ && var1.zCoord <= this.maxZ; - } - - private boolean isVecInsideXZBounds(Vec3D var1) { - return var1 == null ? false : var1.xCoord >= this.minX && var1.xCoord <= this.maxX && var1.zCoord >= this.minZ && var1.zCoord <= this.maxZ; - } - - private boolean isVecInsideXYBounds(Vec3D var1) { - return var1 == null ? false : var1.xCoord >= this.minX && var1.xCoord <= this.maxX && var1.yCoord >= this.minY && var1.yCoord <= this.maxY; - } - - public void onBlockDestroyedByExplosion(World var1, int var2, int var3, int var4) { - } - - public int getRenderBlockPass() { - return 0; - } - - public boolean canPlaceBlockAt(World var1, int var2, int var3, int var4) { - return true; - } - - public boolean blockActivated(World var1, int var2, int var3, int var4, EntityPlayer var5) { - return false; - } - - public void onEntityWalking(World var1, int var2, int var3, int var4, Entity var5) { - } - - public void onBlockPlaced(World var1, int var2, int var3, int var4, int var5) { - } - - public void onBlockClicked(World var1, int var2, int var3, int var4, EntityPlayer var5) { - } - - public void velocityToAddToEntity(World var1, int var2, int var3, int var4, Entity var5, Vec3D var6) { - } - - public void setBlockBoundsBasedOnState(IBlockAccess var1, int var2, int var3, int var4) { - } - - public int getRenderColor(IBlockAccess var1, int var2, int var3, int var4) { - return 16777215; - } - - static { - for(int var0 = 0; var0 < 256; ++var0) { - if(blocksList[var0] != null) { - Item.itemsList[var0] = new ItemBlock(var0 - 256); - } - } - - } -} diff --git a/src/net/minecraft/src/BlockBookshelf.java b/src/net/minecraft/src/BlockBookshelf.java deleted file mode 100644 index e91f8a9..0000000 --- a/src/net/minecraft/src/BlockBookshelf.java +++ /dev/null @@ -1,17 +0,0 @@ -package net.minecraft.src; - -import java.util.Random; - -public class BlockBookshelf extends Block { - public BlockBookshelf(int var1, int var2) { - super(var1, var2, Material.wood); - } - - public int getBlockTextureFromSide(int var1) { - return var1 <= 1 ? 4 : this.blockIndexInTexture; - } - - public int quantityDropped(Random var1) { - return 0; - } -} diff --git a/src/net/minecraft/src/BlockBreakable.java b/src/net/minecraft/src/BlockBreakable.java deleted file mode 100644 index a037862..0000000 --- a/src/net/minecraft/src/BlockBreakable.java +++ /dev/null @@ -1,19 +0,0 @@ -package net.minecraft.src; - -public class BlockBreakable extends Block { - private boolean localFlag; - - protected BlockBreakable(int var1, int var2, Material var3, boolean var4) { - super(var1, var2, var3); - this.localFlag = var4; - } - - public boolean isOpaqueCube() { - return false; - } - - public boolean shouldSideBeRendered(IBlockAccess var1, int var2, int var3, int var4, int var5) { - int var6 = var1.getBlockId(var2, var3, var4); - return !this.localFlag && var6 == this.blockID ? false : super.shouldSideBeRendered(var1, var2, var3, var4, var5); - } -} diff --git a/src/net/minecraft/src/BlockChest.java b/src/net/minecraft/src/BlockChest.java deleted file mode 100644 index 9807507..0000000 --- a/src/net/minecraft/src/BlockChest.java +++ /dev/null @@ -1,196 +0,0 @@ -package net.minecraft.src; - -import java.util.Random; - -public class BlockChest extends BlockContainer { - private Random random = new Random(); - - protected BlockChest(int var1) { - super(var1, Material.wood); - this.blockIndexInTexture = 26; - } - - public int getBlockTextureGeneric(IBlockAccess var1, int var2, int var3, int var4, int var5) { - if(var5 == 1) { - return this.blockIndexInTexture - 1; - } else if(var5 == 0) { - return this.blockIndexInTexture - 1; - } else { - int var6 = var1.getBlockId(var2, var3, var4 - 1); - int var7 = var1.getBlockId(var2, var3, var4 + 1); - int var8 = var1.getBlockId(var2 - 1, var3, var4); - int var9 = var1.getBlockId(var2 + 1, var3, var4); - int var10; - int var11; - int var12; - byte var13; - if(var6 != this.blockID && var7 != this.blockID) { - if(var8 != this.blockID && var9 != this.blockID) { - byte var14 = 3; - if(Block.opaqueCubeLookup[var6] && !Block.opaqueCubeLookup[var7]) { - var14 = 3; - } - - if(Block.opaqueCubeLookup[var7] && !Block.opaqueCubeLookup[var6]) { - var14 = 2; - } - - if(Block.opaqueCubeLookup[var8] && !Block.opaqueCubeLookup[var9]) { - var14 = 5; - } - - if(Block.opaqueCubeLookup[var9] && !Block.opaqueCubeLookup[var8]) { - var14 = 4; - } - - return var5 == var14 ? this.blockIndexInTexture + 1 : this.blockIndexInTexture; - } else if(var5 != 4 && var5 != 5) { - var10 = 0; - if(var8 == this.blockID) { - var10 = -1; - } - - var11 = var1.getBlockId(var8 == this.blockID ? var2 - 1 : var2 + 1, var3, var4 - 1); - var12 = var1.getBlockId(var8 == this.blockID ? var2 - 1 : var2 + 1, var3, var4 + 1); - if(var5 == 3) { - var10 = -1 - var10; - } - - var13 = 3; - if((Block.opaqueCubeLookup[var6] || Block.opaqueCubeLookup[var11]) && !Block.opaqueCubeLookup[var7] && !Block.opaqueCubeLookup[var12]) { - var13 = 3; - } - - if((Block.opaqueCubeLookup[var7] || Block.opaqueCubeLookup[var12]) && !Block.opaqueCubeLookup[var6] && !Block.opaqueCubeLookup[var11]) { - var13 = 2; - } - - return (var5 == var13 ? this.blockIndexInTexture + 16 : this.blockIndexInTexture + 32) + var10; - } else { - return this.blockIndexInTexture; - } - } else if(var5 != 2 && var5 != 3) { - var10 = 0; - if(var6 == this.blockID) { - var10 = -1; - } - - var11 = var1.getBlockId(var2 - 1, var3, var6 == this.blockID ? var4 - 1 : var4 + 1); - var12 = var1.getBlockId(var2 + 1, var3, var6 == this.blockID ? var4 - 1 : var4 + 1); - if(var5 == 4) { - var10 = -1 - var10; - } - - var13 = 5; - if((Block.opaqueCubeLookup[var8] || Block.opaqueCubeLookup[var11]) && !Block.opaqueCubeLookup[var9] && !Block.opaqueCubeLookup[var12]) { - var13 = 5; - } - - if((Block.opaqueCubeLookup[var9] || Block.opaqueCubeLookup[var12]) && !Block.opaqueCubeLookup[var8] && !Block.opaqueCubeLookup[var11]) { - var13 = 4; - } - - return (var5 == var13 ? this.blockIndexInTexture + 16 : this.blockIndexInTexture + 32) + var10; - } else { - return this.blockIndexInTexture; - } - } - } - - public int getBlockTextureFromSide(int var1) { - return var1 == 1 ? this.blockIndexInTexture - 1 : (var1 == 0 ? this.blockIndexInTexture - 1 : (var1 == 3 ? this.blockIndexInTexture + 1 : this.blockIndexInTexture)); - } - - public boolean canPlaceBlockAt(World var1, int var2, int var3, int var4) { - int var5 = 0; - if(var1.getBlockId(var2 - 1, var3, var4) == this.blockID) { - ++var5; - } - - if(var1.getBlockId(var2 + 1, var3, var4) == this.blockID) { - ++var5; - } - - if(var1.getBlockId(var2, var3, var4 - 1) == this.blockID) { - ++var5; - } - - if(var1.getBlockId(var2, var3, var4 + 1) == this.blockID) { - ++var5; - } - - return var5 > 1 ? false : (this.isThereANeighborChest(var1, var2 - 1, var3, var4) ? false : (this.isThereANeighborChest(var1, var2 + 1, var3, var4) ? false : (this.isThereANeighborChest(var1, var2, var3, var4 - 1) ? false : !this.isThereANeighborChest(var1, var2, var3, var4 + 1)))); - } - - private boolean isThereANeighborChest(World var1, int var2, int var3, int var4) { - return var1.getBlockId(var2, var3, var4) != this.blockID ? false : (var1.getBlockId(var2 - 1, var3, var4) == this.blockID ? true : (var1.getBlockId(var2 + 1, var3, var4) == this.blockID ? true : (var1.getBlockId(var2, var3, var4 - 1) == this.blockID ? true : var1.getBlockId(var2, var3, var4 + 1) == this.blockID))); - } - - public void onBlockRemoval(World var1, int var2, int var3, int var4) { - TileEntityChest var5 = (TileEntityChest)var1.getBlockTileEntity(var2, var3, var4); - - for(int var6 = 0; var6 < var5.getSizeInventory(); ++var6) { - ItemStack var7 = var5.getStackInSlot(var6); - if(var7 != null) { - float var8 = this.random.nextFloat() * 0.8F + 0.1F; - float var9 = this.random.nextFloat() * 0.8F + 0.1F; - float var10 = this.random.nextFloat() * 0.8F + 0.1F; - - while(var7.stackSize > 0) { - int var11 = this.random.nextInt(21) + 10; - if(var11 > var7.stackSize) { - var11 = var7.stackSize; - } - - var7.stackSize -= var11; - EntityItem var12 = new EntityItem(var1, (double)((float)var2 + var8), (double)((float)var3 + var9), (double)((float)var4 + var10), new ItemStack(var7.itemID, var11, var7.itemDmg)); - float var13 = 0.05F; - var12.motionX = (double)((float)this.random.nextGaussian() * var13); - var12.motionY = (double)((float)this.random.nextGaussian() * var13 + 0.2F); - var12.motionZ = (double)((float)this.random.nextGaussian() * var13); - var1.spawnEntityInWorld(var12); - } - } - } - - super.onBlockRemoval(var1, var2, var3, var4); - } - - public boolean blockActivated(World var1, int var2, int var3, int var4, EntityPlayer var5) { - Object var6 = (TileEntityChest)var1.getBlockTileEntity(var2, var3, var4); - if(var1.isBlockNormalCube(var2, var3 + 1, var4)) { - return true; - } else if(var1.getBlockId(var2 - 1, var3, var4) == this.blockID && var1.isBlockNormalCube(var2 - 1, var3 + 1, var4)) { - return true; - } else if(var1.getBlockId(var2 + 1, var3, var4) == this.blockID && var1.isBlockNormalCube(var2 + 1, var3 + 1, var4)) { - return true; - } else if(var1.getBlockId(var2, var3, var4 - 1) == this.blockID && var1.isBlockNormalCube(var2, var3 + 1, var4 - 1)) { - return true; - } else if(var1.getBlockId(var2, var3, var4 + 1) == this.blockID && var1.isBlockNormalCube(var2, var3 + 1, var4 + 1)) { - return true; - } else { - if(var1.getBlockId(var2 - 1, var3, var4) == this.blockID) { - var6 = new InventoryLargeChest("Large chest", (TileEntityChest)var1.getBlockTileEntity(var2 - 1, var3, var4), (IInventory)var6); - } - - if(var1.getBlockId(var2 + 1, var3, var4) == this.blockID) { - var6 = new InventoryLargeChest("Large chest", (IInventory)var6, (TileEntityChest)var1.getBlockTileEntity(var2 + 1, var3, var4)); - } - - if(var1.getBlockId(var2, var3, var4 - 1) == this.blockID) { - var6 = new InventoryLargeChest("Large chest", (TileEntityChest)var1.getBlockTileEntity(var2, var3, var4 - 1), (IInventory)var6); - } - - if(var1.getBlockId(var2, var3, var4 + 1) == this.blockID) { - var6 = new InventoryLargeChest("Large chest", (IInventory)var6, (TileEntityChest)var1.getBlockTileEntity(var2, var3, var4 + 1)); - } - - var5.displayGUIChest((IInventory)var6); - return true; - } - } - - protected TileEntity getBlockEntity() { - return new TileEntityChest(); - } -} diff --git a/src/net/minecraft/src/BlockContainer.java b/src/net/minecraft/src/BlockContainer.java deleted file mode 100644 index 6b5cee0..0000000 --- a/src/net/minecraft/src/BlockContainer.java +++ /dev/null @@ -1,23 +0,0 @@ -package net.minecraft.src; - -public abstract class BlockContainer extends Block { - protected BlockContainer(int var1, Material var2) { - super(var1, var2); - } - - protected BlockContainer(int var1, int var2, Material var3) { - super(var1, var2, var3); - } - - public void onBlockAdded(World var1, int var2, int var3, int var4) { - super.onBlockAdded(var1, var2, var3, var4); - var1.setBlockTileEntity(var2, var3, var4, this.getBlockEntity()); - } - - public void onBlockRemoval(World var1, int var2, int var3, int var4) { - super.onBlockRemoval(var1, var2, var3, var4); - var1.removeBlockTileEntity(var2, var3, var4); - } - - protected abstract TileEntity getBlockEntity(); -} diff --git a/src/net/minecraft/src/BlockCrops.java b/src/net/minecraft/src/BlockCrops.java deleted file mode 100644 index 9cb6741..0000000 --- a/src/net/minecraft/src/BlockCrops.java +++ /dev/null @@ -1,110 +0,0 @@ -package net.minecraft.src; - -import java.util.Random; - -public class BlockCrops extends BlockFlower { - protected BlockCrops(int var1, int var2) { - super(var1, var2); - this.blockIndexInTexture = var2; - this.setTickOnLoad(true); - float var3 = 0.5F; - this.setBlockBounds(0.5F - var3, 0.0F, 0.5F - var3, 0.5F + var3, 0.25F, 0.5F + var3); - } - - protected boolean canThisPlantGrowOnThisBlockID(int var1) { - return var1 == Block.tilledField.blockID; - } - - public void updateTick(World var1, int var2, int var3, int var4, Random var5) { - super.updateTick(var1, var2, var3, var4, var5); - if(var1.getBlockLightValue(var2, var3 + 1, var4) >= 9) { - int var6 = var1.getBlockMetadata(var2, var3, var4); - if(var6 < 7) { - float var7 = this.updateTick(var1, var2, var3, var4); - if(var5.nextInt((int)(100.0F / var7)) == 0) { - ++var6; - var1.setBlockMetadataWithNotify(var2, var3, var4, var6); - } - } - } - - } - - private float updateTick(World var1, int var2, int var3, int var4) { - float var5 = 1.0F; - int var6 = var1.getBlockId(var2, var3, var4 - 1); - int var7 = var1.getBlockId(var2, var3, var4 + 1); - int var8 = var1.getBlockId(var2 - 1, var3, var4); - int var9 = var1.getBlockId(var2 + 1, var3, var4); - int var10 = var1.getBlockId(var2 - 1, var3, var4 - 1); - int var11 = var1.getBlockId(var2 + 1, var3, var4 - 1); - int var12 = var1.getBlockId(var2 + 1, var3, var4 + 1); - int var13 = var1.getBlockId(var2 - 1, var3, var4 + 1); - boolean var14 = var8 == this.blockID || var9 == this.blockID; - boolean var15 = var6 == this.blockID || var7 == this.blockID; - boolean var16 = var10 == this.blockID || var11 == this.blockID || var12 == this.blockID || var13 == this.blockID; - - for(int var17 = var2 - 1; var17 <= var2 + 1; ++var17) { - for(int var18 = var4 - 1; var18 <= var4 + 1; ++var18) { - int var19 = var1.getBlockId(var17, var3 - 1, var18); - float var20 = 0.0F; - if(var19 == Block.tilledField.blockID) { - var20 = 1.0F; - if(var1.getBlockMetadata(var17, var3 - 1, var18) > 0) { - var20 = 3.0F; - } - } - - if(var17 != var2 || var18 != var4) { - var20 /= 4.0F; - } - - var5 += var20; - } - } - - if(var16 || var14 && var15) { - var5 /= 2.0F; - } - - return var5; - } - - public int getBlockTextureFromSideAndMetadata(int var1, int var2) { - if(var2 < 0) { - var2 = 7; - } - - return this.blockIndexInTexture + var2; - } - - public int getRenderType() { - return 6; - } - - public void onBlockDestroyedByPlayer(World var1, int var2, int var3, int var4, int var5) { - super.onBlockDestroyedByPlayer(var1, var2, var3, var4, var5); - - for(int var6 = 0; var6 < 3; ++var6) { - if(var1.rand.nextInt(15) <= var5) { - float var7 = 0.7F; - float var8 = var1.rand.nextFloat() * var7 + (1.0F - var7) * 0.5F; - float var9 = var1.rand.nextFloat() * var7 + (1.0F - var7) * 0.5F; - float var10 = var1.rand.nextFloat() * var7 + (1.0F - var7) * 0.5F; - EntityItem var11 = new EntityItem(var1, (double)((float)var2 + var8), (double)((float)var3 + var9), (double)((float)var4 + var10), new ItemStack(Item.seeds)); - var11.delayBeforeCanPickup = 10; - var1.spawnEntityInWorld(var11); - } - } - - } - - public int idDropped(int var1, Random var2) { - System.out.println("Get resource: " + var1); - return var1 == 7 ? Item.wheat.shiftedIndex : -1; - } - - public int quantityDropped(Random var1) { - return 1; - } -} diff --git a/src/net/minecraft/src/BlockDirt.java b/src/net/minecraft/src/BlockDirt.java deleted file mode 100644 index d3b8a7a..0000000 --- a/src/net/minecraft/src/BlockDirt.java +++ /dev/null @@ -1,7 +0,0 @@ -package net.minecraft.src; - -public class BlockDirt extends Block { - protected BlockDirt(int var1, int var2) { - super(var1, var2, Material.ground); - } -} diff --git a/src/net/minecraft/src/BlockDoor.java b/src/net/minecraft/src/BlockDoor.java deleted file mode 100644 index 25b2c67..0000000 --- a/src/net/minecraft/src/BlockDoor.java +++ /dev/null @@ -1,154 +0,0 @@ -package net.minecraft.src; - -import java.util.Random; - -public class BlockDoor extends Block { - protected BlockDoor(int var1) { - super(var1, Material.wood); - this.blockIndexInTexture = 97; - float var2 = 0.5F; - float var3 = 1.0F; - this.setBlockBounds(0.5F - var2, 0.0F, 0.5F - var2, 0.5F + var2, var3, 0.5F + var2); - } - - public int getBlockTextureFromSideAndMetadata(int var1, int var2) { - if(var1 != 0 && var1 != 1) { - int var3 = this.getState(var2); - if((var3 == 0 || var3 == 2) ^ var1 <= 3) { - return this.blockIndexInTexture; - } else { - int var4 = var3 / 2 + (var1 & 1 ^ var3); - var4 += (var2 & 4) / 4; - int var5 = this.blockIndexInTexture - (var2 & 8) * 2; - if((var4 & 1) != 0) { - var5 = -var5; - } - - return var5; - } - } else { - return this.blockIndexInTexture; - } - } - - public boolean isOpaqueCube() { - return false; - } - - public boolean renderAsNormalBlock() { - return false; - } - - public int getRenderType() { - return 7; - } - - public AxisAlignedBB getSelectedBoundingBoxFromPool(World var1, int var2, int var3, int var4) { - this.setBlockBoundsBasedOnState(var1, var2, var3, var4); - return super.getSelectedBoundingBoxFromPool(var1, var2, var3, var4); - } - - public AxisAlignedBB getCollisionBoundingBoxFromPool(World var1, int var2, int var3, int var4) { - this.setBlockBoundsBasedOnState(var1, var2, var3, var4); - return super.getCollisionBoundingBoxFromPool(var1, var2, var3, var4); - } - - public void setBlockBoundsBasedOnState(IBlockAccess var1, int var2, int var3, int var4) { - this.setDoorRotation(this.getState(var1.getBlockMetadata(var2, var3, var4))); - } - - public void setDoorRotation(int var1) { - float var2 = 3.0F / 16.0F; - this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 2.0F, 1.0F); - if(var1 == 0) { - this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, var2); - } - - if(var1 == 1) { - this.setBlockBounds(1.0F - var2, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F); - } - - if(var1 == 2) { - this.setBlockBounds(0.0F, 0.0F, 1.0F - var2, 1.0F, 1.0F, 1.0F); - } - - if(var1 == 3) { - this.setBlockBounds(0.0F, 0.0F, 0.0F, var2, 1.0F, 1.0F); - } - - } - - public void onBlockClicked(World var1, int var2, int var3, int var4, EntityPlayer var5) { - this.blockActivated(var1, var2, var3, var4, var5); - } - - public boolean blockActivated(World var1, int var2, int var3, int var4, EntityPlayer var5) { - int var6 = var1.getBlockMetadata(var2, var3, var4); - if((var6 & 8) != 0) { - if(var1.getBlockId(var2, var3 - 1, var4) == this.blockID) { - this.blockActivated(var1, var2, var3 - 1, var4, var5); - } - - return true; - } else { - if(var1.getBlockId(var2, var3 + 1, var4) == this.blockID) { - var1.setBlockMetadataWithNotify(var2, var3 + 1, var4, (var6 ^ 4) + 8); - } - - var1.setBlockMetadataWithNotify(var2, var3, var4, var6 ^ 4); - var1.markBlocksDirty(var2, var3 - 1, var4, var2, var3, var4); - if(Math.random() < 0.5D) { - var1.playSoundEffect((double)var2 + 0.5D, (double)var3 + 0.5D, (double)var4 + 0.5D, "random.door_open", 1.0F, var1.rand.nextFloat() * 0.1F + 0.9F); - } else { - var1.playSoundEffect((double)var2 + 0.5D, (double)var3 + 0.5D, (double)var4 + 0.5D, "random.door_close", 1.0F, var1.rand.nextFloat() * 0.1F + 0.9F); - } - - return true; - } - } - - public void onNeighborBlockChange(World var1, int var2, int var3, int var4, int var5) { - int var6 = var1.getBlockMetadata(var2, var3, var4); - if((var6 & 8) != 0) { - if(var1.getBlockId(var2, var3 - 1, var4) != this.blockID) { - var1.setBlockWithNotify(var2, var3, var4, 0); - } - } else { - boolean var7 = false; - if(var1.getBlockId(var2, var3 + 1, var4) != this.blockID) { - var1.setBlockWithNotify(var2, var3, var4, 0); - var7 = true; - } - - if(!var1.isBlockNormalCube(var2, var3 - 1, var4)) { - var1.setBlockWithNotify(var2, var3, var4, 0); - var7 = true; - if(var1.getBlockId(var2, var3 + 1, var4) == this.blockID) { - var1.setBlockWithNotify(var2, var3 + 1, var4, 0); - } - } - - if(var7) { - this.dropBlockAsItem(var1, var2, var3, var4, var6); - } - } - - } - - public int idDropped(int var1, Random var2) { - return (var1 & 8) != 0 ? 0 : Item.door.shiftedIndex; - } - - public MovingObjectPosition collisionRayTrace(World var1, int var2, int var3, int var4, Vec3D var5, Vec3D var6) { - this.setBlockBoundsBasedOnState(var1, var2, var3, var4); - return super.collisionRayTrace(var1, var2, var3, var4, var5, var6); - } - - public int getState(int var1) { - return (var1 & 4) == 0 ? var1 - 1 & 3 : var1 & 3; - } - - public boolean canPlaceBlockAt(World var1, int var2, int var3, int var4) { - return var3 >= 127 ? false : var1.isBlockNormalCube(var2, var3 - 1, var4) && super.canPlaceBlockAt(var1, var2, var3, var4) && super.canPlaceBlockAt(var1, var2, var3 + 1, var4); - } -} diff --git a/src/net/minecraft/src/BlockFarmland.java b/src/net/minecraft/src/BlockFarmland.java deleted file mode 100644 index 790d39c..0000000 --- a/src/net/minecraft/src/BlockFarmland.java +++ /dev/null @@ -1,93 +0,0 @@ -package net.minecraft.src; - -import java.util.Random; - -public class BlockFarmland extends Block { - protected BlockFarmland(int var1) { - super(var1, Material.ground); - this.blockIndexInTexture = 87; - this.setTickOnLoad(true); - this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 15.0F / 16.0F, 1.0F); - this.setLightOpacity(255); - } - - public AxisAlignedBB getCollisionBoundingBoxFromPool(World var1, int var2, int var3, int var4) { - return AxisAlignedBB.getBoundingBoxFromPool((double)(var2 + 0), (double)(var3 + 0), (double)(var4 + 0), (double)(var2 + 1), (double)(var3 + 1), (double)(var4 + 1)); - } - - public boolean isOpaqueCube() { - return false; - } - - public boolean renderAsNormalBlock() { - return false; - } - - public int getBlockTextureFromSideAndMetadata(int var1, int var2) { - return var1 == 1 && var2 > 0 ? this.blockIndexInTexture - 1 : (var1 == 1 ? this.blockIndexInTexture : 2); - } - - public void updateTick(World var1, int var2, int var3, int var4, Random var5) { - if(var5.nextInt(5) == 0) { - if(this.isWaterNearby(var1, var2, var3, var4)) { - var1.setBlockMetadataWithNotify(var2, var3, var4, 7); - } else { - int var6 = var1.getBlockMetadata(var2, var3, var4); - if(var6 > 0) { - var1.setBlockMetadataWithNotify(var2, var3, var4, var6 - 1); - } else if(!this.isCropsNearby(var1, var2, var3, var4)) { - var1.setBlockWithNotify(var2, var3, var4, Block.dirt.blockID); - } - } - } - - } - - public void onEntityWalking(World var1, int var2, int var3, int var4, Entity var5) { - if(var1.rand.nextInt(4) == 0) { - var1.setBlockWithNotify(var2, var3, var4, Block.dirt.blockID); - } - - } - - private boolean isCropsNearby(World var1, int var2, int var3, int var4) { - byte var5 = 0; - - for(int var6 = var2 - var5; var6 <= var2 + var5; ++var6) { - for(int var7 = var4 - var5; var7 <= var4 + var5; ++var7) { - if(var1.getBlockId(var6, var3 + 1, var7) == Block.crops.blockID) { - return true; - } - } - } - - return false; - } - - private boolean isWaterNearby(World var1, int var2, int var3, int var4) { - for(int var5 = var2 - 4; var5 <= var2 + 4; ++var5) { - for(int var6 = var3; var6 <= var3 + 1; ++var6) { - for(int var7 = var4 - 4; var7 <= var4 + 4; ++var7) { - if(var1.getBlockMaterial(var5, var6, var7) == Material.water) { - return true; - } - } - } - } - - return false; - } - - public void onNeighborBlockChange(World var1, int var2, int var3, int var4, int var5) { - super.onNeighborBlockChange(var1, var2, var3, var4, var5); - Material var6 = var1.getBlockMaterial(var2, var3 + 1, var4); - if(var6.isSolid()) { - var1.setBlockWithNotify(var2, var3, var4, Block.dirt.blockID); - } - - } - - public int idDropped(int var1, Random var2) { - return Block.dirt.idDropped(0, var2); - } -} diff --git a/src/net/minecraft/src/BlockFire.java b/src/net/minecraft/src/BlockFire.java deleted file mode 100644 index 594e81e..0000000 --- a/src/net/minecraft/src/BlockFire.java +++ /dev/null @@ -1,225 +0,0 @@ -package net.minecraft.src; - -import java.util.Random; - -public class BlockFire extends Block { - private int[] chanceToEncourageFire = new int[256]; - private int[] abilityToCatchFire = new int[256]; - - protected BlockFire(int var1, int var2) { - super(var1, var2, Material.fire); - this.setBurnRate(Block.planks.blockID, 5, 20); - this.setBurnRate(Block.wood.blockID, 5, 5); - this.setBurnRate(Block.leaves.blockID, 30, 60); - this.setBurnRate(Block.bookshelf.blockID, 30, 20); - this.setBurnRate(Block.tnt.blockID, 15, 100); - this.setBurnRate(Block.cloth.blockID, 30, 60); - this.setTickOnLoad(true); - } - - private void setBurnRate(int var1, int var2, int var3) { - this.chanceToEncourageFire[var1] = var2; - this.abilityToCatchFire[var1] = var3; - } - - public AxisAlignedBB getCollisionBoundingBoxFromPool(World var1, int var2, int var3, int var4) { - return null; - } - - public boolean isOpaqueCube() { - return false; - } - - public boolean renderAsNormalBlock() { - return false; - } - - public int getRenderType() { - return 3; - } - - public int quantityDropped(Random var1) { - return 0; - } - - public int tickRate() { - return 20; - } - - public void updateTick(World var1, int var2, int var3, int var4, Random var5) { - int var6 = var1.getBlockMetadata(var2, var3, var4); - if(var6 < 15) { - var1.setBlockMetadataWithNotify(var2, var3, var4, var6 + 1); - var1.scheduleBlockUpdate(var2, var3, var4, this.blockID); - } - - if(!this.canNeighborCatchFire(var1, var2, var3, var4)) { - if(!var1.isBlockNormalCube(var2, var3 - 1, var4) || var6 > 3) { - var1.setBlockWithNotify(var2, var3, var4, 0); - } - - } else if(!this.canBlockCatchFire(var1, var2, var3 - 1, var4) && var6 == 15 && var5.nextInt(4) == 0) { - var1.setBlockWithNotify(var2, var3, var4, 0); - } else { - if(var6 % 5 == 0 && var6 > 5) { - this.tryToCatchBlockOnFire(var1, var2 + 1, var3, var4, 300, var5); - this.tryToCatchBlockOnFire(var1, var2 - 1, var3, var4, 300, var5); - this.tryToCatchBlockOnFire(var1, var2, var3 - 1, var4, 100, var5); - this.tryToCatchBlockOnFire(var1, var2, var3 + 1, var4, 200, var5); - this.tryToCatchBlockOnFire(var1, var2, var3, var4 - 1, 300, var5); - this.tryToCatchBlockOnFire(var1, var2, var3, var4 + 1, 300, var5); - - for(int var7 = var2 - 1; var7 <= var2 + 1; ++var7) { - for(int var8 = var4 - 1; var8 <= var4 + 1; ++var8) { - for(int var9 = var3 - 1; var9 <= var3 + 4; ++var9) { - if(var7 != var2 || var9 != var3 || var8 != var4) { - int var10 = 100; - if(var9 > var3 + 1) { - var10 += (var9 - (var3 + 1)) * 100; - } - - int var11 = this.getChanceOfNeighborsEncouragingFire(var1, var7, var9, var8); - if(var11 > 0 && var5.nextInt(var10) <= var11) { - var1.setBlockWithNotify(var7, var9, var8, this.blockID); - } - } - } - } - } - } - - } - } - - private void tryToCatchBlockOnFire(World var1, int var2, int var3, int var4, int var5, Random var6) { - int var7 = this.abilityToCatchFire[var1.getBlockId(var2, var3, var4)]; - if(var6.nextInt(var5) < var7) { - boolean var8 = var1.getBlockId(var2, var3, var4) == Block.tnt.blockID; - if(var6.nextInt(2) == 0) { - var1.setBlockWithNotify(var2, var3, var4, this.blockID); - } else { - var1.setBlockWithNotify(var2, var3, var4, 0); - } - - if(var8) { - Block.tnt.onBlockDestroyedByPlayer(var1, var2, var3, var4, 0); - } - } - - } - - private boolean canNeighborCatchFire(World var1, int var2, int var3, int var4) { - return this.canBlockCatchFire(var1, var2 + 1, var3, var4) ? true : (this.canBlockCatchFire(var1, var2 - 1, var3, var4) ? true : (this.canBlockCatchFire(var1, var2, var3 - 1, var4) ? true : (this.canBlockCatchFire(var1, var2, var3 + 1, var4) ? true : (this.canBlockCatchFire(var1, var2, var3, var4 - 1) ? true : this.canBlockCatchFire(var1, var2, var3, var4 + 1))))); - } - - private int getChanceOfNeighborsEncouragingFire(World var1, int var2, int var3, int var4) { - byte var5 = 0; - if(var1.getBlockId(var2, var3, var4) != 0) { - return 0; - } else { - int var6 = this.getChanceToEncourageFire(var1, var2 + 1, var3, var4, var5); - var6 = this.getChanceToEncourageFire(var1, var2 - 1, var3, var4, var6); - var6 = this.getChanceToEncourageFire(var1, var2, var3 - 1, var4, var6); - var6 = this.getChanceToEncourageFire(var1, var2, var3 + 1, var4, var6); - var6 = this.getChanceToEncourageFire(var1, var2, var3, var4 - 1, var6); - var6 = this.getChanceToEncourageFire(var1, var2, var3, var4 + 1, var6); - return var6; - } - } - - public boolean isCollidable() { - return false; - } - - public boolean canBlockCatchFire(IBlockAccess var1, int var2, int var3, int var4) { - return this.chanceToEncourageFire[var1.getBlockId(var2, var3, var4)] > 0; - } - - public int getChanceToEncourageFire(World var1, int var2, int var3, int var4, int var5) { - int var6 = this.chanceToEncourageFire[var1.getBlockId(var2, var3, var4)]; - return var6 > var5 ? var6 : var5; - } - - public boolean canPlaceBlockAt(World var1, int var2, int var3, int var4) { - return var1.isBlockNormalCube(var2, var3 - 1, var4) || this.canNeighborCatchFire(var1, var2, var3, var4); - } - - public void onNeighborBlockChange(World var1, int var2, int var3, int var4, int var5) { - if(!var1.isBlockNormalCube(var2, var3 - 1, var4) && !this.canNeighborCatchFire(var1, var2, var3, var4)) { - var1.setBlockWithNotify(var2, var3, var4, 0); - } - } - - public void onBlockAdded(World var1, int var2, int var3, int var4) { - if(!var1.isBlockNormalCube(var2, var3 - 1, var4) && !this.canNeighborCatchFire(var1, var2, var3, var4)) { - var1.setBlockWithNotify(var2, var3, var4, 0); - } else { - var1.scheduleBlockUpdate(var2, var3, var4, this.blockID); - } - } - - public void randomDisplayTick(World var1, int var2, int var3, int var4, Random var5) { - if(var5.nextInt(24) == 0) { - var1.playSoundEffect((double)((float)var2 + 0.5F), (double)((float)var3 + 0.5F), (double)((float)var4 + 0.5F), "fire.fire", 1.0F + var5.nextFloat(), var5.nextFloat() * 0.7F + 0.3F); - } - - int var6; - float var7; - float var8; - float var9; - if(!var1.isBlockNormalCube(var2, var3 - 1, var4) && !Block.fire.canBlockCatchFire(var1, var2, var3 - 1, var4)) { - if(Block.fire.canBlockCatchFire(var1, var2 - 1, var3, var4)) { - for(var6 = 0; var6 < 2; ++var6) { - var7 = (float)var2 + var5.nextFloat() * 0.1F; - var8 = (float)var3 + var5.nextFloat(); - var9 = (float)var4 + var5.nextFloat(); - var1.spawnParticle("largesmoke", (double)var7, (double)var8, (double)var9, 0.0D, 0.0D, 0.0D); - } - } - - if(Block.fire.canBlockCatchFire(var1, var2 + 1, var3, var4)) { - for(var6 = 0; var6 < 2; ++var6) { - var7 = (float)(var2 + 1) - var5.nextFloat() * 0.1F; - var8 = (float)var3 + var5.nextFloat(); - var9 = (float)var4 + var5.nextFloat(); - var1.spawnParticle("largesmoke", (double)var7, (double)var8, (double)var9, 0.0D, 0.0D, 0.0D); - } - } - - if(Block.fire.canBlockCatchFire(var1, var2, var3, var4 - 1)) { - for(var6 = 0; var6 < 2; ++var6) { - var7 = (float)var2 + var5.nextFloat(); - var8 = (float)var3 + var5.nextFloat(); - var9 = (float)var4 + var5.nextFloat() * 0.1F; - var1.spawnParticle("largesmoke", (double)var7, (double)var8, (double)var9, 0.0D, 0.0D, 0.0D); - } - } - - if(Block.fire.canBlockCatchFire(var1, var2, var3, var4 + 1)) { - for(var6 = 0; var6 < 2; ++var6) { - var7 = (float)var2 + var5.nextFloat(); - var8 = (float)var3 + var5.nextFloat(); - var9 = (float)(var4 + 1) - var5.nextFloat() * 0.1F; - var1.spawnParticle("largesmoke", (double)var7, (double)var8, (double)var9, 0.0D, 0.0D, 0.0D); - } - } - - if(Block.fire.canBlockCatchFire(var1, var2, var3 + 1, var4)) { - for(var6 = 0; var6 < 2; ++var6) { - var7 = (float)var2 + var5.nextFloat(); - var8 = (float)(var3 + 1) - var5.nextFloat() * 0.1F; - var9 = (float)var4 + var5.nextFloat(); - var1.spawnParticle("largesmoke", (double)var7, (double)var8, (double)var9, 0.0D, 0.0D, 0.0D); - } - } - } else { - for(var6 = 0; var6 < 3; ++var6) { - var7 = (float)var2 + var5.nextFloat(); - var8 = (float)var3 + var5.nextFloat() * 0.5F + 0.5F; - var9 = (float)var4 + var5.nextFloat(); - var1.spawnParticle("largesmoke", (double)var7, (double)var8, (double)var9, 0.0D, 0.0D, 0.0D); - } - } - - } -} diff --git a/src/net/minecraft/src/BlockFlower.java b/src/net/minecraft/src/BlockFlower.java deleted file mode 100644 index 8551ad0..0000000 --- a/src/net/minecraft/src/BlockFlower.java +++ /dev/null @@ -1,58 +0,0 @@ -package net.minecraft.src; - -import java.util.Random; - -public class BlockFlower extends Block { - protected BlockFlower(int var1, int var2) { - super(var1, Material.plants); - this.blockIndexInTexture = var2; - this.setTickOnLoad(true); - float var3 = 0.2F; - this.setBlockBounds(0.5F - var3, 0.0F, 0.5F - var3, 0.5F + var3, var3 * 3.0F, 0.5F + var3); - } - - public boolean canPlaceBlockAt(World var1, int var2, int var3, int var4) { - return this.canThisPlantGrowOnThisBlockID(var1.getBlockId(var2, var3 - 1, var4)); - } - - protected boolean canThisPlantGrowOnThisBlockID(int var1) { - return var1 == Block.grass.blockID || var1 == Block.dirt.blockID || var1 == Block.tilledField.blockID; - } - - public void onNeighborBlockChange(World var1, int var2, int var3, int var4, int var5) { - super.onNeighborBlockChange(var1, var2, var3, var4, var5); - this.checkFlowerChange(var1, var2, var3, var4); - } - - public void updateTick(World var1, int var2, int var3, int var4, Random var5) { - this.checkFlowerChange(var1, var2, var3, var4); - } - - protected final void checkFlowerChange(World var1, int var2, int var3, int var4) { - if(!this.canBlockStay(var1, var2, var3, var4)) { - this.dropBlockAsItem(var1, var2, var3, var4, var1.getBlockMetadata(var2, var3, var4)); - var1.setBlockWithNotify(var2, var3, var4, 0); - } - - } - - public boolean canBlockStay(World var1, int var2, int var3, int var4) { - return (var1.getBlockLightValue(var2, var3, var4) >= 8 || var1.canBlockSeeTheSky(var2, var3, var4)) && this.canThisPlantGrowOnThisBlockID(var1.getBlockId(var2, var3 - 1, var4)); - } - - public AxisAlignedBB getCollisionBoundingBoxFromPool(World var1, int var2, int var3, int var4) { - return null; - } - - public boolean isOpaqueCube() { - return false; - } - - public boolean renderAsNormalBlock() { - return false; - } - - public int getRenderType() { - return 1; - } -} diff --git a/src/net/minecraft/src/BlockFlowing.java b/src/net/minecraft/src/BlockFlowing.java deleted file mode 100644 index 7052e0c..0000000 --- a/src/net/minecraft/src/BlockFlowing.java +++ /dev/null @@ -1,253 +0,0 @@ -package net.minecraft.src; - -import java.util.Random; - -public class BlockFlowing extends BlockFluid { - int numAdjacentSources = 0; - boolean[] isOptimalFlowDirection = new boolean[4]; - int[] flowCost = new int[4]; - - protected BlockFlowing(int var1, Material var2) { - super(var1, var2); - } - - private void updateFlow(World var1, int var2, int var3, int var4) { - int var5 = var1.getBlockMetadata(var2, var3, var4); - var1.setBlockAndMetadata(var2, var3, var4, this.blockID + 1, var5); - var1.markBlocksDirty(var2, var3, var4, var2, var3, var4); - } - - public void updateTick(World var1, int var2, int var3, int var4, Random var5) { - int var6 = this.getFlowDecay(var1, var2, var3, var4); - boolean var7 = true; - int var9; - if(var6 > 0) { - byte var8 = -100; - this.numAdjacentSources = 0; - int var11 = this.getSmallestFlowDecay(var1, var2 - 1, var3, var4, var8); - var11 = this.getSmallestFlowDecay(var1, var2 + 1, var3, var4, var11); - var11 = this.getSmallestFlowDecay(var1, var2, var3, var4 - 1, var11); - var11 = this.getSmallestFlowDecay(var1, var2, var3, var4 + 1, var11); - var9 = var11 + this.fluidType; - if(var9 >= 8 || var11 < 0) { - var9 = -1; - } - - if(this.getFlowDecay(var1, var2, var3 + 1, var4) >= 0) { - int var10 = this.getFlowDecay(var1, var2, var3 + 1, var4); - if(var10 >= 8) { - var9 = var10; - } else { - var9 = var10 + 8; - } - } - - if(this.numAdjacentSources >= 2 && this.blockMaterial == Material.water) { - var9 = 0; - } - - if(this.blockMaterial == Material.lava && var6 < 8 && var9 < 8 && var9 > var6 && var5.nextInt(4) != 0) { - var9 = var6; - var7 = false; - } - - if(var9 != var6) { - var6 = var9; - if(var9 < 0) { - var1.setBlockWithNotify(var2, var3, var4, 0); - } else { - var1.setBlockMetadataWithNotify(var2, var3, var4, var9); - var1.scheduleBlockUpdate(var2, var3, var4, this.blockID); - var1.notifyBlocksOfNeighborChange(var2, var3, var4, this.blockID); - } - } else if(var7) { - this.updateFlow(var1, var2, var3, var4); - } - } else { - this.updateFlow(var1, var2, var3, var4); - } - - if(this.liquidCanDisplaceBlock(var1, var2, var3 - 1, var4)) { - if(var6 >= 8) { - var1.setBlockAndMetadataWithNotify(var2, var3 - 1, var4, this.blockID, var6); - } else { - var1.setBlockAndMetadataWithNotify(var2, var3 - 1, var4, this.blockID, var6 + 8); - } - } else if(var6 >= 0 && (var6 == 0 || this.blockBlocksFlow(var1, var2, var3 - 1, var4))) { - boolean[] var12 = this.getOptimalFlowDirections(var1, var2, var3, var4); - var9 = var6 + this.fluidType; - if(var6 >= 8) { - var9 = 1; - } - - if(var9 >= 8) { - return; - } - - if(var12[0]) { - this.flowIntoBlock(var1, var2 - 1, var3, var4, var9); - } - - if(var12[1]) { - this.flowIntoBlock(var1, var2 + 1, var3, var4, var9); - } - - if(var12[2]) { - this.flowIntoBlock(var1, var2, var3, var4 - 1, var9); - } - - if(var12[3]) { - this.flowIntoBlock(var1, var2, var3, var4 + 1, var9); - } - } - - } - - private void flowIntoBlock(World var1, int var2, int var3, int var4, int var5) { - if(this.liquidCanDisplaceBlock(var1, var2, var3, var4)) { - int var6 = var1.getBlockId(var2, var3, var4); - if(var6 > 0) { - if(this.blockMaterial == Material.lava) { - this.triggerLavaMixEffects(var1, var2, var3, var4); - } else { - Block.blocksList[var6].dropBlockAsItem(var1, var2, var3, var4, var1.getBlockMetadata(var2, var3, var4)); - } - } - - var1.setBlockAndMetadataWithNotify(var2, var3, var4, this.blockID, var5); - } - - } - - private int calculateFlowCost(World var1, int var2, int var3, int var4, int var5, int var6) { - int var7 = 1000; - - for(int var8 = 0; var8 < 4; ++var8) { - if((var8 != 0 || var6 != 1) && (var8 != 1 || var6 != 0) && (var8 != 2 || var6 != 3) && (var8 != 3 || var6 != 2)) { - int var9 = var2; - int var11 = var4; - if(var8 == 0) { - var9 = var2 - 1; - } - - if(var8 == 1) { - ++var9; - } - - if(var8 == 2) { - var11 = var4 - 1; - } - - if(var8 == 3) { - ++var11; - } - - if(!this.blockBlocksFlow(var1, var9, var3, var11) && (var1.getBlockMaterial(var9, var3, var11) != this.blockMaterial || var1.getBlockMetadata(var9, var3, var11) != 0)) { - if(!this.blockBlocksFlow(var1, var9, var3 - 1, var11)) { - return var5; - } - - if(var5 < 4) { - int var12 = this.calculateFlowCost(var1, var9, var3, var11, var5 + 1, var8); - if(var12 < var7) { - var7 = var12; - } - } - } - } - } - - return var7; - } - - private boolean[] getOptimalFlowDirections(World var1, int var2, int var3, int var4) { - int var5; - int var6; - for(var5 = 0; var5 < 4; ++var5) { - this.flowCost[var5] = 1000; - var6 = var2; - int var8 = var4; - if(var5 == 0) { - var6 = var2 - 1; - } - - if(var5 == 1) { - ++var6; - } - - if(var5 == 2) { - var8 = var4 - 1; - } - - if(var5 == 3) { - ++var8; - } - - if(!this.blockBlocksFlow(var1, var6, var3, var8) && (var1.getBlockMaterial(var6, var3, var8) != this.blockMaterial || var1.getBlockMetadata(var6, var3, var8) != 0)) { - if(!this.blockBlocksFlow(var1, var6, var3 - 1, var8)) { - this.flowCost[var5] = 0; - } else { - this.flowCost[var5] = this.calculateFlowCost(var1, var6, var3, var8, 1, var5); - } - } - } - - var5 = this.flowCost[0]; - - for(var6 = 1; var6 < 4; ++var6) { - if(this.flowCost[var6] < var5) { - var5 = this.flowCost[var6]; - } - } - - for(var6 = 0; var6 < 4; ++var6) { - this.isOptimalFlowDirection[var6] = this.flowCost[var6] == var5; - } - - return this.isOptimalFlowDirection; - } - - private boolean blockBlocksFlow(World var1, int var2, int var3, int var4) { - int var5 = var1.getBlockId(var2, var3, var4); - if(var5 != Block.doorWood.blockID && var5 != Block.signStanding.blockID && var5 != Block.ladder.blockID) { - if(var5 == 0) { - return false; - } else { - Material var6 = Block.blocksList[var5].blockMaterial; - return var6.isSolid(); - } - } else { - return true; - } - } - - protected int getSmallestFlowDecay(World var1, int var2, int var3, int var4, int var5) { - int var6 = this.getFlowDecay(var1, var2, var3, var4); - if(var6 < 0) { - return var5; - } else { - if(var6 == 0) { - ++this.numAdjacentSources; - } - - if(var6 >= 8) { - var6 = 0; - } - - return var5 >= 0 && var6 >= var5 ? var5 : var6; - } - } - - private boolean liquidCanDisplaceBlock(World var1, int var2, int var3, int var4) { - Material var5 = var1.getBlockMaterial(var2, var3, var4); - return var5 == this.blockMaterial ? false : (var5 == Material.lava ? false : !this.blockBlocksFlow(var1, var2, var3, var4)); - } - - public void onBlockAdded(World var1, int var2, int var3, int var4) { - super.onBlockAdded(var1, var2, var3, var4); - if(var1.getBlockId(var2, var3, var4) == this.blockID) { - var1.scheduleBlockUpdate(var2, var3, var4, this.blockID); - } - - } -} diff --git a/src/net/minecraft/src/BlockFluid.java b/src/net/minecraft/src/BlockFluid.java deleted file mode 100644 index cb56215..0000000 --- a/src/net/minecraft/src/BlockFluid.java +++ /dev/null @@ -1,273 +0,0 @@ -package net.minecraft.src; - -import java.util.Random; - -public abstract class BlockFluid extends Block { - protected int fluidType = 1; - - protected BlockFluid(int var1, Material var2) { - super(var1, (var2 == Material.lava ? 14 : 12) * 16 + 13, var2); - float var3 = 0.0F; - float var4 = 0.0F; - if(var2 == Material.lava) { - this.fluidType = 2; - } - - this.setBlockBounds(0.0F + var4, 0.0F + var3, 0.0F + var4, 1.0F + var4, 1.0F + var3, 1.0F + var4); - this.setTickOnLoad(true); - } - - public static float getPercentAir(int var0) { - if(var0 >= 8) { - var0 = 0; - } - - float var1 = (float)(var0 + 1) / 9.0F; - return var1; - } - - public int getBlockTextureFromSide(int var1) { - return var1 != 0 && var1 != 1 ? this.blockIndexInTexture + 1 : this.blockIndexInTexture; - } - - protected int getFlowDecay(World var1, int var2, int var3, int var4) { - return var1.getBlockMaterial(var2, var3, var4) != this.blockMaterial ? -1 : var1.getBlockMetadata(var2, var3, var4); - } - - protected int getEffectiveFlowDecay(IBlockAccess var1, int var2, int var3, int var4) { - if(var1.getBlockMaterial(var2, var3, var4) != this.blockMaterial) { - return -1; - } else { - int var5 = var1.getBlockMetadata(var2, var3, var4); - if(var5 >= 8) { - var5 = 0; - } - - return var5; - } - } - - public boolean renderAsNormalBlock() { - return false; - } - - public boolean isOpaqueCube() { - return false; - } - - public boolean canCollideCheck(int var1, boolean var2) { - return var2 && var1 == 0; - } - - public boolean shouldSideBeRendered(IBlockAccess var1, int var2, int var3, int var4, int var5) { - Material var6 = var1.getBlockMaterial(var2, var3, var4); - return var6 == this.blockMaterial ? false : (var5 == 1 ? true : super.shouldSideBeRendered(var1, var2, var3, var4, var5)); - } - - public AxisAlignedBB getCollisionBoundingBoxFromPool(World var1, int var2, int var3, int var4) { - return null; - } - - public int getRenderType() { - return 4; - } - - public int idDropped(int var1, Random var2) { - return 0; - } - - public int quantityDropped(Random var1) { - return 0; - } - - private Vec3D getFlowVector(IBlockAccess var1, int var2, int var3, int var4) { - Vec3D var5 = Vec3D.createVector(0.0D, 0.0D, 0.0D); - int var6 = this.getEffectiveFlowDecay(var1, var2, var3, var4); - - for(int var7 = 0; var7 < 4; ++var7) { - int var8 = var2; - int var10 = var4; - if(var7 == 0) { - var8 = var2 - 1; - } - - if(var7 == 1) { - var10 = var4 - 1; - } - - if(var7 == 2) { - ++var8; - } - - if(var7 == 3) { - ++var10; - } - - int var11 = this.getEffectiveFlowDecay(var1, var8, var3, var10); - int var12; - if(var11 < 0) { - var11 = this.getEffectiveFlowDecay(var1, var8, var3 - 1, var10); - if(var11 >= 0) { - var12 = var11 - (var6 - 8); - var5 = var5.addVector((double)((var8 - var2) * var12), (double)((var3 - var3) * var12), (double)((var10 - var4) * var12)); - } - } else if(var11 >= 0) { - var12 = var11 - var6; - var5 = var5.addVector((double)((var8 - var2) * var12), (double)((var3 - var3) * var12), (double)((var10 - var4) * var12)); - } - } - - if(var1.getBlockMetadata(var2, var3, var4) >= 8) { - boolean var13 = false; - if(var13 || this.shouldSideBeRendered(var1, var2, var3, var4 - 1, 2)) { - var13 = true; - } - - if(var13 || this.shouldSideBeRendered(var1, var2, var3, var4 + 1, 3)) { - var13 = true; - } - - if(var13 || this.shouldSideBeRendered(var1, var2 - 1, var3, var4, 4)) { - var13 = true; - } - - if(var13 || this.shouldSideBeRendered(var1, var2 + 1, var3, var4, 5)) { - var13 = true; - } - - if(var13 || this.shouldSideBeRendered(var1, var2, var3 + 1, var4 - 1, 2)) { - var13 = true; - } - - if(var13 || this.shouldSideBeRendered(var1, var2, var3 + 1, var4 + 1, 3)) { - var13 = true; - } - - if(var13 || this.shouldSideBeRendered(var1, var2 - 1, var3 + 1, var4, 4)) { - var13 = true; - } - - if(var13 || this.shouldSideBeRendered(var1, var2 + 1, var3 + 1, var4, 5)) { - var13 = true; - } - - if(var13) { - var5 = var5.normalize().addVector(0.0D, -6.0D, 0.0D); - } - } - - var5 = var5.normalize(); - return var5; - } - - public void velocityToAddToEntity(World var1, int var2, int var3, int var4, Entity var5, Vec3D var6) { - Vec3D var7 = this.getFlowVector(var1, var2, var3, var4); - var6.xCoord += var7.xCoord; - var6.yCoord += var7.yCoord; - var6.zCoord += var7.zCoord; - } - - public int tickRate() { - return this.blockMaterial == Material.water ? 5 : (this.blockMaterial == Material.lava ? 30 : 0); - } - - public float getBlockBrightness(IBlockAccess var1, int var2, int var3, int var4) { - float var5 = var1.getBrightness(var2, var3, var4); - float var6 = var1.getBrightness(var2, var3 + 1, var4); - return var5 > var6 ? var5 : var6; - } - - public void updateTick(World var1, int var2, int var3, int var4, Random var5) { - super.updateTick(var1, var2, var3, var4, var5); - } - - public int getRenderBlockPass() { - return this.blockMaterial == Material.water ? 1 : 0; - } - - public void randomDisplayTick(World var1, int var2, int var3, int var4, Random var5) { - if(this.blockMaterial == Material.water && var5.nextInt(64) == 0) { - int var6 = var1.getBlockMetadata(var2, var3, var4); - if(var6 > 0 && var6 < 8) { - var1.playSoundEffect((double)((float)var2 + 0.5F), (double)((float)var3 + 0.5F), (double)((float)var4 + 0.5F), "liquid.water", var5.nextFloat() * 0.25F + 12.0F / 16.0F, var5.nextFloat() * 1.0F + 0.5F); - } - } - - if(this.blockMaterial == Material.lava && var1.getBlockMaterial(var2, var3 + 1, var4) == Material.air && !var1.isBlockNormalCube(var2, var3 + 1, var4) && var5.nextInt(100) == 0) { - double var12 = (double)((float)var2 + var5.nextFloat()); - double var8 = (double)var3 + this.maxY; - double var10 = (double)((float)var4 + var5.nextFloat()); - var1.spawnParticle("lava", var12, var8, var10, 0.0D, 0.0D, 0.0D); - } - - } - - public static double getFlowDirection(IBlockAccess var0, int var1, int var2, int var3, Material var4) { - Vec3D var5 = null; - if(var4 == Material.water) { - var5 = ((BlockFluid)Block.waterMoving).getFlowVector(var0, var1, var2, var3); - } - - if(var4 == Material.lava) { - var5 = ((BlockFluid)Block.lavaMoving).getFlowVector(var0, var1, var2, var3); - } - - return var5.xCoord == 0.0D && var5.zCoord == 0.0D ? -1000.0D : Math.atan2(var5.zCoord, var5.xCoord) - Math.PI * 0.5D; - } - - public void onBlockAdded(World var1, int var2, int var3, int var4) { - this.checkForHarden(var1, var2, var3, var4); - } - - public void onNeighborBlockChange(World var1, int var2, int var3, int var4, int var5) { - this.checkForHarden(var1, var2, var3, var4); - } - - private void checkForHarden(World var1, int var2, int var3, int var4) { - if(var1.getBlockId(var2, var3, var4) == this.blockID) { - if(this.blockMaterial == Material.lava) { - boolean var5 = false; - if(var5 || var1.getBlockMaterial(var2, var3, var4 - 1) == Material.water) { - var5 = true; - } - - if(var5 || var1.getBlockMaterial(var2, var3, var4 + 1) == Material.water) { - var5 = true; - } - - if(var5 || var1.getBlockMaterial(var2 - 1, var3, var4) == Material.water) { - var5 = true; - } - - if(var5 || var1.getBlockMaterial(var2 + 1, var3, var4) == Material.water) { - var5 = true; - } - - if(var5 || var1.getBlockMaterial(var2, var3 + 1, var4) == Material.water) { - var5 = true; - } - - if(var5) { - int var6 = var1.getBlockMetadata(var2, var3, var4); - if(var6 == 0) { - var1.setBlockWithNotify(var2, var3, var4, Block.obsidian.blockID); - } else if(var6 <= 4) { - var1.setBlockWithNotify(var2, var3, var4, Block.cobblestone.blockID); - } - - this.triggerLavaMixEffects(var1, var2, var3, var4); - } - } - - } - } - - protected void triggerLavaMixEffects(World var1, int var2, int var3, int var4) { - var1.playSoundEffect((double)((float)var2 + 0.5F), (double)((float)var3 + 0.5F), (double)((float)var4 + 0.5F), "random.fizz", 0.5F, 2.6F + (var1.rand.nextFloat() - var1.rand.nextFloat()) * 0.8F); - - for(int var5 = 0; var5 < 8; ++var5) { - var1.spawnParticle("largesmoke", (double)var2 + Math.random(), (double)var3 + 1.2D, (double)var4 + Math.random(), 0.0D, 0.0D, 0.0D); - } - - } -} diff --git a/src/net/minecraft/src/BlockFurnace.java b/src/net/minecraft/src/BlockFurnace.java deleted file mode 100644 index 69a78c5..0000000 --- a/src/net/minecraft/src/BlockFurnace.java +++ /dev/null @@ -1,106 +0,0 @@ -package net.minecraft.src; - -import java.util.Random; - -public class BlockFurnace extends BlockContainer { - private final boolean isActive; - - protected BlockFurnace(int var1, boolean var2) { - super(var1, Material.rock); - this.isActive = var2; - this.blockIndexInTexture = 45; - } - - public void onBlockAdded(World var1, int var2, int var3, int var4) { - super.onBlockAdded(var1, var2, var3, var4); - this.setDefaultDirection(var1, var2, var3, var4); - } - - private void setDefaultDirection(World var1, int var2, int var3, int var4) { - int var5 = var1.getBlockId(var2, var3, var4 - 1); - int var6 = var1.getBlockId(var2, var3, var4 + 1); - int var7 = var1.getBlockId(var2 - 1, var3, var4); - int var8 = var1.getBlockId(var2 + 1, var3, var4); - byte var9 = 3; - if(Block.opaqueCubeLookup[var5] && !Block.opaqueCubeLookup[var6]) { - var9 = 3; - } - - if(Block.opaqueCubeLookup[var6] && !Block.opaqueCubeLookup[var5]) { - var9 = 2; - } - - if(Block.opaqueCubeLookup[var7] && !Block.opaqueCubeLookup[var8]) { - var9 = 5; - } - - if(Block.opaqueCubeLookup[var8] && !Block.opaqueCubeLookup[var7]) { - var9 = 4; - } - - var1.setBlockMetadataWithNotify(var2, var3, var4, var9); - } - - public int getBlockTextureGeneric(IBlockAccess var1, int var2, int var3, int var4, int var5) { - if(var5 == 1) { - return Block.stone.blockIndexInTexture; - } else if(var5 == 0) { - return Block.stone.blockIndexInTexture; - } else { - int var6 = var1.getBlockMetadata(var2, var3, var4); - return var5 != var6 ? this.blockIndexInTexture : (this.isActive ? this.blockIndexInTexture + 16 : this.blockIndexInTexture - 1); - } - } - - public void randomDisplayTick(World var1, int var2, int var3, int var4, Random var5) { - if(this.isActive) { - int var6 = var1.getBlockMetadata(var2, var3, var4); - float var7 = (float)var2 + 0.5F; - float var8 = (float)var3 + 0.0F + var5.nextFloat() * 6.0F / 16.0F; - float var9 = (float)var4 + 0.5F; - float var10 = 0.52F; - float var11 = var5.nextFloat() * 0.6F - 0.3F; - if(var6 == 4) { - var1.spawnParticle("smoke", (double)(var7 - var10), (double)var8, (double)(var9 + var11), 0.0D, 0.0D, 0.0D); - var1.spawnParticle("flame", (double)(var7 - var10), (double)var8, (double)(var9 + var11), 0.0D, 0.0D, 0.0D); - } else if(var6 == 5) { - var1.spawnParticle("smoke", (double)(var7 + var10), (double)var8, (double)(var9 + var11), 0.0D, 0.0D, 0.0D); - var1.spawnParticle("flame", (double)(var7 + var10), (double)var8, (double)(var9 + var11), 0.0D, 0.0D, 0.0D); - } else if(var6 == 2) { - var1.spawnParticle("smoke", (double)(var7 + var11), (double)var8, (double)(var9 - var10), 0.0D, 0.0D, 0.0D); - var1.spawnParticle("flame", (double)(var7 + var11), (double)var8, (double)(var9 - var10), 0.0D, 0.0D, 0.0D); - } else if(var6 == 3) { - var1.spawnParticle("smoke", (double)(var7 + var11), (double)var8, (double)(var9 + var10), 0.0D, 0.0D, 0.0D); - var1.spawnParticle("flame", (double)(var7 + var11), (double)var8, (double)(var9 + var10), 0.0D, 0.0D, 0.0D); - } - - } - } - - public int getBlockTextureFromSide(int var1) { - return var1 == 1 ? Block.stone.blockID : (var1 == 0 ? Block.stone.blockID : (var1 == 3 ? this.blockIndexInTexture - 1 : this.blockIndexInTexture)); - } - - public boolean blockActivated(World var1, int var2, int var3, int var4, EntityPlayer var5) { - TileEntityFurnace var6 = (TileEntityFurnace)var1.getBlockTileEntity(var2, var3, var4); - var5.displayGUIFurnace(var6); - return true; - } - - public static void updateFurnaceBlockState(boolean var0, World var1, int var2, int var3, int var4) { - int var5 = var1.getBlockMetadata(var2, var3, var4); - TileEntity var6 = var1.getBlockTileEntity(var2, var3, var4); - if(var0) { - var1.setBlockWithNotify(var2, var3, var4, Block.stoneOvenActive.blockID); - } else { - var1.setBlockWithNotify(var2, var3, var4, Block.stoneOvenIdle.blockID); - } - - var1.setBlockMetadataWithNotify(var2, var3, var4, var5); - var1.setBlockTileEntity(var2, var3, var4, var6); - } - - protected TileEntity getBlockEntity() { - return new TileEntityFurnace(); - } -} diff --git a/src/net/minecraft/src/BlockGears.java b/src/net/minecraft/src/BlockGears.java deleted file mode 100644 index a58762f..0000000 --- a/src/net/minecraft/src/BlockGears.java +++ /dev/null @@ -1,33 +0,0 @@ -package net.minecraft.src; - -import java.util.Random; - -public class BlockGears extends Block { - protected BlockGears(int var1, int var2) { - super(var1, var2, Material.circuits); - } - - public AxisAlignedBB getCollisionBoundingBoxFromPool(World var1, int var2, int var3, int var4) { - return null; - } - - public boolean isOpaqueCube() { - return false; - } - - public boolean renderAsNormalBlock() { - return false; - } - - public int getRenderType() { - return 5; - } - - public int quantityDropped(Random var1) { - return 1; - } - - public boolean isCollidable() { - return false; - } -} diff --git a/src/net/minecraft/src/BlockGlass.java b/src/net/minecraft/src/BlockGlass.java deleted file mode 100644 index c2672d1..0000000 --- a/src/net/minecraft/src/BlockGlass.java +++ /dev/null @@ -1,13 +0,0 @@ -package net.minecraft.src; - -import java.util.Random; - -public class BlockGlass extends BlockBreakable { - public BlockGlass(int var1, int var2, Material var3, boolean var4) { - super(var1, var2, var3, var4); - } - - public int quantityDropped(Random var1) { - return 0; - } -} diff --git a/src/net/minecraft/src/BlockGrass.java b/src/net/minecraft/src/BlockGrass.java deleted file mode 100644 index f9bff22..0000000 --- a/src/net/minecraft/src/BlockGrass.java +++ /dev/null @@ -1,37 +0,0 @@ -package net.minecraft.src; - -import java.util.Random; - -public class BlockGrass extends Block { - protected BlockGrass(int var1) { - super(var1, Material.ground); - this.blockIndexInTexture = 3; - this.setTickOnLoad(true); - } - - public int getBlockTextureFromSide(int var1) { - return var1 == 1 ? 0 : (var1 == 0 ? 2 : 3); - } - - public void updateTick(World var1, int var2, int var3, int var4, Random var5) { - if(var1.getBlockLightValue(var2, var3 + 1, var4) < 4 && var1.getBlockMaterial(var2, var3 + 1, var4).getCanBlockGrass()) { - if(var5.nextInt(4) != 0) { - return; - } - - var1.setBlockWithNotify(var2, var3, var4, Block.dirt.blockID); - } else if(var1.getBlockLightValue(var2, var3 + 1, var4) >= 9) { - int var6 = var2 + var5.nextInt(3) - 1; - int var7 = var3 + var5.nextInt(5) - 3; - int var8 = var4 + var5.nextInt(3) - 1; - if(var1.getBlockId(var6, var7, var8) == Block.dirt.blockID && var1.getBlockLightValue(var6, var7 + 1, var8) >= 4 && !var1.getBlockMaterial(var6, var7 + 1, var8).getCanBlockGrass()) { - var1.setBlockWithNotify(var6, var7, var8, Block.grass.blockID); - } - } - - } - - public int idDropped(int var1, Random var2) { - return Block.dirt.idDropped(0, var2); - } -} diff --git a/src/net/minecraft/src/BlockGravel.java b/src/net/minecraft/src/BlockGravel.java deleted file mode 100644 index c0fd641..0000000 --- a/src/net/minecraft/src/BlockGravel.java +++ /dev/null @@ -1,13 +0,0 @@ -package net.minecraft.src; - -import java.util.Random; - -public class BlockGravel extends BlockSand { - public BlockGravel(int var1, int var2) { - super(var1, var2); - } - - public int idDropped(int var1, Random var2) { - return var2.nextInt(10) == 0 ? Item.flint.shiftedIndex : this.blockID; - } -} diff --git a/src/net/minecraft/src/BlockLadder.java b/src/net/minecraft/src/BlockLadder.java deleted file mode 100644 index dfcce6f..0000000 --- a/src/net/minecraft/src/BlockLadder.java +++ /dev/null @@ -1,121 +0,0 @@ -package net.minecraft.src; - -import java.util.Random; - -public class BlockLadder extends Block { - protected BlockLadder(int var1, int var2) { - super(var1, var2, Material.circuits); - } - - public AxisAlignedBB getCollisionBoundingBoxFromPool(World var1, int var2, int var3, int var4) { - int var5 = var1.getBlockMetadata(var2, var3, var4); - float var6 = 2.0F / 16.0F; - if(var5 == 2) { - this.setBlockBounds(0.0F, 0.0F, 1.0F - var6, 1.0F, 1.0F, 1.0F); - } - - if(var5 == 3) { - this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, var6); - } - - if(var5 == 4) { - this.setBlockBounds(1.0F - var6, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F); - } - - if(var5 == 5) { - this.setBlockBounds(0.0F, 0.0F, 0.0F, var6, 1.0F, 1.0F); - } - - return super.getCollisionBoundingBoxFromPool(var1, var2, var3, var4); - } - - public AxisAlignedBB getSelectedBoundingBoxFromPool(World var1, int var2, int var3, int var4) { - int var5 = var1.getBlockMetadata(var2, var3, var4); - float var6 = 2.0F / 16.0F; - if(var5 == 2) { - this.setBlockBounds(0.0F, 0.0F, 1.0F - var6, 1.0F, 1.0F, 1.0F); - } - - if(var5 == 3) { - this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, var6); - } - - if(var5 == 4) { - this.setBlockBounds(1.0F - var6, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F); - } - - if(var5 == 5) { - this.setBlockBounds(0.0F, 0.0F, 0.0F, var6, 1.0F, 1.0F); - } - - return super.getSelectedBoundingBoxFromPool(var1, var2, var3, var4); - } - - public boolean isOpaqueCube() { - return false; - } - - public boolean renderAsNormalBlock() { - return false; - } - - public int getRenderType() { - return 8; - } - - public boolean canPlaceBlockAt(World var1, int var2, int var3, int var4) { - return var1.isBlockNormalCube(var2 - 1, var3, var4) ? true : (var1.isBlockNormalCube(var2 + 1, var3, var4) ? true : (var1.isBlockNormalCube(var2, var3, var4 - 1) ? true : var1.isBlockNormalCube(var2, var3, var4 + 1))); - } - - public void onBlockPlaced(World var1, int var2, int var3, int var4, int var5) { - int var6 = var1.getBlockMetadata(var2, var3, var4); - if((var6 == 0 || var5 == 2) && var1.isBlockNormalCube(var2, var3, var4 + 1)) { - var6 = 2; - } - - if((var6 == 0 || var5 == 3) && var1.isBlockNormalCube(var2, var3, var4 - 1)) { - var6 = 3; - } - - if((var6 == 0 || var5 == 4) && var1.isBlockNormalCube(var2 + 1, var3, var4)) { - var6 = 4; - } - - if((var6 == 0 || var5 == 5) && var1.isBlockNormalCube(var2 - 1, var3, var4)) { - var6 = 5; - } - - var1.setBlockMetadataWithNotify(var2, var3, var4, var6); - } - - public void onNeighborBlockChange(World var1, int var2, int var3, int var4, int var5) { - int var6 = var1.getBlockMetadata(var2, var3, var4); - boolean var7 = false; - if(var6 == 2 && var1.isBlockNormalCube(var2, var3, var4 + 1)) { - var7 = true; - } - - if(var6 == 3 && var1.isBlockNormalCube(var2, var3, var4 - 1)) { - var7 = true; - } - - if(var6 == 4 && var1.isBlockNormalCube(var2 + 1, var3, var4)) { - var7 = true; - } - - if(var6 == 5 && var1.isBlockNormalCube(var2 - 1, var3, var4)) { - var7 = true; - } - - if(!var7) { - this.dropBlockAsItem(var1, var2, var3, var4, var6); - var1.setBlockWithNotify(var2, var3, var4, 0); - } - - super.onNeighborBlockChange(var1, var2, var3, var4, var5); - } - - public int quantityDropped(Random var1) { - return 1; - } -} diff --git a/src/net/minecraft/src/BlockLeaves.java b/src/net/minecraft/src/BlockLeaves.java deleted file mode 100644 index d79b80e..0000000 --- a/src/net/minecraft/src/BlockLeaves.java +++ /dev/null @@ -1,53 +0,0 @@ -package net.minecraft.src; - -import java.util.Random; - -public class BlockLeaves extends BlockLeavesBase { - private int leafTexIndex; - - protected BlockLeaves(int var1, int var2) { - super(var1, var2, Material.leaves, false); - this.leafTexIndex = var2; - this.setTickOnLoad(true); - } - - public void updateTick(World var1, int var2, int var3, int var4, Random var5) { - if(!var1.getBlockMaterial(var2, var3 - 1, var4).isSolid()) { - byte var6 = 2; - - for(int var7 = var2 - var6; var7 <= var2 + var6; ++var7) { - for(int var8 = var3 - 1; var8 <= var3 + 1; ++var8) { - for(int var9 = var4 - var6; var9 <= var4 + var6; ++var9) { - if(var1.getBlockId(var7, var8, var9) == Block.wood.blockID) { - return; - } - } - } - } - - this.dropBlockAsItem(var1, var2, var3, var4, var1.getBlockMetadata(var2, var3, var4)); - var1.setBlockWithNotify(var2, var3, var4, 0); - } - } - - public int quantityDropped(Random var1) { - return var1.nextInt(10) == 0 ? 1 : 0; - } - - public int idDropped(int var1, Random var2) { - return Block.sapling.blockID; - } - - public boolean isOpaqueCube() { - return !this.graphicsLevel; - } - - public void setGraphicsLevel(boolean var1) { - this.graphicsLevel = var1; - this.blockIndexInTexture = this.leafTexIndex + (var1 ? 0 : 1); - } - - public void onEntityWalking(World var1, int var2, int var3, int var4, Entity var5) { - super.onEntityWalking(var1, var2, var3, var4, var5); - } -} diff --git a/src/net/minecraft/src/BlockLeavesBase.java b/src/net/minecraft/src/BlockLeavesBase.java deleted file mode 100644 index c719d88..0000000 --- a/src/net/minecraft/src/BlockLeavesBase.java +++ /dev/null @@ -1,19 +0,0 @@ -package net.minecraft.src; - -public class BlockLeavesBase extends Block { - protected boolean graphicsLevel; - - protected BlockLeavesBase(int var1, int var2, Material var3, boolean var4) { - super(var1, var2, var3); - this.graphicsLevel = var4; - } - - public boolean isOpaqueCube() { - return false; - } - - public boolean shouldSideBeRendered(IBlockAccess var1, int var2, int var3, int var4, int var5) { - int var6 = var1.getBlockId(var2, var3, var4); - return !this.graphicsLevel && var6 == this.blockID ? false : super.shouldSideBeRendered(var1, var2, var3, var4, var5); - } -} diff --git a/src/net/minecraft/src/BlockLog.java b/src/net/minecraft/src/BlockLog.java deleted file mode 100644 index 357e5a0..0000000 --- a/src/net/minecraft/src/BlockLog.java +++ /dev/null @@ -1,22 +0,0 @@ -package net.minecraft.src; - -import java.util.Random; - -public class BlockLog extends Block { - protected BlockLog(int var1) { - super(var1, Material.wood); - this.blockIndexInTexture = 20; - } - - public int quantityDropped(Random var1) { - return 1; - } - - public int idDropped(int var1, Random var2) { - return Block.wood.blockID; - } - - public int getBlockTextureFromSide(int var1) { - return var1 == 1 ? 21 : (var1 == 0 ? 21 : 20); - } -} diff --git a/src/net/minecraft/src/BlockMinecartTrack.java b/src/net/minecraft/src/BlockMinecartTrack.java deleted file mode 100644 index 6566102..0000000 --- a/src/net/minecraft/src/BlockMinecartTrack.java +++ /dev/null @@ -1,92 +0,0 @@ -package net.minecraft.src; - -import java.util.Random; - -public class BlockMinecartTrack extends Block { - protected BlockMinecartTrack(int var1, int var2) { - super(var1, var2, Material.circuits); - this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 2.0F / 16.0F, 1.0F); - } - - public AxisAlignedBB getCollisionBoundingBoxFromPool(World var1, int var2, int var3, int var4) { - return null; - } - - public boolean isOpaqueCube() { - return false; - } - - public MovingObjectPosition collisionRayTrace(World var1, int var2, int var3, int var4, Vec3D var5, Vec3D var6) { - this.setBlockBoundsBasedOnState(var1, var2, var3, var4); - return super.collisionRayTrace(var1, var2, var3, var4, var5, var6); - } - - public void setBlockBoundsBasedOnState(IBlockAccess var1, int var2, int var3, int var4) { - int var5 = var1.getBlockMetadata(var2, var3, var4); - if(var5 >= 2 && var5 <= 5) { - this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 10.0F / 16.0F, 1.0F); - } else { - this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 2.0F / 16.0F, 1.0F); - } - - } - - public int getBlockTextureFromSideAndMetadata(int var1, int var2) { - return var2 >= 6 ? this.blockIndexInTexture - 16 : this.blockIndexInTexture; - } - - public boolean renderAsNormalBlock() { - return false; - } - - public int getRenderType() { - return 9; - } - - public int quantityDropped(Random var1) { - return 1; - } - - public boolean canPlaceBlockAt(World var1, int var2, int var3, int var4) { - return var1.isBlockNormalCube(var2, var3 - 1, var4); - } - - public void onBlockAdded(World var1, int var2, int var3, int var4) { - var1.setBlockMetadataWithNotify(var2, var3, var4, 15); - this.refreshTrackShape(var1, var2, var3, var4); - } - - public void onNeighborBlockChange(World var1, int var2, int var3, int var4, int var5) { - int var6 = var1.getBlockMetadata(var2, var3, var4); - boolean var7 = false; - if(!var1.isBlockNormalCube(var2, var3 - 1, var4)) { - var7 = true; - } - - if(var6 == 2 && !var1.isBlockNormalCube(var2 + 1, var3, var4)) { - var7 = true; - } - - if(var6 == 3 && !var1.isBlockNormalCube(var2 - 1, var3, var4)) { - var7 = true; - } - - if(var6 == 4 && !var1.isBlockNormalCube(var2, var3, var4 - 1)) { - var7 = true; - } - - if(var6 == 5 && !var1.isBlockNormalCube(var2, var3, var4 + 1)) { - var7 = true; - } - - if(var7) { - this.dropBlockAsItem(var1, var2, var3, var4, var1.getBlockMetadata(var2, var3, var4)); - var1.setBlockWithNotify(var2, var3, var4, 0); - } - - } - - private void refreshTrackShape(World var1, int var2, int var3, int var4) { - (new MinecartTrackLogic(this, var1, var2, var3, var4)).place(); - } -} diff --git a/src/net/minecraft/src/BlockMobSpawner.java b/src/net/minecraft/src/BlockMobSpawner.java deleted file mode 100644 index b845263..0000000 --- a/src/net/minecraft/src/BlockMobSpawner.java +++ /dev/null @@ -1,15 +0,0 @@ -package net.minecraft.src; - -public class BlockMobSpawner extends BlockContainer { - protected BlockMobSpawner(int var1, int var2) { - super(var1, var2, Material.rock); - } - - protected TileEntity getBlockEntity() { - return new TileEntityMobSpawner(); - } - - public boolean isOpaqueCube() { - return false; - } -} diff --git a/src/net/minecraft/src/BlockMushroom.java b/src/net/minecraft/src/BlockMushroom.java deleted file mode 100644 index f129b7b..0000000 --- a/src/net/minecraft/src/BlockMushroom.java +++ /dev/null @@ -1,17 +0,0 @@ -package net.minecraft.src; - -public class BlockMushroom extends BlockFlower { - protected BlockMushroom(int var1, int var2) { - super(var1, var2); - float var3 = 0.2F; - this.setBlockBounds(0.5F - var3, 0.0F, 0.5F - var3, 0.5F + var3, var3 * 2.0F, 0.5F + var3); - } - - protected boolean canThisPlantGrowOnThisBlockID(int var1) { - return Block.opaqueCubeLookup[var1]; - } - - public boolean canBlockStay(World var1, int var2, int var3, int var4) { - return var1.getBlockLightValue(var2, var3, var4) <= 13 && this.canThisPlantGrowOnThisBlockID(var1.getBlockId(var2, var3 - 1, var4)); - } -} diff --git a/src/net/minecraft/src/BlockObsidian.java b/src/net/minecraft/src/BlockObsidian.java deleted file mode 100644 index c75b227..0000000 --- a/src/net/minecraft/src/BlockObsidian.java +++ /dev/null @@ -1,17 +0,0 @@ -package net.minecraft.src; - -import java.util.Random; - -public class BlockObsidian extends BlockStone { - public BlockObsidian(int var1, int var2) { - super(var1, var2); - } - - public int quantityDropped(Random var1) { - return 1; - } - - public int idDropped(int var1, Random var2) { - return Block.obsidian.blockID; - } -} diff --git a/src/net/minecraft/src/BlockOre.java b/src/net/minecraft/src/BlockOre.java deleted file mode 100644 index a66fd91..0000000 --- a/src/net/minecraft/src/BlockOre.java +++ /dev/null @@ -1,17 +0,0 @@ -package net.minecraft.src; - -import java.util.Random; - -public class BlockOre extends Block { - public BlockOre(int var1, int var2) { - super(var1, var2, Material.rock); - } - - public int idDropped(int var1, Random var2) { - return this.blockID == Block.oreCoal.blockID ? Item.coal.shiftedIndex : (this.blockID == Block.oreDiamond.blockID ? Item.diamond.shiftedIndex : this.blockID); - } - - public int quantityDropped(Random var1) { - return 1; - } -} diff --git a/src/net/minecraft/src/BlockOreBlock.java b/src/net/minecraft/src/BlockOreBlock.java deleted file mode 100644 index 5655234..0000000 --- a/src/net/minecraft/src/BlockOreBlock.java +++ /dev/null @@ -1,12 +0,0 @@ -package net.minecraft.src; - -public class BlockOreBlock extends Block { - public BlockOreBlock(int var1, int var2) { - super(var1, Material.iron); - this.blockIndexInTexture = var2; - } - - public int getBlockTextureFromSide(int var1) { - return var1 == 1 ? this.blockIndexInTexture - 16 : (var1 == 0 ? this.blockIndexInTexture + 16 : this.blockIndexInTexture); - } -} diff --git a/src/net/minecraft/src/BlockSand.java b/src/net/minecraft/src/BlockSand.java deleted file mode 100644 index 451a32e..0000000 --- a/src/net/minecraft/src/BlockSand.java +++ /dev/null @@ -1,53 +0,0 @@ -package net.minecraft.src; - -import java.util.Random; - -public class BlockSand extends Block { - public static boolean fallInstantly = false; - - public BlockSand(int var1, int var2) { - super(var1, var2, Material.sand); - } - - public void onBlockAdded(World var1, int var2, int var3, int var4) { - var1.scheduleBlockUpdate(var2, var3, var4, this.blockID); - } - - public void onNeighborBlockChange(World var1, int var2, int var3, int var4, int var5) { - var1.scheduleBlockUpdate(var2, var3, var4, this.blockID); - } - - public void updateTick(World var1, int var2, int var3, int var4, Random var5) { - this.tryToFall(var1, var2, var3, var4); - } - - private void tryToFall(World var1, int var2, int var3, int var4) { - if(canFallBelow(var1, var2, var3 - 1, var4) && var3 >= 0) { - EntityFallingSand var8 = new EntityFallingSand(var1, (float)var2 + 0.5F, (float)var3 + 0.5F, (float)var4 + 0.5F, this.blockID); - if(fallInstantly) { - while(!var8.isDead) { - var8.onUpdate(); - } - } else { - var1.spawnEntityInWorld(var8); - } - } - - } - - public int tickRate() { - return 3; - } - - public static boolean canFallBelow(World var0, int var1, int var2, int var3) { - int var4 = var0.getBlockId(var1, var2, var3); - if(var4 == 0) { - return true; - } else if(var4 == Block.fire.blockID) { - return true; - } else { - Material var5 = Block.blocksList[var4].blockMaterial; - return var5 == Material.water ? true : var5 == Material.lava; - } - } -} diff --git a/src/net/minecraft/src/BlockSapling.java b/src/net/minecraft/src/BlockSapling.java deleted file mode 100644 index 7d13f83..0000000 --- a/src/net/minecraft/src/BlockSapling.java +++ /dev/null @@ -1,28 +0,0 @@ -package net.minecraft.src; - -import java.util.Random; - -public class BlockSapling extends BlockFlower { - protected BlockSapling(int var1, int var2) { - super(var1, var2); - float var3 = 0.4F; - this.setBlockBounds(0.5F - var3, 0.0F, 0.5F - var3, 0.5F + var3, var3 * 2.0F, 0.5F + var3); - } - - public void updateTick(World var1, int var2, int var3, int var4, Random var5) { - super.updateTick(var1, var2, var3, var4, var5); - if(var1.getBlockLightValue(var2, var3 + 1, var4) >= 9 && var5.nextInt(5) == 0) { - int var6 = var1.getBlockMetadata(var2, var3, var4); - if(var6 < 15) { - var1.setBlockMetadataWithNotify(var2, var3, var4, var6 + 1); - } else { - var1.setBlock(var2, var3, var4, 0); - WorldGenTrees var7 = new WorldGenTrees(); - if(!var7.generate(var1, var5, var2, var3, var4)) { - var1.setBlock(var2, var3, var4, this.blockID); - } - } - } - - } -} diff --git a/src/net/minecraft/src/BlockSign.java b/src/net/minecraft/src/BlockSign.java deleted file mode 100644 index 03b8536..0000000 --- a/src/net/minecraft/src/BlockSign.java +++ /dev/null @@ -1,54 +0,0 @@ -package net.minecraft.src; - -import java.util.Random; - -public class BlockSign extends BlockContainer { - private Class signEntityClass; - private int itemDropID; - - protected BlockSign(int var1, Class var2, int var3) { - super(var1, Material.wood); - this.blockIndexInTexture = 4; - this.signEntityClass = var2; - float var4 = 0.25F; - float var5 = 1.625F; - this.setBlockBounds(0.5F - var4, 0.0F, 0.5F - var4, 0.5F + var4, var5, 0.5F + var4); - this.itemDropID = var3; - } - - public int getRenderType() { - return -1; - } - - public boolean renderAsNormalBlock() { - return false; - } - - public boolean isOpaqueCube() { - return false; - } - - protected TileEntity getBlockEntity() { - try { - return (TileEntity)this.signEntityClass.newInstance(); - } catch (Exception var2) { - throw new RuntimeException(var2); - } - } - - public boolean canPlaceBlockAt(World var1, int var2, int var3, int var4) { - return super.canPlaceBlockAt(var1, var2, var3, var4) && super.canPlaceBlockAt(var1, var2, var3 + 1, var4); - } - - public int idDropped(int var1, Random var2) { - return this.itemDropID; - } - - public void onNeighborBlockChange(World var1, int var2, int var3, int var4, int var5) { - if(!var1.isBlockNormalCube(var2, var3 - 1, var4)) { - this.dropBlockAsItem(var1, var2, var3, var4, var1.getBlockMetadata(var2, var3, var4)); - var1.setBlockWithNotify(var2, var3, var4, 0); - } - - } -} diff --git a/src/net/minecraft/src/BlockSponge.java b/src/net/minecraft/src/BlockSponge.java deleted file mode 100644 index d8a441d..0000000 --- a/src/net/minecraft/src/BlockSponge.java +++ /dev/null @@ -1,35 +0,0 @@ -package net.minecraft.src; - -public class BlockSponge extends Block { - protected BlockSponge(int var1) { - super(var1, Material.sponge); - this.blockIndexInTexture = 48; - } - - public void onBlockAdded(World var1, int var2, int var3, int var4) { - byte var5 = 2; - - for(int var6 = var2 - var5; var6 <= var2 + var5; ++var6) { - for(int var7 = var3 - var5; var7 <= var3 + var5; ++var7) { - for(int var8 = var4 - var5; var8 <= var4 + var5; ++var8) { - if(var1.getBlockMaterial(var6, var7, var8) == Material.water) { - } - } - } - } - - } - - public void onBlockRemoval(World var1, int var2, int var3, int var4) { - byte var5 = 2; - - for(int var6 = var2 - var5; var6 <= var2 + var5; ++var6) { - for(int var7 = var3 - var5; var7 <= var3 + var5; ++var7) { - for(int var8 = var4 - var5; var8 <= var4 + var5; ++var8) { - var1.notifyBlocksOfNeighborChange(var6, var7, var8, var1.getBlockId(var6, var7, var8)); - } - } - } - - } -} diff --git a/src/net/minecraft/src/BlockStairs.java b/src/net/minecraft/src/BlockStairs.java deleted file mode 100644 index aec58f7..0000000 --- a/src/net/minecraft/src/BlockStairs.java +++ /dev/null @@ -1,249 +0,0 @@ -package net.minecraft.src; - -import java.util.ArrayList; -import java.util.Random; - -public class BlockStairs extends Block { - private Block modelBlock; - - protected BlockStairs(int var1, Block var2) { - super(var1, var2.blockIndexInTexture, var2.blockMaterial); - this.modelBlock = var2; - this.setHardness(var2.blockHardness); - this.setResistance(var2.blockResistance / 3.0F); - this.setStepSound(var2.stepSound); - } - - public boolean isOpaqueCube() { - return false; - } - - public boolean renderAsNormalBlock() { - return false; - } - - public int getRenderType() { - return 10; - } - - public boolean shouldSideBeRendered(IBlockAccess var1, int var2, int var3, int var4, int var5) { - return super.shouldSideBeRendered(var1, var2, var3, var4, var5); - } - - public void getCollidingBoundingBoxes(World var1, int var2, int var3, int var4, AxisAlignedBB var5, ArrayList var6) { - int var7 = var1.getBlockMetadata(var2, var3, var4); - if(var7 == 0) { - this.setBlockBounds(0.0F, 0.0F, 0.0F, 0.5F, 0.5F, 1.0F); - super.getCollidingBoundingBoxes(var1, var2, var3, var4, var5, var6); - this.setBlockBounds(0.5F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F); - super.getCollidingBoundingBoxes(var1, var2, var3, var4, var5, var6); - } else if(var7 == 1) { - this.setBlockBounds(0.0F, 0.0F, 0.0F, 0.5F, 1.0F, 1.0F); - super.getCollidingBoundingBoxes(var1, var2, var3, var4, var5, var6); - this.setBlockBounds(0.5F, 0.0F, 0.0F, 1.0F, 0.5F, 1.0F); - super.getCollidingBoundingBoxes(var1, var2, var3, var4, var5, var6); - } else if(var7 == 2) { - this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 0.5F, 0.5F); - super.getCollidingBoundingBoxes(var1, var2, var3, var4, var5, var6); - this.setBlockBounds(0.0F, 0.0F, 0.5F, 1.0F, 1.0F, 1.0F); - super.getCollidingBoundingBoxes(var1, var2, var3, var4, var5, var6); - } else if(var7 == 3) { - this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 0.5F); - super.getCollidingBoundingBoxes(var1, var2, var3, var4, var5, var6); - this.setBlockBounds(0.0F, 0.0F, 0.5F, 1.0F, 0.5F, 1.0F); - super.getCollidingBoundingBoxes(var1, var2, var3, var4, var5, var6); - } - - this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F); - } - - public void onNeighborBlockChange(World var1, int var2, int var3, int var4, int var5) { - if(var1.getBlockMaterial(var2, var3 + 1, var4).isSolid()) { - var1.setBlockWithNotify(var2, var3, var4, this.modelBlock.blockID); - } else { - this.updateState(var1, var2, var3, var4); - this.updateState(var1, var2 + 1, var3 - 1, var4); - this.updateState(var1, var2 - 1, var3 - 1, var4); - this.updateState(var1, var2, var3 - 1, var4 - 1); - this.updateState(var1, var2, var3 - 1, var4 + 1); - this.updateState(var1, var2 + 1, var3 + 1, var4); - this.updateState(var1, var2 - 1, var3 + 1, var4); - this.updateState(var1, var2, var3 + 1, var4 - 1); - this.updateState(var1, var2, var3 + 1, var4 + 1); - } - - this.modelBlock.onNeighborBlockChange(var1, var2, var3, var4, var5); - } - - private void updateState(World var1, int var2, int var3, int var4) { - if(this.isBlockStair(var1, var2, var3, var4)) { - byte var5 = -1; - if(this.isBlockStair(var1, var2 + 1, var3 + 1, var4)) { - var5 = 0; - } - - if(this.isBlockStair(var1, var2 - 1, var3 + 1, var4)) { - var5 = 1; - } - - if(this.isBlockStair(var1, var2, var3 + 1, var4 + 1)) { - var5 = 2; - } - - if(this.isBlockStair(var1, var2, var3 + 1, var4 - 1)) { - var5 = 3; - } - - if(var5 < 0) { - if(this.isBlockSolid(var1, var2 + 1, var3, var4) && !this.isBlockSolid(var1, var2 - 1, var3, var4)) { - var5 = 0; - } - - if(this.isBlockSolid(var1, var2 - 1, var3, var4) && !this.isBlockSolid(var1, var2 + 1, var3, var4)) { - var5 = 1; - } - - if(this.isBlockSolid(var1, var2, var3, var4 + 1) && !this.isBlockSolid(var1, var2, var3, var4 - 1)) { - var5 = 2; - } - - if(this.isBlockSolid(var1, var2, var3, var4 - 1) && !this.isBlockSolid(var1, var2, var3, var4 + 1)) { - var5 = 3; - } - } - - if(var5 < 0) { - if(this.isBlockStair(var1, var2 - 1, var3 - 1, var4)) { - var5 = 0; - } - - if(this.isBlockStair(var1, var2 + 1, var3 - 1, var4)) { - var5 = 1; - } - - if(this.isBlockStair(var1, var2, var3 - 1, var4 - 1)) { - var5 = 2; - } - - if(this.isBlockStair(var1, var2, var3 - 1, var4 + 1)) { - var5 = 3; - } - } - - if(var5 >= 0) { - var1.setBlockMetadataWithNotify(var2, var3, var4, var5); - } - - } - } - - private boolean isBlockSolid(World var1, int var2, int var3, int var4) { - return var1.getBlockMaterial(var2, var3, var4).isSolid(); - } - - private boolean isBlockStair(World var1, int var2, int var3, int var4) { - int var5 = var1.getBlockId(var2, var3, var4); - return var5 == 0 ? false : Block.blocksList[var5].getRenderType() == 10; - } - - public void randomDisplayTick(World var1, int var2, int var3, int var4, Random var5) { - this.modelBlock.randomDisplayTick(var1, var2, var3, var4, var5); - } - - public void onBlockClicked(World var1, int var2, int var3, int var4, EntityPlayer var5) { - this.modelBlock.onBlockClicked(var1, var2, var3, var4, var5); - } - - public void onBlockDestroyedByPlayer(World var1, int var2, int var3, int var4, int var5) { - this.modelBlock.onBlockDestroyedByPlayer(var1, var2, var3, var4, var5); - } - - public float getBlockBrightness(IBlockAccess var1, int var2, int var3, int var4) { - return this.modelBlock.getBlockBrightness(var1, var2, var3, var4); - } - - public float getExplosionResistance(Entity var1) { - return this.modelBlock.getExplosionResistance(var1); - } - - public int getRenderBlockPass() { - return this.modelBlock.getRenderBlockPass(); - } - - public int idDropped(int var1, Random var2) { - return this.modelBlock.idDropped(var1, var2); - } - - public int quantityDropped(Random var1) { - return this.modelBlock.quantityDropped(var1); - } - - public int getBlockTextureFromSideAndMetadata(int var1, int var2) { - return this.modelBlock.getBlockTextureFromSideAndMetadata(var1, var2); - } - - public int getBlockTextureFromSide(int var1) { - return this.modelBlock.getBlockTextureFromSide(var1); - } - - public int getBlockTextureGeneric(IBlockAccess var1, int var2, int var3, int var4, int var5) { - return this.modelBlock.getBlockTextureGeneric(var1, var2, var3, var4, var5); - } - - public int tickRate() { - return this.modelBlock.tickRate(); - } - - public AxisAlignedBB getSelectedBoundingBoxFromPool(World var1, int var2, int var3, int var4) { - return this.modelBlock.getSelectedBoundingBoxFromPool(var1, var2, var3, var4); - } - - public void velocityToAddToEntity(World var1, int var2, int var3, int var4, Entity var5, Vec3D var6) { - this.modelBlock.velocityToAddToEntity(var1, var2, var3, var4, var5, var6); - } - - public boolean isCollidable() { - return this.modelBlock.isCollidable(); - } - - public boolean canCollideCheck(int var1, boolean var2) { - return this.modelBlock.canCollideCheck(var1, var2); - } - - public boolean canPlaceBlockAt(World var1, int var2, int var3, int var4) { - return this.modelBlock.canPlaceBlockAt(var1, var2, var3, var4); - } - - public void onBlockAdded(World var1, int var2, int var3, int var4) { - this.onNeighborBlockChange(var1, var2, var3, var4, 0); - this.modelBlock.onBlockAdded(var1, var2, var3, var4); - } - - public void onBlockRemoval(World var1, int var2, int var3, int var4) { - this.modelBlock.onBlockRemoval(var1, var2, var3, var4); - } - - public void dropBlockAsItemWithChance(World var1, int var2, int var3, int var4, int var5, float var6) { - this.modelBlock.dropBlockAsItemWithChance(var1, var2, var3, var4, var5, var6); - } - - public void dropBlockAsItem(World var1, int var2, int var3, int var4, int var5) { - this.modelBlock.dropBlockAsItem(var1, var2, var3, var4, var5); - } - - public void onEntityWalking(World var1, int var2, int var3, int var4, Entity var5) { - this.modelBlock.onEntityWalking(var1, var2, var3, var4, var5); - } - - public void updateTick(World var1, int var2, int var3, int var4, Random var5) { - this.modelBlock.updateTick(var1, var2, var3, var4, var5); - } - - public boolean blockActivated(World var1, int var2, int var3, int var4, EntityPlayer var5) { - return this.modelBlock.blockActivated(var1, var2, var3, var4, var5); - } - - public void onBlockDestroyedByExplosion(World var1, int var2, int var3, int var4) { - this.modelBlock.onBlockDestroyedByExplosion(var1, var2, var3, var4); - } -} diff --git a/src/net/minecraft/src/BlockStationary.java b/src/net/minecraft/src/BlockStationary.java deleted file mode 100644 index 12332ea..0000000 --- a/src/net/minecraft/src/BlockStationary.java +++ /dev/null @@ -1,25 +0,0 @@ -package net.minecraft.src; - -public class BlockStationary extends BlockFluid { - protected BlockStationary(int var1, Material var2) { - super(var1, var2); - this.setTickOnLoad(false); - } - - public void onNeighborBlockChange(World var1, int var2, int var3, int var4, int var5) { - super.onNeighborBlockChange(var1, var2, var3, var4, var5); - if(var1.getBlockId(var2, var3, var4) == this.blockID) { - this.updateTick(var1, var2, var3, var4); - } - - } - - private void updateTick(World var1, int var2, int var3, int var4) { - int var5 = var1.getBlockMetadata(var2, var3, var4); - var1.editingBlocks = true; - var1.setBlockAndMetadata(var2, var3, var4, this.blockID - 1, var5); - var1.markBlocksDirty(var2, var3, var4, var2, var3, var4); - var1.scheduleBlockUpdate(var2, var3, var4, this.blockID - 1); - var1.editingBlocks = false; - } -} diff --git a/src/net/minecraft/src/BlockStep.java b/src/net/minecraft/src/BlockStep.java deleted file mode 100644 index c9e7fce..0000000 --- a/src/net/minecraft/src/BlockStep.java +++ /dev/null @@ -1,59 +0,0 @@ -package net.minecraft.src; - -import java.util.Random; - -public class BlockStep extends Block { - private boolean blockType; - - public BlockStep(int var1, boolean var2) { - super(var1, 6, Material.rock); - this.blockType = var2; - if(!var2) { - this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 0.5F, 1.0F); - } - - this.setLightOpacity(255); - } - - public int getBlockTextureFromSide(int var1) { - return var1 <= 1 ? 6 : 5; - } - - public boolean isOpaqueCube() { - return this.blockType; - } - - public void onNeighborBlockChange(World var1, int var2, int var3, int var4, int var5) { - if(this == Block.stairSingle) { - } - } - - public void onBlockAdded(World var1, int var2, int var3, int var4) { - if(this != Block.stairSingle) { - super.onBlockAdded(var1, var2, var3, var4); - } - - int var5 = var1.getBlockId(var2, var3 - 1, var4); - if(var5 == stairSingle.blockID) { - var1.setBlockWithNotify(var2, var3, var4, 0); - var1.setBlockWithNotify(var2, var3 - 1, var4, Block.stairDouble.blockID); - } - - } - - public int idDropped(int var1, Random var2) { - return Block.stairSingle.blockID; - } - - public boolean renderAsNormalBlock() { - return this.blockType; - } - - public boolean shouldSideBeRendered(IBlockAccess var1, int var2, int var3, int var4, int var5) { - if(this != Block.stairSingle) { - super.shouldSideBeRendered(var1, var2, var3, var4, var5); - } - - return var5 == 1 ? true : (!super.shouldSideBeRendered(var1, var2, var3, var4, var5) ? false : (var5 == 0 ? true : var1.getBlockId(var2, var3, var4) != this.blockID)); - } -} diff --git a/src/net/minecraft/src/BlockStone.java b/src/net/minecraft/src/BlockStone.java deleted file mode 100644 index eae4ecd..0000000 --- a/src/net/minecraft/src/BlockStone.java +++ /dev/null @@ -1,13 +0,0 @@ -package net.minecraft.src; - -import java.util.Random; - -public class BlockStone extends Block { - public BlockStone(int var1, int var2) { - super(var1, var2, Material.rock); - } - - public int idDropped(int var1, Random var2) { - return Block.cobblestone.blockID; - } -} diff --git a/src/net/minecraft/src/BlockTNT.java b/src/net/minecraft/src/BlockTNT.java deleted file mode 100644 index aa103d5..0000000 --- a/src/net/minecraft/src/BlockTNT.java +++ /dev/null @@ -1,29 +0,0 @@ -package net.minecraft.src; - -import java.util.Random; - -public class BlockTNT extends Block { - public BlockTNT(int var1, int var2) { - super(var1, var2, Material.tnt); - } - - public int getBlockTextureFromSide(int var1) { - return var1 == 0 ? this.blockIndexInTexture + 2 : (var1 == 1 ? this.blockIndexInTexture + 1 : this.blockIndexInTexture); - } - - public int quantityDropped(Random var1) { - return 0; - } - - public void onBlockDestroyedByExplosion(World var1, int var2, int var3, int var4) { - EntityTNTPrimed var5 = new EntityTNTPrimed(var1, (float)var2 + 0.5F, (float)var3 + 0.5F, (float)var4 + 0.5F); - var5.fuse = var1.rand.nextInt(var5.fuse / 4) + var5.fuse / 8; - var1.spawnEntityInWorld(var5); - } - - public void onBlockDestroyedByPlayer(World var1, int var2, int var3, int var4, int var5) { - EntityTNTPrimed var6 = new EntityTNTPrimed(var1, (float)var2 + 0.5F, (float)var3 + 0.5F, (float)var4 + 0.5F); - var1.spawnEntityInWorld(var6); - var1.playSoundAtEntity(var6, "random.fuse", 1.0F, 1.0F); - } -} diff --git a/src/net/minecraft/src/BlockTorch.java b/src/net/minecraft/src/BlockTorch.java deleted file mode 100644 index a099e4a..0000000 --- a/src/net/minecraft/src/BlockTorch.java +++ /dev/null @@ -1,166 +0,0 @@ -package net.minecraft.src; - -import java.util.Random; - -public class BlockTorch extends Block { - protected BlockTorch(int var1, int var2) { - super(var1, var2, Material.circuits); - this.setTickOnLoad(true); - } - - public AxisAlignedBB getCollisionBoundingBoxFromPool(World var1, int var2, int var3, int var4) { - return null; - } - - public boolean isOpaqueCube() { - return false; - } - - public boolean renderAsNormalBlock() { - return false; - } - - public int getRenderType() { - return 2; - } - - public boolean canPlaceBlockAt(World var1, int var2, int var3, int var4) { - return var1.isBlockNormalCube(var2 - 1, var3, var4) ? true : (var1.isBlockNormalCube(var2 + 1, var3, var4) ? true : (var1.isBlockNormalCube(var2, var3, var4 - 1) ? true : (var1.isBlockNormalCube(var2, var3, var4 + 1) ? true : var1.isBlockNormalCube(var2, var3 - 1, var4)))); - } - - public void onBlockPlaced(World var1, int var2, int var3, int var4, int var5) { - int var6 = var1.getBlockMetadata(var2, var3, var4); - if(var5 == 1 && var1.isBlockNormalCube(var2, var3 - 1, var4)) { - var6 = 5; - } - - if(var5 == 2 && var1.isBlockNormalCube(var2, var3, var4 + 1)) { - var6 = 4; - } - - if(var5 == 3 && var1.isBlockNormalCube(var2, var3, var4 - 1)) { - var6 = 3; - } - - if(var5 == 4 && var1.isBlockNormalCube(var2 + 1, var3, var4)) { - var6 = 2; - } - - if(var5 == 5 && var1.isBlockNormalCube(var2 - 1, var3, var4)) { - var6 = 1; - } - - var1.setBlockMetadataWithNotify(var2, var3, var4, var6); - } - - public void updateTick(World var1, int var2, int var3, int var4, Random var5) { - super.updateTick(var1, var2, var3, var4, var5); - if(var1.getBlockMetadata(var2, var3, var4) == 0) { - this.onBlockAdded(var1, var2, var3, var4); - } - - } - - public void onBlockAdded(World var1, int var2, int var3, int var4) { - if(var1.isBlockNormalCube(var2 - 1, var3, var4)) { - var1.setBlockMetadataWithNotify(var2, var3, var4, 1); - } else if(var1.isBlockNormalCube(var2 + 1, var3, var4)) { - var1.setBlockMetadataWithNotify(var2, var3, var4, 2); - } else if(var1.isBlockNormalCube(var2, var3, var4 - 1)) { - var1.setBlockMetadataWithNotify(var2, var3, var4, 3); - } else if(var1.isBlockNormalCube(var2, var3, var4 + 1)) { - var1.setBlockMetadataWithNotify(var2, var3, var4, 4); - } else if(var1.isBlockNormalCube(var2, var3 - 1, var4)) { - var1.setBlockMetadataWithNotify(var2, var3, var4, 5); - } - - this.dropTorchIfCantStay(var1, var2, var3, var4); - } - - public void onNeighborBlockChange(World var1, int var2, int var3, int var4, int var5) { - if(this.dropTorchIfCantStay(var1, var2, var3, var4)) { - int var6 = var1.getBlockMetadata(var2, var3, var4); - boolean var7 = false; - if(!var1.isBlockNormalCube(var2 - 1, var3, var4) && var6 == 1) { - var7 = true; - } - - if(!var1.isBlockNormalCube(var2 + 1, var3, var4) && var6 == 2) { - var7 = true; - } - - if(!var1.isBlockNormalCube(var2, var3, var4 - 1) && var6 == 3) { - var7 = true; - } - - if(!var1.isBlockNormalCube(var2, var3, var4 + 1) && var6 == 4) { - var7 = true; - } - - if(!var1.isBlockNormalCube(var2, var3 - 1, var4) && var6 == 5) { - var7 = true; - } - - if(var7) { - this.dropBlockAsItem(var1, var2, var3, var4, var1.getBlockMetadata(var2, var3, var4)); - var1.setBlockWithNotify(var2, var3, var4, 0); - } - } - - } - - private boolean dropTorchIfCantStay(World var1, int var2, int var3, int var4) { - if(!this.canPlaceBlockAt(var1, var2, var3, var4)) { - this.dropBlockAsItem(var1, var2, var3, var4, var1.getBlockMetadata(var2, var3, var4)); - var1.setBlockWithNotify(var2, var3, var4, 0); - return false; - } else { - return true; - } - } - - public MovingObjectPosition collisionRayTrace(World var1, int var2, int var3, int var4, Vec3D var5, Vec3D var6) { - int var7 = var1.getBlockMetadata(var2, var3, var4); - float var8 = 0.15F; - if(var7 == 1) { - this.setBlockBounds(0.0F, 0.2F, 0.5F - var8, var8 * 2.0F, 0.8F, 0.5F + var8); - } else if(var7 == 2) { - this.setBlockBounds(1.0F - var8 * 2.0F, 0.2F, 0.5F - var8, 1.0F, 0.8F, 0.5F + var8); - } else if(var7 == 3) { - this.setBlockBounds(0.5F - var8, 0.2F, 0.0F, 0.5F + var8, 0.8F, var8 * 2.0F); - } else if(var7 == 4) { - this.setBlockBounds(0.5F - var8, 0.2F, 1.0F - var8 * 2.0F, 0.5F + var8, 0.8F, 1.0F); - } else { - var8 = 0.1F; - this.setBlockBounds(0.5F - var8, 0.0F, 0.5F - var8, 0.5F + var8, 0.6F, 0.5F + var8); - } - - return super.collisionRayTrace(var1, var2, var3, var4, var5, var6); - } - - public void randomDisplayTick(World var1, int var2, int var3, int var4, Random var5) { - int var6 = var1.getBlockMetadata(var2, var3, var4); - float var7 = (float)var2 + 0.5F; - float var8 = (float)var3 + 0.7F; - float var9 = (float)var4 + 0.5F; - float var10 = 0.22F; - float var11 = 0.27F; - if(var6 == 1) { - var1.spawnParticle("smoke", (double)(var7 - var11), (double)(var8 + var10), (double)var9, 0.0D, 0.0D, 0.0D); - var1.spawnParticle("flame", (double)(var7 - var11), (double)(var8 + var10), (double)var9, 0.0D, 0.0D, 0.0D); - } else if(var6 == 2) { - var1.spawnParticle("smoke", (double)(var7 + var11), (double)(var8 + var10), (double)var9, 0.0D, 0.0D, 0.0D); - var1.spawnParticle("flame", (double)(var7 + var11), (double)(var8 + var10), (double)var9, 0.0D, 0.0D, 0.0D); - } else if(var6 == 3) { - var1.spawnParticle("smoke", (double)var7, (double)(var8 + var10), (double)(var9 - var11), 0.0D, 0.0D, 0.0D); - var1.spawnParticle("flame", (double)var7, (double)(var8 + var10), (double)(var9 - var11), 0.0D, 0.0D, 0.0D); - } else if(var6 == 4) { - var1.spawnParticle("smoke", (double)var7, (double)(var8 + var10), (double)(var9 + var11), 0.0D, 0.0D, 0.0D); - var1.spawnParticle("flame", (double)var7, (double)(var8 + var10), (double)(var9 + var11), 0.0D, 0.0D, 0.0D); - } else { - var1.spawnParticle("smoke", (double)var7, (double)var8, (double)var9, 0.0D, 0.0D, 0.0D); - var1.spawnParticle("flame", (double)var7, (double)var8, (double)var9, 0.0D, 0.0D, 0.0D); - } - - } -} diff --git a/src/net/minecraft/src/BlockWorkbench.java b/src/net/minecraft/src/BlockWorkbench.java deleted file mode 100644 index 8b02c5f..0000000 --- a/src/net/minecraft/src/BlockWorkbench.java +++ /dev/null @@ -1,17 +0,0 @@ -package net.minecraft.src; - -public class BlockWorkbench extends Block { - protected BlockWorkbench(int var1) { - super(var1, Material.wood); - this.blockIndexInTexture = 59; - } - - public int getBlockTextureFromSide(int var1) { - return var1 == 1 ? this.blockIndexInTexture - 16 : (var1 == 0 ? Block.planks.getBlockTextureFromSide(0) : (var1 != 2 && var1 != 4 ? this.blockIndexInTexture : this.blockIndexInTexture + 1)); - } - - public boolean blockActivated(World var1, int var2, int var3, int var4, EntityPlayer var5) { - var5.displayWorkbenchGUI(); - return true; - } -} diff --git a/src/net/minecraft/src/CanvasCrashReport.java b/src/net/minecraft/src/CanvasCrashReport.java deleted file mode 100644 index caa70c7..0000000 --- a/src/net/minecraft/src/CanvasCrashReport.java +++ /dev/null @@ -1,11 +0,0 @@ -package net.minecraft.src; - -import java.awt.Canvas; -import java.awt.Dimension; - -class CanvasCrashReport extends Canvas { - public CanvasCrashReport(int var1) { - this.setPreferredSize(new Dimension(var1, var1)); - this.setMinimumSize(new Dimension(var1, var1)); - } -} diff --git a/src/net/minecraft/src/CanvasIsomPreview.java b/src/net/minecraft/src/CanvasIsomPreview.java deleted file mode 100644 index d175b90..0000000 --- a/src/net/minecraft/src/CanvasIsomPreview.java +++ /dev/null @@ -1,378 +0,0 @@ -package net.minecraft.src; - -import java.awt.Canvas; -import java.awt.Color; -import java.awt.Graphics; -import java.awt.Graphics2D; -import java.awt.Rectangle; -import java.awt.RenderingHints; -import java.awt.event.KeyEvent; -import java.awt.event.KeyListener; -import java.awt.event.MouseEvent; -import java.awt.event.MouseListener; -import java.awt.event.MouseMotionListener; -import java.awt.geom.AffineTransform; -import java.awt.image.BufferStrategy; -import java.awt.image.ImageObserver; -import java.io.File; -import java.util.Collections; -import java.util.LinkedList; -import java.util.List; - -public class CanvasIsomPreview extends Canvas implements KeyListener, MouseListener, MouseMotionListener, Runnable { - private int currentRender = 0; - private int zoomLevel = 2; - private boolean displayHelpText = true; - private World level; - private File dataFolder = this.getMinecraftDir(); - private boolean running = true; - private List zonesToRender = Collections.synchronizedList(new LinkedList()); - private IsoImageBuffer[][] zoneMap = new IsoImageBuffer[64][64]; - private int translateX; - private int translateY; - private int xPosition; - private int yPosition; - - public File getMinecraftDir() { - if(this.dataFolder == null) { - this.dataFolder = this.getWorkingDirectory("minecraft"); - } - - return this.dataFolder; - } - - public File getWorkingDirectory(String var1) { - String var2 = System.getProperty("user.home", "."); - File var3; - switch(OSMapIsom.osValues[getPlatform().ordinal()]) { - case 1: - case 2: - var3 = new File(var2, '.' + var1 + '/'); - break; - case 3: - String var4 = System.getenv("APPDATA"); - if(var4 != null) { - var3 = new File(var4, "." + var1 + '/'); - } else { - var3 = new File(var2, '.' + var1 + '/'); - } - break; - case 4: - var3 = new File(var2, "Library/Application Support/" + var1); - break; - default: - var3 = new File(var2, var1 + '/'); - } - - if(!var3.exists() && !var3.mkdirs()) { - throw new RuntimeException("The working directory could not be created: " + var3); - } else { - return var3; - } - } - - private static EnumOSIsom getPlatform() { - String var0 = System.getProperty("os.name").toLowerCase(); - return var0.contains("win") ? EnumOSIsom.windows : (var0.contains("mac") ? EnumOSIsom.macos : (var0.contains("solaris") ? EnumOSIsom.solaris : (var0.contains("sunos") ? EnumOSIsom.solaris : (var0.contains("linux") ? EnumOSIsom.linux : (var0.contains("unix") ? EnumOSIsom.linux : EnumOSIsom.unknown))))); - } - - public CanvasIsomPreview() { - for(int var1 = 0; var1 < 64; ++var1) { - for(int var2 = 0; var2 < 64; ++var2) { - this.zoneMap[var1][var2] = new IsoImageBuffer((World)null, var1, var2); - } - } - - this.addMouseListener(this); - this.addMouseMotionListener(this); - this.addKeyListener(this); - this.setFocusable(true); - this.requestFocus(); - this.setBackground(Color.red); - } - - public void loadWorld(String var1) { - this.translateX = this.translateY = 0; - this.level = new WorldIso(this, new File(this.dataFolder, "saves"), var1); - this.level.skylightSubtracted = 0; - List var2 = this.zonesToRender; - synchronized(var2) { - this.zonesToRender.clear(); - - for(int var3 = 0; var3 < 64; ++var3) { - for(int var4 = 0; var4 < 64; ++var4) { - this.zoneMap[var3][var4].setWorldAndChunkPosition(this.level, var3, var4); - } - } - - } - } - - private void setBrightness(int var1) { - List var2 = this.zonesToRender; - synchronized(var2) { - this.level.skylightSubtracted = var1; - this.zonesToRender.clear(); - - for(int var3 = 0; var3 < 64; ++var3) { - for(int var4 = 0; var4 < 64; ++var4) { - this.zoneMap[var3][var4].setWorldAndChunkPosition(this.level, var3, var4); - } - } - - } - } - - public void start() { - (new ThreadRunIsoClient(this)).start(); - - for(int var1 = 0; var1 < 1; ++var1) { - (new Thread(this)).start(); - } - - } - - public void stop() { - this.running = false; - } - - private IsoImageBuffer getZone(int var1, int var2) { - int var3 = var1 & 63; - int var4 = var2 & 63; - IsoImageBuffer var5 = this.zoneMap[var3][var4]; - if(var5.chunkX == var1 && var5.chunkZ == var2) { - return var5; - } else { - List var6 = this.zonesToRender; - synchronized(var6) { - this.zonesToRender.remove(var5); - } - - var5.setChunkPosition(var1, var2); - return var5; - } - } - - public void run() { - TerrainTextureManager var1 = new TerrainTextureManager(); - - while(this.running) { - IsoImageBuffer var2 = null; - List var3 = this.zonesToRender; - synchronized(var3) { - if(this.zonesToRender.size() > 0) { - var2 = (IsoImageBuffer)this.zonesToRender.remove(0); - } - } - - if(var2 != null) { - if(this.currentRender - var2.lastVisible < 2) { - var1.render(var2); - this.repaint(); - } else { - var2.addedToRenderQueue = false; - } - } - - try { - Thread.sleep(2L); - } catch (InterruptedException var5) { - var5.printStackTrace(); - } - } - - } - - public void update(Graphics var1) { - } - - public void paint(Graphics var1) { - } - - public void render() { - BufferStrategy var1 = this.getBufferStrategy(); - if(var1 == null) { - this.createBufferStrategy(2); - } else { - this.render((Graphics2D)var1.getDrawGraphics()); - var1.show(); - } - } - - public void render(Graphics2D var1) { - ++this.currentRender; - AffineTransform var2 = var1.getTransform(); - var1.setClip(0, 0, this.getWidth(), this.getHeight()); - var1.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_NEAREST_NEIGHBOR); - var1.translate(this.getWidth() / 2, this.getHeight() / 2); - var1.scale((double)this.zoomLevel, (double)this.zoomLevel); - var1.translate(this.translateX, this.translateY); - if(this.level != null) { - var1.translate(-(this.level.spawnX + this.level.spawnZ), -(-this.level.spawnX + this.level.spawnZ) + 64); - } - - Rectangle var3 = var1.getClipBounds(); - var1.setColor(new Color(-15724512)); - var1.fillRect(var3.x, var3.y, var3.width, var3.height); - byte var4 = 16; - byte var5 = 3; - int var6 = var3.x / var4 / 2 - 2 - var5; - int var7 = (var3.x + var3.width) / var4 / 2 + 1 + var5; - int var8 = var3.y / var4 - 1 - var5 * 2; - int var9 = (var3.y + var3.height + 16 + 128) / var4 + 1 + var5 * 2; - - int var10; - for(var10 = var8; var10 <= var9; ++var10) { - for(int var11 = var6; var11 <= var7; ++var11) { - int var12 = var11 - (var10 >> 1); - int var13 = var11 + (var10 + 1 >> 1); - IsoImageBuffer var14 = this.getZone(var12, var13); - var14.lastVisible = this.currentRender; - if(!var14.rendered) { - if(!var14.addedToRenderQueue) { - var14.addedToRenderQueue = true; - this.zonesToRender.add(var14); - } - } else { - var14.addedToRenderQueue = false; - if(!var14.noContent) { - int var15 = var11 * var4 * 2 + (var10 & 1) * var4; - int var16 = var10 * var4 - 128 - 16; - var1.drawImage(var14.image, var15, var16, (ImageObserver)null); - } - } - } - } - - if(this.displayHelpText) { - var1.setTransform(var2); - var10 = this.getHeight() - 32 - 4; - var1.setColor(new Color(Integer.MIN_VALUE, true)); - var1.fillRect(4, this.getHeight() - 32 - 4, this.getWidth() - 8, 32); - var1.setColor(Color.WHITE); - String var17 = "F1 - F5: load levels | 0-9: Set time of day | Space: return to spawn | Double click: zoom | Escape: hide this text"; - var1.drawString(var17, this.getWidth() / 2 - var1.getFontMetrics().stringWidth(var17) / 2, var10 + 20); - } - - var1.dispose(); - } - - public void mouseDragged(MouseEvent var1) { - int var2 = var1.getX() / this.zoomLevel; - int var3 = var1.getY() / this.zoomLevel; - this.translateX += var2 - this.xPosition; - this.translateY += var3 - this.yPosition; - this.xPosition = var2; - this.yPosition = var3; - this.repaint(); - } - - public void mouseMoved(MouseEvent var1) { - } - - public void mouseClicked(MouseEvent var1) { - if(var1.getClickCount() == 2) { - this.zoomLevel = 3 - this.zoomLevel; - this.repaint(); - } - - } - - public void mouseEntered(MouseEvent var1) { - } - - public void mouseExited(MouseEvent var1) { - } - - public void mousePressed(MouseEvent var1) { - int var2 = var1.getX() / this.zoomLevel; - int var3 = var1.getY() / this.zoomLevel; - this.xPosition = var2; - this.yPosition = var3; - } - - public void mouseReleased(MouseEvent var1) { - } - - public void keyPressed(KeyEvent var1) { - if(var1.getKeyCode() == 48) { - this.setBrightness(11); - } - - if(var1.getKeyCode() == 49) { - this.setBrightness(10); - } - - if(var1.getKeyCode() == 50) { - this.setBrightness(9); - } - - if(var1.getKeyCode() == 51) { - this.setBrightness(7); - } - - if(var1.getKeyCode() == 52) { - this.setBrightness(6); - } - - if(var1.getKeyCode() == 53) { - this.setBrightness(5); - } - - if(var1.getKeyCode() == 54) { - this.setBrightness(3); - } - - if(var1.getKeyCode() == 55) { - this.setBrightness(2); - } - - if(var1.getKeyCode() == 56) { - this.setBrightness(1); - } - - if(var1.getKeyCode() == 57) { - this.setBrightness(0); - } - - if(var1.getKeyCode() == 112) { - this.loadWorld("World1"); - } - - if(var1.getKeyCode() == 113) { - this.loadWorld("World2"); - } - - if(var1.getKeyCode() == 114) { - this.loadWorld("World3"); - } - - if(var1.getKeyCode() == 115) { - this.loadWorld("World4"); - } - - if(var1.getKeyCode() == 116) { - this.loadWorld("World5"); - } - - if(var1.getKeyCode() == 32) { - this.translateX = this.translateY = 0; - } - - if(var1.getKeyCode() == 27) { - this.displayHelpText = !this.displayHelpText; - } - - this.repaint(); - } - - public void keyReleased(KeyEvent var1) { - } - - public void keyTyped(KeyEvent var1) { - } - - static boolean a(CanvasIsomPreview var0) { - return var0.running; - } -} diff --git a/src/net/minecraft/src/CanvasMinecraftApplet.java b/src/net/minecraft/src/CanvasMinecraftApplet.java deleted file mode 100644 index 51f39f3..0000000 --- a/src/net/minecraft/src/CanvasMinecraftApplet.java +++ /dev/null @@ -1,22 +0,0 @@ -package net.minecraft.src; - -import java.awt.Canvas; -import net.minecraft.client.MinecraftApplet; - -public class CanvasMinecraftApplet extends Canvas { - final MinecraftApplet mcApplet; - - public CanvasMinecraftApplet(MinecraftApplet var1) { - this.mcApplet = var1; - } - - public synchronized void addNotify() { - super.addNotify(); - this.mcApplet.startMainThread(); - } - - public synchronized void removeNotify() { - this.mcApplet.shutdown(); - super.removeNotify(); - } -} diff --git a/src/net/minecraft/src/CanvasMojangLogo.java b/src/net/minecraft/src/CanvasMojangLogo.java deleted file mode 100644 index 796b0a3..0000000 --- a/src/net/minecraft/src/CanvasMojangLogo.java +++ /dev/null @@ -1,29 +0,0 @@ -package net.minecraft.src; - -import java.awt.Canvas; -import java.awt.Dimension; -import java.awt.Graphics; -import java.awt.image.BufferedImage; -import java.awt.image.ImageObserver; -import java.io.IOException; -import javax.imageio.ImageIO; - -class CanvasMojangLogo extends Canvas { - private BufferedImage logo; - - public CanvasMojangLogo() { - try { - this.logo = ImageIO.read(PanelCrashReport.class.getResource("/gui/logo.png")); - } catch (IOException var2) { - } - - byte var1 = 100; - this.setPreferredSize(new Dimension(var1, var1)); - this.setMinimumSize(new Dimension(var1, var1)); - } - - public void paint(Graphics var1) { - super.paint(var1); - var1.drawImage(this.logo, this.getWidth() / 2 - this.logo.getWidth() / 2, 32, (ImageObserver)null); - } -} diff --git a/src/net/minecraft/src/ChatLine.java b/src/net/minecraft/src/ChatLine.java deleted file mode 100644 index 98635da..0000000 --- a/src/net/minecraft/src/ChatLine.java +++ /dev/null @@ -1,11 +0,0 @@ -package net.minecraft.src; - -public class ChatLine { - public String message; - public int updateCounter; - - public ChatLine(String var1) { - this.message = var1; - this.updateCounter = 0; - } -} diff --git a/src/net/minecraft/src/Chunk.java b/src/net/minecraft/src/Chunk.java deleted file mode 100644 index 56f534b..0000000 --- a/src/net/minecraft/src/Chunk.java +++ /dev/null @@ -1,473 +0,0 @@ -package net.minecraft.src; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -public class Chunk { - public static boolean isLit; - public byte[] blocks; - public boolean isChunkLoaded; - public World worldObj; - public NibbleArray data; - public NibbleArray skylightMap; - public NibbleArray blocklightMap; - public byte[] heightMap; - public int height; - public final int xPosition; - public final int zPosition; - public Map chunkTileEntityMap; - public List[] entities; - public boolean isTerrainPopulated; - public boolean isModified; - public boolean neverSave; - public boolean isChunkRendered; - public boolean hasEntities; - public long lastSaveTime; - - public Chunk(World var1, int var2, int var3) { - this.chunkTileEntityMap = new HashMap(); - this.entities = new List[8]; - this.isTerrainPopulated = false; - this.isModified = false; - this.isChunkRendered = false; - this.hasEntities = false; - this.lastSaveTime = 0L; - this.worldObj = var1; - this.xPosition = var2; - this.zPosition = var3; - this.heightMap = new byte[256]; - - for(int var4 = 0; var4 < this.entities.length; ++var4) { - this.entities[var4] = new ArrayList(); - } - - } - - public Chunk(World var1, byte[] var2, int var3, int var4) { - this(var1, var3, var4); - this.blocks = var2; - this.data = new NibbleArray(var2.length); - this.skylightMap = new NibbleArray(var2.length); - this.blocklightMap = new NibbleArray(var2.length); - } - - public boolean isAtLocation(int var1, int var2) { - return var1 == this.xPosition && var2 == this.zPosition; - } - - public int getHeightValue(int var1, int var2) { - return this.heightMap[var2 << 4 | var1] & 255; - } - - public void doNothing() { - } - - public void generateHeightMap() { - int var1 = 127; - - int var2; - int var3; - for(var2 = 0; var2 < 16; ++var2) { - for(var3 = 0; var3 < 16; ++var3) { - this.heightMap[var3 << 4 | var2] = -128; - this.relightBlock(var2, 127, var3); - if((this.heightMap[var3 << 4 | var2] & 255) < var1) { - var1 = this.heightMap[var3 << 4 | var2] & 255; - } - } - } - - this.height = var1; - - for(var2 = 0; var2 < 16; ++var2) { - for(var3 = 0; var3 < 16; ++var3) { - this.updateSkylight_do(var2, var3); - } - } - - this.isModified = true; - } - - private void updateSkylight_do(int var1, int var2) { - int var3 = this.getHeightValue(var1, var2); - int var4 = this.xPosition * 16 + var1; - int var5 = this.zPosition * 16 + var2; - this.checkSkylightNeighborHeight(var4 - 1, var5, var3); - this.checkSkylightNeighborHeight(var4 + 1, var5, var3); - this.checkSkylightNeighborHeight(var4, var5 - 1, var3); - this.checkSkylightNeighborHeight(var4, var5 + 1, var3); - } - - private void checkSkylightNeighborHeight(int var1, int var2, int var3) { - int var4 = this.worldObj.getHeightValue(var1, var2); - if(var4 > var3) { - this.worldObj.scheduleLightingUpdate(EnumSkyBlock.Sky, var1, var3, var2, var1, var4, var2); - } else if(var4 < var3) { - this.worldObj.scheduleLightingUpdate(EnumSkyBlock.Sky, var1, var4, var2, var1, var3, var2); - } - - this.isModified = true; - } - - private void relightBlock(int var1, int var2, int var3) { - int var4 = this.heightMap[var3 << 4 | var1] & 255; - int var5 = var4; - if(var2 > var4) { - var5 = var2; - } - - while(var5 > 0 && Block.lightOpacity[this.getBlockID(var1, var5 - 1, var3)] == 0) { - --var5; - } - - if(var5 != var4) { - this.worldObj.markBlockAsNeedsUpdate(var1, var3, var5, var4); - this.heightMap[var3 << 4 | var1] = (byte)var5; - int var6; - int var7; - int var8; - if(var5 < this.height) { - this.height = var5; - } else { - var6 = 127; - - for(var7 = 0; var7 < 16; ++var7) { - for(var8 = 0; var8 < 16; ++var8) { - if((this.heightMap[var8 << 4 | var7] & 255) < var6) { - var6 = this.heightMap[var8 << 4 | var7] & 255; - } - } - } - - this.height = var6; - } - - var6 = this.xPosition * 16 + var1; - var7 = this.zPosition * 16 + var3; - if(var5 < var4) { - for(var8 = var5; var8 < var4; ++var8) { - this.skylightMap.set(var1, var8, var3, 15); - } - } else { - this.worldObj.scheduleLightingUpdate(EnumSkyBlock.Sky, var6, var4, var7, var6, var5, var7); - - for(var8 = var4; var8 < var5; ++var8) { - this.skylightMap.set(var1, var8, var3, 0); - } - } - - var8 = 15; - - int var9; - for(var9 = var5; var5 > 0 && var8 > 0; this.skylightMap.set(var1, var5, var3, var8)) { - --var5; - int var10 = Block.lightOpacity[this.getBlockID(var1, var5, var3)]; - if(var10 == 0) { - var10 = 1; - } - - var8 -= var10; - if(var8 < 0) { - var8 = 0; - } - } - - while(var5 > 0 && Block.lightOpacity[this.getBlockID(var1, var5 - 1, var3)] == 0) { - --var5; - } - - if(var5 != var9) { - this.worldObj.scheduleLightingUpdate(EnumSkyBlock.Sky, var6 - 1, var5, var7 - 1, var6 + 1, var9, var7 + 1); - } - - this.isModified = true; - } - } - - public int getBlockID(int var1, int var2, int var3) { - return this.blocks[var1 << 11 | var3 << 7 | var2]; - } - - public boolean setBlockIDWithMetadata(int var1, int var2, int var3, int var4, int var5) { - byte var6 = (byte)var4; - int var7 = this.heightMap[var3 << 4 | var1] & 255; - int var8 = this.blocks[var1 << 11 | var3 << 7 | var2] & 255; - if(var8 == var4) { - return false; - } else { - int var9 = this.xPosition * 16 + var1; - int var10 = this.zPosition * 16 + var3; - this.blocks[var1 << 11 | var3 << 7 | var2] = var6; - if(var8 != 0) { - Block.blocksList[var8].onBlockRemoval(this.worldObj, var9, var2, var10); - } - - this.data.set(var1, var2, var3, var5); - if(Block.lightOpacity[var6] != 0) { - if(var2 >= var7) { - this.relightBlock(var1, var2 + 1, var3); - } - } else if(var2 == var7 - 1) { - this.relightBlock(var1, var2, var3); - } - - this.worldObj.scheduleLightingUpdate(EnumSkyBlock.Sky, var9, var2, var10, var9, var2, var10); - this.worldObj.scheduleLightingUpdate(EnumSkyBlock.Block, var9, var2, var10, var9, var2, var10); - this.updateSkylight_do(var1, var3); - if(var4 != 0) { - Block.blocksList[var4].onBlockAdded(this.worldObj, var9, var2, var10); - } - - this.isModified = true; - return true; - } - } - - public boolean setBlockID(int var1, int var2, int var3, int var4) { - byte var5 = (byte)var4; - int var6 = this.heightMap[var3 << 4 | var1] & 255; - int var7 = this.blocks[var1 << 11 | var3 << 7 | var2] & 255; - if(var7 == var4) { - return false; - } else { - int var8 = this.xPosition * 16 + var1; - int var9 = this.zPosition * 16 + var3; - this.blocks[var1 << 11 | var3 << 7 | var2] = var5; - if(var7 != 0) { - Block.blocksList[var7].onBlockRemoval(this.worldObj, var8, var2, var9); - } - - this.data.set(var1, var2, var3, 0); - if(Block.lightOpacity[var5] != 0) { - if(var2 >= var6) { - this.relightBlock(var1, var2 + 1, var3); - } - } else if(var2 == var6 - 1) { - this.relightBlock(var1, var2, var3); - } - - this.worldObj.scheduleLightingUpdate(EnumSkyBlock.Sky, var8, var2, var9, var8, var2, var9); - this.worldObj.scheduleLightingUpdate(EnumSkyBlock.Block, var8, var2, var9, var8, var2, var9); - this.updateSkylight_do(var1, var3); - if(var4 != 0) { - Block.blocksList[var4].onBlockAdded(this.worldObj, var8, var2, var9); - } - - this.isModified = true; - return true; - } - } - - public int getBlockMetadata(int var1, int var2, int var3) { - return this.data.get(var1, var2, var3); - } - - public void setBlockMetadata(int var1, int var2, int var3, int var4) { - this.isModified = true; - this.data.set(var1, var2, var3, var4); - } - - public int getSavedLightValue(EnumSkyBlock var1, int var2, int var3, int var4) { - return var1 == EnumSkyBlock.Sky ? this.skylightMap.get(var2, var3, var4) : (var1 == EnumSkyBlock.Block ? this.blocklightMap.get(var2, var3, var4) : 0); - } - - public void setLightValue(EnumSkyBlock var1, int var2, int var3, int var4, int var5) { - this.isModified = true; - if(var1 == EnumSkyBlock.Sky) { - this.skylightMap.set(var2, var3, var4, var5); - } else { - if(var1 != EnumSkyBlock.Block) { - return; - } - - this.blocklightMap.set(var2, var3, var4, var5); - } - - } - - public int getBlockLightValue(int var1, int var2, int var3, int var4) { - int var5 = this.skylightMap.get(var1, var2, var3); - if(var5 > 0) { - isLit = true; - } - - var5 -= var4; - int var6 = this.blocklightMap.get(var1, var2, var3); - if(var6 > var5) { - var5 = var6; - } - - return var5; - } - - public void addEntity(Entity var1) { - this.hasEntities = true; - int var2 = MathHelper.floor_double(var1.posX / 16.0D); - int var3 = MathHelper.floor_double(var1.posZ / 16.0D); - if(var2 != this.xPosition || var3 != this.zPosition) { - System.out.println("Wrong location! " + var1); - } - - int var4 = MathHelper.floor_double(var1.posY / 16.0D); - if(var4 < 0) { - var4 = 0; - } - - if(var4 >= this.entities.length) { - var4 = this.entities.length - 1; - } - - this.entities[var4].add(var1); - } - - public void removeEntity(Entity var1) { - this.removeEntityAtIndex(var1, MathHelper.floor_double(var1.posY / 16.0D)); - } - - public void removeEntityAtIndex(Entity var1, int var2) { - if(var2 < 0) { - var2 = 0; - } - - if(var2 >= this.entities.length) { - var2 = this.entities.length - 1; - } - - if(!this.entities[var2].contains(var1)) { - System.out.println("There\'s no such entity to remove: " + var1); - } - - this.entities[var2].remove(var1); - } - - public boolean canBlockSeeTheSky(int var1, int var2, int var3) { - return var2 >= (this.heightMap[var3 << 4 | var1] & 255); - } - - public TileEntity getChunkBlockTileEntity(int var1, int var2, int var3) { - int var4 = var1 + var2 * 1024 + var3 * 1024 * 1024; - TileEntity var5 = (TileEntity)this.chunkTileEntityMap.get(Integer.valueOf(var4)); - if(var5 == null) { - int var6 = this.getBlockID(var1, var2, var3); - BlockContainer var7 = (BlockContainer)Block.blocksList[var6]; - var7.onBlockAdded(this.worldObj, this.xPosition * 16 + var1, var2, this.zPosition * 16 + var3); - var5 = (TileEntity)this.chunkTileEntityMap.get(Integer.valueOf(var4)); - } - - return var5; - } - - public void addTileEntity(TileEntity var1) { - int var2 = var1.xCoord - this.xPosition * 16; - int var3 = var1.yCoord; - int var4 = var1.zCoord - this.zPosition * 16; - this.setChunkBlockTileEntity(var2, var3, var4, var1); - } - - public void setChunkBlockTileEntity(int var1, int var2, int var3, TileEntity var4) { - int var5 = var1 + var2 * 1024 + var3 * 1024 * 1024; - var4.worldObj = this.worldObj; - var4.xCoord = this.xPosition * 16 + var1; - var4.yCoord = var2; - var4.zCoord = this.zPosition * 16 + var3; - if(this.getBlockID(var1, var2, var3) != 0 && Block.blocksList[this.getBlockID(var1, var2, var3)] instanceof BlockContainer) { - if(this.isChunkLoaded) { - if(this.chunkTileEntityMap.get(Integer.valueOf(var5)) != null) { - this.worldObj.loadedTileEntityList.remove(this.chunkTileEntityMap.get(Integer.valueOf(var5))); - } - - this.worldObj.loadedTileEntityList.add(var4); - } - - this.chunkTileEntityMap.put(Integer.valueOf(var5), var4); - } else { - System.out.println("Attempted to place a tile entity where there was no entity tile!"); - } - } - - public void removeChunkBlockTileEntity(int var1, int var2, int var3) { - int var4 = var1 + var2 * 1024 + var3 * 1024 * 1024; - if(this.isChunkLoaded) { - this.worldObj.loadedTileEntityList.remove(this.chunkTileEntityMap.remove(Integer.valueOf(var4))); - } - - } - - public void onChunkLoad() { - this.isChunkLoaded = true; - this.worldObj.loadedTileEntityList.addAll(this.chunkTileEntityMap.values()); - - for(int var1 = 0; var1 < this.entities.length; ++var1) { - this.worldObj.addLoadedEntities(this.entities[var1]); - } - - } - - public void onChunkUnload() { - this.isChunkLoaded = false; - this.worldObj.loadedTileEntityList.removeAll(this.chunkTileEntityMap.values()); - - for(int var1 = 0; var1 < this.entities.length; ++var1) { - this.worldObj.unloadEntities(this.entities[var1]); - } - - } - - public void setChunkModified() { - this.isModified = true; - } - - public void getEntitiesWithinAABBForEntity(Entity var1, AxisAlignedBB var2, List var3) { - int var4 = MathHelper.floor_double((var2.minY - 2.0D) / 16.0D); - int var5 = MathHelper.floor_double((var2.maxY + 2.0D) / 16.0D); - if(var4 < 0) { - var4 = 0; - } - - if(var5 >= this.entities.length) { - var5 = this.entities.length - 1; - } - - for(int var6 = var4; var6 <= var5; ++var6) { - List var7 = this.entities[var6]; - - for(int var8 = 0; var8 < var7.size(); ++var8) { - Entity var9 = (Entity)var7.get(var8); - if(var9 != var1 && var9.boundingBox.intersectsWith(var2)) { - var3.add(var9); - } - } - } - - } - - public void getEntitiesOfTypeWithinAAAB(Class var1, AxisAlignedBB var2, List var3) { - int var4 = MathHelper.floor_double((var2.minY - 2.0D) / 16.0D); - int var5 = MathHelper.floor_double((var2.maxY + 2.0D) / 16.0D); - if(var4 < 0) { - var4 = 0; - } - - if(var5 >= this.entities.length) { - var5 = this.entities.length - 1; - } - - for(int var6 = var4; var6 <= var5; ++var6) { - List var7 = this.entities[var6]; - - for(int var8 = 0; var8 < var7.size(); ++var8) { - Entity var9 = (Entity)var7.get(var8); - if(var1.isAssignableFrom(var9.getClass()) && var9.boundingBox.intersectsWith(var2)) { - var3.add(var9); - } - } - } - - } - - public boolean needsSaving(boolean var1) { - return this.neverSave ? false : (this.hasEntities && this.worldObj.worldTime != this.lastSaveTime ? true : this.isModified); - } -} diff --git a/src/net/minecraft/src/ChunkCache.java b/src/net/minecraft/src/ChunkCache.java deleted file mode 100644 index 8856be6..0000000 --- a/src/net/minecraft/src/ChunkCache.java +++ /dev/null @@ -1,123 +0,0 @@ -package net.minecraft.src; - -public class ChunkCache implements IBlockAccess { - private int chunkX; - private int chunkZ; - private Chunk[][] chunkArray; - private World worldObj; - - public ChunkCache(World var1, int var2, int var3, int var4, int var5, int var6, int var7) { - this.worldObj = var1; - this.chunkX = var2 >> 4; - this.chunkZ = var4 >> 4; - int var8 = var5 >> 4; - int var9 = var7 >> 4; - this.chunkArray = new Chunk[var8 - this.chunkX + 1][var9 - this.chunkZ + 1]; - - for(int var10 = this.chunkX; var10 <= var8; ++var10) { - for(int var11 = this.chunkZ; var11 <= var9; ++var11) { - this.chunkArray[var10 - this.chunkX][var11 - this.chunkZ] = var1.getChunkFromChunkCoords(var10, var11); - } - } - - } - - public int getBlockId(int var1, int var2, int var3) { - if(var2 < 0) { - return 0; - } else if(var2 >= 128) { - return 0; - } else { - int var4 = (var1 >> 4) - this.chunkX; - int var5 = (var3 >> 4) - this.chunkZ; - return this.chunkArray[var4][var5].getBlockID(var1 & 15, var2, var3 & 15); - } - } - - public TileEntity getBlockTileEntity(int var1, int var2, int var3) { - int var4 = (var1 >> 4) - this.chunkX; - int var5 = (var3 >> 4) - this.chunkZ; - return this.chunkArray[var4][var5].getChunkBlockTileEntity(var1 & 15, var2, var3 & 15); - } - - public float getBrightness(int var1, int var2, int var3) { - return World.lightBrightnessTable[this.getLightValue(var1, var2, var3)]; - } - - public int getLightValue(int var1, int var2, int var3) { - return this.getLightValueExt(var1, var2, var3, true); - } - - public int getLightValueExt(int var1, int var2, int var3, boolean var4) { - if(var1 >= -32000000 && var3 >= -32000000 && var1 < 32000000 && var3 <= 32000000) { - int var5; - int var6; - if(var4) { - var5 = this.getBlockId(var1, var2, var3); - if(var5 == Block.stairSingle.blockID || var5 == Block.tilledField.blockID) { - var6 = this.getLightValueExt(var1, var2 + 1, var3, false); - int var7 = this.getLightValueExt(var1 + 1, var2, var3, false); - int var8 = this.getLightValueExt(var1 - 1, var2, var3, false); - int var9 = this.getLightValueExt(var1, var2, var3 + 1, false); - int var10 = this.getLightValueExt(var1, var2, var3 - 1, false); - if(var7 > var6) { - var6 = var7; - } - - if(var8 > var6) { - var6 = var8; - } - - if(var9 > var6) { - var6 = var9; - } - - if(var10 > var6) { - var6 = var10; - } - - return var6; - } - } - - if(var2 < 0) { - return 0; - } else if(var2 >= 128) { - var5 = 15 - this.worldObj.skylightSubtracted; - if(var5 < 0) { - var5 = 0; - } - - return var5; - } else { - var5 = (var1 >> 4) - this.chunkX; - var6 = (var3 >> 4) - this.chunkZ; - return this.chunkArray[var5][var6].getBlockLightValue(var1 & 15, var2, var3 & 15, this.worldObj.skylightSubtracted); - } - } else { - return 15; - } - } - - public int getBlockMetadata(int var1, int var2, int var3) { - if(var2 < 0) { - return 0; - } else if(var2 >= 128) { - return 0; - } else { - int var4 = (var1 >> 4) - this.chunkX; - int var5 = (var3 >> 4) - this.chunkZ; - return this.chunkArray[var4][var5].getBlockMetadata(var1 & 15, var2, var3 & 15); - } - } - - public Material getBlockMaterial(int var1, int var2, int var3) { - int var4 = this.getBlockId(var1, var2, var3); - return var4 == 0 ? Material.air : Block.blocksList[var4].blockMaterial; - } - - public boolean isBlockNormalCube(int var1, int var2, int var3) { - Block var4 = Block.blocksList[this.getBlockId(var1, var2, var3)]; - return var4 == null ? false : var4.isOpaqueCube(); - } -} diff --git a/src/net/minecraft/src/ChunkLoader.java b/src/net/minecraft/src/ChunkLoader.java deleted file mode 100644 index 4d6af16..0000000 --- a/src/net/minecraft/src/ChunkLoader.java +++ /dev/null @@ -1,186 +0,0 @@ -package net.minecraft.src; - -import java.io.File; -import java.io.FileInputStream; -import java.io.FileOutputStream; -import java.util.Iterator; - -public class ChunkLoader implements IChunkLoader { - private File saveDir; - private boolean createIfNecessary; - - public ChunkLoader(File var1, boolean var2) { - this.saveDir = var1; - this.createIfNecessary = var2; - } - - private File chunkFileForXZ(int var1, int var2) { - String var3 = "c." + Integer.toString(var1, 36) + "." + Integer.toString(var2, 36) + ".dat"; - String var4 = Integer.toString(var1 & 63, 36); - String var5 = Integer.toString(var2 & 63, 36); - File var6 = new File(this.saveDir, var4); - if(!var6.exists()) { - if(!this.createIfNecessary) { - return null; - } - - var6.mkdir(); - } - - var6 = new File(var6, var5); - if(!var6.exists()) { - if(!this.createIfNecessary) { - return null; - } - - var6.mkdir(); - } - - var6 = new File(var6, var3); - return !var6.exists() && !this.createIfNecessary ? null : var6; - } - - public Chunk loadChunk(World var1, int var2, int var3) { - File var4 = this.chunkFileForXZ(var2, var3); - if(var4 != null && var4.exists()) { - try { - FileInputStream var5 = new FileInputStream(var4); - NBTTagCompound var6 = CompressedStreamTools.readCompressed(var5); - return loadChunkIntoWorldFromCompound(var1, var6.getCompoundTag("Level")); - } catch (Exception var7) { - var7.printStackTrace(); - } - } - - return null; - } - - public void saveChunk(World var1, Chunk var2) { - File var3 = this.chunkFileForXZ(var2.xPosition, var2.zPosition); - if(var3.exists()) { - var1.setSizeOnDisk -= var3.length(); - } - - try { - File var4 = new File(this.saveDir, "tmp_chunk.dat"); - FileOutputStream var5 = new FileOutputStream(var4); - NBTTagCompound var6 = new NBTTagCompound(); - NBTTagCompound var7 = new NBTTagCompound(); - var6.setTag("Level", var7); - this.storeChunkInCompound(var2, var1, var7); - CompressedStreamTools.writeCompressed(var6, var5); - var5.close(); - if(var3.exists()) { - var3.delete(); - } - - var4.renameTo(var3); - var1.setSizeOnDisk += var3.length(); - } catch (Exception var8) { - var8.printStackTrace(); - } - - } - - public void storeChunkInCompound(Chunk var1, World var2, NBTTagCompound var3) { - var3.setInteger("xPos", var1.xPosition); - var3.setInteger("zPos", var1.zPosition); - var3.setLong("LastUpdate", var2.worldTime); - var3.setByteArray("Blocks", var1.blocks); - var3.setByteArray("Data", var1.data.data); - var3.setByteArray("SkyLight", var1.skylightMap.data); - var3.setByteArray("BlockLight", var1.blocklightMap.data); - var3.setByteArray("HeightMap", var1.heightMap); - var3.setBoolean("TerrainPopulated", var1.isTerrainPopulated); - var1.hasEntities = false; - NBTTagList var4 = new NBTTagList(); - - Iterator var6; - NBTTagCompound var8; - for(int var5 = 0; var5 < var1.entities.length; ++var5) { - var6 = var1.entities[var5].iterator(); - - while(var6.hasNext()) { - Entity var7 = (Entity)var6.next(); - var1.hasEntities = true; - var8 = new NBTTagCompound(); - if(var7.addEntityID(var8)) { - var4.setTag(var8); - } - } - } - - var3.setTag("Entities", var4); - NBTTagList var9 = new NBTTagList(); - var6 = var1.chunkTileEntityMap.values().iterator(); - - while(var6.hasNext()) { - TileEntity var10 = (TileEntity)var6.next(); - var8 = new NBTTagCompound(); - var10.writeToNBT(var8); - var9.setTag(var8); - } - - var3.setTag("TileEntities", var9); - } - - public static Chunk loadChunkIntoWorldFromCompound(World var0, NBTTagCompound var1) { - int var2 = var1.getInteger("xPos"); - int var3 = var1.getInteger("zPos"); - Chunk var4 = new Chunk(var0, var2, var3); - var4.blocks = var1.getByteArray("Blocks"); - var4.data = new NibbleArray(var1.getByteArray("Data")); - var4.skylightMap = new NibbleArray(var1.getByteArray("SkyLight")); - var4.blocklightMap = new NibbleArray(var1.getByteArray("BlockLight")); - var4.heightMap = var1.getByteArray("HeightMap"); - var4.isTerrainPopulated = var1.getBoolean("TerrainPopulated"); - if(!var4.data.isValid()) { - var4.data = new NibbleArray(var4.blocks.length); - } - - if(var4.heightMap == null || !var4.skylightMap.isValid()) { - var4.heightMap = new byte[256]; - var4.skylightMap = new NibbleArray(var4.blocks.length); - var4.generateHeightMap(); - } - - if(!var4.blocklightMap.isValid()) { - var4.blocklightMap = new NibbleArray(var4.blocks.length); - var4.doNothing(); - } - - NBTTagList var5 = var1.getTagList("Entities"); - if(var5 != null) { - for(int var6 = 0; var6 < var5.tagCount(); ++var6) { - NBTTagCompound var7 = (NBTTagCompound)var5.tagAt(var6); - Entity var8 = EntityList.createEntityFromNBT(var7, var0); - var4.hasEntities = true; - if(var8 != null) { - var4.addEntity(var8); - } - } - } - - NBTTagList var10 = var1.getTagList("TileEntities"); - if(var10 != null) { - for(int var11 = 0; var11 < var10.tagCount(); ++var11) { - NBTTagCompound var12 = (NBTTagCompound)var10.tagAt(var11); - TileEntity var9 = TileEntity.createAndLoadEntity(var12); - if(var9 != null) { - var4.addTileEntity(var9); - } - } - } - - return var4; - } - - public void chunkTick() { - } - - public void saveExtraData() { - } - - public void saveExtraChunkData(World var1, Chunk var2) { - } -} diff --git a/src/net/minecraft/src/ChunkPosition.java b/src/net/minecraft/src/ChunkPosition.java deleted file mode 100644 index 8b19854..0000000 --- a/src/net/minecraft/src/ChunkPosition.java +++ /dev/null @@ -1,26 +0,0 @@ -package net.minecraft.src; - -public class ChunkPosition { - public final int x; - public final int y; - public final int z; - - public ChunkPosition(int var1, int var2, int var3) { - this.x = var1; - this.y = var2; - this.z = var3; - } - - public boolean equals(Object var1) { - if(!(var1 instanceof ChunkPosition)) { - return false; - } else { - ChunkPosition var2 = (ChunkPosition)var1; - return var2.x == this.x && var2.y == this.y && var2.z == this.z; - } - } - - public int hashCode() { - return this.x * 8976890 + this.y * 981131 + this.z; - } -} diff --git a/src/net/minecraft/src/ChunkProviderGenerate.java b/src/net/minecraft/src/ChunkProviderGenerate.java deleted file mode 100644 index 5a97630..0000000 --- a/src/net/minecraft/src/ChunkProviderGenerate.java +++ /dev/null @@ -1,610 +0,0 @@ -package net.minecraft.src; - -import java.util.Random; - -public class ChunkProviderGenerate implements IChunkProvider { - private Random rand; - private NoiseGeneratorOctaves noiseGen1; - private NoiseGeneratorOctaves noiseGen2; - private NoiseGeneratorOctaves noiseGen3; - private NoiseGeneratorOctaves noiseGen4; - private NoiseGeneratorOctaves noiseGen5; - private NoiseGeneratorOctaves noiseGen6; - private NoiseGeneratorOctaves noiseGen7; - private NoiseGeneratorOctaves mobSpawnerNoise; - private World worldObj; - private double[] noiseArray; - double[] noise3; - double[] noise1; - double[] noise2; - double[] noise6; - double[] noise7; - int[][] unused = new int[32][32]; - - public ChunkProviderGenerate(World var1, long var2) { - this.worldObj = var1; - this.rand = new Random(var2); - this.noiseGen1 = new NoiseGeneratorOctaves(this.rand, 16); - this.noiseGen2 = new NoiseGeneratorOctaves(this.rand, 16); - this.noiseGen3 = new NoiseGeneratorOctaves(this.rand, 8); - this.noiseGen4 = new NoiseGeneratorOctaves(this.rand, 4); - this.noiseGen5 = new NoiseGeneratorOctaves(this.rand, 4); - this.noiseGen6 = new NoiseGeneratorOctaves(this.rand, 10); - this.noiseGen7 = new NoiseGeneratorOctaves(this.rand, 16); - this.mobSpawnerNoise = new NoiseGeneratorOctaves(this.rand, 8); - } - - public void generateTerrain(int var1, int var2, byte[] var3) { - byte var4 = 4; - byte var5 = 64; - int var6 = var4 + 1; - byte var7 = 17; - int var8 = var4 + 1; - this.noiseArray = this.initializeNoiseField(this.noiseArray, var1 * var4, 0, var2 * var4, var6, var7, var8); - - for(int var9 = 0; var9 < var4; ++var9) { - for(int var10 = 0; var10 < var4; ++var10) { - for(int var11 = 0; var11 < 16; ++var11) { - double var12 = 0.125D; - double var14 = this.noiseArray[((var9 + 0) * var8 + var10 + 0) * var7 + var11 + 0]; - double var16 = this.noiseArray[((var9 + 0) * var8 + var10 + 1) * var7 + var11 + 0]; - double var18 = this.noiseArray[((var9 + 1) * var8 + var10 + 0) * var7 + var11 + 0]; - double var20 = this.noiseArray[((var9 + 1) * var8 + var10 + 1) * var7 + var11 + 0]; - double var22 = (this.noiseArray[((var9 + 0) * var8 + var10 + 0) * var7 + var11 + 1] - var14) * var12; - double var24 = (this.noiseArray[((var9 + 0) * var8 + var10 + 1) * var7 + var11 + 1] - var16) * var12; - double var26 = (this.noiseArray[((var9 + 1) * var8 + var10 + 0) * var7 + var11 + 1] - var18) * var12; - double var28 = (this.noiseArray[((var9 + 1) * var8 + var10 + 1) * var7 + var11 + 1] - var20) * var12; - - for(int var30 = 0; var30 < 8; ++var30) { - double var31 = 0.25D; - double var33 = var14; - double var35 = var16; - double var37 = (var18 - var14) * var31; - double var39 = (var20 - var16) * var31; - - for(int var41 = 0; var41 < 4; ++var41) { - int var42 = var41 + var9 * 4 << 11 | 0 + var10 * 4 << 7 | var11 * 8 + var30; - short var43 = 128; - double var44 = 0.25D; - double var46 = var33; - double var48 = (var35 - var33) * var44; - - for(int var50 = 0; var50 < 4; ++var50) { - int var51 = 0; - if(var11 * 8 + var30 < var5) { - var51 = Block.waterStill.blockID; - } - - if(var46 > 0.0D) { - var51 = Block.stone.blockID; - } - - var3[var42] = (byte)var51; - var42 += var43; - var46 += var48; - } - - var33 += var37; - var35 += var39; - } - - var14 += var22; - var16 += var24; - var18 += var26; - var20 += var28; - } - } - } - } - - } - - public void replaceBlocks(int var1, int var2, byte[] var3) { - byte var4 = 64; - - for(int var5 = 0; var5 < 16; ++var5) { - for(int var6 = 0; var6 < 16; ++var6) { - double var7 = (double)(var1 * 16 + var5); - double var9 = (double)(var2 * 16 + var6); - double var11 = 1.0D / 32.0D; - boolean var13 = this.noiseGen4.a(var7 * var11, var9 * var11, 0.0D) + this.rand.nextDouble() * 0.2D > 0.0D; - boolean var14 = this.noiseGen4.a(var9 * var11, 109.0134D, var7 * var11) + this.rand.nextDouble() * 0.2D > 3.0D; - int var15 = (int)(this.noiseGen5.generateNoiseOctaves(var7 * var11 * 2.0D, var9 * var11 * 2.0D) / 3.0D + 3.0D + this.rand.nextDouble() * 0.25D); - int var16 = -1; - int var17 = Block.grass.blockID; - int var18 = Block.dirt.blockID; - int var19 = (var5 * 16 + var6) * 128 + 128; - - for(int var20 = 127; var20 >= 0; --var20) { - --var19; - if(var20 <= 0 + this.rand.nextInt(6) - 1) { - var3[var19] = (byte)Block.bedrock.blockID; - } else if(var3[var19] == 0) { - var16 = -1; - } else if(var3[var19] == Block.stone.blockID) { - if(var16 == -1) { - if(var15 <= 0) { - var17 = 0; - var18 = (byte)Block.stone.blockID; - } else if(var20 >= var4 - 4 && var20 <= var4 + 1) { - var17 = Block.grass.blockID; - var18 = Block.dirt.blockID; - if(var14) { - var17 = 0; - } - - if(var14) { - var18 = Block.gravel.blockID; - } - - if(var13) { - var17 = Block.sand.blockID; - } - - if(var13) { - var18 = Block.sand.blockID; - } - } - - if(var20 < var4 && var17 == 0) { - var17 = Block.waterStill.blockID; - } - - var16 = var15; - if(var20 >= var4 - 1) { - var3[var19] = (byte)var17; - } else { - var3[var19] = (byte)var18; - } - } else if(var16 > 0) { - --var16; - var3[var19] = (byte)var18; - } - } - } - } - } - - } - - public Chunk provideChunk(int var1, int var2) { - this.rand.setSeed((long)var1 * 341873128712L + (long)var2 * 132897987541L); - byte[] var3 = new byte[-Short.MIN_VALUE]; - Chunk var4 = new Chunk(this.worldObj, var3, var1, var2); - this.generateTerrain(var1, var2, var3); - this.replaceBlocks(var1, var2, var3); - this.generateCaves(var1, var2, var3); - var4.generateHeightMap(); - return var4; - } - - protected void generateLargeCaveNode(int var1, int var2, byte[] var3, double var4, double var6, double var8) { - this.generateCaveNode(var1, var2, var3, var4, var6, var8, 1.0F + this.rand.nextFloat() * 6.0F, 0.0F, 0.0F, -1, -1, 0.5D); - } - - protected void generateCaveNode(int var1, int var2, byte[] var3, double var4, double var6, double var8, float var10, float var11, float var12, int var13, int var14, double var15) { - double var17 = (double)(var1 * 16 + 8); - double var19 = (double)(var2 * 16 + 8); - float var21 = 0.0F; - float var22 = 0.0F; - Random var23 = new Random(this.rand.nextLong()); - if(var14 <= 0) { - byte var24 = 112; - var14 = var24 - var23.nextInt(var24 / 4); - } - - boolean var52 = false; - if(var13 == -1) { - var13 = var14 / 2; - var52 = true; - } - - int var25 = var23.nextInt(var14 / 2) + var14 / 4; - - for(boolean var26 = var23.nextInt(6) == 0; var13 < var14; ++var13) { - double var27 = 1.5D + (double)(MathHelper.sin((float)var13 * (float)Math.PI / (float)var14) * var10 * 1.0F); - double var29 = var27 * var15; - float var31 = MathHelper.cos(var12); - float var32 = MathHelper.sin(var12); - var4 += (double)(MathHelper.cos(var11) * var31); - var6 += (double)var32; - var8 += (double)(MathHelper.sin(var11) * var31); - if(var26) { - var12 *= 0.92F; - } else { - var12 *= 0.7F; - } - - var12 += var22 * 0.1F; - var11 += var21 * 0.1F; - var22 *= 0.9F; - var21 *= 12.0F / 16.0F; - var22 += (var23.nextFloat() - var23.nextFloat()) * var23.nextFloat() * 2.0F; - var21 += (var23.nextFloat() - var23.nextFloat()) * var23.nextFloat() * 4.0F; - if(!var52 && var13 == var25 && var10 > 1.0F) { - this.generateCaveNode(var1, var2, var3, var4, var6, var8, var23.nextFloat() * 0.5F + 0.5F, var11 - (float)Math.PI * 0.5F, var12 / 3.0F, var13, var14, 1.0D); - this.generateCaveNode(var1, var2, var3, var4, var6, var8, var23.nextFloat() * 0.5F + 0.5F, var11 + (float)Math.PI * 0.5F, var12 / 3.0F, var13, var14, 1.0D); - return; - } - - if(var52 || var23.nextInt(4) != 0) { - double var33 = var4 - var17; - double var35 = var8 - var19; - double var37 = (double)(var14 - var13); - double var39 = (double)(var10 + 2.0F + 16.0F); - if(var33 * var33 + var35 * var35 - var37 * var37 > var39 * var39) { - return; - } - - if(var4 >= var17 - 16.0D - var27 * 2.0D && var8 >= var19 - 16.0D - var27 * 2.0D && var4 <= var17 + 16.0D + var27 * 2.0D && var8 <= var19 + 16.0D + var27 * 2.0D) { - int var53 = MathHelper.floor_double(var4 - var27) - var1 * 16 - 1; - int var34 = MathHelper.floor_double(var4 + var27) - var1 * 16 + 1; - int var54 = MathHelper.floor_double(var6 - var29) - 1; - int var36 = MathHelper.floor_double(var6 + var29) + 1; - int var55 = MathHelper.floor_double(var8 - var27) - var2 * 16 - 1; - int var38 = MathHelper.floor_double(var8 + var27) - var2 * 16 + 1; - if(var53 < 0) { - var53 = 0; - } - - if(var34 > 16) { - var34 = 16; - } - - if(var54 < 1) { - var54 = 1; - } - - if(var36 > 120) { - var36 = 120; - } - - if(var55 < 0) { - var55 = 0; - } - - if(var38 > 16) { - var38 = 16; - } - - boolean var56 = false; - - int var40; - int var43; - for(var40 = var53; !var56 && var40 < var34; ++var40) { - for(int var41 = var55; !var56 && var41 < var38; ++var41) { - for(int var42 = var36 + 1; !var56 && var42 >= var54 - 1; --var42) { - var43 = (var40 * 16 + var41) * 128 + var42; - if(var42 >= 0 && var42 < 128) { - if(var3[var43] == Block.waterMoving.blockID || var3[var43] == Block.waterStill.blockID) { - var56 = true; - } - - if(var42 != var54 - 1 && var40 != var53 && var40 != var34 - 1 && var41 != var55 && var41 != var38 - 1) { - var42 = var54; - } - } - } - } - } - - if(!var56) { - for(var40 = var53; var40 < var34; ++var40) { - double var57 = ((double)(var40 + var1 * 16) + 0.5D - var4) / var27; - - for(var43 = var55; var43 < var38; ++var43) { - double var44 = ((double)(var43 + var2 * 16) + 0.5D - var8) / var27; - int var46 = (var40 * 16 + var43) * 128 + var36; - boolean var47 = false; - - for(int var48 = var36 - 1; var48 >= var54; --var48) { - double var49 = ((double)var48 + 0.5D - var6) / var29; - if(var49 > -0.7D && var57 * var57 + var49 * var49 + var44 * var44 < 1.0D) { - byte var51 = var3[var46]; - if(var51 == Block.grass.blockID) { - var47 = true; - } - - if(var51 == Block.stone.blockID || var51 == Block.dirt.blockID || var51 == Block.grass.blockID) { - if(var48 < 10) { - var3[var46] = (byte)Block.lavaMoving.blockID; - } else { - var3[var46] = 0; - if(var47 && var3[var46 - 1] == Block.dirt.blockID) { - var3[var46 - 1] = (byte)Block.grass.blockID; - } - } - } - } - - --var46; - } - } - } - - if(var52) { - break; - } - } - } - } - } - - } - - private void generateCaves(int var1, int var2, byte[] var3) { - byte var4 = 8; - this.rand.setSeed(this.worldObj.randomSeed); - long var5 = this.rand.nextLong() / 2L * 2L + 1L; - long var7 = this.rand.nextLong() / 2L * 2L + 1L; - - for(int var9 = var1 - var4; var9 <= var1 + var4; ++var9) { - for(int var10 = var2 - var4; var10 <= var2 + var4; ++var10) { - this.rand.setSeed((long)var9 * var5 + (long)var10 * var7 ^ this.worldObj.randomSeed); - int var11 = this.rand.nextInt(this.rand.nextInt(this.rand.nextInt(40) + 1) + 1); - if(this.rand.nextInt(15) != 0) { - var11 = 0; - } - - for(int var12 = 0; var12 < var11; ++var12) { - double var13 = (double)(var9 * 16 + this.rand.nextInt(16)); - double var15 = (double)this.rand.nextInt(this.rand.nextInt(120) + 8); - double var17 = (double)(var10 * 16 + this.rand.nextInt(16)); - int var19 = 1; - if(this.rand.nextInt(4) == 0) { - this.generateLargeCaveNode(var1, var2, var3, var13, var15, var17); - var19 += this.rand.nextInt(4); - } - - for(int var20 = 0; var20 < var19; ++var20) { - float var21 = this.rand.nextFloat() * (float)Math.PI * 2.0F; - float var22 = (this.rand.nextFloat() - 0.5F) * 2.0F / 8.0F; - float var23 = this.rand.nextFloat() * 2.0F + this.rand.nextFloat(); - this.generateCaveNode(var1, var2, var3, var13, var15, var17, var23, var21, var22, 0, 0, 1.0D); - } - } - } - } - - } - - private double[] initializeNoiseField(double[] var1, int var2, int var3, int var4, int var5, int var6, int var7) { - if(var1 == null) { - var1 = new double[var5 * var6 * var7]; - } - - double var8 = 684.412D; - double var10 = 684.412D; - this.noise6 = this.noiseGen6.a(this.noise6, var2, var3, var4, var5, 1, var7, 1.0D, 0.0D, 1.0D); - this.noise7 = this.noiseGen7.a(this.noise7, var2, var3, var4, var5, 1, var7, 100.0D, 0.0D, 100.0D); - this.noise3 = this.noiseGen3.a(this.noise3, var2, var3, var4, var5, var6, var7, var8 / 80.0D, var10 / 160.0D, var8 / 80.0D); - this.noise1 = this.noiseGen1.a(this.noise1, var2, var3, var4, var5, var6, var7, var8, var10, var8); - this.noise2 = this.noiseGen2.a(this.noise2, var2, var3, var4, var5, var6, var7, var8, var10, var8); - int var12 = 0; - int var13 = 0; - - for(int var14 = 0; var14 < var5; ++var14) { - for(int var15 = 0; var15 < var7; ++var15) { - double var16 = (this.noise6[var13] + 256.0D) / 512.0D; - if(var16 > 1.0D) { - var16 = 1.0D; - } - - double var18 = 0.0D; - double var20 = this.noise7[var13] / 8000.0D; - if(var20 < 0.0D) { - var20 = -var20; - } - - var20 = var20 * 3.0D - 3.0D; - if(var20 < 0.0D) { - var20 /= 2.0D; - if(var20 < -1.0D) { - var20 = -1.0D; - } - - var20 /= 1.4D; - var20 /= 2.0D; - var16 = 0.0D; - } else { - if(var20 > 1.0D) { - var20 = 1.0D; - } - - var20 /= 6.0D; - } - - var16 += 0.5D; - var20 = var20 * (double)var6 / 16.0D; - double var22 = (double)var6 / 2.0D + var20 * 4.0D; - ++var13; - - for(int var24 = 0; var24 < var6; ++var24) { - double var25 = 0.0D; - double var27 = ((double)var24 - var22) * 12.0D / var16; - if(var27 < 0.0D) { - var27 *= 4.0D; - } - - double var29 = this.noise1[var12] / 512.0D; - double var31 = this.noise2[var12] / 512.0D; - double var33 = (this.noise3[var12] / 10.0D + 1.0D) / 2.0D; - if(var33 < 0.0D) { - var25 = var29; - } else if(var33 > 1.0D) { - var25 = var31; - } else { - var25 = var29 + (var31 - var29) * var33; - } - - var25 -= var27; - double var35; - if(var24 > var6 - 4) { - var35 = (double)((float)(var24 - (var6 - 4)) / 3.0F); - var25 = var25 * (1.0D - var35) + -10.0D * var35; - } - - if((double)var24 < var18) { - var35 = (var18 - (double)var24) / 4.0D; - if(var35 < 0.0D) { - var35 = 0.0D; - } - - if(var35 > 1.0D) { - var35 = 1.0D; - } - - var25 = var25 * (1.0D - var35) + -10.0D * var35; - } - - var1[var12] = var25; - ++var12; - } - } - } - - return var1; - } - - public boolean chunkExists(int var1, int var2) { - return true; - } - - public void populate(IChunkProvider var1, int var2, int var3) { - int var4 = var2 * 16; - int var5 = var3 * 16; - this.rand.setSeed(this.worldObj.randomSeed); - long var6 = this.rand.nextLong() / 2L * 2L + 1L; - long var8 = this.rand.nextLong() / 2L * 2L + 1L; - this.rand.setSeed((long)var2 * var6 + (long)var3 * var8 ^ this.worldObj.randomSeed); - double var10 = 0.25D; - - int var12; - int var13; - int var14; - int var15; - for(var12 = 0; var12 < 4; ++var12) { - var13 = var4 + this.rand.nextInt(16) + 8; - var14 = this.rand.nextInt(128); - var15 = var5 + this.rand.nextInt(16) + 8; - (new WorldGenDungeons()).generate(this.worldObj, this.rand, var13, var14, var15); - } - - for(var12 = 0; var12 < 20; ++var12) { - var13 = var4 + this.rand.nextInt(16); - var14 = this.rand.nextInt(128); - var15 = var5 + this.rand.nextInt(16); - (new WorldGenMinable(Block.dirt.blockID, 32)).generate(this.worldObj, this.rand, var13, var14, var15); - } - - for(var12 = 0; var12 < 10; ++var12) { - var13 = var4 + this.rand.nextInt(16); - var14 = this.rand.nextInt(128); - var15 = var5 + this.rand.nextInt(16); - (new WorldGenMinable(Block.gravel.blockID, 32)).generate(this.worldObj, this.rand, var13, var14, var15); - } - - for(var12 = 0; var12 < 20; ++var12) { - var13 = var4 + this.rand.nextInt(16); - var14 = this.rand.nextInt(128); - var15 = var5 + this.rand.nextInt(16); - (new WorldGenMinable(Block.oreCoal.blockID, 16)).generate(this.worldObj, this.rand, var13, var14, var15); - } - - for(var12 = 0; var12 < 20; ++var12) { - var13 = var4 + this.rand.nextInt(16); - var14 = this.rand.nextInt(64); - var15 = var5 + this.rand.nextInt(16); - (new WorldGenMinable(Block.oreIron.blockID, 8)).generate(this.worldObj, this.rand, var13, var14, var15); - } - - if(this.rand.nextInt(1) == 0) { - var12 = var4 + this.rand.nextInt(16); - var13 = this.rand.nextInt(32); - var14 = var5 + this.rand.nextInt(16); - (new WorldGenMinable(Block.oreGold.blockID, 8)).generate(this.worldObj, this.rand, var12, var13, var14); - } - - if(this.rand.nextInt(4) == 0) { - var12 = var4 + this.rand.nextInt(16); - var13 = this.rand.nextInt(16); - var14 = var5 + this.rand.nextInt(16); - (new WorldGenMinable(Block.oreDiamond.blockID, 8)).generate(this.worldObj, this.rand, var12, var13, var14); - } - - var10 = 0.5D; - var12 = (int)((this.mobSpawnerNoise.generateNoiseOctaves((double)var4 * var10, (double)var5 * var10) / 8.0D + this.rand.nextDouble() * 4.0D + 4.0D) / 3.0D); - if(var12 < 0) { - var12 = 0; - } - - WorldGenTrees var18 = new WorldGenTrees(); - if(this.rand.nextInt(10) == 0) { - ++var12; - } - - int var16; - for(var14 = 0; var14 < var12; ++var14) { - var15 = var4 + this.rand.nextInt(16) + 8; - var16 = var5 + this.rand.nextInt(16) + 8; - var18.setScale(1.0D, 1.0D, 1.0D); - var18.generate(this.worldObj, this.rand, var15, this.worldObj.getHeightValue(var15, var16), var16); - } - - int var17; - for(var14 = 0; var14 < 2; ++var14) { - var15 = var4 + this.rand.nextInt(16) + 8; - var16 = this.rand.nextInt(128); - var17 = var5 + this.rand.nextInt(16) + 8; - (new WorldGenFlowers(Block.plantYellow.blockID)).generate(this.worldObj, this.rand, var15, var16, var17); - } - - if(this.rand.nextInt(2) == 0) { - var14 = var4 + this.rand.nextInt(16) + 8; - var15 = this.rand.nextInt(128); - var16 = var5 + this.rand.nextInt(16) + 8; - (new WorldGenFlowers(Block.plantRed.blockID)).generate(this.worldObj, this.rand, var14, var15, var16); - } - - if(this.rand.nextInt(4) == 0) { - var14 = var4 + this.rand.nextInt(16) + 8; - var15 = this.rand.nextInt(128); - var16 = var5 + this.rand.nextInt(16) + 8; - (new WorldGenFlowers(Block.mushroomBrown.blockID)).generate(this.worldObj, this.rand, var14, var15, var16); - } - - if(this.rand.nextInt(8) == 0) { - var14 = var4 + this.rand.nextInt(16) + 8; - var15 = this.rand.nextInt(128); - var16 = var5 + this.rand.nextInt(16) + 8; - (new WorldGenFlowers(Block.mushroomRed.blockID)).generate(this.worldObj, this.rand, var14, var15, var16); - } - - for(var14 = 0; var14 < 50; ++var14) { - var15 = var4 + this.rand.nextInt(16) + 8; - var16 = this.rand.nextInt(this.rand.nextInt(120) + 8); - var17 = var5 + this.rand.nextInt(16) + 8; - (new WorldGenLiquids(Block.waterMoving.blockID)).generate(this.worldObj, this.rand, var15, var16, var17); - } - - for(var14 = 0; var14 < 20; ++var14) { - var15 = var4 + this.rand.nextInt(16) + 8; - var16 = this.rand.nextInt(this.rand.nextInt(this.rand.nextInt(112) + 8) + 8); - var17 = var5 + this.rand.nextInt(16) + 8; - (new WorldGenLiquids(Block.lavaMoving.blockID)).generate(this.worldObj, this.rand, var15, var16, var17); - } - - } - - public boolean saveChunks(boolean var1, IProgressUpdate var2) { - return true; - } - - public boolean unload100OldestChunks() { - return false; - } - - public boolean canSave() { - return true; - } -} diff --git a/src/net/minecraft/src/ChunkProviderIso.java b/src/net/minecraft/src/ChunkProviderIso.java deleted file mode 100644 index ca7a076..0000000 --- a/src/net/minecraft/src/ChunkProviderIso.java +++ /dev/null @@ -1,66 +0,0 @@ -package net.minecraft.src; - -import java.io.IOException; - -public class ChunkProviderIso implements IChunkProvider { - private Chunk[] chunks = new Chunk[256]; - private World worldObj; - private IChunkLoader chunkLoader; - byte[] blocks = new byte[-Short.MIN_VALUE]; - - public ChunkProviderIso(World var1, IChunkLoader var2) { - this.worldObj = var1; - this.chunkLoader = var2; - } - - public boolean chunkExists(int var1, int var2) { - int var3 = var1 & 15 | (var2 & 15) * 16; - return this.chunks[var3] != null && this.chunks[var3].isAtLocation(var1, var2); - } - - public Chunk provideChunk(int var1, int var2) { - int var3 = var1 & 15 | (var2 & 15) * 16; - - try { - if(!this.chunkExists(var1, var2)) { - Chunk var4 = this.getChunkAt(var1, var2); - if(var4 == null) { - var4 = new Chunk(this.worldObj, this.blocks, var1, var2); - var4.isChunkRendered = true; - var4.neverSave = true; - } - - this.chunks[var3] = var4; - } - - return this.chunks[var3]; - } catch (Exception var5) { - var5.printStackTrace(); - return null; - } - } - - private synchronized Chunk getChunkAt(int var1, int var2) { - try { - return this.chunkLoader.loadChunk(this.worldObj, var1, var2); - } catch (IOException var4) { - var4.printStackTrace(); - return null; - } - } - - public void populate(IChunkProvider var1, int var2, int var3) { - } - - public boolean saveChunks(boolean var1, IProgressUpdate var2) { - return true; - } - - public boolean unload100OldestChunks() { - return false; - } - - public boolean canSave() { - return false; - } -} diff --git a/src/net/minecraft/src/ChunkProviderLoadOrGenerate.java b/src/net/minecraft/src/ChunkProviderLoadOrGenerate.java deleted file mode 100644 index b4aff3d..0000000 --- a/src/net/minecraft/src/ChunkProviderLoadOrGenerate.java +++ /dev/null @@ -1,203 +0,0 @@ -package net.minecraft.src; - -import java.io.IOException; - -public class ChunkProviderLoadOrGenerate implements IChunkProvider { - private Chunk blankChunk; - private IChunkProvider chunkProvider; - private IChunkLoader chunkLoader; - private Chunk[] chunks = new Chunk[1024]; - private World worldObj; - int lastQueriedChunkXPos = -999999999; - int lastQueriedChunkZPos = -999999999; - private Chunk lastQueriedChunk; - - public ChunkProviderLoadOrGenerate(World var1, IChunkLoader var2, IChunkProvider var3) { - this.blankChunk = new Chunk(var1, new byte[-Short.MIN_VALUE], 0, 0); - this.blankChunk.isChunkRendered = true; - this.blankChunk.neverSave = true; - this.worldObj = var1; - this.chunkLoader = var2; - this.chunkProvider = var3; - } - - public boolean chunkExists(int var1, int var2) { - if(var1 == this.lastQueriedChunkXPos && var2 == this.lastQueriedChunkZPos && this.lastQueriedChunk != null) { - return true; - } else { - int var3 = var1 & 31; - int var4 = var2 & 31; - int var5 = var3 + var4 * 32; - return this.chunks[var5] != null && (this.chunks[var5] == this.blankChunk || this.chunks[var5].isAtLocation(var1, var2)); - } - } - - public Chunk provideChunk(int var1, int var2) { - if(var1 == this.lastQueriedChunkXPos && var2 == this.lastQueriedChunkZPos && this.lastQueriedChunk != null) { - return this.lastQueriedChunk; - } else { - int var3 = var1 & 31; - int var4 = var2 & 31; - int var5 = var3 + var4 * 32; - if(!this.chunkExists(var1, var2)) { - BlockSand.fallInstantly = true; - if(this.chunks[var5] != null) { - this.chunks[var5].onChunkUnload(); - this.saveChunk(this.chunks[var5]); - this.saveExtraChunkData(this.chunks[var5]); - } - - Chunk var6 = this.getChunkAt(var1, var2); - if(var6 == null) { - if(this.chunkProvider == null) { - var6 = this.blankChunk; - } else { - var6 = this.chunkProvider.provideChunk(var1, var2); - } - } - - this.chunks[var5] = var6; - if(this.chunks[var5] != null) { - this.chunks[var5].onChunkLoad(); - } - - if(!this.chunks[var5].isTerrainPopulated && this.chunkExists(var1 + 1, var2 + 1) && this.chunkExists(var1, var2 + 1) && this.chunkExists(var1 + 1, var2)) { - this.populate(this, var1, var2); - } - - if(this.chunkExists(var1 - 1, var2) && !this.provideChunk(var1 - 1, var2).isTerrainPopulated && this.chunkExists(var1 - 1, var2 + 1) && this.chunkExists(var1, var2 + 1) && this.chunkExists(var1 - 1, var2)) { - this.populate(this, var1 - 1, var2); - } - - if(this.chunkExists(var1, var2 - 1) && !this.provideChunk(var1, var2 - 1).isTerrainPopulated && this.chunkExists(var1 + 1, var2 - 1) && this.chunkExists(var1, var2 - 1) && this.chunkExists(var1 + 1, var2)) { - this.populate(this, var1, var2 - 1); - } - - if(this.chunkExists(var1 - 1, var2 - 1) && !this.provideChunk(var1 - 1, var2 - 1).isTerrainPopulated && this.chunkExists(var1 - 1, var2 - 1) && this.chunkExists(var1, var2 - 1) && this.chunkExists(var1 - 1, var2)) { - this.populate(this, var1 - 1, var2 - 1); - } - - BlockSand.fallInstantly = false; - } - - this.lastQueriedChunkXPos = var1; - this.lastQueriedChunkZPos = var2; - this.lastQueriedChunk = this.chunks[var5]; - return this.chunks[var5]; - } - } - - private Chunk getChunkAt(int var1, int var2) { - if(this.chunkLoader == null) { - return null; - } else { - try { - Chunk var3 = this.chunkLoader.loadChunk(this.worldObj, var1, var2); - if(var3 != null) { - var3.lastSaveTime = this.worldObj.worldTime; - } - - return var3; - } catch (Exception var4) { - var4.printStackTrace(); - return null; - } - } - } - - private void saveExtraChunkData(Chunk var1) { - if(this.chunkLoader != null) { - try { - this.chunkLoader.saveExtraChunkData(this.worldObj, var1); - } catch (Exception var3) { - var3.printStackTrace(); - } - - } - } - - private void saveChunk(Chunk var1) { - if(this.chunkLoader != null) { - try { - var1.lastSaveTime = this.worldObj.worldTime; - this.chunkLoader.saveChunk(this.worldObj, var1); - } catch (IOException var3) { - var3.printStackTrace(); - } - - } - } - - public void populate(IChunkProvider var1, int var2, int var3) { - Chunk var4 = this.provideChunk(var2, var3); - if(!var4.isTerrainPopulated) { - var4.isTerrainPopulated = true; - if(this.chunkProvider != null) { - this.chunkProvider.populate(var1, var2, var3); - var4.setChunkModified(); - } - } - - } - - public boolean saveChunks(boolean var1, IProgressUpdate var2) { - int var3 = 0; - int var4 = 0; - int var5; - if(var2 != null) { - for(var5 = 0; var5 < this.chunks.length; ++var5) { - if(this.chunks[var5] != null && this.chunks[var5].needsSaving(var1)) { - ++var4; - } - } - } - - var5 = 0; - - for(int var6 = 0; var6 < this.chunks.length; ++var6) { - if(this.chunks[var6] != null) { - if(var1 && !this.chunks[var6].neverSave) { - this.saveExtraChunkData(this.chunks[var6]); - } - - if(this.chunks[var6].needsSaving(var1)) { - this.saveChunk(this.chunks[var6]); - this.chunks[var6].isModified = false; - ++var3; - if(var3 == 2 && !var1) { - return false; - } - - if(var2 != null) { - ++var5; - if(var5 % 10 == 0) { - var2.setLoadingProgress(var5 * 100 / var4); - } - } - } - } - } - - if(var1) { - if(this.chunkLoader == null) { - return true; - } - - this.chunkLoader.saveExtraData(); - } - - return true; - } - - public boolean unload100OldestChunks() { - if(this.chunkLoader != null) { - this.chunkLoader.chunkTick(); - } - - return this.chunkProvider.unload100OldestChunks(); - } - - public boolean canSave() { - return true; - } -} diff --git a/src/net/minecraft/src/ClippingHelper.java b/src/net/minecraft/src/ClippingHelper.java deleted file mode 100644 index df283be..0000000 --- a/src/net/minecraft/src/ClippingHelper.java +++ /dev/null @@ -1,18 +0,0 @@ -package net.minecraft.src; - -public class ClippingHelper { - public float[][] frustum = new float[16][16]; - public float[] projectionMatrix = new float[16]; - public float[] modelviewMatrix = new float[16]; - public float[] clippingMatrix = new float[16]; - - public boolean isBoxInFrustum(double var1, double var3, double var5, double var7, double var9, double var11) { - for(int var13 = 0; var13 < 6; ++var13) { - if((double)this.frustum[var13][0] * var1 + (double)this.frustum[var13][1] * var3 + (double)this.frustum[var13][2] * var5 + (double)this.frustum[var13][3] <= 0.0D && (double)this.frustum[var13][0] * var7 + (double)this.frustum[var13][1] * var3 + (double)this.frustum[var13][2] * var5 + (double)this.frustum[var13][3] <= 0.0D && (double)this.frustum[var13][0] * var1 + (double)this.frustum[var13][1] * var9 + (double)this.frustum[var13][2] * var5 + (double)this.frustum[var13][3] <= 0.0D && (double)this.frustum[var13][0] * var7 + (double)this.frustum[var13][1] * var9 + (double)this.frustum[var13][2] * var5 + (double)this.frustum[var13][3] <= 0.0D && (double)this.frustum[var13][0] * var1 + (double)this.frustum[var13][1] * var3 + (double)this.frustum[var13][2] * var11 + (double)this.frustum[var13][3] <= 0.0D && (double)this.frustum[var13][0] * var7 + (double)this.frustum[var13][1] * var3 + (double)this.frustum[var13][2] * var11 + (double)this.frustum[var13][3] <= 0.0D && (double)this.frustum[var13][0] * var1 + (double)this.frustum[var13][1] * var9 + (double)this.frustum[var13][2] * var11 + (double)this.frustum[var13][3] <= 0.0D && (double)this.frustum[var13][0] * var7 + (double)this.frustum[var13][1] * var9 + (double)this.frustum[var13][2] * var11 + (double)this.frustum[var13][3] <= 0.0D) { - return false; - } - } - - return true; - } -} diff --git a/src/net/minecraft/src/ClippingHelperImplementation.java b/src/net/minecraft/src/ClippingHelperImplementation.java deleted file mode 100644 index 8bf16a5..0000000 --- a/src/net/minecraft/src/ClippingHelperImplementation.java +++ /dev/null @@ -1,82 +0,0 @@ -package net.minecraft.src; - -import java.nio.FloatBuffer; -import org.lwjgl.opengl.GL11; - -public class ClippingHelperImplementation extends ClippingHelper { - private static ClippingHelperImplementation instance = new ClippingHelperImplementation(); - private FloatBuffer projectionMatrixBuffer = GLAllocation.createFloatBuffer(16); - private FloatBuffer modelviewMatrixBuffer = GLAllocation.createFloatBuffer(16); - private FloatBuffer floatBuffer = GLAllocation.createFloatBuffer(16); - - public static ClippingHelper getInstance() { - instance.init(); - return instance; - } - - private void normalize(float[][] var1, int var2) { - float var3 = MathHelper.sqrt_float(var1[var2][0] * var1[var2][0] + var1[var2][1] * var1[var2][1] + var1[var2][2] * var1[var2][2]); - var1[var2][0] /= var3; - var1[var2][1] /= var3; - var1[var2][2] /= var3; - var1[var2][3] /= var3; - } - - private void init() { - this.projectionMatrixBuffer.clear(); - this.modelviewMatrixBuffer.clear(); - this.floatBuffer.clear(); - GL11.glGetFloat(GL11.GL_PROJECTION_MATRIX, this.projectionMatrixBuffer); - GL11.glGetFloat(GL11.GL_MODELVIEW_MATRIX, this.modelviewMatrixBuffer); - this.projectionMatrixBuffer.flip().limit(16); - this.projectionMatrixBuffer.get(this.projectionMatrix); - this.modelviewMatrixBuffer.flip().limit(16); - this.modelviewMatrixBuffer.get(this.modelviewMatrix); - this.clippingMatrix[0] = this.modelviewMatrix[0] * this.projectionMatrix[0] + this.modelviewMatrix[1] * this.projectionMatrix[4] + this.modelviewMatrix[2] * this.projectionMatrix[8] + this.modelviewMatrix[3] * this.projectionMatrix[12]; - this.clippingMatrix[1] = this.modelviewMatrix[0] * this.projectionMatrix[1] + this.modelviewMatrix[1] * this.projectionMatrix[5] + this.modelviewMatrix[2] * this.projectionMatrix[9] + this.modelviewMatrix[3] * this.projectionMatrix[13]; - this.clippingMatrix[2] = this.modelviewMatrix[0] * this.projectionMatrix[2] + this.modelviewMatrix[1] * this.projectionMatrix[6] + this.modelviewMatrix[2] * this.projectionMatrix[10] + this.modelviewMatrix[3] * this.projectionMatrix[14]; - this.clippingMatrix[3] = this.modelviewMatrix[0] * this.projectionMatrix[3] + this.modelviewMatrix[1] * this.projectionMatrix[7] + this.modelviewMatrix[2] * this.projectionMatrix[11] + this.modelviewMatrix[3] * this.projectionMatrix[15]; - this.clippingMatrix[4] = this.modelviewMatrix[4] * this.projectionMatrix[0] + this.modelviewMatrix[5] * this.projectionMatrix[4] + this.modelviewMatrix[6] * this.projectionMatrix[8] + this.modelviewMatrix[7] * this.projectionMatrix[12]; - this.clippingMatrix[5] = this.modelviewMatrix[4] * this.projectionMatrix[1] + this.modelviewMatrix[5] * this.projectionMatrix[5] + this.modelviewMatrix[6] * this.projectionMatrix[9] + this.modelviewMatrix[7] * this.projectionMatrix[13]; - this.clippingMatrix[6] = this.modelviewMatrix[4] * this.projectionMatrix[2] + this.modelviewMatrix[5] * this.projectionMatrix[6] + this.modelviewMatrix[6] * this.projectionMatrix[10] + this.modelviewMatrix[7] * this.projectionMatrix[14]; - this.clippingMatrix[7] = this.modelviewMatrix[4] * this.projectionMatrix[3] + this.modelviewMatrix[5] * this.projectionMatrix[7] + this.modelviewMatrix[6] * this.projectionMatrix[11] + this.modelviewMatrix[7] * this.projectionMatrix[15]; - this.clippingMatrix[8] = this.modelviewMatrix[8] * this.projectionMatrix[0] + this.modelviewMatrix[9] * this.projectionMatrix[4] + this.modelviewMatrix[10] * this.projectionMatrix[8] + this.modelviewMatrix[11] * this.projectionMatrix[12]; - this.clippingMatrix[9] = this.modelviewMatrix[8] * this.projectionMatrix[1] + this.modelviewMatrix[9] * this.projectionMatrix[5] + this.modelviewMatrix[10] * this.projectionMatrix[9] + this.modelviewMatrix[11] * this.projectionMatrix[13]; - this.clippingMatrix[10] = this.modelviewMatrix[8] * this.projectionMatrix[2] + this.modelviewMatrix[9] * this.projectionMatrix[6] + this.modelviewMatrix[10] * this.projectionMatrix[10] + this.modelviewMatrix[11] * this.projectionMatrix[14]; - this.clippingMatrix[11] = this.modelviewMatrix[8] * this.projectionMatrix[3] + this.modelviewMatrix[9] * this.projectionMatrix[7] + this.modelviewMatrix[10] * this.projectionMatrix[11] + this.modelviewMatrix[11] * this.projectionMatrix[15]; - this.clippingMatrix[12] = this.modelviewMatrix[12] * this.projectionMatrix[0] + this.modelviewMatrix[13] * this.projectionMatrix[4] + this.modelviewMatrix[14] * this.projectionMatrix[8] + this.modelviewMatrix[15] * this.projectionMatrix[12]; - this.clippingMatrix[13] = this.modelviewMatrix[12] * this.projectionMatrix[1] + this.modelviewMatrix[13] * this.projectionMatrix[5] + this.modelviewMatrix[14] * this.projectionMatrix[9] + this.modelviewMatrix[15] * this.projectionMatrix[13]; - this.clippingMatrix[14] = this.modelviewMatrix[12] * this.projectionMatrix[2] + this.modelviewMatrix[13] * this.projectionMatrix[6] + this.modelviewMatrix[14] * this.projectionMatrix[10] + this.modelviewMatrix[15] * this.projectionMatrix[14]; - this.clippingMatrix[15] = this.modelviewMatrix[12] * this.projectionMatrix[3] + this.modelviewMatrix[13] * this.projectionMatrix[7] + this.modelviewMatrix[14] * this.projectionMatrix[11] + this.modelviewMatrix[15] * this.projectionMatrix[15]; - this.frustum[0][0] = this.clippingMatrix[3] - this.clippingMatrix[0]; - this.frustum[0][1] = this.clippingMatrix[7] - this.clippingMatrix[4]; - this.frustum[0][2] = this.clippingMatrix[11] - this.clippingMatrix[8]; - this.frustum[0][3] = this.clippingMatrix[15] - this.clippingMatrix[12]; - this.normalize(this.frustum, 0); - this.frustum[1][0] = this.clippingMatrix[3] + this.clippingMatrix[0]; - this.frustum[1][1] = this.clippingMatrix[7] + this.clippingMatrix[4]; - this.frustum[1][2] = this.clippingMatrix[11] + this.clippingMatrix[8]; - this.frustum[1][3] = this.clippingMatrix[15] + this.clippingMatrix[12]; - this.normalize(this.frustum, 1); - this.frustum[2][0] = this.clippingMatrix[3] + this.clippingMatrix[1]; - this.frustum[2][1] = this.clippingMatrix[7] + this.clippingMatrix[5]; - this.frustum[2][2] = this.clippingMatrix[11] + this.clippingMatrix[9]; - this.frustum[2][3] = this.clippingMatrix[15] + this.clippingMatrix[13]; - this.normalize(this.frustum, 2); - this.frustum[3][0] = this.clippingMatrix[3] - this.clippingMatrix[1]; - this.frustum[3][1] = this.clippingMatrix[7] - this.clippingMatrix[5]; - this.frustum[3][2] = this.clippingMatrix[11] - this.clippingMatrix[9]; - this.frustum[3][3] = this.clippingMatrix[15] - this.clippingMatrix[13]; - this.normalize(this.frustum, 3); - this.frustum[4][0] = this.clippingMatrix[3] - this.clippingMatrix[2]; - this.frustum[4][1] = this.clippingMatrix[7] - this.clippingMatrix[6]; - this.frustum[4][2] = this.clippingMatrix[11] - this.clippingMatrix[10]; - this.frustum[4][3] = this.clippingMatrix[15] - this.clippingMatrix[14]; - this.normalize(this.frustum, 4); - this.frustum[5][0] = this.clippingMatrix[3] + this.clippingMatrix[2]; - this.frustum[5][1] = this.clippingMatrix[7] + this.clippingMatrix[6]; - this.frustum[5][2] = this.clippingMatrix[11] + this.clippingMatrix[10]; - this.frustum[5][3] = this.clippingMatrix[15] + this.clippingMatrix[14]; - this.normalize(this.frustum, 5); - } -} diff --git a/src/net/minecraft/src/CompressedStreamTools.java b/src/net/minecraft/src/CompressedStreamTools.java deleted file mode 100644 index 025017f..0000000 --- a/src/net/minecraft/src/CompressedStreamTools.java +++ /dev/null @@ -1,50 +0,0 @@ -package net.minecraft.src; - -import java.io.DataInput; -import java.io.DataInputStream; -import java.io.DataOutput; -import java.io.DataOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; -import java.util.zip.GZIPInputStream; -import java.util.zip.GZIPOutputStream; - -public class CompressedStreamTools { - public static NBTTagCompound readCompressed(InputStream var0) throws IOException { - DataInputStream var1 = new DataInputStream(new GZIPInputStream(var0)); - - NBTTagCompound var2; - try { - var2 = read(var1); - } finally { - var1.close(); - } - - return var2; - } - - public static void writeCompressed(NBTTagCompound var0, OutputStream var1) throws IOException { - DataOutputStream var2 = new DataOutputStream(new GZIPOutputStream(var1)); - - try { - write(var0, var2); - } finally { - var2.close(); - } - - } - - public static NBTTagCompound read(DataInput var0) throws IOException { - NBTBase var1 = NBTBase.readNamedTag(var0); - if(var1 instanceof NBTTagCompound) { - return (NBTTagCompound)var1; - } else { - throw new IOException("Root tag must be a named compound tag"); - } - } - - public static void write(NBTTagCompound var0, DataOutput var1) throws IOException { - NBTBase.writeNamedTag(var0, var1); - } -} diff --git a/src/net/minecraft/src/CraftingManager.java b/src/net/minecraft/src/CraftingManager.java deleted file mode 100644 index 21ff2e3..0000000 --- a/src/net/minecraft/src/CraftingManager.java +++ /dev/null @@ -1,107 +0,0 @@ -package net.minecraft.src; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.HashMap; -import java.util.List; - -public class CraftingManager { - private static final CraftingManager instance = new CraftingManager(); - private List recipes = new ArrayList(); - - public static final CraftingManager getInstance() { - return instance; - } - - private CraftingManager() { - (new RecipesTools()).addRecipes(this); - (new RecipesWeapons()).addRecipe(this); - (new RecipesIngots()).addRecipes(this); - (new RecipesFood()).addRecipes(this); - (new RecipesCrafting()).addRecipes(this); - (new RecipesArmor()).addRecipes(this); - this.addRecipe(new ItemStack(Block.cloth, 1), new Object[]{"###", "###", "###", Character.valueOf('#'), Item.silk}); - this.addRecipe(new ItemStack(Block.tnt, 1), new Object[]{"X#X", "#X#", "X#X", Character.valueOf('X'), Item.gunpowder, Character.valueOf('#'), Block.sand}); - this.addRecipe(new ItemStack(Block.stairSingle, 3), new Object[]{"###", Character.valueOf('#'), Block.cobblestone}); - this.addRecipe(new ItemStack(Block.ladder, 1), new Object[]{"# #", "###", "# #", Character.valueOf('#'), Item.stick}); - this.addRecipe(new ItemStack(Item.door, 1), new Object[]{"##", "##", "##", Character.valueOf('#'), Block.planks}); - this.addRecipe(new ItemStack(Item.sign, 1), new Object[]{"###", "###", " X ", Character.valueOf('#'), Block.planks, Character.valueOf('X'), Item.stick}); - this.addRecipe(new ItemStack(Block.planks, 4), new Object[]{"#", Character.valueOf('#'), Block.wood}); - this.addRecipe(new ItemStack(Item.stick, 4), new Object[]{"#", "#", Character.valueOf('#'), Block.planks}); - this.addRecipe(new ItemStack(Block.torch, 4), new Object[]{"X", "#", Character.valueOf('X'), Item.coal, Character.valueOf('#'), Item.stick}); - this.addRecipe(new ItemStack(Item.bowlEmpty, 4), new Object[]{"# #", " # ", Character.valueOf('#'), Block.planks}); - this.addRecipe(new ItemStack(Block.minecartTrack, 16), new Object[]{"X X", "X#X", "X X", Character.valueOf('X'), Item.ingotIron, Character.valueOf('#'), Item.stick}); - this.addRecipe(new ItemStack(Item.minecart, 1), new Object[]{"# #", "###", Character.valueOf('#'), Item.ingotIron}); - this.addRecipe(new ItemStack(Item.bucketEmpty, 1), new Object[]{"# #", " # ", Character.valueOf('#'), Item.ingotIron}); - this.addRecipe(new ItemStack(Item.striker, 1), new Object[]{"A ", " B", Character.valueOf('A'), Item.ingotIron, Character.valueOf('B'), Item.flint}); - this.addRecipe(new ItemStack(Item.bread, 1), new Object[]{"###", Character.valueOf('#'), Item.wheat}); - this.addRecipe(new ItemStack(Block.stairCompactWood, 4), new Object[]{"# ", "## ", "###", Character.valueOf('#'), Block.planks}); - this.addRecipe(new ItemStack(Block.stairCompactStone, 4), new Object[]{"# ", "## ", "###", Character.valueOf('#'), Block.cobblestone}); - this.addRecipe(new ItemStack(Item.painting, 1), new Object[]{"###", "#X#", "###", Character.valueOf('#'), Item.stick, Character.valueOf('X'), Block.cloth}); - this.addRecipe(new ItemStack(Item.appleGold, 1), new Object[]{"###", "#X#", "###", Character.valueOf('#'), Block.blockGold, Character.valueOf('X'), Item.appleRed}); - Collections.sort(this.recipes, new RecipeSorter(this)); - System.out.println(this.recipes.size() + " recipes"); - } - - void addRecipe(ItemStack var1, Object... var2) { - String var3 = ""; - int var4 = 0; - int var5 = 0; - int var6 = 0; - if(var2[var4] instanceof String[]) { - String[] var11 = (String[])((String[])var2[var4++]); - - for(int var8 = 0; var8 < var11.length; ++var8) { - String var9 = var11[var8]; - ++var6; - var5 = var9.length(); - var3 = var3 + var9; - } - } else { - while(var2[var4] instanceof String) { - String var7 = (String)var2[var4++]; - ++var6; - var5 = var7.length(); - var3 = var3 + var7; - } - } - - HashMap var12; - int var15; - for(var12 = new HashMap(); var4 < var2.length; var4 += 2) { - Character var13 = (Character)var2[var4]; - var15 = 0; - if(var2[var4 + 1] instanceof Item) { - var15 = ((Item)var2[var4 + 1]).shiftedIndex; - } else if(var2[var4 + 1] instanceof Block) { - var15 = ((Block)var2[var4 + 1]).blockID; - } - - var12.put(var13, Integer.valueOf(var15)); - } - - int[] var14 = new int[var5 * var6]; - - for(var15 = 0; var15 < var5 * var6; ++var15) { - char var10 = var3.charAt(var15); - if(var12.containsKey(Character.valueOf(var10))) { - var14[var15] = ((Integer)var12.get(Character.valueOf(var10))).intValue(); - } else { - var14[var15] = -1; - } - } - - this.recipes.add(new CraftingRecipe(var5, var6, var14, var1)); - } - - public ItemStack findMatchingRecipe(int[] var1) { - for(int var2 = 0; var2 < this.recipes.size(); ++var2) { - CraftingRecipe var3 = (CraftingRecipe)this.recipes.get(var2); - if(var3.matchRecipe(var1)) { - return var3.createResult(var1); - } - } - - return null; - } -} diff --git a/src/net/minecraft/src/CraftingRecipe.java b/src/net/minecraft/src/CraftingRecipe.java deleted file mode 100644 index 37b74c6..0000000 --- a/src/net/minecraft/src/CraftingRecipe.java +++ /dev/null @@ -1,64 +0,0 @@ -package net.minecraft.src; - -public class CraftingRecipe { - private int width; - private int height; - private int[] ingredientMap; - private ItemStack resultStack; - public final int resultId; - - public CraftingRecipe(int var1, int var2, int[] var3, ItemStack var4) { - this.resultId = var4.itemID; - this.width = var1; - this.height = var2; - this.ingredientMap = var3; - this.resultStack = var4; - } - - public boolean matchRecipe(int[] var1) { - for(int var2 = 0; var2 <= 3 - this.width; ++var2) { - for(int var3 = 0; var3 <= 3 - this.height; ++var3) { - if(this.checkMatch(var1, var2, var3, true)) { - return true; - } - - if(this.checkMatch(var1, var2, var3, false)) { - return true; - } - } - } - - return false; - } - - private boolean checkMatch(int[] var1, int var2, int var3, boolean var4) { - for(int var5 = 0; var5 < 3; ++var5) { - for(int var6 = 0; var6 < 3; ++var6) { - int var7 = var5 - var2; - int var8 = var6 - var3; - int var9 = -1; - if(var7 >= 0 && var8 >= 0 && var7 < this.width && var8 < this.height) { - if(var4) { - var9 = this.ingredientMap[this.width - var7 - 1 + var8 * this.width]; - } else { - var9 = this.ingredientMap[var7 + var8 * this.width]; - } - } - - if(var1[var5 + var6 * 3] != var9) { - return false; - } - } - } - - return true; - } - - public ItemStack createResult(int[] var1) { - return new ItemStack(this.resultStack.itemID, this.resultStack.stackSize); - } - - public int getRecipeSize() { - return this.width * this.height; - } -} diff --git a/src/net/minecraft/src/EffectRenderer.java b/src/net/minecraft/src/EffectRenderer.java deleted file mode 100644 index 8b30d9b..0000000 --- a/src/net/minecraft/src/EffectRenderer.java +++ /dev/null @@ -1,162 +0,0 @@ -package net.minecraft.src; - -import java.util.ArrayList; -import java.util.List; -import java.util.Random; -import org.lwjgl.opengl.GL11; - -public class EffectRenderer { - protected World worldObj; - private List[] fxLayers = new List[3]; - private RenderEngine renderer; - private Random rand = new Random(); - - public EffectRenderer(World var1, RenderEngine var2) { - if(var1 != null) { - this.worldObj = var1; - } - - this.renderer = var2; - - for(int var3 = 0; var3 < 3; ++var3) { - this.fxLayers[var3] = new ArrayList(); - } - - } - - public void addEffect(EntityFX var1) { - int var2 = var1.getFXLayer(); - this.fxLayers[var2].add(var1); - } - - public void updateEffects() { - for(int var1 = 0; var1 < 3; ++var1) { - for(int var2 = 0; var2 < this.fxLayers[var1].size(); ++var2) { - EntityFX var3 = (EntityFX)this.fxLayers[var1].get(var2); - var3.onUpdate(); - if(var3.isDead) { - this.fxLayers[var1].remove(var2--); - } - } - } - - } - - public void renderParticles(Entity var1, float var2) { - float var3 = MathHelper.cos(var1.rotationYaw * (float)Math.PI / 180.0F); - float var4 = MathHelper.sin(var1.rotationYaw * (float)Math.PI / 180.0F); - float var5 = -var4 * MathHelper.sin(var1.rotationPitch * (float)Math.PI / 180.0F); - float var6 = var3 * MathHelper.sin(var1.rotationPitch * (float)Math.PI / 180.0F); - float var7 = MathHelper.cos(var1.rotationPitch * (float)Math.PI / 180.0F); - EntityFX.interpPosX = var1.lastTickPosX + (var1.posX - var1.lastTickPosX) * (double)var2; - EntityFX.interpPosY = var1.lastTickPosY + (var1.posY - var1.lastTickPosY) * (double)var2; - EntityFX.interpPosZ = var1.lastTickPosZ + (var1.posZ - var1.lastTickPosZ) * (double)var2; - - for(int var8 = 0; var8 < 2; ++var8) { - if(this.fxLayers[var8].size() != 0) { - int var9 = 0; - if(var8 == 0) { - var9 = this.renderer.getTexture("/particles.png"); - } - - if(var8 == 1) { - var9 = this.renderer.getTexture("/terrain.png"); - } - - GL11.glBindTexture(GL11.GL_TEXTURE_2D, var9); - Tessellator var10 = Tessellator.instance; - var10.startDrawingQuads(); - - for(int var11 = 0; var11 < this.fxLayers[var8].size(); ++var11) { - EntityFX var12 = (EntityFX)this.fxLayers[var8].get(var11); - var12.renderParticle(var10, var2, var3, var7, var4, var5, var6); - } - - var10.draw(); - } - } - - } - - public void renderLitParticles(Entity var1, float var2) { - byte var3 = 2; - if(this.fxLayers[var3].size() != 0) { - Tessellator var4 = Tessellator.instance; - - for(int var5 = 0; var5 < this.fxLayers[var3].size(); ++var5) { - EntityFX var6 = (EntityFX)this.fxLayers[var3].get(var5); - var6.renderParticle(var4, var2, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F); - } - - } - } - - public void clearEffects(World var1) { - this.worldObj = var1; - - for(int var2 = 0; var2 < 3; ++var2) { - this.fxLayers[var2].clear(); - } - - } - - public void addBlockDestroyEffects(int var1, int var2, int var3) { - int var4 = this.worldObj.getBlockId(var1, var2, var3); - if(var4 != 0) { - Block var5 = Block.blocksList[var4]; - byte var6 = 4; - - for(int var7 = 0; var7 < var6; ++var7) { - for(int var8 = 0; var8 < var6; ++var8) { - for(int var9 = 0; var9 < var6; ++var9) { - double var10 = (double)var1 + ((double)var7 + 0.5D) / (double)var6; - double var12 = (double)var2 + ((double)var8 + 0.5D) / (double)var6; - double var14 = (double)var3 + ((double)var9 + 0.5D) / (double)var6; - this.addEffect(new EntityDiggingFX(this.worldObj, var10, var12, var14, var10 - (double)var1 - 0.5D, var12 - (double)var2 - 0.5D, var14 - (double)var3 - 0.5D, var5)); - } - } - } - - } - } - - public void addBlockHitEffects(int var1, int var2, int var3, int var4) { - int var5 = this.worldObj.getBlockId(var1, var2, var3); - if(var5 != 0) { - Block var6 = Block.blocksList[var5]; - float var7 = 0.1F; - double var8 = (double)var1 + this.rand.nextDouble() * (var6.maxX - var6.minX - (double)(var7 * 2.0F)) + (double)var7 + var6.minX; - double var10 = (double)var2 + this.rand.nextDouble() * (var6.maxY - var6.minY - (double)(var7 * 2.0F)) + (double)var7 + var6.minY; - double var12 = (double)var3 + this.rand.nextDouble() * (var6.maxZ - var6.minZ - (double)(var7 * 2.0F)) + (double)var7 + var6.minZ; - if(var4 == 0) { - var10 = (double)var2 + var6.minY - (double)var7; - } - - if(var4 == 1) { - var10 = (double)var2 + var6.maxY + (double)var7; - } - - if(var4 == 2) { - var12 = (double)var3 + var6.minZ - (double)var7; - } - - if(var4 == 3) { - var12 = (double)var3 + var6.maxZ + (double)var7; - } - - if(var4 == 4) { - var8 = (double)var1 + var6.minX - (double)var7; - } - - if(var4 == 5) { - var8 = (double)var1 + var6.maxX + (double)var7; - } - - this.addEffect((new EntityDiggingFX(this.worldObj, var8, var10, var12, 0.0D, 0.0D, 0.0D, var6)).multiplyVelocity(0.2F).multipleParticleScaleBy(0.6F)); - } - } - - public String getStatistics() { - return "" + (this.fxLayers[0].size() + this.fxLayers[1].size() + this.fxLayers[2].size()); - } -} diff --git a/src/net/minecraft/src/Entity.java b/src/net/minecraft/src/Entity.java deleted file mode 100644 index 64fc4ce..0000000 --- a/src/net/minecraft/src/Entity.java +++ /dev/null @@ -1,728 +0,0 @@ -package net.minecraft.src; - -import java.util.List; -import java.util.Random; - -public abstract class Entity { - public boolean preventEntitySpawning = false; - public Entity riddenByEntity; - public Entity ridingEntity; - protected World worldObj; - public double prevPosX; - public double prevPosY; - public double prevPosZ; - public double posX; - public double posY; - public double posZ; - public double motionX; - public double motionY; - public double motionZ; - public float rotationYaw; - public float rotationPitch; - public float prevRotationYaw; - public float prevRotationPitch; - public final AxisAlignedBB boundingBox = AxisAlignedBB.getBoundingBox(0.0D, 0.0D, 0.0D, 0.0D, 0.0D, 0.0D); - public boolean onGround = false; - public boolean isCollidedHorizontally = false; - public boolean isCollided = false; - public boolean surfaceCollision = true; - public boolean isDead = false; - public float yOffset = 0.0F; - public float width = 0.6F; - public float height = 1.8F; - public float prevDistanceWalkedModified = 0.0F; - public float distanceWalkedModified = 0.0F; - protected boolean canTriggerWalking = true; - protected float fallDistance = 0.0F; - private int nextStepDistance = 1; - public double lastTickPosX; - public double lastTickPosY; - public double lastTickPosZ; - public float ySize = 0.0F; - public float stepHeight = 0.0F; - public boolean noClip = false; - public float entityCollisionReduction = 0.0F; - public boolean unusedBool = false; - protected Random rand = new Random(); - public int ticksExisted = 0; - public int fireResistance = 1; - public int fire = 0; - protected int maxAir = 300; - protected boolean inWater = false; - public int heartsLife = 0; - public int air = 300; - private boolean isFirstUpdate = true; - public String skinUrl; - private double entityRiderPitchDelta; - private double entityRiderYawDelta; - - public Entity(World var1) { - this.worldObj = var1; - this.setPosition(0.0D, 0.0D, 0.0D); - } - - protected void preparePlayerToSpawn() { - if(this.worldObj != null) { - while(this.posY > 0.0D) { - this.setPosition(this.posX, this.posY, this.posZ); - if(this.worldObj.getCollidingBoundingBoxes(this, this.boundingBox).size() == 0) { - break; - } - - ++this.posY; - } - - this.motionX = this.motionY = this.motionZ = 0.0D; - this.rotationPitch = 0.0F; - } - } - - public void setEntityDead() { - this.isDead = true; - } - - protected void setSize(float var1, float var2) { - this.width = var1; - this.height = var2; - } - - protected void setRotation(float var1, float var2) { - this.rotationYaw = var1; - this.rotationPitch = var2; - } - - public void setPosition(double var1, double var3, double var5) { - this.posX = var1; - this.posY = var3; - this.posZ = var5; - float var7 = this.width / 2.0F; - float var8 = this.height / 2.0F; - this.boundingBox.setBounds(var1 - (double)var7, var3 - (double)var8, var5 - (double)var7, var1 + (double)var7, var3 + (double)var8, var5 + (double)var7); - } - - public void setAngles(float var1, float var2) { - float var3 = this.rotationPitch; - float var4 = this.rotationYaw; - this.rotationYaw = (float)((double)this.rotationYaw + (double)var1 * 0.15D); - this.rotationPitch = (float)((double)this.rotationPitch - (double)var2 * 0.15D); - if(this.rotationPitch < -90.0F) { - this.rotationPitch = -90.0F; - } - - if(this.rotationPitch > 90.0F) { - this.rotationPitch = 90.0F; - } - - this.prevRotationPitch += this.rotationPitch - var3; - this.prevRotationYaw += this.rotationYaw - var4; - } - - public void onUpdate() { - this.onEntityUpdate(); - } - - public void onEntityUpdate() { - if(this.ridingEntity != null && this.ridingEntity.isDead) { - this.ridingEntity = null; - } - - ++this.ticksExisted; - this.prevDistanceWalkedModified = this.distanceWalkedModified; - this.prevPosX = this.posX; - this.prevPosY = this.posY; - this.prevPosZ = this.posZ; - this.prevRotationPitch = this.rotationPitch; - this.prevRotationYaw = this.rotationYaw; - if(this.handleWaterMovement()) { - if(!this.inWater && !this.isFirstUpdate) { - float var1 = MathHelper.sqrt_double(this.motionX * this.motionX * (double)0.2F + this.motionY * this.motionY + this.motionZ * this.motionZ * (double)0.2F) * 0.2F; - if(var1 > 1.0F) { - var1 = 1.0F; - } - - this.worldObj.playSoundAtEntity(this, "random.splash", var1, 1.0F + (this.rand.nextFloat() - this.rand.nextFloat()) * 0.4F); - float var2 = (float)MathHelper.floor_double(this.boundingBox.minY); - - int var3; - float var4; - float var5; - for(var3 = 0; (float)var3 < 1.0F + this.width * 20.0F; ++var3) { - var4 = (this.rand.nextFloat() * 2.0F - 1.0F) * this.width; - var5 = (this.rand.nextFloat() * 2.0F - 1.0F) * this.width; - this.worldObj.spawnParticle("bubble", this.posX + (double)var4, (double)(var2 + 1.0F), this.posZ + (double)var5, this.motionX, this.motionY - (double)(this.rand.nextFloat() * 0.2F), this.motionZ); - } - - for(var3 = 0; (float)var3 < 1.0F + this.width * 20.0F; ++var3) { - var4 = (this.rand.nextFloat() * 2.0F - 1.0F) * this.width; - var5 = (this.rand.nextFloat() * 2.0F - 1.0F) * this.width; - this.worldObj.spawnParticle("splash", this.posX + (double)var4, (double)(var2 + 1.0F), this.posZ + (double)var5, this.motionX, this.motionY, this.motionZ); - } - } - - this.fallDistance = 0.0F; - this.inWater = true; - this.fire = 0; - } else { - this.inWater = false; - } - - if(this.fire > 0) { - if(this.fire % 20 == 0) { - this.attackEntityFrom((Entity)null, 1); - } - - --this.fire; - } - - if(this.handleLavaMovement()) { - this.attackEntityFrom((Entity)null, 10); - this.fire = 600; - } - - if(this.posY < -64.0D) { - this.kill(); - } - - this.isFirstUpdate = false; - } - - protected void kill() { - this.setEntityDead(); - } - - public boolean isOffsetPositionInLiquid(double var1, double var3, double var5) { - AxisAlignedBB var7 = this.boundingBox.getOffsetBoundingBox(var1, var3, var5); - List var8 = this.worldObj.getCollidingBoundingBoxes(this, var7); - return var8.size() > 0 ? false : !this.worldObj.getIsAnyLiquid(var7); - } - - public void moveEntity(double var1, double var3, double var5) { - if(this.noClip) { - this.boundingBox.offset(var1, var3, var5); - this.posX = (this.boundingBox.minX + this.boundingBox.maxX) / 2.0D; - this.posY = this.boundingBox.minY + (double)this.yOffset - (double)this.ySize; - this.posZ = (this.boundingBox.minZ + this.boundingBox.maxZ) / 2.0D; - } else { - double var7 = this.posX; - double var9 = this.posZ; - double var11 = var1; - double var13 = var3; - double var15 = var5; - AxisAlignedBB var17 = this.boundingBox.copy(); - List var18 = this.worldObj.getCollidingBoundingBoxes(this, this.boundingBox.addCoord(var1, var3, var5)); - - for(int var19 = 0; var19 < var18.size(); ++var19) { - var3 = ((AxisAlignedBB)var18.get(var19)).calculateYOffset(this.boundingBox, var3); - } - - this.boundingBox.offset(0.0D, var3, 0.0D); - if(!this.surfaceCollision && var13 != var3) { - var5 = 0.0D; - var3 = var5; - var1 = var5; - } - - boolean var29 = this.onGround || var13 != var3 && var13 < 0.0D; - - int var20; - for(var20 = 0; var20 < var18.size(); ++var20) { - var1 = ((AxisAlignedBB)var18.get(var20)).calculateXOffset(this.boundingBox, var1); - } - - this.boundingBox.offset(var1, 0.0D, 0.0D); - if(!this.surfaceCollision && var11 != var1) { - var5 = 0.0D; - var3 = var5; - var1 = var5; - } - - for(var20 = 0; var20 < var18.size(); ++var20) { - var5 = ((AxisAlignedBB)var18.get(var20)).calculateZOffset(this.boundingBox, var5); - } - - this.boundingBox.offset(0.0D, 0.0D, var5); - if(!this.surfaceCollision && var15 != var5) { - var5 = 0.0D; - var3 = var5; - var1 = var5; - } - - double var22; - int var27; - double var30; - if(this.stepHeight > 0.0F && var29 && this.ySize < 0.05F && (var11 != var1 || var15 != var5)) { - var30 = var1; - var22 = var3; - double var24 = var5; - var1 = var11; - var3 = (double)this.stepHeight; - var5 = var15; - AxisAlignedBB var26 = this.boundingBox.copy(); - this.boundingBox.setBB(var17); - var18 = this.worldObj.getCollidingBoundingBoxes(this, this.boundingBox.addCoord(var11, var3, var15)); - - for(var27 = 0; var27 < var18.size(); ++var27) { - var3 = ((AxisAlignedBB)var18.get(var27)).calculateYOffset(this.boundingBox, var3); - } - - this.boundingBox.offset(0.0D, var3, 0.0D); - if(!this.surfaceCollision && var13 != var3) { - var5 = 0.0D; - var3 = var5; - var1 = var5; - } - - for(var27 = 0; var27 < var18.size(); ++var27) { - var1 = ((AxisAlignedBB)var18.get(var27)).calculateXOffset(this.boundingBox, var1); - } - - this.boundingBox.offset(var1, 0.0D, 0.0D); - if(!this.surfaceCollision && var11 != var1) { - var5 = 0.0D; - var3 = var5; - var1 = var5; - } - - for(var27 = 0; var27 < var18.size(); ++var27) { - var5 = ((AxisAlignedBB)var18.get(var27)).calculateZOffset(this.boundingBox, var5); - } - - this.boundingBox.offset(0.0D, 0.0D, var5); - if(!this.surfaceCollision && var15 != var5) { - var5 = 0.0D; - var3 = var5; - var1 = var5; - } - - if(var30 * var30 + var24 * var24 >= var1 * var1 + var5 * var5) { - var1 = var30; - var3 = var22; - var5 = var24; - this.boundingBox.setBB(var26); - } else { - this.ySize = (float)((double)this.ySize + 0.5D); - } - } - - this.posX = (this.boundingBox.minX + this.boundingBox.maxX) / 2.0D; - this.posY = this.boundingBox.minY + (double)this.yOffset - (double)this.ySize; - this.posZ = (this.boundingBox.minZ + this.boundingBox.maxZ) / 2.0D; - this.isCollidedHorizontally = var11 != var1 || var15 != var5; - this.onGround = var13 != var3 && var13 < 0.0D; - this.isCollided = this.isCollidedHorizontally || var13 != var3; - if(this.onGround) { - if(this.fallDistance > 0.0F) { - this.fall(this.fallDistance); - this.fallDistance = 0.0F; - } - } else if(var3 < 0.0D) { - this.fallDistance = (float)((double)this.fallDistance - var3); - } - - if(var11 != var1) { - this.motionX = 0.0D; - } - - if(var13 != var3) { - this.motionY = 0.0D; - } - - if(var15 != var5) { - this.motionZ = 0.0D; - } - - var30 = this.posX - var7; - var22 = this.posZ - var9; - this.distanceWalkedModified = (float)((double)this.distanceWalkedModified + (double)MathHelper.sqrt_double(var30 * var30 + var22 * var22) * 0.6D); - if(this.canTriggerWalking) { - int var31 = MathHelper.floor_double(this.posX); - int var25 = MathHelper.floor_double(this.posY - (double)0.2F - (double)this.yOffset); - int var33 = MathHelper.floor_double(this.posZ); - var27 = this.worldObj.getBlockId(var31, var25, var33); - if(this.distanceWalkedModified > (float)this.nextStepDistance && var27 > 0) { - ++this.nextStepDistance; - StepSound var28 = Block.blocksList[var27].stepSound; - if(!Block.blocksList[var27].blockMaterial.getIsLiquid()) { - this.worldObj.playSoundAtEntity(this, var28.getStepSound(), var28.getVolume() * 0.15F, var28.getPitch()); - } - - Block.blocksList[var27].onEntityWalking(this.worldObj, var31, var25, var33, this); - } - } - - this.ySize *= 0.4F; - boolean var32 = this.handleWaterMovement(); - if(this.worldObj.isBoundingBoxBurning(this.boundingBox)) { - this.dealFireDamage(1); - if(!var32) { - ++this.fire; - if(this.fire == 0) { - this.fire = 300; - } - } - } else if(this.fire <= 0) { - this.fire = -this.fireResistance; - } - - if(var32 && this.fire > 0) { - this.worldObj.playSoundAtEntity(this, "random.fizz", 0.7F, 1.6F + (this.rand.nextFloat() - this.rand.nextFloat()) * 0.4F); - this.fire = -this.fireResistance; - } - - } - } - - public AxisAlignedBB getBoundingBox() { - return null; - } - - protected void dealFireDamage(int var1) { - this.attackEntityFrom((Entity)null, var1); - } - - protected void fall(float var1) { - } - - public boolean handleWaterMovement() { - return this.worldObj.handleMaterialAcceleration(this.boundingBox.expand(0.0D, (double)-0.4F, 0.0D), Material.water, this); - } - - public boolean isInsideOfMaterial(Material var1) { - double var2 = this.posY + (double)this.getEyeHeight(); - int var4 = MathHelper.floor_double(this.posX); - int var5 = MathHelper.floor_float((float)MathHelper.floor_double(var2)); - int var6 = MathHelper.floor_double(this.posZ); - int var7 = this.worldObj.getBlockId(var4, var5, var6); - if(var7 != 0 && Block.blocksList[var7].blockMaterial == var1) { - float var8 = BlockFluid.getPercentAir(this.worldObj.getBlockMetadata(var4, var5, var6)) - 1.0F / 9.0F; - float var9 = (float)(var5 + 1) - var8; - return var2 < (double)var9; - } else { - return false; - } - } - - protected float getEyeHeight() { - return 0.0F; - } - - public boolean handleLavaMovement() { - return this.worldObj.isMaterialInBB(this.boundingBox.expand(0.0D, (double)-0.4F, 0.0D), Material.lava); - } - - public void moveFlying(float var1, float var2, float var3) { - float var4 = MathHelper.sqrt_float(var1 * var1 + var2 * var2); - if(var4 >= 0.01F) { - if(var4 < 1.0F) { - var4 = 1.0F; - } - - var4 = var3 / var4; - var1 *= var4; - var2 *= var4; - float var5 = MathHelper.sin(this.rotationYaw * (float)Math.PI / 180.0F); - float var6 = MathHelper.cos(this.rotationYaw * (float)Math.PI / 180.0F); - this.motionX += (double)(var1 * var6 - var2 * var5); - this.motionZ += (double)(var2 * var6 + var1 * var5); - } - } - - public float getEntityBrightness(float var1) { - int var2 = MathHelper.floor_double(this.posX); - double var3 = (this.boundingBox.maxY - this.boundingBox.minY) * 0.66D; - int var5 = MathHelper.floor_double(this.posY - (double)this.yOffset + var3); - int var6 = MathHelper.floor_double(this.posZ); - return this.worldObj.getBrightness(var2, var5, var6); - } - - public void setWorld(World var1) { - this.worldObj = var1; - } - - public void setPositionAndRotation(double var1, double var3, double var5, float var7, float var8) { - this.prevPosX = this.posX = var1; - this.prevPosY = this.posY = var3 + (double)this.yOffset; - this.prevPosZ = this.posZ = var5; - this.rotationYaw = var7; - this.rotationPitch = var8; - this.setPosition(this.posX, this.posY, this.posZ); - } - - public float getDistanceToEntity(Entity var1) { - float var2 = (float)(this.posX - var1.posX); - float var3 = (float)(this.posY - var1.posY); - float var4 = (float)(this.posZ - var1.posZ); - return MathHelper.sqrt_float(var2 * var2 + var3 * var3 + var4 * var4); - } - - public double getDistanceSq(double var1, double var3, double var5) { - double var7 = this.posX - var1; - double var9 = this.posY - var3; - double var11 = this.posZ - var5; - return var7 * var7 + var9 * var9 + var11 * var11; - } - - public double getDistance(double var1, double var3, double var5) { - double var7 = this.posX - var1; - double var9 = this.posY - var3; - double var11 = this.posZ - var5; - return (double)MathHelper.sqrt_double(var7 * var7 + var9 * var9 + var11 * var11); - } - - public double getDistanceSqToEntity(Entity var1) { - double var2 = this.posX - var1.posX; - double var4 = this.posY - var1.posY; - double var6 = this.posZ - var1.posZ; - return var2 * var2 + var4 * var4 + var6 * var6; - } - - public void onCollideWithPlayer(EntityPlayer var1) { - } - - public void applyEntityCollision(Entity var1) { - double var2 = var1.posX - this.posX; - double var4 = var1.posZ - this.posZ; - double var6 = MathHelper.abs_max(var2, var4); - if(var6 >= (double)0.01F) { - var6 = (double)MathHelper.sqrt_double(var6); - var2 /= var6; - var4 /= var6; - double var8 = 1.0D / var6; - if(var8 > 1.0D) { - var8 = 1.0D; - } - - var2 *= var8; - var4 *= var8; - var2 *= (double)0.05F; - var4 *= (double)0.05F; - var2 *= (double)(1.0F - this.entityCollisionReduction); - var4 *= (double)(1.0F - this.entityCollisionReduction); - this.addVelocity(-var2, 0.0D, -var4); - var1.addVelocity(var2, 0.0D, var4); - } - - } - - public void addVelocity(double var1, double var3, double var5) { - this.motionX += var1; - this.motionY += var3; - this.motionZ += var5; - } - - public boolean attackEntityFrom(Entity var1, int var2) { - return false; - } - - public boolean canBeCollidedWith() { - return false; - } - - public boolean canBePushed() { - return false; - } - - public void addToPlayerScore(Entity var1, int var2) { - } - - public boolean isInRangeToRenderVec3D(Vec3D var1) { - double var2 = this.posX - var1.xCoord; - double var4 = this.posY - var1.yCoord; - double var6 = this.posZ - var1.zCoord; - double var8 = var2 * var2 + var4 * var4 + var6 * var6; - return this.isInRangeToRenderDist(var8); - } - - public boolean isInRangeToRenderDist(double var1) { - double var3 = this.boundingBox.getAverageEdgeLength(); - var3 *= 64.0D; - return var1 < var3 * var3; - } - - public String getTexture() { - return null; - } - - public boolean addEntityID(NBTTagCompound var1) { - String var2 = this.getEntityString(); - if(!this.isDead && var2 != null) { - var1.setString("id", var2); - this.writeToNBT(var1); - return true; - } else { - return false; - } - } - - public void writeToNBT(NBTTagCompound var1) { - var1.setTag("Pos", this.newDoubleNBTList(new double[]{this.posX, this.posY, this.posZ})); - var1.setTag("Motion", this.newDoubleNBTList(new double[]{this.motionX, this.motionY, this.motionZ})); - var1.setTag("Rotation", this.newFloatNBTList(new float[]{this.rotationYaw, this.rotationPitch})); - var1.setFloat("FallDistance", this.fallDistance); - var1.setShort("Fire", (short)this.fire); - var1.setShort("Air", (short)this.air); - var1.setBoolean("OnGround", this.onGround); - this.writeEntityToNBT(var1); - } - - public void readFromNBT(NBTTagCompound var1) { - NBTTagList var2 = var1.getTagList("Pos"); - NBTTagList var3 = var1.getTagList("Motion"); - NBTTagList var4 = var1.getTagList("Rotation"); - this.setPosition(0.0D, 0.0D, 0.0D); - this.motionX = ((NBTTagDouble)var3.tagAt(0)).doubleValue; - this.motionY = ((NBTTagDouble)var3.tagAt(1)).doubleValue; - this.motionZ = ((NBTTagDouble)var3.tagAt(2)).doubleValue; - this.prevPosX = this.lastTickPosX = this.posX = ((NBTTagDouble)var2.tagAt(0)).doubleValue; - this.prevPosY = this.lastTickPosY = this.posY = ((NBTTagDouble)var2.tagAt(1)).doubleValue; - this.prevPosZ = this.lastTickPosZ = this.posZ = ((NBTTagDouble)var2.tagAt(2)).doubleValue; - this.prevRotationYaw = this.rotationYaw = ((NBTTagFloat)var4.tagAt(0)).floatValue; - this.prevRotationPitch = this.rotationPitch = ((NBTTagFloat)var4.tagAt(1)).floatValue; - this.fallDistance = var1.getFloat("FallDistance"); - this.fire = var1.getShort("Fire"); - this.air = var1.getShort("Air"); - this.onGround = var1.getBoolean("OnGround"); - this.setPosition(this.posX, this.posY, this.posZ); - this.readEntityFromNBT(var1); - } - - protected final String getEntityString() { - return EntityList.getEntityString(this); - } - - protected abstract void readEntityFromNBT(NBTTagCompound var1); - - protected abstract void writeEntityToNBT(NBTTagCompound var1); - - protected NBTTagList newDoubleNBTList(double... var1) { - NBTTagList var2 = new NBTTagList(); - double[] var3 = var1; - int var4 = var1.length; - - for(int var5 = 0; var5 < var4; ++var5) { - double var6 = var3[var5]; - var2.setTag(new NBTTagDouble(var6)); - } - - return var2; - } - - protected NBTTagList newFloatNBTList(float... var1) { - NBTTagList var2 = new NBTTagList(); - float[] var3 = var1; - int var4 = var1.length; - - for(int var5 = 0; var5 < var4; ++var5) { - float var6 = var3[var5]; - var2.setTag(new NBTTagFloat(var6)); - } - - return var2; - } - - public EntityItem dropItem(int var1, int var2) { - return this.entityDropItem(var1, var2, 0.0F); - } - - public EntityItem entityDropItem(int var1, int var2, float var3) { - EntityItem var4 = new EntityItem(this.worldObj, this.posX, this.posY + (double)var3, this.posZ, new ItemStack(var1, var2)); - var4.delayBeforeCanPickup = 10; - this.worldObj.spawnEntityInWorld(var4); - return var4; - } - - public boolean isEntityAlive() { - return !this.isDead; - } - - public boolean isEntityInsideOpaqueBlock() { - int var1 = MathHelper.floor_double(this.posX); - int var2 = MathHelper.floor_double(this.posY + (double)this.getEyeHeight()); - int var3 = MathHelper.floor_double(this.posZ); - return this.worldObj.isBlockNormalCube(var1, var2, var3); - } - - public boolean interact(EntityPlayer var1) { - return false; - } - - public AxisAlignedBB getCollisionBox(Entity var1) { - return null; - } - - public void updateRidden() { - if(this.ridingEntity.isDead) { - this.ridingEntity = null; - } else { - this.motionX = 0.0D; - this.motionY = 0.0D; - this.motionZ = 0.0D; - this.onUpdate(); - this.setPosition(this.ridingEntity.posX, this.ridingEntity.posY + (double)this.yOffset + this.ridingEntity.getYOffset(), this.ridingEntity.posZ); - this.entityRiderYawDelta += (double)(this.ridingEntity.rotationYaw - this.ridingEntity.prevRotationYaw); - - for(this.entityRiderPitchDelta += (double)(this.ridingEntity.rotationPitch - this.ridingEntity.prevRotationPitch); this.entityRiderYawDelta >= 180.0D; this.entityRiderYawDelta -= 360.0D) { - } - - while(this.entityRiderYawDelta < -180.0D) { - this.entityRiderYawDelta += 360.0D; - } - - while(this.entityRiderPitchDelta >= 180.0D) { - this.entityRiderPitchDelta -= 360.0D; - } - - while(this.entityRiderPitchDelta < -180.0D) { - this.entityRiderPitchDelta += 360.0D; - } - - double var1 = this.entityRiderYawDelta * 0.5D; - double var3 = this.entityRiderPitchDelta * 0.5D; - float var5 = 10.0F; - if(var1 > (double)var5) { - var1 = (double)var5; - } - - if(var1 < (double)(-var5)) { - var1 = (double)(-var5); - } - - if(var3 > (double)var5) { - var3 = (double)var5; - } - - if(var3 < (double)(-var5)) { - var3 = (double)(-var5); - } - - this.entityRiderYawDelta -= var1; - this.entityRiderPitchDelta -= var3; - this.rotationYaw = (float)((double)this.rotationYaw + var1); - this.rotationPitch = (float)((double)this.rotationPitch + var3); - } - } - - public double getYOffset() { - return (double)this.height * 0.75D; - } - - public void mountEntity(Entity var1) { - this.entityRiderPitchDelta = 0.0D; - this.entityRiderYawDelta = 0.0D; - if(this.ridingEntity == var1) { - this.ridingEntity.riddenByEntity = null; - this.ridingEntity = null; - } else { - if(this.ridingEntity != null) { - this.ridingEntity.riddenByEntity = null; - } - - if(var1.riddenByEntity != null) { - var1.riddenByEntity.ridingEntity = null; - } - - this.ridingEntity = var1; - var1.riddenByEntity = this; - } - } -} diff --git a/src/net/minecraft/src/EntityAnimal.java b/src/net/minecraft/src/EntityAnimal.java deleted file mode 100644 index ebf27f5..0000000 --- a/src/net/minecraft/src/EntityAnimal.java +++ /dev/null @@ -1,23 +0,0 @@ -package net.minecraft.src; - -public abstract class EntityAnimal extends EntityCreature { - public EntityAnimal(World var1) { - super(var1); - } - - protected float getBlockPathWeight(int var1, int var2, int var3) { - return this.worldObj.getBlockId(var1, var2 - 1, var3) == Block.grass.blockID ? 10.0F : this.worldObj.getBrightness(var1, var2, var3) - 0.5F; - } - - public void writeEntityToNBT(NBTTagCompound var1) { - super.writeEntityToNBT(var1); - } - - public void readEntityFromNBT(NBTTagCompound var1) { - super.readEntityFromNBT(var1); - } - - public boolean getCanSpawnHere(double var1, double var3, double var5) { - return this.worldObj.getBlockLightValue(MathHelper.floor_double(var1), MathHelper.floor_double(var3), MathHelper.floor_double(var5)) > 8 && super.getCanSpawnHere(var1, var3, var5); - } -} diff --git a/src/net/minecraft/src/EntityArrow.java b/src/net/minecraft/src/EntityArrow.java deleted file mode 100644 index 2417a82..0000000 --- a/src/net/minecraft/src/EntityArrow.java +++ /dev/null @@ -1,217 +0,0 @@ -package net.minecraft.src; - -import java.util.List; - -public class EntityArrow extends Entity { - private int xTile = -1; - private int yTile = -1; - private int zTile = -1; - private int inTile = 0; - private boolean inGround = false; - public int arrowShake = 0; - private EntityLiving shootingEntity; - private int ticksInGround; - private int ticksInAir = 0; - - public EntityArrow(World var1) { - super(var1); - this.setSize(0.5F, 0.5F); - } - - public EntityArrow(World var1, EntityLiving var2) { - super(var1); - this.shootingEntity = var2; - this.setSize(0.5F, 0.5F); - this.setPositionAndRotation(var2.posX, var2.posY, var2.posZ, var2.rotationYaw, var2.rotationPitch); - this.posX -= (double)(MathHelper.cos(this.rotationYaw / 180.0F * (float)Math.PI) * 0.16F); - this.posY -= (double)0.1F; - this.posZ -= (double)(MathHelper.sin(this.rotationYaw / 180.0F * (float)Math.PI) * 0.16F); - this.setPosition(this.posX, this.posY, this.posZ); - this.yOffset = 0.0F; - this.motionX = (double)(-MathHelper.sin(this.rotationYaw / 180.0F * (float)Math.PI) * MathHelper.cos(this.rotationPitch / 180.0F * (float)Math.PI)); - this.motionZ = (double)(MathHelper.cos(this.rotationYaw / 180.0F * (float)Math.PI) * MathHelper.cos(this.rotationPitch / 180.0F * (float)Math.PI)); - this.motionY = (double)(-MathHelper.sin(this.rotationPitch / 180.0F * (float)Math.PI)); - this.setArrowHeading(this.motionX, this.motionY, this.motionZ, 1.5F, 1.0F); - } - - public void setArrowHeading(double var1, double var3, double var5, float var7, float var8) { - float var9 = MathHelper.sqrt_double(var1 * var1 + var3 * var3 + var5 * var5); - var1 /= (double)var9; - var3 /= (double)var9; - var5 /= (double)var9; - var1 += this.rand.nextGaussian() * (double)0.0075F * (double)var8; - var3 += this.rand.nextGaussian() * (double)0.0075F * (double)var8; - var5 += this.rand.nextGaussian() * (double)0.0075F * (double)var8; - var1 *= (double)var7; - var3 *= (double)var7; - var5 *= (double)var7; - this.motionX = var1; - this.motionY = var3; - this.motionZ = var5; - float var10 = MathHelper.sqrt_double(var1 * var1 + var5 * var5); - this.prevRotationYaw = this.rotationYaw = (float)(Math.atan2(var1, var5) * 180.0D / (double)((float)Math.PI)); - this.prevRotationPitch = this.rotationPitch = (float)(Math.atan2(var3, (double)var10) * 180.0D / (double)((float)Math.PI)); - this.ticksInGround = 0; - } - - public void onUpdate() { - super.onUpdate(); - if(this.arrowShake > 0) { - --this.arrowShake; - } - - if(this.inGround) { - int var1 = this.worldObj.getBlockId(this.xTile, this.yTile, this.zTile); - if(var1 == this.inTile) { - ++this.ticksInGround; - if(this.ticksInGround == 1200) { - this.setEntityDead(); - } - - return; - } - - this.inGround = false; - this.motionX *= (double)(this.rand.nextFloat() * 0.2F); - this.motionY *= (double)(this.rand.nextFloat() * 0.2F); - this.motionZ *= (double)(this.rand.nextFloat() * 0.2F); - this.ticksInGround = 0; - this.ticksInAir = 0; - } else { - ++this.ticksInAir; - } - - Vec3D var15 = Vec3D.createVector(this.posX, this.posY, this.posZ); - Vec3D var2 = Vec3D.createVector(this.posX + this.motionX, this.posY + this.motionY, this.posZ + this.motionZ); - MovingObjectPosition var3 = this.worldObj.rayTraceBlocks(var15, var2); - var15 = Vec3D.createVector(this.posX, this.posY, this.posZ); - var2 = Vec3D.createVector(this.posX + this.motionX, this.posY + this.motionY, this.posZ + this.motionZ); - if(var3 != null) { - var2 = Vec3D.createVector(var3.hitVec.xCoord, var3.hitVec.yCoord, var3.hitVec.zCoord); - } - - Entity var4 = null; - List var5 = this.worldObj.getEntitiesWithinAABBExcludingEntity(this, this.boundingBox.addCoord(this.motionX, this.motionY, this.motionZ).expand(1.0D, 1.0D, 1.0D)); - double var6 = 0.0D; - - float var10; - for(int var8 = 0; var8 < var5.size(); ++var8) { - Entity var9 = (Entity)var5.get(var8); - if(var9.canBeCollidedWith() && (var9 != this.shootingEntity || this.ticksInAir >= 5)) { - var10 = 0.3F; - AxisAlignedBB var11 = var9.boundingBox.expand((double)var10, (double)var10, (double)var10); - MovingObjectPosition var12 = var11.calculateIntercept(var15, var2); - if(var12 != null) { - double var13 = var15.distanceTo(var12.hitVec); - if(var13 < var6 || var6 == 0.0D) { - var4 = var9; - var6 = var13; - } - } - } - } - - if(var4 != null) { - var3 = new MovingObjectPosition(var4); - } - - float var16; - if(var3 != null) { - if(var3.entityHit != null) { - if(var3.entityHit.attackEntityFrom(this.shootingEntity, 4)) { - this.worldObj.playSoundAtEntity(this, "random.drr", 1.0F, 1.2F / (this.rand.nextFloat() * 0.2F + 0.9F)); - this.setEntityDead(); - } else { - this.motionX *= (double)-0.1F; - this.motionY *= (double)-0.1F; - this.motionZ *= (double)-0.1F; - this.rotationYaw += 180.0F; - this.prevRotationYaw += 180.0F; - this.ticksInAir = 0; - } - } else { - this.xTile = var3.blockX; - this.yTile = var3.blockY; - this.zTile = var3.blockZ; - this.inTile = this.worldObj.getBlockId(this.xTile, this.yTile, this.zTile); - this.motionX = (double)((float)(var3.hitVec.xCoord - this.posX)); - this.motionY = (double)((float)(var3.hitVec.yCoord - this.posY)); - this.motionZ = (double)((float)(var3.hitVec.zCoord - this.posZ)); - var16 = MathHelper.sqrt_double(this.motionX * this.motionX + this.motionY * this.motionY + this.motionZ * this.motionZ); - this.posX -= this.motionX / (double)var16 * (double)0.05F; - this.posY -= this.motionY / (double)var16 * (double)0.05F; - this.posZ -= this.motionZ / (double)var16 * (double)0.05F; - this.worldObj.playSoundAtEntity(this, "random.drr", 1.0F, 1.2F / (this.rand.nextFloat() * 0.2F + 0.9F)); - this.inGround = true; - this.arrowShake = 7; - } - } - - this.posX += this.motionX; - this.posY += this.motionY; - this.posZ += this.motionZ; - var16 = MathHelper.sqrt_double(this.motionX * this.motionX + this.motionZ * this.motionZ); - this.rotationYaw = (float)(Math.atan2(this.motionX, this.motionZ) * 180.0D / (double)((float)Math.PI)); - - for(this.rotationPitch = (float)(Math.atan2(this.motionY, (double)var16) * 180.0D / (double)((float)Math.PI)); this.rotationPitch - this.prevRotationPitch < -180.0F; this.prevRotationPitch -= 360.0F) { - } - - while(this.rotationPitch - this.prevRotationPitch >= 180.0F) { - this.prevRotationPitch += 360.0F; - } - - while(this.rotationYaw - this.prevRotationYaw < -180.0F) { - this.prevRotationYaw -= 360.0F; - } - - while(this.rotationYaw - this.prevRotationYaw >= 180.0F) { - this.prevRotationYaw += 360.0F; - } - - this.rotationPitch = this.prevRotationPitch + (this.rotationPitch - this.prevRotationPitch) * 0.2F; - this.rotationYaw = this.prevRotationYaw + (this.rotationYaw - this.prevRotationYaw) * 0.2F; - float var17 = 0.99F; - var10 = 0.03F; - if(this.handleWaterMovement()) { - for(int var18 = 0; var18 < 4; ++var18) { - float var19 = 0.25F; - this.worldObj.spawnParticle("bubble", this.posX - this.motionX * (double)var19, this.posY - this.motionY * (double)var19, this.posZ - this.motionZ * (double)var19, this.motionX, this.motionY, this.motionZ); - } - - var17 = 0.8F; - } - - this.motionX *= (double)var17; - this.motionY *= (double)var17; - this.motionZ *= (double)var17; - this.motionY -= (double)var10; - this.setPosition(this.posX, this.posY, this.posZ); - } - - public void writeEntityToNBT(NBTTagCompound var1) { - var1.setShort("xTile", (short)this.xTile); - var1.setShort("yTile", (short)this.yTile); - var1.setShort("zTile", (short)this.zTile); - var1.setByte("inTile", (byte)this.inTile); - var1.setByte("shake", (byte)this.arrowShake); - var1.setByte("inGround", (byte)(this.inGround ? 1 : 0)); - } - - public void readEntityFromNBT(NBTTagCompound var1) { - this.xTile = var1.getShort("xTile"); - this.yTile = var1.getShort("yTile"); - this.zTile = var1.getShort("zTile"); - this.inTile = var1.getByte("inTile") & 255; - this.arrowShake = var1.getByte("shake") & 255; - this.inGround = var1.getByte("inGround") == 1; - } - - public void onCollideWithPlayer(EntityPlayer var1) { - if(this.inGround && this.shootingEntity == var1 && this.arrowShake <= 0 && var1.inventory.addItemStackToInventory(new ItemStack(Item.arrow.shiftedIndex, 1))) { - this.worldObj.playSoundAtEntity(this, "random.pop", 0.2F, ((this.rand.nextFloat() - this.rand.nextFloat()) * 0.7F + 1.0F) * 2.0F); - var1.onItemPickup(this); - this.setEntityDead(); - } - - } -} diff --git a/src/net/minecraft/src/EntityBubbleFX.java b/src/net/minecraft/src/EntityBubbleFX.java deleted file mode 100644 index e36404b..0000000 --- a/src/net/minecraft/src/EntityBubbleFX.java +++ /dev/null @@ -1,36 +0,0 @@ -package net.minecraft.src; - -public class EntityBubbleFX extends EntityFX { - public EntityBubbleFX(World var1, double var2, double var4, double var6, double var8, double var10, double var12) { - super(var1, var2, var4, var6, var8, var10, var12); - this.particleRed = 1.0F; - this.particleGreen = 1.0F; - this.particleBlue = 1.0F; - this.particleTextureIndex = 32; - this.setSize(0.02F, 0.02F); - this.particleScale *= this.rand.nextFloat() * 0.6F + 0.2F; - this.motionX = var8 * (double)0.2F + (double)((float)(Math.random() * 2.0D - 1.0D) * 0.02F); - this.motionY = var10 * (double)0.2F + (double)((float)(Math.random() * 2.0D - 1.0D) * 0.02F); - this.motionZ = var12 * (double)0.2F + (double)((float)(Math.random() * 2.0D - 1.0D) * 0.02F); - this.particleMaxAge = (int)(8.0D / (Math.random() * 0.8D + 0.2D)); - } - - public void onUpdate() { - this.prevPosX = this.posX; - this.prevPosY = this.posY; - this.prevPosZ = this.posZ; - this.motionY += 0.002D; - this.moveEntity(this.motionX, this.motionY, this.motionZ); - this.motionX *= (double)0.85F; - this.motionY *= (double)0.85F; - this.motionZ *= (double)0.85F; - if(this.worldObj.getBlockMaterial(MathHelper.floor_double(this.posX), MathHelper.floor_double(this.posY), MathHelper.floor_double(this.posZ)) != Material.water) { - this.setEntityDead(); - } - - if(this.particleMaxAge-- <= 0) { - this.setEntityDead(); - } - - } -} diff --git a/src/net/minecraft/src/EntityCreature.java b/src/net/minecraft/src/EntityCreature.java deleted file mode 100644 index db340ed..0000000 --- a/src/net/minecraft/src/EntityCreature.java +++ /dev/null @@ -1,125 +0,0 @@ -package net.minecraft.src; - -public class EntityCreature extends EntityLiving { - private PathEntity pathToEntity; - protected Entity playerToAttack; - protected boolean hasAttacked = false; - - public EntityCreature(World var1) { - super(var1); - } - - protected boolean canEntityBeSeen(Entity var1) { - return this.worldObj.rayTraceBlocks(Vec3D.createVector(this.posX, this.posY + (double)this.getEyeHeight(), this.posZ), Vec3D.createVector(var1.posX, var1.posY + (double)var1.getEyeHeight(), var1.posZ)) == null; - } - - protected void updatePlayerActionState() { - this.hasAttacked = false; - float var1 = 16.0F; - if(this.playerToAttack == null) { - this.playerToAttack = this.findPlayerToAttack(); - if(this.playerToAttack != null) { - this.pathToEntity = this.worldObj.getPathToEntity(this, this.playerToAttack, var1); - } - } else if(!this.playerToAttack.isEntityAlive()) { - this.playerToAttack = null; - } else { - float var2 = this.playerToAttack.getDistanceToEntity(this); - if(this.canEntityBeSeen(this.playerToAttack)) { - this.attackEntity(this.playerToAttack, var2); - } - } - - int var19; - if(this.hasAttacked || this.playerToAttack == null || this.pathToEntity != null && this.rand.nextInt(20) != 0) { - if(this.pathToEntity == null || this.rand.nextInt(100) == 0) { - var19 = -1; - int var3 = -1; - int var4 = -1; - float var5 = -99999.0F; - - for(int var6 = 0; var6 < 50; ++var6) { - int var7 = MathHelper.floor_double(this.posX + (double)this.rand.nextInt(11) - 5.0D); - int var8 = MathHelper.floor_double(this.posY + (double)this.rand.nextInt(7) - 3.0D); - int var9 = MathHelper.floor_double(this.posZ + (double)this.rand.nextInt(11) - 5.0D); - float var10 = this.getBlockPathWeight(var7, var8, var9); - if(var10 > var5) { - var5 = var10; - var19 = var7; - var3 = var8; - var4 = var9; - } - } - - if(var19 > 0) { - this.pathToEntity = this.worldObj.getEntityPathToXYZ(this, var19, var3, var4, var1); - } - } - } else { - this.pathToEntity = this.worldObj.getPathToEntity(this, this.playerToAttack, var1); - } - - var19 = MathHelper.floor_double(this.boundingBox.minY); - boolean var20 = this.handleWaterMovement(); - boolean var21 = this.handleLavaMovement(); - if(this.pathToEntity != null && this.rand.nextInt(100) != 0) { - Vec3D var22 = this.pathToEntity.getPosition(this); - float var23 = this.width * 2.0F; - - while(var22 != null && var22.squareDistanceTo(this.posX, this.posY, this.posZ) < (double)(var23 * var23) && var22.yCoord <= (double)var19) { - this.pathToEntity.incrementPathIndex(); - if(this.pathToEntity.isFinished()) { - var22 = null; - this.pathToEntity = null; - } else { - var22 = this.pathToEntity.getPosition(this); - } - } - - this.isJumping = false; - if(var22 != null) { - double var24 = var22.xCoord - this.posX; - double var25 = var22.zCoord - this.posZ; - double var11 = var22.yCoord - (double)var19; - this.rotationYaw = (float)(Math.atan2(var25, var24) * 180.0D / (double)((float)Math.PI)) - 90.0F; - this.moveForward = this.moveSpeed; - if(this.hasAttacked && this.playerToAttack != null) { - double var13 = this.playerToAttack.posX - this.posX; - double var15 = this.playerToAttack.posZ - this.posZ; - float var17 = this.rotationYaw; - this.rotationYaw = (float)(Math.atan2(var15, var13) * 180.0D / (double)((float)Math.PI)) - 90.0F; - float var18 = (var17 - this.rotationYaw + 90.0F) * (float)Math.PI / 180.0F; - this.moveStrafing = -MathHelper.sin(var18) * this.moveForward * 1.0F; - this.moveForward = MathHelper.cos(var18) * this.moveForward * 1.0F; - } - - if(var11 != 0.0D) { - this.isJumping = true; - } - } - - if(this.rand.nextFloat() < 0.8F && (var20 || var21)) { - this.isJumping = true; - } - - } else { - super.updatePlayerActionState(); - this.pathToEntity = null; - } - } - - protected void attackEntity(Entity var1, float var2) { - } - - protected float getBlockPathWeight(int var1, int var2, int var3) { - return 0.0F; - } - - protected Entity findPlayerToAttack() { - return null; - } - - public boolean getCanSpawnHere(double var1, double var3, double var5) { - return super.getCanSpawnHere(var1, var3, var5) && this.getBlockPathWeight((int)var1, (int)var3, (int)var5) >= 0.0F; - } -} diff --git a/src/net/minecraft/src/EntityCreeper.java b/src/net/minecraft/src/EntityCreeper.java deleted file mode 100644 index 28dfe5f..0000000 --- a/src/net/minecraft/src/EntityCreeper.java +++ /dev/null @@ -1,64 +0,0 @@ -package net.minecraft.src; - -public class EntityCreeper extends EntityMonster { - int timeSinceIgnited; - int lastActiveTime; - int fuseTime = 30; - int creeperState = -1; - - public EntityCreeper(World var1) { - super(var1); - this.texture = "/mob/creeper.png"; - } - - public void writeEntityToNBT(NBTTagCompound var1) { - super.writeEntityToNBT(var1); - } - - public void readEntityFromNBT(NBTTagCompound var1) { - super.readEntityFromNBT(var1); - } - - protected void updatePlayerActionState() { - this.lastActiveTime = this.timeSinceIgnited; - if(this.timeSinceIgnited > 0 && this.creeperState < 0) { - --this.timeSinceIgnited; - } - - if(this.creeperState >= 0) { - this.creeperState = 2; - } - - super.updatePlayerActionState(); - if(this.creeperState != 1) { - this.creeperState = -1; - } - - } - - protected void attackEntity(Entity var1, float var2) { - if(this.creeperState <= 0 && var2 < 3.0F || this.creeperState > 0 && var2 < 7.0F) { - if(this.timeSinceIgnited == 0) { - this.worldObj.playSoundAtEntity(this, "random.fuse", 1.0F, 0.5F); - } - - this.creeperState = 1; - ++this.timeSinceIgnited; - if(this.timeSinceIgnited == this.fuseTime) { - this.worldObj.createExplosion(this, this.posX, this.posY, this.posZ, 3.0F); - this.setEntityDead(); - } - - this.hasAttacked = true; - } - - } - - public float setCreeperFlashTime(float var1) { - return ((float)this.lastActiveTime + (float)(this.timeSinceIgnited - this.lastActiveTime) * var1) / (float)(this.fuseTime - 2); - } - - protected int getDropItemId() { - return Item.gunpowder.shiftedIndex; - } -} diff --git a/src/net/minecraft/src/EntityDiggingFX.java b/src/net/minecraft/src/EntityDiggingFX.java deleted file mode 100644 index ddc26fb..0000000 --- a/src/net/minecraft/src/EntityDiggingFX.java +++ /dev/null @@ -1,32 +0,0 @@ -package net.minecraft.src; - -public class EntityDiggingFX extends EntityFX { - public EntityDiggingFX(World var1, double var2, double var4, double var6, double var8, double var10, double var12, Block var14) { - super(var1, var2, var4, var6, var8, var10, var12); - this.particleTextureIndex = var14.blockIndexInTexture; - this.particleGravity = var14.blockParticleGravity; - this.particleRed = this.particleGreen = this.particleBlue = 0.6F; - this.particleScale /= 2.0F; - } - - public int getFXLayer() { - return 1; - } - - public void renderParticle(Tessellator var1, float var2, float var3, float var4, float var5, float var6, float var7) { - float var8 = ((float)(this.particleTextureIndex % 16) + this.particleTextureJitterX / 4.0F) / 16.0F; - float var9 = var8 + 0.999F / 64.0F; - float var10 = ((float)(this.particleTextureIndex / 16) + this.particleTextureJitterY / 4.0F) / 16.0F; - float var11 = var10 + 0.999F / 64.0F; - float var12 = 0.1F * this.particleScale; - float var13 = (float)(this.prevPosX + (this.posX - this.prevPosX) * (double)var2 - interpPosX); - float var14 = (float)(this.prevPosY + (this.posY - this.prevPosY) * (double)var2 - interpPosY); - float var15 = (float)(this.prevPosZ + (this.posZ - this.prevPosZ) * (double)var2 - interpPosZ); - float var16 = this.getEntityBrightness(var2); - var1.setColorOpaque_F(var16 * this.particleRed, var16 * this.particleGreen, var16 * this.particleBlue); - var1.addVertexWithUV((double)(var13 - var3 * var12 - var6 * var12), (double)(var14 - var4 * var12), (double)(var15 - var5 * var12 - var7 * var12), (double)var8, (double)var11); - var1.addVertexWithUV((double)(var13 - var3 * var12 + var6 * var12), (double)(var14 + var4 * var12), (double)(var15 - var5 * var12 + var7 * var12), (double)var8, (double)var10); - var1.addVertexWithUV((double)(var13 + var3 * var12 + var6 * var12), (double)(var14 + var4 * var12), (double)(var15 + var5 * var12 + var7 * var12), (double)var9, (double)var10); - var1.addVertexWithUV((double)(var13 + var3 * var12 - var6 * var12), (double)(var14 - var4 * var12), (double)(var15 + var5 * var12 - var7 * var12), (double)var9, (double)var11); - } -} diff --git a/src/net/minecraft/src/EntityExplodeFX.java b/src/net/minecraft/src/EntityExplodeFX.java deleted file mode 100644 index e6ed054..0000000 --- a/src/net/minecraft/src/EntityExplodeFX.java +++ /dev/null @@ -1,38 +0,0 @@ -package net.minecraft.src; - -public class EntityExplodeFX extends EntityFX { - public EntityExplodeFX(World var1, double var2, double var4, double var6, double var8, double var10, double var12) { - super(var1, var2, var4, var6, var8, var10, var12); - this.motionX = var8 + (double)((float)(Math.random() * 2.0D - 1.0D) * 0.05F); - this.motionY = var10 + (double)((float)(Math.random() * 2.0D - 1.0D) * 0.05F); - this.motionZ = var12 + (double)((float)(Math.random() * 2.0D - 1.0D) * 0.05F); - this.particleRed = this.particleGreen = this.particleBlue = this.rand.nextFloat() * 0.3F + 0.7F; - this.particleScale = this.rand.nextFloat() * this.rand.nextFloat() * 6.0F + 1.0F; - this.particleMaxAge = (int)(16.0D / ((double)this.rand.nextFloat() * 0.8D + 0.2D)) + 2; - } - - public void renderParticle(Tessellator var1, float var2, float var3, float var4, float var5, float var6, float var7) { - super.renderParticle(var1, var2, var3, var4, var5, var6, var7); - } - - public void onUpdate() { - this.prevPosX = this.posX; - this.prevPosY = this.posY; - this.prevPosZ = this.posZ; - if(this.particleAge++ >= this.particleMaxAge) { - this.setEntityDead(); - } - - this.particleTextureIndex = 7 - this.particleAge * 8 / this.particleMaxAge; - this.motionY += 0.004D; - this.moveEntity(this.motionX, this.motionY, this.motionZ); - this.motionX *= (double)0.9F; - this.motionY *= (double)0.9F; - this.motionZ *= (double)0.9F; - if(this.onGround) { - this.motionX *= (double)0.7F; - this.motionZ *= (double)0.7F; - } - - } -} diff --git a/src/net/minecraft/src/EntityFX.java b/src/net/minecraft/src/EntityFX.java deleted file mode 100644 index 9809da0..0000000 --- a/src/net/minecraft/src/EntityFX.java +++ /dev/null @@ -1,99 +0,0 @@ -package net.minecraft.src; - -public class EntityFX extends Entity { - protected int particleTextureIndex; - protected float particleTextureJitterX; - protected float particleTextureJitterY; - protected int particleAge = 0; - protected int particleMaxAge = 0; - protected float particleScale; - protected float particleGravity; - protected float particleRed; - protected float particleGreen; - protected float particleBlue; - public static double interpPosX; - public static double interpPosY; - public static double interpPosZ; - - public EntityFX(World var1, double var2, double var4, double var6, double var8, double var10, double var12) { - super(var1); - this.setSize(0.2F, 0.2F); - this.yOffset = this.height / 2.0F; - this.setPosition(var2, var4, var6); - this.particleRed = this.particleGreen = this.particleBlue = 1.0F; - this.motionX = var8 + (double)((float)(Math.random() * 2.0D - 1.0D) * 0.4F); - this.motionY = var10 + (double)((float)(Math.random() * 2.0D - 1.0D) * 0.4F); - this.motionZ = var12 + (double)((float)(Math.random() * 2.0D - 1.0D) * 0.4F); - float var14 = (float)(Math.random() + Math.random() + 1.0D) * 0.15F; - float var15 = MathHelper.sqrt_double(this.motionX * this.motionX + this.motionY * this.motionY + this.motionZ * this.motionZ); - this.motionX = this.motionX / (double)var15 * (double)var14 * (double)0.4F; - this.motionY = this.motionY / (double)var15 * (double)var14 * (double)0.4F + (double)0.1F; - this.motionZ = this.motionZ / (double)var15 * (double)var14 * (double)0.4F; - this.particleTextureJitterX = this.rand.nextFloat() * 3.0F; - this.particleTextureJitterY = this.rand.nextFloat() * 3.0F; - this.particleScale = (this.rand.nextFloat() * 0.5F + 0.5F) * 2.0F; - this.particleMaxAge = (int)(4.0F / (this.rand.nextFloat() * 0.9F + 0.1F)); - this.particleAge = 0; - this.canTriggerWalking = false; - } - - public EntityFX multiplyVelocity(float var1) { - this.motionX *= (double)var1; - this.motionY = (this.motionY - (double)0.1F) * (double)var1 + (double)0.1F; - this.motionZ *= (double)var1; - return this; - } - - public EntityFX multipleParticleScaleBy(float var1) { - this.setSize(0.2F * var1, 0.2F * var1); - this.particleScale *= var1; - return this; - } - - public void onUpdate() { - this.prevPosX = this.posX; - this.prevPosY = this.posY; - this.prevPosZ = this.posZ; - if(this.particleAge++ >= this.particleMaxAge) { - this.setEntityDead(); - } - - this.motionY -= 0.04D * (double)this.particleGravity; - this.moveEntity(this.motionX, this.motionY, this.motionZ); - this.motionX *= (double)0.98F; - this.motionY *= (double)0.98F; - this.motionZ *= (double)0.98F; - if(this.onGround) { - this.motionX *= (double)0.7F; - this.motionZ *= (double)0.7F; - } - - } - - public void renderParticle(Tessellator var1, float var2, float var3, float var4, float var5, float var6, float var7) { - float var8 = (float)(this.particleTextureIndex % 16) / 16.0F; - float var9 = var8 + 0.999F / 16.0F; - float var10 = (float)(this.particleTextureIndex / 16) / 16.0F; - float var11 = var10 + 0.999F / 16.0F; - float var12 = 0.1F * this.particleScale; - float var13 = (float)(this.prevPosX + (this.posX - this.prevPosX) * (double)var2 - interpPosX); - float var14 = (float)(this.prevPosY + (this.posY - this.prevPosY) * (double)var2 - interpPosY); - float var15 = (float)(this.prevPosZ + (this.posZ - this.prevPosZ) * (double)var2 - interpPosZ); - float var16 = this.getEntityBrightness(var2); - var1.setColorOpaque_F(this.particleRed * var16, this.particleGreen * var16, this.particleBlue * var16); - var1.addVertexWithUV((double)(var13 - var3 * var12 - var6 * var12), (double)(var14 - var4 * var12), (double)(var15 - var5 * var12 - var7 * var12), (double)var8, (double)var11); - var1.addVertexWithUV((double)(var13 - var3 * var12 + var6 * var12), (double)(var14 + var4 * var12), (double)(var15 - var5 * var12 + var7 * var12), (double)var8, (double)var10); - var1.addVertexWithUV((double)(var13 + var3 * var12 + var6 * var12), (double)(var14 + var4 * var12), (double)(var15 + var5 * var12 + var7 * var12), (double)var9, (double)var10); - var1.addVertexWithUV((double)(var13 + var3 * var12 - var6 * var12), (double)(var14 - var4 * var12), (double)(var15 + var5 * var12 - var7 * var12), (double)var9, (double)var11); - } - - public int getFXLayer() { - return 0; - } - - public void writeEntityToNBT(NBTTagCompound var1) { - } - - public void readEntityFromNBT(NBTTagCompound var1) { - } -} diff --git a/src/net/minecraft/src/EntityFallingSand.java b/src/net/minecraft/src/EntityFallingSand.java deleted file mode 100644 index 4dc1c13..0000000 --- a/src/net/minecraft/src/EntityFallingSand.java +++ /dev/null @@ -1,78 +0,0 @@ -package net.minecraft.src; - -public class EntityFallingSand extends Entity { - public int blockID; - public int fallTime = 0; - - public EntityFallingSand(World var1) { - super(var1); - } - - public EntityFallingSand(World var1, float var2, float var3, float var4, int var5) { - super(var1); - this.blockID = var5; - this.preventEntitySpawning = true; - this.setSize(0.98F, 0.98F); - this.yOffset = this.height / 2.0F; - this.setPosition((double)var2, (double)var3, (double)var4); - this.motionX = 0.0D; - this.motionY = 0.0D; - this.motionZ = 0.0D; - this.canTriggerWalking = false; - this.prevPosX = (double)var2; - this.prevPosY = (double)var3; - this.prevPosZ = (double)var4; - } - - public boolean canBeCollidedWith() { - return !this.isDead; - } - - public void onUpdate() { - if(this.blockID == 0) { - this.setEntityDead(); - } else { - this.prevPosX = this.posX; - this.prevPosY = this.posY; - this.prevPosZ = this.posZ; - ++this.fallTime; - this.motionY -= (double)0.04F; - this.moveEntity(this.motionX, this.motionY, this.motionZ); - this.motionX *= (double)0.98F; - this.motionY *= (double)0.98F; - this.motionZ *= (double)0.98F; - int var1 = MathHelper.floor_double(this.posX); - int var2 = MathHelper.floor_double(this.posY); - int var3 = MathHelper.floor_double(this.posZ); - if(this.worldObj.getBlockId(var1, var2, var3) == this.blockID) { - this.worldObj.setBlockWithNotify(var1, var2, var3, 0); - } - - if(this.onGround) { - this.motionX *= (double)0.7F; - this.motionZ *= (double)0.7F; - this.motionY *= -0.5D; - this.setEntityDead(); - if(!this.worldObj.canBlockBePlacedAt(this.blockID, var1, var2, var3, true) || !this.worldObj.setBlockWithNotify(var1, var2, var3, this.blockID)) { - this.dropItem(this.blockID, 1); - } - } else if(this.fallTime > 100) { - this.dropItem(this.blockID, 1); - this.setEntityDead(); - } - - } - } - - protected void writeEntityToNBT(NBTTagCompound var1) { - var1.setByte("Tile", (byte)this.blockID); - } - - protected void readEntityFromNBT(NBTTagCompound var1) { - this.blockID = var1.getByte("Tile") & 255; - } - - public World getWorld() { - return this.worldObj; - } -} diff --git a/src/net/minecraft/src/EntityFlameFX.java b/src/net/minecraft/src/EntityFlameFX.java deleted file mode 100644 index 192090a..0000000 --- a/src/net/minecraft/src/EntityFlameFX.java +++ /dev/null @@ -1,59 +0,0 @@ -package net.minecraft.src; - -public class EntityFlameFX extends EntityFX { - private float flameScale; - - public EntityFlameFX(World var1, double var2, double var4, double var6, double var8, double var10, double var12) { - super(var1, var2, var4, var6, var8, var10, var12); - this.motionX = this.motionX * (double)0.01F + var8; - this.motionY = this.motionY * (double)0.01F + var10; - this.motionZ = this.motionZ * (double)0.01F + var12; - double var10000 = var2 + (double)((this.rand.nextFloat() - this.rand.nextFloat()) * 0.05F); - var10000 = var4 + (double)((this.rand.nextFloat() - this.rand.nextFloat()) * 0.05F); - var10000 = var6 + (double)((this.rand.nextFloat() - this.rand.nextFloat()) * 0.05F); - this.flameScale = this.particleScale; - this.particleRed = this.particleGreen = this.particleBlue = 1.0F; - this.particleMaxAge = (int)(8.0D / (Math.random() * 0.8D + 0.2D)) + 4; - this.noClip = true; - this.particleTextureIndex = 48; - } - - public void renderParticle(Tessellator var1, float var2, float var3, float var4, float var5, float var6, float var7) { - float var8 = ((float)this.particleAge + var2) / (float)this.particleMaxAge; - this.particleScale = this.flameScale * (1.0F - var8 * var8 * 0.5F); - super.renderParticle(var1, var2, var3, var4, var5, var6, var7); - } - - public float getEntityBrightness(float var1) { - float var2 = ((float)this.particleAge + var1) / (float)this.particleMaxAge; - if(var2 < 0.0F) { - var2 = 0.0F; - } - - if(var2 > 1.0F) { - var2 = 1.0F; - } - - float var3 = super.getEntityBrightness(var1); - return var3 * var2 + (1.0F - var2); - } - - public void onUpdate() { - this.prevPosX = this.posX; - this.prevPosY = this.posY; - this.prevPosZ = this.posZ; - if(this.particleAge++ >= this.particleMaxAge) { - this.setEntityDead(); - } - - this.moveEntity(this.motionX, this.motionY, this.motionZ); - this.motionX *= (double)0.96F; - this.motionY *= (double)0.96F; - this.motionZ *= (double)0.96F; - if(this.onGround) { - this.motionX *= (double)0.7F; - this.motionZ *= (double)0.7F; - } - - } -} diff --git a/src/net/minecraft/src/EntityGiant.java b/src/net/minecraft/src/EntityGiant.java deleted file mode 100644 index 115d51d..0000000 --- a/src/net/minecraft/src/EntityGiant.java +++ /dev/null @@ -1,17 +0,0 @@ -package net.minecraft.src; - -public class EntityGiant extends EntityMonster { - public EntityGiant(World var1) { - super(var1); - this.texture = "/mob/zombie.png"; - this.moveSpeed = 0.5F; - this.attackStrength = 50; - this.health *= 10; - this.yOffset *= 6.0F; - this.setSize(this.width * 6.0F, this.height * 6.0F); - } - - protected float getBlockPathWeight(int var1, int var2, int var3) { - return this.worldObj.getBrightness(var1, var2, var3) - 0.5F; - } -} diff --git a/src/net/minecraft/src/EntityItem.java b/src/net/minecraft/src/EntityItem.java deleted file mode 100644 index 785a54e..0000000 --- a/src/net/minecraft/src/EntityItem.java +++ /dev/null @@ -1,180 +0,0 @@ -package net.minecraft.src; - -public class EntityItem extends Entity { - public ItemStack item; - private int age2; - public int age = 0; - public int delayBeforeCanPickup; - private int health = 5; - public float hoverStart = (float)(Math.random() * Math.PI * 2.0D); - - public EntityItem(World var1, double var2, double var4, double var6, ItemStack var8) { - super(var1); - this.setSize(0.25F, 0.25F); - this.yOffset = this.height / 2.0F; - this.setPosition(var2, var4, var6); - this.item = var8; - this.rotationYaw = (float)(Math.random() * 360.0D); - this.motionX = (double)((float)(Math.random() * (double)0.2F - (double)0.1F)); - this.motionY = (double)0.2F; - this.motionZ = (double)((float)(Math.random() * (double)0.2F - (double)0.1F)); - this.canTriggerWalking = false; - } - - public EntityItem(World var1) { - super(var1); - this.setSize(0.25F, 0.25F); - this.yOffset = this.height / 2.0F; - } - - public void onUpdate() { - super.onUpdate(); - if(this.delayBeforeCanPickup > 0) { - --this.delayBeforeCanPickup; - } - - this.prevPosX = this.posX; - this.prevPosY = this.posY; - this.prevPosZ = this.posZ; - this.motionY -= (double)0.04F; - if(this.worldObj.getBlockMaterial(MathHelper.floor_double(this.posX), MathHelper.floor_double(this.posY), MathHelper.floor_double(this.posZ)) == Material.lava) { - this.motionY = (double)0.2F; - this.motionX = (double)((this.rand.nextFloat() - this.rand.nextFloat()) * 0.2F); - this.motionZ = (double)((this.rand.nextFloat() - this.rand.nextFloat()) * 0.2F); - this.worldObj.playSoundAtEntity(this, "random.fizz", 0.4F, 2.0F + this.rand.nextFloat() * 0.4F); - } - - this.pushOutOfBlocks(this.posX, this.posY, this.posZ); - this.handleWaterMovement(); - this.moveEntity(this.motionX, this.motionY, this.motionZ); - this.motionX *= (double)0.98F; - this.motionY *= (double)0.98F; - this.motionZ *= (double)0.98F; - if(this.onGround) { - this.motionX *= (double)0.7F; - this.motionZ *= (double)0.7F; - this.motionY *= -0.5D; - } - - ++this.age2; - ++this.age; - if(this.age >= 6000) { - this.setEntityDead(); - } - - } - - public boolean handleWaterMovement() { - return this.worldObj.handleMaterialAcceleration(this.boundingBox, Material.water, this); - } - - private boolean pushOutOfBlocks(double var1, double var3, double var5) { - int var7 = MathHelper.floor_double(var1); - int var8 = MathHelper.floor_double(var3); - int var9 = MathHelper.floor_double(var5); - double var10 = var1 - (double)var7; - double var12 = var3 - (double)var8; - double var14 = var5 - (double)var9; - if(Block.opaqueCubeLookup[this.worldObj.getBlockId(var7, var8, var9)]) { - boolean var16 = !Block.opaqueCubeLookup[this.worldObj.getBlockId(var7 - 1, var8, var9)]; - boolean var17 = !Block.opaqueCubeLookup[this.worldObj.getBlockId(var7 + 1, var8, var9)]; - boolean var18 = !Block.opaqueCubeLookup[this.worldObj.getBlockId(var7, var8 - 1, var9)]; - boolean var19 = !Block.opaqueCubeLookup[this.worldObj.getBlockId(var7, var8 + 1, var9)]; - boolean var20 = !Block.opaqueCubeLookup[this.worldObj.getBlockId(var7, var8, var9 - 1)]; - boolean var21 = !Block.opaqueCubeLookup[this.worldObj.getBlockId(var7, var8, var9 + 1)]; - byte var22 = -1; - double var23 = 9999.0D; - if(var16 && var10 < var23) { - var23 = var10; - var22 = 0; - } - - if(var17 && 1.0D - var10 < var23) { - var23 = 1.0D - var10; - var22 = 1; - } - - if(var18 && var12 < var23) { - var23 = var12; - var22 = 2; - } - - if(var19 && 1.0D - var12 < var23) { - var23 = 1.0D - var12; - var22 = 3; - } - - if(var20 && var14 < var23) { - var23 = var14; - var22 = 4; - } - - if(var21 && 1.0D - var14 < var23) { - var23 = 1.0D - var14; - var22 = 5; - } - - float var25 = this.rand.nextFloat() * 0.2F + 0.1F; - if(var22 == 0) { - this.motionX = (double)(-var25); - } - - if(var22 == 1) { - this.motionX = (double)var25; - } - - if(var22 == 2) { - this.motionY = (double)(-var25); - } - - if(var22 == 3) { - this.motionY = (double)var25; - } - - if(var22 == 4) { - this.motionZ = (double)(-var25); - } - - if(var22 == 5) { - this.motionZ = (double)var25; - } - } - - return false; - } - - protected void dealFireDamage(int var1) { - this.attackEntityFrom((Entity)null, var1); - } - - public boolean attackEntityFrom(Entity var1, int var2) { - this.health -= var2; - if(this.health <= 0) { - this.setEntityDead(); - } - - return false; - } - - public void writeEntityToNBT(NBTTagCompound var1) { - var1.setShort("Health", (short)((byte)this.health)); - var1.setShort("Age", (short)this.age); - var1.setCompoundTag("Item", this.item.writeToNBT(new NBTTagCompound())); - } - - public void readEntityFromNBT(NBTTagCompound var1) { - this.health = var1.getShort("Health") & 255; - this.age = var1.getShort("Age"); - NBTTagCompound var2 = var1.getCompoundTag("Item"); - this.item = new ItemStack(var2); - } - - public void onCollideWithPlayer(EntityPlayer var1) { - if(this.delayBeforeCanPickup == 0 && var1.inventory.addItemStackToInventory(this.item)) { - this.worldObj.playSoundAtEntity(this, "random.pop", 0.2F, ((this.rand.nextFloat() - this.rand.nextFloat()) * 0.7F + 1.0F) * 2.0F); - var1.onItemPickup(this); - this.setEntityDead(); - } - - } -} diff --git a/src/net/minecraft/src/EntityLavaFX.java b/src/net/minecraft/src/EntityLavaFX.java deleted file mode 100644 index f6b735f..0000000 --- a/src/net/minecraft/src/EntityLavaFX.java +++ /dev/null @@ -1,54 +0,0 @@ -package net.minecraft.src; - -public class EntityLavaFX extends EntityFX { - private float lavaParticleScale; - - public EntityLavaFX(World var1, double var2, double var4, double var6) { - super(var1, var2, var4, var6, 0.0D, 0.0D, 0.0D); - this.motionX *= (double)0.8F; - this.motionY *= (double)0.8F; - this.motionZ *= (double)0.8F; - this.motionY = (double)(this.rand.nextFloat() * 0.4F + 0.05F); - this.particleRed = this.particleGreen = this.particleBlue = 1.0F; - this.particleScale *= this.rand.nextFloat() * 2.0F + 0.2F; - this.lavaParticleScale = this.particleScale; - this.particleMaxAge = (int)(16.0D / (Math.random() * 0.8D + 0.2D)); - this.noClip = false; - this.particleTextureIndex = 49; - } - - public float getEntityBrightness(float var1) { - return 1.0F; - } - - public void renderParticle(Tessellator var1, float var2, float var3, float var4, float var5, float var6, float var7) { - float var8 = ((float)this.particleAge + var2) / (float)this.particleMaxAge; - this.particleScale = this.lavaParticleScale * (1.0F - var8 * var8); - super.renderParticle(var1, var2, var3, var4, var5, var6, var7); - } - - public void onUpdate() { - this.prevPosX = this.posX; - this.prevPosY = this.posY; - this.prevPosZ = this.posZ; - if(this.particleAge++ >= this.particleMaxAge) { - this.setEntityDead(); - } - - float var1 = (float)this.particleAge / (float)this.particleMaxAge; - if(this.rand.nextFloat() > var1) { - this.worldObj.spawnParticle("smoke", this.posX, this.posY, this.posZ, this.motionX, this.motionY, this.motionZ); - } - - this.motionY -= 0.03D; - this.moveEntity(this.motionX, this.motionY, this.motionZ); - this.motionX *= (double)0.999F; - this.motionY *= (double)0.999F; - this.motionZ *= (double)0.999F; - if(this.onGround) { - this.motionX *= (double)0.7F; - this.motionZ *= (double)0.7F; - } - - } -} diff --git a/src/net/minecraft/src/EntityList.java b/src/net/minecraft/src/EntityList.java deleted file mode 100644 index 0d673ef..0000000 --- a/src/net/minecraft/src/EntityList.java +++ /dev/null @@ -1,72 +0,0 @@ -package net.minecraft.src; - -import java.util.HashMap; -import java.util.Map; - -public class EntityList { - private static Map stringToClassMapping = new HashMap(); - private static Map classToStringMapping = new HashMap(); - - private static void addMapping(Class var0, String var1) { - stringToClassMapping.put(var1, var0); - classToStringMapping.put(var0, var1); - } - - public static Entity createEntityInWorld(String var0, World var1) { - Entity var2 = null; - - try { - Class var3 = (Class)stringToClassMapping.get(var0); - if(var3 != null) { - var2 = (Entity)var3.getConstructor(new Class[]{World.class}).newInstance(new Object[]{var1}); - } - } catch (Exception var4) { - var4.printStackTrace(); - } - - return var2; - } - - public static Entity createEntityFromNBT(NBTTagCompound var0, World var1) { - Entity var2 = null; - - try { - Class var3 = (Class)stringToClassMapping.get(var0.getString("id")); - if(var3 != null) { - var2 = (Entity)var3.getConstructor(new Class[]{World.class}).newInstance(new Object[]{var1}); - } - } catch (Exception var4) { - var4.printStackTrace(); - } - - if(var2 != null) { - var2.readFromNBT(var0); - } else { - System.out.println("Skipping Entity with id " + var0.getString("id")); - } - - return var2; - } - - public static String getEntityString(Entity var0) { - return (String)classToStringMapping.get(var0.getClass()); - } - - static { - addMapping(EntityArrow.class, "Arrow"); - addMapping(EntityItem.class, "Item"); - addMapping(EntityPainting.class, "Painting"); - addMapping(EntityLiving.class, "Mob"); - addMapping(EntityMonster.class, "Monster"); - addMapping(EntityCreeper.class, "Creeper"); - addMapping(EntitySkeleton.class, "Skeleton"); - addMapping(EntitySpider.class, "Spider"); - addMapping(EntityGiant.class, "Giant"); - addMapping(EntityZombie.class, "Zombie"); - addMapping(EntityPig.class, "Pig"); - addMapping(EntitySheep.class, "Sheep"); - addMapping(EntityTNTPrimed.class, "PrimedTnt"); - addMapping(EntityFallingSand.class, "FallingSand"); - addMapping(EntityMinecart.class, "Minecart"); - } -} diff --git a/src/net/minecraft/src/EntityLiving.java b/src/net/minecraft/src/EntityLiving.java deleted file mode 100644 index 09a9db0..0000000 --- a/src/net/minecraft/src/EntityLiving.java +++ /dev/null @@ -1,548 +0,0 @@ -package net.minecraft.src; - -import java.util.List; - -public class EntityLiving extends Entity { - public int heartsHalvesLife = 20; - public float unusedRotationPitch2; - public float unusedFloat; - public float unusedRotationPitch; - public float renderYawOffset = 0.0F; - public float prevRenderYawOffset = 0.0F; - protected float ridingRotUnused; - protected float prevRidingRotUnused; - protected float rotationUnused; - protected float prevRotationUnused; - protected boolean unusedBool1 = true; - protected String texture = "/char.png"; - protected boolean unusedBool2 = true; - protected float unusedRotation = 0.0F; - protected String entityType = null; - protected float unusedFloat1 = 1.0F; - protected int scoreValue = 0; - protected float unusedFloat2 = 0.0F; - public int health = 10; - public int prevHealth; - private int livingSoundTime; - public int hurtTime; - public int maxHurtTime; - public float attackedAtYaw = 0.0F; - public int deathTime = 0; - public int attackTime = 0; - public float prevCameraPitch; - public float cameraPitch; - protected boolean dead = false; - public int unusedInt = -1; - public float unusedFloat4 = (float)(Math.random() * (double)0.9F + (double)0.1F); - public float prevLimbYaw; - public float limbYaw; - public float limbSwing; - protected int entityAge = 0; - protected float moveStrafing; - protected float moveForward; - protected float randomYawVelocity; - protected boolean isJumping = false; - protected float defaultPitch = 0.0F; - protected float moveSpeed = 0.7F; - - public EntityLiving(World var1) { - super(var1); - this.preventEntitySpawning = true; - this.unusedRotationPitch = (float)(Math.random() + 1.0D) * 0.01F; - this.setPosition(this.posX, this.posY, this.posZ); - this.unusedRotationPitch2 = (float)Math.random() * 12398.0F; - this.rotationYaw = (float)(Math.random() * (double)((float)Math.PI) * 2.0D); - this.unusedFloat = 1.0F; - this.stepHeight = 0.5F; - } - - public String getTexture() { - return this.texture; - } - - public boolean canBeCollidedWith() { - return !this.isDead; - } - - public boolean canBePushed() { - return !this.isDead; - } - - protected float getEyeHeight() { - return this.height * 0.85F; - } - - public void onEntityUpdate() { - super.onEntityUpdate(); - if(this.rand.nextInt(1000) < this.livingSoundTime++) { - this.livingSoundTime = -80; - String var1 = this.getLivingSound(); - if(var1 != null) { - this.worldObj.playSoundAtEntity(this, var1, 1.0F, (this.rand.nextFloat() - this.rand.nextFloat()) * 0.2F + 1.0F); - } - } - - if(this.isEntityAlive() && this.isEntityInsideOpaqueBlock()) { - this.attackEntityFrom((Entity)null, 1); - } - - int var8; - if(this.isEntityAlive() && this.isInsideOfMaterial(Material.water)) { - --this.air; - if(this.air == -20) { - this.air = 0; - - for(var8 = 0; var8 < 8; ++var8) { - float var2 = this.rand.nextFloat() - this.rand.nextFloat(); - float var3 = this.rand.nextFloat() - this.rand.nextFloat(); - float var4 = this.rand.nextFloat() - this.rand.nextFloat(); - this.worldObj.spawnParticle("bubble", this.posX + (double)var2, this.posY + (double)var3, this.posZ + (double)var4, this.motionX, this.motionY, this.motionZ); - } - - this.attackEntityFrom((Entity)null, 2); - } - - this.fire = 0; - } else { - this.air = this.maxAir; - } - - this.prevCameraPitch = this.cameraPitch; - if(this.attackTime > 0) { - --this.attackTime; - } - - if(this.hurtTime > 0) { - --this.hurtTime; - } - - if(this.heartsLife > 0) { - --this.heartsLife; - } - - if(this.health <= 0) { - ++this.deathTime; - if(this.deathTime > 20) { - this.onEntityDeath(); - this.setEntityDead(); - - for(var8 = 0; var8 < 20; ++var8) { - double var9 = this.rand.nextGaussian() * 0.02D; - double var10 = this.rand.nextGaussian() * 0.02D; - double var6 = this.rand.nextGaussian() * 0.02D; - this.worldObj.spawnParticle("explode", this.posX + (double)(this.rand.nextFloat() * this.width * 2.0F) - (double)this.width, this.posY + (double)(this.rand.nextFloat() * this.height), this.posZ + (double)(this.rand.nextFloat() * this.width * 2.0F) - (double)this.width, var9, var10, var6); - } - } - } - - this.prevRotationUnused = this.rotationUnused; - this.prevRenderYawOffset = this.renderYawOffset; - this.prevRotationYaw = this.rotationYaw; - this.prevRotationPitch = this.rotationPitch; - } - - public void spawnExplosionParticle() { - for(int var1 = 0; var1 < 20; ++var1) { - double var2 = this.rand.nextGaussian() * 0.02D; - double var4 = this.rand.nextGaussian() * 0.02D; - double var6 = this.rand.nextGaussian() * 0.02D; - double var8 = 10.0D; - this.worldObj.spawnParticle("explode", this.posX + (double)(this.rand.nextFloat() * this.width * 2.0F) - (double)this.width - var2 * var8, this.posY + (double)(this.rand.nextFloat() * this.height) - var4 * var8, this.posZ + (double)(this.rand.nextFloat() * this.width * 2.0F) - (double)this.width - var6 * var8, var2, var4, var6); - } - - } - - public void updateRidden() { - super.updateRidden(); - this.ridingRotUnused = this.prevRidingRotUnused; - this.prevRidingRotUnused = 0.0F; - } - - public void onUpdate() { - super.onUpdate(); - this.onLivingUpdate(); - double var1 = this.posX - this.prevPosX; - double var3 = this.posZ - this.prevPosZ; - float var5 = MathHelper.sqrt_double(var1 * var1 + var3 * var3); - float var6 = this.renderYawOffset; - float var7 = 0.0F; - this.ridingRotUnused = this.prevRidingRotUnused; - float var8 = 0.0F; - if(var5 > 0.05F) { - var8 = 1.0F; - var7 = var5 * 3.0F; - var6 = (float)Math.atan2(var3, var1) * 180.0F / (float)Math.PI - 90.0F; - } - - if(!this.onGround) { - var8 = 0.0F; - } - - this.prevRidingRotUnused += (var8 - this.prevRidingRotUnused) * 0.3F; - - float var9; - for(var9 = var6 - this.renderYawOffset; var9 < -180.0F; var9 += 360.0F) { - } - - while(var9 >= 180.0F) { - var9 -= 360.0F; - } - - this.renderYawOffset += var9 * 0.1F; - - float var10; - for(var10 = this.rotationYaw - this.renderYawOffset; var10 < -180.0F; var10 += 360.0F) { - } - - while(var10 >= 180.0F) { - var10 -= 360.0F; - } - - boolean var11 = var10 < -90.0F || var10 >= 90.0F; - if(var10 < -75.0F) { - var10 = -75.0F; - } - - if(var10 >= 75.0F) { - var10 = 75.0F; - } - - this.renderYawOffset = this.rotationYaw - var10; - this.renderYawOffset += var10 * 0.1F; - if(var11) { - var7 *= -1.0F; - } - - while(this.rotationYaw - this.prevRotationYaw < -180.0F) { - this.prevRotationYaw -= 360.0F; - } - - while(this.rotationYaw - this.prevRotationYaw >= 180.0F) { - this.prevRotationYaw += 360.0F; - } - - while(this.renderYawOffset - this.prevRenderYawOffset < -180.0F) { - this.prevRenderYawOffset -= 360.0F; - } - - while(this.renderYawOffset - this.prevRenderYawOffset >= 180.0F) { - this.prevRenderYawOffset += 360.0F; - } - - while(this.rotationPitch - this.prevRotationPitch < -180.0F) { - this.prevRotationPitch -= 360.0F; - } - - while(this.rotationPitch - this.prevRotationPitch >= 180.0F) { - this.prevRotationPitch += 360.0F; - } - - this.rotationUnused += var7; - } - - protected void setSize(float var1, float var2) { - super.setSize(var1, var2); - } - - public void heal(int var1) { - if(this.health > 0) { - this.health += var1; - if(this.health > 20) { - this.health = 20; - } - - this.heartsLife = this.heartsHalvesLife / 2; - } - } - - public boolean attackEntityFrom(Entity var1, int var2) { - this.entityAge = 0; - if(this.health <= 0) { - return false; - } else { - this.limbYaw = 1.5F; - if((float)this.heartsLife > (float)this.heartsHalvesLife / 2.0F) { - if(this.prevHealth - var2 >= this.health) { - return false; - } - - this.health = this.prevHealth - var2; - } else { - this.prevHealth = this.health; - this.heartsLife = this.heartsHalvesLife; - this.health -= var2; - this.hurtTime = this.maxHurtTime = 10; - } - - this.attackedAtYaw = 0.0F; - if(var1 != null) { - double var3 = var1.posX - this.posX; - - double var5; - for(var5 = var1.posZ - this.posZ; var3 * var3 + var5 * var5 < 1.0E-4D; var5 = (Math.random() - Math.random()) * 0.01D) { - var3 = (Math.random() - Math.random()) * 0.01D; - } - - this.attackedAtYaw = (float)(Math.atan2(var5, var3) * 180.0D / (double)((float)Math.PI)) - this.rotationYaw; - this.knockBack(var1, var2, var3, var5); - } else { - this.attackedAtYaw = (float)((int)(Math.random() * 2.0D) * 180); - } - - if(this.health <= 0) { - this.worldObj.playSoundAtEntity(this, this.getDeathSound(), 1.0F, (this.rand.nextFloat() - this.rand.nextFloat()) * 0.2F + 1.0F); - this.onDeath(var1); - } else { - this.worldObj.playSoundAtEntity(this, this.getHurtSound(), 1.0F, (this.rand.nextFloat() - this.rand.nextFloat()) * 0.2F + 1.0F); - } - - return true; - } - } - - protected String getLivingSound() { - return null; - } - - protected String getHurtSound() { - return "random.hurt"; - } - - protected String getDeathSound() { - return "random.hurt"; - } - - public void knockBack(Entity var1, int var2, double var3, double var5) { - float var7 = MathHelper.sqrt_double(var3 * var3 + var5 * var5); - float var8 = 0.4F; - this.motionX /= 2.0D; - this.motionY /= 2.0D; - this.motionZ /= 2.0D; - this.motionX -= var3 / (double)var7 * (double)var8; - this.motionY += (double)0.4F; - this.motionZ -= var5 / (double)var7 * (double)var8; - if(this.motionY > (double)0.4F) { - this.motionY = (double)0.4F; - } - - } - - public void onDeath(Entity var1) { - if(this.scoreValue > 0 && var1 != null) { - var1.addToPlayerScore(this, this.scoreValue); - } - - this.dead = true; - int var2 = this.getDropItemId(); - if(var2 > 0) { - int var3 = this.rand.nextInt(3); - - for(int var4 = 0; var4 < var3; ++var4) { - this.dropItem(var2, 1); - } - } - - } - - protected int getDropItemId() { - return 0; - } - - protected void fall(float var1) { - int var2 = (int)Math.ceil((double)(var1 - 3.0F)); - if(var2 > 0) { - this.attackEntityFrom((Entity)null, var2); - int var3 = this.worldObj.getBlockId(MathHelper.floor_double(this.posX), MathHelper.floor_double(this.posY - (double)0.2F - (double)this.yOffset), MathHelper.floor_double(this.posZ)); - if(var3 > 0) { - StepSound var4 = Block.blocksList[var3].stepSound; - this.worldObj.playSoundAtEntity(this, var4.getStepSound(), var4.getVolume() * 0.5F, var4.getPitch() * (12.0F / 16.0F)); - } - } - - } - - public void moveEntityWithHeading(float var1, float var2) { - double var3; - if(this.handleWaterMovement()) { - var3 = this.posY; - this.moveFlying(var1, var2, 0.02F); - this.moveEntity(this.motionX, this.motionY, this.motionZ); - this.motionX *= (double)0.8F; - this.motionY *= (double)0.8F; - this.motionZ *= (double)0.8F; - this.motionY -= 0.02D; - if(this.isCollidedHorizontally && this.isOffsetPositionInLiquid(this.motionX, this.motionY + (double)0.6F - this.posY + var3, this.motionZ)) { - this.motionY = (double)0.3F; - } - } else if(this.handleLavaMovement()) { - var3 = this.posY; - this.moveFlying(var1, var2, 0.02F); - this.moveEntity(this.motionX, this.motionY, this.motionZ); - this.motionX *= 0.5D; - this.motionY *= 0.5D; - this.motionZ *= 0.5D; - this.motionY -= 0.02D; - if(this.isCollidedHorizontally && this.isOffsetPositionInLiquid(this.motionX, this.motionY + (double)0.6F - this.posY + var3, this.motionZ)) { - this.motionY = (double)0.3F; - } - } else { - this.moveFlying(var1, var2, this.onGround ? 0.1F : 0.02F); - if(this.isOnLadder()) { - this.fallDistance = 0.0F; - if(this.motionY < -0.15D) { - this.motionY = -0.15D; - } - } - - this.moveEntity(this.motionX, this.motionY, this.motionZ); - if(this.isCollidedHorizontally && this.isOnLadder()) { - this.motionY = 0.2D; - } - - this.motionX *= (double)0.91F; - this.motionY *= (double)0.98F; - this.motionZ *= (double)0.91F; - this.motionY -= 0.08D; - if(this.onGround) { - float var8 = 0.6F; - this.motionX *= (double)var8; - this.motionZ *= (double)var8; - } - } - - this.prevLimbYaw = this.limbYaw; - var3 = this.posX - this.prevPosX; - double var5 = this.posZ - this.prevPosZ; - float var7 = MathHelper.sqrt_double(var3 * var3 + var5 * var5) * 4.0F; - if(var7 > 1.0F) { - var7 = 1.0F; - } - - this.limbYaw += (var7 - this.limbYaw) * 0.4F; - this.limbSwing += this.limbYaw; - } - - public boolean isOnLadder() { - int var1 = MathHelper.floor_double(this.posX); - int var2 = MathHelper.floor_double(this.boundingBox.minY); - int var3 = MathHelper.floor_double(this.posZ); - return this.worldObj.getBlockId(var1, var2, var3) == Block.ladder.blockID || this.worldObj.getBlockId(var1, var2 + 1, var3) == Block.ladder.blockID; - } - - public void writeEntityToNBT(NBTTagCompound var1) { - var1.setShort("Health", (short)this.health); - var1.setShort("HurtTime", (short)this.hurtTime); - var1.setShort("DeathTime", (short)this.deathTime); - var1.setShort("AttackTime", (short)this.attackTime); - } - - public void readEntityFromNBT(NBTTagCompound var1) { - this.health = var1.getShort("Health"); - if(!var1.hasKey("Health")) { - this.health = 10; - } - - this.hurtTime = var1.getShort("HurtTime"); - this.deathTime = var1.getShort("DeathTime"); - this.attackTime = var1.getShort("AttackTime"); - } - - public boolean isEntityAlive() { - return !this.isDead && this.health > 0; - } - - public void onLivingUpdate() { - ++this.entityAge; - Entity var1 = this.worldObj.getPlayerEntity(); - if(var1 != null) { - double var2 = var1.posX - this.posX; - double var4 = var1.posY - this.posY; - double var6 = var1.posZ - this.posZ; - double var8 = var2 * var2 + var4 * var4 + var6 * var6; - if(var8 > 16384.0D) { - this.setEntityDead(); - } - - if(this.entityAge > 600 && this.rand.nextInt(800) == 0) { - if(var8 < 1024.0D) { - this.entityAge = 0; - } else { - this.setEntityDead(); - } - } - } - - if(this.health <= 0) { - this.isJumping = false; - this.moveStrafing = 0.0F; - this.moveForward = 0.0F; - this.randomYawVelocity = 0.0F; - } else { - this.updatePlayerActionState(); - } - - boolean var10 = this.handleWaterMovement(); - boolean var3 = this.handleLavaMovement(); - if(this.isJumping) { - if(var10) { - this.motionY += (double)0.04F; - } else if(var3) { - this.motionY += (double)0.04F; - } else if(this.onGround) { - this.jump(); - } - } - - this.moveStrafing *= 0.98F; - this.moveForward *= 0.98F; - this.randomYawVelocity *= 0.9F; - this.moveEntityWithHeading(this.moveStrafing, this.moveForward); - List var11 = this.worldObj.getEntitiesWithinAABBExcludingEntity(this, this.boundingBox.expand((double)0.2F, 0.0D, (double)0.2F)); - if(var11 != null && var11.size() > 0) { - for(int var5 = 0; var5 < var11.size(); ++var5) { - Entity var12 = (Entity)var11.get(var5); - if(var12.canBePushed()) { - var12.applyEntityCollision(this); - } - } - } - - } - - protected void jump() { - this.motionY = (double)0.42F; - } - - protected void updatePlayerActionState() { - if(this.rand.nextFloat() < 0.07F) { - this.moveStrafing = (this.rand.nextFloat() - 0.5F) * this.moveSpeed; - this.moveForward = this.rand.nextFloat() * this.moveSpeed; - } - - this.isJumping = this.rand.nextFloat() < 0.01F; - if(this.rand.nextFloat() < 0.04F) { - this.randomYawVelocity = (this.rand.nextFloat() - 0.5F) * 60.0F; - } - - this.rotationYaw += this.randomYawVelocity; - this.rotationPitch = this.defaultPitch; - boolean var1 = this.handleWaterMovement(); - boolean var2 = this.handleLavaMovement(); - if(var1 || var2) { - this.isJumping = this.rand.nextFloat() < 0.8F; - } - - } - - public void onEntityDeath() { - } - - public boolean getCanSpawnHere(double var1, double var3, double var5) { - this.setPosition(var1, var3 + (double)(this.height / 2.0F), var5); - return this.worldObj.checkIfAABBIsClear(this.boundingBox) && this.worldObj.getCollidingBoundingBoxes(this, this.boundingBox).size() == 0 && !this.worldObj.getIsAnyLiquid(this.boundingBox); - } - - protected void kill() { - this.attackEntityFrom((Entity)null, 4); - } -} diff --git a/src/net/minecraft/src/EntityMinecart.java b/src/net/minecraft/src/EntityMinecart.java deleted file mode 100644 index 34926bb..0000000 --- a/src/net/minecraft/src/EntityMinecart.java +++ /dev/null @@ -1,520 +0,0 @@ -package net.minecraft.src; - -import java.util.List; - -public class EntityMinecart extends Entity implements IInventory { - private ItemStack[] cargoItems; - public int damageTaken; - public int timeSinceHit; - public int forwardDirection; - private boolean isInReverse; - private static final int[][][] matrix = new int[][][]{{{0, 0, -1}, {0, 0, 1}}, {{-1, 0, 0}, {1, 0, 0}}, {{-1, -1, 0}, {1, 0, 0}}, {{-1, 0, 0}, {1, -1, 0}}, {{0, 0, -1}, {0, -1, 1}}, {{0, -1, -1}, {0, 0, 1}}, {{0, 0, 1}, {1, 0, 0}}, {{0, 0, 1}, {-1, 0, 0}}, {{0, 0, -1}, {-1, 0, 0}}, {{0, 0, -1}, {1, 0, 0}}}; - - public EntityMinecart(World var1) { - super(var1); - this.cargoItems = new ItemStack[36]; - this.damageTaken = 0; - this.timeSinceHit = 0; - this.forwardDirection = 1; - this.isInReverse = false; - this.preventEntitySpawning = true; - this.setSize(0.98F, 0.7F); - this.yOffset = this.height / 2.0F; - this.canTriggerWalking = false; - } - - public AxisAlignedBB getCollisionBox(Entity var1) { - return var1.boundingBox; - } - - public AxisAlignedBB getBoundingBox() { - return this.boundingBox; - } - - public boolean canBePushed() { - return true; - } - - public EntityMinecart(World var1, double var2, double var4, double var6) { - this(var1); - this.setPosition(var2, var4 + (double)this.yOffset, var6); - this.motionX = 0.0D; - this.motionY = 0.0D; - this.motionZ = 0.0D; - this.prevPosX = var2; - this.prevPosY = var4; - this.prevPosZ = var6; - } - - public double getYOffset() { - return (double)this.height * 0.2D; - } - - public boolean attackEntityFrom(Entity var1, int var2) { - this.forwardDirection = -this.forwardDirection; - this.timeSinceHit = 10; - this.damageTaken += var2 * 10; - if(this.damageTaken > 40) { - this.entityDropItem(Item.minecart.shiftedIndex, 1, 0.0F); - this.setEntityDead(); - } - - return true; - } - - public boolean canBeCollidedWith() { - return !this.isDead; - } - - public void setEntityDead() { - for(int var1 = 0; var1 < this.getSizeInventory(); ++var1) { - ItemStack var2 = this.getStackInSlot(var1); - if(var2 != null) { - float var3 = this.rand.nextFloat() * 0.8F + 0.1F; - float var4 = this.rand.nextFloat() * 0.8F + 0.1F; - float var5 = this.rand.nextFloat() * 0.8F + 0.1F; - - while(var2.stackSize > 0) { - int var6 = this.rand.nextInt(21) + 10; - if(var6 > var2.stackSize) { - var6 = var2.stackSize; - } - - var2.stackSize -= var6; - EntityItem var7 = new EntityItem(this.worldObj, this.posX + (double)var3, this.posY + (double)var4, this.posZ + (double)var5, new ItemStack(var2.itemID, var6, var2.itemDmg)); - float var8 = 0.05F; - var7.motionX = (double)((float)this.rand.nextGaussian() * var8); - var7.motionY = (double)((float)this.rand.nextGaussian() * var8 + 0.2F); - var7.motionZ = (double)((float)this.rand.nextGaussian() * var8); - this.worldObj.spawnEntityInWorld(var7); - } - } - } - - super.setEntityDead(); - } - - public void onUpdate() { - if(this.timeSinceHit > 0) { - --this.timeSinceHit; - } - - if(this.damageTaken > 0) { - --this.damageTaken; - } - - this.prevPosX = this.posX; - this.prevPosY = this.posY; - this.prevPosZ = this.posZ; - this.motionY -= (double)0.04F; - int var1 = MathHelper.floor_double(this.posX); - int var2 = MathHelper.floor_double(this.posY); - int var3 = MathHelper.floor_double(this.posZ); - if(this.worldObj.getBlockId(var1, var2 - 1, var3) == Block.minecartTrack.blockID) { - --var2; - } - - double var4 = 0.4D; - double var6 = 1.0D / 128.0D; - if(this.worldObj.getBlockId(var1, var2, var3) == Block.minecartTrack.blockID) { - Vec3D var8 = this.getPos(this.posX, this.posY, this.posZ); - int var9 = this.worldObj.getBlockMetadata(var1, var2, var3); - this.posY = (double)var2; - if(var9 >= 2 && var9 <= 5) { - this.posY = (double)(var2 + 1); - } - - if(var9 == 2) { - this.motionX -= var6; - } - - if(var9 == 3) { - this.motionX += var6; - } - - if(var9 == 4) { - this.motionZ += var6; - } - - if(var9 == 5) { - this.motionZ -= var6; - } - - int[][] var10 = matrix[var9]; - double var11 = (double)(var10[1][0] - var10[0][0]); - double var13 = (double)(var10[1][2] - var10[0][2]); - double var15 = Math.sqrt(var11 * var11 + var13 * var13); - double var17 = this.motionX * var11 + this.motionZ * var13; - if(var17 < 0.0D) { - var11 = -var11; - var13 = -var13; - } - - double var19 = Math.sqrt(this.motionX * this.motionX + this.motionZ * this.motionZ); - this.motionX = var19 * var11 / var15; - this.motionZ = var19 * var13 / var15; - double var21 = 0.0D; - double var23 = (double)var1 + 0.5D + (double)var10[0][0] * 0.5D; - double var25 = (double)var3 + 0.5D + (double)var10[0][2] * 0.5D; - double var27 = (double)var1 + 0.5D + (double)var10[1][0] * 0.5D; - double var29 = (double)var3 + 0.5D + (double)var10[1][2] * 0.5D; - var11 = var27 - var23; - var13 = var29 - var25; - double var31; - double var33; - if(var11 == 0.0D) { - this.posX = (double)var1 + 0.5D; - var21 = this.posZ - (double)var3; - } else if(var13 == 0.0D) { - this.posZ = (double)var3 + 0.5D; - var21 = this.posX - (double)var1; - } else { - var31 = this.posX - var23; - var33 = this.posZ - var25; - double var35 = (var31 * var11 + var33 * var13) * 2.0D; - var21 = var35; - } - - this.posX = var23 + var11 * var21; - this.posZ = var25 + var13 * var21; - this.setPosition(this.posX, this.posY + (double)this.yOffset, this.posZ); - var31 = this.motionX; - var33 = this.motionZ; - if(this.riddenByEntity != null) { - var31 *= 0.75D; - var33 *= 0.75D; - } - - if(var31 < -var4) { - var31 = -var4; - } - - if(var31 > var4) { - var31 = var4; - } - - if(var33 < -var4) { - var33 = -var4; - } - - if(var33 > var4) { - var33 = var4; - } - - this.moveEntity(var31, 0.0D, var33); - if(var10[0][1] != 0 && MathHelper.floor_double(this.posX) - var1 == var10[0][0] && MathHelper.floor_double(this.posZ) - var3 == var10[0][2]) { - this.setPosition(this.posX, this.posY + (double)var10[0][1], this.posZ); - } else if(var10[1][1] != 0 && MathHelper.floor_double(this.posX) - var1 == var10[1][0] && MathHelper.floor_double(this.posZ) - var3 == var10[1][2]) { - this.setPosition(this.posX, this.posY + (double)var10[1][1], this.posZ); - } - - if(this.riddenByEntity != null) { - this.motionX *= (double)0.997F; - this.motionY *= 0.0D; - this.motionZ *= (double)0.997F; - } else { - this.motionX *= (double)0.96F; - this.motionY *= 0.0D; - this.motionZ *= (double)0.96F; - } - - Vec3D var41 = this.getPos(this.posX, this.posY, this.posZ); - if(var41 != null && var8 != null) { - double var36 = (var8.yCoord - var41.yCoord) * 0.05D; - var19 = Math.sqrt(this.motionX * this.motionX + this.motionZ * this.motionZ); - if(var19 > 0.0D) { - this.motionX = this.motionX / var19 * (var19 + var36); - this.motionZ = this.motionZ / var19 * (var19 + var36); - } - - this.setPosition(this.posX, var41.yCoord, this.posZ); - } - - int var42 = MathHelper.floor_double(this.posX); - int var37 = MathHelper.floor_double(this.posZ); - if(var42 != var1 || var37 != var3) { - var19 = Math.sqrt(this.motionX * this.motionX + this.motionZ * this.motionZ); - this.motionX = var19 * (double)(var42 - var1); - this.motionZ = var19 * (double)(var37 - var3); - } - } else { - if(this.motionX < -var4) { - this.motionX = -var4; - } - - if(this.motionX > var4) { - this.motionX = var4; - } - - if(this.motionZ < -var4) { - this.motionZ = -var4; - } - - if(this.motionZ > var4) { - this.motionZ = var4; - } - - if(this.onGround) { - this.motionX *= 0.5D; - this.motionY *= 0.5D; - this.motionZ *= 0.5D; - } - - this.moveEntity(this.motionX, this.motionY, this.motionZ); - if(!this.onGround) { - this.motionX *= (double)0.95F; - this.motionY *= (double)0.95F; - this.motionZ *= (double)0.95F; - } - } - - this.rotationPitch = 0.0F; - double var38 = this.prevPosX - this.posX; - double var39 = this.prevPosZ - this.posZ; - if(var38 * var38 + var39 * var39 > 0.001D) { - this.rotationYaw = (float)(Math.atan2(var39, var38) * 180.0D / Math.PI); - if(this.isInReverse) { - this.rotationYaw += 180.0F; - } - } - - double var12; - for(var12 = (double)(this.rotationYaw - this.prevRotationYaw); var12 >= 180.0D; var12 -= 360.0D) { - } - - while(var12 < -180.0D) { - var12 += 360.0D; - } - - if(var12 < -170.0D || var12 >= 170.0D) { - this.rotationYaw += 180.0F; - this.isInReverse = !this.isInReverse; - } - - this.setRotation(this.rotationYaw, this.rotationPitch); - List var14 = this.worldObj.getEntitiesWithinAABBExcludingEntity(this, this.boundingBox.expand((double)0.2F, 0.0D, (double)0.2F)); - if(var14 != null && var14.size() > 0) { - for(int var40 = 0; var40 < var14.size(); ++var40) { - Entity var16 = (Entity)var14.get(var40); - if(var16 != this.riddenByEntity && var16.canBePushed() && var16 instanceof EntityMinecart) { - var16.applyEntityCollision(this); - } - } - } - - if(this.riddenByEntity != null && this.riddenByEntity.isDead) { - this.riddenByEntity = null; - } - - } - - public Vec3D getPosOffset(double var1, double var3, double var5, double var7) { - int var9 = MathHelper.floor_double(var1); - int var10 = MathHelper.floor_double(var3); - int var11 = MathHelper.floor_double(var5); - if(this.worldObj.getBlockId(var9, var10 - 1, var11) == Block.minecartTrack.blockID) { - --var10; - } - - if(this.worldObj.getBlockId(var9, var10, var11) == Block.minecartTrack.blockID) { - int var12 = this.worldObj.getBlockMetadata(var9, var10, var11); - var3 = (double)var10; - if(var12 >= 2 && var12 <= 5) { - var3 = (double)(var10 + 1); - } - - int[][] var13 = matrix[var12]; - double var14 = (double)(var13[1][0] - var13[0][0]); - double var16 = (double)(var13[1][2] - var13[0][2]); - double var18 = Math.sqrt(var14 * var14 + var16 * var16); - var14 /= var18; - var16 /= var18; - var1 += var14 * var7; - var5 += var16 * var7; - if(var13[0][1] != 0 && MathHelper.floor_double(var1) - var9 == var13[0][0] && MathHelper.floor_double(var5) - var11 == var13[0][2]) { - var3 += (double)var13[0][1]; - } else if(var13[1][1] != 0 && MathHelper.floor_double(var1) - var9 == var13[1][0] && MathHelper.floor_double(var5) - var11 == var13[1][2]) { - var3 += (double)var13[1][1]; - } - - return this.getPos(var1, var3, var5); - } else { - return null; - } - } - - public Vec3D getPos(double var1, double var3, double var5) { - int var7 = MathHelper.floor_double(var1); - int var8 = MathHelper.floor_double(var3); - int var9 = MathHelper.floor_double(var5); - if(this.worldObj.getBlockId(var7, var8 - 1, var9) == Block.minecartTrack.blockID) { - --var8; - } - - if(this.worldObj.getBlockId(var7, var8, var9) == Block.minecartTrack.blockID) { - int var10 = this.worldObj.getBlockMetadata(var7, var8, var9); - var3 = (double)var8; - if(var10 >= 2 && var10 <= 5) { - var3 = (double)(var8 + 1); - } - - int[][] var11 = matrix[var10]; - double var12 = 0.0D; - double var14 = (double)var7 + 0.5D + (double)var11[0][0] * 0.5D; - double var16 = (double)var8 + 0.5D + (double)var11[0][1] * 0.5D; - double var18 = (double)var9 + 0.5D + (double)var11[0][2] * 0.5D; - double var20 = (double)var7 + 0.5D + (double)var11[1][0] * 0.5D; - double var22 = (double)var8 + 0.5D + (double)var11[1][1] * 0.5D; - double var24 = (double)var9 + 0.5D + (double)var11[1][2] * 0.5D; - double var26 = var20 - var14; - double var28 = (var22 - var16) * 2.0D; - double var30 = var24 - var18; - if(var26 == 0.0D) { - var1 = (double)var7 + 0.5D; - var12 = var5 - (double)var9; - } else if(var30 == 0.0D) { - var5 = (double)var9 + 0.5D; - var12 = var1 - (double)var7; - } else { - double var32 = var1 - var14; - double var34 = var5 - var18; - double var36 = (var32 * var26 + var34 * var30) * 2.0D; - var12 = var36; - } - - var1 = var14 + var26 * var12; - var3 = var16 + var28 * var12; - var5 = var18 + var30 * var12; - if(var28 < 0.0D) { - ++var3; - } - - if(var28 > 0.0D) { - var3 += 0.5D; - } - - return Vec3D.createVector(var1, var3, var5); - } else { - return null; - } - } - - protected void writeEntityToNBT(NBTTagCompound var1) { - NBTTagList var2 = new NBTTagList(); - - for(int var3 = 0; var3 < this.cargoItems.length; ++var3) { - if(this.cargoItems[var3] != null) { - NBTTagCompound var4 = new NBTTagCompound(); - var4.setByte("Slot", (byte)var3); - this.cargoItems[var3].writeToNBT(var4); - var2.setTag(var4); - } - } - - var1.setTag("Items", var2); - } - - protected void readEntityFromNBT(NBTTagCompound var1) { - NBTTagList var2 = var1.getTagList("Items"); - this.cargoItems = new ItemStack[this.getSizeInventory()]; - - for(int var3 = 0; var3 < var2.tagCount(); ++var3) { - NBTTagCompound var4 = (NBTTagCompound)var2.tagAt(var3); - int var5 = var4.getByte("Slot") & 255; - if(var5 >= 0 && var5 < this.cargoItems.length) { - this.cargoItems[var5] = new ItemStack(var4); - } - } - - } - - public void applyEntityCollision(Entity var1) { - if(var1 != this.riddenByEntity) { - double var2 = var1.posX - this.posX; - double var4 = var1.posZ - this.posZ; - double var6 = var2 * var2 + var4 * var4; - if(var6 >= (double)1.0E-4F) { - var6 = (double)MathHelper.sqrt_double(var6); - var2 /= var6; - var4 /= var6; - double var8 = 1.0D / var6; - if(var8 > 1.0D) { - var8 = 1.0D; - } - - var2 *= var8; - var4 *= var8; - var2 *= (double)0.1F; - var4 *= (double)0.1F; - var2 *= (double)(1.0F - this.entityCollisionReduction); - var4 *= (double)(1.0F - this.entityCollisionReduction); - var2 *= 0.5D; - var4 *= 0.5D; - if(var1 instanceof EntityMinecart) { - double var10 = (var1.motionX + this.motionX) / 2.0D; - double var12 = (var1.motionZ + this.motionZ) / 2.0D; - this.motionX = this.motionZ = 0.0D; - this.addVelocity(var10 - var2, 0.0D, var12 - var4); - var1.motionX = var1.motionZ = 0.0D; - var1.addVelocity(var10 + var2, 0.0D, var12 + var4); - } else { - this.addVelocity(-var2, 0.0D, -var4); - var1.addVelocity(var2 / 4.0D, 0.0D, var4 / 4.0D); - } - } - - } - } - - public int getSizeInventory() { - return 27; - } - - public ItemStack getStackInSlot(int var1) { - return this.cargoItems[var1]; - } - - public ItemStack decrStackSize(int var1, int var2) { - if(this.cargoItems[var1] != null) { - ItemStack var3; - if(this.cargoItems[var1].stackSize <= var2) { - var3 = this.cargoItems[var1]; - this.cargoItems[var1] = null; - return var3; - } else { - var3 = this.cargoItems[var1].splitStack(var2); - if(this.cargoItems[var1].stackSize == 0) { - this.cargoItems[var1] = null; - } - - return var3; - } - } else { - return null; - } - } - - public void setInventorySlotContents(int var1, ItemStack var2) { - this.cargoItems[var1] = var2; - if(var2 != null && var2.stackSize > this.getInventoryStackLimit()) { - var2.stackSize = this.getInventoryStackLimit(); - } - - } - - public String getInvName() { - return "Minecart"; - } - - public int getInventoryStackLimit() { - return 64; - } - - public void onInventoryChanged() { - } - - public boolean interact(EntityPlayer var1) { - var1.mountEntity(this); - return true; - } -} diff --git a/src/net/minecraft/src/EntityMonster.java b/src/net/minecraft/src/EntityMonster.java deleted file mode 100644 index 0e0fc19..0000000 --- a/src/net/minecraft/src/EntityMonster.java +++ /dev/null @@ -1,70 +0,0 @@ -package net.minecraft.src; - -public class EntityMonster extends EntityCreature { - protected int attackStrength = 2; - - public EntityMonster(World var1) { - super(var1); - this.health = 20; - } - - public void onLivingUpdate() { - float var1 = this.getEntityBrightness(1.0F); - if(var1 > 0.5F) { - this.entityAge += 2; - } - - super.onLivingUpdate(); - } - - public void onUpdate() { - super.onUpdate(); - if(this.worldObj.difficultySetting == 0) { - this.setEntityDead(); - } - - } - - protected Entity findPlayerToAttack() { - double var1 = this.worldObj.playerEntity.getDistanceSqToEntity(this); - double var3 = 16.0D; - return var1 < var3 * var3 && this.canEntityBeSeen(this.worldObj.playerEntity) ? this.worldObj.playerEntity : null; - } - - public boolean attackEntityFrom(Entity var1, int var2) { - if(super.attackEntityFrom(var1, var2)) { - if(var1 != this) { - this.playerToAttack = var1; - } - - return true; - } else { - return false; - } - } - - protected void attackEntity(Entity var1, float var2) { - if((double)var2 < 2.5D && var1.boundingBox.maxY > this.boundingBox.minY && var1.boundingBox.minY < this.boundingBox.maxY) { - this.attackTime = 20; - var1.attackEntityFrom(this, this.attackStrength); - } - - } - - protected float getBlockPathWeight(int var1, int var2, int var3) { - return 0.5F - this.worldObj.getBrightness(var1, var2, var3); - } - - public void writeEntityToNBT(NBTTagCompound var1) { - super.writeEntityToNBT(var1); - } - - public void readEntityFromNBT(NBTTagCompound var1) { - super.readEntityFromNBT(var1); - } - - public boolean getCanSpawnHere(double var1, double var3, double var5) { - int var7 = this.worldObj.getBlockLightValue(MathHelper.floor_double(var1), MathHelper.floor_double(var3), MathHelper.floor_double(var5)); - return var7 <= this.rand.nextInt(8) && super.getCanSpawnHere(var1, var3, var5); - } -} diff --git a/src/net/minecraft/src/EntityPainting.java b/src/net/minecraft/src/EntityPainting.java deleted file mode 100644 index 3090aa2..0000000 --- a/src/net/minecraft/src/EntityPainting.java +++ /dev/null @@ -1,212 +0,0 @@ -package net.minecraft.src; - -import java.util.ArrayList; -import java.util.List; - -public class EntityPainting extends Entity { - private int tickCounter; - public int direction; - private int xPosition; - private int yPosition; - private int zPosition; - public EnumArt art; - - public EntityPainting(World var1) { - super(var1); - this.tickCounter = 0; - this.direction = 0; - this.yOffset = 0.0F; - this.setSize(0.5F, 0.5F); - } - - public EntityPainting(World var1, int var2, int var3, int var4, int var5) { - this(var1); - this.xPosition = var2; - this.yPosition = var3; - this.zPosition = var4; - ArrayList var6 = new ArrayList(); - EnumArt[] var7 = EnumArt.values(); - int var8 = var7.length; - - for(int var9 = 0; var9 < var8; ++var9) { - EnumArt var10 = var7[var9]; - this.art = var10; - this.setDirection(var5); - if(this.onValidSurface()) { - var6.add(var10); - } - } - - if(var6.size() > 0) { - this.art = (EnumArt)var6.get(this.rand.nextInt(var6.size())); - } - - this.setDirection(var5); - } - - public void setDirection(int var1) { - this.direction = var1; - this.prevRotationYaw = this.rotationYaw = (float)(var1 * 90); - float var2 = (float)this.art.sizeX; - float var3 = (float)this.art.sizeY; - float var4 = (float)this.art.sizeX; - if(var1 != 0 && var1 != 2) { - var2 = 0.5F; - } else { - var4 = 0.5F; - } - - var2 /= 32.0F; - var3 /= 32.0F; - var4 /= 32.0F; - float var5 = (float)this.xPosition + 0.5F; - float var6 = (float)this.yPosition + 0.5F; - float var7 = (float)this.zPosition + 0.5F; - float var8 = 9.0F / 16.0F; - if(var1 == 0) { - var7 -= var8; - } - - if(var1 == 1) { - var5 -= var8; - } - - if(var1 == 2) { - var7 += var8; - } - - if(var1 == 3) { - var5 += var8; - } - - if(var1 == 0) { - var5 -= this.getArtSize(this.art.sizeX); - } - - if(var1 == 1) { - var7 += this.getArtSize(this.art.sizeX); - } - - if(var1 == 2) { - var5 += this.getArtSize(this.art.sizeX); - } - - if(var1 == 3) { - var7 -= this.getArtSize(this.art.sizeX); - } - - var6 += this.getArtSize(this.art.sizeY); - this.setPosition((double)var5, (double)var6, (double)var7); - float var9 = -(0.1F / 16.0F); - this.boundingBox.setBounds((double)(var5 - var2 - var9), (double)(var6 - var3 - var9), (double)(var7 - var4 - var9), (double)(var5 + var2 + var9), (double)(var6 + var3 + var9), (double)(var7 + var4 + var9)); - } - - private float getArtSize(int var1) { - return var1 == 32 ? 0.5F : (var1 == 64 ? 0.5F : 0.0F); - } - - public void onUpdate() { - if(this.tickCounter++ == 100 && !this.onValidSurface()) { - this.tickCounter = 0; - this.setEntityDead(); - this.worldObj.spawnEntityInWorld(new EntityItem(this.worldObj, this.posX, this.posY, this.posZ, new ItemStack(Item.painting))); - } - - } - - public boolean onValidSurface() { - if(this.worldObj.getCollidingBoundingBoxes(this, this.boundingBox).size() > 0) { - return false; - } else { - int var1 = this.art.sizeX / 16; - int var2 = this.art.sizeY / 16; - int var3 = this.xPosition; - int var4 = this.yPosition; - int var5 = this.zPosition; - if(this.direction == 0) { - var3 = MathHelper.floor_double(this.posX - (double)((float)this.art.sizeX / 32.0F)); - } - - if(this.direction == 1) { - var5 = MathHelper.floor_double(this.posZ - (double)((float)this.art.sizeX / 32.0F)); - } - - if(this.direction == 2) { - var3 = MathHelper.floor_double(this.posX - (double)((float)this.art.sizeX / 32.0F)); - } - - if(this.direction == 3) { - var5 = MathHelper.floor_double(this.posZ - (double)((float)this.art.sizeX / 32.0F)); - } - - var4 = MathHelper.floor_double(this.posY - (double)((float)this.art.sizeY / 32.0F)); - - int var7; - for(int var6 = 0; var6 < var1; ++var6) { - for(var7 = 0; var7 < var2; ++var7) { - Material var8; - if(this.direction != 0 && this.direction != 2) { - var8 = this.worldObj.getBlockMaterial(this.xPosition, var4 + var7, var5 + var6); - } else { - var8 = this.worldObj.getBlockMaterial(var3 + var6, var4 + var7, this.zPosition); - } - - if(!var8.isSolid()) { - return false; - } - } - } - - List var9 = this.worldObj.getEntitiesWithinAABBExcludingEntity(this, this.boundingBox); - - for(var7 = 0; var7 < var9.size(); ++var7) { - if(var9.get(var7) instanceof EntityPainting) { - return false; - } - } - - return true; - } - } - - public boolean canBeCollidedWith() { - return true; - } - - public boolean attackEntityFrom(Entity var1, int var2) { - this.setEntityDead(); - this.worldObj.spawnEntityInWorld(new EntityItem(this.worldObj, this.posX, this.posY, this.posZ, new ItemStack(Item.painting))); - return true; - } - - public void writeEntityToNBT(NBTTagCompound var1) { - var1.setByte("Dir", (byte)this.direction); - var1.setString("Motive", this.art.title); - var1.setInteger("TileX", this.xPosition); - var1.setInteger("TileY", this.yPosition); - var1.setInteger("TileZ", this.zPosition); - } - - public void readEntityFromNBT(NBTTagCompound var1) { - this.direction = var1.getByte("Dir"); - this.xPosition = var1.getInteger("TileX"); - this.yPosition = var1.getInteger("TileY"); - this.zPosition = var1.getInteger("TileZ"); - String var2 = var1.getString("Motive"); - EnumArt[] var3 = EnumArt.values(); - int var4 = var3.length; - - for(int var5 = 0; var5 < var4; ++var5) { - EnumArt var6 = var3[var5]; - if(var6.title.equals(var2)) { - this.art = var6; - } - } - - if(this.art == null) { - this.art = EnumArt.Kebab; - } - - this.setDirection(this.direction); - } -} diff --git a/src/net/minecraft/src/EntityPickupFX.java b/src/net/minecraft/src/EntityPickupFX.java deleted file mode 100644 index 7faaec3..0000000 --- a/src/net/minecraft/src/EntityPickupFX.java +++ /dev/null @@ -1,54 +0,0 @@ -package net.minecraft.src; - -import org.lwjgl.opengl.GL11; - -public class EntityPickupFX extends EntityFX { - private Entity entityToPickUp; - private EntityLiving entityPickingUp; - private int age = 0; - private int maxAge = 0; - private float yOffs; - - public EntityPickupFX(World var1, Entity var2, EntityLiving var3, float var4) { - super(var1, var2.posX, var2.posY, var2.posZ, var2.motionX, var2.motionY, var2.motionZ); - this.entityToPickUp = var2; - this.entityPickingUp = var3; - this.maxAge = 3; - this.yOffs = var4; - } - - public void renderParticle(Tessellator var1, float var2, float var3, float var4, float var5, float var6, float var7) { - float var8 = ((float)this.age + var2) / (float)this.maxAge; - var8 *= var8; - double var9 = this.entityToPickUp.posX; - double var11 = this.entityToPickUp.posY; - double var13 = this.entityToPickUp.posZ; - double var15 = this.entityPickingUp.lastTickPosX + (this.entityPickingUp.posX - this.entityPickingUp.lastTickPosX) * (double)var2; - double var17 = this.entityPickingUp.lastTickPosY + (this.entityPickingUp.posY - this.entityPickingUp.lastTickPosY) * (double)var2 + (double)this.yOffs; - double var19 = this.entityPickingUp.lastTickPosZ + (this.entityPickingUp.posZ - this.entityPickingUp.lastTickPosZ) * (double)var2; - double var21 = var9 + (var15 - var9) * (double)var8; - double var23 = var11 + (var17 - var11) * (double)var8; - double var25 = var13 + (var19 - var13) * (double)var8; - int var27 = MathHelper.floor_double(var21); - int var28 = MathHelper.floor_double(var23 + (double)(this.yOffset / 2.0F)); - int var29 = MathHelper.floor_double(var25); - float var30 = this.worldObj.getBrightness(var27, var28, var29); - var21 -= interpPosX; - var23 -= interpPosY; - var25 -= interpPosZ; - GL11.glColor4f(var30, var30, var30, 1.0F); - RenderManager.instance.renderEntityWithPosYaw(this.entityToPickUp, (double)((float)var21), (double)((float)var23), (double)((float)var25), this.entityToPickUp.rotationYaw, var2); - } - - public void onUpdate() { - ++this.age; - if(this.age == this.maxAge) { - this.setEntityDead(); - } - - } - - public int getFXLayer() { - return 2; - } -} diff --git a/src/net/minecraft/src/EntityPig.java b/src/net/minecraft/src/EntityPig.java deleted file mode 100644 index 805c3fd..0000000 --- a/src/net/minecraft/src/EntityPig.java +++ /dev/null @@ -1,47 +0,0 @@ -package net.minecraft.src; - -public class EntityPig extends EntityAnimal { - public boolean saddled = false; - - public EntityPig(World var1) { - super(var1); - this.texture = "/mob/pig.png"; - this.setSize(0.9F, 0.9F); - this.saddled = false; - } - - public void writeEntityToNBT(NBTTagCompound var1) { - super.writeEntityToNBT(var1); - var1.setBoolean("Saddle", this.saddled); - } - - public void readEntityFromNBT(NBTTagCompound var1) { - super.readEntityFromNBT(var1); - this.saddled = var1.getBoolean("Saddle"); - } - - protected String getLivingSound() { - return "mob.pig"; - } - - protected String getHurtSound() { - return "mob.pig"; - } - - protected String getDeathSound() { - return "mob.pigdeath"; - } - - public boolean interact(EntityPlayer var1) { - if(this.saddled) { - var1.mountEntity(this); - return true; - } else { - return false; - } - } - - protected int getDropItemId() { - return Item.porkRaw.shiftedIndex; - } -} diff --git a/src/net/minecraft/src/EntityPlayer.java b/src/net/minecraft/src/EntityPlayer.java deleted file mode 100644 index b7db196..0000000 --- a/src/net/minecraft/src/EntityPlayer.java +++ /dev/null @@ -1,219 +0,0 @@ -package net.minecraft.src; - -import java.util.List; - -public class EntityPlayer extends EntityLiving { - public InventoryPlayer inventory = new InventoryPlayer(this); - public byte unusedMiningCooldown = 0; - public int score = 0; - public float prevCameraYaw; - public float cameraYaw; - protected String username; - private int damageRemainder = 0; - - public EntityPlayer(World var1) { - super(var1); - this.setPositionAndRotation((double)var1.spawnX + 0.5D, (double)var1.spawnY, (double)var1.spawnZ + 0.5D, 0.0F, 0.0F); - this.yOffset = 1.62F; - this.health = 20; - this.entityType = "humanoid"; - this.unusedRotation = 180.0F; - this.fireResistance = 20; - this.texture = "/char.png"; - } - - public void updateRidden() { - super.updateRidden(); - this.prevCameraYaw = this.cameraYaw; - this.cameraYaw = 0.0F; - } - - public void preparePlayerToSpawn() { - this.yOffset = 1.62F; - this.setSize(0.6F, 1.8F); - super.preparePlayerToSpawn(); - if(this.worldObj != null) { - this.worldObj.playerEntity = this; - } - - this.health = 20; - this.deathTime = 0; - } - - public void onLivingUpdate() { - this.worldObj.playMusic(this.posX, this.posY, this.posZ, "calm", 0.0F); - if(this.worldObj.difficultySetting == 0 && this.health < 20 && this.ticksExisted % 20 * 4 == 0) { - this.heal(1); - } - - this.inventory.decrementAnimations(); - this.prevCameraYaw = this.cameraYaw; - super.onLivingUpdate(); - float var1 = MathHelper.sqrt_double(this.motionX * this.motionX + this.motionZ * this.motionZ); - float var2 = (float)Math.atan(-this.motionY * (double)0.2F) * 15.0F; - if(var1 > 0.1F) { - var1 = 0.1F; - } - - if(!this.onGround || this.health <= 0) { - var1 = 0.0F; - } - - if(this.onGround || this.health <= 0) { - var2 = 0.0F; - } - - this.cameraYaw += (var1 - this.cameraYaw) * 0.4F; - this.cameraPitch += (var2 - this.cameraPitch) * 0.8F; - if(this.health > 0) { - List var3 = this.worldObj.getEntitiesWithinAABBExcludingEntity(this, this.boundingBox.expand(1.0D, 0.0D, 1.0D)); - if(var3 != null) { - for(int var4 = 0; var4 < var3.size(); ++var4) { - this.collideWithPlayer((Entity)var3.get(var4)); - } - } - } - - } - - private void collideWithPlayer(Entity var1) { - var1.onCollideWithPlayer(this); - } - - public int getScore() { - return this.score; - } - - public void onDeath(Entity var1) { - this.setSize(0.2F, 0.2F); - this.setPosition(this.posX, this.posY, this.posZ); - this.motionY = (double)0.1F; - if(this.username.equals("Notch")) { - this.dropPlayerItemWithRandomChoice(new ItemStack(Item.appleRed, 1), true); - } - - this.inventory.dropAllItems(); - if(var1 != null) { - this.motionX = (double)(-MathHelper.cos((this.attackedAtYaw + this.rotationYaw) * (float)Math.PI / 180.0F) * 0.1F); - this.motionZ = (double)(-MathHelper.sin((this.attackedAtYaw + this.rotationYaw) * (float)Math.PI / 180.0F) * 0.1F); - } else { - this.motionX = this.motionZ = 0.0D; - } - - this.yOffset = 0.1F; - } - - public void addToPlayerScore(Entity var1, int var2) { - this.score += var2; - } - - public void dropPlayerItem(ItemStack var1) { - this.dropPlayerItemWithRandomChoice(var1, false); - } - - public void dropPlayerItemWithRandomChoice(ItemStack var1, boolean var2) { - if(var1 != null) { - EntityItem var3 = new EntityItem(this.worldObj, this.posX, this.posY - (double)0.3F, this.posZ, var1); - var3.delayBeforeCanPickup = 40; - float var4 = 0.1F; - float var5; - if(var2) { - var5 = this.rand.nextFloat() * 0.5F; - float var6 = this.rand.nextFloat() * (float)Math.PI * 2.0F; - var3.motionX = (double)(-MathHelper.sin(var6) * var5); - var3.motionZ = (double)(MathHelper.cos(var6) * var5); - var3.motionY = (double)0.2F; - } else { - var4 = 0.3F; - var3.motionX = (double)(-MathHelper.sin(this.rotationYaw / 180.0F * (float)Math.PI) * MathHelper.cos(this.rotationPitch / 180.0F * (float)Math.PI) * var4); - var3.motionZ = (double)(MathHelper.cos(this.rotationYaw / 180.0F * (float)Math.PI) * MathHelper.cos(this.rotationPitch / 180.0F * (float)Math.PI) * var4); - var3.motionY = (double)(-MathHelper.sin(this.rotationPitch / 180.0F * (float)Math.PI) * var4 + 0.1F); - var4 = 0.02F; - var5 = this.rand.nextFloat() * (float)Math.PI * 2.0F; - var4 *= this.rand.nextFloat(); - var3.motionX += Math.cos((double)var5) * (double)var4; - var3.motionY += (double)((this.rand.nextFloat() - this.rand.nextFloat()) * 0.1F); - var3.motionZ += Math.sin((double)var5) * (double)var4; - } - - this.worldObj.spawnEntityInWorld(var3); - } - } - - public float getCurrentPlayerStrVsBlock(Block var1) { - float var2 = this.inventory.getStrVsBlock(var1); - if(this.isInsideOfMaterial(Material.water)) { - var2 /= 5.0F; - } - - if(!this.onGround) { - var2 /= 5.0F; - } - - return var2; - } - - public boolean canHarvestBlock(Block var1) { - return this.inventory.canHarvestBlock(var1); - } - - public void readEntityFromNBT(NBTTagCompound var1) { - super.readEntityFromNBT(var1); - } - - public void writeEntityToNBT(NBTTagCompound var1) { - super.writeEntityToNBT(var1); - } - - public void displayGUIChest(IInventory var1) { - } - - public void displayWorkbenchGUI() { - } - - public void onItemPickup(Entity var1) { - } - - protected float getEyeHeight() { - return 0.12F; - } - - public boolean attackEntityFrom(Entity var1, int var2) { - this.entityAge = 0; - if(this.health <= 0) { - return false; - } else if((float)this.heartsLife > (float)this.heartsHalvesLife / 2.0F) { - return false; - } else { - if(var1 instanceof EntityMonster || var1 instanceof EntityArrow) { - if(this.worldObj.difficultySetting == 0) { - var2 = 0; - } - - if(this.worldObj.difficultySetting == 1) { - var2 = var2 / 3 + 1; - } - - if(this.worldObj.difficultySetting == 3) { - var2 = var2 * 3 / 2; - } - } - - int var3 = 25 - this.inventory.getTotalArmorValue(); - int var4 = var2 * var3 + this.damageRemainder; - this.inventory.damageArmor(var2); - var2 = var4 / 25; - this.damageRemainder = var4 % 25; - return var2 == 0 ? false : super.attackEntityFrom(var1, var2); - } - } - - public void displayGUIFurnace(TileEntityFurnace var1) { - } - - public void displayGUIEditSign(TileEntitySign var1) { - } - - public void interactWithEntity(Entity var1) { - } -} diff --git a/src/net/minecraft/src/EntityPlayerSP.java b/src/net/minecraft/src/EntityPlayerSP.java deleted file mode 100644 index 7b791e1..0000000 --- a/src/net/minecraft/src/EntityPlayerSP.java +++ /dev/null @@ -1,118 +0,0 @@ -package net.minecraft.src; - -public class EntityPlayerSP extends EntityPlayer { - public MovementInput movementInput; - private Minecraft mc; - - public EntityPlayerSP(Minecraft var1, World var2, Session var3) { - super(var2); - this.mc = var1; - if(var2 != null) { - if(var2.playerEntity != null) { - var2.setEntityDead(var2.playerEntity); - } - - var2.playerEntity = this; - } - - if(var3 != null && var3.username != null && var3.username.length() > 0) { - this.skinUrl = "http://www.minecraft.net/skin/" + var3.username + ".png"; - } - - this.username = var3.username; - } - - public void updatePlayerActionState() { - this.moveStrafing = this.movementInput.moveStrafe; - this.moveForward = this.movementInput.moveForward; - this.isJumping = this.movementInput.jump; - } - - public void onLivingUpdate() { - this.movementInput.updatePlayerMoveState(this); - super.onLivingUpdate(); - } - - public void resetPlayerKeyState() { - this.movementInput.resetKeyState(); - } - - public void handleKeyPress(int var1, boolean var2) { - this.movementInput.checkKeyForMovementInput(var1, var2); - } - - public void writeEntityToNBT(NBTTagCompound var1) { - super.writeEntityToNBT(var1); - var1.setInteger("Score", this.score); - var1.setTag("Inventory", this.inventory.writeToNBT(new NBTTagList())); - } - - public void readEntityFromNBT(NBTTagCompound var1) { - super.readEntityFromNBT(var1); - this.score = var1.getInteger("Score"); - NBTTagList var2 = var1.getTagList("Inventory"); - this.inventory.readFromNBT(var2); - } - - public void displayGUIChest(IInventory var1) { - this.mc.displayGuiScreen(new GuiChest(this.inventory, var1)); - } - - public void displayGUIEditSign(TileEntitySign var1) { - this.mc.displayGuiScreen(new GuiEditSign(var1)); - } - - public void displayWorkbenchGUI() { - this.mc.displayGuiScreen(new GuiCrafting(this.inventory)); - } - - public void displayGUIFurnace(TileEntityFurnace var1) { - this.mc.displayGuiScreen(new GuiFurnace(this.inventory, var1)); - } - - public ItemStack getCurrentEquippedItem() { - return this.inventory.getCurrentItem(); - } - - public void displayGUIInventory() { - this.inventory.setInventorySlotContents(this.inventory.currentItem, (ItemStack)null); - } - - public void attackEntity(Entity var1) { - int var2 = this.inventory.getDamageVsEntity(var1); - if(var2 > 0) { - var1.attackEntityFrom(this, var2); - ItemStack var3 = this.getCurrentEquippedItem(); - if(var3 != null && var1 instanceof EntityLiving) { - var3.hitEntity((EntityLiving)var1); - if(var3.stackSize <= 0) { - var3.onItemDestroyedByUse(this); - this.displayGUIInventory(); - } - } - } - - } - - public void onItemPickup(Entity var1) { - this.mc.effectRenderer.addEffect(new EntityPickupFX(this.mc.theWorld, var1, this, -0.5F)); - } - - public int getPlayerArmorValue() { - return this.inventory.getTotalArmorValue(); - } - - public void interactWithEntity(Entity var1) { - if(!var1.interact(this)) { - ItemStack var2 = this.getCurrentEquippedItem(); - if(var2 != null && var1 instanceof EntityLiving) { - var2.useItemOnEntity((EntityLiving)var1); - if(var2.stackSize <= 0) { - var2.onItemDestroyedByUse(this); - this.displayGUIInventory(); - } - } - - } - } -} diff --git a/src/net/minecraft/src/EntityRainFX.java b/src/net/minecraft/src/EntityRainFX.java deleted file mode 100644 index 1b3c2bc..0000000 --- a/src/net/minecraft/src/EntityRainFX.java +++ /dev/null @@ -1,53 +0,0 @@ -package net.minecraft.src; - -public class EntityRainFX extends EntityFX { - public EntityRainFX(World var1, double var2, double var4, double var6) { - super(var1, var2, var4, var6, 0.0D, 0.0D, 0.0D); - this.motionX *= (double)0.3F; - this.motionY = (double)((float)Math.random() * 0.2F + 0.1F); - this.motionZ *= (double)0.3F; - this.particleRed = 1.0F; - this.particleGreen = 1.0F; - this.particleBlue = 1.0F; - this.particleTextureIndex = 16; - this.setSize(0.01F, 0.01F); - this.particleGravity = 0.06F; - this.particleMaxAge = (int)(8.0D / (Math.random() * 0.8D + 0.2D)); - } - - public void renderParticle(Tessellator var1, float var2, float var3, float var4, float var5, float var6, float var7) { - super.renderParticle(var1, var2, var3, var4, var5, var6, var7); - } - - public void onUpdate() { - this.prevPosX = this.posX; - this.prevPosY = this.posY; - this.prevPosZ = this.posZ; - this.motionY -= (double)this.particleGravity; - this.moveEntity(this.motionX, this.motionY, this.motionZ); - this.motionX *= (double)0.98F; - this.motionY *= (double)0.98F; - this.motionZ *= (double)0.98F; - if(this.particleMaxAge-- <= 0) { - this.setEntityDead(); - } - - if(this.onGround) { - if(Math.random() < 0.5D) { - this.setEntityDead(); - } - - this.motionX *= (double)0.7F; - this.motionZ *= (double)0.7F; - } - - Material var1 = this.worldObj.getBlockMaterial(MathHelper.floor_double(this.posX), MathHelper.floor_double(this.posY), MathHelper.floor_double(this.posZ)); - if(var1.getIsLiquid() || var1.isSolid()) { - double var2 = (double)((float)(MathHelper.floor_double(this.posY) + 1) - BlockFluid.getPercentAir(this.worldObj.getBlockMetadata(MathHelper.floor_double(this.posX), MathHelper.floor_double(this.posY), MathHelper.floor_double(this.posZ)))); - if(this.posY < var2) { - this.setEntityDead(); - } - } - - } -} diff --git a/src/net/minecraft/src/EntitySheep.java b/src/net/minecraft/src/EntitySheep.java deleted file mode 100644 index 33a2bcd..0000000 --- a/src/net/minecraft/src/EntitySheep.java +++ /dev/null @@ -1,49 +0,0 @@ -package net.minecraft.src; - -public class EntitySheep extends EntityAnimal { - public boolean sheared = false; - - public EntitySheep(World var1) { - super(var1); - this.texture = "/mob/sheep.png"; - this.setSize(0.9F, 1.3F); - } - - public boolean attackEntityFrom(Entity var1, int var2) { - if(!this.sheared && var1 instanceof EntityLiving) { - this.sheared = true; - int var3 = 1 + this.rand.nextInt(3); - - for(int var4 = 0; var4 < var3; ++var4) { - EntityItem var5 = this.entityDropItem(Block.cloth.blockID, 1, 1.0F); - var5.motionY += (double)(this.rand.nextFloat() * 0.05F); - var5.motionX += (double)((this.rand.nextFloat() - this.rand.nextFloat()) * 0.1F); - var5.motionZ += (double)((this.rand.nextFloat() - this.rand.nextFloat()) * 0.1F); - } - } - - return super.attackEntityFrom(var1, var2); - } - - public void writeEntityToNBT(NBTTagCompound var1) { - super.writeEntityToNBT(var1); - var1.setBoolean("Sheared", this.sheared); - } - - public void readEntityFromNBT(NBTTagCompound var1) { - super.readEntityFromNBT(var1); - this.sheared = var1.getBoolean("Sheared"); - } - - protected String getLivingSound() { - return "mob.sheep"; - } - - protected String getHurtSound() { - return "mob.sheep"; - } - - protected String getDeathSound() { - return "mob.sheep"; - } -} diff --git a/src/net/minecraft/src/EntitySkeleton.java b/src/net/minecraft/src/EntitySkeleton.java deleted file mode 100644 index 3508baf..0000000 --- a/src/net/minecraft/src/EntitySkeleton.java +++ /dev/null @@ -1,52 +0,0 @@ -package net.minecraft.src; - -public class EntitySkeleton extends EntityMonster { - public EntitySkeleton(World var1) { - super(var1); - this.texture = "/mob/skeleton.png"; - } - - public void onLivingUpdate() { - if(this.worldObj.isDaytime()) { - float var1 = this.getEntityBrightness(1.0F); - if(var1 > 0.5F && this.worldObj.canBlockSeeTheSky(MathHelper.floor_double(this.posX), MathHelper.floor_double(this.posY), MathHelper.floor_double(this.posZ)) && this.rand.nextFloat() * 30.0F < (var1 - 0.4F) * 2.0F) { - this.fire = 300; - } - } - - super.onLivingUpdate(); - } - - protected void attackEntity(Entity var1, float var2) { - if(var2 < 10.0F) { - double var3 = var1.posX - this.posX; - double var5 = var1.posZ - this.posZ; - if(this.attackTime == 0) { - EntityArrow var7 = new EntityArrow(this.worldObj, this); - var7.posY += (double)1.4F; - double var8 = var1.posY - (double)0.2F - var7.posY; - float var10 = MathHelper.sqrt_double(var3 * var3 + var5 * var5) * 0.2F; - this.worldObj.playSoundAtEntity(this, "random.bow", 1.0F, 1.0F / (this.rand.nextFloat() * 0.4F + 0.8F)); - this.worldObj.spawnEntityInWorld(var7); - var7.setArrowHeading(var3, var8 + (double)var10, var5, 0.6F, 12.0F); - this.attackTime = 30; - } - - this.rotationYaw = (float)(Math.atan2(var5, var3) * 180.0D / (double)((float)Math.PI)) - 90.0F; - this.hasAttacked = true; - } - - } - - public void writeEntityToNBT(NBTTagCompound var1) { - super.writeEntityToNBT(var1); - } - - public void readEntityFromNBT(NBTTagCompound var1) { - super.readEntityFromNBT(var1); - } - - protected int getDropItemId() { - return Item.arrow.shiftedIndex; - } -} diff --git a/src/net/minecraft/src/EntitySmokeFX.java b/src/net/minecraft/src/EntitySmokeFX.java deleted file mode 100644 index 269a249..0000000 --- a/src/net/minecraft/src/EntitySmokeFX.java +++ /dev/null @@ -1,63 +0,0 @@ -package net.minecraft.src; - -public class EntitySmokeFX extends EntityFX { - float smokeParticleScale; - - public EntitySmokeFX(World var1, double var2, double var4, double var6) { - this(var1, var2, var4, var6, 1.0F); - } - - public EntitySmokeFX(World var1, double var2, double var4, double var6, float var8) { - super(var1, var2, var4, var6, 0.0D, 0.0D, 0.0D); - this.motionX *= (double)0.1F; - this.motionY *= (double)0.1F; - this.motionZ *= (double)0.1F; - this.particleRed = this.particleGreen = this.particleBlue = (float)(Math.random() * (double)0.3F); - this.particleScale *= 12.0F / 16.0F; - this.particleScale *= var8; - this.smokeParticleScale = this.particleScale; - this.particleMaxAge = (int)(8.0D / (Math.random() * 0.8D + 0.2D)); - this.particleMaxAge = (int)((float)this.particleMaxAge * var8); - this.noClip = false; - } - - public void renderParticle(Tessellator var1, float var2, float var3, float var4, float var5, float var6, float var7) { - float var8 = ((float)this.particleAge + var2) / (float)this.particleMaxAge * 32.0F; - if(var8 < 0.0F) { - var8 = 0.0F; - } - - if(var8 > 1.0F) { - var8 = 1.0F; - } - - this.particleScale = this.smokeParticleScale * var8; - super.renderParticle(var1, var2, var3, var4, var5, var6, var7); - } - - public void onUpdate() { - this.prevPosX = this.posX; - this.prevPosY = this.posY; - this.prevPosZ = this.posZ; - if(this.particleAge++ >= this.particleMaxAge) { - this.setEntityDead(); - } - - this.particleTextureIndex = 7 - this.particleAge * 8 / this.particleMaxAge; - this.motionY += 0.004D; - this.moveEntity(this.motionX, this.motionY, this.motionZ); - if(this.posY == this.prevPosY) { - this.motionX *= 1.1D; - this.motionZ *= 1.1D; - } - - this.motionX *= (double)0.96F; - this.motionY *= (double)0.96F; - this.motionZ *= (double)0.96F; - if(this.onGround) { - this.motionX *= (double)0.7F; - this.motionZ *= (double)0.7F; - } - - } -} diff --git a/src/net/minecraft/src/EntitySorter.java b/src/net/minecraft/src/EntitySorter.java deleted file mode 100644 index f7f866f..0000000 --- a/src/net/minecraft/src/EntitySorter.java +++ /dev/null @@ -1,19 +0,0 @@ -package net.minecraft.src; - -import java.util.Comparator; - -public class EntitySorter implements Comparator { - private Entity comparedEntity; - - public EntitySorter(Entity var1) { - this.comparedEntity = var1; - } - - public int a(WorldRenderer var1, WorldRenderer var2) { - return var1.distanceToEntitySquared(this.comparedEntity) < var2.distanceToEntitySquared(this.comparedEntity) ? -1 : 1; - } - - public int compare(Object var1, Object var2) { - return this.a((WorldRenderer)var1, (WorldRenderer)var2); - } -} diff --git a/src/net/minecraft/src/EntitySpider.java b/src/net/minecraft/src/EntitySpider.java deleted file mode 100644 index 98b540f..0000000 --- a/src/net/minecraft/src/EntitySpider.java +++ /dev/null @@ -1,56 +0,0 @@ -package net.minecraft.src; - -public class EntitySpider extends EntityMonster { - public EntitySpider(World var1) { - super(var1); - this.texture = "/mob/spider.png"; - this.setSize(1.4F, 0.9F); - this.moveSpeed = 0.8F; - } - - protected Entity findPlayerToAttack() { - float var1 = this.getEntityBrightness(1.0F); - if(var1 < 0.5F) { - double var2 = this.worldObj.playerEntity.getDistanceSqToEntity(this); - double var4 = 16.0D; - if(var2 < var4 * var4) { - return this.worldObj.playerEntity; - } - } - - return null; - } - - protected void attackEntity(Entity var1, float var2) { - float var3 = this.getEntityBrightness(1.0F); - if(var3 > 0.5F && this.rand.nextInt(100) == 0) { - this.playerToAttack = null; - } else { - if(var2 > 2.0F && var2 < 6.0F && this.rand.nextInt(10) == 0) { - if(this.onGround) { - double var4 = var1.posX - this.posX; - double var6 = var1.posZ - this.posZ; - float var8 = MathHelper.sqrt_double(var4 * var4 + var6 * var6); - this.motionX = var4 / (double)var8 * 0.5D * (double)0.8F + this.motionX * (double)0.2F; - this.motionZ = var6 / (double)var8 * 0.5D * (double)0.8F + this.motionZ * (double)0.2F; - this.motionY = (double)0.4F; - } - } else { - super.attackEntity(var1, var2); - } - - } - } - - public void writeEntityToNBT(NBTTagCompound var1) { - super.writeEntityToNBT(var1); - } - - public void readEntityFromNBT(NBTTagCompound var1) { - super.readEntityFromNBT(var1); - } - - protected int getDropItemId() { - return Item.silk.shiftedIndex; - } -} diff --git a/src/net/minecraft/src/EntitySplashFX.java b/src/net/minecraft/src/EntitySplashFX.java deleted file mode 100644 index 1375ad2..0000000 --- a/src/net/minecraft/src/EntitySplashFX.java +++ /dev/null @@ -1,15 +0,0 @@ -package net.minecraft.src; - -public class EntitySplashFX extends EntityRainFX { - public EntitySplashFX(World var1, double var2, double var4, double var6, double var8, double var10, double var12) { - super(var1, var2, var4, var6); - this.particleGravity = 0.04F; - ++this.particleTextureIndex; - if(var10 == 0.0D && (var8 != 0.0D || var12 != 0.0D)) { - this.motionX = var8; - this.motionY = var10 + 0.1D; - this.motionZ = var12; - } - - } -} diff --git a/src/net/minecraft/src/EntityTNTPrimed.java b/src/net/minecraft/src/EntityTNTPrimed.java deleted file mode 100644 index 9e59e00..0000000 --- a/src/net/minecraft/src/EntityTNTPrimed.java +++ /dev/null @@ -1,68 +0,0 @@ -package net.minecraft.src; - -public class EntityTNTPrimed extends Entity { - public int fuse; - - public EntityTNTPrimed(World var1) { - super(var1); - this.fuse = 0; - this.preventEntitySpawning = true; - this.setSize(0.98F, 0.98F); - this.yOffset = this.height / 2.0F; - } - - public EntityTNTPrimed(World var1, float var2, float var3, float var4) { - this(var1); - this.setPosition((double)var2, (double)var3, (double)var4); - float var5 = (float)(Math.random() * (double)((float)Math.PI) * 2.0D); - this.motionX = (double)(-MathHelper.sin(var5 * (float)Math.PI / 180.0F) * 0.02F); - this.motionY = (double)0.2F; - this.motionZ = (double)(-MathHelper.cos(var5 * (float)Math.PI / 180.0F) * 0.02F); - this.canTriggerWalking = false; - this.fuse = 80; - this.prevPosX = (double)var2; - this.prevPosY = (double)var3; - this.prevPosZ = (double)var4; - } - - public boolean canBeCollidedWith() { - return !this.isDead; - } - - public void onUpdate() { - this.prevPosX = this.posX; - this.prevPosY = this.posY; - this.prevPosZ = this.posZ; - this.motionY -= (double)0.04F; - this.moveEntity(this.motionX, this.motionY, this.motionZ); - this.motionX *= (double)0.98F; - this.motionY *= (double)0.98F; - this.motionZ *= (double)0.98F; - if(this.onGround) { - this.motionX *= (double)0.7F; - this.motionZ *= (double)0.7F; - this.motionY *= -0.5D; - } - - if(this.fuse-- <= 0) { - this.setEntityDead(); - this.createExplosion(); - } else { - this.worldObj.spawnParticle("smoke", this.posX, this.posY + 0.5D, this.posZ, 0.0D, 0.0D, 0.0D); - } - - } - - private void createExplosion() { - float var1 = 4.0F; - this.worldObj.createExplosion((Entity)null, this.posX, this.posY, this.posZ, var1); - } - - protected void writeEntityToNBT(NBTTagCompound var1) { - var1.setByte("Fuse", (byte)this.fuse); - } - - protected void readEntityFromNBT(NBTTagCompound var1) { - this.fuse = var1.getByte("Fuse"); - } -} diff --git a/src/net/minecraft/src/EntityZombie.java b/src/net/minecraft/src/EntityZombie.java deleted file mode 100644 index 5e30538..0000000 --- a/src/net/minecraft/src/EntityZombie.java +++ /dev/null @@ -1,25 +0,0 @@ -package net.minecraft.src; - -public class EntityZombie extends EntityMonster { - public EntityZombie(World var1) { - super(var1); - this.texture = "/mob/zombie.png"; - this.moveSpeed = 0.5F; - this.attackStrength = 5; - } - - public void onLivingUpdate() { - if(this.worldObj.isDaytime()) { - float var1 = this.getEntityBrightness(1.0F); - if(var1 > 0.5F && this.worldObj.canBlockSeeTheSky(MathHelper.floor_double(this.posX), MathHelper.floor_double(this.posY), MathHelper.floor_double(this.posZ)) && this.rand.nextFloat() * 30.0F < (var1 - 0.4F) * 2.0F) { - this.fire = 300; - } - } - - super.onLivingUpdate(); - } - - protected int getDropItemId() { - return Item.feather.shiftedIndex; - } -} diff --git a/src/net/minecraft/src/EnumArt.java b/src/net/minecraft/src/EnumArt.java deleted file mode 100644 index daa40fa..0000000 --- a/src/net/minecraft/src/EnumArt.java +++ /dev/null @@ -1,37 +0,0 @@ -package net.minecraft.src; - -public enum EnumArt { - Kebab("Kebab", 16, 16, 0, 0), - Aztec("Aztec", 16, 16, 16, 0), - Alban("Alban", 16, 16, 32, 0), - Aztec2("Aztec2", 16, 16, 48, 0), - Bomb("Bomb", 16, 16, 64, 0), - Plant("Plant", 16, 16, 80, 0), - Wasteland("Wasteland", 16, 16, 96, 0), - Pool("Pool", 32, 16, 0, 32), - Courbet("Courbet", 32, 16, 32, 32), - Sea("Sea", 32, 16, 64, 32), - Sunset("Sunset", 32, 16, 96, 32), - Wanderer("Wanderer", 16, 32, 0, 64), - Match("Match", 32, 32, 0, 128), - Bust("Bust", 32, 32, 32, 128), - Stage("Stage", 32, 32, 64, 128), - Void("Void", 32, 32, 96, 128), - SkullAndRoses("SkullAndRoses", 32, 32, 128, 128), - Fighters("Fighters", 64, 32, 0, 96), - Pointer("Pointer", 64, 64, 0, 192); - - public final String title; - public final int sizeX; - public final int sizeY; - public final int offsetX; - public final int offsetY; - - private EnumArt(String var3, int var4, int var5, int var6, int var7) { - this.title = var3; - this.sizeX = var4; - this.sizeY = var5; - this.offsetX = var6; - this.offsetY = var7; - } -} diff --git a/src/net/minecraft/src/EnumOS.java b/src/net/minecraft/src/EnumOS.java deleted file mode 100644 index d8447c5..0000000 --- a/src/net/minecraft/src/EnumOS.java +++ /dev/null @@ -1,9 +0,0 @@ -package net.minecraft.src; - -enum EnumOS { - linux, - solaris, - windows, - macos, - unknown; -} diff --git a/src/net/minecraft/src/EnumOSIsom.java b/src/net/minecraft/src/EnumOSIsom.java deleted file mode 100644 index 787fa2a..0000000 --- a/src/net/minecraft/src/EnumOSIsom.java +++ /dev/null @@ -1,9 +0,0 @@ -package net.minecraft.src; - -enum EnumOSIsom { - linux, - solaris, - windows, - macos, - unknown; -} diff --git a/src/net/minecraft/src/EnumSkyBlock.java b/src/net/minecraft/src/EnumSkyBlock.java deleted file mode 100644 index 92da84b..0000000 --- a/src/net/minecraft/src/EnumSkyBlock.java +++ /dev/null @@ -1,12 +0,0 @@ -package net.minecraft.src; - -public enum EnumSkyBlock { - Sky(15), - Block(0); - - public final int defaultLightValue; - - private EnumSkyBlock(int var3) { - this.defaultLightValue = var3; - } -} diff --git a/src/net/minecraft/src/Explosion.java b/src/net/minecraft/src/Explosion.java deleted file mode 100644 index 34001ea..0000000 --- a/src/net/minecraft/src/Explosion.java +++ /dev/null @@ -1,130 +0,0 @@ -package net.minecraft.src; - -import java.util.ArrayList; -import java.util.HashSet; -import java.util.List; - -public class Explosion { - public void doExplosion(World var1, Entity var2, double var3, double var5, double var7, float var9) { - var1.playSoundEffect(var3, var5, var7, "random.explode", 4.0F, (1.0F + (var1.rand.nextFloat() - var1.rand.nextFloat()) * 0.2F) * 0.7F); - HashSet var10 = new HashSet(); - float var11 = var9; - byte var12 = 16; - - int var13; - int var14; - int var15; - double var25; - double var27; - double var29; - for(var13 = 0; var13 < var12; ++var13) { - for(var14 = 0; var14 < var12; ++var14) { - for(var15 = 0; var15 < var12; ++var15) { - if(var13 == 0 || var13 == var12 - 1 || var14 == 0 || var14 == var12 - 1 || var15 == 0 || var15 == var12 - 1) { - double var16 = (double)((float)var13 / ((float)var12 - 1.0F) * 2.0F - 1.0F); - double var18 = (double)((float)var14 / ((float)var12 - 1.0F) * 2.0F - 1.0F); - double var20 = (double)((float)var15 / ((float)var12 - 1.0F) * 2.0F - 1.0F); - double var22 = Math.sqrt(var16 * var16 + var18 * var18 + var20 * var20); - var16 /= var22; - var18 /= var22; - var20 /= var22; - float var24 = var9 * (0.7F + var1.rand.nextFloat() * 0.6F); - var25 = var3; - var27 = var5; - var29 = var7; - - for(float var31 = 0.3F; var24 > 0.0F; var24 -= var31 * (12.0F / 16.0F)) { - int var32 = MathHelper.floor_double(var25); - int var33 = MathHelper.floor_double(var27); - int var34 = MathHelper.floor_double(var29); - int var35 = var1.getBlockId(var32, var33, var34); - if(var35 > 0) { - var24 -= (Block.blocksList[var35].getExplosionResistance(var2) + 0.3F) * var31; - } - - if(var24 > 0.0F) { - var10.add(new ChunkPosition(var32, var33, var34)); - } - - var25 += var16 * (double)var31; - var27 += var18 * (double)var31; - var29 += var20 * (double)var31; - } - } - } - } - } - - var9 *= 2.0F; - var13 = MathHelper.floor_double(var3 - (double)var9 - 1.0D); - var14 = MathHelper.floor_double(var3 + (double)var9 + 1.0D); - var15 = MathHelper.floor_double(var5 - (double)var9 - 1.0D); - int var45 = MathHelper.floor_double(var5 + (double)var9 + 1.0D); - int var17 = MathHelper.floor_double(var7 - (double)var9 - 1.0D); - int var46 = MathHelper.floor_double(var7 + (double)var9 + 1.0D); - List var19 = var1.getEntitiesWithinAABBExcludingEntity(var2, AxisAlignedBB.getBoundingBoxFromPool((double)var13, (double)var15, (double)var17, (double)var14, (double)var45, (double)var46)); - Vec3D var47 = Vec3D.createVector(var3, var5, var7); - - double var55; - double var56; - double var57; - for(int var21 = 0; var21 < var19.size(); ++var21) { - Entity var49 = (Entity)var19.get(var21); - double var23 = var49.getDistance(var3, var5, var7) / (double)var9; - if(var23 <= 1.0D) { - var25 = var49.posX - var3; - var27 = var49.posY - var5; - var29 = var49.posZ - var7; - var55 = (double)MathHelper.sqrt_double(var25 * var25 + var27 * var27 + var29 * var29); - var25 /= var55; - var27 /= var55; - var29 /= var55; - var56 = (double)var1.getBlockDensity(var47, var49.boundingBox); - var57 = (1.0D - var23) * var56; - var49.attackEntityFrom(var2, (int)((var57 * var57 + var57) / 2.0D * 8.0D * (double)var9 + 1.0D)); - var49.motionX += var25 * var57; - var49.motionY += var27 * var57; - var49.motionZ += var29 * var57; - } - } - - var9 = var11; - ArrayList var48 = new ArrayList(); - var48.addAll(var10); - - for(int var50 = var48.size() - 1; var50 >= 0; --var50) { - ChunkPosition var51 = (ChunkPosition)var48.get(var50); - int var52 = var51.x; - int var53 = var51.y; - int var26 = var51.z; - int var54 = var1.getBlockId(var52, var53, var26); - - for(int var28 = 0; var28 < 1; ++var28) { - var29 = (double)((float)var52 + var1.rand.nextFloat()); - var55 = (double)((float)var53 + var1.rand.nextFloat()); - var56 = (double)((float)var26 + var1.rand.nextFloat()); - var57 = var29 - var3; - double var37 = var55 - var5; - double var39 = var56 - var7; - double var41 = (double)MathHelper.sqrt_double(var57 * var57 + var37 * var37 + var39 * var39); - var57 /= var41; - var37 /= var41; - var39 /= var41; - double var43 = 0.5D / (var41 / (double)var9 + 0.1D); - var43 *= (double)(var1.rand.nextFloat() * var1.rand.nextFloat() + 0.3F); - var57 *= var43; - var37 *= var43; - var39 *= var43; - var1.spawnParticle("explode", (var29 + var3 * 1.0D) / 2.0D, (var55 + var5 * 1.0D) / 2.0D, (var56 + var7 * 1.0D) / 2.0D, var57, var37, var39); - var1.spawnParticle("smoke", var29, var55, var56, var57, var37, var39); - } - - if(var54 > 0) { - Block.blocksList[var54].dropBlockAsItemWithChance(var1, var52, var53, var26, var1.getBlockMetadata(var52, var53, var26), 0.3F); - var1.setBlockWithNotify(var52, var53, var26, 0); - Block.blocksList[var54].onBlockDestroyedByExplosion(var1, var52, var53, var26); - } - } - - } -} diff --git a/src/net/minecraft/src/FontRenderer.java b/src/net/minecraft/src/FontRenderer.java deleted file mode 100644 index e8b6015..0000000 --- a/src/net/minecraft/src/FontRenderer.java +++ /dev/null @@ -1,177 +0,0 @@ -package net.minecraft.src; - -import java.awt.image.BufferedImage; -import java.io.IOException; -import java.nio.IntBuffer; -import javax.imageio.ImageIO; -import org.lwjgl.opengl.GL11; - -public class FontRenderer { - private int[] charWidth = new int[256]; - private int fontTextureName = 0; - private int fontDisplayLists; - private IntBuffer buffer = GLAllocation.createIntBuffer(1024); - - public FontRenderer(GameSettings var1, String var2, RenderEngine var3) { - BufferedImage var4; - try { - var4 = ImageIO.read(RenderEngine.class.getResourceAsStream(var2)); - } catch (IOException var18) { - throw new RuntimeException(var18); - } - - int var5 = var4.getWidth(); - int var6 = var4.getHeight(); - int[] var7 = new int[var5 * var6]; - var4.getRGB(0, 0, var5, var6, var7, 0, var5); - - int var9; - int var10; - int var11; - int var13; - int var15; - int var16; - for(int var8 = 0; var8 < 128; ++var8) { - var9 = var8 % 16; - var10 = var8 / 16; - var11 = 0; - - for(boolean var12 = false; var11 < 8 && !var12; ++var11) { - var13 = var9 * 8 + var11; - var12 = true; - - for(int var14 = 0; var14 < 8 && var12; ++var14) { - var15 = (var10 * 8 + var14) * var5; - var16 = var7[var13 + var15] & 255; - if(var16 > 128) { - var12 = false; - } - } - } - - if(var8 == 32) { - var11 = 4; - } - - this.charWidth[var8] = var11; - } - - this.fontTextureName = var3.getTexture(var2); - this.fontDisplayLists = GLAllocation.generateDisplayLists(288); - Tessellator var19 = Tessellator.instance; - - for(var9 = 0; var9 < 256; ++var9) { - GL11.glNewList(this.fontDisplayLists + var9, GL11.GL_COMPILE); - var19.startDrawingQuads(); - var10 = var9 % 16 * 8; - var11 = var9 / 16 * 8; - float var20 = 7.99F; - var19.addVertexWithUV(0.0D, (double)(0.0F + var20), 0.0D, (double)((float)var10 / 128.0F), (double)(((float)var11 + var20) / 128.0F)); - var19.addVertexWithUV((double)(0.0F + var20), (double)(0.0F + var20), 0.0D, (double)(((float)var10 + var20) / 128.0F), (double)(((float)var11 + var20) / 128.0F)); - var19.addVertexWithUV((double)(0.0F + var20), 0.0D, 0.0D, (double)(((float)var10 + var20) / 128.0F), (double)((float)var11 / 128.0F)); - var19.addVertexWithUV(0.0D, 0.0D, 0.0D, (double)((float)var10 / 128.0F), (double)((float)var11 / 128.0F)); - var19.draw(); - GL11.glTranslatef((float)this.charWidth[var9], 0.0F, 0.0F); - GL11.glEndList(); - } - - for(var9 = 0; var9 < 32; ++var9) { - var10 = (var9 & 8) * 8; - var11 = (var9 & 1) * 191 + var10; - int var21 = ((var9 & 2) >> 1) * 191 + var10; - var13 = ((var9 & 4) >> 2) * 191 + var10; - boolean var22 = var9 >= 16; - if(var1.anaglyph) { - var15 = (var13 * 30 + var21 * 59 + var11 * 11) / 100; - var16 = (var13 * 30 + var21 * 70) / 100; - int var17 = (var13 * 30 + var11 * 70) / 100; - var13 = var15; - var21 = var16; - var11 = var17; - } - - var9 += 2; - if(var22) { - var13 /= 4; - var21 /= 4; - var11 /= 4; - } - - GL11.glColor4f((float)var13 / 255.0F, (float)var21 / 255.0F, (float)var11 / 255.0F, 1.0F); - } - - } - - public void drawStringWithShadow(String var1, int var2, int var3, int var4) { - this.renderString(var1, var2 + 1, var3 + 1, var4, true); - this.drawString(var1, var2, var3, var4); - } - - public void drawString(String var1, int var2, int var3, int var4) { - this.renderString(var1, var2, var3, var4, false); - } - - public void renderString(String var1, int var2, int var3, int var4, boolean var5) { - if(var1 != null) { - if(var5) { - var4 = (var4 & 16579836) >> 2; - } - - GL11.glBindTexture(GL11.GL_TEXTURE_2D, this.fontTextureName); - float var6 = (float)(var4 >> 16 & 255) / 255.0F; - float var7 = (float)(var4 >> 8 & 255) / 255.0F; - float var8 = (float)(var4 & 255) / 255.0F; - float var9 = (float)(var4 >> 24 & 255) / 255.0F; - var9 = 1.0F; - GL11.glColor4f(var6, var7, var8, var9); - this.buffer.clear(); - GL11.glPushMatrix(); - GL11.glTranslatef((float)var2, (float)var3, 0.0F); - - for(int var10 = 0; var10 < var1.length(); ++var10) { - for(; var1.charAt(var10) == 38 && var1.length() > var10 + 1; var10 += 2) { - int var11 = "0123456789abcdef".indexOf(var1.charAt(var10 + 1)); - if(var11 < 0 || var11 > 15) { - var11 = 15; - } - - this.buffer.put(this.fontDisplayLists + 256 + var11 + (var5 ? 16 : 0)); - if(this.buffer.remaining() == 0) { - this.buffer.flip(); - GL11.glCallLists(this.buffer); - this.buffer.clear(); - } - } - - this.buffer.put(this.fontDisplayLists + var1.charAt(var10)); - if(this.buffer.remaining() == 0) { - this.buffer.flip(); - GL11.glCallLists(this.buffer); - this.buffer.clear(); - } - } - - this.buffer.flip(); - GL11.glCallLists(this.buffer); - GL11.glPopMatrix(); - } - } - - public int getStringWidth(String var1) { - if(var1 == null) { - return 0; - } else { - int var2 = 0; - - for(int var3 = 0; var3 < var1.length(); ++var3) { - if(var1.charAt(var3) == 38) { - ++var3; - } else { - var2 += this.charWidth[var1.charAt(var3)]; - } - } - - return var2; - } - } -} diff --git a/src/net/minecraft/src/Frustrum.java b/src/net/minecraft/src/Frustrum.java deleted file mode 100644 index ad411d9..0000000 --- a/src/net/minecraft/src/Frustrum.java +++ /dev/null @@ -1,22 +0,0 @@ -package net.minecraft.src; - -public class Frustrum implements ICamera { - private ClippingHelper clippingHelper = ClippingHelperImplementation.getInstance(); - private double xPosition; - private double yPosition; - private double zPosition; - - public void setPosition(double var1, double var3, double var5) { - this.xPosition = var1; - this.yPosition = var3; - this.zPosition = var5; - } - - public boolean isBoxInFrustum(double var1, double var3, double var5, double var7, double var9, double var11) { - return this.clippingHelper.isBoxInFrustum(var1 - this.xPosition, var3 - this.yPosition, var5 - this.zPosition, var7 - this.xPosition, var9 - this.yPosition, var11 - this.zPosition); - } - - public boolean isBoundingBoxInFrustum(AxisAlignedBB var1) { - return this.isBoxInFrustum(var1.minX, var1.minY, var1.minZ, var1.maxX, var1.maxY, var1.maxZ); - } -} diff --git a/src/net/minecraft/src/GLAllocation.java b/src/net/minecraft/src/GLAllocation.java deleted file mode 100644 index bcde76b..0000000 --- a/src/net/minecraft/src/GLAllocation.java +++ /dev/null @@ -1,62 +0,0 @@ -package net.minecraft.src; - -import java.nio.ByteBuffer; -import java.nio.ByteOrder; -import java.nio.FloatBuffer; -import java.nio.IntBuffer; -import java.util.ArrayList; -import java.util.List; -import org.lwjgl.opengl.GL11; - -public class GLAllocation { - private static List displayLists = new ArrayList(); - private static List textureNames = new ArrayList(); - - public static synchronized int generateDisplayLists(int var0) { - int var1 = GL11.glGenLists(var0); - displayLists.add(Integer.valueOf(var1)); - displayLists.add(Integer.valueOf(var0)); - return var1; - } - - public static synchronized void generateDisplayLists(IntBuffer var0) { - GL11.glGenTextures(var0); - - for(int var1 = var0.position(); var1 < var0.limit(); ++var1) { - textureNames.add(Integer.valueOf(var0.get(var1))); - } - - } - - public static synchronized void deleteTexturesAndDisplayLists() { - for(int var0 = 0; var0 < displayLists.size(); var0 += 2) { - GL11.glDeleteLists(((Integer)displayLists.get(var0)).intValue(), ((Integer)displayLists.get(var0 + 1)).intValue()); - } - - IntBuffer var2 = createIntBuffer(textureNames.size()); - var2.flip(); - GL11.glDeleteTextures(var2); - - for(int var1 = 0; var1 < textureNames.size(); ++var1) { - var2.put(((Integer)textureNames.get(var1)).intValue()); - } - - var2.flip(); - GL11.glDeleteTextures(var2); - displayLists.clear(); - textureNames.clear(); - } - - public static synchronized ByteBuffer createDirectByteBuffer(int var0) { - ByteBuffer var1 = ByteBuffer.allocateDirect(var0).order(ByteOrder.nativeOrder()); - return var1; - } - - public static IntBuffer createIntBuffer(int var0) { - return createDirectByteBuffer(var0 << 2).asIntBuffer(); - } - - public static FloatBuffer createFloatBuffer(int var0) { - return createDirectByteBuffer(var0 << 2).asFloatBuffer(); - } -} diff --git a/src/net/minecraft/src/GameSettings.java b/src/net/minecraft/src/GameSettings.java deleted file mode 100644 index 9416cfd..0000000 --- a/src/net/minecraft/src/GameSettings.java +++ /dev/null @@ -1,202 +0,0 @@ -package net.minecraft.src; - -import java.io.BufferedReader; -import java.io.File; -import java.io.FileReader; -import java.io.FileWriter; -import java.io.PrintWriter; -import org.lwjgl.input.Keyboard; - -public class GameSettings { - private static final String[] RENDER_DISTANCES = new String[]{"FAR", "NORMAL", "SHORT", "TINY"}; - private static final String[] DIFFICULTIES = new String[]{"Peaceful", "Easy", "Normal", "Hard"}; - public boolean music = true; - public boolean sound = true; - public boolean invertMouse = false; - public boolean showFPS = false; - public int renderDistance = 0; - public boolean viewBobbing = true; - public boolean anaglyph = false; - public boolean limitFramerate = false; - public boolean fancyGraphics = true; - public KeyBinding keyBindForward = new KeyBinding("Forward", 17); - public KeyBinding keyBindLeft = new KeyBinding("Left", 30); - public KeyBinding keyBindBack = new KeyBinding("Back", 31); - public KeyBinding keyBindRight = new KeyBinding("Right", 32); - public KeyBinding keyBindJump = new KeyBinding("Jump", 57); - public KeyBinding keyBindInventory = new KeyBinding("Inventory", 23); - public KeyBinding keyBindDrop = new KeyBinding("Drop", 16); - public KeyBinding keyBindChat = new KeyBinding("Chat", 20); - public KeyBinding keyBindToggleFog = new KeyBinding("Toggle fog", 33); - public KeyBinding keyBindSave = new KeyBinding("Save location", 28); - public KeyBinding keyBindLoad = new KeyBinding("Load location", 19); - public KeyBinding[] keyBindings = new KeyBinding[]{this.keyBindForward, this.keyBindLeft, this.keyBindBack, this.keyBindRight, this.keyBindJump, this.keyBindDrop, this.keyBindInventory, this.keyBindChat, this.keyBindToggleFog, this.keyBindSave, this.keyBindLoad}; - protected Minecraft mc; - private File optionsFile; - public int numberOfOptions = 10; - public int difficulty = 2; - public boolean thirdPersonView = false; - - public GameSettings(Minecraft var1, File var2) { - this.mc = var1; - this.optionsFile = new File(var2, "options.txt"); - this.loadOptions(); - } - - public String getOptionDisplayString(int var1) { - return this.keyBindings[var1].keyDescription + ": " + Keyboard.getKeyName(this.keyBindings[var1].keyCode); - } - - public void setKeyBinding(int var1, int var2) { - this.keyBindings[var1].keyCode = var2; - this.saveOptions(); - } - - public void setOptionFloatValue(int var1, int var2) { - if(var1 == 0) { - this.music = !this.music; - this.mc.sndManager.onSoundOptionsChanged(); - } - - if(var1 == 1) { - this.sound = !this.sound; - this.mc.sndManager.onSoundOptionsChanged(); - } - - if(var1 == 2) { - this.invertMouse = !this.invertMouse; - } - - if(var1 == 3) { - this.showFPS = !this.showFPS; - } - - if(var1 == 4) { - this.renderDistance = this.renderDistance + var2 & 3; - } - - if(var1 == 5) { - this.viewBobbing = !this.viewBobbing; - } - - if(var1 == 6) { - this.anaglyph = !this.anaglyph; - this.mc.renderEngine.refreshTextures(); - } - - if(var1 == 7) { - this.limitFramerate = !this.limitFramerate; - } - - if(var1 == 8) { - this.difficulty = this.difficulty + var2 & 3; - } - - if(var1 == 9) { - this.fancyGraphics = !this.fancyGraphics; - this.mc.renderGlobal.loadRenderers(); - } - - this.saveOptions(); - } - - public String getKeyBinding(int var1) { - return var1 == 0 ? "Music: " + (this.music ? "ON" : "OFF") : (var1 == 1 ? "Sound: " + (this.sound ? "ON" : "OFF") : (var1 == 2 ? "Invert mouse: " + (this.invertMouse ? "ON" : "OFF") : (var1 == 3 ? "Show FPS: " + (this.showFPS ? "ON" : "OFF") : (var1 == 4 ? "Render distance: " + RENDER_DISTANCES[this.renderDistance] : (var1 == 5 ? "View bobbing: " + (this.viewBobbing ? "ON" : "OFF") : (var1 == 6 ? "3d anaglyph: " + (this.anaglyph ? "ON" : "OFF") : (var1 == 7 ? "Limit framerate: " + (this.limitFramerate ? "ON" : "OFF") : (var1 == 8 ? "Difficulty: " + DIFFICULTIES[this.difficulty] : (var1 == 9 ? "Graphics: " + (this.fancyGraphics ? "FANCY" : "FAST") : ""))))))))); - } - - public void loadOptions() { - try { - if(!this.optionsFile.exists()) { - return; - } - - BufferedReader var1 = new BufferedReader(new FileReader(this.optionsFile)); - String var2 = ""; - - while(true) { - var2 = var1.readLine(); - if(var2 == null) { - var1.close(); - break; - } - - String[] var3 = var2.split(":"); - if(var3[0].equals("music")) { - this.music = var3[1].equals("true"); - } - - if(var3[0].equals("sound")) { - this.sound = var3[1].equals("true"); - } - - if(var3[0].equals("invertYMouse")) { - this.invertMouse = var3[1].equals("true"); - } - - if(var3[0].equals("showFrameRate")) { - this.showFPS = var3[1].equals("true"); - } - - if(var3[0].equals("viewDistance")) { - this.renderDistance = Integer.parseInt(var3[1]); - } - - if(var3[0].equals("bobView")) { - this.viewBobbing = var3[1].equals("true"); - } - - if(var3[0].equals("anaglyph3d")) { - this.anaglyph = var3[1].equals("true"); - } - - if(var3[0].equals("limitFramerate")) { - this.limitFramerate = var3[1].equals("true"); - } - - if(var3[0].equals("difficulty")) { - this.difficulty = Integer.parseInt(var3[1]); - } - - if(var3[0].equals("fancyGraphics")) { - this.fancyGraphics = var3[1].equals("true"); - } - - for(int var4 = 0; var4 < this.keyBindings.length; ++var4) { - if(var3[0].equals("key_" + this.keyBindings[var4].keyDescription)) { - this.keyBindings[var4].keyCode = Integer.parseInt(var3[1]); - } - } - } - } catch (Exception var5) { - System.out.println("Failed to load options"); - var5.printStackTrace(); - } - - } - - public void saveOptions() { - try { - PrintWriter var1 = new PrintWriter(new FileWriter(this.optionsFile)); - var1.println("music:" + this.music); - var1.println("sound:" + this.sound); - var1.println("invertYMouse:" + this.invertMouse); - var1.println("showFrameRate:" + this.showFPS); - var1.println("viewDistance:" + this.renderDistance); - var1.println("bobView:" + this.viewBobbing); - var1.println("anaglyph3d:" + this.anaglyph); - var1.println("limitFramerate:" + this.limitFramerate); - var1.println("difficulty:" + this.difficulty); - var1.println("fancyGraphics:" + this.fancyGraphics); - - for(int var2 = 0; var2 < this.keyBindings.length; ++var2) { - var1.println("key_" + this.keyBindings[var2].keyDescription + ":" + this.keyBindings[var2].keyCode); - } - - var1.close(); - } catch (Exception var3) { - System.out.println("Failed to save options"); - var3.printStackTrace(); - } - - } -} diff --git a/src/net/minecraft/src/Gui.java b/src/net/minecraft/src/Gui.java deleted file mode 100644 index 8b4c529..0000000 --- a/src/net/minecraft/src/Gui.java +++ /dev/null @@ -1,54 +0,0 @@ -package net.minecraft.src; - -import org.lwjgl.opengl.GL11; - -public class Gui { - protected float zLevel = 0.0F; - - protected void drawGradientRect(int var1, int var2, int var3, int var4, int var5, int var6) { - float var7 = (float)(var5 >> 24 & 255) / 255.0F; - float var8 = (float)(var5 >> 16 & 255) / 255.0F; - float var9 = (float)(var5 >> 8 & 255) / 255.0F; - float var10 = (float)(var5 & 255) / 255.0F; - float var11 = (float)(var6 >> 24 & 255) / 255.0F; - float var12 = (float)(var6 >> 16 & 255) / 255.0F; - float var13 = (float)(var6 >> 8 & 255) / 255.0F; - float var14 = (float)(var6 & 255) / 255.0F; - GL11.glDisable(GL11.GL_TEXTURE_2D); - GL11.glEnable(GL11.GL_BLEND); - GL11.glDisable(GL11.GL_ALPHA_TEST); - GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); - Tessellator var15 = Tessellator.instance; - var15.startDrawingQuads(); - var15.setColorRGBA_F(var8, var9, var10, var7); - var15.addVertex((double)var3, (double)var2, 0.0D); - var15.addVertex((double)var1, (double)var2, 0.0D); - var15.setColorRGBA_F(var12, var13, var14, var11); - var15.addVertex((double)var1, (double)var4, 0.0D); - var15.addVertex((double)var3, (double)var4, 0.0D); - var15.draw(); - GL11.glDisable(GL11.GL_BLEND); - GL11.glEnable(GL11.GL_ALPHA_TEST); - GL11.glEnable(GL11.GL_TEXTURE_2D); - } - - public void drawCenteredString(FontRenderer var1, String var2, int var3, int var4, int var5) { - var1.drawStringWithShadow(var2, var3 - var1.getStringWidth(var2) / 2, var4, var5); - } - - public void drawString(FontRenderer var1, String var2, int var3, int var4, int var5) { - var1.drawStringWithShadow(var2, var3, var4, var5); - } - - public void drawTexturedModalRect(int var1, int var2, int var3, int var4, int var5, int var6) { - float var7 = 0.00390625F; - float var8 = 0.00390625F; - Tessellator var9 = Tessellator.instance; - var9.startDrawingQuads(); - var9.addVertexWithUV((double)(var1 + 0), (double)(var2 + var6), (double)this.zLevel, (double)((float)(var3 + 0) * var7), (double)((float)(var4 + var6) * var8)); - var9.addVertexWithUV((double)(var1 + var5), (double)(var2 + var6), (double)this.zLevel, (double)((float)(var3 + var5) * var7), (double)((float)(var4 + var6) * var8)); - var9.addVertexWithUV((double)(var1 + var5), (double)(var2 + 0), (double)this.zLevel, (double)((float)(var3 + var5) * var7), (double)((float)(var4 + 0) * var8)); - var9.addVertexWithUV((double)(var1 + 0), (double)(var2 + 0), (double)this.zLevel, (double)((float)(var3 + 0) * var7), (double)((float)(var4 + 0) * var8)); - var9.draw(); - } -} diff --git a/src/net/minecraft/src/GuiButton.java b/src/net/minecraft/src/GuiButton.java deleted file mode 100644 index 3fbe2be..0000000 --- a/src/net/minecraft/src/GuiButton.java +++ /dev/null @@ -1,61 +0,0 @@ -package net.minecraft.src; - -import org.lwjgl.opengl.GL11; - -public class GuiButton extends Gui { - private int width; - private int height; - public int xPosition; - public int yPosition; - public String displayString; - public int id; - public boolean enabled; - public boolean enabled2; - - public GuiButton(int var1, int var2, int var3, String var4) { - this(var1, var2, var3, 200, 20, var4); - } - - protected GuiButton(int var1, int var2, int var3, int var4, int var5, String var6) { - this.width = 200; - this.height = 20; - this.enabled = true; - this.enabled2 = true; - this.id = var1; - this.xPosition = var2; - this.yPosition = var3; - this.width = var4; - this.height = var5; - this.displayString = var6; - } - - public void drawButton(Minecraft var1, int var2, int var3) { - if(this.enabled2) { - FontRenderer var4 = var1.fontRenderer; - GL11.glBindTexture(GL11.GL_TEXTURE_2D, var1.renderEngine.getTexture("/gui/gui.png")); - GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); - byte var5 = 1; - boolean var6 = var2 >= this.xPosition && var3 >= this.yPosition && var2 < this.xPosition + this.width && var3 < this.yPosition + this.height; - if(!this.enabled) { - var5 = 0; - } else if(var6) { - var5 = 2; - } - - this.drawTexturedModalRect(this.xPosition, this.yPosition, 0, 46 + var5 * 20, this.width / 2, this.height); - this.drawTexturedModalRect(this.xPosition + this.width / 2, this.yPosition, 200 - this.width / 2, 46 + var5 * 20, this.width / 2, this.height); - if(!this.enabled) { - this.drawCenteredString(var4, this.displayString, this.xPosition + this.width / 2, this.yPosition + (this.height - 8) / 2, -6250336); - } else if(var6) { - this.drawCenteredString(var4, this.displayString, this.xPosition + this.width / 2, this.yPosition + (this.height - 8) / 2, 16777120); - } else { - this.drawCenteredString(var4, this.displayString, this.xPosition + this.width / 2, this.yPosition + (this.height - 8) / 2, 14737632); - } - - } - } - - public boolean mousePressed(int var1, int var2) { - return this.enabled && var1 >= this.xPosition && var2 >= this.yPosition && var1 < this.xPosition + this.width && var2 < this.yPosition + this.height; - } -} diff --git a/src/net/minecraft/src/GuiChest.java b/src/net/minecraft/src/GuiChest.java deleted file mode 100644 index 730e7f4..0000000 --- a/src/net/minecraft/src/GuiChest.java +++ /dev/null @@ -1,54 +0,0 @@ -package net.minecraft.src; - -import org.lwjgl.opengl.GL11; - -public class GuiChest extends GuiContainer { - private IInventory upperChestInventory; - private IInventory lowerChestInventory; - private int inventoryRows = 0; - - public GuiChest(IInventory var1, IInventory var2) { - this.upperChestInventory = var1; - this.lowerChestInventory = var2; - this.allowUserInput = false; - short var3 = 222; - int var4 = var3 - 108; - this.inventoryRows = var2.getSizeInventory() / 9; - this.ySize = var4 + this.inventoryRows * 18; - int var5 = (this.inventoryRows - 4) * 18; - - int var6; - int var7; - for(var6 = 0; var6 < this.inventoryRows; ++var6) { - for(var7 = 0; var7 < 9; ++var7) { - this.inventorySlots.add(new Slot(this, var2, var7 + var6 * 9, 8 + var7 * 18, 18 + var6 * 18)); - } - } - - for(var6 = 0; var6 < 3; ++var6) { - for(var7 = 0; var7 < 9; ++var7) { - this.inventorySlots.add(new Slot(this, var1, var7 + (var6 + 1) * 9, 8 + var7 * 18, 103 + var6 * 18 + var5)); - } - } - - for(var6 = 0; var6 < 9; ++var6) { - this.inventorySlots.add(new Slot(this, var1, var6, 8 + var6 * 18, 161 + var5)); - } - - } - - protected void drawGuiContainerForegroundLayer() { - this.fontRenderer.drawString(this.lowerChestInventory.getInvName(), 8, 6, 4210752); - this.fontRenderer.drawString(this.upperChestInventory.getInvName(), 8, this.ySize - 96 + 2, 4210752); - } - - protected void drawGuiContainerBackgroundLayer(float var1) { - int var2 = this.mc.renderEngine.getTexture("/gui/container.png"); - GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); - this.mc.renderEngine.bindTexture(var2); - int var3 = (this.width - this.xSize) / 2; - int var4 = (this.height - this.ySize) / 2; - this.drawTexturedModalRect(var3, var4, 0, 0, this.xSize, this.inventoryRows * 18 + 17); - this.drawTexturedModalRect(var3, var4 + this.inventoryRows * 18 + 17, 0, 126, this.xSize, 96); - } -} diff --git a/src/net/minecraft/src/GuiContainer.java b/src/net/minecraft/src/GuiContainer.java deleted file mode 100644 index 4e3e8fe..0000000 --- a/src/net/minecraft/src/GuiContainer.java +++ /dev/null @@ -1,226 +0,0 @@ -package net.minecraft.src; - -import java.util.ArrayList; -import java.util.List; -import org.lwjgl.opengl.GL11; -import org.lwjgl.opengl.GL12; - -public abstract class GuiContainer extends GuiScreen { - private static RenderItem itemRenderer = new RenderItem(); - private ItemStack draggedItemStack = null; - protected int xSize = 176; - protected int ySize = 166; - protected List inventorySlots = new ArrayList(); - - public void drawScreen(int var1, int var2, float var3) { - this.drawDefaultBackground(); - int var4 = (this.width - this.xSize) / 2; - int var5 = (this.height - this.ySize) / 2; - this.drawGuiContainerBackgroundLayer(var3); - GL11.glPushMatrix(); - GL11.glRotatef(180.0F, 1.0F, 0.0F, 0.0F); - RenderHelper.enableStandardItemLighting(); - GL11.glPopMatrix(); - GL11.glPushMatrix(); - GL11.glTranslatef((float)var4, (float)var5, 0.0F); - GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); - GL11.glEnable(GL12.GL_RESCALE_NORMAL); - - for(int var6 = 0; var6 < this.inventorySlots.size(); ++var6) { - Slot var7 = (Slot)this.inventorySlots.get(var6); - this.drawSlotInventory(var7); - if(var7.getIsMouseOverSlot(var1, var2)) { - GL11.glDisable(GL11.GL_LIGHTING); - GL11.glDisable(GL11.GL_DEPTH_TEST); - int var8 = var7.xDisplayPosition; - int var9 = var7.yDisplayPosition; - this.drawGradientRect(var8, var9, var8 + 16, var9 + 16, -2130706433, -2130706433); - GL11.glEnable(GL11.GL_LIGHTING); - GL11.glEnable(GL11.GL_DEPTH_TEST); - } - } - - if(this.draggedItemStack != null) { - GL11.glTranslatef(0.0F, 0.0F, 32.0F); - itemRenderer.drawItemIntoGui(this.fontRenderer, this.mc.renderEngine, this.draggedItemStack, var1 - var4 - 8, var2 - var5 - 8); - itemRenderer.renderItemOverlayIntoGUI(this.fontRenderer, this.mc.renderEngine, this.draggedItemStack, var1 - var4 - 8, var2 - var5 - 8); - } - - GL11.glDisable(GL12.GL_RESCALE_NORMAL); - RenderHelper.disableStandardItemLighting(); - GL11.glDisable(GL11.GL_LIGHTING); - GL11.glDisable(GL11.GL_DEPTH_TEST); - this.drawGuiContainerForegroundLayer(); - GL11.glEnable(GL11.GL_LIGHTING); - GL11.glEnable(GL11.GL_DEPTH_TEST); - GL11.glPopMatrix(); - } - - protected void drawGuiContainerForegroundLayer() { - } - - protected abstract void drawGuiContainerBackgroundLayer(float var1); - - private void drawSlotInventory(Slot var1) { - IInventory var2 = var1.inventory; - int var3 = var1.slotIndex; - int var4 = var1.xDisplayPosition; - int var5 = var1.yDisplayPosition; - ItemStack var6 = var2.getStackInSlot(var3); - if(var6 == null) { - int var7 = var1.getBackgroundIconIndex(); - if(var7 >= 0) { - GL11.glDisable(GL11.GL_LIGHTING); - this.mc.renderEngine.bindTexture(this.mc.renderEngine.getTexture("/gui/items.png")); - this.drawTexturedModalRect(var4, var5, var7 % 16 * 16, var7 / 16 * 16, 16, 16); - GL11.glEnable(GL11.GL_LIGHTING); - return; - } - } - - itemRenderer.drawItemIntoGui(this.fontRenderer, this.mc.renderEngine, var6, var4, var5); - itemRenderer.renderItemOverlayIntoGUI(this.fontRenderer, this.mc.renderEngine, var6, var4, var5); - } - - private Slot getSlotAtPosition(int var1, int var2) { - for(int var3 = 0; var3 < this.inventorySlots.size(); ++var3) { - Slot var4 = (Slot)this.inventorySlots.get(var3); - if(var4.getIsMouseOverSlot(var1, var2)) { - return var4; - } - } - - return null; - } - - protected void mouseClicked(int var1, int var2, int var3) { - if(var3 == 0 || var3 == 1) { - Slot var4 = this.getSlotAtPosition(var1, var2); - int var6; - if(var4 != null) { - var4.onSlotChanged(); - ItemStack var5 = var4.getStack(); - if(var5 != null || this.draggedItemStack != null) { - if(var5 != null && this.draggedItemStack == null) { - var6 = var3 == 0 ? var5.stackSize : (var5.stackSize + 1) / 2; - this.draggedItemStack = var4.inventory.decrStackSize(var4.slotIndex, var6); - if(var5.stackSize == 0) { - var4.putStack((ItemStack)null); - } - - var4.onPickupFromSlot(); - } else if(var5 == null && this.draggedItemStack != null && var4.isItemValid(this.draggedItemStack)) { - var6 = var3 == 0 ? this.draggedItemStack.stackSize : 1; - if(var6 > var4.inventory.getInventoryStackLimit()) { - var6 = var4.inventory.getInventoryStackLimit(); - } - - var4.putStack(this.draggedItemStack.splitStack(var6)); - if(this.draggedItemStack.stackSize == 0) { - this.draggedItemStack = null; - } - } else if(var5 != null && this.draggedItemStack != null) { - if(var4.isItemValid(this.draggedItemStack)) { - if(var5.itemID != this.draggedItemStack.itemID) { - if(this.draggedItemStack.stackSize <= var4.inventory.getInventoryStackLimit()) { - var4.putStack(this.draggedItemStack); - this.draggedItemStack = var5; - } - } else if(var5.itemID == this.draggedItemStack.itemID) { - if(var3 == 0) { - var6 = this.draggedItemStack.stackSize; - if(var6 > var4.inventory.getInventoryStackLimit() - var5.stackSize) { - var6 = var4.inventory.getInventoryStackLimit() - var5.stackSize; - } - - if(var6 > this.draggedItemStack.getMaxStackSize() - var5.stackSize) { - var6 = this.draggedItemStack.getMaxStackSize() - var5.stackSize; - } - - this.draggedItemStack.splitStack(var6); - if(this.draggedItemStack.stackSize == 0) { - this.draggedItemStack = null; - } - - var5.stackSize += var6; - } else if(var3 == 1) { - var6 = 1; - if(var6 > var4.inventory.getInventoryStackLimit() - var5.stackSize) { - var6 = var4.inventory.getInventoryStackLimit() - var5.stackSize; - } - - if(var6 > this.draggedItemStack.getMaxStackSize() - var5.stackSize) { - var6 = this.draggedItemStack.getMaxStackSize() - var5.stackSize; - } - - this.draggedItemStack.splitStack(var6); - if(this.draggedItemStack.stackSize == 0) { - this.draggedItemStack = null; - } - - var5.stackSize += var6; - } - } - } else if(var5.itemID == this.draggedItemStack.itemID && this.draggedItemStack.getMaxStackSize() > 1) { - var6 = var5.stackSize; - if(var6 > 0 && var6 + this.draggedItemStack.stackSize <= this.draggedItemStack.getMaxStackSize()) { - this.draggedItemStack.stackSize += var6; - var5.splitStack(var6); - if(var5.stackSize == 0) { - var4.putStack((ItemStack)null); - } - - var4.onPickupFromSlot(); - } - } - } - } - } else if(this.draggedItemStack != null) { - int var8 = (this.width - this.xSize) / 2; - var6 = (this.height - this.ySize) / 2; - if(var1 < var8 || var2 < var6 || var1 >= var8 + this.xSize || var2 >= var6 + this.xSize) { - EntityPlayerSP var7 = this.mc.thePlayer; - if(var3 == 0) { - var7.dropPlayerItem(this.draggedItemStack); - this.draggedItemStack = null; - } - - if(var3 == 1) { - var7.dropPlayerItem(this.draggedItemStack.splitStack(1)); - if(this.draggedItemStack.stackSize == 0) { - this.draggedItemStack = null; - } - } - } - } - } - - } - - protected void mouseMovedOrUp(int var1, int var2, int var3) { - if(var3 == 0) { - } - - } - - protected void keyTyped(char var1, int var2) { - if(var2 == 1 || var2 == this.mc.gameSettings.keyBindInventory.keyCode) { - this.mc.displayGuiScreen((GuiScreen)null); - } - - } - - public void onGuiClosed() { - if(this.draggedItemStack != null) { - this.mc.thePlayer.dropPlayerItem(this.draggedItemStack); - } - - } - - public void onCraftMatrixChanged(IInventory var1) { - } - - public boolean doesGuiPauseGame() { - return false; - } -} diff --git a/src/net/minecraft/src/GuiControls.java b/src/net/minecraft/src/GuiControls.java deleted file mode 100644 index 0d185df..0000000 --- a/src/net/minecraft/src/GuiControls.java +++ /dev/null @@ -1,52 +0,0 @@ -package net.minecraft.src; - -public class GuiControls extends GuiScreen { - private GuiScreen parentScreen; - protected String screenTitle = "Controls"; - private GameSettings options; - private int buttonId = -1; - - public GuiControls(GuiScreen var1, GameSettings var2) { - this.parentScreen = var1; - this.options = var2; - } - - public void initGui() { - for(int var1 = 0; var1 < this.options.keyBindings.length; ++var1) { - this.controlList.add(new GuiSmallButton(var1, this.width / 2 - 155 + var1 % 2 * 160, this.height / 6 + 24 * (var1 >> 1), this.options.getOptionDisplayString(var1))); - } - - this.controlList.add(new GuiButton(200, this.width / 2 - 100, this.height / 6 + 168, "Done")); - } - - protected void actionPerformed(GuiButton var1) { - for(int var2 = 0; var2 < this.options.keyBindings.length; ++var2) { - ((GuiButton)this.controlList.get(var2)).displayString = this.options.getOptionDisplayString(var2); - } - - if(var1.id == 200) { - this.mc.displayGuiScreen(this.parentScreen); - } else { - this.buttonId = var1.id; - var1.displayString = "> " + this.options.getOptionDisplayString(var1.id) + " <"; - } - - } - - protected void keyTyped(char var1, int var2) { - if(this.buttonId >= 0) { - this.options.setKeyBinding(this.buttonId, var2); - ((GuiButton)this.controlList.get(this.buttonId)).displayString = this.options.getOptionDisplayString(this.buttonId); - this.buttonId = -1; - } else { - super.keyTyped(var1, var2); - } - - } - - public void drawScreen(int var1, int var2, float var3) { - this.drawDefaultBackground(); - this.drawCenteredString(this.fontRenderer, this.screenTitle, this.width / 2, 20, 16777215); - super.drawScreen(var1, var2, var3); - } -} diff --git a/src/net/minecraft/src/GuiCrafting.java b/src/net/minecraft/src/GuiCrafting.java deleted file mode 100644 index 81fe8aa..0000000 --- a/src/net/minecraft/src/GuiCrafting.java +++ /dev/null @@ -1,75 +0,0 @@ -package net.minecraft.src; - -import org.lwjgl.opengl.GL11; - -public class GuiCrafting extends GuiContainer { - private InventoryCrafting inventoryCrafting = new InventoryCrafting(this, 3, 3); - private IInventory iInventory = new InventoryCraftResult(); - - public GuiCrafting(InventoryPlayer var1) { - this.inventorySlots.add(new SlotCrafting(this, this.inventoryCrafting, this.iInventory, 0, 124, 35)); - - int var2; - int var3; - for(var2 = 0; var2 < 3; ++var2) { - for(var3 = 0; var3 < 3; ++var3) { - this.inventorySlots.add(new Slot(this, this.inventoryCrafting, var3 + var2 * 3, 30 + var3 * 18, 17 + var2 * 18)); - } - } - - for(var2 = 0; var2 < 3; ++var2) { - for(var3 = 0; var3 < 9; ++var3) { - this.inventorySlots.add(new Slot(this, var1, var3 + (var2 + 1) * 9, 8 + var3 * 18, 84 + var2 * 18)); - } - } - - for(var2 = 0; var2 < 9; ++var2) { - this.inventorySlots.add(new Slot(this, var1, var2, 8 + var2 * 18, 142)); - } - - } - - public void onGuiClosed() { - super.onGuiClosed(); - - for(int var1 = 0; var1 < 9; ++var1) { - ItemStack var2 = this.inventoryCrafting.getStackInSlot(var1); - if(var2 != null) { - this.mc.thePlayer.dropPlayerItem(var2); - } - } - - } - - public void onCraftMatrixChanged(IInventory var1) { - int[] var2 = new int[9]; - - for(int var3 = 0; var3 < 3; ++var3) { - for(int var4 = 0; var4 < 3; ++var4) { - int var5 = var3 + var4 * 3; - ItemStack var6 = this.inventoryCrafting.getStackInSlot(var5); - if(var6 == null) { - var2[var5] = -1; - } else { - var2[var5] = var6.itemID; - } - } - } - - this.iInventory.setInventorySlotContents(0, CraftingManager.getInstance().findMatchingRecipe(var2)); - } - - protected void drawGuiContainerForegroundLayer() { - this.fontRenderer.drawString("Crafting", 28, 6, 4210752); - this.fontRenderer.drawString("Inventory", 8, this.ySize - 96 + 2, 4210752); - } - - protected void drawGuiContainerBackgroundLayer(float var1) { - int var2 = this.mc.renderEngine.getTexture("/gui/crafting.png"); - GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); - this.mc.renderEngine.bindTexture(var2); - int var3 = (this.width - this.xSize) / 2; - int var4 = (this.height - this.ySize) / 2; - this.drawTexturedModalRect(var3, var4, 0, 0, this.xSize, this.ySize); - } -} diff --git a/src/net/minecraft/src/GuiCreateWorld.java b/src/net/minecraft/src/GuiCreateWorld.java deleted file mode 100644 index 9b49486..0000000 --- a/src/net/minecraft/src/GuiCreateWorld.java +++ /dev/null @@ -1,69 +0,0 @@ -package net.minecraft.src; - -import java.io.File; - -public class GuiCreateWorld extends GuiScreen { - protected GuiScreen parentGuiScreen; - protected String screenHeader = "Select world"; - private boolean createClicked = false; - - public GuiCreateWorld(GuiScreen var1) { - this.parentGuiScreen = var1; - } - - public void initGui() { - File var1 = Minecraft.getMinecraftDir(); - - for(int var2 = 0; var2 < 5; ++var2) { - NBTTagCompound var3 = World.getLevelData(var1, "World" + (var2 + 1)); - if(var3 == null) { - this.controlList.add(new GuiButton(var2, this.width / 2 - 100, this.height / 6 + 24 * var2, "- empty -")); - } else { - String var4 = "World " + (var2 + 1); - long var5 = var3.getLong("SizeOnDisk"); - var4 = var4 + " (" + (float)(var5 / 1024L * 100L / 1024L) / 100.0F + " MB)"; - this.controlList.add(new GuiButton(var2, this.width / 2 - 100, this.height / 6 + 24 * var2, var4)); - } - } - - this.initButtons(); - } - - protected String getSaveFileName(int var1) { - File var2 = Minecraft.getMinecraftDir(); - return World.getLevelData(var2, "World" + var1) != null ? "World" + var1 : null; - } - - public void initButtons() { - this.controlList.add(new GuiButton(5, this.width / 2 - 100, this.height / 6 + 120 + 12, "Delete world...")); - this.controlList.add(new GuiButton(6, this.width / 2 - 100, this.height / 6 + 168, "Cancel")); - } - - protected void actionPerformed(GuiButton var1) { - if(var1.enabled) { - if(var1.id < 5) { - this.actionPerformed(var1.id + 1); - } else if(var1.id == 5) { - this.mc.displayGuiScreen(new GuiDeleteWorld(this)); - } else if(var1.id == 6) { - this.mc.displayGuiScreen(this.parentGuiScreen); - } - - } - } - - public void actionPerformed(int var1) { - this.mc.displayGuiScreen((GuiScreen)null); - if(!this.createClicked) { - this.createClicked = true; - this.mc.startWorld("World" + var1); - this.mc.displayGuiScreen((GuiScreen)null); - } - } - - public void drawScreen(int var1, int var2, float var3) { - this.drawDefaultBackground(); - this.drawCenteredString(this.fontRenderer, this.screenHeader, this.width / 2, 20, 16777215); - super.drawScreen(var1, var2, var3); - } -} diff --git a/src/net/minecraft/src/GuiDeleteWorld.java b/src/net/minecraft/src/GuiDeleteWorld.java deleted file mode 100644 index 979aad5..0000000 --- a/src/net/minecraft/src/GuiDeleteWorld.java +++ /dev/null @@ -1,31 +0,0 @@ -package net.minecraft.src; - -import java.io.File; - -public class GuiDeleteWorld extends GuiCreateWorld { - public GuiDeleteWorld(GuiScreen var1) { - super(var1); - this.screenHeader = "Delete world"; - } - - public void initButtons() { - this.controlList.add(new GuiButton(6, this.width / 2 - 100, this.height / 6 + 168, "Cancel")); - } - - public void actionPerformed(int var1) { - String var2 = this.getSaveFileName(var1); - if(var2 != null) { - this.mc.displayGuiScreen(new GuiYesNo(this, "Are you sure you want to delete this world?", "\'" + var2 + "\' will be lost forever!", var1)); - } - - } - - public void deleteWorld(boolean var1, int var2) { - if(var1) { - File var3 = Minecraft.getMinecraftDir(); - World.deleteWorld(var3, this.getSaveFileName(var2)); - } - - this.mc.displayGuiScreen(this.parentGuiScreen); - } -} diff --git a/src/net/minecraft/src/GuiEditSign.java b/src/net/minecraft/src/GuiEditSign.java deleted file mode 100644 index 9ecea6d..0000000 --- a/src/net/minecraft/src/GuiEditSign.java +++ /dev/null @@ -1,77 +0,0 @@ -package net.minecraft.src; - -import org.lwjgl.input.Keyboard; -import org.lwjgl.opengl.GL11; - -public class GuiEditSign extends GuiScreen { - protected String screenTitle = "Edit sign message:"; - private TileEntitySign entitySign; - private int updateCounter; - private int editLine = 0; - - public GuiEditSign(TileEntitySign var1) { - this.entitySign = var1; - } - - public void initGui() { - this.controlList.clear(); - Keyboard.enableRepeatEvents(true); - this.controlList.add(new GuiButton(0, this.width / 2 - 100, this.height / 4 + 120, "Done")); - } - - public void onGuiClosed() { - Keyboard.enableRepeatEvents(false); - } - - public void updateScreen() { - ++this.updateCounter; - } - - protected void actionPerformed(GuiButton var1) { - if(var1.enabled) { - if(var1.id == 0) { - this.entitySign.onInventoryChanged(); - this.mc.displayGuiScreen((GuiScreen)null); - } - - } - } - - protected void keyTyped(char var1, int var2) { - if(var2 == 200) { - this.editLine = this.editLine - 1 & 3; - } - - if(var2 == 208 || var2 == 28) { - this.editLine = this.editLine + 1 & 3; - } - - if(var2 == 14 && this.entitySign.signText[this.editLine].length() > 0) { - this.entitySign.signText[this.editLine] = this.entitySign.signText[this.editLine].substring(0, this.entitySign.signText[this.editLine].length() - 1); - } - - if("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 ,.:-_\'*!\"#%/()=+?[]{}<>".indexOf(var1) >= 0 && this.entitySign.signText[this.editLine].length() < 15) { - this.entitySign.signText[this.editLine] = this.entitySign.signText[this.editLine] + var1; - } - - } - - public void drawScreen(int var1, int var2, float var3) { - this.drawDefaultBackground(); - this.drawCenteredString(this.fontRenderer, this.screenTitle, this.width / 2, 40, 16777215); - GL11.glPushMatrix(); - GL11.glTranslatef((float)(this.width / 2), (float)(this.height / 2), 50.0F); - float var4 = 60.0F; - GL11.glScalef(-var4, -var4, -var4); - GL11.glRotatef(180.0F, 0.0F, 1.0F, 0.0F); - if(this.updateCounter / 6 % 2 == 0) { - this.entitySign.lineBeingEdited = this.editLine; - } - - GL11.glRotatef((float)(this.entitySign.getBlockMetadata() * 360) / 16.0F, 0.0F, 1.0F, 0.0F); - TileEntityRenderer.instance.renderTileEntityAt(this.entitySign, -0.5D, -0.75D, -0.5D, 0.0F); - this.entitySign.lineBeingEdited = -1; - GL11.glPopMatrix(); - super.drawScreen(var1, var2, var3); - } -} diff --git a/src/net/minecraft/src/GuiErrorScreen.java b/src/net/minecraft/src/GuiErrorScreen.java deleted file mode 100644 index 6707b98..0000000 --- a/src/net/minecraft/src/GuiErrorScreen.java +++ /dev/null @@ -1,19 +0,0 @@ -package net.minecraft.src; - -public class GuiErrorScreen extends GuiScreen { - private String title; - private String text; - - public void initGui() { - } - - public void drawScreen(int var1, int var2, float var3) { - this.drawGradientRect(0, 0, this.width, this.height, -12574688, -11530224); - this.drawCenteredString(this.fontRenderer, this.title, this.width / 2, 90, 16777215); - this.drawCenteredString(this.fontRenderer, this.text, this.width / 2, 110, 16777215); - super.drawScreen(var1, var2, var3); - } - - protected void keyTyped(char var1, int var2) { - } -} diff --git a/src/net/minecraft/src/GuiFurnace.java b/src/net/minecraft/src/GuiFurnace.java deleted file mode 100644 index 922342d..0000000 --- a/src/net/minecraft/src/GuiFurnace.java +++ /dev/null @@ -1,48 +0,0 @@ -package net.minecraft.src; - -import org.lwjgl.opengl.GL11; - -public class GuiFurnace extends GuiContainer { - private TileEntityFurnace furnaceInventory; - - public GuiFurnace(InventoryPlayer var1, TileEntityFurnace var2) { - this.furnaceInventory = var2; - this.inventorySlots.add(new Slot(this, var2, 0, 56, 17)); - this.inventorySlots.add(new Slot(this, var2, 1, 56, 53)); - this.inventorySlots.add(new Slot(this, var2, 2, 116, 35)); - - int var3; - for(var3 = 0; var3 < 3; ++var3) { - for(int var4 = 0; var4 < 9; ++var4) { - this.inventorySlots.add(new Slot(this, var1, var4 + (var3 + 1) * 9, 8 + var4 * 18, 84 + var3 * 18)); - } - } - - for(var3 = 0; var3 < 9; ++var3) { - this.inventorySlots.add(new Slot(this, var1, var3, 8 + var3 * 18, 142)); - } - - } - - protected void drawGuiContainerForegroundLayer() { - this.fontRenderer.drawString("Furnace", 60, 6, 4210752); - this.fontRenderer.drawString("Inventory", 8, this.ySize - 96 + 2, 4210752); - } - - protected void drawGuiContainerBackgroundLayer(float var1) { - int var2 = this.mc.renderEngine.getTexture("/gui/furnace.png"); - GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); - this.mc.renderEngine.bindTexture(var2); - int var3 = (this.width - this.xSize) / 2; - int var4 = (this.height - this.ySize) / 2; - this.drawTexturedModalRect(var3, var4, 0, 0, this.xSize, this.ySize); - int var5; - if(this.furnaceInventory.isBurning()) { - var5 = this.furnaceInventory.getBurnTimeRemainingScaled(12); - this.drawTexturedModalRect(var3 + 56, var4 + 36 + 12 - var5, 176, 12 - var5, 14, var5 + 2); - } - - var5 = this.furnaceInventory.getCookProgressScaled(24); - this.drawTexturedModalRect(var3 + 79, var4 + 34, 176, 14, var5 + 1, 16); - } -} diff --git a/src/net/minecraft/src/GuiGameOver.java b/src/net/minecraft/src/GuiGameOver.java deleted file mode 100644 index 1eb64b0..0000000 --- a/src/net/minecraft/src/GuiGameOver.java +++ /dev/null @@ -1,48 +0,0 @@ -package net.minecraft.src; - -import org.lwjgl.opengl.GL11; - -public class GuiGameOver extends GuiScreen { - public void initGui() { - this.controlList.clear(); - this.controlList.add(new GuiButton(1, this.width / 2 - 100, this.height / 4 + 72, "Respawn")); - this.controlList.add(new GuiButton(2, this.width / 2 - 100, this.height / 4 + 96, "Title menu")); - if(this.mc.session == null) { - ((GuiButton)this.controlList.get(1)).enabled = false; - } - - } - - protected void keyTyped(char var1, int var2) { - } - - protected void actionPerformed(GuiButton var1) { - if(var1.id == 0) { - } - - if(var1.id == 1) { - this.mc.respawn(); - this.mc.displayGuiScreen((GuiScreen)null); - } - - if(var1.id == 2) { - this.mc.changeWorld1((World)null); - this.mc.displayGuiScreen(new GuiMainMenu()); - } - - } - - public void drawScreen(int var1, int var2, float var3) { - this.drawGradientRect(0, 0, this.width, this.height, 1615855616, -1602211792); - GL11.glPushMatrix(); - GL11.glScalef(2.0F, 2.0F, 2.0F); - this.drawCenteredString(this.fontRenderer, "Game over!", this.width / 2 / 2, 30, 16777215); - GL11.glPopMatrix(); - this.drawCenteredString(this.fontRenderer, "Score: &e" + this.mc.thePlayer.getScore(), this.width / 2, 100, 16777215); - super.drawScreen(var1, var2, var3); - } - - public boolean doesGuiPauseGame() { - return false; - } -} diff --git a/src/net/minecraft/src/GuiIngame.java b/src/net/minecraft/src/GuiIngame.java deleted file mode 100644 index f08a0db..0000000 --- a/src/net/minecraft/src/GuiIngame.java +++ /dev/null @@ -1,222 +0,0 @@ -package net.minecraft.src; - -import java.util.ArrayList; -import java.util.List; -import java.util.Random; -import org.lwjgl.opengl.GL11; -import org.lwjgl.opengl.GL12; - -public class GuiIngame extends Gui { - private static RenderItem itemRenderer = new RenderItem(); - private List chatMessageList = new ArrayList(); - private Random rand = new Random(); - private Minecraft mc; - public String testMessage = null; - private int updateCounter = 0; - public float damageGuiPartialTime; - float prevVignetteBrightness = 1.0F; - - public GuiIngame(Minecraft var1) { - this.mc = var1; - } - - public void renderGameOverlay(float var1, boolean var2, int var3, int var4) { - ScaledResolution var5 = new ScaledResolution(this.mc.displayWidth, this.mc.displayHeight); - int var6 = var5.getScaledWidth(); - int var7 = var5.getScaledHeight(); - FontRenderer var8 = this.mc.fontRenderer; - this.mc.entityRenderer.setupOverlayRendering(); - GL11.glEnable(GL11.GL_BLEND); - if(this.mc.gameSettings.fancyGraphics) { - this.renderVignette(this.mc.thePlayer.getEntityBrightness(var1), var6, var7); - } - - GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); - GL11.glBindTexture(GL11.GL_TEXTURE_2D, this.mc.renderEngine.getTexture("/gui/gui.png")); - InventoryPlayer var9 = this.mc.thePlayer.inventory; - this.zLevel = -90.0F; - this.drawTexturedModalRect(var6 / 2 - 91, var7 - 22, 0, 0, 182, 22); - this.drawTexturedModalRect(var6 / 2 - 91 - 1 + var9.currentItem * 20, var7 - 22 - 1, 0, 22, 24, 22); - GL11.glBindTexture(GL11.GL_TEXTURE_2D, this.mc.renderEngine.getTexture("/gui/icons.png")); - GL11.glEnable(GL11.GL_BLEND); - GL11.glBlendFunc(GL11.GL_ONE_MINUS_DST_COLOR, GL11.GL_ONE_MINUS_SRC_COLOR); - this.drawTexturedModalRect(var6 / 2 - 7, var7 / 2 - 7, 0, 0, 16, 16); - GL11.glDisable(GL11.GL_BLEND); - boolean var10 = this.mc.thePlayer.heartsLife / 3 % 2 == 1; - if(this.mc.thePlayer.heartsLife < 10) { - var10 = false; - } - - int var11 = this.mc.thePlayer.health; - int var12 = this.mc.thePlayer.prevHealth; - this.rand.setSeed((long)(this.updateCounter * 312871)); - int var13; - int var14; - int var15; - if(this.mc.playerController.shouldDrawHUD()) { - var13 = this.mc.thePlayer.getPlayerArmorValue(); - - int var16; - for(var14 = 0; var14 < 10; ++var14) { - var15 = var7 - 32; - if(var13 > 0) { - var16 = var6 / 2 + 91 - var14 * 8 - 9; - if(var14 * 2 + 1 < var13) { - this.drawTexturedModalRect(var16, var15, 34, 9, 9, 9); - } - - if(var14 * 2 + 1 == var13) { - this.drawTexturedModalRect(var16, var15, 25, 9, 9, 9); - } - - if(var14 * 2 + 1 > var13) { - this.drawTexturedModalRect(var16, var15, 16, 9, 9, 9); - } - } - - byte var25 = 0; - if(var10) { - var25 = 1; - } - - int var17 = var6 / 2 - 91 + var14 * 8; - if(var11 <= 4) { - var15 += this.rand.nextInt(2); - } - - this.drawTexturedModalRect(var17, var15, 16 + var25 * 9, 0, 9, 9); - if(var10) { - if(var14 * 2 + 1 < var12) { - this.drawTexturedModalRect(var17, var15, 70, 0, 9, 9); - } - - if(var14 * 2 + 1 == var12) { - this.drawTexturedModalRect(var17, var15, 79, 0, 9, 9); - } - } - - if(var14 * 2 + 1 < var11) { - this.drawTexturedModalRect(var17, var15, 52, 0, 9, 9); - } - - if(var14 * 2 + 1 == var11) { - this.drawTexturedModalRect(var17, var15, 61, 0, 9, 9); - } - } - - if(this.mc.thePlayer.isInsideOfMaterial(Material.water)) { - var14 = (int)Math.ceil((double)(this.mc.thePlayer.air - 2) * 10.0D / 300.0D); - var15 = (int)Math.ceil((double)this.mc.thePlayer.air * 10.0D / 300.0D) - var14; - - for(var16 = 0; var16 < var14 + var15; ++var16) { - if(var16 < var14) { - this.drawTexturedModalRect(var6 / 2 - 91 + var16 * 8, var7 - 32 - 9, 16, 18, 9, 9); - } else { - this.drawTexturedModalRect(var6 / 2 - 91 + var16 * 8, var7 - 32 - 9, 25, 18, 9, 9); - } - } - } - } - - GL11.glDisable(GL11.GL_BLEND); - GL11.glEnable(GL12.GL_RESCALE_NORMAL); - GL11.glPushMatrix(); - GL11.glRotatef(180.0F, 1.0F, 0.0F, 0.0F); - RenderHelper.enableStandardItemLighting(); - GL11.glPopMatrix(); - - for(var13 = 0; var13 < 9; ++var13) { - var14 = var6 / 2 - 90 + var13 * 20 + 2; - var15 = var7 - 16 - 3; - this.renderInventorySlot(var13, var14, var15, var1); - } - - RenderHelper.disableStandardItemLighting(); - GL11.glDisable(GL12.GL_RESCALE_NORMAL); - if(this.mc.gameSettings.showFPS) { - var8.drawStringWithShadow("Minecraft Infdev (" + this.mc.debug + ")", 2, 2, 16777215); - var8.drawStringWithShadow(this.mc.debugInfoRenders(), 2, 12, 16777215); - var8.drawStringWithShadow(this.mc.getEntityDebug(), 2, 22, 16777215); - var8.drawStringWithShadow(this.mc.debugInfoEntities(), 2, 32, 16777215); - long var22 = Runtime.getRuntime().maxMemory(); - long var26 = Runtime.getRuntime().totalMemory(); - long var27 = Runtime.getRuntime().freeMemory(); - long var19 = var26 - var27; - String var21 = "Used memory: " + var19 * 100L / var22 + "% (" + var19 / 1024L / 1024L + "MB) of " + var22 / 1024L / 1024L + "MB"; - this.drawString(var8, var21, var6 - var8.getStringWidth(var21) - 2, 2, 14737632); - var21 = "Allocated memory: " + var26 * 100L / var22 + "% (" + var26 / 1024L / 1024L + "MB)"; - this.drawString(var8, var21, var6 - var8.getStringWidth(var21) - 2, 12, 14737632); - } else { - var8.drawStringWithShadow("Minecraft Infdev", 2, 2, 16777215); - } - - byte var23 = 10; - boolean var24 = false; - - for(var15 = 0; var15 < this.chatMessageList.size() && var15 < var23; ++var15) { - if(((ChatLine)this.chatMessageList.get(var15)).updateCounter < 200 || var24) { - var8.drawStringWithShadow(((ChatLine)this.chatMessageList.get(var15)).message, 2, var7 - 8 - var15 * 9 - 20, 16777215); - } - } - - } - - private void renderVignette(float var1, int var2, int var3) { - var1 = 1.0F - var1; - if(var1 < 0.0F) { - var1 = 0.0F; - } - - if(var1 > 1.0F) { - var1 = 1.0F; - } - - this.prevVignetteBrightness = (float)((double)this.prevVignetteBrightness + (double)(var1 - this.prevVignetteBrightness) * 0.01D); - GL11.glDisable(GL11.GL_DEPTH_TEST); - GL11.glDepthMask(false); - GL11.glBlendFunc(GL11.GL_ZERO, GL11.GL_ONE_MINUS_SRC_COLOR); - GL11.glColor4f(this.prevVignetteBrightness, this.prevVignetteBrightness, this.prevVignetteBrightness, 1.0F); - GL11.glBindTexture(GL11.GL_TEXTURE_2D, this.mc.renderEngine.getTexture("/misc/vignette.png")); - Tessellator var4 = Tessellator.instance; - var4.startDrawingQuads(); - var4.addVertexWithUV(0.0D, (double)var3, -90.0D, 0.0D, 1.0D); - var4.addVertexWithUV((double)var2, (double)var3, -90.0D, 1.0D, 1.0D); - var4.addVertexWithUV((double)var2, 0.0D, -90.0D, 1.0D, 0.0D); - var4.addVertexWithUV(0.0D, 0.0D, -90.0D, 0.0D, 0.0D); - var4.draw(); - GL11.glDepthMask(true); - GL11.glEnable(GL11.GL_DEPTH_TEST); - GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); - GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); - } - - private void renderInventorySlot(int var1, int var2, int var3, float var4) { - ItemStack var5 = this.mc.thePlayer.inventory.mainInventory[var1]; - if(var5 != null) { - float var6 = (float)var5.animationsToGo - var4; - if(var6 > 0.0F) { - GL11.glPushMatrix(); - float var7 = 1.0F + var6 / 5.0F; - GL11.glTranslatef((float)(var2 + 8), (float)(var3 + 12), 0.0F); - GL11.glScalef(1.0F / var7, (var7 + 1.0F) / 2.0F, 1.0F); - GL11.glTranslatef((float)(-(var2 + 8)), (float)(-(var3 + 12)), 0.0F); - } - - itemRenderer.drawItemIntoGui(this.mc.fontRenderer, this.mc.renderEngine, var5, var2, var3); - if(var6 > 0.0F) { - GL11.glPopMatrix(); - } - - itemRenderer.renderItemOverlayIntoGUI(this.mc.fontRenderer, this.mc.renderEngine, var5, var2, var3); - } - } - - public void updateTick() { - ++this.updateCounter; - - for(int var1 = 0; var1 < this.chatMessageList.size(); ++var1) { - ++((ChatLine)this.chatMessageList.get(var1)).updateCounter; - } - - } -} diff --git a/src/net/minecraft/src/GuiIngameMenu.java b/src/net/minecraft/src/GuiIngameMenu.java deleted file mode 100644 index a6b46fe..0000000 --- a/src/net/minecraft/src/GuiIngameMenu.java +++ /dev/null @@ -1,50 +0,0 @@ -package net.minecraft.src; - -public class GuiIngameMenu extends GuiScreen { - private int updateCounter2 = 0; - private int updateCounter = 0; - - public void initGui() { - this.updateCounter2 = 0; - this.controlList.clear(); - this.controlList.add(new GuiButton(1, this.width / 2 - 100, this.height / 4 + 48, "Save and quit to title..")); - this.controlList.add(new GuiButton(4, this.width / 2 - 100, this.height / 4 + 24, "Back to game")); - this.controlList.add(new GuiButton(0, this.width / 2 - 100, this.height / 4 + 96, "Options...")); - } - - protected void actionPerformed(GuiButton var1) { - if(var1.id == 0) { - this.mc.displayGuiScreen(new GuiOptions(this, this.mc.gameSettings)); - } - - if(var1.id == 1) { - this.mc.changeWorld1((World)null); - this.mc.displayGuiScreen(new GuiMainMenu()); - } - - if(var1.id == 4) { - this.mc.displayGuiScreen((GuiScreen)null); - this.mc.setIngameFocus(); - } - - } - - public void updateScreen() { - super.updateScreen(); - ++this.updateCounter; - } - - public void drawScreen(int var1, int var2, float var3) { - this.drawDefaultBackground(); - boolean var4 = !this.mc.theWorld.saveWorld(this.updateCounter2++); - if(var4 || this.updateCounter < 20) { - float var5 = ((float)(this.updateCounter % 10) + var3) / 10.0F; - var5 = MathHelper.sin(var5 * (float)Math.PI * 2.0F) * 0.2F + 0.8F; - int var6 = (int)(255.0F * var5); - this.drawString(this.fontRenderer, "Saving level..", 8, this.height - 16, var6 << 16 | var6 << 8 | var6); - } - - this.drawCenteredString(this.fontRenderer, "Game menu", this.width / 2, 40, 16777215); - super.drawScreen(var1, var2, var3); - } -} diff --git a/src/net/minecraft/src/GuiInventory.java b/src/net/minecraft/src/GuiInventory.java deleted file mode 100644 index a145409..0000000 --- a/src/net/minecraft/src/GuiInventory.java +++ /dev/null @@ -1,117 +0,0 @@ -package net.minecraft.src; - -import org.lwjgl.opengl.GL11; -import org.lwjgl.opengl.GL12; - -public class GuiInventory extends GuiContainer { - private InventoryCrafting craftingInventory = new InventoryCrafting(this, 2, 2); - private IInventory craftingResultInventory = new InventoryCraftResult(); - private float xSize_lo; - private float ySize_lo; - - public GuiInventory(IInventory var1) { - this.allowUserInput = true; - this.inventorySlots.add(new SlotCrafting(this, this.craftingInventory, this.craftingResultInventory, 0, 144, 36)); - - int var2; - int var3; - for(var2 = 0; var2 < 2; ++var2) { - for(var3 = 0; var3 < 2; ++var3) { - this.inventorySlots.add(new Slot(this, this.craftingInventory, var3 + var2 * 2, 88 + var3 * 18, 26 + var2 * 18)); - } - } - - for(var2 = 0; var2 < 4; ++var2) { - this.inventorySlots.add(new SlotArmor(this, this, var1, var1.getSizeInventory() - 1 - var2, 8, 8 + var2 * 18, var2)); - } - - for(var2 = 0; var2 < 3; ++var2) { - for(var3 = 0; var3 < 9; ++var3) { - this.inventorySlots.add(new Slot(this, var1, var3 + (var2 + 1) * 9, 8 + var3 * 18, 84 + var2 * 18)); - } - } - - for(var2 = 0; var2 < 9; ++var2) { - this.inventorySlots.add(new Slot(this, var1, var2, 8 + var2 * 18, 142)); - } - - } - - public void onGuiClosed() { - super.onGuiClosed(); - - for(int var1 = 0; var1 < this.craftingInventory.getSizeInventory(); ++var1) { - ItemStack var2 = this.craftingInventory.getStackInSlot(var1); - if(var2 != null) { - this.mc.thePlayer.dropPlayerItem(var2); - } - } - - } - - public void onCraftMatrixChanged(IInventory var1) { - int[] var2 = new int[9]; - - for(int var3 = 0; var3 < 3; ++var3) { - for(int var4 = 0; var4 < 3; ++var4) { - int var5 = -1; - if(var3 < 2 && var4 < 2) { - ItemStack var6 = this.craftingInventory.getStackInSlot(var3 + var4 * 2); - if(var6 != null) { - var5 = var6.itemID; - } - } - - var2[var3 + var4 * 3] = var5; - } - } - - this.craftingResultInventory.setInventorySlotContents(0, CraftingManager.getInstance().findMatchingRecipe(var2)); - } - - protected void drawGuiContainerForegroundLayer() { - this.fontRenderer.drawString("Crafting", 86, 16, 4210752); - } - - public void drawScreen(int var1, int var2, float var3) { - super.drawScreen(var1, var2, var3); - this.xSize_lo = (float)var1; - this.ySize_lo = (float)var2; - } - - protected void drawGuiContainerBackgroundLayer(float var1) { - int var2 = this.mc.renderEngine.getTexture("/gui/inventory.png"); - GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); - this.mc.renderEngine.bindTexture(var2); - int var3 = (this.width - this.xSize) / 2; - int var4 = (this.height - this.ySize) / 2; - this.drawTexturedModalRect(var3, var4, 0, 0, this.xSize, this.ySize); - GL11.glEnable(GL12.GL_RESCALE_NORMAL); - GL11.glEnable(GL11.GL_COLOR_MATERIAL); - GL11.glPushMatrix(); - GL11.glTranslatef((float)(var3 + 51), (float)(var4 + 75), 50.0F); - float var5 = 30.0F; - GL11.glScalef(-var5, var5, var5); - GL11.glRotatef(180.0F, 0.0F, 0.0F, 1.0F); - float var6 = this.mc.thePlayer.renderYawOffset; - float var7 = this.mc.thePlayer.rotationYaw; - float var8 = this.mc.thePlayer.rotationPitch; - float var9 = (float)(var3 + 51) - this.xSize_lo; - float var10 = (float)(var4 + 75 - 50) - this.ySize_lo; - GL11.glRotatef(135.0F, 0.0F, 1.0F, 0.0F); - RenderHelper.enableStandardItemLighting(); - GL11.glRotatef(-135.0F, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(-((float)Math.atan((double)(var10 / 40.0F))) * 20.0F, 1.0F, 0.0F, 0.0F); - this.mc.thePlayer.renderYawOffset = (float)Math.atan((double)(var9 / 40.0F)) * 20.0F; - this.mc.thePlayer.rotationYaw = (float)Math.atan((double)(var9 / 40.0F)) * 40.0F; - this.mc.thePlayer.rotationPitch = -((float)Math.atan((double)(var10 / 40.0F))) * 20.0F; - GL11.glTranslatef(0.0F, this.mc.thePlayer.yOffset, 0.0F); - RenderManager.instance.renderEntityWithPosYaw(this.mc.thePlayer, 0.0D, 0.0D, 0.0D, 0.0F, 1.0F); - this.mc.thePlayer.renderYawOffset = var6; - this.mc.thePlayer.rotationYaw = var7; - this.mc.thePlayer.rotationPitch = var8; - GL11.glPopMatrix(); - RenderHelper.disableStandardItemLighting(); - GL11.glDisable(GL12.GL_RESCALE_NORMAL); - } -} diff --git a/src/net/minecraft/src/GuiMainMenu.java b/src/net/minecraft/src/GuiMainMenu.java deleted file mode 100644 index 2b4f8ad..0000000 --- a/src/net/minecraft/src/GuiMainMenu.java +++ /dev/null @@ -1,71 +0,0 @@ -package net.minecraft.src; - -import org.lwjgl.opengl.GL11; - -public class GuiMainMenu extends GuiScreen { - private float updateCounter = 0.0F; - private String[] splashes = new String[]{"Pre-beta!", "As seen on TV!", "Awesome!", "100% pure!", "May contain nuts!", "Better than Prey!", "More polygons!", "Sexy!", "Limited edition!", "Flashing letters!", "Made by Notch!", "Coming soon!", "Best in class!", "When it\'s finished!", "Absolutely dragon free!", "Excitement!", "More than 5000 sold!", "One of a kind!", "700+ hits on YouTube!", "Indev!", "Spiders everywhere!", "Check it out!", "Holy cow, man!", "It\'s a game!", "Made in Sweden!", "Uses LWJGL!", "Reticulating splines!", "Minecraft!", "Yaaay!", "Alpha version!", "Singleplayer!", "Keyboard compatible!", "Undocumented!", "Ingots!", "Exploding creepers!", "That\'s not a moon!", "l33t!", "Create!", "Survive!", "Dungeon!", "Exclusive!", "The bee\'s knees!", "Down with O.P.P.!", "Closed source!", "Classy!", "Wow!", "Not on steam!", "9.95 euro!", "Half price!", "Oh man!", "Check it out!", "Awesome community!", "Pixels!", "Teetsuuuuoooo!", "Kaaneeeedaaaa!", "Now with difficulty!", "Enhanced!", "90% bug free!", "Pretty!", "12 herbs and spices!", "Fat free!", "Absolutely no memes!", "Free dental!", "Ask your doctor!", "Minors welcome!", "Cloud computing!", "Legal in Finland!", "Hard to label!", "Technically good!", "Bringing home the bacon!", "Indie!", "GOTY!", "Ceci n\'est pas une title screen!", "Euclidian!", "Now in 3D!", "Inspirational!", "Herregud!", "Complex cellular automata!", "Yes, sir!", "Played by cowboys!", "OpenGL 1.1!", "Thousands of colors!", "Try it!", "Age of Wonders is better!", "Try the mushroom stew!", "Sensational!", "Hot tamale, hot hot tamale!", "Play him off, keyboard cat!", "Guaranteed!", "Macroscopic!", "Bring it on!", "Random splash!", "Call your mother!", "Monster infighting!", "Loved by millions!", "Ultimate edition!", "Freaky!", "You\'ve got a brand new key!", "Water proof!", "Uninflammable!", "Whoa, dude!", "All inclusive!", "Tell your friends!", "NP is not in P!", "Notch <3 Ez!", "Music by C418!"}; - private String splashString = this.splashes[(int)(Math.random() * (double)this.splashes.length)]; - - public void updateScreen() { - this.updateCounter += 0.01F; - } - - protected void keyTyped(char var1, int var2) { - } - - public void initGui() { - this.controlList.clear(); - this.controlList.add(new GuiButton(1, this.width / 2 - 100, this.height / 4 + 48, "Single player")); - this.controlList.add(new GuiButton(2, this.width / 2 - 100, this.height / 4 + 72, "Multi player")); - this.controlList.add(new GuiButton(3, this.width / 2 - 100, this.height / 4 + 96, "Play tutorial level")); - this.controlList.add(new GuiButton(0, this.width / 2 - 100, this.height / 4 + 120 + 12, "Options...")); - ((GuiButton)this.controlList.get(1)).enabled = false; - ((GuiButton)this.controlList.get(2)).enabled = false; - if(this.mc.session == null) { - ((GuiButton)this.controlList.get(1)).enabled = false; - } - - } - - protected void actionPerformed(GuiButton var1) { - if(var1.id == 0) { - this.mc.displayGuiScreen(new GuiOptions(this, this.mc.gameSettings)); - } - - if(var1.id == 1) { - this.mc.displayGuiScreen(new GuiCreateWorld(this)); - } - - } - - public void drawScreen(int var1, int var2, float var3) { - this.drawDefaultBackground(); - Tessellator var4 = Tessellator.instance; - GL11.glBindTexture(GL11.GL_TEXTURE_2D, this.mc.renderEngine.getTexture("/gui/logo.png")); - short var5 = 256; - byte var6 = 49; - GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); - var4.setColorOpaque_I(16777215); - this.drawTexturedModalRect((this.width - var5) / 2, 30, 0, 0, var5, var6); - GL11.glPushMatrix(); - GL11.glTranslatef((float)(this.width / 2 + 90), 70.0F, 0.0F); - GL11.glRotatef(-20.0F, 0.0F, 0.0F, 1.0F); - float var7 = 1.8F - MathHelper.abs(MathHelper.sin((float)(System.currentTimeMillis() % 1000L) / 1000.0F * (float)Math.PI * 2.0F) * 0.1F); - var7 = var7 * 100.0F / (float)(this.fontRenderer.getStringWidth(this.splashString) + 32); - GL11.glScalef(var7, var7, var7); - this.drawCenteredString(this.fontRenderer, this.splashString, 0, -8, 16776960); - GL11.glPopMatrix(); - String var8 = "Copyright Mojang Specifications. Do not distribute."; - this.drawString(this.fontRenderer, var8, this.width - this.fontRenderer.getStringWidth(var8) - 2, this.height - 10, 16777215); - long var9 = Runtime.getRuntime().maxMemory(); - long var11 = Runtime.getRuntime().totalMemory(); - long var13 = Runtime.getRuntime().freeMemory(); - long var15 = var9 - var13; - var8 = "Free memory: " + var15 * 100L / var9 + "% of " + var9 / 1024L / 1024L + "MB"; - this.drawString(this.fontRenderer, var8, this.width - this.fontRenderer.getStringWidth(var8) - 2, 2, 8421504); - var8 = "Allocated memory: " + var11 * 100L / var9 + "% (" + var11 / 1024L / 1024L + "MB)"; - this.drawString(this.fontRenderer, var8, this.width - this.fontRenderer.getStringWidth(var8) - 2, 12, 8421504); - super.drawScreen(var1, var2, var3); - } -} diff --git a/src/net/minecraft/src/GuiOptions.java b/src/net/minecraft/src/GuiOptions.java deleted file mode 100644 index a6b73eb..0000000 --- a/src/net/minecraft/src/GuiOptions.java +++ /dev/null @@ -1,45 +0,0 @@ -package net.minecraft.src; - -public class GuiOptions extends GuiScreen { - private GuiScreen parentScreen; - protected String screenTitle = "Options"; - private GameSettings options; - - public GuiOptions(GuiScreen var1, GameSettings var2) { - this.parentScreen = var1; - this.options = var2; - } - - public void initGui() { - for(int var1 = 0; var1 < this.options.numberOfOptions; ++var1) { - this.controlList.add(new GuiSmallButton(var1, this.width / 2 - 155 + var1 % 2 * 160, this.height / 6 + 24 * (var1 >> 1), this.options.getKeyBinding(var1))); - } - - this.controlList.add(new GuiButton(100, this.width / 2 - 100, this.height / 6 + 120 + 12, "Controls...")); - this.controlList.add(new GuiButton(200, this.width / 2 - 100, this.height / 6 + 168, "Done")); - } - - protected void actionPerformed(GuiButton var1) { - if(var1.enabled) { - if(var1.id < 100) { - this.options.setOptionFloatValue(var1.id, 1); - var1.displayString = this.options.getKeyBinding(var1.id); - } - - if(var1.id == 100) { - this.mc.displayGuiScreen(new GuiControls(this, this.options)); - } - - if(var1.id == 200) { - this.mc.displayGuiScreen(this.parentScreen); - } - - } - } - - public void drawScreen(int var1, int var2, float var3) { - this.drawDefaultBackground(); - this.drawCenteredString(this.fontRenderer, this.screenTitle, this.width / 2, 20, 16777215); - super.drawScreen(var1, var2, var3); - } -} diff --git a/src/net/minecraft/src/GuiScreen.java b/src/net/minecraft/src/GuiScreen.java deleted file mode 100644 index 392f9fc..0000000 --- a/src/net/minecraft/src/GuiScreen.java +++ /dev/null @@ -1,138 +0,0 @@ -package net.minecraft.src; - -import java.util.ArrayList; -import java.util.List; -import org.lwjgl.input.Keyboard; -import org.lwjgl.input.Mouse; -import org.lwjgl.opengl.GL11; - -public class GuiScreen extends Gui { - protected Minecraft mc; - public int width; - public int height; - protected List controlList = new ArrayList(); - public boolean allowUserInput = false; - protected FontRenderer fontRenderer; - - public void drawScreen(int var1, int var2, float var3) { - for(int var4 = 0; var4 < this.controlList.size(); ++var4) { - GuiButton var5 = (GuiButton)this.controlList.get(var4); - var5.drawButton(this.mc, var1, var2); - } - - } - - protected void keyTyped(char var1, int var2) { - if(var2 == 1) { - this.mc.displayGuiScreen((GuiScreen)null); - this.mc.setIngameFocus(); - } - - } - - protected void mouseClicked(int var1, int var2, int var3) { - if(var3 == 0) { - for(int var4 = 0; var4 < this.controlList.size(); ++var4) { - GuiButton var5 = (GuiButton)this.controlList.get(var4); - if(var5.mousePressed(var1, var2)) { - this.mc.sndManager.playSoundFX("random.click", 1.0F, 1.0F); - this.actionPerformed(var5); - } - } - } - - } - - protected void mouseMovedOrUp(int var1, int var2, int var3) { - } - - protected void actionPerformed(GuiButton var1) { - } - - public void setWorldAndResolution(Minecraft var1, int var2, int var3) { - this.mc = var1; - this.fontRenderer = var1.fontRenderer; - this.width = var2; - this.height = var3; - this.initGui(); - } - - public void initGui() { - } - - public void handleInput() { - while(Mouse.next()) { - this.handleMouseInput(); - } - - while(Keyboard.next()) { - this.handleKeyboardInput(); - } - - } - - public void handleMouseInput() { - int var1; - int var2; - if(Mouse.getEventButtonState()) { - var1 = Mouse.getEventX() * this.width / this.mc.displayWidth; - var2 = this.height - Mouse.getEventY() * this.height / this.mc.displayHeight - 1; - this.mouseClicked(var1, var2, Mouse.getEventButton()); - } else { - var1 = Mouse.getEventX() * this.width / this.mc.displayWidth; - var2 = this.height - Mouse.getEventY() * this.height / this.mc.displayHeight - 1; - this.mouseMovedOrUp(var1, var2, Mouse.getEventButton()); - } - - } - - public void handleKeyboardInput() { - if(Keyboard.getEventKeyState()) { - if(Keyboard.getEventKey() == Keyboard.KEY_F11) { - this.mc.toggleFullscreen(); - return; - } - - this.keyTyped(Keyboard.getEventCharacter(), Keyboard.getEventKey()); - } - - } - - public void updateScreen() { - } - - public void onGuiClosed() { - } - - public void drawDefaultBackground() { - this.drawWorldBackground(0); - } - - public void drawWorldBackground(int var1) { - if(this.mc.theWorld != null) { - this.drawGradientRect(0, 0, this.width, this.height, 1610941696, -1607454656); - } else { - GL11.glDisable(GL11.GL_LIGHTING); - GL11.glDisable(GL11.GL_FOG); - Tessellator var2 = Tessellator.instance; - GL11.glBindTexture(GL11.GL_TEXTURE_2D, this.mc.renderEngine.getTexture("/dirt.png")); - GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); - float var3 = 32.0F; - var2.startDrawingQuads(); - var2.setColorOpaque_I(4210752); - var2.addVertexWithUV(0.0D, (double)this.height, 0.0D, 0.0D, (double)((float)this.height / var3 + (float)var1)); - var2.addVertexWithUV((double)this.width, (double)this.height, 0.0D, (double)((float)this.width / var3), (double)((float)this.height / var3 + (float)var1)); - var2.addVertexWithUV((double)this.width, 0.0D, 0.0D, (double)((float)this.width / var3), (double)(0 + var1)); - var2.addVertexWithUV(0.0D, 0.0D, 0.0D, 0.0D, (double)(0 + var1)); - var2.draw(); - } - - } - - public boolean doesGuiPauseGame() { - return true; - } - - public void deleteWorld(boolean var1, int var2) { - } -} diff --git a/src/net/minecraft/src/GuiSmallButton.java b/src/net/minecraft/src/GuiSmallButton.java deleted file mode 100644 index e64c277..0000000 --- a/src/net/minecraft/src/GuiSmallButton.java +++ /dev/null @@ -1,7 +0,0 @@ -package net.minecraft.src; - -public class GuiSmallButton extends GuiButton { - public GuiSmallButton(int var1, int var2, int var3, String var4) { - super(var1, var2, var3, 150, 20, var4); - } -} diff --git a/src/net/minecraft/src/GuiYesNo.java b/src/net/minecraft/src/GuiYesNo.java deleted file mode 100644 index 3c22273..0000000 --- a/src/net/minecraft/src/GuiYesNo.java +++ /dev/null @@ -1,31 +0,0 @@ -package net.minecraft.src; - -public class GuiYesNo extends GuiScreen { - private GuiScreen parentScreen; - private String message1; - private String message2; - private int worldNumber; - - public GuiYesNo(GuiScreen var1, String var2, String var3, int var4) { - this.parentScreen = var1; - this.message1 = var2; - this.message2 = var3; - this.worldNumber = var4; - } - - public void initGui() { - this.controlList.add(new GuiSmallButton(0, this.width / 2 - 155 + 0, this.height / 6 + 96, "Yes")); - this.controlList.add(new GuiSmallButton(1, this.width / 2 - 155 + 160, this.height / 6 + 96, "No")); - } - - protected void actionPerformed(GuiButton var1) { - this.parentScreen.deleteWorld(var1.id == 0, this.worldNumber); - } - - public void drawScreen(int var1, int var2, float var3) { - this.drawDefaultBackground(); - this.drawCenteredString(this.fontRenderer, this.message1, this.width / 2, 70, 16777215); - this.drawCenteredString(this.fontRenderer, this.message2, this.width / 2, 90, 16777215); - super.drawScreen(var1, var2, var3); - } -} diff --git a/src/net/minecraft/src/IBlockAccess.java b/src/net/minecraft/src/IBlockAccess.java deleted file mode 100644 index 007ce98..0000000 --- a/src/net/minecraft/src/IBlockAccess.java +++ /dev/null @@ -1,15 +0,0 @@ -package net.minecraft.src; - -public interface IBlockAccess { - int getBlockId(int var1, int var2, int var3); - - TileEntity getBlockTileEntity(int var1, int var2, int var3); - - float getBrightness(int var1, int var2, int var3); - - int getBlockMetadata(int var1, int var2, int var3); - - Material getBlockMaterial(int var1, int var2, int var3); - - boolean isBlockNormalCube(int var1, int var2, int var3); -} diff --git a/src/net/minecraft/src/ICamera.java b/src/net/minecraft/src/ICamera.java deleted file mode 100644 index fb186f4..0000000 --- a/src/net/minecraft/src/ICamera.java +++ /dev/null @@ -1,7 +0,0 @@ -package net.minecraft.src; - -public interface ICamera { - boolean isBoundingBoxInFrustum(AxisAlignedBB var1); - - void setPosition(double var1, double var3, double var5); -} diff --git a/src/net/minecraft/src/IChunkLoader.java b/src/net/minecraft/src/IChunkLoader.java deleted file mode 100644 index c197feb..0000000 --- a/src/net/minecraft/src/IChunkLoader.java +++ /dev/null @@ -1,15 +0,0 @@ -package net.minecraft.src; - -import java.io.IOException; - -public interface IChunkLoader { - Chunk loadChunk(World var1, int var2, int var3) throws IOException; - - void saveChunk(World var1, Chunk var2) throws IOException; - - void saveExtraChunkData(World var1, Chunk var2); - - void chunkTick(); - - void saveExtraData(); -} diff --git a/src/net/minecraft/src/IChunkProvider.java b/src/net/minecraft/src/IChunkProvider.java deleted file mode 100644 index 37743c9..0000000 --- a/src/net/minecraft/src/IChunkProvider.java +++ /dev/null @@ -1,15 +0,0 @@ -package net.minecraft.src; - -public interface IChunkProvider { - boolean chunkExists(int var1, int var2); - - Chunk provideChunk(int var1, int var2); - - void populate(IChunkProvider var1, int var2, int var3); - - boolean saveChunks(boolean var1, IProgressUpdate var2); - - boolean unload100OldestChunks(); - - boolean canSave(); -} diff --git a/src/net/minecraft/src/IInventory.java b/src/net/minecraft/src/IInventory.java deleted file mode 100644 index b4564c7..0000000 --- a/src/net/minecraft/src/IInventory.java +++ /dev/null @@ -1,17 +0,0 @@ -package net.minecraft.src; - -public interface IInventory { - int getSizeInventory(); - - ItemStack getStackInSlot(int var1); - - ItemStack decrStackSize(int var1, int var2); - - void setInventorySlotContents(int var1, ItemStack var2); - - String getInvName(); - - int getInventoryStackLimit(); - - void onInventoryChanged(); -} diff --git a/src/net/minecraft/src/IProgressUpdate.java b/src/net/minecraft/src/IProgressUpdate.java deleted file mode 100644 index 1fb3c60..0000000 --- a/src/net/minecraft/src/IProgressUpdate.java +++ /dev/null @@ -1,9 +0,0 @@ -package net.minecraft.src; - -public interface IProgressUpdate { - void displayProgressMessage(String var1); - - void displayLoadingString(String var1); - - void setLoadingProgress(int var1); -} diff --git a/src/net/minecraft/src/IWorldAccess.java b/src/net/minecraft/src/IWorldAccess.java deleted file mode 100644 index abcfcea..0000000 --- a/src/net/minecraft/src/IWorldAccess.java +++ /dev/null @@ -1,17 +0,0 @@ -package net.minecraft.src; - -public interface IWorldAccess { - void markBlockAndNeighborsNeedsUpdate(int var1, int var2, int var3); - - void markBlockRangeNeedsUpdate(int var1, int var2, int var3, int var4, int var5, int var6); - - void playSound(String var1, double var2, double var4, double var6, float var8, float var9); - - void spawnParticle(String var1, double var2, double var4, double var6, double var8, double var10, double var12); - - void obtainEntitySkin(Entity var1); - - void releaseEntitySkin(Entity var1); - - void updateAllRenderers(); -} diff --git a/src/net/minecraft/src/ImageBuffer.java b/src/net/minecraft/src/ImageBuffer.java deleted file mode 100644 index 149f101..0000000 --- a/src/net/minecraft/src/ImageBuffer.java +++ /dev/null @@ -1,7 +0,0 @@ -package net.minecraft.src; - -import java.awt.image.BufferedImage; - -public interface ImageBuffer { - BufferedImage parseUserSkin(BufferedImage var1); -} diff --git a/src/net/minecraft/src/ImageBufferDownload.java b/src/net/minecraft/src/ImageBufferDownload.java deleted file mode 100644 index 39d9761..0000000 --- a/src/net/minecraft/src/ImageBufferDownload.java +++ /dev/null @@ -1,88 +0,0 @@ -package net.minecraft.src; - -import java.awt.Graphics; -import java.awt.image.BufferedImage; -import java.awt.image.DataBufferInt; -import java.awt.image.ImageObserver; - -public class ImageBufferDownload implements ImageBuffer { - private int[] imageData; - private int imageWidth; - private int imageHeight; - - public BufferedImage parseUserSkin(BufferedImage var1) { - if(var1 == null) { - return null; - } else { - this.imageWidth = 64; - this.imageHeight = 32; - BufferedImage var2 = new BufferedImage(this.imageWidth, this.imageHeight, 2); - Graphics var3 = var2.getGraphics(); - var3.drawImage(var1, 0, 0, (ImageObserver)null); - var3.dispose(); - this.imageData = ((DataBufferInt)var2.getRaster().getDataBuffer()).getData(); - this.setAreaOpaque(0, 0, 32, 16); - this.setAreaTransparent(32, 0, 64, 32); - this.setAreaOpaque(0, 16, 64, 32); - boolean var4 = false; - - int var5; - int var6; - int var7; - for(var5 = 32; var5 < 64; ++var5) { - for(var6 = 0; var6 < 16; ++var6) { - var7 = this.imageData[var5 + var6 * 64]; - if((var7 >> 24 & 255) < 128) { - var4 = true; - } - } - } - - if(!var4) { - for(var5 = 32; var5 < 64; ++var5) { - for(var6 = 0; var6 < 16; ++var6) { - var7 = this.imageData[var5 + var6 * 64]; - if((var7 >> 24 & 255) < 128) { - var4 = true; - } - } - } - } - - return var2; - } - } - - private void setAreaTransparent(int var1, int var2, int var3, int var4) { - if(!this.hasTransparency(var1, var2, var3, var4)) { - for(int var5 = var1; var5 < var3; ++var5) { - for(int var6 = var2; var6 < var4; ++var6) { - this.imageData[var5 + var6 * this.imageWidth] &= 16777215; - } - } - - } - } - - private void setAreaOpaque(int var1, int var2, int var3, int var4) { - for(int var5 = var1; var5 < var3; ++var5) { - for(int var6 = var2; var6 < var4; ++var6) { - this.imageData[var5 + var6 * this.imageWidth] |= -16777216; - } - } - - } - - private boolean hasTransparency(int var1, int var2, int var3, int var4) { - for(int var5 = var1; var5 < var3; ++var5) { - for(int var6 = var2; var6 < var4; ++var6) { - int var7 = this.imageData[var5 + var6 * this.imageWidth]; - if((var7 >> 24 & 255) < 128) { - return true; - } - } - } - - return false; - } -} diff --git a/src/net/minecraft/src/InventoryCraftResult.java b/src/net/minecraft/src/InventoryCraftResult.java deleted file mode 100644 index de21b2a..0000000 --- a/src/net/minecraft/src/InventoryCraftResult.java +++ /dev/null @@ -1,38 +0,0 @@ -package net.minecraft.src; - -public class InventoryCraftResult implements IInventory { - private ItemStack[] stackResult = new ItemStack[1]; - - public int getSizeInventory() { - return 1; - } - - public ItemStack getStackInSlot(int var1) { - return this.stackResult[var1]; - } - - public String getInvName() { - return "Result"; - } - - public ItemStack decrStackSize(int var1, int var2) { - if(this.stackResult[var1] != null) { - ItemStack var3 = this.stackResult[var1]; - this.stackResult[var1] = null; - return var3; - } else { - return null; - } - } - - public void setInventorySlotContents(int var1, ItemStack var2) { - this.stackResult[var1] = var2; - } - - public int getInventoryStackLimit() { - return 64; - } - - public void onInventoryChanged() { - } -} diff --git a/src/net/minecraft/src/InventoryCrafting.java b/src/net/minecraft/src/InventoryCrafting.java deleted file mode 100644 index b5b78c3..0000000 --- a/src/net/minecraft/src/InventoryCrafting.java +++ /dev/null @@ -1,59 +0,0 @@ -package net.minecraft.src; - -public class InventoryCrafting implements IInventory { - private ItemStack[] stackList; - private int gridSize; - private GuiContainer craftingInventory; - - public InventoryCrafting(GuiContainer var1, int var2, int var3) { - this.gridSize = var2 * var3; - this.stackList = new ItemStack[this.gridSize]; - this.craftingInventory = var1; - } - - public int getSizeInventory() { - return this.gridSize; - } - - public ItemStack getStackInSlot(int var1) { - return this.stackList[var1]; - } - - public String getInvName() { - return "Crafting"; - } - - public ItemStack decrStackSize(int var1, int var2) { - if(this.stackList[var1] != null) { - ItemStack var3; - if(this.stackList[var1].stackSize <= var2) { - var3 = this.stackList[var1]; - this.stackList[var1] = null; - this.craftingInventory.onCraftMatrixChanged(this); - return var3; - } else { - var3 = this.stackList[var1].splitStack(var2); - if(this.stackList[var1].stackSize == 0) { - this.stackList[var1] = null; - } - - this.craftingInventory.onCraftMatrixChanged(this); - return var3; - } - } else { - return null; - } - } - - public void setInventorySlotContents(int var1, ItemStack var2) { - this.stackList[var1] = var2; - this.craftingInventory.onCraftMatrixChanged(this); - } - - public int getInventoryStackLimit() { - return 64; - } - - public void onInventoryChanged() { - } -} diff --git a/src/net/minecraft/src/InventoryLargeChest.java b/src/net/minecraft/src/InventoryLargeChest.java deleted file mode 100644 index daced98..0000000 --- a/src/net/minecraft/src/InventoryLargeChest.java +++ /dev/null @@ -1,47 +0,0 @@ -package net.minecraft.src; - -public class InventoryLargeChest implements IInventory { - private String name; - private IInventory upperChest; - private IInventory lowerChest; - - public InventoryLargeChest(String var1, IInventory var2, IInventory var3) { - this.name = var1; - this.upperChest = var2; - this.lowerChest = var3; - } - - public int getSizeInventory() { - return this.upperChest.getSizeInventory() + this.lowerChest.getSizeInventory(); - } - - public String getInvName() { - return this.name; - } - - public ItemStack getStackInSlot(int var1) { - return var1 >= this.upperChest.getSizeInventory() ? this.lowerChest.getStackInSlot(var1 - this.upperChest.getSizeInventory()) : this.upperChest.getStackInSlot(var1); - } - - public ItemStack decrStackSize(int var1, int var2) { - return var1 >= this.upperChest.getSizeInventory() ? this.lowerChest.decrStackSize(var1 - this.upperChest.getSizeInventory(), var2) : this.upperChest.decrStackSize(var1, var2); - } - - public void setInventorySlotContents(int var1, ItemStack var2) { - if(var1 >= this.upperChest.getSizeInventory()) { - this.lowerChest.setInventorySlotContents(var1 - this.upperChest.getSizeInventory(), var2); - } else { - this.upperChest.setInventorySlotContents(var1, var2); - } - - } - - public int getInventoryStackLimit() { - return this.upperChest.getInventoryStackLimit(); - } - - public void onInventoryChanged() { - this.upperChest.onInventoryChanged(); - this.lowerChest.onInventoryChanged(); - } -} diff --git a/src/net/minecraft/src/InventoryPlayer.java b/src/net/minecraft/src/InventoryPlayer.java deleted file mode 100644 index 3c5e832..0000000 --- a/src/net/minecraft/src/InventoryPlayer.java +++ /dev/null @@ -1,329 +0,0 @@ -package net.minecraft.src; - -public class InventoryPlayer implements IInventory { - public ItemStack[] mainInventory = new ItemStack[36]; - public ItemStack[] armorInventory = new ItemStack[4]; - public int currentItem = 0; - private EntityPlayer player; - - public InventoryPlayer(EntityPlayer var1) { - this.player = var1; - } - - public ItemStack getCurrentItem() { - return this.mainInventory[this.currentItem]; - } - - private int getInventorySlotContainItem(int var1) { - for(int var2 = 0; var2 < this.mainInventory.length; ++var2) { - if(this.mainInventory[var2] != null && this.mainInventory[var2].itemID == var1) { - return var2; - } - } - - return -1; - } - - private int storeItemStack(int var1) { - for(int var2 = 0; var2 < this.mainInventory.length; ++var2) { - if(this.mainInventory[var2] != null && this.mainInventory[var2].itemID == var1 && this.mainInventory[var2].stackSize < this.mainInventory[var2].getMaxStackSize() && this.mainInventory[var2].stackSize < this.getInventoryStackLimit()) { - return var2; - } - } - - return -1; - } - - private int getFirstEmptyStack() { - for(int var1 = 0; var1 < this.mainInventory.length; ++var1) { - if(this.mainInventory[var1] == null) { - return var1; - } - } - - return -1; - } - - public void setCurrentItem(int var1, boolean var2) { - int var3 = this.getInventorySlotContainItem(var1); - if(var3 >= 0 && var3 < 9) { - this.currentItem = var3; - } - } - - public void changeCurrentItem(int var1) { - if(var1 > 0) { - var1 = 1; - } - - if(var1 < 0) { - var1 = -1; - } - - for(this.currentItem -= var1; this.currentItem < 0; this.currentItem += 9) { - } - - while(this.currentItem >= 9) { - this.currentItem -= 9; - } - - } - - private int storePartialItemStack(int var1, int var2) { - int var3 = this.storeItemStack(var1); - if(var3 < 0) { - var3 = this.getFirstEmptyStack(); - } - - if(var3 < 0) { - return var2; - } else { - if(this.mainInventory[var3] == null) { - this.mainInventory[var3] = new ItemStack(var1, 0); - } - - int var4 = var2; - if(var2 > this.mainInventory[var3].getMaxStackSize() - this.mainInventory[var3].stackSize) { - var4 = this.mainInventory[var3].getMaxStackSize() - this.mainInventory[var3].stackSize; - } - - if(var4 > this.getInventoryStackLimit() - this.mainInventory[var3].stackSize) { - var4 = this.getInventoryStackLimit() - this.mainInventory[var3].stackSize; - } - - if(var4 == 0) { - return var2; - } else { - var2 -= var4; - this.mainInventory[var3].stackSize += var4; - this.mainInventory[var3].animationsToGo = 5; - return var2; - } - } - } - - public void decrementAnimations() { - for(int var1 = 0; var1 < this.mainInventory.length; ++var1) { - if(this.mainInventory[var1] != null && this.mainInventory[var1].animationsToGo > 0) { - --this.mainInventory[var1].animationsToGo; - } - } - - } - - public boolean consumeInventoryItem(int var1) { - int var2 = this.getInventorySlotContainItem(var1); - if(var2 < 0) { - return false; - } else { - if(--this.mainInventory[var2].stackSize <= 0) { - this.mainInventory[var2] = null; - } - - return true; - } - } - - public boolean addItemStackToInventory(ItemStack var1) { - if(var1.itemDmg == 0) { - var1.stackSize = this.storePartialItemStack(var1.itemID, var1.stackSize); - if(var1.stackSize == 0) { - return true; - } - } - - int var2 = this.getFirstEmptyStack(); - if(var2 >= 0) { - this.mainInventory[var2] = var1; - this.mainInventory[var2].animationsToGo = 5; - return true; - } else { - return false; - } - } - - public ItemStack decrStackSize(int var1, int var2) { - ItemStack[] var3 = this.mainInventory; - if(var1 >= this.mainInventory.length) { - var3 = this.armorInventory; - var1 -= this.mainInventory.length; - } - - if(var3[var1] != null) { - ItemStack var4; - if(var3[var1].stackSize <= var2) { - var4 = var3[var1]; - var3[var1] = null; - return var4; - } else { - var4 = var3[var1].splitStack(var2); - if(var3[var1].stackSize == 0) { - var3[var1] = null; - } - - return var4; - } - } else { - return null; - } - } - - public void setInventorySlotContents(int var1, ItemStack var2) { - ItemStack[] var3 = this.mainInventory; - if(var1 >= this.mainInventory.length) { - var3 = this.armorInventory; - var1 -= this.mainInventory.length; - } - - var3[var1] = var2; - } - - public float getStrVsBlock(Block var1) { - float var2 = 1.0F; - if(this.mainInventory[this.currentItem] != null) { - var2 *= this.mainInventory[this.currentItem].getStrVsBlock(var1); - } - - return var2; - } - - public NBTTagList writeToNBT(NBTTagList var1) { - int var2; - NBTTagCompound var3; - for(var2 = 0; var2 < this.mainInventory.length; ++var2) { - if(this.mainInventory[var2] != null) { - var3 = new NBTTagCompound(); - var3.setByte("Slot", (byte)var2); - this.mainInventory[var2].writeToNBT(var3); - var1.setTag(var3); - } - } - - for(var2 = 0; var2 < this.armorInventory.length; ++var2) { - if(this.armorInventory[var2] != null) { - var3 = new NBTTagCompound(); - var3.setByte("Slot", (byte)(var2 + 100)); - this.armorInventory[var2].writeToNBT(var3); - var1.setTag(var3); - } - } - - return var1; - } - - public void readFromNBT(NBTTagList var1) { - this.mainInventory = new ItemStack[36]; - this.armorInventory = new ItemStack[4]; - - for(int var2 = 0; var2 < var1.tagCount(); ++var2) { - NBTTagCompound var3 = (NBTTagCompound)var1.tagAt(var2); - int var4 = var3.getByte("Slot") & 255; - if(var4 >= 0 && var4 < this.mainInventory.length) { - this.mainInventory[var4] = new ItemStack(var3); - } - - if(var4 >= 100 && var4 < this.armorInventory.length + 100) { - this.armorInventory[var4 - 100] = new ItemStack(var3); - } - } - - } - - public int getSizeInventory() { - return this.mainInventory.length + 4; - } - - public ItemStack getStackInSlot(int var1) { - ItemStack[] var2 = this.mainInventory; - if(var1 >= this.mainInventory.length) { - var2 = this.armorInventory; - var1 -= this.mainInventory.length; - } - - return var2[var1]; - } - - public String getInvName() { - return "Inventory"; - } - - public int getInventoryStackLimit() { - return 64; - } - - public int getDamageVsEntity(Entity var1) { - ItemStack var2 = this.getStackInSlot(this.currentItem); - return var2 != null ? var2.getDamageVsEntity(var1) : 1; - } - - public boolean canHarvestBlock(Block var1) { - if(var1.blockMaterial != Material.rock && var1.blockMaterial != Material.iron) { - return true; - } else { - ItemStack var2 = this.getStackInSlot(this.currentItem); - return var2 != null ? var2.canHarvestBlock(var1) : false; - } - } - - public ItemStack armorItemInSlot(int var1) { - return this.armorInventory[var1]; - } - - public int getTotalArmorValue() { - int var1 = 0; - int var2 = 0; - int var3 = 0; - - for(int var4 = 0; var4 < this.armorInventory.length; ++var4) { - if(this.armorInventory[var4] != null && this.armorInventory[var4].getItem() instanceof ItemArmor) { - int var5 = this.armorInventory[var4].getMaxDamage(); - int var6 = this.armorInventory[var4].itemDmg; - int var7 = var5 - var6; - var2 += var7; - var3 += var5; - int var8 = ((ItemArmor)this.armorInventory[var4].getItem()).damageReduceAmount; - var1 += var8; - } - } - - if(var3 == 0) { - return 0; - } else { - return (var1 - 1) * var2 / var3 + 1; - } - } - - public void damageArmor(int var1) { - for(int var2 = 0; var2 < this.armorInventory.length; ++var2) { - if(this.armorInventory[var2] != null && this.armorInventory[var2].getItem() instanceof ItemArmor) { - this.armorInventory[var2].damageItem(var1); - if(this.armorInventory[var2].stackSize == 0) { - this.armorInventory[var2].onItemDestroyedByUse(this.player); - this.armorInventory[var2] = null; - } - } - } - - } - - public void dropAllItems() { - int var1; - for(var1 = 0; var1 < this.mainInventory.length; ++var1) { - if(this.mainInventory[var1] != null) { - this.player.dropPlayerItemWithRandomChoice(this.mainInventory[var1], true); - this.mainInventory[var1] = null; - } - } - - for(var1 = 0; var1 < this.armorInventory.length; ++var1) { - if(this.armorInventory[var1] != null) { - this.player.dropPlayerItemWithRandomChoice(this.armorInventory[var1], true); - this.armorInventory[var1] = null; - } - } - - } - - public void onInventoryChanged() { - } -} diff --git a/src/net/minecraft/src/IsoImageBuffer.java b/src/net/minecraft/src/IsoImageBuffer.java deleted file mode 100644 index 51bd4c2..0000000 --- a/src/net/minecraft/src/IsoImageBuffer.java +++ /dev/null @@ -1,32 +0,0 @@ -package net.minecraft.src; - -import java.awt.image.BufferedImage; - -public class IsoImageBuffer { - public BufferedImage image; - public World level; - public int chunkX; - public int chunkZ; - public boolean rendered = false; - public boolean noContent = false; - public int lastVisible = 0; - public boolean addedToRenderQueue = false; - - public IsoImageBuffer(World var1, int var2, int var3) { - this.level = var1; - this.setChunkPosition(var2, var3); - } - - public void setChunkPosition(int var1, int var2) { - this.rendered = false; - this.chunkX = var1; - this.chunkZ = var2; - this.lastVisible = 0; - this.addedToRenderQueue = false; - } - - public void setWorldAndChunkPosition(World var1, int var2, int var3) { - this.level = var1; - this.setChunkPosition(var2, var3); - } -} diff --git a/src/net/minecraft/src/Item.java b/src/net/minecraft/src/Item.java deleted file mode 100644 index 5f953d1..0000000 --- a/src/net/minecraft/src/Item.java +++ /dev/null @@ -1,141 +0,0 @@ -package net.minecraft.src; - -import java.util.Random; - -public class Item { - protected static Random itemRand = new Random(); - public static Item[] itemsList = new Item[1024]; - public static Item shovel = (new ItemSpade(0, 2)).setIconIndex(82); - public static Item pickaxeSteel = (new ItemPickaxe(1, 2)).setIconIndex(98); - public static Item axeSteel = (new ItemAxe(2, 2)).setIconIndex(114); - public static Item striker = (new ItemFlintAndSteel(3)).setIconIndex(5); - public static Item appleRed = (new ItemFood(4, 4)).setIconIndex(10); - public static Item bow = (new ItemBow(5)).setIconIndex(21); - public static Item arrow = (new Item(6)).setIconIndex(37); - public static Item coal = (new Item(7)).setIconIndex(7); - public static Item diamond = (new Item(8)).setIconIndex(55); - public static Item ingotIron = (new Item(9)).setIconIndex(23); - public static Item ingotGold = (new Item(10)).setIconIndex(39); - public static Item swordSteel = (new ItemSword(11, 2)).setIconIndex(66); - public static Item swordWood = (new ItemSword(12, 0)).setIconIndex(64); - public static Item shovelWood = (new ItemSpade(13, 0)).setIconIndex(80); - public static Item pickaxeWood = (new ItemPickaxe(14, 0)).setIconIndex(96); - public static Item axeWood = (new ItemAxe(15, 0)).setIconIndex(112); - public static Item swordStone = (new ItemSword(16, 1)).setIconIndex(65); - public static Item shovelStone = (new ItemSpade(17, 1)).setIconIndex(81); - public static Item pickaxeStone = (new ItemPickaxe(18, 1)).setIconIndex(97); - public static Item axeStone = (new ItemAxe(19, 1)).setIconIndex(113); - public static Item swordDiamond = (new ItemSword(20, 3)).setIconIndex(67); - public static Item shovelDiamond = (new ItemSpade(21, 3)).setIconIndex(83); - public static Item pickaxeDiamond = (new ItemPickaxe(22, 3)).setIconIndex(99); - public static Item axeDiamond = (new ItemAxe(23, 3)).setIconIndex(115); - public static Item stick = (new Item(24)).setIconIndex(53); - public static Item bowlEmpty = (new Item(25)).setIconIndex(71); - public static Item bowlSoup = (new ItemSoup(26, 10)).setIconIndex(72); - public static Item swordGold = (new ItemSword(27, 0)).setIconIndex(68); - public static Item shovelGold = (new ItemSpade(28, 0)).setIconIndex(84); - public static Item pickaxeGold = (new ItemPickaxe(29, 0)).setIconIndex(100); - public static Item axeGold = (new ItemAxe(30, 0)).setIconIndex(116); - public static Item silk = (new Item(31)).setIconIndex(8); - public static Item feather = (new Item(32)).setIconIndex(24); - public static Item gunpowder = (new Item(33)).setIconIndex(40); - public static Item hoeWood = (new ItemHoe(34, 0)).setIconIndex(128); - public static Item hoeStone = (new ItemHoe(35, 1)).setIconIndex(129); - public static Item hoeSteel = (new ItemHoe(36, 2)).setIconIndex(130); - public static Item hoeDiamond = (new ItemHoe(37, 3)).setIconIndex(131); - public static Item hoeGold = (new ItemHoe(38, 4)).setIconIndex(132); - public static Item seeds = (new ItemSeeds(39, Block.crops.blockID)).setIconIndex(9); - public static Item wheat = (new Item(40)).setIconIndex(25); - public static Item bread = (new ItemFood(41, 5)).setIconIndex(41); - public static Item helmetLeather = (new ItemArmor(42, 0, 0, 0)).setIconIndex(0); - public static Item plateLeather = (new ItemArmor(43, 0, 0, 1)).setIconIndex(16); - public static Item legsLeather = (new ItemArmor(44, 0, 0, 2)).setIconIndex(32); - public static Item bootsLeather = (new ItemArmor(45, 0, 0, 3)).setIconIndex(48); - public static Item helmetChain = (new ItemArmor(46, 1, 1, 0)).setIconIndex(1); - public static Item plateChain = (new ItemArmor(47, 1, 1, 1)).setIconIndex(17); - public static Item legsChain = (new ItemArmor(48, 1, 1, 2)).setIconIndex(33); - public static Item bootsChain = (new ItemArmor(49, 1, 1, 3)).setIconIndex(49); - public static Item helmetSteel = (new ItemArmor(50, 2, 2, 0)).setIconIndex(2); - public static Item plateSteel = (new ItemArmor(51, 2, 2, 1)).setIconIndex(18); - public static Item legsSteel = (new ItemArmor(52, 2, 2, 2)).setIconIndex(34); - public static Item bootsSteel = (new ItemArmor(53, 2, 2, 3)).setIconIndex(50); - public static Item helmetDiamond = (new ItemArmor(54, 3, 3, 0)).setIconIndex(3); - public static Item plateDiamonhd = (new ItemArmor(55, 3, 3, 1)).setIconIndex(19); - public static Item legsDiamond = (new ItemArmor(56, 3, 3, 2)).setIconIndex(35); - public static Item bootsDiamond = (new ItemArmor(57, 3, 3, 3)).setIconIndex(51); - public static Item helmetGold = (new ItemArmor(58, 1, 4, 0)).setIconIndex(4); - public static Item plateGold = (new ItemArmor(59, 1, 4, 1)).setIconIndex(20); - public static Item legsGold = (new ItemArmor(60, 1, 4, 2)).setIconIndex(36); - public static Item bootsGold = (new ItemArmor(61, 1, 4, 3)).setIconIndex(52); - public static Item flint = (new Item(62)).setIconIndex(6); - public static Item porkRaw = (new ItemFood(63, 3)).setIconIndex(87); - public static Item porkCooked = (new ItemFood(64, 8)).setIconIndex(88); - public static Item painting = (new ItemPainting(65)).setIconIndex(26); - public static Item appleGold = (new ItemFood(66, 42)).setIconIndex(11); - public static Item sign = (new ItemSign(67)).setIconIndex(42); - public static Item door = (new ItemDoor(68)).setIconIndex(43); - public static Item bucketEmpty = (new ItemBucket(69, 0)).setIconIndex(74); - public static Item bucketWater = (new ItemBucket(70, Block.waterMoving.blockID)).setIconIndex(75); - public static Item bucketLava = (new ItemBucket(71, Block.lavaMoving.blockID)).setIconIndex(76); - public static Item minecart = (new ItemMinecart(72)).setIconIndex(135); - public static Item saddle = (new ItemSaddle(73)).setIconIndex(104); - public final int shiftedIndex; - protected int maxStackSize = 64; - protected int maxDamage = 32; - protected int iconIndex; - - protected Item(int var1) { - this.shiftedIndex = 256 + var1; - if(itemsList[256 + var1] != null) { - System.out.println("CONFLICT @ " + var1); - } - - itemsList[256 + var1] = this; - } - - public Item setIconIndex(int var1) { - this.iconIndex = var1; - return this; - } - - public int getIconFromDamage(ItemStack var1) { - return this.iconIndex; - } - - public boolean onItemUse(ItemStack var1, EntityPlayer var2, World var3, int var4, int var5, int var6, int var7) { - return false; - } - - public float getStrVsBlock(ItemStack var1, Block var2) { - return 1.0F; - } - - public ItemStack onItemRightClick(ItemStack var1, World var2, EntityPlayer var3) { - return var1; - } - - public int getItemStackLimit() { - return this.maxStackSize; - } - - public int getMaxDamage() { - return this.maxDamage; - } - - public void hitEntity(ItemStack var1, EntityLiving var2) { - } - - public void onBlockDestroyed(ItemStack var1, int var2, int var3, int var4, int var5) { - } - - public int getDamageVsEntity(Entity var1) { - return 1; - } - - public boolean canHarvestBlock(Block var1) { - return false; - } - - public void saddleEntity(ItemStack var1, EntityLiving var2) { - } -} diff --git a/src/net/minecraft/src/ItemArmor.java b/src/net/minecraft/src/ItemArmor.java deleted file mode 100644 index e267b4d..0000000 --- a/src/net/minecraft/src/ItemArmor.java +++ /dev/null @@ -1,20 +0,0 @@ -package net.minecraft.src; - -public class ItemArmor extends Item { - private static final int[] damageReduceAmountArray = new int[]{3, 8, 6, 3}; - private static final int[] maxDamageArray = new int[]{11, 16, 15, 13}; - public final int armorLevel; - public final int armorType; - public final int damageReduceAmount; - public final int renderIndex; - - public ItemArmor(int var1, int var2, int var3, int var4) { - super(var1); - this.armorLevel = var2; - this.armorType = var4; - this.renderIndex = var3; - this.damageReduceAmount = damageReduceAmountArray[var4]; - this.maxDamage = maxDamageArray[var4] * 3 << var2; - this.maxStackSize = 1; - } -} diff --git a/src/net/minecraft/src/ItemAxe.java b/src/net/minecraft/src/ItemAxe.java deleted file mode 100644 index 69fdc7d..0000000 --- a/src/net/minecraft/src/ItemAxe.java +++ /dev/null @@ -1,9 +0,0 @@ -package net.minecraft.src; - -public class ItemAxe extends ItemTool { - private static Block[] blocksEffectiveAgainst = new Block[]{Block.planks, Block.bookshelf, Block.wood, Block.chest}; - - public ItemAxe(int var1, int var2) { - super(var1, 3, var2, blocksEffectiveAgainst); - } -} diff --git a/src/net/minecraft/src/ItemBlock.java b/src/net/minecraft/src/ItemBlock.java deleted file mode 100644 index 5d15793..0000000 --- a/src/net/minecraft/src/ItemBlock.java +++ /dev/null @@ -1,52 +0,0 @@ -package net.minecraft.src; - -public class ItemBlock extends Item { - private int blockID; - - public ItemBlock(int var1) { - super(var1); - this.blockID = var1 + 256; - this.setIconIndex(Block.blocksList[var1 + 256].getBlockTextureFromSide(2)); - } - - public boolean onItemUse(ItemStack var1, EntityPlayer var2, World var3, int var4, int var5, int var6, int var7) { - if(var7 == 0) { - --var5; - } - - if(var7 == 1) { - ++var5; - } - - if(var7 == 2) { - --var6; - } - - if(var7 == 3) { - ++var6; - } - - if(var7 == 4) { - --var4; - } - - if(var7 == 5) { - ++var4; - } - - if(var1.stackSize == 0) { - return false; - } else { - if(var3.canBlockBePlacedAt(this.blockID, var4, var5, var6, false)) { - Block var8 = Block.blocksList[this.blockID]; - if(var3.setBlockWithNotify(var4, var5, var6, this.blockID)) { - Block.blocksList[this.blockID].onBlockPlaced(var3, var4, var5, var6, var7); - var3.playSoundEffect((double)((float)var4 + 0.5F), (double)((float)var5 + 0.5F), (double)((float)var6 + 0.5F), var8.stepSound.getStepSound(), (var8.stepSound.getVolume() + 1.0F) / 2.0F, var8.stepSound.getPitch() * 0.8F); - --var1.stackSize; - } - } - - return true; - } - } -} diff --git a/src/net/minecraft/src/ItemBow.java b/src/net/minecraft/src/ItemBow.java deleted file mode 100644 index 3b7d240..0000000 --- a/src/net/minecraft/src/ItemBow.java +++ /dev/null @@ -1,17 +0,0 @@ -package net.minecraft.src; - -public class ItemBow extends Item { - public ItemBow(int var1) { - super(var1); - this.maxStackSize = 1; - } - - public ItemStack onItemRightClick(ItemStack var1, World var2, EntityPlayer var3) { - if(var3.inventory.consumeInventoryItem(Item.arrow.shiftedIndex)) { - var2.playSoundAtEntity(var3, "random.bow", 1.0F, 1.0F / (itemRand.nextFloat() * 0.4F + 0.8F)); - var2.spawnEntityInWorld(new EntityArrow(var2, var3)); - } - - return var1; - } -} diff --git a/src/net/minecraft/src/ItemBucket.java b/src/net/minecraft/src/ItemBucket.java deleted file mode 100644 index 47af484..0000000 --- a/src/net/minecraft/src/ItemBucket.java +++ /dev/null @@ -1,82 +0,0 @@ -package net.minecraft.src; - -public class ItemBucket extends Item { - private int isFull; - - public ItemBucket(int var1, int var2) { - super(var1); - this.maxStackSize = 1; - this.maxDamage = 64; - this.isFull = var2; - } - - public ItemStack onItemRightClick(ItemStack var1, World var2, EntityPlayer var3) { - float var4 = 1.0F; - float var5 = var3.prevRotationPitch + (var3.rotationPitch - var3.prevRotationPitch) * var4; - float var6 = var3.prevRotationYaw + (var3.rotationYaw - var3.prevRotationYaw) * var4; - double var7 = var3.prevPosX + (var3.posX - var3.prevPosX) * (double)var4; - double var9 = var3.prevPosY + (var3.posY - var3.prevPosY) * (double)var4; - double var11 = var3.prevPosZ + (var3.posZ - var3.prevPosZ) * (double)var4; - Vec3D var13 = Vec3D.createVector(var7, var9, var11); - float var14 = MathHelper.cos(-var6 * ((float)Math.PI / 180.0F) - (float)Math.PI); - float var15 = MathHelper.sin(-var6 * ((float)Math.PI / 180.0F) - (float)Math.PI); - float var16 = -MathHelper.cos(-var5 * ((float)Math.PI / 180.0F)); - float var17 = MathHelper.sin(-var5 * ((float)Math.PI / 180.0F)); - float var18 = var15 * var16; - float var20 = var14 * var16; - double var21 = 5.0D; - Vec3D var23 = var13.addVector((double)var18 * var21, (double)var17 * var21, (double)var20 * var21); - MovingObjectPosition var24 = var2.rayTraceBlocks_do(var13, var23, this.isFull == 0); - if(var24 == null) { - return var1; - } else { - if(var24.typeOfHit == 0) { - int var25 = var24.blockX; - int var26 = var24.blockY; - int var27 = var24.blockZ; - if(this.isFull == 0) { - if(var2.getBlockMaterial(var25, var26, var27) == Material.water && var2.getBlockMetadata(var25, var26, var27) == 0) { - var2.setBlockWithNotify(var25, var26, var27, 0); - return new ItemStack(Item.bucketWater); - } - - if(var2.getBlockMaterial(var25, var26, var27) == Material.lava && var2.getBlockMetadata(var25, var26, var27) == 0) { - var2.setBlockWithNotify(var25, var26, var27, 0); - return new ItemStack(Item.bucketLava); - } - } else { - if(var24.sideHit == 0) { - --var26; - } - - if(var24.sideHit == 1) { - ++var26; - } - - if(var24.sideHit == 2) { - --var27; - } - - if(var24.sideHit == 3) { - ++var27; - } - - if(var24.sideHit == 4) { - --var25; - } - - if(var24.sideHit == 5) { - ++var25; - } - - if(var2.getBlockId(var25, var26, var27) == 0 || !var2.getBlockMaterial(var25, var26, var27).isSolid()) { - var2.setBlockAndMetadataWithNotify(var25, var26, var27, this.isFull, 0); - return new ItemStack(Item.bucketEmpty); - } - } - } - - return var1; - } - } -} diff --git a/src/net/minecraft/src/ItemDoor.java b/src/net/minecraft/src/ItemDoor.java deleted file mode 100644 index 95d9d03..0000000 --- a/src/net/minecraft/src/ItemDoor.java +++ /dev/null @@ -1,62 +0,0 @@ -package net.minecraft.src; - -public class ItemDoor extends Item { - public ItemDoor(int var1) { - super(var1); - this.maxDamage = 64; - this.maxStackSize = 1; - } - - public boolean onItemUse(ItemStack var1, EntityPlayer var2, World var3, int var4, int var5, int var6, int var7) { - if(var7 != 1) { - return false; - } else { - ++var5; - if(!Block.doorWood.canPlaceBlockAt(var3, var4, var5, var6)) { - return false; - } else { - int var8 = MathHelper.floor_double((double)((var2.rotationYaw + 180.0F) * 4.0F / 360.0F) - 0.5D) & 3; - byte var9 = 0; - byte var10 = 0; - if(var8 == 0) { - var10 = 1; - } - - if(var8 == 1) { - var9 = -1; - } - - if(var8 == 2) { - var10 = -1; - } - - if(var8 == 3) { - var9 = 1; - } - - int var11 = (var3.isBlockNormalCube(var4 - var9, var5, var6 - var10) ? 1 : 0) + (var3.isBlockNormalCube(var4 - var9, var5 + 1, var6 - var10) ? 1 : 0); - int var12 = (var3.isBlockNormalCube(var4 + var9, var5, var6 + var10) ? 1 : 0) + (var3.isBlockNormalCube(var4 + var9, var5 + 1, var6 + var10) ? 1 : 0); - boolean var13 = var3.getBlockId(var4 - var9, var5, var6 - var10) == Block.doorWood.blockID || var3.getBlockId(var4 - var9, var5 + 1, var6 - var10) == Block.doorWood.blockID; - boolean var14 = var3.getBlockId(var4 + var9, var5, var6 + var10) == Block.doorWood.blockID || var3.getBlockId(var4 + var9, var5 + 1, var6 + var10) == Block.doorWood.blockID; - boolean var15 = false; - if(var13 && !var14) { - var15 = true; - } else if(var12 > var11) { - var15 = true; - } - - if(var15) { - var8 = var8 - 1 & 3; - var8 += 4; - } - - var3.setBlockWithNotify(var4, var5, var6, Block.doorWood.blockID); - var3.setBlockMetadataWithNotify(var4, var5, var6, var8); - var3.setBlockWithNotify(var4, var5 + 1, var6, Block.doorWood.blockID); - var3.setBlockMetadataWithNotify(var4, var5 + 1, var6, var8 + 8); - --var1.stackSize; - return true; - } - } - } -} diff --git a/src/net/minecraft/src/ItemFlintAndSteel.java b/src/net/minecraft/src/ItemFlintAndSteel.java deleted file mode 100644 index cd682fc..0000000 --- a/src/net/minecraft/src/ItemFlintAndSteel.java +++ /dev/null @@ -1,44 +0,0 @@ -package net.minecraft.src; - -public class ItemFlintAndSteel extends Item { - public ItemFlintAndSteel(int var1) { - super(var1); - this.maxStackSize = 1; - this.maxDamage = 64; - } - - public boolean onItemUse(ItemStack var1, EntityPlayer var2, World var3, int var4, int var5, int var6, int var7) { - if(var7 == 0) { - --var5; - } - - if(var7 == 1) { - ++var5; - } - - if(var7 == 2) { - --var6; - } - - if(var7 == 3) { - ++var6; - } - - if(var7 == 4) { - --var4; - } - - if(var7 == 5) { - ++var4; - } - - int var8 = var3.getBlockId(var4, var5, var6); - if(var8 == 0) { - var3.playSoundEffect((double)var4 + 0.5D, (double)var5 + 0.5D, (double)var6 + 0.5D, "fire.ignite", 1.0F, itemRand.nextFloat() * 0.4F + 0.8F); - var3.setBlockWithNotify(var4, var5, var6, Block.fire.blockID); - } - - var1.damageItem(1); - return true; - } -} diff --git a/src/net/minecraft/src/ItemFood.java b/src/net/minecraft/src/ItemFood.java deleted file mode 100644 index d0b8bf9..0000000 --- a/src/net/minecraft/src/ItemFood.java +++ /dev/null @@ -1,17 +0,0 @@ -package net.minecraft.src; - -public class ItemFood extends Item { - private int healAmount; - - public ItemFood(int var1, int var2) { - super(var1); - this.healAmount = var2; - this.maxStackSize = 1; - } - - public ItemStack onItemRightClick(ItemStack var1, World var2, EntityPlayer var3) { - --var1.stackSize; - var3.heal(this.healAmount); - return var1; - } -} diff --git a/src/net/minecraft/src/ItemHoe.java b/src/net/minecraft/src/ItemHoe.java deleted file mode 100644 index 6e2a795..0000000 --- a/src/net/minecraft/src/ItemHoe.java +++ /dev/null @@ -1,37 +0,0 @@ -package net.minecraft.src; - -public class ItemHoe extends Item { - public ItemHoe(int var1, int var2) { - super(var1); - this.maxStackSize = 1; - this.maxDamage = 32 << var2; - } - - public boolean onItemUse(ItemStack var1, EntityPlayer var2, World var3, int var4, int var5, int var6, int var7) { - int var8 = var3.getBlockId(var4, var5, var6); - Material var9 = var3.getBlockMaterial(var4, var5 + 1, var6); - if((var9.isSolid() || var8 != Block.grass.blockID) && var8 != Block.dirt.blockID) { - return false; - } else { - Block var10 = Block.tilledField; - var3.playSoundEffect((double)((float)var4 + 0.5F), (double)((float)var5 + 0.5F), (double)((float)var6 + 0.5F), var10.stepSound.getStepSound(), (var10.stepSound.getVolume() + 1.0F) / 2.0F, var10.stepSound.getPitch() * 0.8F); - var3.setBlockWithNotify(var4, var5, var6, var10.blockID); - var1.damageItem(1); - if(var3.rand.nextInt(8) == 0 && var8 == Block.grass.blockID) { - byte var11 = 1; - - for(int var12 = 0; var12 < var11; ++var12) { - float var13 = 0.7F; - float var14 = var3.rand.nextFloat() * var13 + (1.0F - var13) * 0.5F; - float var15 = 1.2F; - float var16 = var3.rand.nextFloat() * var13 + (1.0F - var13) * 0.5F; - EntityItem var17 = new EntityItem(var3, (double)((float)var4 + var14), (double)((float)var5 + var15), (double)((float)var6 + var16), new ItemStack(Item.seeds)); - var17.delayBeforeCanPickup = 10; - var3.spawnEntityInWorld(var17); - } - } - - return true; - } - } -} diff --git a/src/net/minecraft/src/ItemMinecart.java b/src/net/minecraft/src/ItemMinecart.java deleted file mode 100644 index 2aa4d3f..0000000 --- a/src/net/minecraft/src/ItemMinecart.java +++ /dev/null @@ -1,19 +0,0 @@ -package net.minecraft.src; - -public class ItemMinecart extends Item { - public ItemMinecart(int var1) { - super(var1); - this.maxStackSize = 1; - } - - public boolean onItemUse(ItemStack var1, EntityPlayer var2, World var3, int var4, int var5, int var6, int var7) { - int var8 = var3.getBlockId(var4, var5, var6); - if(var8 == Block.minecartTrack.blockID) { - var3.spawnEntityInWorld(new EntityMinecart(var3, (double)((float)var4 + 0.5F), (double)((float)var5 + 0.5F), (double)((float)var6 + 0.5F))); - --var1.stackSize; - return true; - } else { - return false; - } - } -} diff --git a/src/net/minecraft/src/ItemPainting.java b/src/net/minecraft/src/ItemPainting.java deleted file mode 100644 index 8cfa711..0000000 --- a/src/net/minecraft/src/ItemPainting.java +++ /dev/null @@ -1,37 +0,0 @@ -package net.minecraft.src; - -public class ItemPainting extends Item { - public ItemPainting(int var1) { - super(var1); - this.maxDamage = 64; - } - - public boolean onItemUse(ItemStack var1, EntityPlayer var2, World var3, int var4, int var5, int var6, int var7) { - if(var7 == 0) { - return false; - } else if(var7 == 1) { - return false; - } else { - byte var8 = 0; - if(var7 == 4) { - var8 = 1; - } - - if(var7 == 3) { - var8 = 2; - } - - if(var7 == 5) { - var8 = 3; - } - - EntityPainting var9 = new EntityPainting(var3, var4, var5, var6, var8); - if(var9.onValidSurface()) { - var3.spawnEntityInWorld(var9); - --var1.stackSize; - } - - return true; - } - } -} diff --git a/src/net/minecraft/src/ItemPickaxe.java b/src/net/minecraft/src/ItemPickaxe.java deleted file mode 100644 index a5a9ab6..0000000 --- a/src/net/minecraft/src/ItemPickaxe.java +++ /dev/null @@ -1,15 +0,0 @@ -package net.minecraft.src; - -public class ItemPickaxe extends ItemTool { - private static Block[] blocksEffectiveAgainst = new Block[]{Block.cobblestone, Block.stairDouble, Block.stairSingle, Block.stone, Block.cobblestoneMossy, Block.oreIron, Block.blockSteel, Block.oreCoal, Block.blockGold, Block.oreGold, Block.oreDiamond, Block.blockDiamond}; - private int getHarvestLevel; - - public ItemPickaxe(int var1, int var2) { - super(var1, 2, var2, blocksEffectiveAgainst); - this.getHarvestLevel = var2; - } - - public boolean canHarvestBlock(Block var1) { - return var1 == Block.obsidian ? this.getHarvestLevel == 3 : (var1 != Block.blockDiamond && var1 != Block.oreDiamond ? (var1 != Block.blockGold && var1 != Block.oreGold ? (var1 != Block.blockSteel && var1 != Block.oreIron ? (var1.blockMaterial == Material.rock ? true : var1.blockMaterial == Material.iron) : this.getHarvestLevel >= 1) : this.getHarvestLevel >= 2) : this.getHarvestLevel >= 2); - } -} diff --git a/src/net/minecraft/src/ItemRenderer.java b/src/net/minecraft/src/ItemRenderer.java deleted file mode 100644 index 1d1a353..0000000 --- a/src/net/minecraft/src/ItemRenderer.java +++ /dev/null @@ -1,361 +0,0 @@ -package net.minecraft.src; - -import org.lwjgl.opengl.GL11; -import org.lwjgl.opengl.GL12; - -public class ItemRenderer { - private Minecraft mc; - private ItemStack itemToRender = null; - private float equippedProgress = 0.0F; - private float prevEquippedProgress = 0.0F; - private int swingProgress = 0; - private boolean itemSwingState = false; - private RenderBlocks renderBlocksInstance = new RenderBlocks(); - - public ItemRenderer(Minecraft var1) { - this.mc = var1; - } - - public void renderItemInFirstPerson(float var1) { - float var2 = this.prevEquippedProgress + (this.equippedProgress - this.prevEquippedProgress) * var1; - EntityPlayerSP var3 = this.mc.thePlayer; - GL11.glPushMatrix(); - GL11.glRotatef(var3.prevRotationPitch + (var3.rotationPitch - var3.prevRotationPitch) * var1, 1.0F, 0.0F, 0.0F); - GL11.glRotatef(var3.prevRotationYaw + (var3.rotationYaw - var3.prevRotationYaw) * var1, 0.0F, 1.0F, 0.0F); - RenderHelper.enableStandardItemLighting(); - GL11.glPopMatrix(); - float var4 = this.mc.theWorld.getBrightness(MathHelper.floor_double(var3.posX), MathHelper.floor_double(var3.posY), MathHelper.floor_double(var3.posZ)); - GL11.glColor4f(var4, var4, var4, 1.0F); - float var5; - float var6; - float var7; - float var8; - if(this.itemToRender != null) { - GL11.glPushMatrix(); - var5 = 0.8F; - if(this.itemSwingState) { - var6 = ((float)this.swingProgress + var1) / 8.0F; - var7 = MathHelper.sin(var6 * (float)Math.PI); - var8 = MathHelper.sin(MathHelper.sqrt_float(var6) * (float)Math.PI); - GL11.glTranslatef(-var8 * 0.4F, MathHelper.sin(MathHelper.sqrt_float(var6) * (float)Math.PI * 2.0F) * 0.2F, -var7 * 0.2F); - } - - GL11.glTranslatef(0.7F * var5, -0.65F * var5 - (1.0F - var2) * 0.6F, -0.9F * var5); - GL11.glRotatef(45.0F, 0.0F, 1.0F, 0.0F); - GL11.glEnable(GL12.GL_RESCALE_NORMAL); - if(this.itemSwingState) { - var6 = ((float)this.swingProgress + var1) / 8.0F; - var7 = MathHelper.sin(var6 * var6 * (float)Math.PI); - var8 = MathHelper.sin(MathHelper.sqrt_float(var6) * (float)Math.PI); - GL11.glRotatef(-var7 * 20.0F, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(-var8 * 20.0F, 0.0F, 0.0F, 1.0F); - GL11.glRotatef(-var8 * 80.0F, 1.0F, 0.0F, 0.0F); - } - - var6 = 0.4F; - GL11.glScalef(var6, var6, var6); - if(this.itemToRender.itemID < 256 && Block.blocksList[this.itemToRender.itemID].getRenderType() == 0) { - GL11.glBindTexture(GL11.GL_TEXTURE_2D, this.mc.renderEngine.getTexture("/terrain.png")); - this.renderBlocksInstance.renderBlockOnInventory(Block.blocksList[this.itemToRender.itemID]); - } else { - if(this.itemToRender.itemID < 256) { - GL11.glBindTexture(GL11.GL_TEXTURE_2D, this.mc.renderEngine.getTexture("/terrain.png")); - } else { - GL11.glBindTexture(GL11.GL_TEXTURE_2D, this.mc.renderEngine.getTexture("/gui/items.png")); - } - - Tessellator var22 = Tessellator.instance; - var8 = (float)(this.itemToRender.getIconIndex() % 16 * 16 + 0) / 256.0F; - float var9 = (float)(this.itemToRender.getIconIndex() % 16 * 16 + 16) / 256.0F; - float var10 = (float)(this.itemToRender.getIconIndex() / 16 * 16 + 0) / 256.0F; - float var11 = (float)(this.itemToRender.getIconIndex() / 16 * 16 + 16) / 256.0F; - float var12 = 1.0F; - float var13 = 0.0F; - float var14 = 0.3F; - GL11.glEnable(GL12.GL_RESCALE_NORMAL); - GL11.glTranslatef(-var13, -var14, 0.0F); - float var15 = 1.5F; - GL11.glScalef(var15, var15, var15); - GL11.glRotatef(50.0F, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(335.0F, 0.0F, 0.0F, 1.0F); - GL11.glTranslatef(-(15.0F / 16.0F), -(1.0F / 16.0F), 0.0F); - float var16 = 1.0F / 16.0F; - var22.startDrawingQuads(); - var22.setNormal(0.0F, 0.0F, 1.0F); - var22.addVertexWithUV(0.0D, 0.0D, 0.0D, (double)var9, (double)var11); - var22.addVertexWithUV((double)var12, 0.0D, 0.0D, (double)var8, (double)var11); - var22.addVertexWithUV((double)var12, 1.0D, 0.0D, (double)var8, (double)var10); - var22.addVertexWithUV(0.0D, 1.0D, 0.0D, (double)var9, (double)var10); - var22.draw(); - var22.startDrawingQuads(); - var22.setNormal(0.0F, 0.0F, -1.0F); - var22.addVertexWithUV(0.0D, 1.0D, (double)(0.0F - var16), (double)var9, (double)var10); - var22.addVertexWithUV((double)var12, 1.0D, (double)(0.0F - var16), (double)var8, (double)var10); - var22.addVertexWithUV((double)var12, 0.0D, (double)(0.0F - var16), (double)var8, (double)var11); - var22.addVertexWithUV(0.0D, 0.0D, (double)(0.0F - var16), (double)var9, (double)var11); - var22.draw(); - var22.startDrawingQuads(); - var22.setNormal(-1.0F, 0.0F, 0.0F); - - int var17; - float var18; - float var19; - float var20; - for(var17 = 0; var17 < 16; ++var17) { - var18 = (float)var17 / 16.0F; - var19 = var9 + (var8 - var9) * var18 - 0.001953125F; - var20 = var12 * var18; - var22.addVertexWithUV((double)var20, 0.0D, (double)(0.0F - var16), (double)var19, (double)var11); - var22.addVertexWithUV((double)var20, 0.0D, 0.0D, (double)var19, (double)var11); - var22.addVertexWithUV((double)var20, 1.0D, 0.0D, (double)var19, (double)var10); - var22.addVertexWithUV((double)var20, 1.0D, (double)(0.0F - var16), (double)var19, (double)var10); - } - - var22.draw(); - var22.startDrawingQuads(); - var22.setNormal(1.0F, 0.0F, 0.0F); - - for(var17 = 0; var17 < 16; ++var17) { - var18 = (float)var17 / 16.0F; - var19 = var9 + (var8 - var9) * var18 - 0.001953125F; - var20 = var12 * var18 + 1.0F / 16.0F; - var22.addVertexWithUV((double)var20, 1.0D, (double)(0.0F - var16), (double)var19, (double)var10); - var22.addVertexWithUV((double)var20, 1.0D, 0.0D, (double)var19, (double)var10); - var22.addVertexWithUV((double)var20, 0.0D, 0.0D, (double)var19, (double)var11); - var22.addVertexWithUV((double)var20, 0.0D, (double)(0.0F - var16), (double)var19, (double)var11); - } - - var22.draw(); - var22.startDrawingQuads(); - var22.setNormal(0.0F, 1.0F, 0.0F); - - for(var17 = 0; var17 < 16; ++var17) { - var18 = (float)var17 / 16.0F; - var19 = var11 + (var10 - var11) * var18 - 0.001953125F; - var20 = var12 * var18 + 1.0F / 16.0F; - var22.addVertexWithUV(0.0D, (double)var20, 0.0D, (double)var9, (double)var19); - var22.addVertexWithUV((double)var12, (double)var20, 0.0D, (double)var8, (double)var19); - var22.addVertexWithUV((double)var12, (double)var20, (double)(0.0F - var16), (double)var8, (double)var19); - var22.addVertexWithUV(0.0D, (double)var20, (double)(0.0F - var16), (double)var9, (double)var19); - } - - var22.draw(); - var22.startDrawingQuads(); - var22.setNormal(0.0F, -1.0F, 0.0F); - - for(var17 = 0; var17 < 16; ++var17) { - var18 = (float)var17 / 16.0F; - var19 = var11 + (var10 - var11) * var18 - 0.001953125F; - var20 = var12 * var18; - var22.addVertexWithUV((double)var12, (double)var20, 0.0D, (double)var8, (double)var19); - var22.addVertexWithUV(0.0D, (double)var20, 0.0D, (double)var9, (double)var19); - var22.addVertexWithUV(0.0D, (double)var20, (double)(0.0F - var16), (double)var9, (double)var19); - var22.addVertexWithUV((double)var12, (double)var20, (double)(0.0F - var16), (double)var8, (double)var19); - } - - var22.draw(); - GL11.glDisable(GL12.GL_RESCALE_NORMAL); - } - - GL11.glPopMatrix(); - } else { - GL11.glPushMatrix(); - var5 = 0.8F; - if(this.itemSwingState) { - var6 = ((float)this.swingProgress + var1) / 8.0F; - var7 = MathHelper.sin(var6 * (float)Math.PI); - var8 = MathHelper.sin(MathHelper.sqrt_float(var6) * (float)Math.PI); - GL11.glTranslatef(-var8 * 0.3F, MathHelper.sin(MathHelper.sqrt_float(var6) * (float)Math.PI * 2.0F) * 0.4F, -var7 * 0.4F); - } - - GL11.glTranslatef(0.8F * var5, -(12.0F / 16.0F) * var5 - (1.0F - var2) * 0.6F, -0.9F * var5); - GL11.glRotatef(45.0F, 0.0F, 1.0F, 0.0F); - GL11.glEnable(GL12.GL_RESCALE_NORMAL); - if(this.itemSwingState) { - var6 = ((float)this.swingProgress + var1) / 8.0F; - var7 = MathHelper.sin(var6 * var6 * (float)Math.PI); - var8 = MathHelper.sin(MathHelper.sqrt_float(var6) * (float)Math.PI); - GL11.glRotatef(var8 * 70.0F, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(-var7 * 20.0F, 0.0F, 0.0F, 1.0F); - } - - GL11.glBindTexture(GL11.GL_TEXTURE_2D, this.mc.renderEngine.getTextureForDownloadableImage(this.mc.thePlayer.skinUrl, this.mc.thePlayer.getTexture())); - GL11.glTranslatef(-1.0F, 3.6F, 3.5F); - GL11.glRotatef(120.0F, 0.0F, 0.0F, 1.0F); - GL11.glRotatef(200.0F, 1.0F, 0.0F, 0.0F); - GL11.glRotatef(-135.0F, 0.0F, 1.0F, 0.0F); - GL11.glScalef(1.0F, 1.0F, 1.0F); - GL11.glTranslatef(5.6F, 0.0F, 0.0F); - Render var21 = RenderManager.instance.getEntityRenderObject(this.mc.thePlayer); - RenderPlayer var23 = (RenderPlayer)var21; - var8 = 1.0F; - GL11.glScalef(var8, var8, var8); - var23.drawFirstPersonHand(); - GL11.glPopMatrix(); - } - - GL11.glDisable(GL12.GL_RESCALE_NORMAL); - RenderHelper.disableStandardItemLighting(); - } - - public void renderOverlays(float var1) { - GL11.glDisable(GL11.GL_ALPHA_TEST); - int var2; - if(this.mc.thePlayer.fire > 0) { - var2 = this.mc.renderEngine.getTexture("/terrain.png"); - GL11.glBindTexture(GL11.GL_TEXTURE_2D, var2); - this.renderFireInFirstPerson(var1); - } - - if(this.mc.theWorld.playerEntity.isEntityInsideOpaqueBlock()) { - var2 = MathHelper.floor_double(this.mc.thePlayer.posX); - int var3 = MathHelper.floor_double(this.mc.thePlayer.posY); - int var4 = MathHelper.floor_double(this.mc.thePlayer.posZ); - int var5 = this.mc.renderEngine.getTexture("/terrain.png"); - GL11.glBindTexture(GL11.GL_TEXTURE_2D, var5); - int var6 = this.mc.theWorld.getBlockId(var2, var3, var4); - if(Block.blocksList[var6] != null) { - this.renderInsideOfBlock(var1, Block.blocksList[var6].getBlockTextureFromSide(2)); - } - } - - if(this.mc.thePlayer.isInsideOfMaterial(Material.water)) { - var2 = this.mc.renderEngine.getTexture("/water.png"); - GL11.glBindTexture(GL11.GL_TEXTURE_2D, var2); - this.renderWarpedTextureOverlay(var1); - } - - GL11.glEnable(GL11.GL_ALPHA_TEST); - } - - private void renderInsideOfBlock(float var1, int var2) { - Tessellator var3 = Tessellator.instance; - this.mc.thePlayer.getEntityBrightness(var1); - float var4 = 0.1F; - GL11.glColor4f(var4, var4, var4, 0.5F); - GL11.glPushMatrix(); - float var5 = -1.0F; - float var6 = 1.0F; - float var7 = -1.0F; - float var8 = 1.0F; - float var9 = -0.5F; - float var10 = 0.0078125F; - float var11 = (float)(var2 % 16) / 256.0F - var10; - float var12 = ((float)(var2 % 16) + 15.99F) / 256.0F + var10; - float var13 = (float)(var2 / 16) / 256.0F - var10; - float var14 = ((float)(var2 / 16) + 15.99F) / 256.0F + var10; - var3.startDrawingQuads(); - var3.addVertexWithUV((double)var5, (double)var7, (double)var9, (double)var12, (double)var14); - var3.addVertexWithUV((double)var6, (double)var7, (double)var9, (double)var11, (double)var14); - var3.addVertexWithUV((double)var6, (double)var8, (double)var9, (double)var11, (double)var13); - var3.addVertexWithUV((double)var5, (double)var8, (double)var9, (double)var12, (double)var13); - var3.draw(); - GL11.glPopMatrix(); - GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); - } - - private void renderWarpedTextureOverlay(float var1) { - Tessellator var2 = Tessellator.instance; - float var3 = this.mc.thePlayer.getEntityBrightness(var1); - GL11.glColor4f(var3, var3, var3, 0.5F); - GL11.glEnable(GL11.GL_BLEND); - GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); - GL11.glPushMatrix(); - float var4 = 4.0F; - float var5 = -1.0F; - float var6 = 1.0F; - float var7 = -1.0F; - float var8 = 1.0F; - float var9 = -0.5F; - float var10 = -this.mc.thePlayer.rotationYaw / 64.0F; - float var11 = this.mc.thePlayer.rotationPitch / 64.0F; - var2.startDrawingQuads(); - var2.addVertexWithUV((double)var5, (double)var7, (double)var9, (double)(var4 + var10), (double)(var4 + var11)); - var2.addVertexWithUV((double)var6, (double)var7, (double)var9, (double)(0.0F + var10), (double)(var4 + var11)); - var2.addVertexWithUV((double)var6, (double)var8, (double)var9, (double)(0.0F + var10), (double)(0.0F + var11)); - var2.addVertexWithUV((double)var5, (double)var8, (double)var9, (double)(var4 + var10), (double)(0.0F + var11)); - var2.draw(); - GL11.glPopMatrix(); - GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); - GL11.glDisable(GL11.GL_BLEND); - } - - private void renderFireInFirstPerson(float var1) { - Tessellator var2 = Tessellator.instance; - GL11.glColor4f(1.0F, 1.0F, 1.0F, 0.9F); - GL11.glEnable(GL11.GL_BLEND); - GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); - float var3 = 1.0F; - - for(int var4 = 0; var4 < 2; ++var4) { - GL11.glPushMatrix(); - int var5 = Block.fire.blockIndexInTexture + var4 * 16; - int var6 = (var5 & 15) << 4; - int var7 = var5 & 240; - float var8 = (float)var6 / 256.0F; - float var9 = ((float)var6 + 15.99F) / 256.0F; - float var10 = (float)var7 / 256.0F; - float var11 = ((float)var7 + 15.99F) / 256.0F; - float var12 = (0.0F - var3) / 2.0F; - float var13 = var12 + var3; - float var14 = 0.0F - var3 / 2.0F; - float var15 = var14 + var3; - float var16 = -0.5F; - GL11.glTranslatef((float)(-(var4 * 2 - 1)) * 0.24F, -0.3F, 0.0F); - GL11.glRotatef((float)(var4 * 2 - 1) * 10.0F, 0.0F, 1.0F, 0.0F); - var2.startDrawingQuads(); - var2.addVertexWithUV((double)var12, (double)var14, (double)var16, (double)var9, (double)var11); - var2.addVertexWithUV((double)var13, (double)var14, (double)var16, (double)var8, (double)var11); - var2.addVertexWithUV((double)var13, (double)var15, (double)var16, (double)var8, (double)var10); - var2.addVertexWithUV((double)var12, (double)var15, (double)var16, (double)var9, (double)var10); - var2.draw(); - GL11.glPopMatrix(); - } - - GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); - GL11.glDisable(GL11.GL_BLEND); - } - - public void updateEquippedItem() { - this.prevEquippedProgress = this.equippedProgress; - if(this.itemSwingState) { - ++this.swingProgress; - if(this.swingProgress == 8) { - this.swingProgress = 0; - this.itemSwingState = false; - } - } - - EntityPlayerSP var1 = this.mc.thePlayer; - ItemStack var2 = var1.inventory.getCurrentItem(); - float var4 = 0.4F; - float var5 = var2 == this.itemToRender ? 1.0F : 0.0F; - float var6 = var5 - this.equippedProgress; - if(var6 < -var4) { - var6 = -var4; - } - - if(var6 > var4) { - var6 = var4; - } - - this.equippedProgress += var6; - if(this.equippedProgress < 0.1F) { - this.itemToRender = var2; - } - - } - - public void resetEquippedProgress() { - this.equippedProgress = 0.0F; - } - - public void swing() { - this.swingProgress = -1; - this.itemSwingState = true; - } - - public void resetEquippedProgress2() { - this.equippedProgress = 0.0F; - } -} diff --git a/src/net/minecraft/src/ItemSaddle.java b/src/net/minecraft/src/ItemSaddle.java deleted file mode 100644 index 9bb552f..0000000 --- a/src/net/minecraft/src/ItemSaddle.java +++ /dev/null @@ -1,24 +0,0 @@ -package net.minecraft.src; - -public class ItemSaddle extends Item { - public ItemSaddle(int var1) { - super(var1); - this.maxStackSize = 1; - this.maxDamage = 64; - } - - public void saddleEntity(ItemStack var1, EntityLiving var2) { - if(var2 instanceof EntityPig) { - EntityPig var3 = (EntityPig)var2; - if(!var3.saddled) { - var3.saddled = true; - --var1.stackSize; - } - } - - } - - public void hitEntity(ItemStack var1, EntityLiving var2) { - this.saddleEntity(var1, var2); - } -} diff --git a/src/net/minecraft/src/ItemSeeds.java b/src/net/minecraft/src/ItemSeeds.java deleted file mode 100644 index 91ad225..0000000 --- a/src/net/minecraft/src/ItemSeeds.java +++ /dev/null @@ -1,25 +0,0 @@ -package net.minecraft.src; - -public class ItemSeeds extends Item { - private int blockType; - - public ItemSeeds(int var1, int var2) { - super(var1); - this.blockType = var2; - } - - public boolean onItemUse(ItemStack var1, EntityPlayer var2, World var3, int var4, int var5, int var6, int var7) { - if(var7 != 1) { - return false; - } else { - int var8 = var3.getBlockId(var4, var5, var6); - if(var8 == Block.tilledField.blockID) { - var3.setBlockWithNotify(var4, var5 + 1, var6, this.blockType); - --var1.stackSize; - return true; - } else { - return false; - } - } - } -} diff --git a/src/net/minecraft/src/ItemSign.java b/src/net/minecraft/src/ItemSign.java deleted file mode 100644 index f760b3e..0000000 --- a/src/net/minecraft/src/ItemSign.java +++ /dev/null @@ -1,26 +0,0 @@ -package net.minecraft.src; - -public class ItemSign extends Item { - public ItemSign(int var1) { - super(var1); - this.maxDamage = 64; - this.maxStackSize = 1; - } - - public boolean onItemUse(ItemStack var1, EntityPlayer var2, World var3, int var4, int var5, int var6, int var7) { - if(var7 != 1) { - return false; - } else { - ++var5; - if(!Block.signStanding.canPlaceBlockAt(var3, var4, var5, var6)) { - return false; - } else { - var3.setBlockWithNotify(var4, var5, var6, Block.signStanding.blockID); - var3.setBlockMetadataWithNotify(var4, var5, var6, MathHelper.floor_double((double)((var2.rotationYaw + 180.0F) * 16.0F / 360.0F) - 0.5D) & 15); - --var1.stackSize; - var2.displayGUIEditSign((TileEntitySign)var3.getBlockTileEntity(var4, var5, var6)); - return true; - } - } - } -} diff --git a/src/net/minecraft/src/ItemSoup.java b/src/net/minecraft/src/ItemSoup.java deleted file mode 100644 index 7143549..0000000 --- a/src/net/minecraft/src/ItemSoup.java +++ /dev/null @@ -1,12 +0,0 @@ -package net.minecraft.src; - -public class ItemSoup extends ItemFood { - public ItemSoup(int var1, int var2) { - super(var1, var2); - } - - public ItemStack onItemRightClick(ItemStack var1, World var2, EntityPlayer var3) { - super.onItemRightClick(var1, var2, var3); - return new ItemStack(Item.bowlEmpty); - } -} diff --git a/src/net/minecraft/src/ItemSpade.java b/src/net/minecraft/src/ItemSpade.java deleted file mode 100644 index 5328e68..0000000 --- a/src/net/minecraft/src/ItemSpade.java +++ /dev/null @@ -1,9 +0,0 @@ -package net.minecraft.src; - -public class ItemSpade extends ItemTool { - private static Block[] blocksEffectiveAgainst = new Block[]{Block.grass, Block.dirt, Block.sand, Block.gravel}; - - public ItemSpade(int var1, int var2) { - super(var1, 1, var2, blocksEffectiveAgainst); - } -} diff --git a/src/net/minecraft/src/ItemStack.java b/src/net/minecraft/src/ItemStack.java deleted file mode 100644 index 83d7a12..0000000 --- a/src/net/minecraft/src/ItemStack.java +++ /dev/null @@ -1,128 +0,0 @@ -package net.minecraft.src; - -public final class ItemStack { - public int stackSize; - public int animationsToGo; - public int itemID; - public int itemDmg; - - public ItemStack(Block var1) { - this((Block)var1, 1); - } - - public ItemStack(Block var1, int var2) { - this(var1.blockID, var2); - } - - public ItemStack(Item var1) { - this((Item)var1, 1); - } - - public ItemStack(Item var1, int var2) { - this(var1.shiftedIndex, var2); - } - - public ItemStack(int var1) { - this(var1, 1); - } - - public ItemStack(int var1, int var2) { - this.stackSize = 0; - this.itemID = var1; - this.stackSize = var2; - } - - public ItemStack(int var1, int var2, int var3) { - this.stackSize = 0; - this.itemID = var1; - this.stackSize = var2; - this.itemDmg = var3; - } - - public ItemStack(NBTTagCompound var1) { - this.stackSize = 0; - this.readFromNBT(var1); - } - - public ItemStack splitStack(int var1) { - this.stackSize -= var1; - return new ItemStack(this.itemID, var1, this.itemDmg); - } - - public Item getItem() { - return Item.itemsList[this.itemID]; - } - - public int getIconIndex() { - return this.getItem().getIconFromDamage(this); - } - - public boolean useItem(EntityPlayer var1, World var2, int var3, int var4, int var5, int var6) { - return this.getItem().onItemUse(this, var1, var2, var3, var4, var5, var6); - } - - public float getStrVsBlock(Block var1) { - return this.getItem().getStrVsBlock(this, var1); - } - - public ItemStack useItemRightClick(World var1, EntityPlayer var2) { - return this.getItem().onItemRightClick(this, var1, var2); - } - - public NBTTagCompound writeToNBT(NBTTagCompound var1) { - var1.setShort("id", (short)this.itemID); - var1.setByte("Count", (byte)this.stackSize); - var1.setShort("Damage", (short)this.itemDmg); - return var1; - } - - public void readFromNBT(NBTTagCompound var1) { - this.itemID = var1.getShort("id"); - this.stackSize = var1.getByte("Count"); - this.itemDmg = var1.getShort("Damage"); - } - - public int getMaxStackSize() { - return this.getItem().getItemStackLimit(); - } - - public int getMaxDamage() { - return Item.itemsList[this.itemID].getMaxDamage(); - } - - public void damageItem(int var1) { - this.itemDmg += var1; - if(this.itemDmg > this.getMaxDamage()) { - --this.stackSize; - if(this.stackSize < 0) { - this.stackSize = 0; - } - - this.itemDmg = 0; - } - - } - - public void hitEntity(EntityLiving var1) { - Item.itemsList[this.itemID].hitEntity(this, var1); - } - - public void onDestroyBlock(int var1, int var2, int var3, int var4) { - Item.itemsList[this.itemID].onBlockDestroyed(this, var1, var2, var3, var4); - } - - public int getDamageVsEntity(Entity var1) { - return Item.itemsList[this.itemID].getDamageVsEntity(var1); - } - - public boolean canHarvestBlock(Block var1) { - return Item.itemsList[this.itemID].canHarvestBlock(var1); - } - - public void onItemDestroyedByUse(EntityPlayer var1) { - } - - public void useItemOnEntity(EntityLiving var1) { - Item.itemsList[this.itemID].saddleEntity(this, var1); - } -} diff --git a/src/net/minecraft/src/ItemSword.java b/src/net/minecraft/src/ItemSword.java deleted file mode 100644 index a7c1046..0000000 --- a/src/net/minecraft/src/ItemSword.java +++ /dev/null @@ -1,28 +0,0 @@ -package net.minecraft.src; - -public class ItemSword extends Item { - private int weaponDamage; - - public ItemSword(int var1, int var2) { - super(var1); - this.maxStackSize = 1; - this.maxDamage = 32 << var2; - this.weaponDamage = 4 + var2 * 2; - } - - public float getStrVsBlock(ItemStack var1, Block var2) { - return 1.5F; - } - - public void hitEntity(ItemStack var1, EntityLiving var2) { - var1.damageItem(1); - } - - public void onBlockDestroyed(ItemStack var1, int var2, int var3, int var4, int var5) { - var1.damageItem(2); - } - - public int getDamageVsEntity(Entity var1) { - return this.weaponDamage; - } -} diff --git a/src/net/minecraft/src/ItemTool.java b/src/net/minecraft/src/ItemTool.java deleted file mode 100644 index 9c231e1..0000000 --- a/src/net/minecraft/src/ItemTool.java +++ /dev/null @@ -1,44 +0,0 @@ -package net.minecraft.src; - -public class ItemTool extends Item { - private Block[] blocksEffectiveAgainst; - private float efficiencyOnProperMaterial = 4.0F; - private int damageVsEntity; - protected int toolMaterial; - - public ItemTool(int var1, int var2, int var3, Block[] var4) { - super(var1); - this.toolMaterial = var3; - this.blocksEffectiveAgainst = var4; - this.maxStackSize = 1; - this.maxDamage = 32 << var3; - if(var3 == 3) { - this.maxDamage *= 2; - } - - this.efficiencyOnProperMaterial = (float)((var3 + 1) * 2); - this.damageVsEntity = var2 + var3; - } - - public float getStrVsBlock(ItemStack var1, Block var2) { - for(int var3 = 0; var3 < this.blocksEffectiveAgainst.length; ++var3) { - if(this.blocksEffectiveAgainst[var3] == var2) { - return this.efficiencyOnProperMaterial; - } - } - - return 1.0F; - } - - public void hitEntity(ItemStack var1, EntityLiving var2) { - var1.damageItem(2); - } - - public void onBlockDestroyed(ItemStack var1, int var2, int var3, int var4, int var5) { - var1.damageItem(1); - } - - public int getDamageVsEntity(Entity var1) { - return this.damageVsEntity; - } -} diff --git a/src/net/minecraft/src/KeyBinding.java b/src/net/minecraft/src/KeyBinding.java deleted file mode 100644 index 6d27b38..0000000 --- a/src/net/minecraft/src/KeyBinding.java +++ /dev/null @@ -1,11 +0,0 @@ -package net.minecraft.src; - -public class KeyBinding { - public String keyDescription; - public int keyCode; - - public KeyBinding(String var1, int var2) { - this.keyDescription = var1; - this.keyCode = var2; - } -} diff --git a/src/net/minecraft/src/LoadingScreenRenderer.java b/src/net/minecraft/src/LoadingScreenRenderer.java deleted file mode 100644 index 435c9ac..0000000 --- a/src/net/minecraft/src/LoadingScreenRenderer.java +++ /dev/null @@ -1,124 +0,0 @@ -package net.minecraft.src; - -import org.lwjgl.opengl.Display; -import org.lwjgl.opengl.GL11; - -public class LoadingScreenRenderer implements IProgressUpdate { - private String currentlyDisplayedProgress = ""; - private Minecraft mc; - private String currentlyDisplayedText = ""; - private long systemTime = System.currentTimeMillis(); - private boolean printText = false; - - public LoadingScreenRenderer(Minecraft var1) { - this.mc = var1; - } - - public void printText(String var1) { - this.printText = false; - this.drawScreen(var1); - } - - public void displayProgressMessage(String var1) { - this.printText = true; - this.drawScreen(this.currentlyDisplayedText); - } - - public void drawScreen(String var1) { - if(!this.mc.running) { - if(!this.printText) { - throw new MinecraftError(); - } - } else { - this.currentlyDisplayedText = var1; - ScaledResolution var2 = new ScaledResolution(this.mc.displayWidth, this.mc.displayHeight); - int var3 = var2.getScaledWidth(); - int var4 = var2.getScaledHeight(); - GL11.glClear(GL11.GL_DEPTH_BUFFER_BIT); - GL11.glMatrixMode(GL11.GL_PROJECTION); - GL11.glLoadIdentity(); - GL11.glOrtho(0.0D, (double)var3, (double)var4, 0.0D, 100.0D, 300.0D); - GL11.glMatrixMode(GL11.GL_MODELVIEW); - GL11.glLoadIdentity(); - GL11.glTranslatef(0.0F, 0.0F, -200.0F); - } - } - - public void displayLoadingString(String var1) { - if(!this.mc.running) { - if(!this.printText) { - throw new MinecraftError(); - } - } else { - this.systemTime = 0L; - this.currentlyDisplayedProgress = var1; - this.setLoadingProgress(-1); - this.systemTime = 0L; - } - } - - public void setLoadingProgress(int var1) { - if(!this.mc.running) { - if(!this.printText) { - throw new MinecraftError(); - } - } else { - long var2 = System.currentTimeMillis(); - if(var2 - this.systemTime >= 20L) { - this.systemTime = var2; - ScaledResolution var4 = new ScaledResolution(this.mc.displayWidth, this.mc.displayHeight); - int var5 = var4.getScaledWidth(); - int var6 = var4.getScaledHeight(); - GL11.glClear(GL11.GL_DEPTH_BUFFER_BIT); - GL11.glMatrixMode(GL11.GL_PROJECTION); - GL11.glLoadIdentity(); - GL11.glOrtho(0.0D, (double)var5, (double)var6, 0.0D, 100.0D, 300.0D); - GL11.glMatrixMode(GL11.GL_MODELVIEW); - GL11.glLoadIdentity(); - GL11.glTranslatef(0.0F, 0.0F, -200.0F); - GL11.glClear(GL11.GL_DEPTH_BUFFER_BIT | GL11.GL_COLOR_BUFFER_BIT); - Tessellator var7 = Tessellator.instance; - int var8 = this.mc.renderEngine.getTexture("/dirt.png"); - GL11.glBindTexture(GL11.GL_TEXTURE_2D, var8); - float var9 = 32.0F; - var7.startDrawingQuads(); - var7.setColorOpaque_I(4210752); - var7.addVertexWithUV(0.0D, (double)var6, 0.0D, 0.0D, (double)((float)var6 / var9)); - var7.addVertexWithUV((double)var5, (double)var6, 0.0D, (double)((float)var5 / var9), (double)((float)var6 / var9)); - var7.addVertexWithUV((double)var5, 0.0D, 0.0D, (double)((float)var5 / var9), 0.0D); - var7.addVertexWithUV(0.0D, 0.0D, 0.0D, 0.0D, 0.0D); - var7.draw(); - if(var1 >= 0) { - byte var10 = 100; - byte var11 = 2; - int var12 = var5 / 2 - var10 / 2; - int var13 = var6 / 2 + 16; - GL11.glDisable(GL11.GL_TEXTURE_2D); - var7.startDrawingQuads(); - var7.setColorOpaque_I(8421504); - var7.addVertex((double)var12, (double)var13, 0.0D); - var7.addVertex((double)var12, (double)(var13 + var11), 0.0D); - var7.addVertex((double)(var12 + var10), (double)(var13 + var11), 0.0D); - var7.addVertex((double)(var12 + var10), (double)var13, 0.0D); - var7.setColorOpaque_I(8454016); - var7.addVertex((double)var12, (double)var13, 0.0D); - var7.addVertex((double)var12, (double)(var13 + var11), 0.0D); - var7.addVertex((double)(var12 + var1), (double)(var13 + var11), 0.0D); - var7.addVertex((double)(var12 + var1), (double)var13, 0.0D); - var7.draw(); - GL11.glEnable(GL11.GL_TEXTURE_2D); - } - - this.mc.fontRenderer.drawStringWithShadow(this.currentlyDisplayedText, (var5 - this.mc.fontRenderer.getStringWidth(this.currentlyDisplayedText)) / 2, var6 / 2 - 4 - 16, 16777215); - this.mc.fontRenderer.drawStringWithShadow(this.currentlyDisplayedProgress, (var5 - this.mc.fontRenderer.getStringWidth(this.currentlyDisplayedProgress)) / 2, var6 / 2 - 4 + 8, 16777215); - Display.update(); - - try { - Thread.yield(); - } catch (Exception var14) { - } - - } - } - } -} diff --git a/src/net/minecraft/src/Material.java b/src/net/minecraft/src/Material.java deleted file mode 100644 index 1f1bf08..0000000 --- a/src/net/minecraft/src/Material.java +++ /dev/null @@ -1,37 +0,0 @@ -package net.minecraft.src; - -public class Material { - public static final Material air = new MaterialTransparent(); - public static final Material ground = new Material(); - public static final Material wood = new Material(); - public static final Material rock = new Material(); - public static final Material iron = new Material(); - public static final Material water = new MaterialLiquid(); - public static final Material lava = new MaterialLiquid(); - public static final Material leaves = new Material(); - public static final Material plants = new MaterialLogic(); - public static final Material sponge = new Material(); - public static final Material cloth = new Material(); - public static final Material fire = new MaterialTransparent(); - public static final Material sand = new Material(); - public static final Material circuits = new MaterialLogic(); - public static final Material glass = new Material(); - public static final Material tnt = new Material(); - public static final Material unused = new Material(); - - public boolean getIsLiquid() { - return false; - } - - public boolean isSolid() { - return true; - } - - public boolean getCanBlockGrass() { - return true; - } - - public boolean getIsSolid() { - return true; - } -} diff --git a/src/net/minecraft/src/MaterialLiquid.java b/src/net/minecraft/src/MaterialLiquid.java deleted file mode 100644 index 54efda3..0000000 --- a/src/net/minecraft/src/MaterialLiquid.java +++ /dev/null @@ -1,11 +0,0 @@ -package net.minecraft.src; - -public class MaterialLiquid extends Material { - public boolean getIsLiquid() { - return true; - } - - public boolean isSolid() { - return false; - } -} diff --git a/src/net/minecraft/src/MaterialLogic.java b/src/net/minecraft/src/MaterialLogic.java deleted file mode 100644 index 19d5b0d..0000000 --- a/src/net/minecraft/src/MaterialLogic.java +++ /dev/null @@ -1,15 +0,0 @@ -package net.minecraft.src; - -public class MaterialLogic extends Material { - public boolean isSolid() { - return false; - } - - public boolean getCanBlockGrass() { - return false; - } - - public boolean getIsSolid() { - return false; - } -} diff --git a/src/net/minecraft/src/MaterialTransparent.java b/src/net/minecraft/src/MaterialTransparent.java deleted file mode 100644 index a475877..0000000 --- a/src/net/minecraft/src/MaterialTransparent.java +++ /dev/null @@ -1,15 +0,0 @@ -package net.minecraft.src; - -public class MaterialTransparent extends Material { - public boolean isSolid() { - return false; - } - - public boolean getCanBlockGrass() { - return false; - } - - public boolean getIsSolid() { - return false; - } -} diff --git a/src/net/minecraft/src/MathHelper.java b/src/net/minecraft/src/MathHelper.java deleted file mode 100644 index bd32d54..0000000 --- a/src/net/minecraft/src/MathHelper.java +++ /dev/null @@ -1,58 +0,0 @@ -package net.minecraft.src; - -public class MathHelper { - private static float[] SIN_TABLE = new float[65536]; - - public static final float sin(float var0) { - return SIN_TABLE[(int)(var0 * 10430.378F) & '\uffff']; - } - - public static final float cos(float var0) { - return SIN_TABLE[(int)(var0 * 10430.378F + 16384.0F) & '\uffff']; - } - - public static final float sqrt_float(float var0) { - return (float)Math.sqrt((double)var0); - } - - public static final float sqrt_double(double var0) { - return (float)Math.sqrt(var0); - } - - public static int floor_float(float var0) { - int var1 = (int)var0; - return var0 < (float)var1 ? var1 - 1 : var1; - } - - public static int floor_double(double var0) { - int var2 = (int)var0; - return var0 < (double)var2 ? var2 - 1 : var2; - } - - public static float abs(float var0) { - return var0 >= 0.0F ? var0 : -var0; - } - - public static double abs_max(double var0, double var2) { - if(var0 < 0.0D) { - var0 = -var0; - } - - if(var2 < 0.0D) { - var2 = -var2; - } - - return var0 > var2 ? var0 : var2; - } - - public static int bucketInt(int var0, int var1) { - return var0 < 0 ? -((-var0 - 1) / var1) - 1 : var0 / var1; - } - - static { - for(int var0 = 0; var0 < 65536; ++var0) { - SIN_TABLE[var0] = (float)Math.sin((double)var0 * Math.PI * 2.0D / 65536.0D); - } - - } -} diff --git a/src/net/minecraft/src/MetadataChunkBlock.java b/src/net/minecraft/src/MetadataChunkBlock.java deleted file mode 100644 index 6f9e4d9..0000000 --- a/src/net/minecraft/src/MetadataChunkBlock.java +++ /dev/null @@ -1,153 +0,0 @@ -package net.minecraft.src; - -public class MetadataChunkBlock { - public final EnumSkyBlock skyBlock; - public int x; - public int y; - public int z; - public int maxX; - public int maxY; - public int maxZ; - - public MetadataChunkBlock(EnumSkyBlock var1, int var2, int var3, int var4, int var5, int var6, int var7) { - this.skyBlock = var1; - this.x = var2; - this.y = var3; - this.z = var4; - this.maxX = var5; - this.maxY = var6; - this.maxZ = var7; - } - - public void updateLight(World var1) { - for(int var2 = this.x; var2 <= this.maxX; ++var2) { - for(int var3 = this.z; var3 <= this.maxZ; ++var3) { - if(var1.blockExists(var2, 0, var3)) { - for(int var4 = this.y; var4 <= this.maxY; ++var4) { - if(var4 >= 0 && var4 < 128) { - int var5 = var1.getSavedLightValue(this.skyBlock, var2, var4, var3); - boolean var6 = false; - int var7 = var1.getBlockId(var2, var4, var3); - int var8 = Block.lightOpacity[var7]; - if(var8 == 0) { - var8 = 1; - } - - int var9 = 0; - if(this.skyBlock == EnumSkyBlock.Sky) { - if(var1.canExistingBlockSeeTheSky(var2, var4, var3)) { - var9 = 15; - } - } else if(this.skyBlock == EnumSkyBlock.Block) { - var9 = Block.lightValue[var7]; - } - - int var10; - int var16; - if(var8 >= 15 && var9 == 0) { - var16 = 0; - } else { - var10 = var1.getSavedLightValue(this.skyBlock, var2 - 1, var4, var3); - int var11 = var1.getSavedLightValue(this.skyBlock, var2 + 1, var4, var3); - int var12 = var1.getSavedLightValue(this.skyBlock, var2, var4 - 1, var3); - int var13 = var1.getSavedLightValue(this.skyBlock, var2, var4 + 1, var3); - int var14 = var1.getSavedLightValue(this.skyBlock, var2, var4, var3 - 1); - int var15 = var1.getSavedLightValue(this.skyBlock, var2, var4, var3 + 1); - var16 = var10; - if(var11 > var10) { - var16 = var11; - } - - if(var12 > var16) { - var16 = var12; - } - - if(var13 > var16) { - var16 = var13; - } - - if(var14 > var16) { - var16 = var14; - } - - if(var15 > var16) { - var16 = var15; - } - - var16 -= var8; - if(var16 < 0) { - var16 = 0; - } - - if(var9 > var16) { - var16 = var9; - } - } - - if(var5 != var16) { - var1.setLightValue(this.skyBlock, var2, var4, var3, var16); - var10 = var16 - 1; - if(var10 < 0) { - var10 = 0; - } - - var1.neighborLightPropagationChanged(this.skyBlock, var2 - 1, var4, var3, var10); - var1.neighborLightPropagationChanged(this.skyBlock, var2, var4 - 1, var3, var10); - var1.neighborLightPropagationChanged(this.skyBlock, var2, var4, var3 - 1, var10); - if(var2 + 1 >= this.maxX) { - var1.neighborLightPropagationChanged(this.skyBlock, var2 + 1, var4, var3, var10); - } - - if(var4 + 1 >= this.maxY) { - var1.neighborLightPropagationChanged(this.skyBlock, var2, var4 + 1, var3, var10); - } - - if(var3 + 1 >= this.maxZ) { - var1.neighborLightPropagationChanged(this.skyBlock, var2, var4, var3 + 1, var10); - } - } - } - } - } - } - } - - } - - public boolean getLightUpdated(int var1, int var2, int var3, int var4, int var5, int var6) { - if(var1 >= this.x && var2 >= this.y && var3 >= this.z && var4 <= this.maxX && var5 <= this.maxY && var6 <= this.maxZ) { - return true; - } else { - byte var7 = 1; - if(var1 >= this.x - var7 && var2 >= this.y - var7 && var3 >= this.z - var7 && var4 <= this.maxX + var7 && var5 <= this.maxY + var7 && var6 <= this.maxZ + var7) { - if(var1 < this.x) { - this.x = var1; - } - - if(var2 < this.y) { - this.y = var2; - } - - if(var3 < this.z) { - this.z = var3; - } - - if(var4 > this.maxX) { - this.maxX = var4; - } - - if(var5 > this.maxY) { - this.maxY = var5; - } - - if(var6 > this.maxZ) { - this.maxZ = var6; - } - - return true; - } else { - return false; - } - } - } -} diff --git a/src/net/minecraft/src/MinecartTrackLogic.java b/src/net/minecraft/src/MinecartTrackLogic.java deleted file mode 100644 index 87e209a..0000000 --- a/src/net/minecraft/src/MinecartTrackLogic.java +++ /dev/null @@ -1,250 +0,0 @@ -package net.minecraft.src; - -import java.util.ArrayList; -import java.util.List; - -class MinecartTrackLogic { - private World worldObj; - private int trackX; - private int trackY; - private int trackZ; - private int trackMetadata; - private List connectedTracks; - final BlockMinecartTrack minecartTrack; - - public MinecartTrackLogic(BlockMinecartTrack var1, World var2, int var3, int var4, int var5) { - this.minecartTrack = var1; - this.connectedTracks = new ArrayList(); - this.worldObj = var2; - this.trackX = var3; - this.trackY = var4; - this.trackZ = var5; - this.trackMetadata = var2.getBlockMetadata(var3, var4, var5); - this.calculateConnectedTracks(); - } - - private void calculateConnectedTracks() { - this.connectedTracks.clear(); - if(this.trackMetadata == 0) { - this.connectedTracks.add(new ChunkPosition(this.trackX, this.trackY, this.trackZ - 1)); - this.connectedTracks.add(new ChunkPosition(this.trackX, this.trackY, this.trackZ + 1)); - } else if(this.trackMetadata == 1) { - this.connectedTracks.add(new ChunkPosition(this.trackX - 1, this.trackY, this.trackZ)); - this.connectedTracks.add(new ChunkPosition(this.trackX + 1, this.trackY, this.trackZ)); - } else if(this.trackMetadata == 2) { - this.connectedTracks.add(new ChunkPosition(this.trackX - 1, this.trackY, this.trackZ)); - this.connectedTracks.add(new ChunkPosition(this.trackX + 1, this.trackY + 1, this.trackZ)); - } else if(this.trackMetadata == 3) { - this.connectedTracks.add(new ChunkPosition(this.trackX - 1, this.trackY + 1, this.trackZ)); - this.connectedTracks.add(new ChunkPosition(this.trackX + 1, this.trackY, this.trackZ)); - } else if(this.trackMetadata == 4) { - this.connectedTracks.add(new ChunkPosition(this.trackX, this.trackY + 1, this.trackZ - 1)); - this.connectedTracks.add(new ChunkPosition(this.trackX, this.trackY, this.trackZ + 1)); - } else if(this.trackMetadata == 5) { - this.connectedTracks.add(new ChunkPosition(this.trackX, this.trackY, this.trackZ - 1)); - this.connectedTracks.add(new ChunkPosition(this.trackX, this.trackY + 1, this.trackZ + 1)); - } else if(this.trackMetadata == 6) { - this.connectedTracks.add(new ChunkPosition(this.trackX + 1, this.trackY, this.trackZ)); - this.connectedTracks.add(new ChunkPosition(this.trackX, this.trackY, this.trackZ + 1)); - } else if(this.trackMetadata == 7) { - this.connectedTracks.add(new ChunkPosition(this.trackX - 1, this.trackY, this.trackZ)); - this.connectedTracks.add(new ChunkPosition(this.trackX, this.trackY, this.trackZ + 1)); - } else if(this.trackMetadata == 8) { - this.connectedTracks.add(new ChunkPosition(this.trackX - 1, this.trackY, this.trackZ)); - this.connectedTracks.add(new ChunkPosition(this.trackX, this.trackY, this.trackZ - 1)); - } else if(this.trackMetadata == 9) { - this.connectedTracks.add(new ChunkPosition(this.trackX + 1, this.trackY, this.trackZ)); - this.connectedTracks.add(new ChunkPosition(this.trackX, this.trackY, this.trackZ - 1)); - } - - } - - private void refreshConnectedTracks() { - for(int var1 = 0; var1 < this.connectedTracks.size(); ++var1) { - MinecartTrackLogic var2 = this.getMinecartTrackLogic((ChunkPosition)this.connectedTracks.get(var1)); - if(var2 != null && var2.isConnectedTo(this)) { - this.connectedTracks.set(var1, new ChunkPosition(var2.trackX, var2.trackY, var2.trackZ)); - } else { - this.connectedTracks.remove(var1--); - } - } - - } - - private MinecartTrackLogic getMinecartTrackLogic(ChunkPosition var1) { - return this.worldObj.getBlockId(var1.x, var1.y, var1.z) == this.minecartTrack.blockID ? new MinecartTrackLogic(this.minecartTrack, this.worldObj, var1.x, var1.y, var1.z) : (this.worldObj.getBlockId(var1.x, var1.y + 1, var1.z) == this.minecartTrack.blockID ? new MinecartTrackLogic(this.minecartTrack, this.worldObj, var1.x, var1.y + 1, var1.z) : (this.worldObj.getBlockId(var1.x, var1.y - 1, var1.z) == this.minecartTrack.blockID ? new MinecartTrackLogic(this.minecartTrack, this.worldObj, var1.x, var1.y - 1, var1.z) : null)); - } - - private boolean isConnectedTo(MinecartTrackLogic var1) { - for(int var2 = 0; var2 < this.connectedTracks.size(); ++var2) { - ChunkPosition var3 = (ChunkPosition)this.connectedTracks.get(var2); - if(var3.x == var1.trackX && var3.z == var1.trackZ) { - return true; - } - } - - return false; - } - - private boolean isInTrack(int var1, int var2, int var3) { - for(int var4 = 0; var4 < this.connectedTracks.size(); ++var4) { - ChunkPosition var5 = (ChunkPosition)this.connectedTracks.get(var4); - if(var5.x == var1 && var5.z == var3) { - return true; - } - } - - return false; - } - - private boolean handleKeyPress(MinecartTrackLogic var1) { - if(this.isConnectedTo(var1)) { - return true; - } else if(this.connectedTracks.size() == 2) { - return false; - } else if(this.connectedTracks.size() == 0) { - return true; - } else { - ChunkPosition var2 = (ChunkPosition)this.connectedTracks.get(0); - return var1.trackY == this.trackY && var2.y == this.trackY ? true : true; - } - } - - private void connectToNeighbor(MinecartTrackLogic var1) { - this.connectedTracks.add(new ChunkPosition(var1.trackX, var1.trackY, var1.trackZ)); - boolean var2 = this.isInTrack(this.trackX, this.trackY, this.trackZ - 1); - boolean var3 = this.isInTrack(this.trackX, this.trackY, this.trackZ + 1); - boolean var4 = this.isInTrack(this.trackX - 1, this.trackY, this.trackZ); - boolean var5 = this.isInTrack(this.trackX + 1, this.trackY, this.trackZ); - byte var6 = -1; - if(var2 || var3) { - var6 = 0; - } - - if(var4 || var5) { - var6 = 1; - } - - if(var3 && var5 && !var2 && !var4) { - var6 = 6; - } - - if(var3 && var4 && !var2 && !var5) { - var6 = 7; - } - - if(var2 && var4 && !var3 && !var5) { - var6 = 8; - } - - if(var2 && var5 && !var3 && !var4) { - var6 = 9; - } - - if(var6 == 0) { - if(this.worldObj.getBlockId(this.trackX, this.trackY + 1, this.trackZ - 1) == this.minecartTrack.blockID) { - var6 = 4; - } - - if(this.worldObj.getBlockId(this.trackX, this.trackY + 1, this.trackZ + 1) == this.minecartTrack.blockID) { - var6 = 5; - } - } - - if(var6 == 1) { - if(this.worldObj.getBlockId(this.trackX + 1, this.trackY + 1, this.trackZ) == this.minecartTrack.blockID) { - var6 = 2; - } - - if(this.worldObj.getBlockId(this.trackX - 1, this.trackY + 1, this.trackZ) == this.minecartTrack.blockID) { - var6 = 3; - } - } - - if(var6 < 0) { - var6 = 0; - } - - this.worldObj.setBlockMetadataWithNotify(this.trackX, this.trackY, this.trackZ, var6); - } - - private boolean canConnectFrom(int var1, int var2, int var3) { - MinecartTrackLogic var4 = this.getMinecartTrackLogic(new ChunkPosition(var1, var2, var3)); - if(var4 == null) { - return false; - } else { - var4.refreshConnectedTracks(); - return var4.handleKeyPress(this); - } - } - - public void place() { - boolean var1 = this.canConnectFrom(this.trackX, this.trackY, this.trackZ - 1); - boolean var2 = this.canConnectFrom(this.trackX, this.trackY, this.trackZ + 1); - boolean var3 = this.canConnectFrom(this.trackX - 1, this.trackY, this.trackZ); - boolean var4 = this.canConnectFrom(this.trackX + 1, this.trackY, this.trackZ); - byte var5 = -1; - if(var1 || var2) { - var5 = 0; - } - - if(var3 || var4) { - var5 = 1; - } - - if(var2 && var4 && !var1 && !var3) { - var5 = 6; - } - - if(var2 && var3 && !var1 && !var4) { - var5 = 7; - } - - if(var1 && var3 && !var2 && !var4) { - var5 = 8; - } - - if(var1 && var4 && !var2 && !var3) { - var5 = 9; - } - - if(var5 == 0) { - if(this.worldObj.getBlockId(this.trackX, this.trackY + 1, this.trackZ - 1) == this.minecartTrack.blockID) { - var5 = 4; - } - - if(this.worldObj.getBlockId(this.trackX, this.trackY + 1, this.trackZ + 1) == this.minecartTrack.blockID) { - var5 = 5; - } - } - - if(var5 == 1) { - if(this.worldObj.getBlockId(this.trackX + 1, this.trackY + 1, this.trackZ) == this.minecartTrack.blockID) { - var5 = 2; - } - - if(this.worldObj.getBlockId(this.trackX - 1, this.trackY + 1, this.trackZ) == this.minecartTrack.blockID) { - var5 = 3; - } - } - - if(var5 < 0) { - var5 = 0; - } - - this.trackMetadata = var5; - this.calculateConnectedTracks(); - this.worldObj.setBlockMetadataWithNotify(this.trackX, this.trackY, this.trackZ, var5); - - for(int var6 = 0; var6 < this.connectedTracks.size(); ++var6) { - MinecartTrackLogic var7 = this.getMinecartTrackLogic((ChunkPosition)this.connectedTracks.get(var6)); - if(var7 != null) { - var7.refreshConnectedTracks(); - if(var7.handleKeyPress(this)) { - var7.connectToNeighbor(this); - } - } - } - - } -} diff --git a/src/net/minecraft/src/Minecraft.java b/src/net/minecraft/src/Minecraft.java deleted file mode 100644 index b16dd43..0000000 --- a/src/net/minecraft/src/Minecraft.java +++ /dev/null @@ -1,1025 +0,0 @@ -package net.minecraft.src; - -import java.awt.Canvas; -import java.awt.Color; -import java.awt.Component; -import java.awt.Graphics; -import java.io.File; -import net.minecraft.client.MinecraftApplet; -import org.lwjgl.LWJGLException; -import org.lwjgl.input.Controllers; -import org.lwjgl.input.Keyboard; -import org.lwjgl.input.Mouse; -import org.lwjgl.opengl.Display; -import org.lwjgl.opengl.DisplayMode; -import org.lwjgl.opengl.GL11; -import org.lwjgl.util.glu.GLU; - -public abstract class Minecraft implements Runnable { - public PlayerController playerController = new PlayerControllerSP(this); - private boolean fullscreen = false; - public int displayWidth; - public int displayHeight; - private OpenGlCapsChecker glCapabilities; - private Timer timer = new Timer(20.0F); - public World theWorld; - public RenderGlobal renderGlobal; - public EntityPlayerSP thePlayer; - public EffectRenderer effectRenderer; - public Session session = null; - public String minecraftUri; - public Canvas mcCanvas; - public boolean appletMode = true; - public volatile boolean isGamePaused = false; - public RenderEngine renderEngine; - public FontRenderer fontRenderer; - public GuiScreen currentScreen = null; - public LoadingScreenRenderer loadingScreen = new LoadingScreenRenderer(this); - public EntityRenderer entityRenderer = new EntityRenderer(this); - private ThreadDownloadResources downloadResourcesThread; - private int ticksRan = 0; - private int leftClickCounter = 0; - private int tempDisplayWidth; - private int tempDisplayHeight; - public String objectMouseOverString = null; - public int rightClickDelayTimer = 0; - public GuiIngame ingameGUI; - public boolean skipRenderWorld = false; - public ModelBiped playerModelBiped = new ModelBiped(0.0F); - public MovingObjectPosition objectMouseOver = null; - public GameSettings gameSettings; - protected MinecraftApplet mcApplet; - public SoundManager sndManager = new SoundManager(); - public MouseHelper mouseHelper; - public File mcDataDir; - public static long[] tickTimes = new long[512]; - public static int numRecordedFrameTimes = 0; - private TextureWaterFX textureWaterFX = new TextureWaterFX(); - private TextureLavaFX textureLavaFX = new TextureLavaFX(); - private static File minecraftDir = null; - volatile boolean running = true; - public String debug = ""; - long prevFrameTime = -1L; - public boolean inGameHasFocus = false; - private int mouseTicksRan = 0; - public boolean isRaining = false; - long systemTime = System.currentTimeMillis(); - - public Minecraft(Component var1, Canvas var2, MinecraftApplet var3, int var4, int var5, boolean var6) { - this.tempDisplayWidth = var4; - this.tempDisplayHeight = var5; - this.fullscreen = var6; - this.mcApplet = var3; - new ThreadSleepForever(this, "Timer hack thread"); - this.mcCanvas = var2; - this.displayWidth = var4; - this.displayHeight = var5; - this.fullscreen = var6; - } - - public abstract void displayUnexpectedThrowable(UnexpectedThrowable var1); - - public void setServer(String var1, int var2) { - } - - public void startGame() throws LWJGLException { - if(this.mcCanvas != null) { - Graphics var1 = this.mcCanvas.getGraphics(); - if(var1 != null) { - var1.setColor(Color.BLACK); - var1.fillRect(0, 0, this.displayWidth, this.displayHeight); - var1.dispose(); - } - - Display.setParent(this.mcCanvas); - } else if(this.fullscreen) { - Display.setFullscreen(true); - this.displayWidth = Display.getDisplayMode().getWidth(); - this.displayHeight = Display.getDisplayMode().getHeight(); - if(this.displayWidth <= 0) { - this.displayWidth = 1; - } - - if(this.displayHeight <= 0) { - this.displayHeight = 1; - } - } else { - Display.setDisplayMode(new DisplayMode(this.displayWidth, this.displayHeight)); - } - - Display.setTitle("Minecraft Minecraft Infdev"); - - try { - Display.create(); - } catch (LWJGLException var6) { - var6.printStackTrace(); - - try { - Thread.sleep(1000L); - } catch (InterruptedException var5) { - } - - Display.create(); - } - - this.mcDataDir = getMinecraftDir(); - this.gameSettings = new GameSettings(this, this.mcDataDir); - this.renderEngine = new RenderEngine(this.gameSettings); - this.fontRenderer = new FontRenderer(this.gameSettings, "/default.png", this.renderEngine); - this.loadScreen(); - Keyboard.create(); - Mouse.create(); - this.mouseHelper = new MouseHelper(this.mcCanvas); - - try { - Controllers.create(); - } catch (Exception var4) { - var4.printStackTrace(); - } - - this.checkGLError("Pre startup"); - GL11.glEnable(GL11.GL_TEXTURE_2D); - GL11.glShadeModel(GL11.GL_SMOOTH); - GL11.glClearDepth(1.0D); - GL11.glEnable(GL11.GL_DEPTH_TEST); - GL11.glDepthFunc(GL11.GL_LEQUAL); - GL11.glEnable(GL11.GL_ALPHA_TEST); - GL11.glAlphaFunc(GL11.GL_GREATER, 0.1F); - GL11.glCullFace(GL11.GL_BACK); - GL11.glMatrixMode(GL11.GL_PROJECTION); - GL11.glLoadIdentity(); - GL11.glMatrixMode(GL11.GL_MODELVIEW); - this.checkGLError("Startup"); - this.glCapabilities = new OpenGlCapsChecker(); - this.sndManager.loadSoundSettings(this.gameSettings); - this.renderEngine.registerTextureFX(this.textureLavaFX); - this.renderEngine.registerTextureFX(this.textureWaterFX); - this.renderEngine.registerTextureFX(new TextureWaterFlowFX()); - this.renderEngine.registerTextureFX(new TextureLavaFlowFX()); - this.renderEngine.registerTextureFX(new TextureFlamesFX(0)); - this.renderEngine.registerTextureFX(new TextureFlamesFX(1)); - this.renderEngine.registerTextureFX(new TextureGearsFX(0)); - this.renderEngine.registerTextureFX(new TextureGearsFX(1)); - this.renderGlobal = new RenderGlobal(this, this.renderEngine); - GL11.glViewport(0, 0, this.displayWidth, this.displayHeight); - this.displayGuiScreen(new GuiMainMenu()); - this.effectRenderer = new EffectRenderer(this.theWorld, this.renderEngine); - - try { - this.downloadResourcesThread = new ThreadDownloadResources(this.mcDataDir, this); - this.downloadResourcesThread.start(); - } catch (Exception var3) { - } - - this.checkGLError("Post startup"); - this.ingameGUI = new GuiIngame(this); - this.playerController.init(); - } - - private void loadScreen() throws LWJGLException { - ScaledResolution var1 = new ScaledResolution(this.displayWidth, this.displayHeight); - int var2 = var1.getScaledWidth(); - int var3 = var1.getScaledHeight(); - GL11.glClear(GL11.GL_DEPTH_BUFFER_BIT | GL11.GL_COLOR_BUFFER_BIT); - GL11.glMatrixMode(GL11.GL_PROJECTION); - GL11.glLoadIdentity(); - GL11.glOrtho(0.0D, (double)var2, (double)var3, 0.0D, 1000.0D, 3000.0D); - GL11.glMatrixMode(GL11.GL_MODELVIEW); - GL11.glLoadIdentity(); - GL11.glTranslatef(0.0F, 0.0F, -2000.0F); - GL11.glViewport(0, 0, this.displayWidth, this.displayHeight); - GL11.glClearColor(0.0F, 0.0F, 0.0F, 0.0F); - GL11.glDisable(GL11.GL_LIGHTING); - GL11.glDisable(GL11.GL_FOG); - GL11.glEnable(GL11.GL_TEXTURE_2D); - Tessellator var4 = Tessellator.instance; - GL11.glBindTexture(GL11.GL_TEXTURE_2D, this.renderEngine.getTexture("/dirt.png")); - GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); - float var5 = 32.0F; - var4.startDrawingQuads(); - var4.setColorOpaque_I(4210752); - var4.addVertexWithUV(0.0D, (double)this.displayHeight, 0.0D, 0.0D, (double)((float)this.displayHeight / var5 + 0.0F)); - var4.addVertexWithUV((double)this.displayWidth, (double)this.displayHeight, 0.0D, (double)((float)this.displayWidth / var5), (double)((float)this.displayHeight / var5 + 0.0F)); - var4.addVertexWithUV((double)this.displayWidth, 0.0D, 0.0D, (double)((float)this.displayWidth / var5), 0.0D); - var4.addVertexWithUV(0.0D, 0.0D, 0.0D, 0.0D, 0.0D); - var4.draw(); - GL11.glEnable(GL11.GL_ALPHA_TEST); - GL11.glAlphaFunc(GL11.GL_GREATER, 0.1F); - this.fontRenderer.drawStringWithShadow("Loading...", 8, this.displayHeight / 2 - 16, -1); - Display.swapBuffers(); - } - - public static File getMinecraftDir() { - if(minecraftDir == null) { - minecraftDir = getAppDir("minecraft"); - } - - return minecraftDir; - } - - public static File getAppDir(String var0) { - String var1 = System.getProperty("user.home", "."); - File var2; - switch(OSMap.osValues[getOs().ordinal()]) { - case 1: - case 2: - var2 = new File(var1, '.' + var0 + '/'); - break; - case 3: - String var3 = System.getenv("APPDATA"); - if(var3 != null) { - var2 = new File(var3, "." + var0 + '/'); - } else { - var2 = new File(var1, '.' + var0 + '/'); - } - break; - case 4: - var2 = new File(var1, "Library/Application Support/" + var0); - break; - default: - var2 = new File(var1, var0 + '/'); - } - - if(!var2.exists() && !var2.mkdirs()) { - throw new RuntimeException("The working directory could not be created: " + var2); - } else { - return var2; - } - } - - private static EnumOS getOs() { - String var0 = System.getProperty("os.name").toLowerCase(); - return var0.contains("win") ? EnumOS.windows : (var0.contains("mac") ? EnumOS.macos : (var0.contains("solaris") ? EnumOS.solaris : (var0.contains("sunos") ? EnumOS.solaris : (var0.contains("linux") ? EnumOS.linux : (var0.contains("unix") ? EnumOS.linux : EnumOS.unknown))))); - } - - public void displayGuiScreen(GuiScreen var1) { - if(!(this.currentScreen instanceof GuiErrorScreen)) { - if(this.currentScreen != null) { - this.currentScreen.onGuiClosed(); - } - - if(var1 == null && this.theWorld == null) { - var1 = new GuiMainMenu(); - } else if(var1 == null && this.thePlayer.health <= 0) { - var1 = new GuiGameOver(); - } - - this.currentScreen = (GuiScreen)var1; - if(var1 != null) { - this.setIngameNotInFocus(); - ScaledResolution var2 = new ScaledResolution(this.displayWidth, this.displayHeight); - int var3 = var2.getScaledWidth(); - int var4 = var2.getScaledHeight(); - ((GuiScreen)var1).setWorldAndResolution(this, var3, var4); - this.skipRenderWorld = false; - } else { - this.setIngameFocus(); - } - - } - } - - private void checkGLError(String var1) { - int var2 = GL11.glGetError(); - if(var2 != 0) { - String var3 = GLU.gluErrorString(var2); - System.out.println("########## GL ERROR ##########"); - System.out.println("@ " + var1); - System.out.println(var2 + ": " + var3); - System.exit(0); - } - - } - - public void shutdownMinecraftApplet() { - if(this.mcApplet != null) { - this.mcApplet.clearApplet(); - } - - try { - if(this.downloadResourcesThread != null) { - this.downloadResourcesThread.closeMinecraft(); - } - } catch (Exception var8) { - } - - try { - System.out.println("Stopping!"); - this.changeWorld1((World)null); - - try { - GLAllocation.deleteTexturesAndDisplayLists(); - } catch (Exception var6) { - } - - this.sndManager.closeMinecraft(); - Mouse.destroy(); - Keyboard.destroy(); - } finally { - Display.destroy(); - } - - System.gc(); - } - - public void run() { - this.running = true; - - try { - this.startGame(); - } catch (Exception var10) { - var10.printStackTrace(); - this.displayUnexpectedThrowable(new UnexpectedThrowable("Failed to start game", var10)); - return; - } - - try { - long var1 = System.currentTimeMillis(); - int var3 = 0; - - while(this.running && (this.mcApplet == null || this.mcApplet.isActive())) { - AxisAlignedBB.clearBoundingBoxPool(); - Vec3D.initialize(); - if(this.mcCanvas == null && Display.isCloseRequested()) { - this.shutdown(); - } - - if(this.isGamePaused) { - float var4 = this.timer.renderPartialTicks; - this.timer.updateTimer(); - this.timer.renderPartialTicks = var4; - } else { - this.timer.updateTimer(); - } - - for(int var14 = 0; var14 < this.timer.elapsedTicks; ++var14) { - ++this.ticksRan; - this.runTick(); - } - - this.checkGLError("Pre render"); - if(this.isGamePaused) { - this.timer.renderPartialTicks = 1.0F; - } - - this.sndManager.setListener(this.thePlayer, this.timer.renderPartialTicks); - GL11.glEnable(GL11.GL_TEXTURE_2D); - if(this.theWorld != null) { - while(this.theWorld.updatingLighting()) { - } - } - - if(!this.skipRenderWorld) { - this.playerController.setPartialTime(this.timer.renderPartialTicks); - this.entityRenderer.updateCameraAndRender(this.timer.renderPartialTicks); - } - - if(!Display.isActive() && this.fullscreen) { - this.toggleFullscreen(); - } - - if(Keyboard.isKeyDown(Keyboard.KEY_F6)) { - this.displayDebugInfo(); - } else { - this.prevFrameTime = System.nanoTime(); - } - - Thread.yield(); - Display.update(); - if(this.mcCanvas != null && !this.fullscreen && (this.mcCanvas.getWidth() != this.displayWidth || this.mcCanvas.getHeight() != this.displayHeight)) { - this.displayWidth = this.mcCanvas.getWidth(); - this.displayHeight = this.mcCanvas.getHeight(); - if(this.displayWidth <= 0) { - this.displayWidth = 1; - } - - if(this.displayHeight <= 0) { - this.displayHeight = 1; - } - - this.resize(this.displayWidth, this.displayHeight); - } - - if(this.gameSettings.limitFramerate) { - Thread.sleep(5L); - } - - this.checkGLError("Post render"); - ++var3; - - for(this.isGamePaused = !this.isMultiplayerWorld() && this.currentScreen != null && this.currentScreen.doesGuiPauseGame(); System.currentTimeMillis() >= var1 + 1000L; var3 = 0) { - this.debug = var3 + " fps, " + WorldRenderer.chunksUpdated + " chunk updates"; - WorldRenderer.chunksUpdated = 0; - var1 += 1000L; - } - } - } catch (MinecraftError var11) { - } catch (Exception var12) { - var12.printStackTrace(); - this.displayUnexpectedThrowable(new UnexpectedThrowable("Unexpected error", var12)); - } finally { - this.shutdownMinecraftApplet(); - } - - } - - private void displayDebugInfo() { - if(this.prevFrameTime == -1L) { - this.prevFrameTime = System.nanoTime(); - } - - long var1 = System.nanoTime(); - tickTimes[numRecordedFrameTimes++ & tickTimes.length - 1] = var1 - this.prevFrameTime; - this.prevFrameTime = var1; - GL11.glClear(GL11.GL_DEPTH_BUFFER_BIT); - GL11.glMatrixMode(GL11.GL_PROJECTION); - GL11.glLoadIdentity(); - GL11.glOrtho(0.0D, (double)this.displayWidth, (double)this.displayHeight, 0.0D, 1000.0D, 3000.0D); - GL11.glMatrixMode(GL11.GL_MODELVIEW); - GL11.glLoadIdentity(); - GL11.glTranslatef(0.0F, 0.0F, -2000.0F); - GL11.glLineWidth(1.0F); - GL11.glDisable(GL11.GL_TEXTURE_2D); - Tessellator var3 = Tessellator.instance; - var3.startDrawing(7); - var3.setColorOpaque_I(538968064); - var3.addVertex(0.0D, (double)(this.displayHeight - 100), 0.0D); - var3.addVertex(0.0D, (double)this.displayHeight, 0.0D); - var3.addVertex((double)tickTimes.length, (double)this.displayHeight, 0.0D); - var3.addVertex((double)tickTimes.length, (double)(this.displayHeight - 100), 0.0D); - var3.draw(); - long var4 = 0L; - - int var6; - for(var6 = 0; var6 < tickTimes.length; ++var6) { - var4 += tickTimes[var6]; - } - - var6 = (int)(var4 / 200000L / (long)tickTimes.length); - var3.startDrawing(7); - var3.setColorOpaque_I(541065216); - var3.addVertex(0.0D, (double)(this.displayHeight - var6), 0.0D); - var3.addVertex(0.0D, (double)this.displayHeight, 0.0D); - var3.addVertex((double)tickTimes.length, (double)this.displayHeight, 0.0D); - var3.addVertex((double)tickTimes.length, (double)(this.displayHeight - var6), 0.0D); - var3.draw(); - var3.startDrawing(1); - - for(int var7 = 0; var7 < tickTimes.length; ++var7) { - int var8 = (var7 - numRecordedFrameTimes & tickTimes.length - 1) * 255 / tickTimes.length; - int var9 = var8 * var8 / 255; - var9 = var9 * var9 / 255; - int var10 = var9 * var9 / 255; - var10 = var10 * var10 / 255; - var3.setColorOpaque_I(-16777216 + var10 + var9 * 256 + var8 * 65536); - long var11 = tickTimes[var7] / 200000L; - var3.addVertex((double)((float)var7 + 0.5F), (double)((float)((long)this.displayHeight - var11) + 0.5F), 0.0D); - var3.addVertex((double)((float)var7 + 0.5F), (double)((float)this.displayHeight + 0.5F), 0.0D); - } - - var3.draw(); - GL11.glEnable(GL11.GL_TEXTURE_2D); - } - - public void shutdown() { - this.running = false; - } - - public void setIngameFocus() { - if(Display.isActive()) { - if(!this.inGameHasFocus) { - this.inGameHasFocus = true; - this.mouseHelper.grabMouseCursor(); - this.displayGuiScreen((GuiScreen)null); - this.mouseTicksRan = this.ticksRan + 10000; - } - } - } - - public void setIngameNotInFocus() { - if(this.inGameHasFocus) { - if(this.thePlayer != null) { - this.thePlayer.resetPlayerKeyState(); - } - - this.inGameHasFocus = false; - this.mouseHelper.ungrabMouseCursor(); - } - } - - public void displayInGameMenu() { - if(this.currentScreen == null) { - this.displayGuiScreen(new GuiIngameMenu()); - } - } - - private void sendClickBlockToController(int var1, boolean var2) { - if(!this.playerController.isInTestMode) { - if(var1 != 0 || this.leftClickCounter <= 0) { - if(var2 && this.objectMouseOver != null && this.objectMouseOver.typeOfHit == 0 && var1 == 0) { - int var3 = this.objectMouseOver.blockX; - int var4 = this.objectMouseOver.blockY; - int var5 = this.objectMouseOver.blockZ; - this.playerController.sendBlockRemoving(var3, var4, var5, this.objectMouseOver.sideHit); - this.effectRenderer.addBlockHitEffects(var3, var4, var5, this.objectMouseOver.sideHit); - } else { - this.playerController.resetBlockRemoving(); - } - - } - } - } - - private void clickMouse(int var1) { - if(var1 != 0 || this.leftClickCounter <= 0) { - if(var1 == 0) { - this.entityRenderer.itemRenderer.swing(); - } - - int var3; - if(this.objectMouseOver == null) { - if(var1 == 0 && !(this.playerController instanceof PlayerControllerCreative)) { - this.leftClickCounter = 10; - } - } else if(this.objectMouseOver.typeOfHit == 1) { - if(var1 == 0) { - this.thePlayer.attackEntity(this.objectMouseOver.entityHit); - } - - if(var1 == 1) { - this.thePlayer.interactWithEntity(this.objectMouseOver.entityHit); - } - } else if(this.objectMouseOver.typeOfHit == 0) { - int var2 = this.objectMouseOver.blockX; - var3 = this.objectMouseOver.blockY; - int var4 = this.objectMouseOver.blockZ; - int var5 = this.objectMouseOver.sideHit; - Block var6 = Block.blocksList[this.theWorld.getBlockId(var2, var3, var4)]; - if(var1 == 0) { - this.theWorld.extinguishFire(var2, var3, var4, this.objectMouseOver.sideHit); - if(var6 != Block.bedrock || this.thePlayer.unusedMiningCooldown >= 100) { - this.playerController.clickBlock(var2, var3, var4); - } - } else { - ItemStack var7 = this.thePlayer.inventory.getCurrentItem(); - int var8 = this.theWorld.getBlockId(var2, var3, var4); - if(var8 > 0 && Block.blocksList[var8].blockActivated(this.theWorld, var2, var3, var4, this.thePlayer)) { - return; - } - - if(var7 == null) { - return; - } - - int var9 = var7.stackSize; - if(var7.useItem(this.thePlayer, this.theWorld, var2, var3, var4, var5)) { - this.entityRenderer.itemRenderer.swing(); - } - - if(var7.stackSize == 0) { - this.thePlayer.inventory.mainInventory[this.thePlayer.inventory.currentItem] = null; - } else if(var7.stackSize != var9) { - this.entityRenderer.itemRenderer.resetEquippedProgress(); - } - } - } - - if(var1 == 1) { - ItemStack var10 = this.thePlayer.inventory.getCurrentItem(); - if(var10 != null) { - var3 = var10.stackSize; - ItemStack var11 = var10.useItemRightClick(this.theWorld, this.thePlayer); - if(var11 != var10 || var11 != null && var11.stackSize != var3) { - this.thePlayer.inventory.mainInventory[this.thePlayer.inventory.currentItem] = var11; - this.entityRenderer.itemRenderer.resetEquippedProgress2(); - if(var11.stackSize == 0) { - this.thePlayer.inventory.mainInventory[this.thePlayer.inventory.currentItem] = null; - } - } - } - } - - } - } - - public void toggleFullscreen() { - try { - this.fullscreen = !this.fullscreen; - System.out.println("Toggle fullscreen!"); - if(this.fullscreen) { - Display.setDisplayMode(Display.getDesktopDisplayMode()); - this.displayWidth = Display.getDisplayMode().getWidth(); - this.displayHeight = Display.getDisplayMode().getHeight(); - if(this.displayWidth <= 0) { - this.displayWidth = 1; - } - - if(this.displayHeight <= 0) { - this.displayHeight = 1; - } - } else { - if(this.mcCanvas != null) { - this.displayWidth = this.mcCanvas.getWidth(); - this.displayHeight = this.mcCanvas.getHeight(); - } else { - this.displayWidth = this.tempDisplayWidth; - this.displayHeight = this.tempDisplayHeight; - } - - if(this.displayWidth <= 0) { - this.displayWidth = 1; - } - - if(this.displayHeight <= 0) { - this.displayHeight = 1; - } - - Display.setDisplayMode(new DisplayMode(this.tempDisplayWidth, this.tempDisplayHeight)); - } - - this.setIngameNotInFocus(); - Display.setFullscreen(this.fullscreen); - Display.update(); - Thread.sleep(1000L); - if(this.fullscreen) { - this.setIngameFocus(); - } - - if(this.currentScreen != null) { - this.setIngameNotInFocus(); - this.resize(this.displayWidth, this.displayHeight); - } - - System.out.println("Size: " + this.displayWidth + ", " + this.displayHeight); - } catch (Exception var2) { - var2.printStackTrace(); - } - - } - - private void resize(int var1, int var2) { - if(var1 <= 0) { - var1 = 1; - } - - if(var2 <= 0) { - var2 = 1; - } - - this.displayWidth = var1; - this.displayHeight = var2; - if(this.currentScreen != null) { - ScaledResolution var3 = new ScaledResolution(var1, var2); - int var4 = var3.getScaledWidth(); - int var5 = var3.getScaledHeight(); - this.currentScreen.setWorldAndResolution(this, var4, var5); - } - - } - - private void clickMiddleMouseButton() { - if(this.objectMouseOver != null) { - int var1 = this.theWorld.getBlockId(this.objectMouseOver.blockX, this.objectMouseOver.blockY, this.objectMouseOver.blockZ); - if(var1 == Block.grass.blockID) { - var1 = Block.dirt.blockID; - } - - if(var1 == Block.stairDouble.blockID) { - var1 = Block.stairSingle.blockID; - } - - if(var1 == Block.bedrock.blockID) { - var1 = Block.stone.blockID; - } - - this.thePlayer.inventory.setCurrentItem(var1, this.playerController instanceof PlayerControllerCreative); - } - - } - - public void runTick() { - this.ingameGUI.updateTick(); - if(!this.isGamePaused && this.theWorld != null) { - this.playerController.onUpdate(); - } - - GL11.glBindTexture(GL11.GL_TEXTURE_2D, this.renderEngine.getTexture("/terrain.png")); - if(!this.isGamePaused) { - this.renderEngine.updateDynamicTextures(); - } - - if(this.currentScreen == null && this.thePlayer != null && this.thePlayer.health <= 0) { - this.displayGuiScreen((GuiScreen)null); - } - - if(this.currentScreen == null || this.currentScreen.allowUserInput) { - label226: - while(true) { - while(true) { - while(true) { - long var1; - do { - if(!Mouse.next()) { - if(this.leftClickCounter > 0) { - --this.leftClickCounter; - } - - while(true) { - while(true) { - do { - if(!Keyboard.next()) { - if(this.currentScreen == null) { - if(Mouse.isButtonDown(0) && (float)(this.ticksRan - this.mouseTicksRan) >= this.timer.ticksPerSecond / 4.0F && this.inGameHasFocus) { - this.clickMouse(0); - this.mouseTicksRan = this.ticksRan; - } - - if(Mouse.isButtonDown(1) && (float)(this.ticksRan - this.mouseTicksRan) >= this.timer.ticksPerSecond / 4.0F && this.inGameHasFocus) { - this.clickMouse(1); - this.mouseTicksRan = this.ticksRan; - } - } - - this.sendClickBlockToController(0, this.currentScreen == null && Mouse.isButtonDown(0) && this.inGameHasFocus); - break label226; - } - - this.thePlayer.handleKeyPress(Keyboard.getEventKey(), Keyboard.getEventKeyState()); - } while(!Keyboard.getEventKeyState()); - - if(Keyboard.getEventKey() == Keyboard.KEY_F11) { - this.toggleFullscreen(); - } else { - if(this.currentScreen != null) { - this.currentScreen.handleKeyboardInput(); - } else { - if(Keyboard.getEventKey() == Keyboard.KEY_ESCAPE) { - this.displayInGameMenu(); - } - - if(this.playerController instanceof PlayerControllerCreative) { - if(Keyboard.getEventKey() == this.gameSettings.keyBindLoad.keyCode) { - } - - if(Keyboard.getEventKey() == this.gameSettings.keyBindSave.keyCode) { - } - } - - if(Keyboard.getEventKey() == Keyboard.KEY_F5) { - this.gameSettings.thirdPersonView = !this.gameSettings.thirdPersonView; - this.isRaining = !this.isRaining; - } - - if(Keyboard.getEventKey() == this.gameSettings.keyBindInventory.keyCode) { - this.displayGuiScreen(new GuiInventory(this.thePlayer.inventory)); - } - - if(Keyboard.getEventKey() == this.gameSettings.keyBindDrop.keyCode) { - this.thePlayer.dropPlayerItemWithRandomChoice(this.thePlayer.inventory.decrStackSize(this.thePlayer.inventory.currentItem, 1), false); - } - } - - for(int var4 = 0; var4 < 9; ++var4) { - if(Keyboard.getEventKey() == Keyboard.KEY_1 + var4) { - this.thePlayer.inventory.currentItem = var4; - } - } - - if(Keyboard.getEventKey() == this.gameSettings.keyBindToggleFog.keyCode) { - this.gameSettings.setOptionFloatValue(4, !Keyboard.isKeyDown(Keyboard.KEY_LSHIFT) && !Keyboard.isKeyDown(Keyboard.KEY_RSHIFT) ? 1 : -1); - } - } - } - } - } - - var1 = System.currentTimeMillis() - this.systemTime; - } while(var1 > 200L); - - int var3 = Mouse.getEventDWheel(); - if(var3 != 0) { - this.thePlayer.inventory.changeCurrentItem(var3); - } - - if(this.currentScreen == null) { - if(!this.inGameHasFocus && Mouse.getEventButtonState()) { - this.setIngameFocus(); - } else { - if(Mouse.getEventButton() == 0 && Mouse.getEventButtonState()) { - this.clickMouse(0); - this.mouseTicksRan = this.ticksRan; - } - - if(Mouse.getEventButton() == 1 && Mouse.getEventButtonState()) { - this.clickMouse(1); - this.mouseTicksRan = this.ticksRan; - } - - if(Mouse.getEventButton() == 2 && Mouse.getEventButtonState()) { - this.clickMiddleMouseButton(); - } - } - } else if(this.currentScreen != null) { - this.currentScreen.handleMouseInput(); - } - } - } - } - } - - if(this.currentScreen != null) { - this.mouseTicksRan = this.ticksRan + 10000; - } - - if(this.currentScreen != null) { - this.currentScreen.handleInput(); - if(this.currentScreen != null) { - this.currentScreen.updateScreen(); - } - } - - if(this.theWorld != null) { - this.theWorld.difficultySetting = this.gameSettings.difficulty; - if(!this.isGamePaused) { - this.entityRenderer.updateRenderer(); - } - - if(!this.isGamePaused) { - this.renderGlobal.updateClouds(); - } - - if(!this.isGamePaused) { - this.theWorld.updateEntities(); - } - - if(!this.isGamePaused && !this.isMultiplayerWorld()) { - this.theWorld.tick(); - } - - if(!this.isGamePaused) { - this.theWorld.randomDisplayUpdates(MathHelper.floor_double(this.thePlayer.posX), MathHelper.floor_double(this.thePlayer.posY), MathHelper.floor_double(this.thePlayer.posZ)); - } - - if(!this.isGamePaused) { - this.effectRenderer.updateEffects(); - } - } - - this.systemTime = System.currentTimeMillis(); - } - - public boolean isMultiplayerWorld() { - return false; - } - - public void startWorld(String var1) { - this.changeWorld1((World)null); - System.gc(); - World var2 = new World(new File(getMinecraftDir(), "saves"), var1); - if(var2.isNewWorld) { - this.changeWorld2(var2, "Generating level"); - } else { - this.changeWorld2(var2, "Loading level"); - } - - } - - public void changeWorld1(World var1) { - this.changeWorld2(var1, ""); - } - - public void changeWorld2(World var1, String var2) { - if(this.theWorld != null) { - this.theWorld.saveWorldIndirectly(this.loadingScreen); - } - - this.theWorld = var1; - if(var1 != null) { - this.playerController.onWorldChange(var1); - var1.fontRenderer = this.fontRenderer; - if(!this.isMultiplayerWorld()) { - this.thePlayer = (EntityPlayerSP)var1.createDebugPlayer(EntityPlayerSP.class); - var1.playerEntity = this.thePlayer; - } else if(this.thePlayer != null) { - this.thePlayer.preparePlayerToSpawn(); - if(var1 != null) { - var1.playerEntity = this.thePlayer; - var1.spawnEntityInWorld(this.thePlayer); - } - } - - this.preloadWorld(var2); - if(this.thePlayer == null) { - this.thePlayer = new EntityPlayerSP(this, var1, this.session); - this.thePlayer.preparePlayerToSpawn(); - this.playerController.flipPlayer(this.thePlayer); - } - - this.thePlayer.movementInput = new MovementInputFromOptions(this.gameSettings); - if(this.renderGlobal != null) { - this.renderGlobal.changeWorld(var1); - } - - if(this.effectRenderer != null) { - this.effectRenderer.clearEffects(var1); - } - - this.playerController.onRespawn(this.thePlayer); - var1.playerEntity = this.thePlayer; - var1.spawnPlayerWithLoadedChunks(); - if(var1.isNewWorld) { - var1.saveWorldIndirectly(this.loadingScreen); - } - } - - System.gc(); - this.systemTime = 0L; - } - - private void preloadWorld(String var1) { - this.loadingScreen.printText(var1); - this.loadingScreen.displayLoadingString("Building terrain"); - short var2 = 128; - int var3 = 0; - int var4 = var2 * 2 / 16 + 1; - var4 *= var4; - - int var5; - for(var5 = -var2; var5 <= var2; var5 += 16) { - int var6 = this.theWorld.spawnX; - int var7 = this.theWorld.spawnZ; - if(this.theWorld.playerEntity != null) { - var6 = (int)this.theWorld.playerEntity.posX; - var7 = (int)this.theWorld.playerEntity.posZ; - } - - for(int var8 = -var2; var8 <= var2; var8 += 16) { - this.loadingScreen.setLoadingProgress(var3++ * 100 / var4); - this.theWorld.getBlockId(var6 + var5, 64, var7 + var8); - - while(this.theWorld.updatingLighting()) { - } - } - } - - this.loadingScreen.displayLoadingString("Simulating world for a bit"); - short var9 = 2000; - BlockSand.fallInstantly = true; - - for(var5 = 0; var5 < var9; ++var5) { - this.theWorld.tickUpdates(true); - } - - this.theWorld.dropOldChunks(); - BlockSand.fallInstantly = false; - } - - public void installResource(String var1, File var2) { - int var3 = var1.indexOf("/"); - String var4 = var1.substring(0, var3); - var1 = var1.substring(var3 + 1); - if(var4.equalsIgnoreCase("sound")) { - this.sndManager.addSound(var1, var2); - } else if(var4.equalsIgnoreCase("newsound")) { - this.sndManager.addSound(var1, var2); - } else if(var4.equalsIgnoreCase("music")) { - this.sndManager.addMusic(var1, var2); - } - - } - - public OpenGlCapsChecker getOpenGlCapsChecker() { - return this.glCapabilities; - } - - public String debugInfoRenders() { - return this.renderGlobal.getDebugInfoRenders(); - } - - public String getEntityDebug() { - return this.renderGlobal.getDebugInfoEntities(); - } - - public String debugInfoEntities() { - return "P: " + this.effectRenderer.getStatistics() + ". T: " + this.theWorld.getDebugLoadedEntities(); - } - - public void respawn() { - if(this.thePlayer != null && this.theWorld != null) { - this.theWorld.setEntityDead(this.thePlayer); - } - - this.theWorld.setSpawnLocation(); - this.thePlayer = new EntityPlayerSP(this, this.theWorld, this.session); - this.thePlayer.preparePlayerToSpawn(); - this.playerController.flipPlayer(this.thePlayer); - if(this.theWorld != null) { - this.theWorld.playerEntity = this.thePlayer; - this.theWorld.spawnPlayerWithLoadedChunks(); - } - - this.thePlayer.movementInput = new MovementInputFromOptions(this.gameSettings); - this.playerController.onRespawn(this.thePlayer); - this.preloadWorld("Respawning"); - } -} diff --git a/src/net/minecraft/src/MinecraftAppletImpl.java b/src/net/minecraft/src/MinecraftAppletImpl.java deleted file mode 100644 index 647fd9b..0000000 --- a/src/net/minecraft/src/MinecraftAppletImpl.java +++ /dev/null @@ -1,20 +0,0 @@ -package net.minecraft.src; - -import java.awt.Canvas; -import java.awt.Component; -import net.minecraft.client.MinecraftApplet; - -public class MinecraftAppletImpl extends Minecraft { - final MinecraftApplet mainFrame; - - public MinecraftAppletImpl(MinecraftApplet var1, Component var2, Canvas var3, MinecraftApplet var4, int var5, int var6, boolean var7) { - super(var2, var3, var4, var5, var6, var7); - this.mainFrame = var1; - } - - public void displayUnexpectedThrowable(UnexpectedThrowable var1) { - this.mainFrame.removeAll(); - this.mainFrame.add(new PanelCrashReport(var1), "Center"); - this.mainFrame.validate(); - } -} diff --git a/src/net/minecraft/src/MinecraftError.java b/src/net/minecraft/src/MinecraftError.java deleted file mode 100644 index 9a75dec..0000000 --- a/src/net/minecraft/src/MinecraftError.java +++ /dev/null @@ -1,4 +0,0 @@ -package net.minecraft.src; - -public class MinecraftError extends Error { -} diff --git a/src/net/minecraft/src/ModelBase.java b/src/net/minecraft/src/ModelBase.java deleted file mode 100644 index 06d3a6f..0000000 --- a/src/net/minecraft/src/ModelBase.java +++ /dev/null @@ -1,11 +0,0 @@ -package net.minecraft.src; - -public abstract class ModelBase { - public float swingProgress; - - public void render(float var1, float var2, float var3, float var4, float var5, float var6) { - } - - public void setRotationAngles(float var1, float var2, float var3, float var4, float var5, float var6) { - } -} diff --git a/src/net/minecraft/src/ModelBiped.java b/src/net/minecraft/src/ModelBiped.java deleted file mode 100644 index 5a2b40b..0000000 --- a/src/net/minecraft/src/ModelBiped.java +++ /dev/null @@ -1,73 +0,0 @@ -package net.minecraft.src; - -public class ModelBiped extends ModelBase { - public ModelRenderer bipedHead; - public ModelRenderer bipedHeadwear; - public ModelRenderer bipedBody; - public ModelRenderer bipedRightArm; - public ModelRenderer bipedLeftArm; - public ModelRenderer bipedRightLeg; - public ModelRenderer bipedLeftLeg; - - public ModelBiped() { - this(0.0F); - } - - public ModelBiped(float var1) { - this(var1, 0.0F); - } - - public ModelBiped(float var1, float var2) { - this.bipedHead = new ModelRenderer(0, 0); - this.bipedHead.addBox(-4.0F, -8.0F, -4.0F, 8, 8, 8, var1); - this.bipedHead.setRotationPoint(0.0F, 0.0F + var2, 0.0F); - this.bipedHeadwear = new ModelRenderer(32, 0); - this.bipedHeadwear.addBox(-4.0F, -8.0F, -4.0F, 8, 8, 8, var1 + 0.5F); - this.bipedHeadwear.setRotationPoint(0.0F, 0.0F + var2, 0.0F); - this.bipedBody = new ModelRenderer(16, 16); - this.bipedBody.addBox(-4.0F, 0.0F, -2.0F, 8, 12, 4, var1); - this.bipedBody.setRotationPoint(0.0F, 0.0F + var2, 0.0F); - this.bipedRightArm = new ModelRenderer(40, 16); - this.bipedRightArm.addBox(-3.0F, -2.0F, -2.0F, 4, 12, 4, var1); - this.bipedRightArm.setRotationPoint(-5.0F, 2.0F + var2, 0.0F); - this.bipedLeftArm = new ModelRenderer(40, 16); - this.bipedLeftArm.mirror = true; - this.bipedLeftArm.addBox(-1.0F, -2.0F, -2.0F, 4, 12, 4, var1); - this.bipedLeftArm.setRotationPoint(5.0F, 2.0F + var2, 0.0F); - this.bipedRightLeg = new ModelRenderer(0, 16); - this.bipedRightLeg.addBox(-2.0F, 0.0F, -2.0F, 4, 12, 4, var1); - this.bipedRightLeg.setRotationPoint(-2.0F, 12.0F + var2, 0.0F); - this.bipedLeftLeg = new ModelRenderer(0, 16); - this.bipedLeftLeg.mirror = true; - this.bipedLeftLeg.addBox(-2.0F, 0.0F, -2.0F, 4, 12, 4, var1); - this.bipedLeftLeg.setRotationPoint(2.0F, 12.0F + var2, 0.0F); - } - - public void render(float var1, float var2, float var3, float var4, float var5, float var6) { - this.setRotationAngles(var1, var2, var3, var4, var5, var6); - this.bipedHead.render(var6); - this.bipedBody.render(var6); - this.bipedRightArm.render(var6); - this.bipedLeftArm.render(var6); - this.bipedRightLeg.render(var6); - this.bipedLeftLeg.render(var6); - this.bipedHeadwear.render(var6); - } - - public void setRotationAngles(float var1, float var2, float var3, float var4, float var5, float var6) { - this.bipedHead.rotateAngleY = var4 / (180.0F / (float)Math.PI); - this.bipedHead.rotateAngleX = var5 / (180.0F / (float)Math.PI); - this.bipedHeadwear.rotateAngleY = this.bipedHead.rotateAngleY; - this.bipedHeadwear.rotateAngleX = this.bipedHead.rotateAngleX; - this.bipedRightArm.rotateAngleX = MathHelper.cos(var1 * 0.6662F + (float)Math.PI) * 2.0F * var2; - this.bipedRightArm.rotateAngleZ = (MathHelper.cos(var1 * 0.2312F) + 1.0F) * 1.0F * var2; - this.bipedLeftArm.rotateAngleX = MathHelper.cos(var1 * 0.6662F) * 2.0F * var2; - this.bipedLeftArm.rotateAngleZ = (MathHelper.cos(var1 * 0.2812F) - 1.0F) * 1.0F * var2; - this.bipedRightLeg.rotateAngleX = MathHelper.cos(var1 * 0.6662F) * 1.4F * var2; - this.bipedLeftLeg.rotateAngleX = MathHelper.cos(var1 * 0.6662F + (float)Math.PI) * 1.4F * var2; - this.bipedRightArm.rotateAngleZ += MathHelper.cos(var3 * 0.09F) * 0.05F + 0.05F; - this.bipedLeftArm.rotateAngleZ -= MathHelper.cos(var3 * 0.09F) * 0.05F + 0.05F; - this.bipedRightArm.rotateAngleX += MathHelper.sin(var3 * 0.067F) * 0.05F; - this.bipedLeftArm.rotateAngleX -= MathHelper.sin(var3 * 0.067F) * 0.05F; - } -} diff --git a/src/net/minecraft/src/ModelCreeper.java b/src/net/minecraft/src/ModelCreeper.java deleted file mode 100644 index eac89c4..0000000 --- a/src/net/minecraft/src/ModelCreeper.java +++ /dev/null @@ -1,56 +0,0 @@ -package net.minecraft.src; - -public class ModelCreeper extends ModelBase { - public ModelRenderer head; - public ModelRenderer headwear; - public ModelRenderer body; - public ModelRenderer leg1; - public ModelRenderer leg2; - public ModelRenderer leg3; - public ModelRenderer leg4; - - public ModelCreeper() { - float var1 = 0.0F; - byte var2 = 4; - this.head = new ModelRenderer(0, 0); - this.head.addBox(-4.0F, -8.0F, -4.0F, 8, 8, 8, var1); - this.head.setRotationPoint(0.0F, (float)var2, 0.0F); - this.headwear = new ModelRenderer(32, 0); - this.headwear.addBox(-4.0F, -8.0F, -4.0F, 8, 8, 8, var1 + 0.5F); - this.headwear.setRotationPoint(0.0F, (float)var2, 0.0F); - this.body = new ModelRenderer(16, 16); - this.body.addBox(-4.0F, 0.0F, -2.0F, 8, 12, 4, var1); - this.body.setRotationPoint(0.0F, (float)var2, 0.0F); - this.leg1 = new ModelRenderer(0, 16); - this.leg1.addBox(-2.0F, 0.0F, -2.0F, 4, 6, 4, var1); - this.leg1.setRotationPoint(-2.0F, (float)(12 + var2), 4.0F); - this.leg2 = new ModelRenderer(0, 16); - this.leg2.addBox(-2.0F, 0.0F, -2.0F, 4, 6, 4, var1); - this.leg2.setRotationPoint(2.0F, (float)(12 + var2), 4.0F); - this.leg3 = new ModelRenderer(0, 16); - this.leg3.addBox(-2.0F, 0.0F, -2.0F, 4, 6, 4, var1); - this.leg3.setRotationPoint(-2.0F, (float)(12 + var2), -4.0F); - this.leg4 = new ModelRenderer(0, 16); - this.leg4.addBox(-2.0F, 0.0F, -2.0F, 4, 6, 4, var1); - this.leg4.setRotationPoint(2.0F, (float)(12 + var2), -4.0F); - } - - public void render(float var1, float var2, float var3, float var4, float var5, float var6) { - this.setRotationAngles(var1, var2, var3, var4, var5, var6); - this.head.render(var6); - this.body.render(var6); - this.leg1.render(var6); - this.leg2.render(var6); - this.leg3.render(var6); - this.leg4.render(var6); - } - - public void setRotationAngles(float var1, float var2, float var3, float var4, float var5, float var6) { - this.head.rotateAngleY = var4 / (180.0F / (float)Math.PI); - this.head.rotateAngleX = var5 / (180.0F / (float)Math.PI); - this.leg1.rotateAngleX = MathHelper.cos(var1 * 0.6662F) * 1.4F * var2; - this.leg2.rotateAngleX = MathHelper.cos(var1 * 0.6662F + (float)Math.PI) * 1.4F * var2; - this.leg3.rotateAngleX = MathHelper.cos(var1 * 0.6662F + (float)Math.PI) * 1.4F * var2; - this.leg4.rotateAngleX = MathHelper.cos(var1 * 0.6662F) * 1.4F * var2; - } -} diff --git a/src/net/minecraft/src/ModelMinecart.java b/src/net/minecraft/src/ModelMinecart.java deleted file mode 100644 index 68425ee..0000000 --- a/src/net/minecraft/src/ModelMinecart.java +++ /dev/null @@ -1,47 +0,0 @@ -package net.minecraft.src; - -public class ModelMinecart extends ModelBase { - public ModelRenderer[] sideModels = new ModelRenderer[7]; - - public ModelMinecart() { - this.sideModels[0] = new ModelRenderer(0, 10); - this.sideModels[1] = new ModelRenderer(0, 0); - this.sideModels[2] = new ModelRenderer(0, 0); - this.sideModels[3] = new ModelRenderer(0, 0); - this.sideModels[4] = new ModelRenderer(0, 0); - this.sideModels[5] = new ModelRenderer(44, 10); - byte var1 = 20; - byte var2 = 8; - byte var3 = 16; - byte var4 = 4; - this.sideModels[0].addBox((float)(-var1 / 2), (float)(-var3 / 2), -1.0F, var1, var3, 2, 0.0F); - this.sideModels[0].setRotationPoint(0.0F, (float)(0 + var4), 0.0F); - this.sideModels[5].addBox((float)(-var1 / 2 + 1), (float)(-var3 / 2 + 1), -1.0F, var1 - 2, var3 - 2, 1, 0.0F); - this.sideModels[5].setRotationPoint(0.0F, (float)(0 + var4), 0.0F); - this.sideModels[1].addBox((float)(-var1 / 2 + 2), (float)(-var2 - 1), -1.0F, var1 - 4, var2, 2, 0.0F); - this.sideModels[1].setRotationPoint((float)(-var1 / 2 + 1), (float)(0 + var4), 0.0F); - this.sideModels[2].addBox((float)(-var1 / 2 + 2), (float)(-var2 - 1), -1.0F, var1 - 4, var2, 2, 0.0F); - this.sideModels[2].setRotationPoint((float)(var1 / 2 - 1), (float)(0 + var4), 0.0F); - this.sideModels[3].addBox((float)(-var1 / 2 + 2), (float)(-var2 - 1), -1.0F, var1 - 4, var2, 2, 0.0F); - this.sideModels[3].setRotationPoint(0.0F, (float)(0 + var4), (float)(-var3 / 2 + 1)); - this.sideModels[4].addBox((float)(-var1 / 2 + 2), (float)(-var2 - 1), -1.0F, var1 - 4, var2, 2, 0.0F); - this.sideModels[4].setRotationPoint(0.0F, (float)(0 + var4), (float)(var3 / 2 - 1)); - this.sideModels[0].rotateAngleX = (float)Math.PI * 0.5F; - this.sideModels[1].rotateAngleY = (float)Math.PI * 3.0F / 2.0F; - this.sideModels[2].rotateAngleY = (float)Math.PI * 0.5F; - this.sideModels[3].rotateAngleY = (float)Math.PI; - this.sideModels[5].rotateAngleX = (float)Math.PI * -0.5F; - } - - public void render(float var1, float var2, float var3, float var4, float var5, float var6) { - this.sideModels[5].rotationPointY = 4.0F - var3; - - for(int var7 = 0; var7 < 6; ++var7) { - this.sideModels[var7].render(var6); - } - - } - - public void setRotationAngles(float var1, float var2, float var3, float var4, float var5, float var6) { - } -} diff --git a/src/net/minecraft/src/ModelPig.java b/src/net/minecraft/src/ModelPig.java deleted file mode 100644 index c300bd4..0000000 --- a/src/net/minecraft/src/ModelPig.java +++ /dev/null @@ -1,11 +0,0 @@ -package net.minecraft.src; - -public class ModelPig extends ModelQuadruped { - public ModelPig() { - super(6, 0.0F); - } - - public ModelPig(float var1) { - super(6, var1); - } -} diff --git a/src/net/minecraft/src/ModelQuadruped.java b/src/net/minecraft/src/ModelQuadruped.java deleted file mode 100644 index d37c549..0000000 --- a/src/net/minecraft/src/ModelQuadruped.java +++ /dev/null @@ -1,49 +0,0 @@ -package net.minecraft.src; - -public class ModelQuadruped extends ModelBase { - public ModelRenderer head = new ModelRenderer(0, 0); - public ModelRenderer body; - public ModelRenderer leg1; - public ModelRenderer leg2; - public ModelRenderer leg3; - public ModelRenderer leg4; - - public ModelQuadruped(int var1, float var2) { - this.head.addBox(-4.0F, -4.0F, -8.0F, 8, 8, 8, var2); - this.head.setRotationPoint(0.0F, (float)(18 - var1), -6.0F); - this.body = new ModelRenderer(28, 8); - this.body.addBox(-5.0F, -10.0F, -7.0F, 10, 16, 8, var2); - this.body.setRotationPoint(0.0F, (float)(17 - var1), 2.0F); - this.leg1 = new ModelRenderer(0, 16); - this.leg1.addBox(-2.0F, 0.0F, -2.0F, 4, var1, 4, var2); - this.leg1.setRotationPoint(-3.0F, (float)(24 - var1), 7.0F); - this.leg2 = new ModelRenderer(0, 16); - this.leg2.addBox(-2.0F, 0.0F, -2.0F, 4, var1, 4, var2); - this.leg2.setRotationPoint(3.0F, (float)(24 - var1), 7.0F); - this.leg3 = new ModelRenderer(0, 16); - this.leg3.addBox(-2.0F, 0.0F, -2.0F, 4, var1, 4, var2); - this.leg3.setRotationPoint(-3.0F, (float)(24 - var1), -5.0F); - this.leg4 = new ModelRenderer(0, 16); - this.leg4.addBox(-2.0F, 0.0F, -2.0F, 4, var1, 4, var2); - this.leg4.setRotationPoint(3.0F, (float)(24 - var1), -5.0F); - } - - public void render(float var1, float var2, float var3, float var4, float var5, float var6) { - this.setRotationAngles(var1, var2, var3, var4, var5, var6); - this.head.render(var6); - this.body.render(var6); - this.leg1.render(var6); - this.leg2.render(var6); - this.leg3.render(var6); - this.leg4.render(var6); - } - - public void setRotationAngles(float var1, float var2, float var3, float var4, float var5, float var6) { - this.head.rotateAngleY = var4 / (180.0F / (float)Math.PI); - this.body.rotateAngleX = (float)Math.PI * 0.5F; - this.leg1.rotateAngleX = MathHelper.cos(var1 * 0.6662F) * 1.4F * var2; - this.leg2.rotateAngleX = MathHelper.cos(var1 * 0.6662F + (float)Math.PI) * 1.4F * var2; - this.leg3.rotateAngleX = MathHelper.cos(var1 * 0.6662F + (float)Math.PI) * 1.4F * var2; - this.leg4.rotateAngleX = MathHelper.cos(var1 * 0.6662F) * 1.4F * var2; - } -} diff --git a/src/net/minecraft/src/ModelRenderer.java b/src/net/minecraft/src/ModelRenderer.java deleted file mode 100644 index 20b1eb0..0000000 --- a/src/net/minecraft/src/ModelRenderer.java +++ /dev/null @@ -1,131 +0,0 @@ -package net.minecraft.src; - -import org.lwjgl.opengl.GL11; - -public class ModelRenderer { - private PositionTextureVertex[] corners; - private TexturedQuad[] faces; - private int textureOffsetX; - private int textureOffsetY; - public float rotationPointX; - public float rotationPointY; - public float rotationPointZ; - public float rotateAngleX; - public float rotateAngleY; - public float rotateAngleZ; - private boolean compiled = false; - private int displayList = 0; - public boolean mirror = false; - public boolean showModel = true; - public boolean isHidden = false; - - public ModelRenderer(int var1, int var2) { - this.textureOffsetX = var1; - this.textureOffsetY = var2; - } - - public void addBox(float var1, float var2, float var3, int var4, int var5, int var6, float var7) { - this.corners = new PositionTextureVertex[8]; - this.faces = new TexturedQuad[6]; - float var8 = var1 + (float)var4; - float var9 = var2 + (float)var5; - float var10 = var3 + (float)var6; - var1 -= var7; - var2 -= var7; - var3 -= var7; - var8 += var7; - var9 += var7; - var10 += var7; - if(this.mirror) { - float var11 = var8; - var8 = var1; - var1 = var11; - } - - PositionTextureVertex var20 = new PositionTextureVertex(var1, var2, var3, 0.0F, 0.0F); - PositionTextureVertex var12 = new PositionTextureVertex(var8, var2, var3, 0.0F, 8.0F); - PositionTextureVertex var13 = new PositionTextureVertex(var8, var9, var3, 8.0F, 8.0F); - PositionTextureVertex var14 = new PositionTextureVertex(var1, var9, var3, 8.0F, 0.0F); - PositionTextureVertex var15 = new PositionTextureVertex(var1, var2, var10, 0.0F, 0.0F); - PositionTextureVertex var16 = new PositionTextureVertex(var8, var2, var10, 0.0F, 8.0F); - PositionTextureVertex var17 = new PositionTextureVertex(var8, var9, var10, 8.0F, 8.0F); - PositionTextureVertex var18 = new PositionTextureVertex(var1, var9, var10, 8.0F, 0.0F); - this.corners[0] = var20; - this.corners[1] = var12; - this.corners[2] = var13; - this.corners[3] = var14; - this.corners[4] = var15; - this.corners[5] = var16; - this.corners[6] = var17; - this.corners[7] = var18; - this.faces[0] = new TexturedQuad(new PositionTextureVertex[]{var16, var12, var13, var17}, this.textureOffsetX + var6 + var4, this.textureOffsetY + var6, this.textureOffsetX + var6 + var4 + var6, this.textureOffsetY + var6 + var5); - this.faces[1] = new TexturedQuad(new PositionTextureVertex[]{var20, var15, var18, var14}, this.textureOffsetX + 0, this.textureOffsetY + var6, this.textureOffsetX + var6, this.textureOffsetY + var6 + var5); - this.faces[2] = new TexturedQuad(new PositionTextureVertex[]{var16, var15, var20, var12}, this.textureOffsetX + var6, this.textureOffsetY + 0, this.textureOffsetX + var6 + var4, this.textureOffsetY + var6); - this.faces[3] = new TexturedQuad(new PositionTextureVertex[]{var13, var14, var18, var17}, this.textureOffsetX + var6 + var4, this.textureOffsetY + 0, this.textureOffsetX + var6 + var4 + var4, this.textureOffsetY + var6); - this.faces[4] = new TexturedQuad(new PositionTextureVertex[]{var12, var20, var14, var13}, this.textureOffsetX + var6, this.textureOffsetY + var6, this.textureOffsetX + var6 + var4, this.textureOffsetY + var6 + var5); - this.faces[5] = new TexturedQuad(new PositionTextureVertex[]{var15, var16, var17, var18}, this.textureOffsetX + var6 + var4 + var6, this.textureOffsetY + var6, this.textureOffsetX + var6 + var4 + var6 + var4, this.textureOffsetY + var6 + var5); - if(this.mirror) { - for(int var19 = 0; var19 < this.faces.length; ++var19) { - this.faces[var19].flipFace(); - } - } - - } - - public void setRotationPoint(float var1, float var2, float var3) { - this.rotationPointX = var1; - this.rotationPointY = var2; - this.rotationPointZ = var3; - } - - public void render(float var1) { - if(!this.isHidden) { - if(this.showModel) { - if(!this.compiled) { - this.compileDisplayList(var1); - } - - if(this.rotateAngleX == 0.0F && this.rotateAngleY == 0.0F && this.rotateAngleZ == 0.0F) { - if(this.rotationPointX == 0.0F && this.rotationPointY == 0.0F && this.rotationPointZ == 0.0F) { - GL11.glCallList(this.displayList); - } else { - GL11.glTranslatef(this.rotationPointX * var1, this.rotationPointY * var1, this.rotationPointZ * var1); - GL11.glCallList(this.displayList); - GL11.glTranslatef(-this.rotationPointX * var1, -this.rotationPointY * var1, -this.rotationPointZ * var1); - } - } else { - GL11.glPushMatrix(); - GL11.glTranslatef(this.rotationPointX * var1, this.rotationPointY * var1, this.rotationPointZ * var1); - if(this.rotateAngleZ != 0.0F) { - GL11.glRotatef(this.rotateAngleZ * (180.0F / (float)Math.PI), 0.0F, 0.0F, 1.0F); - } - - if(this.rotateAngleY != 0.0F) { - GL11.glRotatef(this.rotateAngleY * (180.0F / (float)Math.PI), 0.0F, 1.0F, 0.0F); - } - - if(this.rotateAngleX != 0.0F) { - GL11.glRotatef(this.rotateAngleX * (180.0F / (float)Math.PI), 1.0F, 0.0F, 0.0F); - } - - GL11.glCallList(this.displayList); - GL11.glPopMatrix(); - } - - } - } - } - - private void compileDisplayList(float var1) { - this.displayList = GLAllocation.generateDisplayLists(1); - GL11.glNewList(this.displayList, GL11.GL_COMPILE); - Tessellator var2 = Tessellator.instance; - - for(int var3 = 0; var3 < this.faces.length; ++var3) { - this.faces[var3].draw(var2, var1); - } - - GL11.glEndList(); - this.compiled = true; - } -} diff --git a/src/net/minecraft/src/ModelSheep.java b/src/net/minecraft/src/ModelSheep.java deleted file mode 100644 index df1c1c4..0000000 --- a/src/net/minecraft/src/ModelSheep.java +++ /dev/null @@ -1,13 +0,0 @@ -package net.minecraft.src; - -public class ModelSheep extends ModelQuadruped { - public ModelSheep() { - super(12, 0.0F); - this.head = new ModelRenderer(0, 0); - this.head.addBox(-3.0F, -4.0F, -6.0F, 6, 6, 8, 0.0F); - this.head.setRotationPoint(0.0F, 6.0F, -8.0F); - this.body = new ModelRenderer(28, 8); - this.body.addBox(-4.0F, -10.0F, -7.0F, 8, 16, 6, 0.0F); - this.body.setRotationPoint(0.0F, 5.0F, 2.0F); - } -} diff --git a/src/net/minecraft/src/ModelSheepFur.java b/src/net/minecraft/src/ModelSheepFur.java deleted file mode 100644 index 55bc761..0000000 --- a/src/net/minecraft/src/ModelSheepFur.java +++ /dev/null @@ -1,26 +0,0 @@ -package net.minecraft.src; - -public class ModelSheepFur extends ModelQuadruped { - public ModelSheepFur() { - super(12, 0.0F); - this.head = new ModelRenderer(0, 0); - this.head.addBox(-3.0F, -4.0F, -4.0F, 6, 6, 6, 0.6F); - this.head.setRotationPoint(0.0F, 6.0F, -8.0F); - this.body = new ModelRenderer(28, 8); - this.body.addBox(-4.0F, -10.0F, -7.0F, 8, 16, 6, 1.75F); - this.body.setRotationPoint(0.0F, 5.0F, 2.0F); - float var1 = 0.5F; - this.leg1 = new ModelRenderer(0, 16); - this.leg1.addBox(-2.0F, 0.0F, -2.0F, 4, 6, 4, var1); - this.leg1.setRotationPoint(-3.0F, 12.0F, 7.0F); - this.leg2 = new ModelRenderer(0, 16); - this.leg2.addBox(-2.0F, 0.0F, -2.0F, 4, 6, 4, var1); - this.leg2.setRotationPoint(3.0F, 12.0F, 7.0F); - this.leg3 = new ModelRenderer(0, 16); - this.leg3.addBox(-2.0F, 0.0F, -2.0F, 4, 6, 4, var1); - this.leg3.setRotationPoint(-3.0F, 12.0F, -5.0F); - this.leg4 = new ModelRenderer(0, 16); - this.leg4.addBox(-2.0F, 0.0F, -2.0F, 4, 6, 4, var1); - this.leg4.setRotationPoint(3.0F, 12.0F, -5.0F); - } -} diff --git a/src/net/minecraft/src/ModelSkeleton.java b/src/net/minecraft/src/ModelSkeleton.java deleted file mode 100644 index e9447b8..0000000 --- a/src/net/minecraft/src/ModelSkeleton.java +++ /dev/null @@ -1,21 +0,0 @@ -package net.minecraft.src; - -public class ModelSkeleton extends ModelZombie { - public ModelSkeleton() { - float var1 = 0.0F; - this.bipedRightArm = new ModelRenderer(40, 16); - this.bipedRightArm.addBox(-1.0F, -2.0F, -1.0F, 2, 12, 2, var1); - this.bipedRightArm.setRotationPoint(-5.0F, 2.0F, 0.0F); - this.bipedLeftArm = new ModelRenderer(40, 16); - this.bipedLeftArm.mirror = true; - this.bipedLeftArm.addBox(-1.0F, -2.0F, -1.0F, 2, 12, 2, var1); - this.bipedLeftArm.setRotationPoint(5.0F, 2.0F, 0.0F); - this.bipedRightLeg = new ModelRenderer(0, 16); - this.bipedRightLeg.addBox(-1.0F, 0.0F, -1.0F, 2, 12, 2, var1); - this.bipedRightLeg.setRotationPoint(-2.0F, 12.0F, 0.0F); - this.bipedLeftLeg = new ModelRenderer(0, 16); - this.bipedLeftLeg.mirror = true; - this.bipedLeftLeg.addBox(-1.0F, 0.0F, -1.0F, 2, 12, 2, var1); - this.bipedLeftLeg.setRotationPoint(2.0F, 12.0F, 0.0F); - } -} diff --git a/src/net/minecraft/src/ModelSpider.java b/src/net/minecraft/src/ModelSpider.java deleted file mode 100644 index ee7e099..0000000 --- a/src/net/minecraft/src/ModelSpider.java +++ /dev/null @@ -1,116 +0,0 @@ -package net.minecraft.src; - -public class ModelSpider extends ModelBase { - public ModelRenderer spiderHead; - public ModelRenderer spiderNeck; - public ModelRenderer spiderBody; - public ModelRenderer spiderLeg1; - public ModelRenderer spiderLeg2; - public ModelRenderer spiderLeg3; - public ModelRenderer spiderLeg4; - public ModelRenderer spiderLeg5; - public ModelRenderer spiderLeg6; - public ModelRenderer spiderLeg7; - public ModelRenderer spiderLeg8; - - public ModelSpider() { - float var1 = 0.0F; - byte var2 = 15; - this.spiderHead = new ModelRenderer(32, 4); - this.spiderHead.addBox(-4.0F, -4.0F, -8.0F, 8, 8, 8, var1); - this.spiderHead.setRotationPoint(0.0F, (float)(0 + var2), -3.0F); - this.spiderNeck = new ModelRenderer(0, 0); - this.spiderNeck.addBox(-3.0F, -3.0F, -3.0F, 6, 6, 6, var1); - this.spiderNeck.setRotationPoint(0.0F, (float)var2, 0.0F); - this.spiderBody = new ModelRenderer(0, 12); - this.spiderBody.addBox(-5.0F, -4.0F, -6.0F, 10, 8, 12, var1); - this.spiderBody.setRotationPoint(0.0F, (float)(0 + var2), 9.0F); - this.spiderLeg1 = new ModelRenderer(18, 0); - this.spiderLeg1.addBox(-15.0F, -1.0F, -1.0F, 16, 2, 2, var1); - this.spiderLeg1.setRotationPoint(-4.0F, (float)(0 + var2), 2.0F); - this.spiderLeg2 = new ModelRenderer(18, 0); - this.spiderLeg2.addBox(-1.0F, -1.0F, -1.0F, 16, 2, 2, var1); - this.spiderLeg2.setRotationPoint(4.0F, (float)(0 + var2), 2.0F); - this.spiderLeg3 = new ModelRenderer(18, 0); - this.spiderLeg3.addBox(-15.0F, -1.0F, -1.0F, 16, 2, 2, var1); - this.spiderLeg3.setRotationPoint(-4.0F, (float)(0 + var2), 1.0F); - this.spiderLeg4 = new ModelRenderer(18, 0); - this.spiderLeg4.addBox(-1.0F, -1.0F, -1.0F, 16, 2, 2, var1); - this.spiderLeg4.setRotationPoint(4.0F, (float)(0 + var2), 1.0F); - this.spiderLeg5 = new ModelRenderer(18, 0); - this.spiderLeg5.addBox(-15.0F, -1.0F, -1.0F, 16, 2, 2, var1); - this.spiderLeg5.setRotationPoint(-4.0F, (float)(0 + var2), 0.0F); - this.spiderLeg6 = new ModelRenderer(18, 0); - this.spiderLeg6.addBox(-1.0F, -1.0F, -1.0F, 16, 2, 2, var1); - this.spiderLeg6.setRotationPoint(4.0F, (float)(0 + var2), 0.0F); - this.spiderLeg7 = new ModelRenderer(18, 0); - this.spiderLeg7.addBox(-15.0F, -1.0F, -1.0F, 16, 2, 2, var1); - this.spiderLeg7.setRotationPoint(-4.0F, (float)(0 + var2), -1.0F); - this.spiderLeg8 = new ModelRenderer(18, 0); - this.spiderLeg8.addBox(-1.0F, -1.0F, -1.0F, 16, 2, 2, var1); - this.spiderLeg8.setRotationPoint(4.0F, (float)(0 + var2), -1.0F); - } - - public void render(float var1, float var2, float var3, float var4, float var5, float var6) { - this.setRotationAngles(var1, var2, var3, var4, var5, var6); - this.spiderHead.render(var6); - this.spiderNeck.render(var6); - this.spiderBody.render(var6); - this.spiderLeg1.render(var6); - this.spiderLeg2.render(var6); - this.spiderLeg3.render(var6); - this.spiderLeg4.render(var6); - this.spiderLeg5.render(var6); - this.spiderLeg6.render(var6); - this.spiderLeg7.render(var6); - this.spiderLeg8.render(var6); - } - - public void setRotationAngles(float var1, float var2, float var3, float var4, float var5, float var6) { - this.spiderHead.rotateAngleY = var4 / (180.0F / (float)Math.PI); - this.spiderHead.rotateAngleX = var5 / (180.0F / (float)Math.PI); - float var7 = (float)Math.PI * 0.25F; - this.spiderLeg1.rotateAngleZ = -var7; - this.spiderLeg2.rotateAngleZ = var7; - this.spiderLeg3.rotateAngleZ = -var7 * 0.74F; - this.spiderLeg4.rotateAngleZ = var7 * 0.74F; - this.spiderLeg5.rotateAngleZ = -var7 * 0.74F; - this.spiderLeg6.rotateAngleZ = var7 * 0.74F; - this.spiderLeg7.rotateAngleZ = -var7; - this.spiderLeg8.rotateAngleZ = var7; - float var8 = -0.0F; - float var9 = (float)Math.PI * 0.125F; - this.spiderLeg1.rotateAngleY = var9 * 2.0F + var8; - this.spiderLeg2.rotateAngleY = -var9 * 2.0F - var8; - this.spiderLeg3.rotateAngleY = var9 * 1.0F + var8; - this.spiderLeg4.rotateAngleY = -var9 * 1.0F - var8; - this.spiderLeg5.rotateAngleY = -var9 * 1.0F + var8; - this.spiderLeg6.rotateAngleY = var9 * 1.0F - var8; - this.spiderLeg7.rotateAngleY = -var9 * 2.0F + var8; - this.spiderLeg8.rotateAngleY = var9 * 2.0F - var8; - float var10 = -(MathHelper.cos(var1 * 0.6662F * 2.0F + 0.0F) * 0.4F) * var2; - float var11 = -(MathHelper.cos(var1 * 0.6662F * 2.0F + (float)Math.PI) * 0.4F) * var2; - float var12 = -(MathHelper.cos(var1 * 0.6662F * 2.0F + (float)Math.PI * 0.5F) * 0.4F) * var2; - float var13 = -(MathHelper.cos(var1 * 0.6662F * 2.0F + (float)Math.PI * 3.0F / 2.0F) * 0.4F) * var2; - float var14 = Math.abs(MathHelper.sin(var1 * 0.6662F + 0.0F) * 0.4F) * var2; - float var15 = Math.abs(MathHelper.sin(var1 * 0.6662F + (float)Math.PI) * 0.4F) * var2; - float var16 = Math.abs(MathHelper.sin(var1 * 0.6662F + (float)Math.PI * 0.5F) * 0.4F) * var2; - float var17 = Math.abs(MathHelper.sin(var1 * 0.6662F + (float)Math.PI * 3.0F / 2.0F) * 0.4F) * var2; - this.spiderLeg1.rotateAngleY += var10; - this.spiderLeg2.rotateAngleY += -var10; - this.spiderLeg3.rotateAngleY += var11; - this.spiderLeg4.rotateAngleY += -var11; - this.spiderLeg5.rotateAngleY += var12; - this.spiderLeg6.rotateAngleY += -var12; - this.spiderLeg7.rotateAngleY += var13; - this.spiderLeg8.rotateAngleY += -var13; - this.spiderLeg1.rotateAngleZ += var14; - this.spiderLeg2.rotateAngleZ += -var14; - this.spiderLeg3.rotateAngleZ += var15; - this.spiderLeg4.rotateAngleZ += -var15; - this.spiderLeg5.rotateAngleZ += var16; - this.spiderLeg6.rotateAngleZ += -var16; - this.spiderLeg7.rotateAngleZ += var17; - this.spiderLeg8.rotateAngleZ += -var17; - } -} diff --git a/src/net/minecraft/src/ModelZombie.java b/src/net/minecraft/src/ModelZombie.java deleted file mode 100644 index b0e93e1..0000000 --- a/src/net/minecraft/src/ModelZombie.java +++ /dev/null @@ -1,21 +0,0 @@ -package net.minecraft.src; - -public class ModelZombie extends ModelBiped { - public void setRotationAngles(float var1, float var2, float var3, float var4, float var5, float var6) { - super.setRotationAngles(var1, var2, var3, var4, var5, var6); - float var7 = MathHelper.sin(this.swingProgress * (float)Math.PI); - float var8 = MathHelper.sin((1.0F - (1.0F - this.swingProgress) * (1.0F - this.swingProgress)) * (float)Math.PI); - this.bipedRightArm.rotateAngleZ = 0.0F; - this.bipedLeftArm.rotateAngleZ = 0.0F; - this.bipedRightArm.rotateAngleY = -(0.1F - var7 * 0.6F); - this.bipedLeftArm.rotateAngleY = 0.1F - var7 * 0.6F; - this.bipedRightArm.rotateAngleX = (float)Math.PI * -0.5F; - this.bipedLeftArm.rotateAngleX = (float)Math.PI * -0.5F; - this.bipedRightArm.rotateAngleX -= var7 * 1.2F - var8 * 0.4F; - this.bipedLeftArm.rotateAngleX -= var7 * 1.2F - var8 * 0.4F; - this.bipedRightArm.rotateAngleZ += MathHelper.cos(var3 * 0.09F) * 0.05F + 0.05F; - this.bipedLeftArm.rotateAngleZ -= MathHelper.cos(var3 * 0.09F) * 0.05F + 0.05F; - this.bipedRightArm.rotateAngleX += MathHelper.sin(var3 * 0.067F) * 0.05F; - this.bipedLeftArm.rotateAngleX -= MathHelper.sin(var3 * 0.067F) * 0.05F; - } -} diff --git a/src/net/minecraft/src/MouseHelper.java b/src/net/minecraft/src/MouseHelper.java deleted file mode 100644 index d1671d3..0000000 --- a/src/net/minecraft/src/MouseHelper.java +++ /dev/null @@ -1,81 +0,0 @@ -package net.minecraft.src; - -import java.awt.AWTException; -import java.awt.Component; -import java.awt.MouseInfo; -import java.awt.Point; -import java.awt.Robot; -import java.nio.IntBuffer; -import org.lwjgl.LWJGLException; -import org.lwjgl.input.Cursor; -import org.lwjgl.input.Mouse; - -public class MouseHelper { - private Component windowComponent; - private Robot robot; - private int componentWidth; - private int componentHeight; - private Cursor cursor; - public int deltaX; - public int deltaY; - private int mouseInt = 10; - - public MouseHelper(Component var1) { - this.windowComponent = var1; - - try { - this.robot = new Robot(); - } catch (AWTException var6) { - var6.printStackTrace(); - } - - IntBuffer var2 = GLAllocation.createIntBuffer(1); - var2.put(0); - var2.flip(); - IntBuffer var3 = GLAllocation.createIntBuffer(1024); - - try { - this.cursor = new Cursor(32, 32, 16, 16, 1, var3, var2); - } catch (LWJGLException var5) { - var5.printStackTrace(); - } - - } - - public void grabMouseCursor() { - try { - Mouse.setNativeCursor(this.cursor); - } catch (LWJGLException var2) { - var2.printStackTrace(); - } - - this.mouseXYChange(); - this.deltaX = 0; - this.deltaY = 0; - } - - public void ungrabMouseCursor() { - try { - Mouse.setNativeCursor((Cursor)null); - } catch (LWJGLException var2) { - var2.printStackTrace(); - } - - } - - public void mouseXYChange() { - Point var1 = MouseInfo.getPointerInfo().getLocation(); - Point var2 = this.windowComponent.getLocationOnScreen(); - this.robot.mouseMove(this.componentWidth, this.componentHeight); - this.componentWidth = var2.x + this.windowComponent.getWidth() / 2; - this.componentHeight = var2.y + this.windowComponent.getHeight() / 2; - if(this.mouseInt == 0) { - this.deltaX = var1.x - this.componentWidth; - this.deltaY = var1.y - this.componentHeight; - } else { - this.deltaX = this.deltaY = 0; - --this.mouseInt; - } - - } -} diff --git a/src/net/minecraft/src/MovementInput.java b/src/net/minecraft/src/MovementInput.java deleted file mode 100644 index 0b511d4..0000000 --- a/src/net/minecraft/src/MovementInput.java +++ /dev/null @@ -1,17 +0,0 @@ -package net.minecraft.src; - -public class MovementInput { - public float moveStrafe = 0.0F; - public float moveForward = 0.0F; - public boolean unused = false; - public boolean jump = false; - - public void updatePlayerMoveState(EntityPlayer var1) { - } - - public void resetKeyState() { - } - - public void checkKeyForMovementInput(int var1, boolean var2) { - } -} diff --git a/src/net/minecraft/src/MovementInputFromOptions.java b/src/net/minecraft/src/MovementInputFromOptions.java deleted file mode 100644 index e92f2ec..0000000 --- a/src/net/minecraft/src/MovementInputFromOptions.java +++ /dev/null @@ -1,67 +0,0 @@ -package net.minecraft.src; - -public class MovementInputFromOptions extends MovementInput { - private boolean[] movementKeyStates = new boolean[10]; - private GameSettings gameSettings; - - public MovementInputFromOptions(GameSettings var1) { - this.gameSettings = var1; - } - - public void checkKeyForMovementInput(int var1, boolean var2) { - byte var3 = -1; - if(var1 == this.gameSettings.keyBindForward.keyCode) { - var3 = 0; - } - - if(var1 == this.gameSettings.keyBindBack.keyCode) { - var3 = 1; - } - - if(var1 == this.gameSettings.keyBindLeft.keyCode) { - var3 = 2; - } - - if(var1 == this.gameSettings.keyBindRight.keyCode) { - var3 = 3; - } - - if(var1 == this.gameSettings.keyBindJump.keyCode) { - var3 = 4; - } - - if(var3 >= 0) { - this.movementKeyStates[var3] = var2; - } - - } - - public void resetKeyState() { - for(int var1 = 0; var1 < 10; ++var1) { - this.movementKeyStates[var1] = false; - } - - } - - public void updatePlayerMoveState(EntityPlayer var1) { - this.moveStrafe = 0.0F; - this.moveForward = 0.0F; - if(this.movementKeyStates[0]) { - ++this.moveForward; - } - - if(this.movementKeyStates[1]) { - --this.moveForward; - } - - if(this.movementKeyStates[2]) { - ++this.moveStrafe; - } - - if(this.movementKeyStates[3]) { - --this.moveStrafe; - } - - this.jump = this.movementKeyStates[4]; - } -} diff --git a/src/net/minecraft/src/MovingObjectPosition.java b/src/net/minecraft/src/MovingObjectPosition.java deleted file mode 100644 index 764010a..0000000 --- a/src/net/minecraft/src/MovingObjectPosition.java +++ /dev/null @@ -1,26 +0,0 @@ -package net.minecraft.src; - -public class MovingObjectPosition { - public int typeOfHit; - public int blockX; - public int blockY; - public int blockZ; - public int sideHit; - public Vec3D hitVec; - public Entity entityHit; - - public MovingObjectPosition(int var1, int var2, int var3, int var4, Vec3D var5) { - this.typeOfHit = 0; - this.blockX = var1; - this.blockY = var2; - this.blockZ = var3; - this.sideHit = var4; - this.hitVec = Vec3D.createVector(var5.xCoord, var5.yCoord, var5.zCoord); - } - - public MovingObjectPosition(Entity var1) { - this.typeOfHit = 1; - this.entityHit = var1; - this.hitVec = Vec3D.createVector(var1.posX, var1.posY, var1.posZ); - } -} diff --git a/src/net/minecraft/src/NBTBase.java b/src/net/minecraft/src/NBTBase.java deleted file mode 100644 index ba02104..0000000 --- a/src/net/minecraft/src/NBTBase.java +++ /dev/null @@ -1,102 +0,0 @@ -package net.minecraft.src; - -import java.io.DataInput; -import java.io.DataOutput; -import java.io.IOException; - -public abstract class NBTBase { - private String key = null; - - abstract void writeTagContents(DataOutput var1) throws IOException; - - abstract void readTagContents(DataInput var1) throws IOException; - - public abstract byte getType(); - - public String getKey() { - return this.key == null ? "" : this.key; - } - - public NBTBase setKey(String var1) { - this.key = var1; - return this; - } - - public static NBTBase readNamedTag(DataInput var0) throws IOException { - byte var1 = var0.readByte(); - if(var1 == 0) { - return new NBTTagEnd(); - } else { - NBTBase var2 = createTagOfType(var1); - var2.key = var0.readUTF(); - var2.readTagContents(var0); - return var2; - } - } - - public static void writeNamedTag(NBTBase var0, DataOutput var1) throws IOException { - var1.writeByte(var0.getType()); - if(var0.getType() != 0) { - var1.writeUTF(var0.getKey()); - var0.writeTagContents(var1); - } - } - - public static NBTBase createTagOfType(byte var0) { - switch(var0) { - case 0: - return new NBTTagEnd(); - case 1: - return new NBTTagByte(); - case 2: - return new NBTTagShort(); - case 3: - return new NBTTagInt(); - case 4: - return new NBTTagLong(); - case 5: - return new NBTTagFloat(); - case 6: - return new NBTTagDouble(); - case 7: - return new NBTTagByteArray(); - case 8: - return new NBTTagString(); - case 9: - return new NBTTagList(); - case 10: - return new NBTTagCompound(); - default: - return null; - } - } - - public static String getTagName(byte var0) { - switch(var0) { - case 0: - return "TAG_End"; - case 1: - return "TAG_Byte"; - case 2: - return "TAG_Short"; - case 3: - return "TAG_Int"; - case 4: - return "TAG_Long"; - case 5: - return "TAG_Float"; - case 6: - return "TAG_Double"; - case 7: - return "TAG_Byte_Array"; - case 8: - return "TAG_String"; - case 9: - return "TAG_List"; - case 10: - return "TAG_Compound"; - default: - return "UNKNOWN"; - } - } -} diff --git a/src/net/minecraft/src/NBTTagByte.java b/src/net/minecraft/src/NBTTagByte.java deleted file mode 100644 index 3260724..0000000 --- a/src/net/minecraft/src/NBTTagByte.java +++ /dev/null @@ -1,32 +0,0 @@ -package net.minecraft.src; - -import java.io.DataInput; -import java.io.DataOutput; -import java.io.IOException; - -public class NBTTagByte extends NBTBase { - public byte byteValue; - - public NBTTagByte() { - } - - public NBTTagByte(byte var1) { - this.byteValue = var1; - } - - void writeTagContents(DataOutput var1) throws IOException { - var1.writeByte(this.byteValue); - } - - void readTagContents(DataInput var1) throws IOException { - this.byteValue = var1.readByte(); - } - - public byte getType() { - return (byte)1; - } - - public String toString() { - return "" + this.byteValue; - } -} diff --git a/src/net/minecraft/src/NBTTagByteArray.java b/src/net/minecraft/src/NBTTagByteArray.java deleted file mode 100644 index 0f58fe1..0000000 --- a/src/net/minecraft/src/NBTTagByteArray.java +++ /dev/null @@ -1,35 +0,0 @@ -package net.minecraft.src; - -import java.io.DataInput; -import java.io.DataOutput; -import java.io.IOException; - -public class NBTTagByteArray extends NBTBase { - public byte[] byteArray; - - public NBTTagByteArray() { - } - - public NBTTagByteArray(byte[] var1) { - this.byteArray = var1; - } - - void writeTagContents(DataOutput var1) throws IOException { - var1.writeInt(this.byteArray.length); - var1.write(this.byteArray); - } - - void readTagContents(DataInput var1) throws IOException { - int var2 = var1.readInt(); - this.byteArray = new byte[var2]; - var1.readFully(this.byteArray); - } - - public byte getType() { - return (byte)7; - } - - public String toString() { - return "[" + this.byteArray.length + " bytes]"; - } -} diff --git a/src/net/minecraft/src/NBTTagCompound.java b/src/net/minecraft/src/NBTTagCompound.java deleted file mode 100644 index a7fa2f8..0000000 --- a/src/net/minecraft/src/NBTTagCompound.java +++ /dev/null @@ -1,128 +0,0 @@ -package net.minecraft.src; - -import java.io.DataInput; -import java.io.DataOutput; -import java.io.IOException; -import java.util.HashMap; -import java.util.Iterator; -import java.util.Map; - -public class NBTTagCompound extends NBTBase { - private Map tagMap = new HashMap(); - - void writeTagContents(DataOutput var1) throws IOException { - Iterator var2 = this.tagMap.values().iterator(); - - while(var2.hasNext()) { - NBTBase var3 = (NBTBase)var2.next(); - NBTBase.writeNamedTag(var3, var1); - } - - var1.writeByte(0); - } - - void readTagContents(DataInput var1) throws IOException { - this.tagMap.clear(); - - while(true) { - NBTBase var2 = NBTBase.readNamedTag(var1); - if(var2.getType() == 0) { - return; - } - - this.tagMap.put(var2.getKey(), var2); - } - } - - public byte getType() { - return (byte)10; - } - - public void setTag(String var1, NBTBase var2) { - this.tagMap.put(var1, var2.setKey(var1)); - } - - public void setByte(String var1, byte var2) { - this.tagMap.put(var1, (new NBTTagByte(var2)).setKey(var1)); - } - - public void setShort(String var1, short var2) { - this.tagMap.put(var1, (new NBTTagShort(var2)).setKey(var1)); - } - - public void setInteger(String var1, int var2) { - this.tagMap.put(var1, (new NBTTagInt(var2)).setKey(var1)); - } - - public void setLong(String var1, long var2) { - this.tagMap.put(var1, (new NBTTagLong(var2)).setKey(var1)); - } - - public void setFloat(String var1, float var2) { - this.tagMap.put(var1, (new NBTTagFloat(var2)).setKey(var1)); - } - - public void setString(String var1, String var2) { - this.tagMap.put(var1, (new NBTTagString(var2)).setKey(var1)); - } - - public void setByteArray(String var1, byte[] var2) { - this.tagMap.put(var1, (new NBTTagByteArray(var2)).setKey(var1)); - } - - public void setCompoundTag(String var1, NBTTagCompound var2) { - this.tagMap.put(var1, var2.setKey(var1)); - } - - public void setBoolean(String var1, boolean var2) { - this.setByte(var1, (byte)(var2 ? 1 : 0)); - } - - public boolean hasKey(String var1) { - return this.tagMap.containsKey(var1); - } - - public byte getByte(String var1) { - return !this.tagMap.containsKey(var1) ? 0 : ((NBTTagByte)this.tagMap.get(var1)).byteValue; - } - - public short getShort(String var1) { - return !this.tagMap.containsKey(var1) ? 0 : ((NBTTagShort)this.tagMap.get(var1)).shortValue; - } - - public int getInteger(String var1) { - return !this.tagMap.containsKey(var1) ? 0 : ((NBTTagInt)this.tagMap.get(var1)).intValue; - } - - public long getLong(String var1) { - return !this.tagMap.containsKey(var1) ? 0L : ((NBTTagLong)this.tagMap.get(var1)).longValue; - } - - public float getFloat(String var1) { - return !this.tagMap.containsKey(var1) ? 0.0F : ((NBTTagFloat)this.tagMap.get(var1)).floatValue; - } - - public String getString(String var1) { - return !this.tagMap.containsKey(var1) ? "" : ((NBTTagString)this.tagMap.get(var1)).stringValue; - } - - public byte[] getByteArray(String var1) { - return !this.tagMap.containsKey(var1) ? new byte[0] : ((NBTTagByteArray)this.tagMap.get(var1)).byteArray; - } - - public NBTTagCompound getCompoundTag(String var1) { - return !this.tagMap.containsKey(var1) ? new NBTTagCompound() : (NBTTagCompound)this.tagMap.get(var1); - } - - public NBTTagList getTagList(String var1) { - return !this.tagMap.containsKey(var1) ? new NBTTagList() : (NBTTagList)this.tagMap.get(var1); - } - - public boolean getBoolean(String var1) { - return this.getByte(var1) != 0; - } - - public String toString() { - return "" + this.tagMap.size() + " entries"; - } -} diff --git a/src/net/minecraft/src/NBTTagDouble.java b/src/net/minecraft/src/NBTTagDouble.java deleted file mode 100644 index cd00968..0000000 --- a/src/net/minecraft/src/NBTTagDouble.java +++ /dev/null @@ -1,32 +0,0 @@ -package net.minecraft.src; - -import java.io.DataInput; -import java.io.DataOutput; -import java.io.IOException; - -public class NBTTagDouble extends NBTBase { - public double doubleValue; - - public NBTTagDouble() { - } - - public NBTTagDouble(double var1) { - this.doubleValue = var1; - } - - void writeTagContents(DataOutput var1) throws IOException { - var1.writeDouble(this.doubleValue); - } - - void readTagContents(DataInput var1) throws IOException { - this.doubleValue = var1.readDouble(); - } - - public byte getType() { - return (byte)6; - } - - public String toString() { - return "" + this.doubleValue; - } -} diff --git a/src/net/minecraft/src/NBTTagEnd.java b/src/net/minecraft/src/NBTTagEnd.java deleted file mode 100644 index a04e7d6..0000000 --- a/src/net/minecraft/src/NBTTagEnd.java +++ /dev/null @@ -1,21 +0,0 @@ -package net.minecraft.src; - -import java.io.DataInput; -import java.io.DataOutput; -import java.io.IOException; - -public class NBTTagEnd extends NBTBase { - void readTagContents(DataInput var1) throws IOException { - } - - void writeTagContents(DataOutput var1) throws IOException { - } - - public byte getType() { - return (byte)0; - } - - public String toString() { - return "END"; - } -} diff --git a/src/net/minecraft/src/NBTTagFloat.java b/src/net/minecraft/src/NBTTagFloat.java deleted file mode 100644 index cf59c93..0000000 --- a/src/net/minecraft/src/NBTTagFloat.java +++ /dev/null @@ -1,32 +0,0 @@ -package net.minecraft.src; - -import java.io.DataInput; -import java.io.DataOutput; -import java.io.IOException; - -public class NBTTagFloat extends NBTBase { - public float floatValue; - - public NBTTagFloat() { - } - - public NBTTagFloat(float var1) { - this.floatValue = var1; - } - - void writeTagContents(DataOutput var1) throws IOException { - var1.writeFloat(this.floatValue); - } - - void readTagContents(DataInput var1) throws IOException { - this.floatValue = var1.readFloat(); - } - - public byte getType() { - return (byte)5; - } - - public String toString() { - return "" + this.floatValue; - } -} diff --git a/src/net/minecraft/src/NBTTagInt.java b/src/net/minecraft/src/NBTTagInt.java deleted file mode 100644 index 6dfdfe6..0000000 --- a/src/net/minecraft/src/NBTTagInt.java +++ /dev/null @@ -1,32 +0,0 @@ -package net.minecraft.src; - -import java.io.DataInput; -import java.io.DataOutput; -import java.io.IOException; - -public class NBTTagInt extends NBTBase { - public int intValue; - - public NBTTagInt() { - } - - public NBTTagInt(int var1) { - this.intValue = var1; - } - - void writeTagContents(DataOutput var1) throws IOException { - var1.writeInt(this.intValue); - } - - void readTagContents(DataInput var1) throws IOException { - this.intValue = var1.readInt(); - } - - public byte getType() { - return (byte)3; - } - - public String toString() { - return "" + this.intValue; - } -} diff --git a/src/net/minecraft/src/NBTTagList.java b/src/net/minecraft/src/NBTTagList.java deleted file mode 100644 index 3ee8caf..0000000 --- a/src/net/minecraft/src/NBTTagList.java +++ /dev/null @@ -1,62 +0,0 @@ -package net.minecraft.src; - -import java.io.DataInput; -import java.io.DataOutput; -import java.io.IOException; -import java.util.ArrayList; -import java.util.List; - -public class NBTTagList extends NBTBase { - private List tagList = new ArrayList(); - private byte tagType; - - void writeTagContents(DataOutput var1) throws IOException { - if(this.tagList.size() > 0) { - this.tagType = ((NBTBase)this.tagList.get(0)).getType(); - } else { - this.tagType = 1; - } - - var1.writeByte(this.tagType); - var1.writeInt(this.tagList.size()); - - for(int var2 = 0; var2 < this.tagList.size(); ++var2) { - ((NBTBase)this.tagList.get(var2)).writeTagContents(var1); - } - - } - - void readTagContents(DataInput var1) throws IOException { - this.tagType = var1.readByte(); - int var2 = var1.readInt(); - this.tagList = new ArrayList(); - - for(int var3 = 0; var3 < var2; ++var3) { - NBTBase var4 = NBTBase.createTagOfType(this.tagType); - var4.readTagContents(var1); - this.tagList.add(var4); - } - - } - - public byte getType() { - return (byte)9; - } - - public String toString() { - return "" + this.tagList.size() + " entries of type " + NBTBase.getTagName(this.tagType); - } - - public void setTag(NBTBase var1) { - this.tagType = var1.getType(); - this.tagList.add(var1); - } - - public NBTBase tagAt(int var1) { - return (NBTBase)this.tagList.get(var1); - } - - public int tagCount() { - return this.tagList.size(); - } -} diff --git a/src/net/minecraft/src/NBTTagLong.java b/src/net/minecraft/src/NBTTagLong.java deleted file mode 100644 index 646f80d..0000000 --- a/src/net/minecraft/src/NBTTagLong.java +++ /dev/null @@ -1,32 +0,0 @@ -package net.minecraft.src; - -import java.io.DataInput; -import java.io.DataOutput; -import java.io.IOException; - -public class NBTTagLong extends NBTBase { - public long longValue; - - public NBTTagLong() { - } - - public NBTTagLong(long var1) { - this.longValue = var1; - } - - void writeTagContents(DataOutput var1) throws IOException { - var1.writeLong(this.longValue); - } - - void readTagContents(DataInput var1) throws IOException { - this.longValue = var1.readLong(); - } - - public byte getType() { - return (byte)4; - } - - public String toString() { - return "" + this.longValue; - } -} diff --git a/src/net/minecraft/src/NBTTagShort.java b/src/net/minecraft/src/NBTTagShort.java deleted file mode 100644 index 3345229..0000000 --- a/src/net/minecraft/src/NBTTagShort.java +++ /dev/null @@ -1,32 +0,0 @@ -package net.minecraft.src; - -import java.io.DataInput; -import java.io.DataOutput; -import java.io.IOException; - -public class NBTTagShort extends NBTBase { - public short shortValue; - - public NBTTagShort() { - } - - public NBTTagShort(short var1) { - this.shortValue = var1; - } - - void writeTagContents(DataOutput var1) throws IOException { - var1.writeShort(this.shortValue); - } - - void readTagContents(DataInput var1) throws IOException { - this.shortValue = var1.readShort(); - } - - public byte getType() { - return (byte)2; - } - - public String toString() { - return "" + this.shortValue; - } -} diff --git a/src/net/minecraft/src/NBTTagString.java b/src/net/minecraft/src/NBTTagString.java deleted file mode 100644 index 93fca6e..0000000 --- a/src/net/minecraft/src/NBTTagString.java +++ /dev/null @@ -1,35 +0,0 @@ -package net.minecraft.src; - -import java.io.DataInput; -import java.io.DataOutput; -import java.io.IOException; - -public class NBTTagString extends NBTBase { - public String stringValue; - - public NBTTagString() { - } - - public NBTTagString(String var1) { - this.stringValue = var1; - if(var1 == null) { - throw new IllegalArgumentException("Empty string not allowed"); - } - } - - void writeTagContents(DataOutput var1) throws IOException { - var1.writeUTF(this.stringValue); - } - - void readTagContents(DataInput var1) throws IOException { - this.stringValue = var1.readUTF(); - } - - public byte getType() { - return (byte)8; - } - - public String toString() { - return "" + this.stringValue; - } -} diff --git a/src/net/minecraft/src/NextTickListEntry.java b/src/net/minecraft/src/NextTickListEntry.java deleted file mode 100644 index 3870d49..0000000 --- a/src/net/minecraft/src/NextTickListEntry.java +++ /dev/null @@ -1,44 +0,0 @@ -package net.minecraft.src; - -public class NextTickListEntry implements Comparable { - private static long nextTickEntryID = 0L; - public int xCoord; - public int yCoord; - public int zCoord; - public int blockID; - public long scheduledTime; - private long tickEntryID = nextTickEntryID++; - - public NextTickListEntry(int var1, int var2, int var3, int var4) { - this.xCoord = var1; - this.yCoord = var2; - this.zCoord = var3; - this.blockID = var4; - } - - public boolean equals(Object var1) { - if(!(var1 instanceof NextTickListEntry)) { - return false; - } else { - NextTickListEntry var2 = (NextTickListEntry)var1; - return this.xCoord == var2.xCoord && this.yCoord == var2.yCoord && this.zCoord == var2.zCoord && this.blockID == var2.blockID; - } - } - - public int hashCode() { - return (this.xCoord * 128 * 1024 + this.zCoord * 128 + this.yCoord) * 256 + this.blockID; - } - - public NextTickListEntry setScheduledTime(long var1) { - this.scheduledTime = var1; - return this; - } - - public int a(NextTickListEntry var1) { - return this.scheduledTime < var1.scheduledTime ? -1 : (this.scheduledTime > var1.scheduledTime ? 1 : (this.tickEntryID < var1.tickEntryID ? -1 : (this.tickEntryID > var1.tickEntryID ? 1 : 0))); - } - - public int compareTo(Object var1) { - return this.a((NextTickListEntry)var1); - } -} diff --git a/src/net/minecraft/src/NibbleArray.java b/src/net/minecraft/src/NibbleArray.java deleted file mode 100644 index 56a0293..0000000 --- a/src/net/minecraft/src/NibbleArray.java +++ /dev/null @@ -1,36 +0,0 @@ -package net.minecraft.src; - -public class NibbleArray { - public final byte[] data; - - public NibbleArray(int var1) { - this.data = new byte[var1 >> 1]; - } - - public NibbleArray(byte[] var1) { - this.data = var1; - } - - public int get(int var1, int var2, int var3) { - int var4 = var1 << 11 | var3 << 7 | var2; - int var5 = var4 >> 1; - int var6 = var4 & 1; - return var6 == 0 ? this.data[var5] & 15 : this.data[var5] >> 4 & 15; - } - - public void set(int var1, int var2, int var3, int var4) { - int var5 = var1 << 11 | var3 << 7 | var2; - int var6 = var5 >> 1; - int var7 = var5 & 1; - if(var7 == 0) { - this.data[var6] = (byte)(this.data[var6] & 240 | var4 & 15); - } else { - this.data[var6] = (byte)(this.data[var6] & 15 | (var4 & 15) << 4); - } - - } - - public boolean isValid() { - return this.data != null; - } -} diff --git a/src/net/minecraft/src/NoiseGenerator.java b/src/net/minecraft/src/NoiseGenerator.java deleted file mode 100644 index 53e6d05..0000000 --- a/src/net/minecraft/src/NoiseGenerator.java +++ /dev/null @@ -1,4 +0,0 @@ -package net.minecraft.src; - -public abstract class NoiseGenerator { -} diff --git a/src/net/minecraft/src/NoiseGeneratorOctaves.java b/src/net/minecraft/src/NoiseGeneratorOctaves.java deleted file mode 100644 index b58f601..0000000 --- a/src/net/minecraft/src/NoiseGeneratorOctaves.java +++ /dev/null @@ -1,61 +0,0 @@ -package net.minecraft.src; - -import java.util.Random; - -public class NoiseGeneratorOctaves extends NoiseGenerator { - private NoiseGeneratorPerlin[] generatorCollection; - private int octaves; - - public NoiseGeneratorOctaves(Random var1, int var2) { - this.octaves = var2; - this.generatorCollection = new NoiseGeneratorPerlin[var2]; - - for(int var3 = 0; var3 < var2; ++var3) { - this.generatorCollection[var3] = new NoiseGeneratorPerlin(var1); - } - - } - - public double generateNoiseOctaves(double var1, double var3) { - double var5 = 0.0D; - double var7 = 1.0D; - - for(int var9 = 0; var9 < this.octaves; ++var9) { - var5 += this.generatorCollection[var9].generateNoise(var1 * var7, var3 * var7) / var7; - var7 /= 2.0D; - } - - return var5; - } - - public double a(double var1, double var3, double var5) { - double var7 = 0.0D; - double var9 = 1.0D; - - for(int var11 = 0; var11 < this.octaves; ++var11) { - var7 += this.generatorCollection[var11].c(var1 * var9, var3 * var9, var5 * var9) / var9; - var9 /= 2.0D; - } - - return var7; - } - - public double[] a(double[] var1, int var2, int var3, int var4, int var5, int var6, int var7, double var8, double var10, double var12) { - if(var1 == null) { - var1 = new double[var5 * var6 * var7]; - } else { - for(int var14 = 0; var14 < var1.length; ++var14) { - var1[var14] = 0.0D; - } - } - - double var17 = 1.0D; - - for(int var16 = 0; var16 < this.octaves; ++var16) { - this.generatorCollection[var16].a(var1, var2, var3, var4, var5, var6, var7, var8 * var17, var10 * var17, var12 * var17, var17); - var17 /= 2.0D; - } - - return var1; - } -} diff --git a/src/net/minecraft/src/NoiseGeneratorPerlin.java b/src/net/minecraft/src/NoiseGeneratorPerlin.java deleted file mode 100644 index 29fb064..0000000 --- a/src/net/minecraft/src/NoiseGeneratorPerlin.java +++ /dev/null @@ -1,162 +0,0 @@ -package net.minecraft.src; - -import java.util.Random; - -public class NoiseGeneratorPerlin extends NoiseGenerator { - private int[] permutations; - public double xCoord; - public double yCoord; - public double zCoord; - - public NoiseGeneratorPerlin() { - this(new Random()); - } - - public NoiseGeneratorPerlin(Random var1) { - this.permutations = new int[512]; - this.xCoord = var1.nextDouble() * 256.0D; - this.yCoord = var1.nextDouble() * 256.0D; - this.zCoord = var1.nextDouble() * 256.0D; - - int var2; - for(var2 = 0; var2 < 256; this.permutations[var2] = var2++) { - } - - for(var2 = 0; var2 < 256; ++var2) { - int var3 = var1.nextInt(256 - var2) + var2; - int var4 = this.permutations[var2]; - this.permutations[var2] = this.permutations[var3]; - this.permutations[var3] = var4; - this.permutations[var2 + 256] = this.permutations[var2]; - } - - } - - public double generateNoise(double var1, double var3, double var5) { - double var7 = var1 + this.xCoord; - double var9 = var3 + this.yCoord; - double var11 = var5 + this.zCoord; - int var13 = (int)var7; - int var14 = (int)var9; - int var15 = (int)var11; - if(var7 < (double)var13) { - --var13; - } - - if(var9 < (double)var14) { - --var14; - } - - if(var11 < (double)var15) { - --var15; - } - - int var16 = var13 & 255; - int var17 = var14 & 255; - int var18 = var15 & 255; - var7 -= (double)var13; - var9 -= (double)var14; - var11 -= (double)var15; - double var19 = var7 * var7 * var7 * (var7 * (var7 * 6.0D - 15.0D) + 10.0D); - double var21 = var9 * var9 * var9 * (var9 * (var9 * 6.0D - 15.0D) + 10.0D); - double var23 = var11 * var11 * var11 * (var11 * (var11 * 6.0D - 15.0D) + 10.0D); - int var25 = this.permutations[var16] + var17; - int var26 = this.permutations[var25] + var18; - int var27 = this.permutations[var25 + 1] + var18; - int var28 = this.permutations[var16 + 1] + var17; - int var29 = this.permutations[var28] + var18; - int var30 = this.permutations[var28 + 1] + var18; - return this.lerp(var23, this.lerp(var21, this.lerp(var19, this.grad(this.permutations[var26], var7, var9, var11), this.grad(this.permutations[var29], var7 - 1.0D, var9, var11)), this.lerp(var19, this.grad(this.permutations[var27], var7, var9 - 1.0D, var11), this.grad(this.permutations[var30], var7 - 1.0D, var9 - 1.0D, var11))), this.lerp(var21, this.lerp(var19, this.grad(this.permutations[var26 + 1], var7, var9, var11 - 1.0D), this.grad(this.permutations[var29 + 1], var7 - 1.0D, var9, var11 - 1.0D)), this.lerp(var19, this.grad(this.permutations[var27 + 1], var7, var9 - 1.0D, var11 - 1.0D), this.grad(this.permutations[var30 + 1], var7 - 1.0D, var9 - 1.0D, var11 - 1.0D)))); - } - - public double lerp(double var1, double var3, double var5) { - return var3 + var1 * (var5 - var3); - } - - public double grad(int var1, double var2, double var4, double var6) { - int var8 = var1 & 15; - double var9 = var8 < 8 ? var2 : var4; - double var11 = var8 < 4 ? var4 : (var8 != 12 && var8 != 14 ? var6 : var2); - return ((var8 & 1) == 0 ? var9 : -var9) + ((var8 & 2) == 0 ? var11 : -var11); - } - - public double generateNoise(double var1, double var3) { - return this.generateNoise(var1, var3, 0.0D); - } - - public double c(double var1, double var3, double var5) { - return this.generateNoise(var1, var3, var5); - } - - public void a(double[] var1, int var2, int var3, int var4, int var5, int var6, int var7, double var8, double var10, double var12, double var14) { - int var16 = 0; - double var17 = 1.0D / var14; - int var19 = -1; - boolean var20 = false; - boolean var21 = false; - boolean var22 = false; - boolean var23 = false; - boolean var24 = false; - boolean var25 = false; - double var26 = 0.0D; - double var28 = 0.0D; - double var30 = 0.0D; - double var32 = 0.0D; - - for(int var34 = 0; var34 < var5; ++var34) { - double var35 = (double)(var2 + var34) * var8 + this.xCoord; - int var37 = (int)var35; - if(var35 < (double)var37) { - --var37; - } - - int var38 = var37 & 255; - var35 -= (double)var37; - double var39 = var35 * var35 * var35 * (var35 * (var35 * 6.0D - 15.0D) + 10.0D); - - for(int var41 = 0; var41 < var7; ++var41) { - double var42 = (double)(var4 + var41) * var12 + this.zCoord; - int var44 = (int)var42; - if(var42 < (double)var44) { - --var44; - } - - int var45 = var44 & 255; - var42 -= (double)var44; - double var46 = var42 * var42 * var42 * (var42 * (var42 * 6.0D - 15.0D) + 10.0D); - - for(int var48 = 0; var48 < var6; ++var48) { - double var49 = (double)(var3 + var48) * var10 + this.yCoord; - int var51 = (int)var49; - if(var49 < (double)var51) { - --var51; - } - - int var52 = var51 & 255; - var49 -= (double)var51; - double var53 = var49 * var49 * var49 * (var49 * (var49 * 6.0D - 15.0D) + 10.0D); - if(var48 == 0 || var52 != var19) { - var19 = var52; - int var61 = this.permutations[var38] + var52; - int var62 = this.permutations[var61] + var45; - int var63 = this.permutations[var61 + 1] + var45; - int var64 = this.permutations[var38 + 1] + var52; - int var65 = this.permutations[var64] + var45; - int var66 = this.permutations[var64 + 1] + var45; - var26 = this.lerp(var39, this.grad(this.permutations[var62], var35, var49, var42), this.grad(this.permutations[var65], var35 - 1.0D, var49, var42)); - var28 = this.lerp(var39, this.grad(this.permutations[var63], var35, var49 - 1.0D, var42), this.grad(this.permutations[var66], var35 - 1.0D, var49 - 1.0D, var42)); - var30 = this.lerp(var39, this.grad(this.permutations[var62 + 1], var35, var49, var42 - 1.0D), this.grad(this.permutations[var65 + 1], var35 - 1.0D, var49, var42 - 1.0D)); - var32 = this.lerp(var39, this.grad(this.permutations[var63 + 1], var35, var49 - 1.0D, var42 - 1.0D), this.grad(this.permutations[var66 + 1], var35 - 1.0D, var49 - 1.0D, var42 - 1.0D)); - } - - double var55 = this.lerp(var53, var26, var28); - double var57 = this.lerp(var53, var30, var32); - double var59 = this.lerp(var46, var55, var57); - int var10001 = var16++; - var1[var10001] += var59 * var17; - } - } - } - - } -} diff --git a/src/net/minecraft/src/OSMap.java b/src/net/minecraft/src/OSMap.java deleted file mode 100644 index c183c05..0000000 --- a/src/net/minecraft/src/OSMap.java +++ /dev/null @@ -1,28 +0,0 @@ -package net.minecraft.src; - -class OSMap { - static final int[] osValues = new int[EnumOS.values().length]; - - static { - try { - osValues[EnumOS.linux.ordinal()] = 1; - } catch (NoSuchFieldError var4) { - } - - try { - osValues[EnumOS.solaris.ordinal()] = 2; - } catch (NoSuchFieldError var3) { - } - - try { - osValues[EnumOS.windows.ordinal()] = 3; - } catch (NoSuchFieldError var2) { - } - - try { - osValues[EnumOS.macos.ordinal()] = 4; - } catch (NoSuchFieldError var1) { - } - - } -} diff --git a/src/net/minecraft/src/OSMapIsom.java b/src/net/minecraft/src/OSMapIsom.java deleted file mode 100644 index 16687c5..0000000 --- a/src/net/minecraft/src/OSMapIsom.java +++ /dev/null @@ -1,28 +0,0 @@ -package net.minecraft.src; - -class OSMapIsom { - static final int[] osValues = new int[EnumOSIsom.values().length]; - - static { - try { - osValues[EnumOSIsom.linux.ordinal()] = 1; - } catch (NoSuchFieldError var4) { - } - - try { - osValues[EnumOSIsom.solaris.ordinal()] = 2; - } catch (NoSuchFieldError var3) { - } - - try { - osValues[EnumOSIsom.windows.ordinal()] = 3; - } catch (NoSuchFieldError var2) { - } - - try { - osValues[EnumOSIsom.macos.ordinal()] = 4; - } catch (NoSuchFieldError var1) { - } - - } -} diff --git a/src/net/minecraft/src/OpenGlCapsChecker.java b/src/net/minecraft/src/OpenGlCapsChecker.java deleted file mode 100644 index eaf1238..0000000 --- a/src/net/minecraft/src/OpenGlCapsChecker.java +++ /dev/null @@ -1,9 +0,0 @@ -package net.minecraft.src; - -import org.lwjgl.opengl.GLContext; - -public class OpenGlCapsChecker { - public boolean checkARBOcclusion() { - return false & GLContext.getCapabilities().GL_ARB_occlusion_query; - } -} diff --git a/src/net/minecraft/src/Path.java b/src/net/minecraft/src/Path.java deleted file mode 100644 index ce289f0..0000000 --- a/src/net/minecraft/src/Path.java +++ /dev/null @@ -1,119 +0,0 @@ -package net.minecraft.src; - -public class Path { - private PathPoint[] pathPoints = new PathPoint[1024]; - private int count = 0; - - public PathPoint addPoint(PathPoint var1) { - if(var1.index >= 0) { - throw new IllegalStateException("OW KNOWS!"); - } else { - if(this.count == this.pathPoints.length) { - PathPoint[] var2 = new PathPoint[this.count << 1]; - System.arraycopy(this.pathPoints, 0, var2, 0, this.count); - this.pathPoints = var2; - } - - this.pathPoints[this.count] = var1; - var1.index = this.count; - this.sortBack(this.count++); - return var1; - } - } - - public void clearPath() { - this.count = 0; - } - - public PathPoint dequeue() { - PathPoint var1 = this.pathPoints[0]; - this.pathPoints[0] = this.pathPoints[--this.count]; - this.pathPoints[this.count] = null; - if(this.count > 0) { - this.sortForward(0); - } - - var1.index = -1; - return var1; - } - - public void changeDistance(PathPoint var1, float var2) { - float var3 = var1.distanceToTarget; - var1.distanceToTarget = var2; - if(var2 < var3) { - this.sortBack(var1.index); - } else { - this.sortForward(var1.index); - } - - } - - private void sortBack(int var1) { - PathPoint var2 = this.pathPoints[var1]; - - int var4; - for(float var3 = var2.distanceToTarget; var1 > 0; var1 = var4) { - var4 = var1 - 1 >> 1; - PathPoint var5 = this.pathPoints[var4]; - if(var3 >= var5.distanceToTarget) { - break; - } - - this.pathPoints[var1] = var5; - var5.index = var1; - } - - this.pathPoints[var1] = var2; - var2.index = var1; - } - - private void sortForward(int var1) { - PathPoint var2 = this.pathPoints[var1]; - float var3 = var2.distanceToTarget; - - while(true) { - int var4 = 1 + (var1 << 1); - int var5 = var4 + 1; - if(var4 >= this.count) { - break; - } - - PathPoint var6 = this.pathPoints[var4]; - float var7 = var6.distanceToTarget; - PathPoint var8; - float var9; - if(var5 >= this.count) { - var8 = null; - var9 = Float.POSITIVE_INFINITY; - } else { - var8 = this.pathPoints[var5]; - var9 = var8.distanceToTarget; - } - - if(var7 < var9) { - if(var7 >= var3) { - break; - } - - this.pathPoints[var1] = var6; - var6.index = var1; - var1 = var4; - } else { - if(var9 >= var3) { - break; - } - - this.pathPoints[var1] = var8; - var8.index = var1; - var1 = var5; - } - } - - this.pathPoints[var1] = var2; - var2.index = var1; - } - - public boolean isPathEmpty() { - return this.count == 0; - } -} diff --git a/src/net/minecraft/src/PathEntity.java b/src/net/minecraft/src/PathEntity.java deleted file mode 100644 index e1994b1..0000000 --- a/src/net/minecraft/src/PathEntity.java +++ /dev/null @@ -1,27 +0,0 @@ -package net.minecraft.src; - -public class PathEntity { - private final PathPoint[] points; - public final int pathLength; - private int pathIndex; - - public PathEntity(PathPoint[] var1) { - this.points = var1; - this.pathLength = var1.length; - } - - public void incrementPathIndex() { - ++this.pathIndex; - } - - public boolean isFinished() { - return this.pathIndex >= this.points.length; - } - - public Vec3D getPosition(Entity var1) { - float var2 = (float)this.points[this.pathIndex].xCoord + (float)((int)(var1.width + 1.0F)) * 0.5F; - float var3 = (float)this.points[this.pathIndex].yCoord; - float var4 = (float)this.points[this.pathIndex].zCoord + (float)((int)(var1.width + 1.0F)) * 0.5F; - return Vec3D.createVector((double)var2, (double)var3, (double)var4); - } -} diff --git a/src/net/minecraft/src/PathPoint.java b/src/net/minecraft/src/PathPoint.java deleted file mode 100644 index 7df70dd..0000000 --- a/src/net/minecraft/src/PathPoint.java +++ /dev/null @@ -1,44 +0,0 @@ -package net.minecraft.src; - -public class PathPoint { - public final int xCoord; - public final int yCoord; - public final int zCoord; - public final int hash; - int index = -1; - float totalPathDistance; - float distanceToNext; - float distanceToTarget; - PathPoint previous; - public boolean isFirst = false; - - public PathPoint(int var1, int var2, int var3) { - this.xCoord = var1; - this.yCoord = var2; - this.zCoord = var3; - this.hash = var1 | var2 << 10 | var3 << 20; - } - - public float distanceTo(PathPoint var1) { - float var2 = (float)(var1.xCoord - this.xCoord); - float var3 = (float)(var1.yCoord - this.yCoord); - float var4 = (float)(var1.zCoord - this.zCoord); - return MathHelper.sqrt_float(var2 * var2 + var3 * var3 + var4 * var4); - } - - public boolean equals(Object var1) { - return ((PathPoint)var1).hash == this.hash; - } - - public int hashCode() { - return this.hash; - } - - public boolean isAssigned() { - return this.index >= 0; - } - - public String toString() { - return this.xCoord + ", " + this.yCoord + ", " + this.zCoord; - } -} diff --git a/src/net/minecraft/src/Pathfinder.java b/src/net/minecraft/src/Pathfinder.java deleted file mode 100644 index 7887c4f..0000000 --- a/src/net/minecraft/src/Pathfinder.java +++ /dev/null @@ -1,205 +0,0 @@ -package net.minecraft.src; - -import java.util.HashMap; -import java.util.Map; - -public class Pathfinder { - private IBlockAccess worldMap; - private Path path = new Path(); - private Map pointMap = new HashMap(); - private PathPoint[] pathOptions = new PathPoint[32]; - - public Pathfinder(IBlockAccess var1) { - this.worldMap = var1; - } - - public PathEntity createEntityPathTo(Entity var1, Entity var2, float var3) { - return this.createEntityPathTo(var1, var2.posX, var2.boundingBox.minY, var2.posZ, var3); - } - - public PathEntity createEntityPathTo(Entity var1, int var2, int var3, int var4, float var5) { - return this.createEntityPathTo(var1, (double)((float)var2 + 0.5F), (double)((float)var3 + 0.5F), (double)((float)var4 + 0.5F), var5); - } - - private PathEntity createEntityPathTo(Entity var1, double var2, double var4, double var6, float var8) { - this.path.clearPath(); - this.pointMap.clear(); - PathPoint var9 = this.openPoint(MathHelper.floor_double(var1.boundingBox.minX), MathHelper.floor_double(var1.boundingBox.minY), MathHelper.floor_double(var1.boundingBox.minZ)); - PathPoint var10 = this.openPoint(MathHelper.floor_double(var2 - (double)(var1.width / 2.0F)), MathHelper.floor_double(var4), MathHelper.floor_double(var6 - (double)(var1.width / 2.0F))); - PathPoint var11 = new PathPoint(MathHelper.floor_float(var1.width + 1.0F), MathHelper.floor_float(var1.height + 1.0F), MathHelper.floor_float(var1.width + 1.0F)); - PathEntity var12 = this.addToPath(var1, var9, var10, var11, var8); - return var12; - } - - private PathEntity addToPath(Entity var1, PathPoint var2, PathPoint var3, PathPoint var4, float var5) { - var2.totalPathDistance = 0.0F; - var2.distanceToNext = var2.distanceTo(var3); - var2.distanceToTarget = var2.distanceToNext; - this.path.clearPath(); - this.path.addPoint(var2); - PathPoint var6 = var2; - - while(!this.path.isPathEmpty()) { - PathPoint var7 = this.path.dequeue(); - if(var7.hash == var3.hash) { - return this.createEntityPath(var2, var3); - } - - if(var7.distanceTo(var3) < var6.distanceTo(var3)) { - var6 = var7; - } - - var7.isFirst = true; - int var8 = this.findPathOptions(var1, var7, var4, var3, var5); - - for(int var9 = 0; var9 < var8; ++var9) { - PathPoint var10 = this.pathOptions[var9]; - float var11 = var7.totalPathDistance + var7.distanceTo(var10); - if(!var10.isAssigned() || var11 < var10.totalPathDistance) { - var10.previous = var7; - var10.totalPathDistance = var11; - var10.distanceToNext = var10.distanceTo(var3); - if(var10.isAssigned()) { - this.path.changeDistance(var10, var10.totalPathDistance + var10.distanceToNext); - } else { - var10.distanceToTarget = var10.totalPathDistance + var10.distanceToNext; - this.path.addPoint(var10); - } - } - } - } - - if(var6 == var2) { - return null; - } else { - return this.createEntityPath(var2, var6); - } - } - - private int findPathOptions(Entity var1, PathPoint var2, PathPoint var3, PathPoint var4, float var5) { - int var6 = 0; - byte var7 = 0; - if(this.getVerticalOffset(var1, var2.xCoord, var2.yCoord + 1, var2.zCoord, var3) > 0) { - var7 = 1; - } - - PathPoint var8 = this.getSafePoint(var1, var2.xCoord, var2.yCoord, var2.zCoord + 1, var3, var7); - PathPoint var9 = this.getSafePoint(var1, var2.xCoord - 1, var2.yCoord, var2.zCoord, var3, var7); - PathPoint var10 = this.getSafePoint(var1, var2.xCoord + 1, var2.yCoord, var2.zCoord, var3, var7); - PathPoint var11 = this.getSafePoint(var1, var2.xCoord, var2.yCoord, var2.zCoord - 1, var3, var7); - if(var8 != null && !var8.isFirst && var8.distanceTo(var4) < var5) { - this.pathOptions[var6++] = var8; - } - - if(var9 != null && !var9.isFirst && var9.distanceTo(var4) < var5) { - this.pathOptions[var6++] = var9; - } - - if(var10 != null && !var10.isFirst && var10.distanceTo(var4) < var5) { - this.pathOptions[var6++] = var10; - } - - if(var11 != null && !var11.isFirst && var11.distanceTo(var4) < var5) { - this.pathOptions[var6++] = var11; - } - - return var6; - } - - private PathPoint getSafePoint(Entity var1, int var2, int var3, int var4, PathPoint var5, int var6) { - PathPoint var7 = null; - if(this.getVerticalOffset(var1, var2, var3, var4, var5) > 0) { - var7 = this.openPoint(var2, var3, var4); - } - - if(var7 == null && this.getVerticalOffset(var1, var2, var3 + var6, var4, var5) > 0) { - var7 = this.openPoint(var2, var3 + var6, var4); - } - - if(var7 != null) { - int var8 = 0; - boolean var9 = false; - - while(true) { - if(var3 > 0) { - int var11 = this.getVerticalOffset(var1, var2, var3 - 1, var4, var5); - if(var11 > 0) { - if(var11 < 0) { - return null; - } - - ++var8; - if(var8 >= 4) { - return null; - } - - --var3; - continue; - } - } - - if(var3 > 0) { - var7 = this.openPoint(var2, var3, var4); - } - - Material var10 = this.worldMap.getBlockMaterial(var2, var3 - 1, var4); - if(var10 == Material.water || var10 == Material.lava) { - return null; - } - break; - } - } - - return var7; - } - - private final PathPoint openPoint(int var1, int var2, int var3) { - int var4 = var1 | var2 << 10 | var3 << 20; - PathPoint var5 = (PathPoint)this.pointMap.get(Integer.valueOf(var4)); - if(var5 == null) { - var5 = new PathPoint(var1, var2, var3); - this.pointMap.put(Integer.valueOf(var4), var5); - } - - return var5; - } - - private int getVerticalOffset(Entity var1, int var2, int var3, int var4, PathPoint var5) { - for(int var6 = var2; var6 < var2 + var5.xCoord; ++var6) { - for(int var7 = var3; var7 < var3 + var5.yCoord; ++var7) { - for(int var8 = var4; var8 < var4 + var5.zCoord; ++var8) { - Material var9 = this.worldMap.getBlockMaterial(var2, var3, var4); - if(var9.getIsSolid()) { - return 0; - } - - if(var9 == Material.water || var9 == Material.lava) { - return -1; - } - } - } - } - - return 1; - } - - private PathEntity createEntityPath(PathPoint var1, PathPoint var2) { - int var3 = 1; - - PathPoint var4; - for(var4 = var2; var4.previous != null; var4 = var4.previous) { - ++var3; - } - - PathPoint[] var5 = new PathPoint[var3]; - var4 = var2; - --var3; - - for(var5[var3] = var2; var4.previous != null; var5[var3] = var4) { - var4 = var4.previous; - --var3; - } - - return new PathEntity(var5); - } -} diff --git a/src/net/minecraft/src/PlayerController.java b/src/net/minecraft/src/PlayerController.java deleted file mode 100644 index 4abc7dc..0000000 --- a/src/net/minecraft/src/PlayerController.java +++ /dev/null @@ -1,60 +0,0 @@ -package net.minecraft.src; - -public class PlayerController { - protected final Minecraft mc; - public boolean isInTestMode = false; - - public PlayerController(Minecraft var1) { - this.mc = var1; - } - - public void init() { - } - - public void onWorldChange(World var1) { - } - - public void clickBlock(int var1, int var2, int var3) { - this.sendBlockRemoved(var1, var2, var3); - } - - public boolean sendBlockRemoved(int var1, int var2, int var3) { - this.mc.effectRenderer.addBlockDestroyEffects(var1, var2, var3); - World var4 = this.mc.theWorld; - Block var5 = Block.blocksList[var4.getBlockId(var1, var2, var3)]; - int var6 = var4.getBlockMetadata(var1, var2, var3); - boolean var7 = var4.setBlockWithNotify(var1, var2, var3, 0); - if(var5 != null && var7) { - this.mc.sndManager.playSound(var5.stepSound.getBreakSound(), (float)var1 + 0.5F, (float)var2 + 0.5F, (float)var3 + 0.5F, (var5.stepSound.getVolume() + 1.0F) / 2.0F, var5.stepSound.getPitch() * 0.8F); - var5.onBlockDestroyedByPlayer(var4, var1, var2, var3, var6); - } - - return var7; - } - - public void sendBlockRemoving(int var1, int var2, int var3, int var4) { - } - - public void resetBlockRemoving() { - } - - public void setPartialTime(float var1) { - } - - public float getBlockReachDistance() { - return 5.0F; - } - - public void flipPlayer(EntityPlayer var1) { - } - - public void onUpdate() { - } - - public boolean shouldDrawHUD() { - return true; - } - - public void onRespawn(EntityPlayer var1) { - } -} diff --git a/src/net/minecraft/src/PlayerControllerCreative.java b/src/net/minecraft/src/PlayerControllerCreative.java deleted file mode 100644 index 960d62a..0000000 --- a/src/net/minecraft/src/PlayerControllerCreative.java +++ /dev/null @@ -1,33 +0,0 @@ -package net.minecraft.src; - -public class PlayerControllerCreative extends PlayerController { - public PlayerControllerCreative(Minecraft var1) { - super(var1); - this.isInTestMode = true; - } - - public void init() { - } - - public void onRespawn(EntityPlayer var1) { - for(int var2 = 0; var2 < 9; ++var2) { - if(var1.inventory.mainInventory[var2] == null) { - this.mc.thePlayer.inventory.mainInventory[var2] = new ItemStack(((Block)Session.registeredBlocksList.get(var2)).blockID); - } else { - this.mc.thePlayer.inventory.mainInventory[var2].stackSize = 1; - } - } - - } - - public boolean shouldDrawHUD() { - return false; - } - - public void onWorldChange(World var1) { - super.onWorldChange(var1); - } - - public void onUpdate() { - } -} diff --git a/src/net/minecraft/src/PlayerControllerSP.java b/src/net/minecraft/src/PlayerControllerSP.java deleted file mode 100644 index 845c644..0000000 --- a/src/net/minecraft/src/PlayerControllerSP.java +++ /dev/null @@ -1,124 +0,0 @@ -package net.minecraft.src; - -public class PlayerControllerSP extends PlayerController { - private int curBlockX = -1; - private int curBlockY = -1; - private int curBlockZ = -1; - private float curBlockDamage = 0.0F; - private float prevBlockDamage = 0.0F; - private float blockDestroySoundCounter = 0.0F; - private int blockHitWait = 0; - private SpawnerAnimals monsterSpawner = new SpawnerMonsters(this, 100, EntityMonster.class, new Class[]{EntityZombie.class, EntitySkeleton.class, EntityCreeper.class, EntitySpider.class}); - private SpawnerAnimals animalSpawner = new SpawnerAnimals(20, EntityAnimal.class, new Class[]{EntitySheep.class, EntityPig.class}); - - public PlayerControllerSP(Minecraft var1) { - super(var1); - } - - public void flipPlayer(EntityPlayer var1) { - var1.rotationYaw = -180.0F; - } - - public void init() { - } - - public boolean sendBlockRemoved(int var1, int var2, int var3) { - int var4 = this.mc.theWorld.getBlockId(var1, var2, var3); - int var5 = this.mc.theWorld.getBlockMetadata(var1, var2, var3); - boolean var6 = super.sendBlockRemoved(var1, var2, var3); - ItemStack var7 = this.mc.thePlayer.getCurrentEquippedItem(); - if(var7 != null) { - var7.onDestroyBlock(var4, var1, var2, var3); - if(var7.stackSize == 0) { - var7.onItemDestroyedByUse(this.mc.thePlayer); - this.mc.thePlayer.displayGUIInventory(); - } - } - - if(var6 && this.mc.thePlayer.canHarvestBlock(Block.blocksList[var4])) { - Block.blocksList[var4].dropBlockAsItem(this.mc.theWorld, var1, var2, var3, var5); - } - - return var6; - } - - public void clickBlock(int var1, int var2, int var3) { - int var4 = this.mc.theWorld.getBlockId(var1, var2, var3); - if(var4 > 0 && this.curBlockDamage == 0.0F) { - Block.blocksList[var4].onBlockClicked(this.mc.theWorld, var1, var2, var3, this.mc.thePlayer); - } - - if(var4 > 0 && Block.blocksList[var4].blockStrength(this.mc.thePlayer) >= 1.0F) { - this.sendBlockRemoved(var1, var2, var3); - } - - } - - public void resetBlockRemoving() { - this.curBlockDamage = 0.0F; - this.blockHitWait = 0; - } - - public void sendBlockRemoving(int var1, int var2, int var3, int var4) { - if(this.blockHitWait > 0) { - --this.blockHitWait; - } else { - super.sendBlockRemoving(var1, var2, var3, var4); - if(var1 == this.curBlockX && var2 == this.curBlockY && var3 == this.curBlockZ) { - int var5 = this.mc.theWorld.getBlockId(var1, var2, var3); - if(var5 == 0) { - return; - } - - Block var6 = Block.blocksList[var5]; - this.curBlockDamage += var6.blockStrength(this.mc.thePlayer); - if(this.blockDestroySoundCounter % 4.0F == 0.0F && var6 != null) { - this.mc.sndManager.playSound(var6.stepSound.getStepSound(), (float)var1 + 0.5F, (float)var2 + 0.5F, (float)var3 + 0.5F, (var6.stepSound.getVolume() + 1.0F) / 8.0F, var6.stepSound.getPitch() * 0.5F); - } - - ++this.blockDestroySoundCounter; - if(this.curBlockDamage >= 1.0F) { - this.sendBlockRemoved(var1, var2, var3); - this.curBlockDamage = 0.0F; - this.prevBlockDamage = 0.0F; - this.blockDestroySoundCounter = 0.0F; - this.blockHitWait = 5; - } - } else { - this.curBlockDamage = 0.0F; - this.prevBlockDamage = 0.0F; - this.blockDestroySoundCounter = 0.0F; - this.curBlockX = var1; - this.curBlockY = var2; - this.curBlockZ = var3; - } - - } - } - - public void setPartialTime(float var1) { - if(this.curBlockDamage <= 0.0F) { - this.mc.ingameGUI.damageGuiPartialTime = 0.0F; - this.mc.renderGlobal.damagePartialTime = 0.0F; - } else { - float var2 = this.prevBlockDamage + (this.curBlockDamage - this.prevBlockDamage) * var1; - this.mc.ingameGUI.damageGuiPartialTime = var2; - this.mc.renderGlobal.damagePartialTime = var2; - } - - } - - public float getBlockReachDistance() { - return 4.0F; - } - - public void onWorldChange(World var1) { - super.onWorldChange(var1); - } - - public void onUpdate() { - this.prevBlockDamage = this.curBlockDamage; - this.monsterSpawner.onUpdate(this.mc.theWorld); - this.animalSpawner.onUpdate(this.mc.theWorld); - } -} diff --git a/src/net/minecraft/src/PositionTextureVertex.java b/src/net/minecraft/src/PositionTextureVertex.java deleted file mode 100644 index 767c8bf..0000000 --- a/src/net/minecraft/src/PositionTextureVertex.java +++ /dev/null @@ -1,27 +0,0 @@ -package net.minecraft.src; - -public class PositionTextureVertex { - public Vec3D vector3D; - public float texturePositionX; - public float texturePositionY; - - public PositionTextureVertex(float var1, float var2, float var3, float var4, float var5) { - this(Vec3D.createVectorHelper((double)var1, (double)var2, (double)var3), var4, var5); - } - - public PositionTextureVertex setTexturePosition(float var1, float var2) { - return new PositionTextureVertex(this, var1, var2); - } - - public PositionTextureVertex(PositionTextureVertex var1, float var2, float var3) { - this.vector3D = var1.vector3D; - this.texturePositionX = var2; - this.texturePositionY = var3; - } - - public PositionTextureVertex(Vec3D var1, float var2, float var3) { - this.vector3D = var1; - this.texturePositionX = var2; - this.texturePositionY = var3; - } -} diff --git a/src/net/minecraft/src/RecipeSorter.java b/src/net/minecraft/src/RecipeSorter.java deleted file mode 100644 index e74a04e..0000000 --- a/src/net/minecraft/src/RecipeSorter.java +++ /dev/null @@ -1,19 +0,0 @@ -package net.minecraft.src; - -import java.util.Comparator; - -class RecipeSorter implements Comparator { - final CraftingManager craftingManager; - - RecipeSorter(CraftingManager var1) { - this.craftingManager = var1; - } - - public int a(CraftingRecipe var1, CraftingRecipe var2) { - return var2.getRecipeSize() < var1.getRecipeSize() ? -1 : (var2.getRecipeSize() > var1.getRecipeSize() ? 1 : 0); - } - - public int compare(Object var1, Object var2) { - return this.a((CraftingRecipe)var1, (CraftingRecipe)var2); - } -} diff --git a/src/net/minecraft/src/RecipesArmor.java b/src/net/minecraft/src/RecipesArmor.java deleted file mode 100644 index 5393870..0000000 --- a/src/net/minecraft/src/RecipesArmor.java +++ /dev/null @@ -1,18 +0,0 @@ -package net.minecraft.src; - -public class RecipesArmor { - private String[][] recipePatterns = new String[][]{{"XXX", "X X"}, {"X X", "XXX", "XXX"}, {"XXX", "X X", "X X"}, {"X X", "X X"}}; - private Object[][] recipeItems = new Object[][]{{Block.cloth, Block.fire, Item.ingotIron, Item.diamond, Item.ingotGold}, {Item.helmetLeather, Item.helmetChain, Item.helmetSteel, Item.helmetDiamond, Item.helmetGold}, {Item.plateLeather, Item.plateChain, Item.plateSteel, Item.plateDiamonhd, Item.plateGold}, {Item.legsLeather, Item.legsChain, Item.legsSteel, Item.legsDiamond, Item.legsGold}, {Item.bootsLeather, Item.bootsChain, Item.bootsSteel, Item.bootsDiamond, Item.bootsGold}}; - - public void addRecipes(CraftingManager var1) { - for(int var2 = 0; var2 < this.recipeItems[0].length; ++var2) { - Object var3 = this.recipeItems[0][var2]; - - for(int var4 = 0; var4 < this.recipeItems.length - 1; ++var4) { - Item var5 = (Item)this.recipeItems[var4 + 1][var2]; - var1.addRecipe(new ItemStack(var5), new Object[]{this.recipePatterns[var4], Character.valueOf('X'), var3}); - } - } - - } -} diff --git a/src/net/minecraft/src/RecipesCrafting.java b/src/net/minecraft/src/RecipesCrafting.java deleted file mode 100644 index 85015bd..0000000 --- a/src/net/minecraft/src/RecipesCrafting.java +++ /dev/null @@ -1,9 +0,0 @@ -package net.minecraft.src; - -public class RecipesCrafting { - public void addRecipes(CraftingManager var1) { - var1.addRecipe(new ItemStack(Block.chest), new Object[]{"###", "# #", "###", Character.valueOf('#'), Block.planks}); - var1.addRecipe(new ItemStack(Block.stoneOvenIdle), new Object[]{"###", "# #", "###", Character.valueOf('#'), Block.cobblestone}); - var1.addRecipe(new ItemStack(Block.workbench), new Object[]{"##", "##", Character.valueOf('#'), Block.planks}); - } -} diff --git a/src/net/minecraft/src/RecipesFood.java b/src/net/minecraft/src/RecipesFood.java deleted file mode 100644 index b4adb74..0000000 --- a/src/net/minecraft/src/RecipesFood.java +++ /dev/null @@ -1,8 +0,0 @@ -package net.minecraft.src; - -public class RecipesFood { - public void addRecipes(CraftingManager var1) { - var1.addRecipe(new ItemStack(Item.bowlSoup), new Object[]{"Y", "X", "#", Character.valueOf('X'), Block.mushroomBrown, Character.valueOf('Y'), Block.mushroomRed, Character.valueOf('#'), Item.bowlEmpty}); - var1.addRecipe(new ItemStack(Item.bowlSoup), new Object[]{"Y", "X", "#", Character.valueOf('X'), Block.mushroomRed, Character.valueOf('Y'), Block.mushroomBrown, Character.valueOf('#'), Item.bowlEmpty}); - } -} diff --git a/src/net/minecraft/src/RecipesIngots.java b/src/net/minecraft/src/RecipesIngots.java deleted file mode 100644 index 22802d6..0000000 --- a/src/net/minecraft/src/RecipesIngots.java +++ /dev/null @@ -1,15 +0,0 @@ -package net.minecraft.src; - -public class RecipesIngots { - private Object[][] recipeItems = new Object[][]{{Block.blockGold, Item.ingotGold}, {Block.blockSteel, Item.ingotIron}, {Block.blockDiamond, Item.diamond}}; - - public void addRecipes(CraftingManager var1) { - for(int var2 = 0; var2 < this.recipeItems.length; ++var2) { - Block var3 = (Block)this.recipeItems[var2][0]; - Item var4 = (Item)this.recipeItems[var2][1]; - var1.addRecipe(new ItemStack(var3), new Object[]{"###", "###", "###", Character.valueOf('#'), var4}); - var1.addRecipe(new ItemStack(var4, 9), new Object[]{"#", Character.valueOf('#'), var3}); - } - - } -} diff --git a/src/net/minecraft/src/RecipesTools.java b/src/net/minecraft/src/RecipesTools.java deleted file mode 100644 index d011907..0000000 --- a/src/net/minecraft/src/RecipesTools.java +++ /dev/null @@ -1,18 +0,0 @@ -package net.minecraft.src; - -public class RecipesTools { - private String[][] recipePatterns = new String[][]{{"XXX", " # ", " # "}, {"X", "#", "#"}, {"XX", "X#", " #"}, {"XX", " #", " #"}}; - private Object[][] recipeItems = new Object[][]{{Block.planks, Block.cobblestone, Item.ingotIron, Item.diamond, Item.ingotGold}, {Item.pickaxeWood, Item.pickaxeStone, Item.pickaxeSteel, Item.pickaxeDiamond, Item.pickaxeGold}, {Item.shovelWood, Item.shovelStone, Item.shovel, Item.shovelDiamond, Item.shovelGold}, {Item.axeWood, Item.axeStone, Item.axeSteel, Item.axeDiamond, Item.axeGold}, {Item.hoeWood, Item.hoeStone, Item.hoeSteel, Item.hoeDiamond, Item.hoeGold}}; - - public void addRecipes(CraftingManager var1) { - for(int var2 = 0; var2 < this.recipeItems[0].length; ++var2) { - Object var3 = this.recipeItems[0][var2]; - - for(int var4 = 0; var4 < this.recipeItems.length - 1; ++var4) { - Item var5 = (Item)this.recipeItems[var4 + 1][var2]; - var1.addRecipe(new ItemStack(var5), new Object[]{this.recipePatterns[var4], Character.valueOf('#'), Item.stick, Character.valueOf('X'), var3}); - } - } - - } -} diff --git a/src/net/minecraft/src/RecipesWeapons.java b/src/net/minecraft/src/RecipesWeapons.java deleted file mode 100644 index 34d76c0..0000000 --- a/src/net/minecraft/src/RecipesWeapons.java +++ /dev/null @@ -1,20 +0,0 @@ -package net.minecraft.src; - -public class RecipesWeapons { - private String[][] recipePatterns = new String[][]{{"X", "X", "#"}}; - private Object[][] recipeItems = new Object[][]{{Block.planks, Block.cobblestone, Item.ingotIron, Item.diamond, Item.ingotGold}, {Item.swordWood, Item.swordStone, Item.swordSteel, Item.swordDiamond, Item.swordGold}}; - - public void addRecipe(CraftingManager var1) { - for(int var2 = 0; var2 < this.recipeItems[0].length; ++var2) { - Object var3 = this.recipeItems[0][var2]; - - for(int var4 = 0; var4 < this.recipeItems.length - 1; ++var4) { - Item var5 = (Item)this.recipeItems[var4 + 1][var2]; - var1.addRecipe(new ItemStack(var5), new Object[]{this.recipePatterns[var4], Character.valueOf('#'), Item.stick, Character.valueOf('X'), var3}); - } - } - - var1.addRecipe(new ItemStack(Item.bow, 1), new Object[]{" #X", "# X", " #X", Character.valueOf('X'), Item.silk, Character.valueOf('#'), Item.stick}); - var1.addRecipe(new ItemStack(Item.arrow, 4), new Object[]{"X", "#", "Y", Character.valueOf('Y'), Item.feather, Character.valueOf('X'), Item.ingotIron, Character.valueOf('#'), Item.stick}); - } -} diff --git a/src/net/minecraft/src/Render.java b/src/net/minecraft/src/Render.java deleted file mode 100644 index df43848..0000000 --- a/src/net/minecraft/src/Render.java +++ /dev/null @@ -1,224 +0,0 @@ -package net.minecraft.src; - -import org.lwjgl.opengl.GL11; - -public abstract class Render { - protected RenderManager renderManager; - private ModelBase modelBase = new ModelBiped(); - private RenderBlocks renderBlocksVar = new RenderBlocks(); - protected float shadowSize = 0.0F; - protected float shadowOpaque = 1.0F; - - public abstract void doRender(Entity var1, double var2, double var4, double var6, float var8, float var9); - - protected void loadTexture(String var1) { - RenderEngine var2 = this.renderManager.renderEngine; - var2.bindTexture(var2.getTexture(var1)); - } - - protected void loadDownloadableImageTexture(String var1, String var2) { - RenderEngine var3 = this.renderManager.renderEngine; - var3.bindTexture(var3.getTextureForDownloadableImage(var1, var2)); - } - - private void renderEntityOnFire(Entity var1, double var2, double var4, double var6, float var8) { - GL11.glDisable(GL11.GL_LIGHTING); - int var9 = Block.fire.blockIndexInTexture; - int var10 = (var9 & 15) << 4; - int var11 = var9 & 240; - float var12 = (float)var10 / 256.0F; - float var13 = ((float)var10 + 15.99F) / 256.0F; - float var14 = (float)var11 / 256.0F; - float var15 = ((float)var11 + 15.99F) / 256.0F; - GL11.glPushMatrix(); - GL11.glTranslatef((float)var2, (float)var4, (float)var6); - float var16 = var1.width * 1.4F; - GL11.glScalef(var16, var16, var16); - this.loadTexture("/terrain.png"); - Tessellator var17 = Tessellator.instance; - float var18 = 1.0F; - float var19 = 0.5F; - float var20 = 0.0F; - float var21 = var1.height / var1.width; - GL11.glRotatef(-this.renderManager.playerViewY, 0.0F, 1.0F, 0.0F); - GL11.glTranslatef(0.0F, 0.0F, 0.4F + (float)((int)var21) * 0.02F); - GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); - var17.startDrawingQuads(); - - while(var21 > 0.0F) { - var17.addVertexWithUV((double)(var18 - var19), (double)(0.0F - var20), 0.0D, (double)var13, (double)var15); - var17.addVertexWithUV((double)(0.0F - var19), (double)(0.0F - var20), 0.0D, (double)var12, (double)var15); - var17.addVertexWithUV((double)(0.0F - var19), (double)(1.4F - var20), 0.0D, (double)var12, (double)var14); - var17.addVertexWithUV((double)(var18 - var19), (double)(1.4F - var20), 0.0D, (double)var13, (double)var14); - --var21; - --var20; - var18 *= 0.9F; - GL11.glTranslatef(0.0F, 0.0F, -0.04F); - } - - var17.draw(); - GL11.glPopMatrix(); - GL11.glEnable(GL11.GL_LIGHTING); - } - - private void renderShadow(Entity var1, double var2, double var4, double var6, float var8, float var9) { - GL11.glEnable(GL11.GL_BLEND); - GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); - RenderEngine var10 = this.renderManager.renderEngine; - var10.bindTexture(var10.getTexture("%%/shadow.png")); - World var11 = this.getWorldFromRenderManager(); - GL11.glDepthMask(false); - float var12 = this.shadowSize; - double var13 = var1.lastTickPosX + (var1.posX - var1.lastTickPosX) * (double)var9; - double var15 = var1.lastTickPosY + (var1.posY - var1.lastTickPosY) * (double)var9; - double var17 = var1.lastTickPosZ + (var1.posZ - var1.lastTickPosZ) * (double)var9; - int var19 = MathHelper.floor_double(var13 - (double)var12); - int var20 = MathHelper.floor_double(var13 + (double)var12); - int var21 = MathHelper.floor_double(var15 - (double)var12); - int var22 = MathHelper.floor_double(var15); - int var23 = MathHelper.floor_double(var17 - (double)var12); - int var24 = MathHelper.floor_double(var17 + (double)var12); - double var25 = var2 - var13; - double var27 = var4 - var15; - double var29 = var6 - var17; - Tessellator var31 = Tessellator.instance; - var31.startDrawingQuads(); - - for(int var32 = var19; var32 <= var20; ++var32) { - for(int var33 = var21; var33 <= var22; ++var33) { - for(int var34 = var23; var34 <= var24; ++var34) { - int var35 = var11.getBlockId(var32, var33 - 1, var34); - if(var35 > 0 && var11.getBlockLightValue(var32, var33, var34) > 3) { - this.renderShadowOnBlock(Block.blocksList[var35], var2, var4, var6, var32, var33, var34, var8, var12, var25, var27, var29); - } - } - } - } - - var31.draw(); - GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); - GL11.glDisable(GL11.GL_BLEND); - GL11.glDepthMask(true); - } - - private World getWorldFromRenderManager() { - return this.renderManager.worldObj; - } - - private void renderShadowOnBlock(Block var1, double var2, double var4, double var6, int var8, int var9, int var10, float var11, float var12, double var13, double var15, double var17) { - Tessellator var19 = Tessellator.instance; - if(var1.renderAsNormalBlock()) { - double var20 = ((double)var11 - (var4 - ((double)var9 + var15)) / 2.0D) * 0.5D * (double)this.getWorldFromRenderManager().getBrightness(var8, var9, var10); - if(var20 >= 0.0D) { - if(var20 > 1.0D) { - var20 = 1.0D; - } - - var19.setColorRGBA_F(1.0F, 1.0F, 1.0F, (float)var20); - double var22 = (double)var8 + var1.minX + var13; - double var24 = (double)var8 + var1.maxX + var13; - double var26 = (double)var9 + var1.minY + var15 + 1.0D / 64.0D; - double var28 = (double)var10 + var1.minZ + var17; - double var30 = (double)var10 + var1.maxZ + var17; - float var32 = (float)((var2 - var22) / 2.0D / (double)var12 + 0.5D); - float var33 = (float)((var2 - var24) / 2.0D / (double)var12 + 0.5D); - float var34 = (float)((var6 - var28) / 2.0D / (double)var12 + 0.5D); - float var35 = (float)((var6 - var30) / 2.0D / (double)var12 + 0.5D); - var19.addVertexWithUV(var22, var26, var28, (double)var32, (double)var34); - var19.addVertexWithUV(var22, var26, var30, (double)var32, (double)var35); - var19.addVertexWithUV(var24, var26, var30, (double)var33, (double)var35); - var19.addVertexWithUV(var24, var26, var28, (double)var33, (double)var34); - } - } - } - - public static void renderOffsetAABB(AxisAlignedBB var0, double var1, double var3, double var5) { - GL11.glDisable(GL11.GL_TEXTURE_2D); - Tessellator var7 = Tessellator.instance; - GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); - var7.startDrawingQuads(); - var7.setTranslationD(var1, var3, var5); - var7.setNormal(0.0F, 0.0F, -1.0F); - var7.addVertex(var0.minX, var0.maxY, var0.minZ); - var7.addVertex(var0.maxX, var0.maxY, var0.minZ); - var7.addVertex(var0.maxX, var0.minY, var0.minZ); - var7.addVertex(var0.minX, var0.minY, var0.minZ); - var7.setNormal(0.0F, 0.0F, 1.0F); - var7.addVertex(var0.minX, var0.minY, var0.maxZ); - var7.addVertex(var0.maxX, var0.minY, var0.maxZ); - var7.addVertex(var0.maxX, var0.maxY, var0.maxZ); - var7.addVertex(var0.minX, var0.maxY, var0.maxZ); - var7.setNormal(0.0F, -1.0F, 0.0F); - var7.addVertex(var0.minX, var0.minY, var0.minZ); - var7.addVertex(var0.maxX, var0.minY, var0.minZ); - var7.addVertex(var0.maxX, var0.minY, var0.maxZ); - var7.addVertex(var0.minX, var0.minY, var0.maxZ); - var7.setNormal(0.0F, 1.0F, 0.0F); - var7.addVertex(var0.minX, var0.maxY, var0.maxZ); - var7.addVertex(var0.maxX, var0.maxY, var0.maxZ); - var7.addVertex(var0.maxX, var0.maxY, var0.minZ); - var7.addVertex(var0.minX, var0.maxY, var0.minZ); - var7.setNormal(-1.0F, 0.0F, 0.0F); - var7.addVertex(var0.minX, var0.minY, var0.maxZ); - var7.addVertex(var0.minX, var0.maxY, var0.maxZ); - var7.addVertex(var0.minX, var0.maxY, var0.minZ); - var7.addVertex(var0.minX, var0.minY, var0.minZ); - var7.setNormal(1.0F, 0.0F, 0.0F); - var7.addVertex(var0.maxX, var0.minY, var0.minZ); - var7.addVertex(var0.maxX, var0.maxY, var0.minZ); - var7.addVertex(var0.maxX, var0.maxY, var0.maxZ); - var7.addVertex(var0.maxX, var0.minY, var0.maxZ); - var7.setTranslationD(0.0D, 0.0D, 0.0D); - var7.draw(); - GL11.glEnable(GL11.GL_TEXTURE_2D); - } - - public static void renderAABB(AxisAlignedBB var0) { - Tessellator var1 = Tessellator.instance; - var1.startDrawingQuads(); - var1.addVertex(var0.minX, var0.maxY, var0.minZ); - var1.addVertex(var0.maxX, var0.maxY, var0.minZ); - var1.addVertex(var0.maxX, var0.minY, var0.minZ); - var1.addVertex(var0.minX, var0.minY, var0.minZ); - var1.addVertex(var0.minX, var0.minY, var0.maxZ); - var1.addVertex(var0.maxX, var0.minY, var0.maxZ); - var1.addVertex(var0.maxX, var0.maxY, var0.maxZ); - var1.addVertex(var0.minX, var0.maxY, var0.maxZ); - var1.addVertex(var0.minX, var0.minY, var0.minZ); - var1.addVertex(var0.maxX, var0.minY, var0.minZ); - var1.addVertex(var0.maxX, var0.minY, var0.maxZ); - var1.addVertex(var0.minX, var0.minY, var0.maxZ); - var1.addVertex(var0.minX, var0.maxY, var0.maxZ); - var1.addVertex(var0.maxX, var0.maxY, var0.maxZ); - var1.addVertex(var0.maxX, var0.maxY, var0.minZ); - var1.addVertex(var0.minX, var0.maxY, var0.minZ); - var1.addVertex(var0.minX, var0.minY, var0.maxZ); - var1.addVertex(var0.minX, var0.maxY, var0.maxZ); - var1.addVertex(var0.minX, var0.maxY, var0.minZ); - var1.addVertex(var0.minX, var0.minY, var0.minZ); - var1.addVertex(var0.maxX, var0.minY, var0.minZ); - var1.addVertex(var0.maxX, var0.maxY, var0.minZ); - var1.addVertex(var0.maxX, var0.maxY, var0.maxZ); - var1.addVertex(var0.maxX, var0.minY, var0.maxZ); - var1.draw(); - } - - public void setRenderManager(RenderManager var1) { - this.renderManager = var1; - } - - public void doRenderShadowAndFire(Entity var1, double var2, double var4, double var6, float var8, float var9) { - if(this.renderManager.options.fancyGraphics && this.shadowSize > 0.0F) { - double var10 = this.renderManager.getDistanceToCamera(var1.posX, var1.posY, var1.posZ); - float var12 = (float)((1.0D - var10 / 256.0D) * (double)this.shadowOpaque); - if(var12 > 0.0F) { - this.renderShadow(var1, var2, var4, var6, var12, var9); - } - } - - if(var1.fire > 0) { - this.renderEntityOnFire(var1, var2, var4, var6, var9); - } - - } -} diff --git a/src/net/minecraft/src/RenderArrow.java b/src/net/minecraft/src/RenderArrow.java deleted file mode 100644 index 6a50043..0000000 --- a/src/net/minecraft/src/RenderArrow.java +++ /dev/null @@ -1,67 +0,0 @@ -package net.minecraft.src; - -import org.lwjgl.opengl.GL11; -import org.lwjgl.opengl.GL12; - -public class RenderArrow extends Render { - public void a(EntityArrow var1, double var2, double var4, double var6, float var8, float var9) { - this.loadTexture("/item/arrows.png"); - GL11.glPushMatrix(); - GL11.glTranslatef((float)var2, (float)var4, (float)var6); - GL11.glRotatef(var1.prevRotationYaw + (var1.rotationYaw - var1.prevRotationYaw) * var9 - 90.0F, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(var1.prevRotationPitch + (var1.rotationPitch - var1.prevRotationPitch) * var9, 0.0F, 0.0F, 1.0F); - Tessellator var10 = Tessellator.instance; - byte var11 = 0; - float var12 = 0.0F; - float var13 = 0.5F; - float var14 = (float)(0 + var11 * 10) / 32.0F; - float var15 = (float)(5 + var11 * 10) / 32.0F; - float var16 = 0.0F; - float var17 = 0.15625F; - float var18 = (float)(5 + var11 * 10) / 32.0F; - float var19 = (float)(10 + var11 * 10) / 32.0F; - float var20 = 0.05625F; - GL11.glEnable(GL12.GL_RESCALE_NORMAL); - float var21 = (float)var1.arrowShake - var9; - if(var21 > 0.0F) { - float var22 = -MathHelper.sin(var21 * 3.0F) * var21; - GL11.glRotatef(var22, 0.0F, 0.0F, 1.0F); - } - - GL11.glRotatef(45.0F, 1.0F, 0.0F, 0.0F); - GL11.glScalef(var20, var20, var20); - GL11.glTranslatef(-4.0F, 0.0F, 0.0F); - GL11.glNormal3f(var20, 0.0F, 0.0F); - var10.startDrawingQuads(); - var10.addVertexWithUV(-7.0D, -2.0D, -2.0D, (double)var16, (double)var18); - var10.addVertexWithUV(-7.0D, -2.0D, 2.0D, (double)var17, (double)var18); - var10.addVertexWithUV(-7.0D, 2.0D, 2.0D, (double)var17, (double)var19); - var10.addVertexWithUV(-7.0D, 2.0D, -2.0D, (double)var16, (double)var19); - var10.draw(); - GL11.glNormal3f(-var20, 0.0F, 0.0F); - var10.startDrawingQuads(); - var10.addVertexWithUV(-7.0D, 2.0D, -2.0D, (double)var16, (double)var18); - var10.addVertexWithUV(-7.0D, 2.0D, 2.0D, (double)var17, (double)var18); - var10.addVertexWithUV(-7.0D, -2.0D, 2.0D, (double)var17, (double)var19); - var10.addVertexWithUV(-7.0D, -2.0D, -2.0D, (double)var16, (double)var19); - var10.draw(); - - for(int var23 = 0; var23 < 4; ++var23) { - GL11.glRotatef(90.0F, 1.0F, 0.0F, 0.0F); - GL11.glNormal3f(0.0F, 0.0F, var20); - var10.startDrawingQuads(); - var10.addVertexWithUV(-8.0D, -2.0D, 0.0D, (double)var12, (double)var14); - var10.addVertexWithUV(8.0D, -2.0D, 0.0D, (double)var13, (double)var14); - var10.addVertexWithUV(8.0D, 2.0D, 0.0D, (double)var13, (double)var15); - var10.addVertexWithUV(-8.0D, 2.0D, 0.0D, (double)var12, (double)var15); - var10.draw(); - } - - GL11.glDisable(GL12.GL_RESCALE_NORMAL); - GL11.glPopMatrix(); - } - - public void doRender(Entity var1, double var2, double var4, double var6, float var8, float var9) { - this.a((EntityArrow)var1, var2, var4, var6, var8, var9); - } -} diff --git a/src/net/minecraft/src/RenderBlocks.java b/src/net/minecraft/src/RenderBlocks.java deleted file mode 100644 index 2c17d6d..0000000 --- a/src/net/minecraft/src/RenderBlocks.java +++ /dev/null @@ -1,1401 +0,0 @@ -package net.minecraft.src; - -import org.lwjgl.opengl.GL11; - -public class RenderBlocks { - private IBlockAccess blockAccess; - private int overrideBlockTexture = -1; - private boolean flipTexture = false; - private boolean renderAllFaces = false; - - public RenderBlocks(IBlockAccess var1) { - this.blockAccess = var1; - } - - public RenderBlocks() { - } - - public void renderBlockUsingTexture(Block var1, int var2, int var3, int var4, int var5) { - this.overrideBlockTexture = var5; - this.renderBlockByRenderType(var1, var2, var3, var4); - this.overrideBlockTexture = -1; - } - - public boolean renderBlockByRenderType(Block var1, int var2, int var3, int var4) { - int var5 = var1.getRenderType(); - var1.setBlockBoundsBasedOnState(this.blockAccess, var2, var3, var4); - return var5 == 0 ? this.renderStandardBlock(var1, var2, var3, var4) : (var5 == 4 ? this.renderBlockFluids(var1, var2, var3, var4) : (var5 == 1 ? this.renderBlockReed(var1, var2, var3, var4) : (var5 == 6 ? this.renderBlockCrops(var1, var2, var3, var4) : (var5 == 2 ? this.renderBlockTorch(var1, var2, var3, var4) : (var5 == 3 ? this.renderBlockFire(var1, var2, var3, var4) : (var5 == 5 ? this.renderBlockGears(var1, var2, var3, var4) : (var5 == 8 ? this.renderBlockLadder(var1, var2, var3, var4) : (var5 == 7 ? this.renderBlockDoor(var1, var2, var3, var4) : (var5 == 9 ? this.renderBlockMinecartTrack(var1, var2, var3, var4) : (var5 == 10 ? this.renderBlockStairs(var1, var2, var3, var4) : (var5 == 11 ? this.renderBlockFence(var1, var2, var3, var4) : false))))))))))); - } - - public boolean renderBlockTorch(Block var1, int var2, int var3, int var4) { - int var5 = this.blockAccess.getBlockMetadata(var2, var3, var4); - Tessellator var6 = Tessellator.instance; - float var7 = var1.getBlockBrightness(this.blockAccess, var2, var3, var4); - if(Block.lightValue[var1.blockID] > 0) { - var7 = 1.0F; - } - - var6.setColorOpaque_F(var7, var7, var7); - double var8 = (double)0.4F; - double var10 = 0.5D - var8; - double var12 = (double)0.2F; - if(var5 == 1) { - this.renderTorchAtAngle(var1, (double)var2 - var10, (double)var3 + var12, (double)var4, -var8, 0.0D); - } else if(var5 == 2) { - this.renderTorchAtAngle(var1, (double)var2 + var10, (double)var3 + var12, (double)var4, var8, 0.0D); - } else if(var5 == 3) { - this.renderTorchAtAngle(var1, (double)var2, (double)var3 + var12, (double)var4 - var10, 0.0D, -var8); - } else if(var5 == 4) { - this.renderTorchAtAngle(var1, (double)var2, (double)var3 + var12, (double)var4 + var10, 0.0D, var8); - } else { - this.renderTorchAtAngle(var1, (double)var2, (double)var3, (double)var4, 0.0D, 0.0D); - } - - return true; - } - - public boolean renderBlockFire(Block var1, int var2, int var3, int var4) { - Tessellator var5 = Tessellator.instance; - int var6 = var1.getBlockTextureFromSide(0); - if(this.overrideBlockTexture >= 0) { - var6 = this.overrideBlockTexture; - } - - float var7 = var1.getBlockBrightness(this.blockAccess, var2, var3, var4); - var5.setColorOpaque_F(var7, var7, var7); - int var8 = (var6 & 15) << 4; - int var9 = var6 & 240; - double var10 = (double)((float)var8 / 256.0F); - double var12 = (double)(((float)var8 + 15.99F) / 256.0F); - double var14 = (double)((float)var9 / 256.0F); - double var16 = (double)(((float)var9 + 15.99F) / 256.0F); - float var18 = 1.4F; - double var21; - double var23; - double var25; - double var27; - double var29; - double var31; - double var33; - if(!this.blockAccess.isBlockNormalCube(var2, var3 - 1, var4) && !Block.fire.canBlockCatchFire(this.blockAccess, var2, var3 - 1, var4)) { - float var37 = 0.2F; - float var20 = 1.0F / 16.0F; - if((var2 + var3 + var4 & 1) == 1) { - var10 = (double)((float)var8 / 256.0F); - var12 = (double)(((float)var8 + 15.99F) / 256.0F); - var14 = (double)((float)(var9 + 16) / 256.0F); - var16 = (double)(((float)var9 + 15.99F + 16.0F) / 256.0F); - } - - if((var2 / 2 + var3 / 2 + var4 / 2 & 1) == 1) { - var21 = var12; - var12 = var10; - var10 = var21; - } - - if(Block.fire.canBlockCatchFire(this.blockAccess, var2 - 1, var3, var4)) { - var5.addVertexWithUV((double)((float)var2 + var37), (double)((float)var3 + var18 + var20), (double)(var4 + 1), var12, var14); - var5.addVertexWithUV((double)(var2 + 0), (double)((float)(var3 + 0) + var20), (double)(var4 + 1), var12, var16); - var5.addVertexWithUV((double)(var2 + 0), (double)((float)(var3 + 0) + var20), (double)(var4 + 0), var10, var16); - var5.addVertexWithUV((double)((float)var2 + var37), (double)((float)var3 + var18 + var20), (double)(var4 + 0), var10, var14); - var5.addVertexWithUV((double)((float)var2 + var37), (double)((float)var3 + var18 + var20), (double)(var4 + 0), var10, var14); - var5.addVertexWithUV((double)(var2 + 0), (double)((float)(var3 + 0) + var20), (double)(var4 + 0), var10, var16); - var5.addVertexWithUV((double)(var2 + 0), (double)((float)(var3 + 0) + var20), (double)(var4 + 1), var12, var16); - var5.addVertexWithUV((double)((float)var2 + var37), (double)((float)var3 + var18 + var20), (double)(var4 + 1), var12, var14); - } - - if(Block.fire.canBlockCatchFire(this.blockAccess, var2 + 1, var3, var4)) { - var5.addVertexWithUV((double)((float)(var2 + 1) - var37), (double)((float)var3 + var18 + var20), (double)(var4 + 0), var10, var14); - var5.addVertexWithUV((double)(var2 + 1 - 0), (double)((float)(var3 + 0) + var20), (double)(var4 + 0), var10, var16); - var5.addVertexWithUV((double)(var2 + 1 - 0), (double)((float)(var3 + 0) + var20), (double)(var4 + 1), var12, var16); - var5.addVertexWithUV((double)((float)(var2 + 1) - var37), (double)((float)var3 + var18 + var20), (double)(var4 + 1), var12, var14); - var5.addVertexWithUV((double)((float)(var2 + 1) - var37), (double)((float)var3 + var18 + var20), (double)(var4 + 1), var12, var14); - var5.addVertexWithUV((double)(var2 + 1 - 0), (double)((float)(var3 + 0) + var20), (double)(var4 + 1), var12, var16); - var5.addVertexWithUV((double)(var2 + 1 - 0), (double)((float)(var3 + 0) + var20), (double)(var4 + 0), var10, var16); - var5.addVertexWithUV((double)((float)(var2 + 1) - var37), (double)((float)var3 + var18 + var20), (double)(var4 + 0), var10, var14); - } - - if(Block.fire.canBlockCatchFire(this.blockAccess, var2, var3, var4 - 1)) { - var5.addVertexWithUV((double)(var2 + 0), (double)((float)var3 + var18 + var20), (double)((float)var4 + var37), var12, var14); - var5.addVertexWithUV((double)(var2 + 0), (double)((float)(var3 + 0) + var20), (double)(var4 + 0), var12, var16); - var5.addVertexWithUV((double)(var2 + 1), (double)((float)(var3 + 0) + var20), (double)(var4 + 0), var10, var16); - var5.addVertexWithUV((double)(var2 + 1), (double)((float)var3 + var18 + var20), (double)((float)var4 + var37), var10, var14); - var5.addVertexWithUV((double)(var2 + 1), (double)((float)var3 + var18 + var20), (double)((float)var4 + var37), var10, var14); - var5.addVertexWithUV((double)(var2 + 1), (double)((float)(var3 + 0) + var20), (double)(var4 + 0), var10, var16); - var5.addVertexWithUV((double)(var2 + 0), (double)((float)(var3 + 0) + var20), (double)(var4 + 0), var12, var16); - var5.addVertexWithUV((double)(var2 + 0), (double)((float)var3 + var18 + var20), (double)((float)var4 + var37), var12, var14); - } - - if(Block.fire.canBlockCatchFire(this.blockAccess, var2, var3, var4 + 1)) { - var5.addVertexWithUV((double)(var2 + 1), (double)((float)var3 + var18 + var20), (double)((float)(var4 + 1) - var37), var10, var14); - var5.addVertexWithUV((double)(var2 + 1), (double)((float)(var3 + 0) + var20), (double)(var4 + 1 - 0), var10, var16); - var5.addVertexWithUV((double)(var2 + 0), (double)((float)(var3 + 0) + var20), (double)(var4 + 1 - 0), var12, var16); - var5.addVertexWithUV((double)(var2 + 0), (double)((float)var3 + var18 + var20), (double)((float)(var4 + 1) - var37), var12, var14); - var5.addVertexWithUV((double)(var2 + 0), (double)((float)var3 + var18 + var20), (double)((float)(var4 + 1) - var37), var12, var14); - var5.addVertexWithUV((double)(var2 + 0), (double)((float)(var3 + 0) + var20), (double)(var4 + 1 - 0), var12, var16); - var5.addVertexWithUV((double)(var2 + 1), (double)((float)(var3 + 0) + var20), (double)(var4 + 1 - 0), var10, var16); - var5.addVertexWithUV((double)(var2 + 1), (double)((float)var3 + var18 + var20), (double)((float)(var4 + 1) - var37), var10, var14); - } - - if(Block.fire.canBlockCatchFire(this.blockAccess, var2, var3 + 1, var4)) { - var21 = (double)var2 + 0.5D + 0.5D; - var23 = (double)var2 + 0.5D - 0.5D; - var25 = (double)var4 + 0.5D + 0.5D; - var27 = (double)var4 + 0.5D - 0.5D; - var29 = (double)var2 + 0.5D - 0.5D; - var31 = (double)var2 + 0.5D + 0.5D; - var33 = (double)var4 + 0.5D - 0.5D; - double var35 = (double)var4 + 0.5D + 0.5D; - var10 = (double)((float)var8 / 256.0F); - var12 = (double)(((float)var8 + 15.99F) / 256.0F); - var14 = (double)((float)var9 / 256.0F); - var16 = (double)(((float)var9 + 15.99F) / 256.0F); - ++var3; - var18 = -0.2F; - if((var2 + var3 + var4 & 1) == 0) { - var5.addVertexWithUV(var29, (double)((float)var3 + var18), (double)(var4 + 0), var12, var14); - var5.addVertexWithUV(var21, (double)(var3 + 0), (double)(var4 + 0), var12, var16); - var5.addVertexWithUV(var21, (double)(var3 + 0), (double)(var4 + 1), var10, var16); - var5.addVertexWithUV(var29, (double)((float)var3 + var18), (double)(var4 + 1), var10, var14); - var10 = (double)((float)var8 / 256.0F); - var12 = (double)(((float)var8 + 15.99F) / 256.0F); - var14 = (double)((float)(var9 + 16) / 256.0F); - var16 = (double)(((float)var9 + 15.99F + 16.0F) / 256.0F); - var5.addVertexWithUV(var31, (double)((float)var3 + var18), (double)(var4 + 1), var12, var14); - var5.addVertexWithUV(var23, (double)(var3 + 0), (double)(var4 + 1), var12, var16); - var5.addVertexWithUV(var23, (double)(var3 + 0), (double)(var4 + 0), var10, var16); - var5.addVertexWithUV(var31, (double)((float)var3 + var18), (double)(var4 + 0), var10, var14); - } else { - var5.addVertexWithUV((double)(var2 + 0), (double)((float)var3 + var18), var35, var12, var14); - var5.addVertexWithUV((double)(var2 + 0), (double)(var3 + 0), var27, var12, var16); - var5.addVertexWithUV((double)(var2 + 1), (double)(var3 + 0), var27, var10, var16); - var5.addVertexWithUV((double)(var2 + 1), (double)((float)var3 + var18), var35, var10, var14); - var10 = (double)((float)var8 / 256.0F); - var12 = (double)(((float)var8 + 15.99F) / 256.0F); - var14 = (double)((float)(var9 + 16) / 256.0F); - var16 = (double)(((float)var9 + 15.99F + 16.0F) / 256.0F); - var5.addVertexWithUV((double)(var2 + 1), (double)((float)var3 + var18), var33, var12, var14); - var5.addVertexWithUV((double)(var2 + 1), (double)(var3 + 0), var25, var12, var16); - var5.addVertexWithUV((double)(var2 + 0), (double)(var3 + 0), var25, var10, var16); - var5.addVertexWithUV((double)(var2 + 0), (double)((float)var3 + var18), var33, var10, var14); - } - } - } else { - double var19 = (double)var2 + 0.5D + 0.2D; - var21 = (double)var2 + 0.5D - 0.2D; - var23 = (double)var4 + 0.5D + 0.2D; - var25 = (double)var4 + 0.5D - 0.2D; - var27 = (double)var2 + 0.5D - 0.3D; - var29 = (double)var2 + 0.5D + 0.3D; - var31 = (double)var4 + 0.5D - 0.3D; - var33 = (double)var4 + 0.5D + 0.3D; - var5.addVertexWithUV(var27, (double)((float)var3 + var18), (double)(var4 + 1), var12, var14); - var5.addVertexWithUV(var19, (double)(var3 + 0), (double)(var4 + 1), var12, var16); - var5.addVertexWithUV(var19, (double)(var3 + 0), (double)(var4 + 0), var10, var16); - var5.addVertexWithUV(var27, (double)((float)var3 + var18), (double)(var4 + 0), var10, var14); - var5.addVertexWithUV(var29, (double)((float)var3 + var18), (double)(var4 + 0), var12, var14); - var5.addVertexWithUV(var21, (double)(var3 + 0), (double)(var4 + 0), var12, var16); - var5.addVertexWithUV(var21, (double)(var3 + 0), (double)(var4 + 1), var10, var16); - var5.addVertexWithUV(var29, (double)((float)var3 + var18), (double)(var4 + 1), var10, var14); - var10 = (double)((float)var8 / 256.0F); - var12 = (double)(((float)var8 + 15.99F) / 256.0F); - var14 = (double)((float)(var9 + 16) / 256.0F); - var16 = (double)(((float)var9 + 15.99F + 16.0F) / 256.0F); - var5.addVertexWithUV((double)(var2 + 1), (double)((float)var3 + var18), var33, var12, var14); - var5.addVertexWithUV((double)(var2 + 1), (double)(var3 + 0), var25, var12, var16); - var5.addVertexWithUV((double)(var2 + 0), (double)(var3 + 0), var25, var10, var16); - var5.addVertexWithUV((double)(var2 + 0), (double)((float)var3 + var18), var33, var10, var14); - var5.addVertexWithUV((double)(var2 + 0), (double)((float)var3 + var18), var31, var12, var14); - var5.addVertexWithUV((double)(var2 + 0), (double)(var3 + 0), var23, var12, var16); - var5.addVertexWithUV((double)(var2 + 1), (double)(var3 + 0), var23, var10, var16); - var5.addVertexWithUV((double)(var2 + 1), (double)((float)var3 + var18), var31, var10, var14); - var19 = (double)var2 + 0.5D - 0.5D; - var21 = (double)var2 + 0.5D + 0.5D; - var23 = (double)var4 + 0.5D - 0.5D; - var25 = (double)var4 + 0.5D + 0.5D; - var27 = (double)var2 + 0.5D - 0.4D; - var29 = (double)var2 + 0.5D + 0.4D; - var31 = (double)var4 + 0.5D - 0.4D; - var33 = (double)var4 + 0.5D + 0.4D; - var5.addVertexWithUV(var27, (double)((float)var3 + var18), (double)(var4 + 0), var10, var14); - var5.addVertexWithUV(var19, (double)(var3 + 0), (double)(var4 + 0), var10, var16); - var5.addVertexWithUV(var19, (double)(var3 + 0), (double)(var4 + 1), var12, var16); - var5.addVertexWithUV(var27, (double)((float)var3 + var18), (double)(var4 + 1), var12, var14); - var5.addVertexWithUV(var29, (double)((float)var3 + var18), (double)(var4 + 1), var10, var14); - var5.addVertexWithUV(var21, (double)(var3 + 0), (double)(var4 + 1), var10, var16); - var5.addVertexWithUV(var21, (double)(var3 + 0), (double)(var4 + 0), var12, var16); - var5.addVertexWithUV(var29, (double)((float)var3 + var18), (double)(var4 + 0), var12, var14); - var10 = (double)((float)var8 / 256.0F); - var12 = (double)(((float)var8 + 15.99F) / 256.0F); - var14 = (double)((float)var9 / 256.0F); - var16 = (double)(((float)var9 + 15.99F) / 256.0F); - var5.addVertexWithUV((double)(var2 + 0), (double)((float)var3 + var18), var33, var10, var14); - var5.addVertexWithUV((double)(var2 + 0), (double)(var3 + 0), var25, var10, var16); - var5.addVertexWithUV((double)(var2 + 1), (double)(var3 + 0), var25, var12, var16); - var5.addVertexWithUV((double)(var2 + 1), (double)((float)var3 + var18), var33, var12, var14); - var5.addVertexWithUV((double)(var2 + 1), (double)((float)var3 + var18), var31, var10, var14); - var5.addVertexWithUV((double)(var2 + 1), (double)(var3 + 0), var23, var10, var16); - var5.addVertexWithUV((double)(var2 + 0), (double)(var3 + 0), var23, var12, var16); - var5.addVertexWithUV((double)(var2 + 0), (double)((float)var3 + var18), var31, var12, var14); - } - - return true; - } - - public boolean renderBlockGears(Block var1, int var2, int var3, int var4) { - Tessellator var5 = Tessellator.instance; - int var6 = var1.getBlockTextureFromSide(0); - if(this.overrideBlockTexture >= 0) { - var6 = this.overrideBlockTexture; - } - - float var7 = var1.getBlockBrightness(this.blockAccess, var2, var3, var4); - var5.setColorOpaque_F(var7, var7, var7); - int var8 = ((var6 & 15) << 4) + 16; - int var9 = (var6 & 15) << 4; - int var10 = var6 & 240; - if((var2 + var3 + var4 & 1) == 1) { - var8 = (var6 & 15) << 4; - var9 = ((var6 & 15) << 4) + 16; - } - - double var11 = (double)((float)var8 / 256.0F); - double var13 = (double)(((float)var8 + 15.99F) / 256.0F); - double var15 = (double)((float)var10 / 256.0F); - double var17 = (double)(((float)var10 + 15.99F) / 256.0F); - double var19 = (double)((float)var9 / 256.0F); - double var21 = (double)(((float)var9 + 15.99F) / 256.0F); - double var23 = (double)((float)var10 / 256.0F); - double var25 = (double)(((float)var10 + 15.99F) / 256.0F); - float var27 = 2.0F / 16.0F; - float var28 = 0.05F; - if(this.blockAccess.isBlockNormalCube(var2 - 1, var3, var4)) { - var5.addVertexWithUV((double)((float)var2 + var28), (double)((float)(var3 + 1) + var27), (double)((float)(var4 + 1) + var27), var11, var15); - var5.addVertexWithUV((double)((float)var2 + var28), (double)((float)(var3 + 0) - var27), (double)((float)(var4 + 1) + var27), var11, var17); - var5.addVertexWithUV((double)((float)var2 + var28), (double)((float)(var3 + 0) - var27), (double)((float)(var4 + 0) - var27), var13, var17); - var5.addVertexWithUV((double)((float)var2 + var28), (double)((float)(var3 + 1) + var27), (double)((float)(var4 + 0) - var27), var13, var15); - } - - if(this.blockAccess.isBlockNormalCube(var2 + 1, var3, var4)) { - var5.addVertexWithUV((double)((float)(var2 + 1) - var28), (double)((float)(var3 + 0) - var27), (double)((float)(var4 + 1) + var27), var13, var17); - var5.addVertexWithUV((double)((float)(var2 + 1) - var28), (double)((float)(var3 + 1) + var27), (double)((float)(var4 + 1) + var27), var13, var15); - var5.addVertexWithUV((double)((float)(var2 + 1) - var28), (double)((float)(var3 + 1) + var27), (double)((float)(var4 + 0) - var27), var11, var15); - var5.addVertexWithUV((double)((float)(var2 + 1) - var28), (double)((float)(var3 + 0) - var27), (double)((float)(var4 + 0) - var27), var11, var17); - } - - if(this.blockAccess.isBlockNormalCube(var2, var3, var4 - 1)) { - var5.addVertexWithUV((double)((float)(var2 + 1) + var27), (double)((float)(var3 + 0) - var27), (double)((float)var4 + var28), var21, var25); - var5.addVertexWithUV((double)((float)(var2 + 1) + var27), (double)((float)(var3 + 1) + var27), (double)((float)var4 + var28), var21, var23); - var5.addVertexWithUV((double)((float)(var2 + 0) - var27), (double)((float)(var3 + 1) + var27), (double)((float)var4 + var28), var19, var23); - var5.addVertexWithUV((double)((float)(var2 + 0) - var27), (double)((float)(var3 + 0) - var27), (double)((float)var4 + var28), var19, var25); - } - - if(this.blockAccess.isBlockNormalCube(var2, var3, var4 + 1)) { - var5.addVertexWithUV((double)((float)(var2 + 1) + var27), (double)((float)(var3 + 1) + var27), (double)((float)(var4 + 1) - var28), var19, var23); - var5.addVertexWithUV((double)((float)(var2 + 1) + var27), (double)((float)(var3 + 0) - var27), (double)((float)(var4 + 1) - var28), var19, var25); - var5.addVertexWithUV((double)((float)(var2 + 0) - var27), (double)((float)(var3 + 0) - var27), (double)((float)(var4 + 1) - var28), var21, var25); - var5.addVertexWithUV((double)((float)(var2 + 0) - var27), (double)((float)(var3 + 1) + var27), (double)((float)(var4 + 1) - var28), var21, var23); - } - - return true; - } - - public boolean renderBlockMinecartTrack(Block var1, int var2, int var3, int var4) { - Tessellator var5 = Tessellator.instance; - int var6 = this.blockAccess.getBlockMetadata(var2, var3, var4); - int var7 = var1.getBlockTextureFromSideAndMetadata(0, var6); - if(this.overrideBlockTexture >= 0) { - var7 = this.overrideBlockTexture; - } - - float var8 = var1.getBlockBrightness(this.blockAccess, var2, var3, var4); - var5.setColorOpaque_F(var8, var8, var8); - int var9 = (var7 & 15) << 4; - int var10 = var7 & 240; - double var11 = (double)((float)var9 / 256.0F); - double var13 = (double)(((float)var9 + 15.99F) / 256.0F); - double var15 = (double)((float)var10 / 256.0F); - double var17 = (double)(((float)var10 + 15.99F) / 256.0F); - float var19 = 1.0F / 16.0F; - float var20 = (float)(var2 + 1); - float var21 = (float)(var2 + 1); - float var22 = (float)(var2 + 0); - float var23 = (float)(var2 + 0); - float var24 = (float)(var4 + 0); - float var25 = (float)(var4 + 1); - float var26 = (float)(var4 + 1); - float var27 = (float)(var4 + 0); - float var28 = (float)var3 + var19; - float var29 = (float)var3 + var19; - float var30 = (float)var3 + var19; - float var31 = (float)var3 + var19; - if(var6 != 1 && var6 != 2 && var6 != 3 && var6 != 7) { - if(var6 == 8) { - var21 = (float)(var2 + 0); - var20 = var21; - var23 = (float)(var2 + 1); - var22 = var23; - var27 = (float)(var4 + 1); - var24 = var27; - var26 = (float)(var4 + 0); - var25 = var26; - } else if(var6 == 9) { - var23 = (float)(var2 + 0); - var20 = var23; - var22 = (float)(var2 + 1); - var21 = var22; - var25 = (float)(var4 + 0); - var24 = var25; - var27 = (float)(var4 + 1); - var26 = var27; - } - } else { - var23 = (float)(var2 + 1); - var20 = var23; - var22 = (float)(var2 + 0); - var21 = var22; - var25 = (float)(var4 + 1); - var24 = var25; - var27 = (float)(var4 + 0); - var26 = var27; - } - - if(var6 != 2 && var6 != 4) { - if(var6 == 3 || var6 == 5) { - ++var29; - ++var30; - } - } else { - ++var28; - ++var31; - } - - var5.addVertexWithUV((double)var20, (double)var28, (double)var24, var13, var15); - var5.addVertexWithUV((double)var21, (double)var29, (double)var25, var13, var17); - var5.addVertexWithUV((double)var22, (double)var30, (double)var26, var11, var17); - var5.addVertexWithUV((double)var23, (double)var31, (double)var27, var11, var15); - var5.addVertexWithUV((double)var23, (double)var31, (double)var27, var11, var15); - var5.addVertexWithUV((double)var22, (double)var30, (double)var26, var11, var17); - var5.addVertexWithUV((double)var21, (double)var29, (double)var25, var13, var17); - var5.addVertexWithUV((double)var20, (double)var28, (double)var24, var13, var15); - return true; - } - - public boolean renderBlockLadder(Block var1, int var2, int var3, int var4) { - Tessellator var5 = Tessellator.instance; - int var6 = var1.getBlockTextureFromSide(0); - if(this.overrideBlockTexture >= 0) { - var6 = this.overrideBlockTexture; - } - - float var7 = var1.getBlockBrightness(this.blockAccess, var2, var3, var4); - var5.setColorOpaque_F(var7, var7, var7); - int var8 = (var6 & 15) << 4; - int var9 = var6 & 240; - double var10 = (double)((float)var8 / 256.0F); - double var12 = (double)(((float)var8 + 15.99F) / 256.0F); - double var14 = (double)((float)var9 / 256.0F); - double var16 = (double)(((float)var9 + 15.99F) / 256.0F); - int var18 = this.blockAccess.getBlockMetadata(var2, var3, var4); - float var19 = 0.0F; - float var20 = 0.05F; - if(var18 == 5) { - var5.addVertexWithUV((double)((float)var2 + var20), (double)((float)(var3 + 1) + var19), (double)((float)(var4 + 1) + var19), var10, var14); - var5.addVertexWithUV((double)((float)var2 + var20), (double)((float)(var3 + 0) - var19), (double)((float)(var4 + 1) + var19), var10, var16); - var5.addVertexWithUV((double)((float)var2 + var20), (double)((float)(var3 + 0) - var19), (double)((float)(var4 + 0) - var19), var12, var16); - var5.addVertexWithUV((double)((float)var2 + var20), (double)((float)(var3 + 1) + var19), (double)((float)(var4 + 0) - var19), var12, var14); - } - - if(var18 == 4) { - var5.addVertexWithUV((double)((float)(var2 + 1) - var20), (double)((float)(var3 + 0) - var19), (double)((float)(var4 + 1) + var19), var12, var16); - var5.addVertexWithUV((double)((float)(var2 + 1) - var20), (double)((float)(var3 + 1) + var19), (double)((float)(var4 + 1) + var19), var12, var14); - var5.addVertexWithUV((double)((float)(var2 + 1) - var20), (double)((float)(var3 + 1) + var19), (double)((float)(var4 + 0) - var19), var10, var14); - var5.addVertexWithUV((double)((float)(var2 + 1) - var20), (double)((float)(var3 + 0) - var19), (double)((float)(var4 + 0) - var19), var10, var16); - } - - if(var18 == 3) { - var5.addVertexWithUV((double)((float)(var2 + 1) + var19), (double)((float)(var3 + 0) - var19), (double)((float)var4 + var20), var12, var16); - var5.addVertexWithUV((double)((float)(var2 + 1) + var19), (double)((float)(var3 + 1) + var19), (double)((float)var4 + var20), var12, var14); - var5.addVertexWithUV((double)((float)(var2 + 0) - var19), (double)((float)(var3 + 1) + var19), (double)((float)var4 + var20), var10, var14); - var5.addVertexWithUV((double)((float)(var2 + 0) - var19), (double)((float)(var3 + 0) - var19), (double)((float)var4 + var20), var10, var16); - } - - if(var18 == 2) { - var5.addVertexWithUV((double)((float)(var2 + 1) + var19), (double)((float)(var3 + 1) + var19), (double)((float)(var4 + 1) - var20), var10, var14); - var5.addVertexWithUV((double)((float)(var2 + 1) + var19), (double)((float)(var3 + 0) - var19), (double)((float)(var4 + 1) - var20), var10, var16); - var5.addVertexWithUV((double)((float)(var2 + 0) - var19), (double)((float)(var3 + 0) - var19), (double)((float)(var4 + 1) - var20), var12, var16); - var5.addVertexWithUV((double)((float)(var2 + 0) - var19), (double)((float)(var3 + 1) + var19), (double)((float)(var4 + 1) - var20), var12, var14); - } - - return true; - } - - public boolean renderBlockReed(Block var1, int var2, int var3, int var4) { - Tessellator var5 = Tessellator.instance; - float var6 = var1.getBlockBrightness(this.blockAccess, var2, var3, var4); - var5.setColorOpaque_F(var6, var6, var6); - this.renderCrossedSquares(var1, this.blockAccess.getBlockMetadata(var2, var3, var4), (double)var2, (double)var3, (double)var4); - return true; - } - - public boolean renderBlockCrops(Block var1, int var2, int var3, int var4) { - Tessellator var5 = Tessellator.instance; - float var6 = var1.getBlockBrightness(this.blockAccess, var2, var3, var4); - var5.setColorOpaque_F(var6, var6, var6); - this.renderBlockCropsImpl(var1, this.blockAccess.getBlockMetadata(var2, var3, var4), (double)var2, (double)((float)var3 - 1.0F / 16.0F), (double)var4); - return true; - } - - public void renderTorchAtAngle(Block var1, double var2, double var4, double var6, double var8, double var10) { - Tessellator var12 = Tessellator.instance; - int var13 = var1.getBlockTextureFromSide(0); - if(this.overrideBlockTexture >= 0) { - var13 = this.overrideBlockTexture; - } - - int var14 = (var13 & 15) << 4; - int var15 = var13 & 240; - float var16 = (float)var14 / 256.0F; - float var17 = ((float)var14 + 15.99F) / 256.0F; - float var18 = (float)var15 / 256.0F; - float var19 = ((float)var15 + 15.99F) / 256.0F; - double var20 = (double)var16 + 1.75D / 64.0D; - double var22 = (double)var18 + 6.0D / 256.0D; - double var24 = (double)var16 + 9.0D / 256.0D; - double var26 = (double)var18 + 1.0D / 32.0D; - var2 += 0.5D; - var6 += 0.5D; - double var28 = var2 - 0.5D; - double var30 = var2 + 0.5D; - double var32 = var6 - 0.5D; - double var34 = var6 + 0.5D; - double var36 = 1.0D / 16.0D; - double var38 = 0.625D; - var12.addVertexWithUV(var2 + var8 * (1.0D - var38) - var36, var4 + var38, var6 + var10 * (1.0D - var38) - var36, var20, var22); - var12.addVertexWithUV(var2 + var8 * (1.0D - var38) - var36, var4 + var38, var6 + var10 * (1.0D - var38) + var36, var20, var26); - var12.addVertexWithUV(var2 + var8 * (1.0D - var38) + var36, var4 + var38, var6 + var10 * (1.0D - var38) + var36, var24, var26); - var12.addVertexWithUV(var2 + var8 * (1.0D - var38) + var36, var4 + var38, var6 + var10 * (1.0D - var38) - var36, var24, var22); - var12.addVertexWithUV(var2 - var36, var4 + 1.0D, var32, (double)var16, (double)var18); - var12.addVertexWithUV(var2 - var36 + var8, var4 + 0.0D, var32 + var10, (double)var16, (double)var19); - var12.addVertexWithUV(var2 - var36 + var8, var4 + 0.0D, var34 + var10, (double)var17, (double)var19); - var12.addVertexWithUV(var2 - var36, var4 + 1.0D, var34, (double)var17, (double)var18); - var12.addVertexWithUV(var2 + var36, var4 + 1.0D, var34, (double)var16, (double)var18); - var12.addVertexWithUV(var2 + var8 + var36, var4 + 0.0D, var34 + var10, (double)var16, (double)var19); - var12.addVertexWithUV(var2 + var8 + var36, var4 + 0.0D, var32 + var10, (double)var17, (double)var19); - var12.addVertexWithUV(var2 + var36, var4 + 1.0D, var32, (double)var17, (double)var18); - var12.addVertexWithUV(var28, var4 + 1.0D, var6 + var36, (double)var16, (double)var18); - var12.addVertexWithUV(var28 + var8, var4 + 0.0D, var6 + var36 + var10, (double)var16, (double)var19); - var12.addVertexWithUV(var30 + var8, var4 + 0.0D, var6 + var36 + var10, (double)var17, (double)var19); - var12.addVertexWithUV(var30, var4 + 1.0D, var6 + var36, (double)var17, (double)var18); - var12.addVertexWithUV(var30, var4 + 1.0D, var6 - var36, (double)var16, (double)var18); - var12.addVertexWithUV(var30 + var8, var4 + 0.0D, var6 - var36 + var10, (double)var16, (double)var19); - var12.addVertexWithUV(var28 + var8, var4 + 0.0D, var6 - var36 + var10, (double)var17, (double)var19); - var12.addVertexWithUV(var28, var4 + 1.0D, var6 - var36, (double)var17, (double)var18); - } - - public void renderCrossedSquares(Block var1, int var2, double var3, double var5, double var7) { - Tessellator var9 = Tessellator.instance; - int var10 = var1.getBlockTextureFromSideAndMetadata(0, var2); - if(this.overrideBlockTexture >= 0) { - var10 = this.overrideBlockTexture; - } - - int var11 = (var10 & 15) << 4; - int var12 = var10 & 240; - double var13 = (double)((float)var11 / 256.0F); - double var15 = (double)(((float)var11 + 15.99F) / 256.0F); - double var17 = (double)((float)var12 / 256.0F); - double var19 = (double)(((float)var12 + 15.99F) / 256.0F); - double var21 = var3 + 0.5D - (double)0.45F; - double var23 = var3 + 0.5D + (double)0.45F; - double var25 = var7 + 0.5D - (double)0.45F; - double var27 = var7 + 0.5D + (double)0.45F; - var9.addVertexWithUV(var21, var5 + 1.0D, var25, var13, var17); - var9.addVertexWithUV(var21, var5 + 0.0D, var25, var13, var19); - var9.addVertexWithUV(var23, var5 + 0.0D, var27, var15, var19); - var9.addVertexWithUV(var23, var5 + 1.0D, var27, var15, var17); - var9.addVertexWithUV(var23, var5 + 1.0D, var27, var13, var17); - var9.addVertexWithUV(var23, var5 + 0.0D, var27, var13, var19); - var9.addVertexWithUV(var21, var5 + 0.0D, var25, var15, var19); - var9.addVertexWithUV(var21, var5 + 1.0D, var25, var15, var17); - var9.addVertexWithUV(var21, var5 + 1.0D, var27, var13, var17); - var9.addVertexWithUV(var21, var5 + 0.0D, var27, var13, var19); - var9.addVertexWithUV(var23, var5 + 0.0D, var25, var15, var19); - var9.addVertexWithUV(var23, var5 + 1.0D, var25, var15, var17); - var9.addVertexWithUV(var23, var5 + 1.0D, var25, var13, var17); - var9.addVertexWithUV(var23, var5 + 0.0D, var25, var13, var19); - var9.addVertexWithUV(var21, var5 + 0.0D, var27, var15, var19); - var9.addVertexWithUV(var21, var5 + 1.0D, var27, var15, var17); - } - - public void renderBlockCropsImpl(Block var1, int var2, double var3, double var5, double var7) { - Tessellator var9 = Tessellator.instance; - int var10 = var1.getBlockTextureFromSideAndMetadata(0, var2); - if(this.overrideBlockTexture >= 0) { - var10 = this.overrideBlockTexture; - } - - int var11 = (var10 & 15) << 4; - int var12 = var10 & 240; - double var13 = (double)((float)var11 / 256.0F); - double var15 = (double)(((float)var11 + 15.99F) / 256.0F); - double var17 = (double)((float)var12 / 256.0F); - double var19 = (double)(((float)var12 + 15.99F) / 256.0F); - double var21 = var3 + 0.5D - 0.25D; - double var23 = var3 + 0.5D + 0.25D; - double var25 = var7 + 0.5D - 0.5D; - double var27 = var7 + 0.5D + 0.5D; - var9.addVertexWithUV(var21, var5 + 1.0D, var25, var13, var17); - var9.addVertexWithUV(var21, var5 + 0.0D, var25, var13, var19); - var9.addVertexWithUV(var21, var5 + 0.0D, var27, var15, var19); - var9.addVertexWithUV(var21, var5 + 1.0D, var27, var15, var17); - var9.addVertexWithUV(var21, var5 + 1.0D, var27, var13, var17); - var9.addVertexWithUV(var21, var5 + 0.0D, var27, var13, var19); - var9.addVertexWithUV(var21, var5 + 0.0D, var25, var15, var19); - var9.addVertexWithUV(var21, var5 + 1.0D, var25, var15, var17); - var9.addVertexWithUV(var23, var5 + 1.0D, var27, var13, var17); - var9.addVertexWithUV(var23, var5 + 0.0D, var27, var13, var19); - var9.addVertexWithUV(var23, var5 + 0.0D, var25, var15, var19); - var9.addVertexWithUV(var23, var5 + 1.0D, var25, var15, var17); - var9.addVertexWithUV(var23, var5 + 1.0D, var25, var13, var17); - var9.addVertexWithUV(var23, var5 + 0.0D, var25, var13, var19); - var9.addVertexWithUV(var23, var5 + 0.0D, var27, var15, var19); - var9.addVertexWithUV(var23, var5 + 1.0D, var27, var15, var17); - var21 = var3 + 0.5D - 0.5D; - var23 = var3 + 0.5D + 0.5D; - var25 = var7 + 0.5D - 0.25D; - var27 = var7 + 0.5D + 0.25D; - var9.addVertexWithUV(var21, var5 + 1.0D, var25, var13, var17); - var9.addVertexWithUV(var21, var5 + 0.0D, var25, var13, var19); - var9.addVertexWithUV(var23, var5 + 0.0D, var25, var15, var19); - var9.addVertexWithUV(var23, var5 + 1.0D, var25, var15, var17); - var9.addVertexWithUV(var23, var5 + 1.0D, var25, var13, var17); - var9.addVertexWithUV(var23, var5 + 0.0D, var25, var13, var19); - var9.addVertexWithUV(var21, var5 + 0.0D, var25, var15, var19); - var9.addVertexWithUV(var21, var5 + 1.0D, var25, var15, var17); - var9.addVertexWithUV(var23, var5 + 1.0D, var27, var13, var17); - var9.addVertexWithUV(var23, var5 + 0.0D, var27, var13, var19); - var9.addVertexWithUV(var21, var5 + 0.0D, var27, var15, var19); - var9.addVertexWithUV(var21, var5 + 1.0D, var27, var15, var17); - var9.addVertexWithUV(var21, var5 + 1.0D, var27, var13, var17); - var9.addVertexWithUV(var21, var5 + 0.0D, var27, var13, var19); - var9.addVertexWithUV(var23, var5 + 0.0D, var27, var15, var19); - var9.addVertexWithUV(var23, var5 + 1.0D, var27, var15, var17); - } - - public boolean renderBlockFluids(Block var1, int var2, int var3, int var4) { - Tessellator var5 = Tessellator.instance; - boolean var6 = var1.shouldSideBeRendered(this.blockAccess, var2, var3 + 1, var4, 1); - boolean var7 = var1.shouldSideBeRendered(this.blockAccess, var2, var3 - 1, var4, 0); - boolean[] var8 = new boolean[]{var1.shouldSideBeRendered(this.blockAccess, var2, var3, var4 - 1, 2), var1.shouldSideBeRendered(this.blockAccess, var2, var3, var4 + 1, 3), var1.shouldSideBeRendered(this.blockAccess, var2 - 1, var3, var4, 4), var1.shouldSideBeRendered(this.blockAccess, var2 + 1, var3, var4, 5)}; - if(!var6 && !var7 && !var8[0] && !var8[1] && !var8[2] && !var8[3]) { - return false; - } else { - boolean var9 = false; - float var10 = 0.5F; - float var11 = 1.0F; - float var12 = 0.8F; - float var13 = 0.6F; - double var14 = 0.0D; - double var16 = 1.0D; - Material var18 = var1.blockMaterial; - int var19 = this.blockAccess.getBlockMetadata(var2, var3, var4); - float var20 = this.getFluidHeight(var2, var3, var4, var18); - float var21 = this.getFluidHeight(var2, var3, var4 + 1, var18); - float var22 = this.getFluidHeight(var2 + 1, var3, var4 + 1, var18); - float var23 = this.getFluidHeight(var2 + 1, var3, var4, var18); - int var24; - int var27; - float var32; - float var33; - float var34; - if(this.renderAllFaces || var6) { - var9 = true; - var24 = var1.getBlockTextureFromSideAndMetadata(1, var19); - float var25 = (float)BlockFluid.getFlowDirection(this.blockAccess, var2, var3, var4, var18); - if(var25 > -999.0F) { - var24 = var1.getBlockTextureFromSideAndMetadata(2, var19); - } - - int var26 = (var24 & 15) << 4; - var27 = var24 & 240; - double var28 = ((double)var26 + 8.0D) / 256.0D; - double var30 = ((double)var27 + 8.0D) / 256.0D; - if(var25 < -999.0F) { - var25 = 0.0F; - } else { - var28 = (double)((float)(var26 + 16) / 256.0F); - var30 = (double)((float)(var27 + 16) / 256.0F); - } - - var32 = MathHelper.sin(var25) * 8.0F / 256.0F; - var33 = MathHelper.cos(var25) * 8.0F / 256.0F; - var34 = var1.getBlockBrightness(this.blockAccess, var2, var3, var4); - var5.setColorOpaque_F(var11 * var34, var11 * var34, var11 * var34); - var5.addVertexWithUV((double)(var2 + 0), (double)((float)var3 + var20), (double)(var4 + 0), var28 - (double)var33 - (double)var32, var30 - (double)var33 + (double)var32); - var5.addVertexWithUV((double)(var2 + 0), (double)((float)var3 + var21), (double)(var4 + 1), var28 - (double)var33 + (double)var32, var30 + (double)var33 + (double)var32); - var5.addVertexWithUV((double)(var2 + 1), (double)((float)var3 + var22), (double)(var4 + 1), var28 + (double)var33 + (double)var32, var30 + (double)var33 - (double)var32); - var5.addVertexWithUV((double)(var2 + 1), (double)((float)var3 + var23), (double)(var4 + 0), var28 + (double)var33 - (double)var32, var30 - (double)var33 - (double)var32); - } - - if(this.renderAllFaces || var7) { - float var48 = var1.getBlockBrightness(this.blockAccess, var2, var3 - 1, var4); - var5.setColorOpaque_F(var10 * var48, var10 * var48, var10 * var48); - this.renderBottomFace(var1, (double)var2, (double)var3, (double)var4, var1.getBlockTextureFromSide(0)); - var9 = true; - } - - for(var24 = 0; var24 < 4; ++var24) { - int var49 = var2; - var27 = var4; - if(var24 == 0) { - var27 = var4 - 1; - } - - if(var24 == 1) { - ++var27; - } - - if(var24 == 2) { - var49 = var2 - 1; - } - - if(var24 == 3) { - ++var49; - } - - int var50 = var1.getBlockTextureFromSideAndMetadata(var24 + 2, var19); - int var29 = (var50 & 15) << 4; - int var51 = var50 & 240; - if(this.renderAllFaces || var8[var24]) { - float var31; - float var35; - float var36; - if(var24 == 0) { - var31 = var20; - var32 = var23; - var33 = (float)var2; - var35 = (float)(var2 + 1); - var34 = (float)var4; - var36 = (float)var4; - } else if(var24 == 1) { - var31 = var22; - var32 = var21; - var33 = (float)(var2 + 1); - var35 = (float)var2; - var34 = (float)(var4 + 1); - var36 = (float)(var4 + 1); - } else if(var24 == 2) { - var31 = var21; - var32 = var20; - var33 = (float)var2; - var35 = (float)var2; - var34 = (float)(var4 + 1); - var36 = (float)var4; - } else { - var31 = var23; - var32 = var22; - var33 = (float)(var2 + 1); - var35 = (float)(var2 + 1); - var34 = (float)var4; - var36 = (float)(var4 + 1); - } - - var9 = true; - double var37 = (double)((float)(var29 + 0) / 256.0F); - double var39 = ((double)(var29 + 16) - 0.01D) / 256.0D; - double var41 = (double)(((float)var51 + (1.0F - var31) * 16.0F) / 256.0F); - double var43 = (double)(((float)var51 + (1.0F - var32) * 16.0F) / 256.0F); - double var45 = ((double)(var51 + 16) - 0.01D) / 256.0D; - float var47 = var1.getBlockBrightness(this.blockAccess, var49, var3, var27); - if(var24 < 2) { - var47 *= var12; - } else { - var47 *= var13; - } - - var5.setColorOpaque_F(var11 * var47, var11 * var47, var11 * var47); - var5.addVertexWithUV((double)var33, (double)((float)var3 + var31), (double)var34, var37, var41); - var5.addVertexWithUV((double)var35, (double)((float)var3 + var32), (double)var36, var39, var43); - var5.addVertexWithUV((double)var35, (double)(var3 + 0), (double)var36, var39, var45); - var5.addVertexWithUV((double)var33, (double)(var3 + 0), (double)var34, var37, var45); - } - } - - var1.minY = var14; - var1.maxY = var16; - return var9; - } - } - - private float getFluidHeight(int var1, int var2, int var3, Material var4) { - int var5 = 0; - float var6 = 0.0F; - - for(int var7 = 0; var7 < 4; ++var7) { - int var8 = var1 - (var7 & 1); - int var10 = var3 - (var7 >> 1 & 1); - if(this.blockAccess.getBlockMaterial(var8, var2 + 1, var10) == var4) { - return 1.0F; - } - - Material var11 = this.blockAccess.getBlockMaterial(var8, var2, var10); - if(var11 != var4) { - if(!var11.isSolid()) { - ++var6; - ++var5; - } - } else { - int var12 = this.blockAccess.getBlockMetadata(var8, var2, var10); - if(var12 >= 8 || var12 == 0) { - var6 += BlockFluid.getPercentAir(var12) * 10.0F; - var5 += 10; - } - - var6 += BlockFluid.getPercentAir(var12); - ++var5; - } - } - - return 1.0F - var6 / (float)var5; - } - - public void renderBlockFallingSand(Block var1, World var2, int var3, int var4, int var5) { - float var6 = 0.5F; - float var7 = 1.0F; - float var8 = 0.8F; - float var9 = 0.6F; - Tessellator var10 = Tessellator.instance; - var10.startDrawingQuads(); - float var11 = var1.getBlockBrightness(var2, var3, var4, var5); - float var12 = var1.getBlockBrightness(var2, var3, var4 - 1, var5); - if(var12 < var11) { - var12 = var11; - } - - var10.setColorOpaque_F(var6 * var12, var6 * var12, var6 * var12); - this.renderBottomFace(var1, -0.5D, -0.5D, -0.5D, var1.getBlockTextureFromSide(0)); - var12 = var1.getBlockBrightness(var2, var3, var4 + 1, var5); - if(var12 < var11) { - var12 = var11; - } - - var10.setColorOpaque_F(var7 * var12, var7 * var12, var7 * var12); - this.renderTopFace(var1, -0.5D, -0.5D, -0.5D, var1.getBlockTextureFromSide(1)); - var12 = var1.getBlockBrightness(var2, var3, var4, var5 - 1); - if(var12 < var11) { - var12 = var11; - } - - var10.setColorOpaque_F(var8 * var12, var8 * var12, var8 * var12); - this.renderEastFace(var1, -0.5D, -0.5D, -0.5D, var1.getBlockTextureFromSide(2)); - var12 = var1.getBlockBrightness(var2, var3, var4, var5 + 1); - if(var12 < var11) { - var12 = var11; - } - - var10.setColorOpaque_F(var8 * var12, var8 * var12, var8 * var12); - this.renderWestFace(var1, -0.5D, -0.5D, -0.5D, var1.getBlockTextureFromSide(3)); - var12 = var1.getBlockBrightness(var2, var3 - 1, var4, var5); - if(var12 < var11) { - var12 = var11; - } - - var10.setColorOpaque_F(var9 * var12, var9 * var12, var9 * var12); - this.renderNorthFace(var1, -0.5D, -0.5D, -0.5D, var1.getBlockTextureFromSide(4)); - var12 = var1.getBlockBrightness(var2, var3 + 1, var4, var5); - if(var12 < var11) { - var12 = var11; - } - - var10.setColorOpaque_F(var9 * var12, var9 * var12, var9 * var12); - this.renderSouthFace(var1, -0.5D, -0.5D, -0.5D, var1.getBlockTextureFromSide(5)); - var10.draw(); - } - - public boolean renderStandardBlock(Block var1, int var2, int var3, int var4) { - int var5 = var1.getRenderColor(this.blockAccess, var2, var3, var4); - float var6 = (float)(var5 >> 16 & 255) / 255.0F; - float var7 = (float)(var5 >> 8 & 255) / 255.0F; - float var8 = (float)(var5 & 255) / 255.0F; - return this.renderStandardBlockWithColorMultiplier(var1, var2, var3, var4, var6, var7, var8); - } - - public boolean renderStandardBlockWithColorMultiplier(Block var1, int var2, int var3, int var4, float var5, float var6, float var7) { - Tessellator var8 = Tessellator.instance; - boolean var9 = false; - float var10 = 0.5F; - float var11 = 1.0F; - float var12 = 0.8F; - float var13 = 0.6F; - float var14 = var10 * var5; - float var15 = var11 * var5; - float var16 = var12 * var5; - float var17 = var13 * var5; - float var18 = var10 * var6; - float var19 = var11 * var6; - float var20 = var12 * var6; - float var21 = var13 * var6; - float var22 = var10 * var7; - float var23 = var11 * var7; - float var24 = var12 * var7; - float var25 = var13 * var7; - float var26 = var1.getBlockBrightness(this.blockAccess, var2, var3, var4); - float var27; - if(this.renderAllFaces || var1.shouldSideBeRendered(this.blockAccess, var2, var3 - 1, var4, 0)) { - var27 = var1.getBlockBrightness(this.blockAccess, var2, var3 - 1, var4); - if(Block.lightValue[var1.blockID] > 0) { - var27 = 1.0F; - } - - var8.setColorOpaque_F(var14 * var27, var18 * var27, var22 * var27); - this.renderBottomFace(var1, (double)var2, (double)var3, (double)var4, var1.getBlockTextureGeneric(this.blockAccess, var2, var3, var4, 0)); - var9 = true; - } - - if(this.renderAllFaces || var1.shouldSideBeRendered(this.blockAccess, var2, var3 + 1, var4, 1)) { - var27 = var1.getBlockBrightness(this.blockAccess, var2, var3 + 1, var4); - if(var1.maxY != 1.0D && !var1.blockMaterial.getIsLiquid()) { - var27 = var26; - } - - if(Block.lightValue[var1.blockID] > 0) { - var27 = 1.0F; - } - - var8.setColorOpaque_F(var15 * var27, var19 * var27, var23 * var27); - this.renderTopFace(var1, (double)var2, (double)var3, (double)var4, var1.getBlockTextureGeneric(this.blockAccess, var2, var3, var4, 1)); - var9 = true; - } - - if(this.renderAllFaces || var1.shouldSideBeRendered(this.blockAccess, var2, var3, var4 - 1, 2)) { - var27 = var1.getBlockBrightness(this.blockAccess, var2, var3, var4 - 1); - if(var1.minZ > 0.0D) { - var27 = var26; - } - - if(Block.lightValue[var1.blockID] > 0) { - var27 = 1.0F; - } - - var8.setColorOpaque_F(var16 * var27, var20 * var27, var24 * var27); - this.renderEastFace(var1, (double)var2, (double)var3, (double)var4, var1.getBlockTextureGeneric(this.blockAccess, var2, var3, var4, 2)); - var9 = true; - } - - if(this.renderAllFaces || var1.shouldSideBeRendered(this.blockAccess, var2, var3, var4 + 1, 3)) { - var27 = var1.getBlockBrightness(this.blockAccess, var2, var3, var4 + 1); - if(var1.maxZ < 1.0D) { - var27 = var26; - } - - if(Block.lightValue[var1.blockID] > 0) { - var27 = 1.0F; - } - - var8.setColorOpaque_F(var16 * var27, var20 * var27, var24 * var27); - this.renderWestFace(var1, (double)var2, (double)var3, (double)var4, var1.getBlockTextureGeneric(this.blockAccess, var2, var3, var4, 3)); - var9 = true; - } - - if(this.renderAllFaces || var1.shouldSideBeRendered(this.blockAccess, var2 - 1, var3, var4, 4)) { - var27 = var1.getBlockBrightness(this.blockAccess, var2 - 1, var3, var4); - if(var1.minX > 0.0D) { - var27 = var26; - } - - if(Block.lightValue[var1.blockID] > 0) { - var27 = 1.0F; - } - - var8.setColorOpaque_F(var17 * var27, var21 * var27, var25 * var27); - this.renderNorthFace(var1, (double)var2, (double)var3, (double)var4, var1.getBlockTextureGeneric(this.blockAccess, var2, var3, var4, 4)); - var9 = true; - } - - if(this.renderAllFaces || var1.shouldSideBeRendered(this.blockAccess, var2 + 1, var3, var4, 5)) { - var27 = var1.getBlockBrightness(this.blockAccess, var2 + 1, var3, var4); - if(var1.maxX < 1.0D) { - var27 = var26; - } - - if(Block.lightValue[var1.blockID] > 0) { - var27 = 1.0F; - } - - var8.setColorOpaque_F(var17 * var27, var21 * var27, var25 * var27); - this.renderSouthFace(var1, (double)var2, (double)var3, (double)var4, var1.getBlockTextureGeneric(this.blockAccess, var2, var3, var4, 5)); - var9 = true; - } - - return var9; - } - - public boolean renderBlockFence(Block var1, int var2, int var3, int var4) { - boolean var5 = false; - float var6 = 6.0F / 16.0F; - float var7 = 10.0F / 16.0F; - var1.setBlockBounds(var6, 0.0F, var6, var7, 1.0F, var7); - this.renderStandardBlock(var1, var2, var3, var4); - boolean var8 = false; - boolean var9 = false; - if(this.blockAccess.getBlockId(var2 - 1, var3, var4) == var1.blockID || this.blockAccess.getBlockId(var2 + 1, var3, var4) == var1.blockID) { - var8 = true; - } - - if(this.blockAccess.getBlockId(var2, var3, var4 - 1) == var1.blockID || this.blockAccess.getBlockId(var2, var3, var4 + 1) == var1.blockID) { - var9 = true; - } - - if(!var8 && !var9) { - var8 = true; - } - - var6 = 7.0F / 16.0F; - var7 = 9.0F / 16.0F; - float var10 = 12.0F / 16.0F; - float var11 = 15.0F / 16.0F; - if(var8) { - var1.setBlockBounds(0.0F, var10, var6, 1.0F, var11, var7); - this.renderStandardBlock(var1, var2, var3, var4); - } - - if(var9) { - var1.setBlockBounds(var6, var10, 0.0F, var7, var11, 1.0F); - this.renderStandardBlock(var1, var2, var3, var4); - } - - var10 = 6.0F / 16.0F; - var11 = 9.0F / 16.0F; - if(var8) { - var1.setBlockBounds(0.0F, var10, var6, 1.0F, var11, var7); - this.renderStandardBlock(var1, var2, var3, var4); - } - - if(var9) { - var1.setBlockBounds(var6, var10, 0.0F, var7, var11, 1.0F); - this.renderStandardBlock(var1, var2, var3, var4); - } - - var1.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F); - return var5; - } - - public boolean renderBlockStairs(Block var1, int var2, int var3, int var4) { - boolean var5 = false; - int var6 = this.blockAccess.getBlockMetadata(var2, var3, var4); - if(var6 == 0) { - var1.setBlockBounds(0.0F, 0.0F, 0.0F, 0.5F, 0.5F, 1.0F); - this.renderStandardBlock(var1, var2, var3, var4); - var1.setBlockBounds(0.5F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F); - this.renderStandardBlock(var1, var2, var3, var4); - } else if(var6 == 1) { - var1.setBlockBounds(0.0F, 0.0F, 0.0F, 0.5F, 1.0F, 1.0F); - this.renderStandardBlock(var1, var2, var3, var4); - var1.setBlockBounds(0.5F, 0.0F, 0.0F, 1.0F, 0.5F, 1.0F); - this.renderStandardBlock(var1, var2, var3, var4); - } else if(var6 == 2) { - var1.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 0.5F, 0.5F); - this.renderStandardBlock(var1, var2, var3, var4); - var1.setBlockBounds(0.0F, 0.0F, 0.5F, 1.0F, 1.0F, 1.0F); - this.renderStandardBlock(var1, var2, var3, var4); - } else if(var6 == 3) { - var1.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 0.5F); - this.renderStandardBlock(var1, var2, var3, var4); - var1.setBlockBounds(0.0F, 0.0F, 0.5F, 1.0F, 0.5F, 1.0F); - this.renderStandardBlock(var1, var2, var3, var4); - } - - var1.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F); - return var5; - } - - public boolean renderBlockDoor(Block var1, int var2, int var3, int var4) { - Tessellator var5 = Tessellator.instance; - BlockDoor var6 = (BlockDoor)var1; - boolean var7 = false; - float var8 = 0.5F; - float var9 = 1.0F; - float var10 = 0.8F; - float var11 = 0.6F; - float var12 = var1.getBlockBrightness(this.blockAccess, var2, var3, var4); - float var13 = var1.getBlockBrightness(this.blockAccess, var2, var3 - 1, var4); - if(var6.minY > 0.0D) { - var13 = var12; - } - - if(Block.lightValue[var1.blockID] > 0) { - var13 = 1.0F; - } - - var5.setColorOpaque_F(var8 * var13, var8 * var13, var8 * var13); - this.renderBottomFace(var1, (double)var2, (double)var3, (double)var4, var1.getBlockTextureGeneric(this.blockAccess, var2, var3, var4, 0)); - var7 = true; - var13 = var1.getBlockBrightness(this.blockAccess, var2, var3 + 1, var4); - if(var6.maxY < 1.0D) { - var13 = var12; - } - - if(Block.lightValue[var1.blockID] > 0) { - var13 = 1.0F; - } - - var5.setColorOpaque_F(var9 * var13, var9 * var13, var9 * var13); - this.renderTopFace(var1, (double)var2, (double)var3, (double)var4, var1.getBlockTextureGeneric(this.blockAccess, var2, var3, var4, 1)); - var7 = true; - var13 = var1.getBlockBrightness(this.blockAccess, var2, var3, var4 - 1); - if(var6.minZ > 0.0D) { - var13 = var12; - } - - if(Block.lightValue[var1.blockID] > 0) { - var13 = 1.0F; - } - - var5.setColorOpaque_F(var10 * var13, var10 * var13, var10 * var13); - int var14 = var1.getBlockTextureGeneric(this.blockAccess, var2, var3, var4, 2); - if(var14 < 0) { - this.flipTexture = true; - var14 = -var14; - } - - this.renderEastFace(var1, (double)var2, (double)var3, (double)var4, var14); - var7 = true; - this.flipTexture = false; - var13 = var1.getBlockBrightness(this.blockAccess, var2, var3, var4 + 1); - if(var6.maxZ < 1.0D) { - var13 = var12; - } - - if(Block.lightValue[var1.blockID] > 0) { - var13 = 1.0F; - } - - var5.setColorOpaque_F(var10 * var13, var10 * var13, var10 * var13); - var14 = var1.getBlockTextureGeneric(this.blockAccess, var2, var3, var4, 3); - if(var14 < 0) { - this.flipTexture = true; - var14 = -var14; - } - - this.renderWestFace(var1, (double)var2, (double)var3, (double)var4, var14); - var7 = true; - this.flipTexture = false; - var13 = var1.getBlockBrightness(this.blockAccess, var2 - 1, var3, var4); - if(var6.minX > 0.0D) { - var13 = var12; - } - - if(Block.lightValue[var1.blockID] > 0) { - var13 = 1.0F; - } - - var5.setColorOpaque_F(var11 * var13, var11 * var13, var11 * var13); - var14 = var1.getBlockTextureGeneric(this.blockAccess, var2, var3, var4, 4); - if(var14 < 0) { - this.flipTexture = true; - var14 = -var14; - } - - this.renderNorthFace(var1, (double)var2, (double)var3, (double)var4, var14); - var7 = true; - this.flipTexture = false; - var13 = var1.getBlockBrightness(this.blockAccess, var2 + 1, var3, var4); - if(var6.maxX < 1.0D) { - var13 = var12; - } - - if(Block.lightValue[var1.blockID] > 0) { - var13 = 1.0F; - } - - var5.setColorOpaque_F(var11 * var13, var11 * var13, var11 * var13); - var14 = var1.getBlockTextureGeneric(this.blockAccess, var2, var3, var4, 5); - if(var14 < 0) { - this.flipTexture = true; - var14 = -var14; - } - - this.renderSouthFace(var1, (double)var2, (double)var3, (double)var4, var14); - var7 = true; - this.flipTexture = false; - return var7; - } - - public void renderBottomFace(Block var1, double var2, double var4, double var6, int var8) { - Tessellator var9 = Tessellator.instance; - if(this.overrideBlockTexture >= 0) { - var8 = this.overrideBlockTexture; - } - - int var10 = (var8 & 15) << 4; - int var11 = var8 & 240; - double var12 = ((double)var10 + var1.minX * 16.0D) / 256.0D; - double var14 = ((double)var10 + var1.maxX * 16.0D - 0.01D) / 256.0D; - double var16 = ((double)var11 + var1.minZ * 16.0D) / 256.0D; - double var18 = ((double)var11 + var1.maxZ * 16.0D - 0.01D) / 256.0D; - if(var1.minX < 0.0D || var1.maxX > 1.0D) { - var12 = (double)(((float)var10 + 0.0F) / 256.0F); - var14 = (double)(((float)var10 + 15.99F) / 256.0F); - } - - if(var1.minZ < 0.0D || var1.maxZ > 1.0D) { - var16 = (double)(((float)var11 + 0.0F) / 256.0F); - var18 = (double)(((float)var11 + 15.99F) / 256.0F); - } - - double var20 = var2 + var1.minX; - double var22 = var2 + var1.maxX; - double var24 = var4 + var1.minY; - double var26 = var6 + var1.minZ; - double var28 = var6 + var1.maxZ; - var9.addVertexWithUV(var20, var24, var28, var12, var18); - var9.addVertexWithUV(var20, var24, var26, var12, var16); - var9.addVertexWithUV(var22, var24, var26, var14, var16); - var9.addVertexWithUV(var22, var24, var28, var14, var18); - } - - public void renderTopFace(Block var1, double var2, double var4, double var6, int var8) { - Tessellator var9 = Tessellator.instance; - if(this.overrideBlockTexture >= 0) { - var8 = this.overrideBlockTexture; - } - - int var10 = (var8 & 15) << 4; - int var11 = var8 & 240; - double var12 = ((double)var10 + var1.minX * 16.0D) / 256.0D; - double var14 = ((double)var10 + var1.maxX * 16.0D - 0.01D) / 256.0D; - double var16 = ((double)var11 + var1.minZ * 16.0D) / 256.0D; - double var18 = ((double)var11 + var1.maxZ * 16.0D - 0.01D) / 256.0D; - if(var1.minX < 0.0D || var1.maxX > 1.0D) { - var12 = (double)(((float)var10 + 0.0F) / 256.0F); - var14 = (double)(((float)var10 + 15.99F) / 256.0F); - } - - if(var1.minZ < 0.0D || var1.maxZ > 1.0D) { - var16 = (double)(((float)var11 + 0.0F) / 256.0F); - var18 = (double)(((float)var11 + 15.99F) / 256.0F); - } - - double var20 = var2 + var1.minX; - double var22 = var2 + var1.maxX; - double var24 = var4 + var1.maxY; - double var26 = var6 + var1.minZ; - double var28 = var6 + var1.maxZ; - var9.addVertexWithUV(var22, var24, var28, var14, var18); - var9.addVertexWithUV(var22, var24, var26, var14, var16); - var9.addVertexWithUV(var20, var24, var26, var12, var16); - var9.addVertexWithUV(var20, var24, var28, var12, var18); - } - - public void renderEastFace(Block var1, double var2, double var4, double var6, int var8) { - Tessellator var9 = Tessellator.instance; - if(this.overrideBlockTexture >= 0) { - var8 = this.overrideBlockTexture; - } - - int var10 = (var8 & 15) << 4; - int var11 = var8 & 240; - double var12 = ((double)var10 + var1.minX * 16.0D) / 256.0D; - double var14 = ((double)var10 + var1.maxX * 16.0D - 0.01D) / 256.0D; - double var16 = ((double)var11 + var1.minY * 16.0D) / 256.0D; - double var18 = ((double)var11 + var1.maxY * 16.0D - 0.01D) / 256.0D; - double var20; - if(this.flipTexture) { - var20 = var12; - var12 = var14; - var14 = var20; - } - - if(var1.minX < 0.0D || var1.maxX > 1.0D) { - var12 = (double)(((float)var10 + 0.0F) / 256.0F); - var14 = (double)(((float)var10 + 15.99F) / 256.0F); - } - - if(var1.minY < 0.0D || var1.maxY > 1.0D) { - var16 = (double)(((float)var11 + 0.0F) / 256.0F); - var18 = (double)(((float)var11 + 15.99F) / 256.0F); - } - - var20 = var2 + var1.minX; - double var22 = var2 + var1.maxX; - double var24 = var4 + var1.minY; - double var26 = var4 + var1.maxY; - double var28 = var6 + var1.minZ; - var9.addVertexWithUV(var20, var26, var28, var14, var16); - var9.addVertexWithUV(var22, var26, var28, var12, var16); - var9.addVertexWithUV(var22, var24, var28, var12, var18); - var9.addVertexWithUV(var20, var24, var28, var14, var18); - } - - public void renderWestFace(Block var1, double var2, double var4, double var6, int var8) { - Tessellator var9 = Tessellator.instance; - if(this.overrideBlockTexture >= 0) { - var8 = this.overrideBlockTexture; - } - - int var10 = (var8 & 15) << 4; - int var11 = var8 & 240; - double var12 = ((double)var10 + var1.minX * 16.0D) / 256.0D; - double var14 = ((double)var10 + var1.maxX * 16.0D - 0.01D) / 256.0D; - double var16 = ((double)var11 + var1.minY * 16.0D) / 256.0D; - double var18 = ((double)var11 + var1.maxY * 16.0D - 0.01D) / 256.0D; - double var20; - if(this.flipTexture) { - var20 = var12; - var12 = var14; - var14 = var20; - } - - if(var1.minX < 0.0D || var1.maxX > 1.0D) { - var12 = (double)(((float)var10 + 0.0F) / 256.0F); - var14 = (double)(((float)var10 + 15.99F) / 256.0F); - } - - if(var1.minY < 0.0D || var1.maxY > 1.0D) { - var16 = (double)(((float)var11 + 0.0F) / 256.0F); - var18 = (double)(((float)var11 + 15.99F) / 256.0F); - } - - var20 = var2 + var1.minX; - double var22 = var2 + var1.maxX; - double var24 = var4 + var1.minY; - double var26 = var4 + var1.maxY; - double var28 = var6 + var1.maxZ; - var9.addVertexWithUV(var20, var26, var28, var12, var16); - var9.addVertexWithUV(var20, var24, var28, var12, var18); - var9.addVertexWithUV(var22, var24, var28, var14, var18); - var9.addVertexWithUV(var22, var26, var28, var14, var16); - } - - public void renderNorthFace(Block var1, double var2, double var4, double var6, int var8) { - Tessellator var9 = Tessellator.instance; - if(this.overrideBlockTexture >= 0) { - var8 = this.overrideBlockTexture; - } - - int var10 = (var8 & 15) << 4; - int var11 = var8 & 240; - double var12 = ((double)var10 + var1.minZ * 16.0D) / 256.0D; - double var14 = ((double)var10 + var1.maxZ * 16.0D - 0.01D) / 256.0D; - double var16 = ((double)var11 + var1.minY * 16.0D) / 256.0D; - double var18 = ((double)var11 + var1.maxY * 16.0D - 0.01D) / 256.0D; - double var20; - if(this.flipTexture) { - var20 = var12; - var12 = var14; - var14 = var20; - } - - if(var1.minZ < 0.0D || var1.maxZ > 1.0D) { - var12 = (double)(((float)var10 + 0.0F) / 256.0F); - var14 = (double)(((float)var10 + 15.99F) / 256.0F); - } - - if(var1.minY < 0.0D || var1.maxY > 1.0D) { - var16 = (double)(((float)var11 + 0.0F) / 256.0F); - var18 = (double)(((float)var11 + 15.99F) / 256.0F); - } - - var20 = var2 + var1.minX; - double var22 = var4 + var1.minY; - double var24 = var4 + var1.maxY; - double var26 = var6 + var1.minZ; - double var28 = var6 + var1.maxZ; - var9.addVertexWithUV(var20, var24, var28, var14, var16); - var9.addVertexWithUV(var20, var24, var26, var12, var16); - var9.addVertexWithUV(var20, var22, var26, var12, var18); - var9.addVertexWithUV(var20, var22, var28, var14, var18); - } - - public void renderSouthFace(Block var1, double var2, double var4, double var6, int var8) { - Tessellator var9 = Tessellator.instance; - if(this.overrideBlockTexture >= 0) { - var8 = this.overrideBlockTexture; - } - - int var10 = (var8 & 15) << 4; - int var11 = var8 & 240; - double var12 = ((double)var10 + var1.minZ * 16.0D) / 256.0D; - double var14 = ((double)var10 + var1.maxZ * 16.0D - 0.01D) / 256.0D; - double var16 = ((double)var11 + var1.minY * 16.0D) / 256.0D; - double var18 = ((double)var11 + var1.maxY * 16.0D - 0.01D) / 256.0D; - double var20; - if(this.flipTexture) { - var20 = var12; - var12 = var14; - var14 = var20; - } - - if(var1.minZ < 0.0D || var1.maxZ > 1.0D) { - var12 = (double)(((float)var10 + 0.0F) / 256.0F); - var14 = (double)(((float)var10 + 15.99F) / 256.0F); - } - - if(var1.minY < 0.0D || var1.maxY > 1.0D) { - var16 = (double)(((float)var11 + 0.0F) / 256.0F); - var18 = (double)(((float)var11 + 15.99F) / 256.0F); - } - - var20 = var2 + var1.maxX; - double var22 = var4 + var1.minY; - double var24 = var4 + var1.maxY; - double var26 = var6 + var1.minZ; - double var28 = var6 + var1.maxZ; - var9.addVertexWithUV(var20, var22, var28, var12, var18); - var9.addVertexWithUV(var20, var22, var26, var14, var18); - var9.addVertexWithUV(var20, var24, var26, var14, var16); - var9.addVertexWithUV(var20, var24, var28, var12, var16); - } - - public void renderBlockOnInventory(Block var1) { - byte var2 = -1; - Tessellator var3 = Tessellator.instance; - int var4 = var1.getRenderType(); - if(var4 == 0) { - GL11.glTranslatef(-0.5F, -0.5F, -0.5F); - var3.startDrawingQuads(); - var3.setNormal(0.0F, -1.0F, 0.0F); - this.renderBottomFace(var1, 0.0D, 0.0D, 0.0D, var1.getBlockTextureFromSide(0)); - var3.draw(); - var3.startDrawingQuads(); - var3.setNormal(0.0F, 1.0F, 0.0F); - this.renderTopFace(var1, 0.0D, 0.0D, 0.0D, var1.getBlockTextureFromSide(1)); - var3.draw(); - var3.startDrawingQuads(); - var3.setNormal(0.0F, 0.0F, -1.0F); - this.renderEastFace(var1, 0.0D, 0.0D, 0.0D, var1.getBlockTextureFromSide(2)); - var3.draw(); - var3.startDrawingQuads(); - var3.setNormal(0.0F, 0.0F, 1.0F); - this.renderWestFace(var1, 0.0D, 0.0D, 0.0D, var1.getBlockTextureFromSide(3)); - var3.draw(); - var3.startDrawingQuads(); - var3.setNormal(-1.0F, 0.0F, 0.0F); - this.renderNorthFace(var1, 0.0D, 0.0D, 0.0D, var1.getBlockTextureFromSide(4)); - var3.draw(); - var3.startDrawingQuads(); - var3.setNormal(1.0F, 0.0F, 0.0F); - this.renderSouthFace(var1, 0.0D, 0.0D, 0.0D, var1.getBlockTextureFromSide(5)); - var3.draw(); - GL11.glTranslatef(0.5F, 0.5F, 0.5F); - } else if(var4 == 1) { - var3.startDrawingQuads(); - var3.setNormal(0.0F, -1.0F, 0.0F); - this.renderCrossedSquares(var1, var2, -0.5D, -0.5D, -0.5D); - var3.draw(); - } else if(var4 == 6) { - var3.startDrawingQuads(); - var3.setNormal(0.0F, -1.0F, 0.0F); - this.renderBlockCropsImpl(var1, var2, -0.5D, -0.5D, -0.5D); - var3.draw(); - } else if(var4 == 2) { - var3.startDrawingQuads(); - var3.setNormal(0.0F, -1.0F, 0.0F); - this.renderTorchAtAngle(var1, -0.5D, -0.5D, -0.5D, 0.0D, 0.0D); - var3.draw(); - } else if(var4 != 3 && var4 == 5) { - } - - } -} diff --git a/src/net/minecraft/src/RenderCreeper.java b/src/net/minecraft/src/RenderCreeper.java deleted file mode 100644 index 1790664..0000000 --- a/src/net/minecraft/src/RenderCreeper.java +++ /dev/null @@ -1,56 +0,0 @@ -package net.minecraft.src; - -import org.lwjgl.opengl.GL11; - -public class RenderCreeper extends RenderLiving { - public RenderCreeper() { - super(new ModelCreeper(), 0.5F); - } - - protected void a(EntityCreeper var1, float var2) { - float var4 = var1.setCreeperFlashTime(var2); - float var5 = 1.0F + MathHelper.sin(var4 * 100.0F) * var4 * 0.01F; - if(var4 < 0.0F) { - var4 = 0.0F; - } - - if(var4 > 1.0F) { - var4 = 1.0F; - } - - var4 *= var4; - var4 *= var4; - float var6 = (1.0F + var4 * 0.4F) * var5; - float var7 = (1.0F + var4 * 0.1F) / var5; - GL11.glScalef(var6, var7, var6); - } - - protected int a(EntityCreeper var1, float var2, float var3) { - float var5 = var1.setCreeperFlashTime(var3); - if((int)(var5 * 10.0F) % 2 == 0) { - return 0; - } else { - int var6 = (int)(var5 * 0.2F * 255.0F); - if(var6 < 0) { - var6 = 0; - } - - if(var6 > 255) { - var6 = 255; - } - - short var7 = 255; - short var8 = 255; - short var9 = 255; - return var6 << 24 | var7 << 16 | var8 << 8 | var9; - } - } - - protected void preRenderCallback(EntityLiving var1, float var2) { - this.a((EntityCreeper)var1, var2); - } - - protected int getColorMultiplier(EntityLiving var1, float var2, float var3) { - return this.a((EntityCreeper)var1, var2, var3); - } -} diff --git a/src/net/minecraft/src/RenderEngine.java b/src/net/minecraft/src/RenderEngine.java deleted file mode 100644 index eacb516..0000000 --- a/src/net/minecraft/src/RenderEngine.java +++ /dev/null @@ -1,254 +0,0 @@ -package net.minecraft.src; - -import java.awt.Graphics; -import java.awt.image.BufferedImage; -import java.awt.image.ImageObserver; -import java.io.IOException; -import java.nio.ByteBuffer; -import java.nio.IntBuffer; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import javax.imageio.ImageIO; -import org.lwjgl.opengl.GL11; - -public class RenderEngine { - private HashMap textureMap = new HashMap(); - private HashMap textureContentsMap = new HashMap(); - private IntBuffer singleIntBuffer = GLAllocation.createIntBuffer(1); - private ByteBuffer imageData = GLAllocation.createDirectByteBuffer(262144); - private List textureList = new ArrayList(); - private Map urlToImageDataMap = new HashMap(); - private GameSettings options; - private boolean clampTexture = false; - - public RenderEngine(GameSettings var1) { - this.options = var1; - } - - public int getTexture(String var1) { - Integer var2 = (Integer)this.textureMap.get(var1); - if(var2 != null) { - return var2.intValue(); - } else { - try { - this.singleIntBuffer.clear(); - GLAllocation.generateDisplayLists(this.singleIntBuffer); - int var4 = this.singleIntBuffer.get(0); - if(var1.startsWith("##")) { - this.setupTexture(this.unwrapImageByColumns(ImageIO.read(RenderEngine.class.getResourceAsStream(var1.substring(2)))), var4); - } else if(var1.startsWith("%%")) { - this.clampTexture = true; - this.setupTexture(ImageIO.read(RenderEngine.class.getResourceAsStream(var1.substring(2))), var4); - this.clampTexture = false; - } else { - this.setupTexture(ImageIO.read(RenderEngine.class.getResourceAsStream(var1)), var4); - } - - this.textureMap.put(var1, Integer.valueOf(var4)); - return var4; - } catch (IOException var3) { - throw new RuntimeException("!!"); - } - } - } - - private BufferedImage unwrapImageByColumns(BufferedImage var1) { - int var2 = var1.getWidth() / 16; - BufferedImage var3 = new BufferedImage(16, var1.getHeight() * var2, 2); - Graphics var4 = var3.getGraphics(); - - for(int var5 = 0; var5 < var2; ++var5) { - var4.drawImage(var1, -var5 * 16, var5 * var1.getHeight(), (ImageObserver)null); - } - - var4.dispose(); - return var3; - } - - public int allocateAndSetupTexture(BufferedImage var1) { - this.singleIntBuffer.clear(); - GLAllocation.generateDisplayLists(this.singleIntBuffer); - int var2 = this.singleIntBuffer.get(0); - this.setupTexture(var1, var2); - this.textureContentsMap.put(Integer.valueOf(var2), var1); - return var2; - } - - public void setupTexture(BufferedImage var1, int var2) { - GL11.glBindTexture(GL11.GL_TEXTURE_2D, var2); - GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MIN_FILTER, GL11.GL_NEAREST); - GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER, GL11.GL_NEAREST); - if(this.clampTexture) { - GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_S, GL11.GL_CLAMP); - GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_T, GL11.GL_CLAMP); - } else { - GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_S, GL11.GL_REPEAT); - GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_T, GL11.GL_REPEAT); - } - - int var3 = var1.getWidth(); - int var4 = var1.getHeight(); - int[] var5 = new int[var3 * var4]; - byte[] var6 = new byte[var3 * var4 * 4]; - var1.getRGB(0, 0, var3, var4, var5, 0, var3); - - for(int var7 = 0; var7 < var5.length; ++var7) { - int var8 = var5[var7] >> 24 & 255; - int var9 = var5[var7] >> 16 & 255; - int var10 = var5[var7] >> 8 & 255; - int var11 = var5[var7] & 255; - if(this.options != null && this.options.anaglyph) { - int var12 = (var9 * 30 + var10 * 59 + var11 * 11) / 100; - int var13 = (var9 * 30 + var10 * 70) / 100; - int var14 = (var9 * 30 + var11 * 70) / 100; - var9 = var12; - var10 = var13; - var11 = var14; - } - - var6[var7 * 4 + 0] = (byte)var9; - var6[var7 * 4 + 1] = (byte)var10; - var6[var7 * 4 + 2] = (byte)var11; - var6[var7 * 4 + 3] = (byte)var8; - } - - this.imageData.clear(); - this.imageData.put(var6); - this.imageData.position(0).limit(var6.length); - GL11.glTexImage2D(GL11.GL_TEXTURE_2D, 0, GL11.GL_RGBA, var3, var4, 0, GL11.GL_RGBA, GL11.GL_UNSIGNED_BYTE, (ByteBuffer)this.imageData); - } - - public void deleteTexture(int var1) { - this.textureContentsMap.remove(Integer.valueOf(var1)); - this.singleIntBuffer.clear(); - this.singleIntBuffer.put(var1); - this.singleIntBuffer.flip(); - GL11.glDeleteTextures(this.singleIntBuffer); - } - - public int getTextureForDownloadableImage(String var1, String var2) { - ThreadDownloadImageData var3 = (ThreadDownloadImageData)this.urlToImageDataMap.get(var1); - if(var3 != null && var3.image != null && !var3.textureSetupComplete) { - if(var3.textureName < 0) { - var3.textureName = this.allocateAndSetupTexture(var3.image); - } else { - this.setupTexture(var3.image, var3.textureName); - } - - var3.textureSetupComplete = true; - } - - return var3 != null && var3.textureName >= 0 ? var3.textureName : this.getTexture(var2); - } - - public ThreadDownloadImageData obtainImageData(String var1, ImageBuffer var2) { - ThreadDownloadImageData var3 = (ThreadDownloadImageData)this.urlToImageDataMap.get(var1); - if(var3 == null) { - this.urlToImageDataMap.put(var1, new ThreadDownloadImageData(var1, var2)); - } else { - ++var3.referenceCount; - } - - return var3; - } - - public void releaseImageData(String var1) { - ThreadDownloadImageData var2 = (ThreadDownloadImageData)this.urlToImageDataMap.get(var1); - if(var2 != null) { - --var2.referenceCount; - if(var2.referenceCount == 0) { - if(var2.textureName >= 0) { - this.deleteTexture(var2.textureName); - } - - this.urlToImageDataMap.remove(var1); - } - } - - } - - public void registerTextureFX(TextureFX var1) { - this.textureList.add(var1); - var1.onTick(); - } - - public void updateDynamicTextures() { - int var1; - TextureFX var2; - for(var1 = 0; var1 < this.textureList.size(); ++var1) { - var2 = (TextureFX)this.textureList.get(var1); - var2.anaglyphEnabled = this.options.anaglyph; - var2.onTick(); - this.imageData.clear(); - this.imageData.put(var2.imageData); - this.imageData.position(0).limit(var2.imageData.length); - - for(int var3 = 0; var3 < var2.tileSize; ++var3) { - for(int var4 = 0; var4 < var2.tileSize; ++var4) { - GL11.glTexSubImage2D(GL11.GL_TEXTURE_2D, 0, var2.iconIndex % 16 * 16 + var3 * 16, var2.iconIndex / 16 * 16 + var4 * 16, 16, 16, GL11.GL_RGBA, GL11.GL_UNSIGNED_BYTE, (ByteBuffer)this.imageData); - } - } - } - - for(var1 = 0; var1 < this.textureList.size(); ++var1) { - var2 = (TextureFX)this.textureList.get(var1); - if(var2.textureId > 0) { - this.imageData.clear(); - this.imageData.put(var2.imageData); - this.imageData.position(0).limit(var2.imageData.length); - GL11.glBindTexture(GL11.GL_TEXTURE_2D, var2.textureId); - GL11.glTexSubImage2D(GL11.GL_TEXTURE_2D, 0, 0, 0, 16, 16, GL11.GL_RGBA, GL11.GL_UNSIGNED_BYTE, (ByteBuffer)this.imageData); - } - } - - } - - public void refreshTextures() { - Iterator var1 = this.textureContentsMap.keySet().iterator(); - - BufferedImage var3; - while(var1.hasNext()) { - int var2 = ((Integer)var1.next()).intValue(); - var3 = (BufferedImage)this.textureContentsMap.get(Integer.valueOf(var2)); - this.setupTexture(var3, var2); - } - - ThreadDownloadImageData var6; - for(var1 = this.urlToImageDataMap.values().iterator(); var1.hasNext(); var6.textureSetupComplete = false) { - var6 = (ThreadDownloadImageData)var1.next(); - } - - var1 = this.textureMap.keySet().iterator(); - - while(var1.hasNext()) { - String var7 = (String)var1.next(); - - try { - if(var7.startsWith("##")) { - var3 = this.unwrapImageByColumns(ImageIO.read(RenderEngine.class.getResourceAsStream(var7.substring(2)))); - } else if(var7.startsWith("%%")) { - this.clampTexture = true; - var3 = ImageIO.read(RenderEngine.class.getResourceAsStream(var7.substring(2))); - this.clampTexture = false; - } else { - var3 = ImageIO.read(RenderEngine.class.getResourceAsStream(var7)); - } - - int var4 = ((Integer)this.textureMap.get(var7)).intValue(); - this.setupTexture(var3, var4); - } catch (IOException var5) { - var5.printStackTrace(); - } - } - - } - - public void bindTexture(int var1) { - if(var1 >= 0) { - GL11.glBindTexture(GL11.GL_TEXTURE_2D, var1); - } - } -} diff --git a/src/net/minecraft/src/RenderEntity.java b/src/net/minecraft/src/RenderEntity.java deleted file mode 100644 index 52836e9..0000000 --- a/src/net/minecraft/src/RenderEntity.java +++ /dev/null @@ -1,11 +0,0 @@ -package net.minecraft.src; - -import org.lwjgl.opengl.GL11; - -public class RenderEntity extends Render { - public void doRender(Entity var1, double var2, double var4, double var6, float var8, float var9) { - GL11.glPushMatrix(); - renderOffsetAABB(var1.boundingBox, var2 - var1.lastTickPosX, var4 - var1.lastTickPosY, var6 - var1.lastTickPosZ); - GL11.glPopMatrix(); - } -} diff --git a/src/net/minecraft/src/RenderFallingSand.java b/src/net/minecraft/src/RenderFallingSand.java deleted file mode 100644 index 3f633d1..0000000 --- a/src/net/minecraft/src/RenderFallingSand.java +++ /dev/null @@ -1,27 +0,0 @@ -package net.minecraft.src; - -import org.lwjgl.opengl.GL11; - -public class RenderFallingSand extends Render { - private RenderBlocks sandRenderBlocks = new RenderBlocks(); - - public RenderFallingSand() { - this.shadowSize = 0.5F; - } - - public void a(EntityFallingSand var1, double var2, double var4, double var6, float var8, float var9) { - GL11.glPushMatrix(); - GL11.glTranslatef((float)var2, (float)var4, (float)var6); - this.loadTexture("/terrain.png"); - Block var10 = Block.blocksList[var1.blockID]; - World var11 = var1.getWorld(); - GL11.glDisable(GL11.GL_LIGHTING); - this.sandRenderBlocks.renderBlockFallingSand(var10, var11, MathHelper.floor_double(var1.posX), MathHelper.floor_double(var1.posY), MathHelper.floor_double(var1.posZ)); - GL11.glEnable(GL11.GL_LIGHTING); - GL11.glPopMatrix(); - } - - public void doRender(Entity var1, double var2, double var4, double var6, float var8, float var9) { - this.a((EntityFallingSand)var1, var2, var4, var6, var8, var9); - } -} diff --git a/src/net/minecraft/src/RenderGiantZombie.java b/src/net/minecraft/src/RenderGiantZombie.java deleted file mode 100644 index b0614da..0000000 --- a/src/net/minecraft/src/RenderGiantZombie.java +++ /dev/null @@ -1,20 +0,0 @@ -package net.minecraft.src; - -import org.lwjgl.opengl.GL11; - -public class RenderGiantZombie extends RenderLiving { - private float scale; - - public RenderGiantZombie(ModelBase var1, float var2, float var3) { - super(var1, var2 * var3); - this.scale = var3; - } - - protected void a(EntityGiant var1, float var2) { - GL11.glScalef(this.scale, this.scale, this.scale); - } - - protected void preRenderCallback(EntityLiving var1, float var2) { - this.a((EntityGiant)var1, var2); - } -} diff --git a/src/net/minecraft/src/RenderGlobal.java b/src/net/minecraft/src/RenderGlobal.java deleted file mode 100644 index 2de314c..0000000 --- a/src/net/minecraft/src/RenderGlobal.java +++ /dev/null @@ -1,1083 +0,0 @@ -package net.minecraft.src; - -import java.nio.IntBuffer; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collections; -import java.util.List; -import java.util.Random; -import org.lwjgl.opengl.ARBOcclusionQuery; -import org.lwjgl.opengl.GL11; -import org.lwjgl.opengl.GL15; - -public class RenderGlobal implements IWorldAccess { - public List tileEntities = new ArrayList(); - private World theWorld; - private RenderEngine renderEngine; - private List worldRenderersToUpdate = new ArrayList(); - private WorldRenderer[] sortedWorldRenderers; - private WorldRenderer[] worldRenderers; - private int renderChunksWide; - private int renderChunksTall; - private int renderChunksDeep; - private int glRenderListBase; - private Minecraft mc; - private RenderBlocks globalRenderBlocks; - private IntBuffer glOcclusionQueryBase; - private boolean occlusionEnabled = false; - private int cloudTickCounter = 0; - private int starGLCallList; - private int glSkyList; - private int glSkyList2; - private int minBlockX; - private int minBlockY; - private int minBlockZ; - private int maxBlockX; - private int maxBlockY; - private int maxBlockZ; - private int renderDistance = -1; - private int countEntitiesTotal; - private int countEntitiesRendered; - private int countEntitiesHidden; - int[] dummyBuf50k = new int['\uc350']; - IntBuffer occlusionResult = GLAllocation.createIntBuffer(64); - private int renderersLoaded; - private int renderersBeingClipped; - private int renderersBeingOccluded; - private int renderersBeingRendered; - private int renderersSkippingRenderPass; - private List glRenderLists = new ArrayList(); - private RenderList[] allRenderLists = new RenderList[]{new RenderList(), new RenderList(), new RenderList(), new RenderList()}; - int dummyRenderInt = 0; - int unusedGLCallList = GLAllocation.generateDisplayLists(1); - double prevSortX = -9999.0D; - double prevSortY = -9999.0D; - double prevSortZ = -9999.0D; - public float damagePartialTime; - int frustumCheckOffset = 0; - - public RenderGlobal(Minecraft var1, RenderEngine var2) { - this.mc = var1; - this.renderEngine = var2; - byte var3 = 64; - this.glRenderListBase = GLAllocation.generateDisplayLists(var3 * var3 * var3 * 3); - this.occlusionEnabled = var1.getOpenGlCapsChecker().checkARBOcclusion(); - if(this.occlusionEnabled) { - this.occlusionResult.clear(); - this.glOcclusionQueryBase = GLAllocation.createIntBuffer(var3 * var3 * var3); - this.glOcclusionQueryBase.clear(); - this.glOcclusionQueryBase.position(0); - this.glOcclusionQueryBase.limit(var3 * var3 * var3); - ARBOcclusionQuery.glGenQueriesARB(this.glOcclusionQueryBase); - } - - this.starGLCallList = GLAllocation.generateDisplayLists(3); - GL11.glPushMatrix(); - GL11.glNewList(this.starGLCallList, GL11.GL_COMPILE); - this.renderStars(); - GL11.glEndList(); - GL11.glPopMatrix(); - Tessellator var4 = Tessellator.instance; - this.glSkyList = this.starGLCallList + 1; - GL11.glNewList(this.glSkyList, GL11.GL_COMPILE); - byte var6 = 64; - int var7 = 256 / var6 + 2; - float var5 = 16.0F; - - int var8; - int var9; - for(var8 = -var6 * var7; var8 <= var6 * var7; var8 += var6) { - for(var9 = -var6 * var7; var9 <= var6 * var7; var9 += var6) { - var4.startDrawingQuads(); - var4.addVertex((double)(var8 + 0), (double)var5, (double)(var9 + 0)); - var4.addVertex((double)(var8 + var6), (double)var5, (double)(var9 + 0)); - var4.addVertex((double)(var8 + var6), (double)var5, (double)(var9 + var6)); - var4.addVertex((double)(var8 + 0), (double)var5, (double)(var9 + var6)); - var4.draw(); - } - } - - GL11.glEndList(); - this.glSkyList2 = this.starGLCallList + 2; - GL11.glNewList(this.glSkyList2, GL11.GL_COMPILE); - var5 = -16.0F; - var4.startDrawingQuads(); - - for(var8 = -var6 * var7; var8 <= var6 * var7; var8 += var6) { - for(var9 = -var6 * var7; var9 <= var6 * var7; var9 += var6) { - var4.addVertex((double)(var8 + var6), (double)var5, (double)(var9 + 0)); - var4.addVertex((double)(var8 + 0), (double)var5, (double)(var9 + 0)); - var4.addVertex((double)(var8 + 0), (double)var5, (double)(var9 + var6)); - var4.addVertex((double)(var8 + var6), (double)var5, (double)(var9 + var6)); - } - } - - var4.draw(); - GL11.glEndList(); - } - - private void renderStars() { - Random var1 = new Random(10842L); - Tessellator var2 = Tessellator.instance; - var2.startDrawingQuads(); - - for(int var3 = 0; var3 < 1500; ++var3) { - double var4 = (double)(var1.nextFloat() * 2.0F - 1.0F); - double var6 = (double)(var1.nextFloat() * 2.0F - 1.0F); - double var8 = (double)(var1.nextFloat() * 2.0F - 1.0F); - double var10 = (double)(0.25F + var1.nextFloat() * 0.25F); - double var12 = var4 * var4 + var6 * var6 + var8 * var8; - if(var12 < 1.0D && var12 > 0.01D) { - var12 = 1.0D / Math.sqrt(var12); - var4 *= var12; - var6 *= var12; - var8 *= var12; - double var14 = var4 * 100.0D; - double var16 = var6 * 100.0D; - double var18 = var8 * 100.0D; - double var20 = Math.atan2(var4, var8); - double var22 = Math.sin(var20); - double var24 = Math.cos(var20); - double var26 = Math.atan2(Math.sqrt(var4 * var4 + var8 * var8), var6); - double var28 = Math.sin(var26); - double var30 = Math.cos(var26); - double var32 = var1.nextDouble() * Math.PI * 2.0D; - double var34 = Math.sin(var32); - double var36 = Math.cos(var32); - - for(int var38 = 0; var38 < 4; ++var38) { - double var39 = 0.0D; - double var41 = (double)((var38 & 2) - 1) * var10; - double var43 = (double)((var38 + 1 & 2) - 1) * var10; - double var47 = var41 * var36 - var43 * var34; - double var49 = var43 * var36 + var41 * var34; - double var53 = var47 * var28 + var39 * var30; - double var55 = var39 * var28 - var47 * var30; - double var57 = var55 * var22 - var49 * var24; - double var61 = var49 * var22 + var55 * var24; - var2.addVertex(var14 + var57, var16 + var53, var18 + var61); - } - } - } - - var2.draw(); - } - - public void changeWorld(World var1) { - if(this.theWorld != null) { - this.theWorld.removeWorldAccess(this); - } - - this.prevSortX = -9999.0D; - this.prevSortY = -9999.0D; - this.prevSortZ = -9999.0D; - RenderManager.instance.set(var1); - this.theWorld = var1; - this.globalRenderBlocks = new RenderBlocks(var1); - if(var1 != null) { - var1.addWorldAccess(this); - this.loadRenderers(); - } - - } - - public void loadRenderers() { - Block.leaves.setGraphicsLevel(this.mc.gameSettings.fancyGraphics); - this.renderDistance = this.mc.gameSettings.renderDistance; - int var1; - if(this.worldRenderers != null) { - for(var1 = 0; var1 < this.worldRenderers.length; ++var1) { - this.worldRenderers[var1].stopRendering(); - } - } - - var1 = 64 << 3 - this.renderDistance; - if(var1 > 400) { - var1 = 400; - } - - this.renderChunksWide = var1 / 16 + 1; - this.renderChunksTall = 8; - this.renderChunksDeep = var1 / 16 + 1; - this.worldRenderers = new WorldRenderer[this.renderChunksWide * this.renderChunksTall * this.renderChunksDeep]; - this.sortedWorldRenderers = new WorldRenderer[this.renderChunksWide * this.renderChunksTall * this.renderChunksDeep]; - int var2 = 0; - int var3 = 0; - this.minBlockX = 0; - this.minBlockY = 0; - this.minBlockZ = 0; - this.maxBlockX = this.renderChunksWide; - this.maxBlockY = this.renderChunksTall; - this.maxBlockZ = this.renderChunksDeep; - - int var4; - for(var4 = 0; var4 < this.worldRenderersToUpdate.size(); ++var4) { - ((WorldRenderer)this.worldRenderersToUpdate.get(var4)).needsUpdate = false; - } - - this.worldRenderersToUpdate.clear(); - - for(var4 = 0; var4 < this.renderChunksWide; ++var4) { - for(int var5 = 0; var5 < this.renderChunksTall; ++var5) { - for(int var6 = 0; var6 < this.renderChunksDeep; ++var6) { - if(this.worldRenderers[(var6 * this.renderChunksTall + var5) * this.renderChunksWide + var4] != null) { - this.tileEntities.removeAll(this.worldRenderers[(var6 * this.renderChunksTall + var5) * this.renderChunksWide + var4].tileEntityRenderers); - } - - this.worldRenderers[(var6 * this.renderChunksTall + var5) * this.renderChunksWide + var4] = new WorldRenderer(this.theWorld, this.tileEntities, var4 * 16, var5 * 16, var6 * 16, 16, this.glRenderListBase + var2); - if(this.occlusionEnabled) { - this.worldRenderers[(var6 * this.renderChunksTall + var5) * this.renderChunksWide + var4].glOcclusionQuery = this.glOcclusionQueryBase.get(var3); - } - - this.worldRenderers[(var6 * this.renderChunksTall + var5) * this.renderChunksWide + var4].isWaitingOnOcclusionQuery = false; - this.worldRenderers[(var6 * this.renderChunksTall + var5) * this.renderChunksWide + var4].isVisible = true; - this.worldRenderers[(var6 * this.renderChunksTall + var5) * this.renderChunksWide + var4].isInFrustum = true; - this.worldRenderers[(var6 * this.renderChunksTall + var5) * this.renderChunksWide + var4].chunkIndex = var3++; - this.worldRenderers[(var6 * this.renderChunksTall + var5) * this.renderChunksWide + var4].markDirty(); - this.sortedWorldRenderers[(var6 * this.renderChunksTall + var5) * this.renderChunksWide + var4] = this.worldRenderers[(var6 * this.renderChunksTall + var5) * this.renderChunksWide + var4]; - this.worldRenderersToUpdate.add(this.worldRenderers[(var6 * this.renderChunksTall + var5) * this.renderChunksWide + var4]); - var2 += 3; - } - } - } - - if(this.theWorld != null) { - Entity var7 = this.theWorld.playerEntity; - this.markRenderersForNewPosition(MathHelper.floor_double(var7.posX), MathHelper.floor_double(var7.posY), MathHelper.floor_double(var7.posZ)); - Arrays.sort(this.sortedWorldRenderers, new EntitySorter(var7)); - } - - } - - public void renderEntities(Vec3D var1, ICamera var2, float var3) { - TileEntityRenderer.instance.cacheActiveRenderInfo(this.theWorld, this.renderEngine, this.mc.fontRenderer, this.mc.thePlayer, var3); - RenderManager.instance.cacheActiveRenderInfo(this.theWorld, this.renderEngine, this.mc.fontRenderer, this.mc.thePlayer, this.mc.gameSettings, var3); - this.countEntitiesTotal = 0; - this.countEntitiesRendered = 0; - this.countEntitiesHidden = 0; - Entity var4 = this.theWorld.playerEntity; - RenderManager.renderPosX = var4.lastTickPosX + (var4.posX - var4.lastTickPosX) * (double)var3; - RenderManager.renderPosY = var4.lastTickPosY + (var4.posY - var4.lastTickPosY) * (double)var3; - RenderManager.renderPosZ = var4.lastTickPosZ + (var4.posZ - var4.lastTickPosZ) * (double)var3; - TileEntityRenderer.staticPlayerX = var4.lastTickPosX + (var4.posX - var4.lastTickPosX) * (double)var3; - TileEntityRenderer.staticPlayerY = var4.lastTickPosY + (var4.posY - var4.lastTickPosY) * (double)var3; - TileEntityRenderer.staticPlayerZ = var4.lastTickPosZ + (var4.posZ - var4.lastTickPosZ) * (double)var3; - List var5 = this.theWorld.getLoadedEntityList(); - this.countEntitiesTotal = var5.size(); - - int var6; - for(var6 = 0; var6 < var5.size(); ++var6) { - Entity var7 = (Entity)var5.get(var6); - if(var7.isInRangeToRenderVec3D(var1) && var2.isBoundingBoxInFrustum(var7.boundingBox) && (var7 != this.theWorld.playerEntity || this.mc.gameSettings.thirdPersonView)) { - ++this.countEntitiesRendered; - RenderManager.instance.renderEntity(var7, var3); - } - } - - for(var6 = 0; var6 < this.tileEntities.size(); ++var6) { - TileEntityRenderer.instance.renderTileEntity((TileEntity)this.tileEntities.get(var6), var3); - } - - } - - public String getDebugInfoRenders() { - return "C: " + this.renderersBeingRendered + "/" + this.renderersLoaded + ". F: " + this.renderersBeingClipped + ", O: " + this.renderersBeingOccluded + ", E: " + this.renderersSkippingRenderPass; - } - - public String getDebugInfoEntities() { - return "E: " + this.countEntitiesRendered + "/" + this.countEntitiesTotal + ". B: " + this.countEntitiesHidden + ", I: " + (this.countEntitiesTotal - this.countEntitiesHidden - this.countEntitiesRendered); - } - - private void markRenderersForNewPosition(int var1, int var2, int var3) { - var1 -= 8; - var2 -= 8; - var3 -= 8; - this.minBlockX = Integer.MAX_VALUE; - this.minBlockY = Integer.MAX_VALUE; - this.minBlockZ = Integer.MAX_VALUE; - this.maxBlockX = Integer.MIN_VALUE; - this.maxBlockY = Integer.MIN_VALUE; - this.maxBlockZ = Integer.MIN_VALUE; - int var4 = this.renderChunksWide * 16; - int var5 = var4 / 2; - - for(int var6 = 0; var6 < this.renderChunksWide; ++var6) { - int var7 = var6 * 16; - int var8 = var7 + var5 - var1; - if(var8 < 0) { - var8 -= var4 - 1; - } - - var8 /= var4; - var7 -= var8 * var4; - if(var7 < this.minBlockX) { - this.minBlockX = var7; - } - - if(var7 > this.maxBlockX) { - this.maxBlockX = var7; - } - - for(int var9 = 0; var9 < this.renderChunksDeep; ++var9) { - int var10 = var9 * 16; - int var11 = var10 + var5 - var3; - if(var11 < 0) { - var11 -= var4 - 1; - } - - var11 /= var4; - var10 -= var11 * var4; - if(var10 < this.minBlockZ) { - this.minBlockZ = var10; - } - - if(var10 > this.maxBlockZ) { - this.maxBlockZ = var10; - } - - for(int var12 = 0; var12 < this.renderChunksTall; ++var12) { - int var13 = var12 * 16; - if(var13 < this.minBlockY) { - this.minBlockY = var13; - } - - if(var13 > this.maxBlockY) { - this.maxBlockY = var13; - } - - WorldRenderer var14 = this.worldRenderers[(var9 * this.renderChunksTall + var12) * this.renderChunksWide + var6]; - boolean var15 = var14.needsUpdate; - var14.setPosition(var7, var13, var10); - if(!var15 && var14.needsUpdate) { - this.worldRenderersToUpdate.add(var14); - } - } - } - } - - } - - public int sortAndRender(EntityPlayer var1, int var2, double var3) { - if(this.mc.gameSettings.renderDistance != this.renderDistance) { - this.loadRenderers(); - } - - if(var2 == 0) { - this.renderersLoaded = 0; - this.renderersBeingClipped = 0; - this.renderersBeingOccluded = 0; - this.renderersBeingRendered = 0; - this.renderersSkippingRenderPass = 0; - } - - double var5 = var1.lastTickPosX + (var1.posX - var1.lastTickPosX) * var3; - double var7 = var1.lastTickPosY + (var1.posY - var1.lastTickPosY) * var3; - double var9 = var1.lastTickPosZ + (var1.posZ - var1.lastTickPosZ) * var3; - double var11 = var1.posX - this.prevSortX; - double var13 = var1.posY - this.prevSortY; - double var15 = var1.posZ - this.prevSortZ; - if(var11 * var11 + var13 * var13 + var15 * var15 > 16.0D) { - this.prevSortX = var1.posX; - this.prevSortY = var1.posY; - this.prevSortZ = var1.posZ; - this.markRenderersForNewPosition(MathHelper.floor_double(var1.posX), MathHelper.floor_double(var1.posY), MathHelper.floor_double(var1.posZ)); - Arrays.sort(this.sortedWorldRenderers, new EntitySorter(var1)); - } - - byte var17 = 0; - int var33; - if(this.occlusionEnabled && !this.mc.gameSettings.anaglyph && var2 == 0) { - byte var18 = 0; - int var19 = 16; - this.checkOcclusionQueryResult(var18, var19); - - for(int var20 = var18; var20 < var19; ++var20) { - this.sortedWorldRenderers[var20].isVisible = true; - } - - var33 = var17 + this.renderSortedRenderers(var18, var19, var2, var3); - - do { - int var34 = var19; - var19 *= 2; - if(var19 > this.sortedWorldRenderers.length) { - var19 = this.sortedWorldRenderers.length; - } - - GL11.glDisable(GL11.GL_TEXTURE_2D); - GL11.glDisable(GL11.GL_LIGHTING); - GL11.glDisable(GL11.GL_ALPHA_TEST); - GL11.glDisable(GL11.GL_FOG); - GL11.glColorMask(false, false, false, false); - GL11.glDepthMask(false); - this.checkOcclusionQueryResult(var34, var19); - GL11.glPushMatrix(); - float var35 = 0.0F; - float var21 = 0.0F; - float var22 = 0.0F; - - for(int var23 = var34; var23 < var19; ++var23) { - if(this.sortedWorldRenderers[var23].skipAllRenderPasses()) { - this.sortedWorldRenderers[var23].isInFrustum = false; - } else { - if(!this.sortedWorldRenderers[var23].isInFrustum) { - this.sortedWorldRenderers[var23].isVisible = true; - } - - if(this.sortedWorldRenderers[var23].isInFrustum && !this.sortedWorldRenderers[var23].isWaitingOnOcclusionQuery) { - float var24 = MathHelper.sqrt_float(this.sortedWorldRenderers[var23].distanceToEntitySquared(var1)); - int var25 = (int)(1.0F + var24 / 128.0F); - if(this.cloudTickCounter % var25 == var23 % var25) { - WorldRenderer var26 = this.sortedWorldRenderers[var23]; - float var27 = (float)((double)var26.posXMinus - var5); - float var28 = (float)((double)var26.posYMinus - var7); - float var29 = (float)((double)var26.posZMinus - var9); - float var30 = var27 - var35; - float var31 = var28 - var21; - float var32 = var29 - var22; - if(var30 != 0.0F || var31 != 0.0F || var32 != 0.0F) { - GL11.glTranslatef(var30, var31, var32); - var35 += var30; - var21 += var31; - var22 += var32; - } - - ARBOcclusionQuery.glBeginQueryARB(GL15.GL_SAMPLES_PASSED, this.sortedWorldRenderers[var23].glOcclusionQuery); - this.sortedWorldRenderers[var23].callOcclusionQueryList(); - ARBOcclusionQuery.glEndQueryARB(GL15.GL_SAMPLES_PASSED); - this.sortedWorldRenderers[var23].isWaitingOnOcclusionQuery = true; - } - } - } - } - - GL11.glPopMatrix(); - GL11.glColorMask(true, true, true, true); - GL11.glDepthMask(true); - GL11.glEnable(GL11.GL_TEXTURE_2D); - GL11.glEnable(GL11.GL_ALPHA_TEST); - GL11.glEnable(GL11.GL_FOG); - var33 += this.renderSortedRenderers(var34, var19, var2, var3); - } while(var19 < this.sortedWorldRenderers.length); - } else { - var33 = var17 + this.renderSortedRenderers(0, this.sortedWorldRenderers.length, var2, var3); - } - - return var33; - } - - private void checkOcclusionQueryResult(int var1, int var2) { - for(int var3 = var1; var3 < var2; ++var3) { - if(this.sortedWorldRenderers[var3].isWaitingOnOcclusionQuery) { - this.occlusionResult.clear(); - ARBOcclusionQuery.glGetQueryObjectuARB(this.sortedWorldRenderers[var3].glOcclusionQuery, GL15.GL_QUERY_RESULT_AVAILABLE, this.occlusionResult); - if(this.occlusionResult.get(0) != 0) { - this.sortedWorldRenderers[var3].isWaitingOnOcclusionQuery = false; - this.occlusionResult.clear(); - ARBOcclusionQuery.glGetQueryObjectuARB(this.sortedWorldRenderers[var3].glOcclusionQuery, GL15.GL_QUERY_RESULT, this.occlusionResult); - this.sortedWorldRenderers[var3].isVisible = this.occlusionResult.get(0) != 0; - } - } - } - - } - - private int renderSortedRenderers(int var1, int var2, int var3, double var4) { - this.glRenderLists.clear(); - int var6 = 0; - - for(int var7 = var1; var7 < var2; ++var7) { - if(var3 == 0) { - ++this.renderersLoaded; - if(this.sortedWorldRenderers[var7].skipRenderPass[var3]) { - ++this.renderersSkippingRenderPass; - } else if(!this.sortedWorldRenderers[var7].isInFrustum) { - ++this.renderersBeingClipped; - } else if(this.occlusionEnabled && !this.sortedWorldRenderers[var7].isVisible) { - ++this.renderersBeingOccluded; - } else { - ++this.renderersBeingRendered; - } - } - - if(!this.sortedWorldRenderers[var7].skipRenderPass[var3] && this.sortedWorldRenderers[var7].isInFrustum && this.sortedWorldRenderers[var7].isVisible) { - int var8 = this.sortedWorldRenderers[var7].getGLCallListForPass(var3); - if(var8 >= 0) { - this.glRenderLists.add(this.sortedWorldRenderers[var7]); - ++var6; - } - } - } - - EntityPlayerSP var19 = this.mc.thePlayer; - double var20 = var19.lastTickPosX + (var19.posX - var19.lastTickPosX) * var4; - double var10 = var19.lastTickPosY + (var19.posY - var19.lastTickPosY) * var4; - double var12 = var19.lastTickPosZ + (var19.posZ - var19.lastTickPosZ) * var4; - int var14 = 0; - - int var15; - for(var15 = 0; var15 < this.allRenderLists.length; ++var15) { - this.allRenderLists[var15].reset(); - } - - for(var15 = 0; var15 < this.glRenderLists.size(); ++var15) { - WorldRenderer var16 = (WorldRenderer)this.glRenderLists.get(var15); - int var17 = -1; - - for(int var18 = 0; var18 < var14; ++var18) { - if(this.allRenderLists[var18].isRenderedAt(var16.posXMinus, var16.posYMinus, var16.posZMinus)) { - var17 = var18; - } - } - - if(var17 < 0) { - var17 = var14++; - this.allRenderLists[var17].setLocation(var16.posXMinus, var16.posYMinus, var16.posZMinus, var20, var10, var12); - } - - this.allRenderLists[var17].render(var16.getGLCallListForPass(var3)); - } - - this.renderAllRenderLists(var3, var4); - return var6; - } - - public void renderAllRenderLists(int var1, double var2) { - for(int var4 = 0; var4 < this.allRenderLists.length; ++var4) { - this.allRenderLists[var4].render(); - } - - } - - public void updateClouds() { - ++this.cloudTickCounter; - } - - public void renderSky(float var1) { - GL11.glDisable(GL11.GL_TEXTURE_2D); - Vec3D var2 = this.theWorld.getSkyColor(var1); - float var3 = (float)var2.xCoord; - float var4 = (float)var2.yCoord; - float var5 = (float)var2.zCoord; - float var7; - float var8; - if(this.mc.gameSettings.anaglyph) { - float var6 = (var3 * 30.0F + var4 * 59.0F + var5 * 11.0F) / 100.0F; - var7 = (var3 * 30.0F + var4 * 70.0F) / 100.0F; - var8 = (var3 * 30.0F + var5 * 70.0F) / 100.0F; - var3 = var6; - var4 = var7; - var5 = var8; - } - - GL11.glColor3f(var3, var4, var5); - Tessellator var12 = Tessellator.instance; - GL11.glDepthMask(false); - GL11.glEnable(GL11.GL_FOG); - GL11.glColor3f(var3, var4, var5); - GL11.glCallList(this.glSkyList); - GL11.glEnable(GL11.GL_TEXTURE_2D); - GL11.glDisable(GL11.GL_FOG); - GL11.glDisable(GL11.GL_ALPHA_TEST); - GL11.glEnable(GL11.GL_BLEND); - GL11.glBlendFunc(GL11.GL_ONE, GL11.GL_ONE); - GL11.glPushMatrix(); - var7 = 0.0F; - var8 = 0.0F; - float var9 = 0.0F; - GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); - GL11.glTranslatef(var7, var8, var9); - GL11.glRotatef(0.0F, 0.0F, 0.0F, 1.0F); - GL11.glRotatef(this.theWorld.getCelestialAngle(var1) * 360.0F, 1.0F, 0.0F, 0.0F); - float var10 = 30.0F; - GL11.glBindTexture(GL11.GL_TEXTURE_2D, this.renderEngine.getTexture("/terrain/sun.png")); - var12.startDrawingQuads(); - var12.addVertexWithUV((double)(-var10), 100.0D, (double)(-var10), 0.0D, 0.0D); - var12.addVertexWithUV((double)var10, 100.0D, (double)(-var10), 1.0D, 0.0D); - var12.addVertexWithUV((double)var10, 100.0D, (double)var10, 1.0D, 1.0D); - var12.addVertexWithUV((double)(-var10), 100.0D, (double)var10, 0.0D, 1.0D); - var12.draw(); - var10 = 20.0F; - GL11.glBindTexture(GL11.GL_TEXTURE_2D, this.renderEngine.getTexture("/terrain/moon.png")); - var12.startDrawingQuads(); - var12.addVertexWithUV((double)(-var10), -100.0D, (double)var10, 1.0D, 1.0D); - var12.addVertexWithUV((double)var10, -100.0D, (double)var10, 0.0D, 1.0D); - var12.addVertexWithUV((double)var10, -100.0D, (double)(-var10), 0.0D, 0.0D); - var12.addVertexWithUV((double)(-var10), -100.0D, (double)(-var10), 1.0D, 0.0D); - var12.draw(); - GL11.glDisable(GL11.GL_TEXTURE_2D); - float var11 = this.theWorld.getStarBrightness(var1); - if(var11 > 0.0F) { - GL11.glColor4f(var11, var11, var11, var11); - GL11.glCallList(this.starGLCallList); - } - - GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); - GL11.glDisable(GL11.GL_BLEND); - GL11.glEnable(GL11.GL_ALPHA_TEST); - GL11.glEnable(GL11.GL_FOG); - GL11.glPopMatrix(); - GL11.glColor3f(var3 * 0.2F + 0.04F, var4 * 0.2F + 0.04F, var5 * 0.6F + 0.1F); - GL11.glDisable(GL11.GL_TEXTURE_2D); - GL11.glCallList(this.glSkyList2); - GL11.glEnable(GL11.GL_TEXTURE_2D); - GL11.glDepthMask(true); - } - - public void renderClouds(float var1) { - if(this.mc.gameSettings.fancyGraphics) { - this.renderCloudsFancy(var1); - } else { - GL11.glDisable(GL11.GL_CULL_FACE); - float var2 = (float)(this.mc.thePlayer.lastTickPosY + (this.mc.thePlayer.posY - this.mc.thePlayer.lastTickPosY) * (double)var1); - byte var3 = 32; - int var4 = 256 / var3; - Tessellator var5 = Tessellator.instance; - GL11.glBindTexture(GL11.GL_TEXTURE_2D, this.renderEngine.getTexture("/clouds.png")); - GL11.glEnable(GL11.GL_BLEND); - GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); - Vec3D var6 = this.theWorld.getCloudColor(var1); - float var7 = (float)var6.xCoord; - float var8 = (float)var6.yCoord; - float var9 = (float)var6.zCoord; - float var10; - if(this.mc.gameSettings.anaglyph) { - var10 = (var7 * 30.0F + var8 * 59.0F + var9 * 11.0F) / 100.0F; - float var11 = (var7 * 30.0F + var8 * 70.0F) / 100.0F; - float var12 = (var7 * 30.0F + var9 * 70.0F) / 100.0F; - var7 = var10; - var8 = var11; - var9 = var12; - } - - var10 = 0.5F / 1024.0F; - double var22 = this.theWorld.playerEntity.prevPosX + (this.theWorld.playerEntity.posX - this.theWorld.playerEntity.prevPosX) * (double)var1 + (double)(((float)this.cloudTickCounter + var1) * 0.03F); - double var13 = this.theWorld.playerEntity.prevPosZ + (this.theWorld.playerEntity.posZ - this.theWorld.playerEntity.prevPosZ) * (double)var1; - int var15 = MathHelper.floor_double(var22 / 2048.0D); - int var16 = MathHelper.floor_double(var13 / 2048.0D); - var22 -= (double)(var15 * 2048); - var13 -= (double)(var16 * 2048); - float var17 = 120.0F - var2 + 0.33F; - float var18 = (float)(var22 * (double)var10); - float var19 = (float)(var13 * (double)var10); - var5.startDrawingQuads(); - var5.setColorRGBA_F(var7, var8, var9, 0.8F); - - for(int var20 = -var3 * var4; var20 < var3 * var4; var20 += var3) { - for(int var21 = -var3 * var4; var21 < var3 * var4; var21 += var3) { - var5.addVertexWithUV((double)(var20 + 0), (double)var17, (double)(var21 + var3), (double)((float)(var20 + 0) * var10 + var18), (double)((float)(var21 + var3) * var10 + var19)); - var5.addVertexWithUV((double)(var20 + var3), (double)var17, (double)(var21 + var3), (double)((float)(var20 + var3) * var10 + var18), (double)((float)(var21 + var3) * var10 + var19)); - var5.addVertexWithUV((double)(var20 + var3), (double)var17, (double)(var21 + 0), (double)((float)(var20 + var3) * var10 + var18), (double)((float)(var21 + 0) * var10 + var19)); - var5.addVertexWithUV((double)(var20 + 0), (double)var17, (double)(var21 + 0), (double)((float)(var20 + 0) * var10 + var18), (double)((float)(var21 + 0) * var10 + var19)); - } - } - - var5.draw(); - GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); - GL11.glDisable(GL11.GL_BLEND); - GL11.glEnable(GL11.GL_CULL_FACE); - } - } - - public void renderCloudsFancy(float var1) { - GL11.glDisable(GL11.GL_CULL_FACE); - float var2 = (float)(this.mc.thePlayer.lastTickPosY + (this.mc.thePlayer.posY - this.mc.thePlayer.lastTickPosY) * (double)var1); - Tessellator var3 = Tessellator.instance; - float var4 = 12.0F; - float var5 = 4.0F; - double var6 = (this.theWorld.playerEntity.prevPosX + (this.theWorld.playerEntity.posX - this.theWorld.playerEntity.prevPosX) * (double)var1 + (double)(((float)this.cloudTickCounter + var1) * 0.03F)) / (double)var4; - double var8 = (this.theWorld.playerEntity.prevPosZ + (this.theWorld.playerEntity.posZ - this.theWorld.playerEntity.prevPosZ) * (double)var1) / (double)var4 + (double)0.33F; - float var10 = 108.0F - var2 + 0.33F; - int var11 = MathHelper.floor_double(var6 / 2048.0D); - int var12 = MathHelper.floor_double(var8 / 2048.0D); - var6 -= (double)(var11 * 2048); - var8 -= (double)(var12 * 2048); - GL11.glBindTexture(GL11.GL_TEXTURE_2D, this.renderEngine.getTexture("/clouds.png")); - GL11.glEnable(GL11.GL_BLEND); - GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); - Vec3D var13 = this.theWorld.getCloudColor(var1); - float var14 = (float)var13.xCoord; - float var15 = (float)var13.yCoord; - float var16 = (float)var13.zCoord; - float var17; - float var18; - float var19; - if(this.mc.gameSettings.anaglyph) { - var17 = (var14 * 30.0F + var15 * 59.0F + var16 * 11.0F) / 100.0F; - var18 = (var14 * 30.0F + var15 * 70.0F) / 100.0F; - var19 = (var14 * 30.0F + var16 * 70.0F) / 100.0F; - var14 = var17; - var15 = var18; - var16 = var19; - } - - var17 = (float)(var6 * 0.0D); - var18 = (float)(var8 * 0.0D); - var19 = 0.00390625F; - var17 = (float)MathHelper.floor_double(var6) * var19; - var18 = (float)MathHelper.floor_double(var8) * var19; - float var20 = (float)(var6 - (double)MathHelper.floor_double(var6)); - float var21 = (float)(var8 - (double)MathHelper.floor_double(var8)); - byte var22 = 8; - byte var23 = 3; - float var24 = 1.0F / 1024.0F; - GL11.glScalef(var4, 1.0F, var4); - - for(int var25 = 0; var25 < 2; ++var25) { - if(var25 == 0) { - GL11.glColorMask(false, false, false, false); - } else { - GL11.glColorMask(true, true, true, true); - } - - for(int var26 = -var23 + 1; var26 <= var23; ++var26) { - for(int var27 = -var23 + 1; var27 <= var23; ++var27) { - var3.startDrawingQuads(); - float var28 = (float)(var26 * var22); - float var29 = (float)(var27 * var22); - float var30 = var28 - var20; - float var31 = var29 - var21; - if(var10 > -var5 - 1.0F) { - var3.setColorRGBA_F(var14 * 0.7F, var15 * 0.7F, var16 * 0.7F, 0.8F); - var3.setNormal(0.0F, -1.0F, 0.0F); - var3.addVertexWithUV((double)(var30 + 0.0F), (double)(var10 + 0.0F), (double)(var31 + (float)var22), (double)((var28 + 0.0F) * var19 + var17), (double)((var29 + (float)var22) * var19 + var18)); - var3.addVertexWithUV((double)(var30 + (float)var22), (double)(var10 + 0.0F), (double)(var31 + (float)var22), (double)((var28 + (float)var22) * var19 + var17), (double)((var29 + (float)var22) * var19 + var18)); - var3.addVertexWithUV((double)(var30 + (float)var22), (double)(var10 + 0.0F), (double)(var31 + 0.0F), (double)((var28 + (float)var22) * var19 + var17), (double)((var29 + 0.0F) * var19 + var18)); - var3.addVertexWithUV((double)(var30 + 0.0F), (double)(var10 + 0.0F), (double)(var31 + 0.0F), (double)((var28 + 0.0F) * var19 + var17), (double)((var29 + 0.0F) * var19 + var18)); - } - - if(var10 <= var5 + 1.0F) { - var3.setColorRGBA_F(var14, var15, var16, 0.8F); - var3.setNormal(0.0F, 1.0F, 0.0F); - var3.addVertexWithUV((double)(var30 + 0.0F), (double)(var10 + var5 - var24), (double)(var31 + (float)var22), (double)((var28 + 0.0F) * var19 + var17), (double)((var29 + (float)var22) * var19 + var18)); - var3.addVertexWithUV((double)(var30 + (float)var22), (double)(var10 + var5 - var24), (double)(var31 + (float)var22), (double)((var28 + (float)var22) * var19 + var17), (double)((var29 + (float)var22) * var19 + var18)); - var3.addVertexWithUV((double)(var30 + (float)var22), (double)(var10 + var5 - var24), (double)(var31 + 0.0F), (double)((var28 + (float)var22) * var19 + var17), (double)((var29 + 0.0F) * var19 + var18)); - var3.addVertexWithUV((double)(var30 + 0.0F), (double)(var10 + var5 - var24), (double)(var31 + 0.0F), (double)((var28 + 0.0F) * var19 + var17), (double)((var29 + 0.0F) * var19 + var18)); - } - - var3.setColorRGBA_F(var14 * 0.9F, var15 * 0.9F, var16 * 0.9F, 0.8F); - int var32; - if(var26 > -1) { - var3.setNormal(-1.0F, 0.0F, 0.0F); - - for(var32 = 0; var32 < var22; ++var32) { - var3.addVertexWithUV((double)(var30 + (float)var32 + 0.0F), (double)(var10 + 0.0F), (double)(var31 + (float)var22), (double)((var28 + (float)var32 + 0.5F) * var19 + var17), (double)((var29 + (float)var22) * var19 + var18)); - var3.addVertexWithUV((double)(var30 + (float)var32 + 0.0F), (double)(var10 + var5), (double)(var31 + (float)var22), (double)((var28 + (float)var32 + 0.5F) * var19 + var17), (double)((var29 + (float)var22) * var19 + var18)); - var3.addVertexWithUV((double)(var30 + (float)var32 + 0.0F), (double)(var10 + var5), (double)(var31 + 0.0F), (double)((var28 + (float)var32 + 0.5F) * var19 + var17), (double)((var29 + 0.0F) * var19 + var18)); - var3.addVertexWithUV((double)(var30 + (float)var32 + 0.0F), (double)(var10 + 0.0F), (double)(var31 + 0.0F), (double)((var28 + (float)var32 + 0.5F) * var19 + var17), (double)((var29 + 0.0F) * var19 + var18)); - } - } - - if(var26 <= 1) { - var3.setNormal(1.0F, 0.0F, 0.0F); - - for(var32 = 0; var32 < var22; ++var32) { - var3.addVertexWithUV((double)(var30 + (float)var32 + 1.0F - var24), (double)(var10 + 0.0F), (double)(var31 + (float)var22), (double)((var28 + (float)var32 + 0.5F) * var19 + var17), (double)((var29 + (float)var22) * var19 + var18)); - var3.addVertexWithUV((double)(var30 + (float)var32 + 1.0F - var24), (double)(var10 + var5), (double)(var31 + (float)var22), (double)((var28 + (float)var32 + 0.5F) * var19 + var17), (double)((var29 + (float)var22) * var19 + var18)); - var3.addVertexWithUV((double)(var30 + (float)var32 + 1.0F - var24), (double)(var10 + var5), (double)(var31 + 0.0F), (double)((var28 + (float)var32 + 0.5F) * var19 + var17), (double)((var29 + 0.0F) * var19 + var18)); - var3.addVertexWithUV((double)(var30 + (float)var32 + 1.0F - var24), (double)(var10 + 0.0F), (double)(var31 + 0.0F), (double)((var28 + (float)var32 + 0.5F) * var19 + var17), (double)((var29 + 0.0F) * var19 + var18)); - } - } - - var3.setColorRGBA_F(var14 * 0.8F, var15 * 0.8F, var16 * 0.8F, 0.8F); - if(var27 > -1) { - var3.setNormal(0.0F, 0.0F, -1.0F); - - for(var32 = 0; var32 < var22; ++var32) { - var3.addVertexWithUV((double)(var30 + 0.0F), (double)(var10 + var5), (double)(var31 + (float)var32 + 0.0F), (double)((var28 + 0.0F) * var19 + var17), (double)((var29 + (float)var32 + 0.5F) * var19 + var18)); - var3.addVertexWithUV((double)(var30 + (float)var22), (double)(var10 + var5), (double)(var31 + (float)var32 + 0.0F), (double)((var28 + (float)var22) * var19 + var17), (double)((var29 + (float)var32 + 0.5F) * var19 + var18)); - var3.addVertexWithUV((double)(var30 + (float)var22), (double)(var10 + 0.0F), (double)(var31 + (float)var32 + 0.0F), (double)((var28 + (float)var22) * var19 + var17), (double)((var29 + (float)var32 + 0.5F) * var19 + var18)); - var3.addVertexWithUV((double)(var30 + 0.0F), (double)(var10 + 0.0F), (double)(var31 + (float)var32 + 0.0F), (double)((var28 + 0.0F) * var19 + var17), (double)((var29 + (float)var32 + 0.5F) * var19 + var18)); - } - } - - if(var27 <= 1) { - var3.setNormal(0.0F, 0.0F, 1.0F); - - for(var32 = 0; var32 < var22; ++var32) { - var3.addVertexWithUV((double)(var30 + 0.0F), (double)(var10 + var5), (double)(var31 + (float)var32 + 1.0F - var24), (double)((var28 + 0.0F) * var19 + var17), (double)((var29 + (float)var32 + 0.5F) * var19 + var18)); - var3.addVertexWithUV((double)(var30 + (float)var22), (double)(var10 + var5), (double)(var31 + (float)var32 + 1.0F - var24), (double)((var28 + (float)var22) * var19 + var17), (double)((var29 + (float)var32 + 0.5F) * var19 + var18)); - var3.addVertexWithUV((double)(var30 + (float)var22), (double)(var10 + 0.0F), (double)(var31 + (float)var32 + 1.0F - var24), (double)((var28 + (float)var22) * var19 + var17), (double)((var29 + (float)var32 + 0.5F) * var19 + var18)); - var3.addVertexWithUV((double)(var30 + 0.0F), (double)(var10 + 0.0F), (double)(var31 + (float)var32 + 1.0F - var24), (double)((var28 + 0.0F) * var19 + var17), (double)((var29 + (float)var32 + 0.5F) * var19 + var18)); - } - } - - var3.draw(); - } - } - } - - GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); - GL11.glDisable(GL11.GL_BLEND); - GL11.glEnable(GL11.GL_CULL_FACE); - } - - public boolean updateRenderers(EntityPlayer var1, boolean var2) { - Collections.sort(this.worldRenderersToUpdate, new RenderSorter(var1)); - int var3 = this.worldRenderersToUpdate.size() - 1; - int var4 = this.worldRenderersToUpdate.size(); - - for(int var5 = 0; var5 < var4; ++var5) { - WorldRenderer var6 = (WorldRenderer)this.worldRenderersToUpdate.get(var3 - var5); - if(!var2) { - if(var6.distanceToEntitySquared(var1) > 1024.0F) { - if(var6.isInFrustum) { - if(var5 >= 3) { - return false; - } - } else if(var5 >= 1) { - return false; - } - } - } else if(!var6.isInFrustum) { - continue; - } - - var6.updateRenderer(); - this.worldRenderersToUpdate.remove(var6); - var6.needsUpdate = false; - } - - return this.worldRenderersToUpdate.size() == 0; - } - - public void drawBlockBreaking(EntityPlayer var1, MovingObjectPosition var2, int var3, ItemStack var4, float var5) { - Tessellator var6 = Tessellator.instance; - GL11.glEnable(GL11.GL_BLEND); - GL11.glEnable(GL11.GL_ALPHA_TEST); - GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE); - GL11.glColor4f(1.0F, 1.0F, 1.0F, (MathHelper.sin((float)System.currentTimeMillis() / 100.0F) * 0.2F + 0.4F) * 0.5F); - int var8; - if(var3 == 0) { - if(this.damagePartialTime > 0.0F) { - GL11.glBlendFunc(GL11.GL_DST_COLOR, GL11.GL_SRC_COLOR); - int var7 = this.renderEngine.getTexture("/terrain.png"); - GL11.glBindTexture(GL11.GL_TEXTURE_2D, var7); - GL11.glColor4f(1.0F, 1.0F, 1.0F, 0.5F); - GL11.glPushMatrix(); - var8 = this.theWorld.getBlockId(var2.blockX, var2.blockY, var2.blockZ); - Block var9 = var8 > 0 ? Block.blocksList[var8] : null; - GL11.glDisable(GL11.GL_ALPHA_TEST); - GL11.glPolygonOffset(-3.0F, -3.0F); - GL11.glEnable(GL11.GL_POLYGON_OFFSET_FILL); - var6.startDrawingQuads(); - double var10 = var1.lastTickPosX + (var1.posX - var1.lastTickPosX) * (double)var5; - double var12 = var1.lastTickPosY + (var1.posY - var1.lastTickPosY) * (double)var5; - double var14 = var1.lastTickPosZ + (var1.posZ - var1.lastTickPosZ) * (double)var5; - var6.setTranslationD(-var10, -var12, -var14); - var6.disableColor(); - if(var9 == null) { - var9 = Block.stone; - } - - this.globalRenderBlocks.renderBlockUsingTexture(var9, var2.blockX, var2.blockY, var2.blockZ, 240 + (int)(this.damagePartialTime * 10.0F)); - var6.draw(); - var6.setTranslationD(0.0D, 0.0D, 0.0D); - GL11.glPolygonOffset(0.0F, 0.0F); - GL11.glDisable(GL11.GL_POLYGON_OFFSET_FILL); - GL11.glEnable(GL11.GL_ALPHA_TEST); - GL11.glDepthMask(true); - GL11.glPopMatrix(); - } - } else if(var4 != null) { - GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); - float var16 = MathHelper.sin((float)System.currentTimeMillis() / 100.0F) * 0.2F + 0.8F; - GL11.glColor4f(var16, var16, var16, MathHelper.sin((float)System.currentTimeMillis() / 200.0F) * 0.2F + 0.5F); - var8 = this.renderEngine.getTexture("/terrain.png"); - GL11.glBindTexture(GL11.GL_TEXTURE_2D, var8); - int var17 = var2.blockX; - int var18 = var2.blockY; - int var11 = var2.blockZ; - if(var2.sideHit == 0) { - --var18; - } - - if(var2.sideHit == 1) { - ++var18; - } - - if(var2.sideHit == 2) { - --var11; - } - - if(var2.sideHit == 3) { - ++var11; - } - - if(var2.sideHit == 4) { - --var17; - } - - if(var2.sideHit == 5) { - ++var17; - } - } - - GL11.glDisable(GL11.GL_BLEND); - GL11.glDisable(GL11.GL_ALPHA_TEST); - } - - public void drawSelectionBox(EntityPlayer var1, MovingObjectPosition var2, int var3, ItemStack var4, float var5) { - if(var3 == 0 && var2.typeOfHit == 0) { - GL11.glEnable(GL11.GL_BLEND); - GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); - GL11.glColor4f(0.0F, 0.0F, 0.0F, 0.4F); - GL11.glLineWidth(2.0F); - GL11.glDisable(GL11.GL_TEXTURE_2D); - GL11.glDepthMask(false); - float var6 = 0.002F; - int var7 = this.theWorld.getBlockId(var2.blockX, var2.blockY, var2.blockZ); - if(var7 > 0) { - double var8 = var1.lastTickPosX + (var1.posX - var1.lastTickPosX) * (double)var5; - double var10 = var1.lastTickPosY + (var1.posY - var1.lastTickPosY) * (double)var5; - double var12 = var1.lastTickPosZ + (var1.posZ - var1.lastTickPosZ) * (double)var5; - this.drawOutlinedBoundingBox(Block.blocksList[var7].getSelectedBoundingBoxFromPool(this.theWorld, var2.blockX, var2.blockY, var2.blockZ).expand((double)var6, (double)var6, (double)var6).getOffsetBoundingBox(-var8, -var10, -var12)); - } - - GL11.glDepthMask(true); - GL11.glEnable(GL11.GL_TEXTURE_2D); - GL11.glDisable(GL11.GL_BLEND); - } - - } - - private void drawOutlinedBoundingBox(AxisAlignedBB var1) { - Tessellator var2 = Tessellator.instance; - var2.startDrawing(3); - var2.addVertex(var1.minX, var1.minY, var1.minZ); - var2.addVertex(var1.maxX, var1.minY, var1.minZ); - var2.addVertex(var1.maxX, var1.minY, var1.maxZ); - var2.addVertex(var1.minX, var1.minY, var1.maxZ); - var2.addVertex(var1.minX, var1.minY, var1.minZ); - var2.draw(); - var2.startDrawing(3); - var2.addVertex(var1.minX, var1.maxY, var1.minZ); - var2.addVertex(var1.maxX, var1.maxY, var1.minZ); - var2.addVertex(var1.maxX, var1.maxY, var1.maxZ); - var2.addVertex(var1.minX, var1.maxY, var1.maxZ); - var2.addVertex(var1.minX, var1.maxY, var1.minZ); - var2.draw(); - var2.startDrawing(1); - var2.addVertex(var1.minX, var1.minY, var1.minZ); - var2.addVertex(var1.minX, var1.maxY, var1.minZ); - var2.addVertex(var1.maxX, var1.minY, var1.minZ); - var2.addVertex(var1.maxX, var1.maxY, var1.minZ); - var2.addVertex(var1.maxX, var1.minY, var1.maxZ); - var2.addVertex(var1.maxX, var1.maxY, var1.maxZ); - var2.addVertex(var1.minX, var1.minY, var1.maxZ); - var2.addVertex(var1.minX, var1.maxY, var1.maxZ); - var2.draw(); - } - - public void markBlocksForUpdate(int var1, int var2, int var3, int var4, int var5, int var6) { - int var7 = MathHelper.bucketInt(var1, 16); - int var8 = MathHelper.bucketInt(var2, 16); - int var9 = MathHelper.bucketInt(var3, 16); - int var10 = MathHelper.bucketInt(var4, 16); - int var11 = MathHelper.bucketInt(var5, 16); - int var12 = MathHelper.bucketInt(var6, 16); - - for(int var13 = var7; var13 <= var10; ++var13) { - int var14 = var13 % this.renderChunksWide; - if(var14 < 0) { - var14 += this.renderChunksWide; - } - - for(int var15 = var8; var15 <= var11; ++var15) { - int var16 = var15 % this.renderChunksTall; - if(var16 < 0) { - var16 += this.renderChunksTall; - } - - for(int var17 = var9; var17 <= var12; ++var17) { - int var18 = var17 % this.renderChunksDeep; - if(var18 < 0) { - var18 += this.renderChunksDeep; - } - - int var19 = (var18 * this.renderChunksTall + var16) * this.renderChunksWide + var14; - WorldRenderer var20 = this.worldRenderers[var19]; - if(!var20.needsUpdate) { - this.worldRenderersToUpdate.add(var20); - } - - var20.markDirty(); - } - } - } - - } - - public void markBlockAndNeighborsNeedsUpdate(int var1, int var2, int var3) { - this.markBlocksForUpdate(var1 - 1, var2 - 1, var3 - 1, var1 + 1, var2 + 1, var3 + 1); - } - - public void markBlockRangeNeedsUpdate(int var1, int var2, int var3, int var4, int var5, int var6) { - this.markBlocksForUpdate(var1 - 1, var2 - 1, var3 - 1, var4 + 1, var5 + 1, var6 + 1); - } - - public void clipRenderersByFrustrum(ICamera var1, float var2) { - for(int var3 = 0; var3 < this.worldRenderers.length; ++var3) { - if(!this.worldRenderers[var3].skipAllRenderPasses() && (!this.worldRenderers[var3].isInFrustum || (var3 + this.frustumCheckOffset & 15) == 0)) { - this.worldRenderers[var3].updateInFrustrum(var1); - } - } - - ++this.frustumCheckOffset; - } - - public void playSound(String var1, double var2, double var4, double var6, float var8, float var9) { - this.mc.sndManager.playSound(var1, (float)var2, (float)var4, (float)var6, var8, var9); - } - - public void spawnParticle(String var1, double var2, double var4, double var6, double var8, double var10, double var12) { - double var14 = this.theWorld.playerEntity.posX - var2; - double var16 = this.theWorld.playerEntity.posY - var4; - double var18 = this.theWorld.playerEntity.posZ - var6; - if(var14 * var14 + var16 * var16 + var18 * var18 <= 256.0D) { - if(var1 == "bubble") { - this.mc.effectRenderer.addEffect(new EntityBubbleFX(this.theWorld, var2, var4, var6, var8, var10, var12)); - } else if(var1 == "smoke") { - this.mc.effectRenderer.addEffect(new EntitySmokeFX(this.theWorld, var2, var4, var6)); - } else if(var1 == "explode") { - this.mc.effectRenderer.addEffect(new EntityExplodeFX(this.theWorld, var2, var4, var6, var8, var10, var12)); - } else if(var1 == "flame") { - this.mc.effectRenderer.addEffect(new EntityFlameFX(this.theWorld, var2, var4, var6, var8, var10, var12)); - } else if(var1 == "lava") { - this.mc.effectRenderer.addEffect(new EntityLavaFX(this.theWorld, var2, var4, var6)); - } else if(var1 == "splash") { - this.mc.effectRenderer.addEffect(new EntitySplashFX(this.theWorld, var2, var4, var6, var8, var10, var12)); - } else if(var1 == "largesmoke") { - this.mc.effectRenderer.addEffect(new EntitySmokeFX(this.theWorld, var2, var4, var6, 2.5F)); - } - - } - } - - public void obtainEntitySkin(Entity var1) { - if(var1.skinUrl != null) { - this.renderEngine.obtainImageData(var1.skinUrl, new ImageBufferDownload()); - } - - } - - public void releaseEntitySkin(Entity var1) { - if(var1.skinUrl != null) { - this.renderEngine.releaseImageData(var1.skinUrl); - } - - } - - public void updateAllRenderers() { - for(int var1 = 0; var1 < this.worldRenderers.length; ++var1) { - if(this.worldRenderers[var1].isChunkLit) { - if(!this.worldRenderers[var1].needsUpdate) { - this.worldRenderersToUpdate.add(this.worldRenderers[var1]); - } - - this.worldRenderers[var1].markDirty(); - } - } - - } -} diff --git a/src/net/minecraft/src/RenderHelper.java b/src/net/minecraft/src/RenderHelper.java deleted file mode 100644 index daf49c3..0000000 --- a/src/net/minecraft/src/RenderHelper.java +++ /dev/null @@ -1,49 +0,0 @@ -package net.minecraft.src; - -import java.nio.FloatBuffer; -import org.lwjgl.opengl.GL11; - -public class RenderHelper { - private static FloatBuffer colorBuffer = GLAllocation.createFloatBuffer(16); - - public static void disableStandardItemLighting() { - GL11.glDisable(GL11.GL_LIGHTING); - GL11.glDisable(GL11.GL_LIGHT0); - GL11.glDisable(GL11.GL_LIGHT1); - GL11.glDisable(GL11.GL_COLOR_MATERIAL); - } - - public static void enableStandardItemLighting() { - GL11.glEnable(GL11.GL_LIGHTING); - GL11.glEnable(GL11.GL_LIGHT0); - GL11.glEnable(GL11.GL_LIGHT1); - GL11.glEnable(GL11.GL_COLOR_MATERIAL); - GL11.glColorMaterial(GL11.GL_FRONT_AND_BACK, GL11.GL_AMBIENT_AND_DIFFUSE); - float var0 = 0.4F; - float var1 = 0.6F; - float var2 = 0.0F; - Vec3D var3 = Vec3D.createVector((double)0.7F, 1.0D, (double)-0.2F).normalize(); - GL11.glLight(GL11.GL_LIGHT0, GL11.GL_POSITION, setColorBuffer(var3.xCoord, var3.yCoord, var3.zCoord, 0.0D)); - GL11.glLight(GL11.GL_LIGHT0, GL11.GL_DIFFUSE, setColorBuffer(var1, var1, var1, 1.0F)); - GL11.glLight(GL11.GL_LIGHT0, GL11.GL_AMBIENT, setColorBuffer(0.0F, 0.0F, 0.0F, 1.0F)); - GL11.glLight(GL11.GL_LIGHT0, GL11.GL_SPECULAR, setColorBuffer(var2, var2, var2, 1.0F)); - var3 = Vec3D.createVector((double)-0.7F, 1.0D, (double)0.2F).normalize(); - GL11.glLight(GL11.GL_LIGHT1, GL11.GL_POSITION, setColorBuffer(var3.xCoord, var3.yCoord, var3.zCoord, 0.0D)); - GL11.glLight(GL11.GL_LIGHT1, GL11.GL_DIFFUSE, setColorBuffer(var1, var1, var1, 1.0F)); - GL11.glLight(GL11.GL_LIGHT1, GL11.GL_AMBIENT, setColorBuffer(0.0F, 0.0F, 0.0F, 1.0F)); - GL11.glLight(GL11.GL_LIGHT1, GL11.GL_SPECULAR, setColorBuffer(var2, var2, var2, 1.0F)); - GL11.glShadeModel(GL11.GL_FLAT); - GL11.glLightModel(GL11.GL_LIGHT_MODEL_AMBIENT, setColorBuffer(var0, var0, var0, 1.0F)); - } - - private static FloatBuffer setColorBuffer(double var0, double var2, double var4, double var6) { - return setColorBuffer((float)var0, (float)var2, (float)var4, (float)var6); - } - - private static FloatBuffer setColorBuffer(float var0, float var1, float var2, float var3) { - colorBuffer.clear(); - colorBuffer.put(var0).put(var1).put(var2).put(var3); - colorBuffer.flip(); - return colorBuffer; - } -} diff --git a/src/net/minecraft/src/RenderItem.java b/src/net/minecraft/src/RenderItem.java deleted file mode 100644 index bc50e5c..0000000 --- a/src/net/minecraft/src/RenderItem.java +++ /dev/null @@ -1,193 +0,0 @@ -package net.minecraft.src; - -import java.util.Random; -import org.lwjgl.opengl.GL11; -import org.lwjgl.opengl.GL12; - -public class RenderItem extends Render { - private RenderBlocks renderBlocks = new RenderBlocks(); - private Random random = new Random(); - - public RenderItem() { - this.shadowSize = 0.15F; - this.shadowOpaque = 12.0F / 16.0F; - } - - public void a(EntityItem var1, double var2, double var4, double var6, float var8, float var9) { - this.random.setSeed(187L); - ItemStack var10 = var1.item; - GL11.glPushMatrix(); - float var11 = MathHelper.sin(((float)var1.age + var9) / 10.0F + var1.hoverStart) * 0.1F + 0.1F; - float var12 = (((float)var1.age + var9) / 20.0F + var1.hoverStart) * (180.0F / (float)Math.PI); - byte var13 = 1; - if(var1.item.stackSize > 1) { - var13 = 2; - } - - if(var1.item.stackSize > 5) { - var13 = 3; - } - - if(var1.item.stackSize > 20) { - var13 = 4; - } - - GL11.glTranslatef((float)var2, (float)var4 + var11, (float)var6); - GL11.glEnable(GL12.GL_RESCALE_NORMAL); - float var16; - float var17; - float var18; - if(var10.itemID < 256 && Block.blocksList[var10.itemID].getRenderType() == 0) { - GL11.glRotatef(var12, 0.0F, 1.0F, 0.0F); - this.loadTexture("/terrain.png"); - float var27 = 0.25F; - if(!Block.blocksList[var10.itemID].renderAsNormalBlock() && var10.itemID != Block.stairSingle.blockID) { - var27 = 0.5F; - } - - GL11.glScalef(var27, var27, var27); - - for(int var28 = 0; var28 < var13; ++var28) { - GL11.glPushMatrix(); - if(var28 > 0) { - var16 = (this.random.nextFloat() * 2.0F - 1.0F) * 0.2F / var27; - var17 = (this.random.nextFloat() * 2.0F - 1.0F) * 0.2F / var27; - var18 = (this.random.nextFloat() * 2.0F - 1.0F) * 0.2F / var27; - GL11.glTranslatef(var16, var17, var18); - } - - this.renderBlocks.renderBlockOnInventory(Block.blocksList[var10.itemID]); - GL11.glPopMatrix(); - } - } else { - GL11.glScalef(0.5F, 0.5F, 0.5F); - int var14 = var10.getIconIndex(); - if(var10.itemID < 256) { - this.loadTexture("/terrain.png"); - } else { - this.loadTexture("/gui/items.png"); - } - - Tessellator var15 = Tessellator.instance; - var16 = (float)(var14 % 16 * 16 + 0) / 256.0F; - var17 = (float)(var14 % 16 * 16 + 16) / 256.0F; - var18 = (float)(var14 / 16 * 16 + 0) / 256.0F; - float var19 = (float)(var14 / 16 * 16 + 16) / 256.0F; - float var20 = 1.0F; - float var21 = 0.5F; - float var22 = 0.25F; - - for(int var23 = 0; var23 < var13; ++var23) { - GL11.glPushMatrix(); - if(var23 > 0) { - float var24 = (this.random.nextFloat() * 2.0F - 1.0F) * 0.3F; - float var25 = (this.random.nextFloat() * 2.0F - 1.0F) * 0.3F; - float var26 = (this.random.nextFloat() * 2.0F - 1.0F) * 0.3F; - GL11.glTranslatef(var24, var25, var26); - } - - GL11.glRotatef(180.0F - this.renderManager.playerViewY, 0.0F, 1.0F, 0.0F); - var15.startDrawingQuads(); - var15.setNormal(0.0F, 1.0F, 0.0F); - var15.addVertexWithUV((double)(0.0F - var21), (double)(0.0F - var22), 0.0D, (double)var16, (double)var19); - var15.addVertexWithUV((double)(var20 - var21), (double)(0.0F - var22), 0.0D, (double)var17, (double)var19); - var15.addVertexWithUV((double)(var20 - var21), (double)(1.0F - var22), 0.0D, (double)var17, (double)var18); - var15.addVertexWithUV((double)(0.0F - var21), (double)(1.0F - var22), 0.0D, (double)var16, (double)var18); - var15.draw(); - GL11.glPopMatrix(); - } - } - - GL11.glDisable(GL12.GL_RESCALE_NORMAL); - GL11.glPopMatrix(); - } - - public void drawItemIntoGui(FontRenderer var1, RenderEngine var2, ItemStack var3, int var4, int var5) { - if(var3 != null) { - if(var3.itemID < 256 && Block.blocksList[var3.itemID].getRenderType() == 0) { - int var6 = var3.itemID; - var2.bindTexture(var2.getTexture("/terrain.png")); - Block var7 = Block.blocksList[var6]; - GL11.glPushMatrix(); - GL11.glTranslatef((float)(var4 - 2), (float)(var5 + 3), 0.0F); - GL11.glScalef(10.0F, 10.0F, 10.0F); - GL11.glTranslatef(1.0F, 0.5F, 8.0F); - GL11.glRotatef(210.0F, 1.0F, 0.0F, 0.0F); - GL11.glRotatef(45.0F, 0.0F, 1.0F, 0.0F); - GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); - this.renderBlocks.renderBlockOnInventory(var7); - GL11.glPopMatrix(); - } else if(var3.getIconIndex() >= 0) { - GL11.glDisable(GL11.GL_LIGHTING); - if(var3.itemID < 256) { - var2.bindTexture(var2.getTexture("/terrain.png")); - } else { - var2.bindTexture(var2.getTexture("/gui/items.png")); - } - - this.renderTexturedQuad(var4, var5, var3.getIconIndex() % 16 * 16, var3.getIconIndex() / 16 * 16, 16, 16); - GL11.glEnable(GL11.GL_LIGHTING); - } - - } - } - - public void renderItemOverlayIntoGUI(FontRenderer var1, RenderEngine var2, ItemStack var3, int var4, int var5) { - if(var3 != null) { - if(var3.stackSize > 1) { - String var6 = "" + var3.stackSize; - GL11.glDisable(GL11.GL_LIGHTING); - GL11.glDisable(GL11.GL_DEPTH_TEST); - var1.drawStringWithShadow(var6, var4 + 19 - 2 - var1.getStringWidth(var6), var5 + 6 + 3, 16777215); - GL11.glEnable(GL11.GL_LIGHTING); - GL11.glEnable(GL11.GL_DEPTH_TEST); - } - - if(var3.itemDmg > 0) { - int var11 = 13 - var3.itemDmg * 13 / var3.getMaxDamage(); - int var7 = 255 - var3.itemDmg * 255 / var3.getMaxDamage(); - GL11.glDisable(GL11.GL_LIGHTING); - GL11.glDisable(GL11.GL_DEPTH_TEST); - GL11.glDisable(GL11.GL_TEXTURE_2D); - Tessellator var8 = Tessellator.instance; - int var9 = 255 - var7 << 16 | var7 << 8; - int var10 = (255 - var7) / 4 << 16 | 16128; - this.renderQuad(var8, var4 + 2, var5 + 13, 13, 2, 0); - this.renderQuad(var8, var4 + 2, var5 + 13, 12, 1, var10); - this.renderQuad(var8, var4 + 2, var5 + 13, var11, 1, var9); - GL11.glEnable(GL11.GL_TEXTURE_2D); - GL11.glEnable(GL11.GL_LIGHTING); - GL11.glEnable(GL11.GL_DEPTH_TEST); - GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); - } - - } - } - - private void renderQuad(Tessellator var1, int var2, int var3, int var4, int var5, int var6) { - var1.startDrawingQuads(); - var1.setColorOpaque_I(var6); - var1.addVertex((double)(var2 + 0), (double)(var3 + 0), 0.0D); - var1.addVertex((double)(var2 + 0), (double)(var3 + var5), 0.0D); - var1.addVertex((double)(var2 + var4), (double)(var3 + var5), 0.0D); - var1.addVertex((double)(var2 + var4), (double)(var3 + 0), 0.0D); - var1.draw(); - } - - public void renderTexturedQuad(int var1, int var2, int var3, int var4, int var5, int var6) { - float var7 = 0.0F; - float var8 = 0.00390625F; - float var9 = 0.00390625F; - Tessellator var10 = Tessellator.instance; - var10.startDrawingQuads(); - var10.addVertexWithUV((double)(var1 + 0), (double)(var2 + var6), (double)var7, (double)((float)(var3 + 0) * var8), (double)((float)(var4 + var6) * var9)); - var10.addVertexWithUV((double)(var1 + var5), (double)(var2 + var6), (double)var7, (double)((float)(var3 + var5) * var8), (double)((float)(var4 + var6) * var9)); - var10.addVertexWithUV((double)(var1 + var5), (double)(var2 + 0), (double)var7, (double)((float)(var3 + var5) * var8), (double)((float)(var4 + 0) * var9)); - var10.addVertexWithUV((double)(var1 + 0), (double)(var2 + 0), (double)var7, (double)((float)(var3 + 0) * var8), (double)((float)(var4 + 0) * var9)); - var10.draw(); - } - - public void doRender(Entity var1, double var2, double var4, double var6, float var8, float var9) { - this.a((EntityItem)var1, var2, var4, var6, var8, var9); - } -} diff --git a/src/net/minecraft/src/RenderList.java b/src/net/minecraft/src/RenderList.java deleted file mode 100644 index 4688443..0000000 --- a/src/net/minecraft/src/RenderList.java +++ /dev/null @@ -1,61 +0,0 @@ -package net.minecraft.src; - -import java.nio.IntBuffer; -import org.lwjgl.opengl.GL11; - -public class RenderList { - private int posX; - private int posY; - private int posZ; - private float playerPosX; - private float playerPosY; - private float playerPosZ; - private IntBuffer buffer = GLAllocation.createIntBuffer(65536); - private boolean render = false; - private boolean isCached = false; - - public void setLocation(int var1, int var2, int var3, double var4, double var6, double var8) { - this.render = true; - this.buffer.clear(); - this.posX = var1; - this.posY = var2; - this.posZ = var3; - this.playerPosX = (float)var4; - this.playerPosY = (float)var6; - this.playerPosZ = (float)var8; - } - - public boolean isRenderedAt(int var1, int var2, int var3) { - return !this.render ? false : var1 == this.posX && var2 == this.posY && var3 == this.posZ; - } - - public void render(int var1) { - this.buffer.put(var1); - if(this.buffer.remaining() == 0) { - this.render(); - } - - } - - public void render() { - if(this.render) { - if(!this.isCached) { - this.buffer.flip(); - this.isCached = true; - } - - if(this.buffer.remaining() > 0) { - GL11.glPushMatrix(); - GL11.glTranslatef((float)this.posX - this.playerPosX, (float)this.posY - this.playerPosY, (float)this.posZ - this.playerPosZ); - GL11.glCallLists(this.buffer); - GL11.glPopMatrix(); - } - - } - } - - public void reset() { - this.render = false; - this.isCached = false; - } -} diff --git a/src/net/minecraft/src/RenderLiving.java b/src/net/minecraft/src/RenderLiving.java deleted file mode 100644 index 564dd4c..0000000 --- a/src/net/minecraft/src/RenderLiving.java +++ /dev/null @@ -1,133 +0,0 @@ -package net.minecraft.src; - -import org.lwjgl.opengl.GL11; -import org.lwjgl.opengl.GL12; - -public class RenderLiving extends Render { - protected ModelBase mainModel; - protected ModelBase renderPassModel; - - public RenderLiving(ModelBase var1, float var2) { - this.mainModel = var1; - this.shadowSize = var2; - } - - public void setRenderPassModel(ModelBase var1) { - this.renderPassModel = var1; - } - - public void a(EntityLiving var1, double var2, double var4, double var6, float var8, float var9) { - GL11.glPushMatrix(); - GL11.glDisable(GL11.GL_CULL_FACE); - - try { - float var10 = var1.prevRenderYawOffset + (var1.renderYawOffset - var1.prevRenderYawOffset) * var9; - float var11 = var1.prevRotationYaw + (var1.rotationYaw - var1.prevRotationYaw) * var9; - float var12 = var1.prevRotationPitch + (var1.rotationPitch - var1.prevRotationPitch) * var9; - GL11.glTranslatef((float)var2, (float)var4, (float)var6); - float var13 = (float)var1.ticksExisted + var9; - GL11.glRotatef(180.0F - var10, 0.0F, 1.0F, 0.0F); - float var14; - if(var1.deathTime > 0) { - var14 = ((float)var1.deathTime + var9 - 1.0F) / 20.0F * 1.6F; - var14 = MathHelper.sqrt_float(var14); - if(var14 > 1.0F) { - var14 = 1.0F; - } - - GL11.glRotatef(var14 * this.getMaxDeathRotation(var1), 0.0F, 0.0F, 1.0F); - } - - var14 = 1.0F / 16.0F; - GL11.glEnable(GL12.GL_RESCALE_NORMAL); - GL11.glScalef(-1.0F, -1.0F, 1.0F); - this.preRenderCallback(var1, var9); - GL11.glTranslatef(0.0F, -24.0F * var14 - 0.0078125F, 0.0F); - float var15 = var1.prevLimbYaw + (var1.limbYaw - var1.prevLimbYaw) * var9; - float var16 = var1.limbSwing - var1.limbYaw * (1.0F - var9); - if(var15 > 1.0F) { - var15 = 1.0F; - } - - this.loadDownloadableImageTexture(var1.skinUrl, var1.getTexture()); - GL11.glEnable(GL11.GL_ALPHA_TEST); - this.mainModel.render(var16, var15, var13, var11 - var10, var12, var14); - - for(int var17 = 0; var17 < 4; ++var17) { - if(this.shouldRenderPass(var1, var17)) { - this.renderPassModel.render(var16, var15, var13, var11 - var10, var12, var14); - GL11.glDisable(GL11.GL_BLEND); - GL11.glEnable(GL11.GL_ALPHA_TEST); - } - } - - float var25 = var1.getEntityBrightness(var9); - int var18 = this.getColorMultiplier(var1, var25, var9); - if((var18 >> 24 & 255) > 0 || var1.hurtTime > 0 || var1.deathTime > 0) { - GL11.glDisable(GL11.GL_TEXTURE_2D); - GL11.glDisable(GL11.GL_ALPHA_TEST); - GL11.glEnable(GL11.GL_BLEND); - GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); - GL11.glDepthFunc(GL11.GL_EQUAL); - if(var1.hurtTime > 0 || var1.deathTime > 0) { - GL11.glColor4f(var25, 0.0F, 0.0F, 0.4F); - this.mainModel.render(var16, var15, var13, var11 - var10, var12, var14); - - for(int var19 = 0; var19 < 4; ++var19) { - if(this.shouldRenderPass(var1, var19)) { - GL11.glColor4f(var25, 0.0F, 0.0F, 0.4F); - this.renderPassModel.render(var16, var15, var13, var11 - var10, var12, var14); - } - } - } - - if((var18 >> 24 & 255) > 0) { - float var26 = (float)(var18 >> 16 & 255) / 255.0F; - float var20 = (float)(var18 >> 8 & 255) / 255.0F; - float var21 = (float)(var18 & 255) / 255.0F; - float var22 = (float)(var18 >> 24 & 255) / 255.0F; - GL11.glColor4f(var26, var20, var21, var22); - this.mainModel.render(var16, var15, var13, var11 - var10, var12, var14); - - for(int var23 = 0; var23 < 4; ++var23) { - if(this.shouldRenderPass(var1, var23)) { - GL11.glColor4f(var26, var20, var21, var22); - this.renderPassModel.render(var16, var15, var13, var11 - var10, var12, var14); - } - } - } - - GL11.glDepthFunc(GL11.GL_LEQUAL); - GL11.glDisable(GL11.GL_BLEND); - GL11.glEnable(GL11.GL_ALPHA_TEST); - GL11.glEnable(GL11.GL_TEXTURE_2D); - } - - GL11.glDisable(GL12.GL_RESCALE_NORMAL); - } catch (Exception var24) { - var24.printStackTrace(); - } - - GL11.glEnable(GL11.GL_CULL_FACE); - GL11.glPopMatrix(); - } - - protected boolean shouldRenderPass(EntityLiving var1, int var2) { - return false; - } - - protected float getMaxDeathRotation(EntityLiving var1) { - return 90.0F; - } - - protected int getColorMultiplier(EntityLiving var1, float var2, float var3) { - return 0; - } - - protected void preRenderCallback(EntityLiving var1, float var2) { - } - - public void doRender(Entity var1, double var2, double var4, double var6, float var8, float var9) { - this.a((EntityLiving)var1, var2, var4, var6, var8, var9); - } -} diff --git a/src/net/minecraft/src/RenderManager.java b/src/net/minecraft/src/RenderManager.java deleted file mode 100644 index 8d427a4..0000000 --- a/src/net/minecraft/src/RenderManager.java +++ /dev/null @@ -1,107 +0,0 @@ -package net.minecraft.src; - -import java.util.HashMap; -import java.util.Iterator; -import java.util.Map; -import org.lwjgl.opengl.GL11; - -public class RenderManager { - private Map entityRenderMap = new HashMap(); - public static RenderManager instance = new RenderManager(); - private FontRenderer fontRenderer; - public static double renderPosX; - public static double renderPosY; - public static double renderPosZ; - public RenderEngine renderEngine; - public World worldObj; - public EntityPlayer player; - public float playerViewY; - public float playerViewX; - public GameSettings options; - public double viewerPosX; - public double viewerPosY; - public double viewerPosZ; - - private RenderManager() { - this.entityRenderMap.put(EntitySpider.class, new RenderSpider()); - this.entityRenderMap.put(EntityPig.class, new RenderPig(new ModelPig(), new ModelPig(0.5F), 0.7F)); - this.entityRenderMap.put(EntitySheep.class, new RenderSheep(new ModelSheep(), new ModelSheepFur(), 0.7F)); - this.entityRenderMap.put(EntityCreeper.class, new RenderCreeper()); - this.entityRenderMap.put(EntitySkeleton.class, new RenderLiving(new ModelSkeleton(), 0.5F)); - this.entityRenderMap.put(EntityZombie.class, new RenderLiving(new ModelZombie(), 0.5F)); - this.entityRenderMap.put(EntityPlayer.class, new RenderPlayer()); - this.entityRenderMap.put(EntityGiant.class, new RenderGiantZombie(new ModelZombie(), 0.5F, 6.0F)); - this.entityRenderMap.put(EntityLiving.class, new RenderLiving(new ModelBiped(), 0.5F)); - this.entityRenderMap.put(Entity.class, new RenderEntity()); - this.entityRenderMap.put(EntityPainting.class, new RenderPainting()); - this.entityRenderMap.put(EntityArrow.class, new RenderArrow()); - this.entityRenderMap.put(EntityItem.class, new RenderItem()); - this.entityRenderMap.put(EntityTNTPrimed.class, new RenderTNTPrimed()); - this.entityRenderMap.put(EntityFallingSand.class, new RenderFallingSand()); - this.entityRenderMap.put(EntityMinecart.class, new RenderMinecart()); - Iterator var1 = this.entityRenderMap.values().iterator(); - - while(var1.hasNext()) { - Render var2 = (Render)var1.next(); - var2.setRenderManager(this); - } - - } - - public Render getEntityClassRenderObject(Class var1) { - Render var2 = (Render)this.entityRenderMap.get(var1); - if(var2 == null && var1 != Entity.class) { - var2 = this.getEntityClassRenderObject(var1.getSuperclass()); - this.entityRenderMap.put(var1, var2); - } - - return var2; - } - - public Render getEntityRenderObject(Entity var1) { - return this.getEntityClassRenderObject(var1.getClass()); - } - - public void cacheActiveRenderInfo(World var1, RenderEngine var2, FontRenderer var3, EntityPlayer var4, GameSettings var5, float var6) { - this.worldObj = var1; - this.renderEngine = var2; - this.options = var5; - this.player = var4; - this.fontRenderer = var3; - this.playerViewY = var4.prevRotationYaw + (var4.rotationYaw - var4.prevRotationYaw) * var6; - this.playerViewX = var4.prevRotationPitch + (var4.rotationPitch - var4.prevRotationPitch) * var6; - this.viewerPosX = var4.lastTickPosX + (var4.posX - var4.lastTickPosX) * (double)var6; - this.viewerPosY = var4.lastTickPosY + (var4.posY - var4.lastTickPosY) * (double)var6; - this.viewerPosZ = var4.lastTickPosZ + (var4.posZ - var4.lastTickPosZ) * (double)var6; - } - - public void renderEntity(Entity var1, float var2) { - double var3 = var1.lastTickPosX + (var1.posX - var1.lastTickPosX) * (double)var2; - double var5 = var1.lastTickPosY + (var1.posY - var1.lastTickPosY) * (double)var2; - double var7 = var1.lastTickPosZ + (var1.posZ - var1.lastTickPosZ) * (double)var2; - float var9 = var1.prevRotationYaw + (var1.rotationYaw - var1.prevRotationYaw) * var2; - float var10 = var1.getEntityBrightness(var2); - GL11.glColor3f(var10, var10, var10); - this.renderEntityWithPosYaw(var1, var3 - renderPosX, var5 - renderPosY, var7 - renderPosZ, var9, var2); - } - - public void renderEntityWithPosYaw(Entity var1, double var2, double var4, double var6, float var8, float var9) { - Render var10 = this.getEntityRenderObject(var1); - if(var10 != null) { - var10.doRender(var1, var2, var4, var6, var8, var9); - var10.doRenderShadowAndFire(var1, var2, var4, var6, var8, var9); - } - - } - - public void set(World var1) { - this.worldObj = var1; - } - - public double getDistanceToCamera(double var1, double var3, double var5) { - double var7 = var1 - this.viewerPosX; - double var9 = var3 - this.viewerPosY; - double var11 = var5 - this.viewerPosZ; - return var7 * var7 + var9 * var9 + var11 * var11; - } -} diff --git a/src/net/minecraft/src/RenderMinecart.java b/src/net/minecraft/src/RenderMinecart.java deleted file mode 100644 index a87bf34..0000000 --- a/src/net/minecraft/src/RenderMinecart.java +++ /dev/null @@ -1,70 +0,0 @@ -package net.minecraft.src; - -import org.lwjgl.opengl.GL11; - -public class RenderMinecart extends Render { - protected ModelBase modelMinecart; - - public RenderMinecart() { - this.shadowSize = 0.5F; - this.modelMinecart = new ModelMinecart(); - } - - public void a(EntityMinecart var1, double var2, double var4, double var6, float var8, float var9) { - GL11.glPushMatrix(); - double var10 = var1.lastTickPosX + (var1.posX - var1.lastTickPosX) * (double)var9; - double var12 = var1.lastTickPosY + (var1.posY - var1.lastTickPosY) * (double)var9; - double var14 = var1.lastTickPosZ + (var1.posZ - var1.lastTickPosZ) * (double)var9; - double var16 = (double)0.3F; - Vec3D var18 = var1.getPos(var10, var12, var14); - float var19 = var1.prevRotationPitch + (var1.rotationPitch - var1.prevRotationPitch) * var9; - if(var18 != null) { - Vec3D var20 = var1.getPosOffset(var10, var12, var14, var16); - Vec3D var21 = var1.getPosOffset(var10, var12, var14, -var16); - if(var20 == null) { - var20 = var18; - } - - if(var21 == null) { - var21 = var18; - } - - var2 += var18.xCoord - var10; - var4 += (var20.yCoord + var21.yCoord) / 2.0D - var12; - var6 += var18.zCoord - var14; - Vec3D var22 = var21.addVector(-var20.xCoord, -var20.yCoord, -var20.zCoord); - if(var22.lengthVector() != 0.0D) { - var22 = var22.normalize(); - var8 = (float)(Math.atan2(var22.zCoord, var22.xCoord) * 180.0D / Math.PI); - var19 = (float)(Math.atan(var22.yCoord) * 73.0D); - } - } - - GL11.glTranslatef((float)var2, (float)var4, (float)var6); - GL11.glRotatef(180.0F - var8, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(-var19, 0.0F, 0.0F, 1.0F); - float var23 = (float)var1.timeSinceHit - var9; - float var24 = (float)var1.damageTaken - var9; - if(var24 < 0.0F) { - var24 = 0.0F; - } - - if(var23 > 0.0F) { - GL11.glRotatef(MathHelper.sin(var23) * var23 * var24 / 10.0F * (float)var1.forwardDirection, 1.0F, 0.0F, 0.0F); - } - - this.loadTexture("/terrain.png"); - float var25 = 12.0F / 16.0F; - GL11.glScalef(var25, var25, var25); - (new RenderBlocks()).renderBlockOnInventory(Block.chest); - GL11.glScalef(1.0F / var25, 1.0F / var25, 1.0F / var25); - this.loadTexture("/item/cart.png"); - GL11.glScalef(-1.0F, -1.0F, 1.0F); - this.modelMinecart.render(0.0F, 0.0F, -0.1F, 0.0F, 0.0F, 1.0F / 16.0F); - GL11.glPopMatrix(); - } - - public void doRender(Entity var1, double var2, double var4, double var6, float var8, float var9) { - this.a((EntityMinecart)var1, var2, var4, var6, var8, var9); - } -} diff --git a/src/net/minecraft/src/RenderPainting.java b/src/net/minecraft/src/RenderPainting.java deleted file mode 100644 index 4545f64..0000000 --- a/src/net/minecraft/src/RenderPainting.java +++ /dev/null @@ -1,119 +0,0 @@ -package net.minecraft.src; - -import java.util.Random; -import org.lwjgl.opengl.GL11; -import org.lwjgl.opengl.GL12; - -public class RenderPainting extends Render { - private Random rand = new Random(); - - public void a(EntityPainting var1, double var2, double var4, double var6, float var8, float var9) { - this.rand.setSeed(187L); - GL11.glPushMatrix(); - GL11.glTranslatef((float)var2, (float)var4, (float)var6); - GL11.glRotatef(var8, 0.0F, 1.0F, 0.0F); - GL11.glEnable(GL12.GL_RESCALE_NORMAL); - this.loadTexture("/art/kz.png"); - EnumArt var10 = var1.art; - float var11 = 1.0F / 16.0F; - GL11.glScalef(var11, var11, var11); - this.setSizes(var1, var10.sizeX, var10.sizeY, var10.offsetX, var10.offsetY); - GL11.glDisable(GL12.GL_RESCALE_NORMAL); - GL11.glPopMatrix(); - } - - private void setSizes(EntityPainting var1, int var2, int var3, int var4, int var5) { - float var6 = (float)(-var2) / 2.0F; - float var7 = (float)(-var3) / 2.0F; - float var8 = -0.5F; - float var9 = 0.5F; - - for(int var10 = 0; var10 < var2 / 16; ++var10) { - for(int var11 = 0; var11 < var3 / 16; ++var11) { - float var12 = var6 + (float)((var10 + 1) * 16); - float var13 = var6 + (float)(var10 * 16); - float var14 = var7 + (float)((var11 + 1) * 16); - float var15 = var7 + (float)(var11 * 16); - this.getOffset(var1, (var12 + var13) / 2.0F, (var14 + var15) / 2.0F); - float var16 = (float)(var4 + var2 - var10 * 16) / 256.0F; - float var17 = (float)(var4 + var2 - (var10 + 1) * 16) / 256.0F; - float var18 = (float)(var5 + var3 - var11 * 16) / 256.0F; - float var19 = (float)(var5 + var3 - (var11 + 1) * 16) / 256.0F; - float var20 = 12.0F / 16.0F; - float var21 = 13.0F / 16.0F; - float var22 = 0.0F; - float var23 = 1.0F / 16.0F; - float var24 = 12.0F / 16.0F; - float var25 = 13.0F / 16.0F; - float var26 = 0.001953125F; - float var27 = 0.001953125F; - float var28 = 385.0F / 512.0F; - float var29 = 385.0F / 512.0F; - float var30 = 0.0F; - float var31 = 1.0F / 16.0F; - Tessellator var32 = Tessellator.instance; - var32.startDrawingQuads(); - var32.setNormal(0.0F, 0.0F, -1.0F); - var32.addVertexWithUV((double)var12, (double)var15, (double)var8, (double)var17, (double)var18); - var32.addVertexWithUV((double)var13, (double)var15, (double)var8, (double)var16, (double)var18); - var32.addVertexWithUV((double)var13, (double)var14, (double)var8, (double)var16, (double)var19); - var32.addVertexWithUV((double)var12, (double)var14, (double)var8, (double)var17, (double)var19); - var32.setNormal(0.0F, 0.0F, 1.0F); - var32.addVertexWithUV((double)var12, (double)var14, (double)var9, (double)var20, (double)var22); - var32.addVertexWithUV((double)var13, (double)var14, (double)var9, (double)var21, (double)var22); - var32.addVertexWithUV((double)var13, (double)var15, (double)var9, (double)var21, (double)var23); - var32.addVertexWithUV((double)var12, (double)var15, (double)var9, (double)var20, (double)var23); - var32.setNormal(0.0F, -1.0F, 0.0F); - var32.addVertexWithUV((double)var12, (double)var14, (double)var8, (double)var24, (double)var26); - var32.addVertexWithUV((double)var13, (double)var14, (double)var8, (double)var25, (double)var26); - var32.addVertexWithUV((double)var13, (double)var14, (double)var9, (double)var25, (double)var27); - var32.addVertexWithUV((double)var12, (double)var14, (double)var9, (double)var24, (double)var27); - var32.setNormal(0.0F, 1.0F, 0.0F); - var32.addVertexWithUV((double)var12, (double)var15, (double)var9, (double)var24, (double)var26); - var32.addVertexWithUV((double)var13, (double)var15, (double)var9, (double)var25, (double)var26); - var32.addVertexWithUV((double)var13, (double)var15, (double)var8, (double)var25, (double)var27); - var32.addVertexWithUV((double)var12, (double)var15, (double)var8, (double)var24, (double)var27); - var32.setNormal(-1.0F, 0.0F, 0.0F); - var32.addVertexWithUV((double)var12, (double)var14, (double)var9, (double)var29, (double)var30); - var32.addVertexWithUV((double)var12, (double)var15, (double)var9, (double)var29, (double)var31); - var32.addVertexWithUV((double)var12, (double)var15, (double)var8, (double)var28, (double)var31); - var32.addVertexWithUV((double)var12, (double)var14, (double)var8, (double)var28, (double)var30); - var32.setNormal(1.0F, 0.0F, 0.0F); - var32.addVertexWithUV((double)var13, (double)var14, (double)var8, (double)var29, (double)var30); - var32.addVertexWithUV((double)var13, (double)var15, (double)var8, (double)var29, (double)var31); - var32.addVertexWithUV((double)var13, (double)var15, (double)var9, (double)var28, (double)var31); - var32.addVertexWithUV((double)var13, (double)var14, (double)var9, (double)var28, (double)var30); - var32.draw(); - } - } - - } - - private void getOffset(EntityPainting var1, float var2, float var3) { - int var4 = MathHelper.floor_double(var1.posX); - int var5 = MathHelper.floor_double(var1.posY + (double)(var3 / 16.0F)); - int var6 = MathHelper.floor_double(var1.posZ); - if(var1.direction == 0) { - var4 = MathHelper.floor_double(var1.posX + (double)(var2 / 16.0F)); - } - - if(var1.direction == 1) { - var6 = MathHelper.floor_double(var1.posZ - (double)(var2 / 16.0F)); - } - - if(var1.direction == 2) { - var4 = MathHelper.floor_double(var1.posX - (double)(var2 / 16.0F)); - } - - if(var1.direction == 3) { - var6 = MathHelper.floor_double(var1.posZ + (double)(var2 / 16.0F)); - } - - float var7 = this.renderManager.worldObj.getBrightness(var4, var5, var6); - GL11.glColor3f(var7, var7, var7); - } - - public void doRender(Entity var1, double var2, double var4, double var6, float var8, float var9) { - this.a((EntityPainting)var1, var2, var4, var6, var8, var9); - } -} diff --git a/src/net/minecraft/src/RenderPig.java b/src/net/minecraft/src/RenderPig.java deleted file mode 100644 index 66a193e..0000000 --- a/src/net/minecraft/src/RenderPig.java +++ /dev/null @@ -1,17 +0,0 @@ -package net.minecraft.src; - -public class RenderPig extends RenderLiving { - public RenderPig(ModelBase var1, ModelBase var2, float var3) { - super(var1, var3); - this.setRenderPassModel(var2); - } - - protected boolean a(EntityPig var1, int var2) { - this.loadTexture("/mob/saddle.png"); - return var2 == 0 && var1.saddled; - } - - protected boolean shouldRenderPass(EntityLiving var1, int var2) { - return this.a((EntityPig)var1, var2); - } -} diff --git a/src/net/minecraft/src/RenderPlayer.java b/src/net/minecraft/src/RenderPlayer.java deleted file mode 100644 index af1ce50..0000000 --- a/src/net/minecraft/src/RenderPlayer.java +++ /dev/null @@ -1,55 +0,0 @@ -package net.minecraft.src; - -public class RenderPlayer extends RenderLiving { - private ModelBiped modelBipedMain = (ModelBiped)this.mainModel; - private ModelBiped modelArmorChestplate = new ModelBiped(1.0F); - private ModelBiped modelArmor = new ModelBiped(0.5F); - private static final String[] armorFilenamePrefix = new String[]{"cloth", "chain", "iron", "diamond", "gold"}; - - public RenderPlayer() { - super(new ModelBiped(0.0F), 0.5F); - } - - protected boolean a(EntityPlayer var1, int var2) { - ItemStack var3 = var1.inventory.armorItemInSlot(3 - var2); - if(var3 != null) { - Item var4 = var3.getItem(); - if(var4 instanceof ItemArmor) { - ItemArmor var5 = (ItemArmor)var4; - this.loadTexture("/armor/" + armorFilenamePrefix[var5.renderIndex] + "_" + (var2 == 2 ? 2 : 1) + ".png"); - ModelBiped var6 = var2 == 2 ? this.modelArmor : this.modelArmorChestplate; - var6.bipedHead.showModel = var2 == 0; - var6.bipedHeadwear.showModel = var2 == 0; - var6.bipedBody.showModel = var2 == 1 || var2 == 2; - var6.bipedRightArm.showModel = var2 == 1; - var6.bipedLeftArm.showModel = var2 == 1; - var6.bipedRightLeg.showModel = var2 == 2 || var2 == 3; - var6.bipedLeftLeg.showModel = var2 == 2 || var2 == 3; - this.setRenderPassModel(var6); - return true; - } - } - - return false; - } - - public void a(EntityPlayer var1, double var2, double var4, double var6, float var8, float var9) { - super.a(var1, var2, var4 - (double)var1.yOffset, var6, var8, var9); - } - - public void drawFirstPersonHand() { - this.modelBipedMain.bipedRightArm.render(1.0F / 16.0F); - } - - protected boolean shouldRenderPass(EntityLiving var1, int var2) { - return this.a((EntityPlayer)var1, var2); - } - - public void a(EntityLiving var1, double var2, double var4, double var6, float var8, float var9) { - this.a((EntityPlayer)var1, var2, var4, var6, var8, var9); - } - - public void doRender(Entity var1, double var2, double var4, double var6, float var8, float var9) { - this.a((EntityPlayer)var1, var2, var4, var6, var8, var9); - } -} diff --git a/src/net/minecraft/src/RenderSheep.java b/src/net/minecraft/src/RenderSheep.java deleted file mode 100644 index e7e8d6f..0000000 --- a/src/net/minecraft/src/RenderSheep.java +++ /dev/null @@ -1,17 +0,0 @@ -package net.minecraft.src; - -public class RenderSheep extends RenderLiving { - public RenderSheep(ModelBase var1, ModelBase var2, float var3) { - super(var1, var3); - this.setRenderPassModel(var2); - } - - protected boolean a(EntitySheep var1, int var2) { - this.loadTexture("/mob/sheep_fur.png"); - return var2 == 0 && !var1.sheared; - } - - protected boolean shouldRenderPass(EntityLiving var1, int var2) { - return this.a((EntitySheep)var1, var2); - } -} diff --git a/src/net/minecraft/src/RenderSorter.java b/src/net/minecraft/src/RenderSorter.java deleted file mode 100644 index 04a4d3a..0000000 --- a/src/net/minecraft/src/RenderSorter.java +++ /dev/null @@ -1,21 +0,0 @@ -package net.minecraft.src; - -import java.util.Comparator; - -public class RenderSorter implements Comparator { - private EntityPlayer entity; - - public RenderSorter(EntityPlayer var1) { - this.entity = var1; - } - - public int a(WorldRenderer var1, WorldRenderer var2) { - boolean var3 = var1.isInFrustum; - boolean var4 = var2.isInFrustum; - return var3 && !var4 ? 1 : (var4 && !var3 ? -1 : (var1.distanceToEntitySquared(this.entity) < var2.distanceToEntitySquared(this.entity) ? 1 : -1)); - } - - public int compare(Object var1, Object var2) { - return this.a((WorldRenderer)var1, (WorldRenderer)var2); - } -} diff --git a/src/net/minecraft/src/RenderSpider.java b/src/net/minecraft/src/RenderSpider.java deleted file mode 100644 index 18972d7..0000000 --- a/src/net/minecraft/src/RenderSpider.java +++ /dev/null @@ -1,38 +0,0 @@ -package net.minecraft.src; - -import org.lwjgl.opengl.GL11; - -public class RenderSpider extends RenderLiving { - public RenderSpider() { - super(new ModelSpider(), 1.0F); - this.setRenderPassModel(new ModelSpider()); - } - - protected float a(EntitySpider var1) { - return 180.0F; - } - - protected boolean a(EntitySpider var1, int var2) { - if(var2 != 0) { - return false; - } else if(var2 != 0) { - return false; - } else { - this.loadTexture("/mob/spider_eyes.png"); - float var3 = (1.0F - var1.getEntityBrightness(1.0F)) * 0.5F; - GL11.glEnable(GL11.GL_BLEND); - GL11.glDisable(GL11.GL_ALPHA_TEST); - GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); - GL11.glColor4f(1.0F, 1.0F, 1.0F, var3); - return true; - } - } - - protected float getMaxDeathRotation(EntityLiving var1) { - return this.a((EntitySpider)var1); - } - - protected boolean shouldRenderPass(EntityLiving var1, int var2) { - return this.a((EntitySpider)var1, var2); - } -} diff --git a/src/net/minecraft/src/RenderTNTPrimed.java b/src/net/minecraft/src/RenderTNTPrimed.java deleted file mode 100644 index b93ef70..0000000 --- a/src/net/minecraft/src/RenderTNTPrimed.java +++ /dev/null @@ -1,54 +0,0 @@ -package net.minecraft.src; - -import org.lwjgl.opengl.GL11; - -public class RenderTNTPrimed extends Render { - private RenderBlocks blockRenderer = new RenderBlocks(); - - public RenderTNTPrimed() { - this.shadowSize = 0.5F; - } - - public void a(EntityTNTPrimed var1, double var2, double var4, double var6, float var8, float var9) { - GL11.glPushMatrix(); - GL11.glTranslatef((float)var2, (float)var4, (float)var6); - float var10; - if((float)var1.fuse - var9 + 1.0F < 10.0F) { - var10 = 1.0F - ((float)var1.fuse - var9 + 1.0F) / 10.0F; - if(var10 < 0.0F) { - var10 = 0.0F; - } - - if(var10 > 1.0F) { - var10 = 1.0F; - } - - var10 *= var10; - var10 *= var10; - float var11 = 1.0F + var10 * 0.3F; - GL11.glScalef(var11, var11, var11); - } - - var10 = (1.0F - ((float)var1.fuse - var9 + 1.0F) / 100.0F) * 0.8F; - this.loadTexture("/terrain.png"); - this.blockRenderer.renderBlockOnInventory(Block.tnt); - if(var1.fuse / 5 % 2 == 0) { - GL11.glDisable(GL11.GL_TEXTURE_2D); - GL11.glDisable(GL11.GL_LIGHTING); - GL11.glEnable(GL11.GL_BLEND); - GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_DST_ALPHA); - GL11.glColor4f(1.0F, 1.0F, 1.0F, var10); - this.blockRenderer.renderBlockOnInventory(Block.tnt); - GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); - GL11.glDisable(GL11.GL_BLEND); - GL11.glEnable(GL11.GL_LIGHTING); - GL11.glEnable(GL11.GL_TEXTURE_2D); - } - - GL11.glPopMatrix(); - } - - public void doRender(Entity var1, double var2, double var4, double var6, float var8, float var9) { - this.a((EntityTNTPrimed)var1, var2, var4, var6, var8, var9); - } -} diff --git a/src/net/minecraft/src/ScaledResolution.java b/src/net/minecraft/src/ScaledResolution.java deleted file mode 100644 index 7d6ed74..0000000 --- a/src/net/minecraft/src/ScaledResolution.java +++ /dev/null @@ -1,26 +0,0 @@ -package net.minecraft.src; - -public class ScaledResolution { - private int scaledWidth; - private int scaledHeight; - - public ScaledResolution(int var1, int var2) { - this.scaledWidth = var1; - this.scaledHeight = var2; - - int var3; - for(var3 = 1; this.scaledWidth / (var3 + 1) >= 320 && this.scaledHeight / (var3 + 1) >= 240; ++var3) { - } - - this.scaledWidth /= var3; - this.scaledHeight /= var3; - } - - public int getScaledWidth() { - return this.scaledWidth; - } - - public int getScaledHeight() { - return this.scaledHeight; - } -} diff --git a/src/net/minecraft/src/Session.java b/src/net/minecraft/src/Session.java deleted file mode 100644 index 853aa65..0000000 --- a/src/net/minecraft/src/Session.java +++ /dev/null @@ -1,48 +0,0 @@ -package net.minecraft.src; - -import java.util.ArrayList; -import java.util.List; - -public class Session { - public static List registeredBlocksList = new ArrayList(); - public String username; - public String sessionId; - public String mpPassParameter; - - public Session(String var1, String var2) { - this.username = var1; - this.sessionId = var2; - } - - static { - registeredBlocksList.add(Block.stone); - registeredBlocksList.add(Block.cobblestone); - registeredBlocksList.add(Block.brick); - registeredBlocksList.add(Block.dirt); - registeredBlocksList.add(Block.planks); - registeredBlocksList.add(Block.wood); - registeredBlocksList.add(Block.leaves); - registeredBlocksList.add(Block.torch); - registeredBlocksList.add(Block.stairSingle); - registeredBlocksList.add(Block.glass); - registeredBlocksList.add(Block.cobblestoneMossy); - registeredBlocksList.add(Block.sapling); - registeredBlocksList.add(Block.plantYellow); - registeredBlocksList.add(Block.plantRed); - registeredBlocksList.add(Block.mushroomBrown); - registeredBlocksList.add(Block.mushroomRed); - registeredBlocksList.add(Block.sand); - registeredBlocksList.add(Block.gravel); - registeredBlocksList.add(Block.sponge); - registeredBlocksList.add(Block.cloth); - registeredBlocksList.add(Block.oreCoal); - registeredBlocksList.add(Block.oreIron); - registeredBlocksList.add(Block.oreGold); - registeredBlocksList.add(Block.blockSteel); - registeredBlocksList.add(Block.blockGold); - registeredBlocksList.add(Block.bookshelf); - registeredBlocksList.add(Block.tnt); - registeredBlocksList.add(Block.obsidian); - System.out.println(registeredBlocksList.size()); - } -} diff --git a/src/net/minecraft/src/SignModel.java b/src/net/minecraft/src/SignModel.java deleted file mode 100644 index 9325b7b..0000000 --- a/src/net/minecraft/src/SignModel.java +++ /dev/null @@ -1,17 +0,0 @@ -package net.minecraft.src; - -public class SignModel { - public ModelRenderer signBoard = new ModelRenderer(0, 0); - public ModelRenderer signStick; - - public SignModel() { - this.signBoard.addBox(-12.0F, -14.0F, -1.0F, 24, 12, 2, 0.0F); - this.signStick = new ModelRenderer(0, 14); - this.signStick.addBox(-1.0F, -2.0F, -1.0F, 2, 14, 2, 0.0F); - } - - public void renderSign() { - this.signBoard.render(1.0F / 16.0F); - this.signStick.render(1.0F / 16.0F); - } -} diff --git a/src/net/minecraft/src/Slot.java b/src/net/minecraft/src/Slot.java deleted file mode 100644 index 543f4ca..0000000 --- a/src/net/minecraft/src/Slot.java +++ /dev/null @@ -1,50 +0,0 @@ -package net.minecraft.src; - -public class Slot { - public final int slotIndex; - public final int xDisplayPosition; - public final int yDisplayPosition; - public final IInventory inventory; - private final GuiContainer inventoryGui; - - public Slot(GuiContainer var1, IInventory var2, int var3, int var4, int var5) { - this.inventoryGui = var1; - this.inventory = var2; - this.slotIndex = var3; - this.xDisplayPosition = var4; - this.yDisplayPosition = var5; - } - - public boolean getIsMouseOverSlot(int var1, int var2) { - int var3 = (this.inventoryGui.width - this.inventoryGui.xSize) / 2; - int var4 = (this.inventoryGui.height - this.inventoryGui.ySize) / 2; - var1 -= var3; - var2 -= var4; - return var1 >= this.xDisplayPosition - 1 && var1 < this.xDisplayPosition + 16 + 1 && var2 >= this.yDisplayPosition - 1 && var2 < this.yDisplayPosition + 16 + 1; - } - - public void onPickupFromSlot() { - this.onSlotChanged(); - } - - public boolean isItemValid(ItemStack var1) { - return true; - } - - public ItemStack getStack() { - return this.inventory.getStackInSlot(this.slotIndex); - } - - public void putStack(ItemStack var1) { - this.inventory.setInventorySlotContents(this.slotIndex, var1); - this.onSlotChanged(); - } - - public int getBackgroundIconIndex() { - return -1; - } - - public void onSlotChanged() { - this.inventory.onInventoryChanged(); - } -} diff --git a/src/net/minecraft/src/SlotArmor.java b/src/net/minecraft/src/SlotArmor.java deleted file mode 100644 index cf2689f..0000000 --- a/src/net/minecraft/src/SlotArmor.java +++ /dev/null @@ -1,20 +0,0 @@ -package net.minecraft.src; - -class SlotArmor extends Slot { - final int armorType; - final GuiInventory guiInventory; - - SlotArmor(GuiInventory var1, GuiContainer var2, IInventory var3, int var4, int var5, int var6, int var7) { - super(var2, var3, var4, var5, var6); - this.guiInventory = var1; - this.armorType = var7; - } - - public boolean isItemValid(ItemStack var1) { - return var1.getItem() instanceof ItemArmor ? ((ItemArmor)var1.getItem()).armorType == this.armorType : false; - } - - public int getBackgroundIconIndex() { - return 15 + this.armorType * 16; - } -} diff --git a/src/net/minecraft/src/SlotCrafting.java b/src/net/minecraft/src/SlotCrafting.java deleted file mode 100644 index 4a49dc1..0000000 --- a/src/net/minecraft/src/SlotCrafting.java +++ /dev/null @@ -1,23 +0,0 @@ -package net.minecraft.src; - -class SlotCrafting extends Slot { - private final IInventory craftMatrix; - - public SlotCrafting(GuiContainer var1, IInventory var2, IInventory var3, int var4, int var5, int var6) { - super(var1, var3, var4, var5, var6); - this.craftMatrix = var2; - } - - public boolean isItemValid(ItemStack var1) { - return false; - } - - public void onPickupFromSlot() { - for(int var1 = 0; var1 < this.craftMatrix.getSizeInventory(); ++var1) { - if(this.craftMatrix.getStackInSlot(var1) != null) { - this.craftMatrix.decrStackSize(var1, 1); - } - } - - } -} diff --git a/src/net/minecraft/src/SoundManager.java b/src/net/minecraft/src/SoundManager.java deleted file mode 100644 index 17d5492..0000000 --- a/src/net/minecraft/src/SoundManager.java +++ /dev/null @@ -1,138 +0,0 @@ -package net.minecraft.src; - -import java.io.File; -import paulscode.sound.SoundSystem; -import paulscode.sound.SoundSystemConfig; -import paulscode.sound.codecs.CodecJOrbis; -import paulscode.sound.codecs.CodecWav; -import paulscode.sound.libraries.LibraryLWJGLOpenAL; - -public class SoundManager { - private SoundSystem sndSystem; - private SoundPool soundPoolSounds = new SoundPool(); - private SoundPool soundPoolMusic = new SoundPool(); - private int latestSoundID = 0; - private GameSettings options; - private boolean loaded = false; - - public void loadSoundSettings(GameSettings var1) { - this.options = var1; - if(!this.loaded && (var1.sound || var1.music)) { - this.tryToSetLibraryAndCodecs(); - } - - } - - private void tryToSetLibraryAndCodecs() { - try { - boolean var1 = this.options.sound; - boolean var2 = this.options.music; - this.options.sound = false; - this.options.music = false; - this.options.saveOptions(); - SoundSystemConfig.addLibrary(LibraryLWJGLOpenAL.class); - SoundSystemConfig.setCodec("ogg", CodecJOrbis.class); - SoundSystemConfig.setCodec("wav", CodecWav.class); - this.sndSystem = new SoundSystem(); - this.options.sound = var1; - this.options.music = var2; - this.options.saveOptions(); - } catch (Throwable var3) { - System.err.println("error linking with the LibraryJavaSound plug-in"); - } - - this.loaded = true; - } - - public void onSoundOptionsChanged() { - if(!this.loaded && (this.options.sound || this.options.music)) { - this.tryToSetLibraryAndCodecs(); - } - - if(!this.options.music) { - this.sndSystem.stop("BgMusic"); - } - - } - - public void closeMinecraft() { - if(this.loaded) { - this.sndSystem.cleanup(); - } - - } - - public void addSound(String var1, File var2) { - this.soundPoolSounds.addSound(var1, var2); - } - - public void addMusic(String var1, File var2) { - this.soundPoolMusic.addSound(var1, var2); - } - - public void setListener(EntityLiving var1, float var2) { - if(this.loaded && this.options.sound) { - if(var1 != null) { - float var3 = var1.prevRotationPitch + (var1.rotationPitch - var1.prevRotationPitch) * var2; - float var4 = var1.prevRotationYaw + (var1.rotationYaw - var1.prevRotationYaw) * var2; - double var5 = var1.prevPosX + (var1.posX - var1.prevPosX) * (double)var2; - double var7 = var1.prevPosY + (var1.posY - var1.prevPosY) * (double)var2; - double var9 = var1.prevPosZ + (var1.posZ - var1.prevPosZ) * (double)var2; - float var11 = MathHelper.cos(-var4 * ((float)Math.PI / 180.0F) - (float)Math.PI); - float var12 = MathHelper.sin(-var4 * ((float)Math.PI / 180.0F) - (float)Math.PI); - float var13 = MathHelper.cos(-var3 * ((float)Math.PI / 180.0F)); - float var14 = MathHelper.sin(-var3 * ((float)Math.PI / 180.0F)); - float var15 = -var12 * var13; - float var17 = -var11 * var13; - float var18 = -var12 * var14; - float var20 = -var11 * var14; - this.sndSystem.setListenerPosition((float)var5, (float)var7, (float)var9); - this.sndSystem.setListenerOrientation(var15, var14, var17, var18, var13, var20); - } - } - } - - public void playSound(String var1, float var2, float var3, float var4, float var5, float var6) { - if(this.loaded && this.options.sound) { - SoundPoolEntry var7 = this.soundPoolSounds.getRandomSoundFromSoundPool(var1); - if(var7 != null && var5 > 0.0F) { - this.latestSoundID = (this.latestSoundID + 1) % 256; - String var8 = "sound_" + this.latestSoundID; - float var9 = 16.0F; - if(var5 > 1.0F) { - var9 *= var5; - } - - this.sndSystem.newSource(var5 > 1.0F, var8, var7.soundUrl, var7.soundName, false, var2, var3, var4, 2, var9); - this.sndSystem.setPitch(var8, var6); - if(var5 > 1.0F) { - var5 = 1.0F; - } - - this.sndSystem.setVolume(var8, var5); - this.sndSystem.play(var8); - } - - } - } - - public void playSoundFX(String var1, float var2, float var3) { - if(this.loaded && this.options.sound) { - SoundPoolEntry var4 = this.soundPoolSounds.getRandomSoundFromSoundPool(var1); - if(var4 != null) { - this.latestSoundID = (this.latestSoundID + 1) % 256; - String var5 = "sound_" + this.latestSoundID; - this.sndSystem.newSource(false, var5, var4.soundUrl, var4.soundName, false, 0.0F, 0.0F, 0.0F, 0, 0.0F); - if(var2 > 1.0F) { - var2 = 1.0F; - } - - var2 *= 0.25F; - this.sndSystem.setPitch(var5, var3); - this.sndSystem.setVolume(var5, var2); - this.sndSystem.play(var5); - } - - } - } -} diff --git a/src/net/minecraft/src/SoundPool.java b/src/net/minecraft/src/SoundPool.java deleted file mode 100644 index ab70ae6..0000000 --- a/src/net/minecraft/src/SoundPool.java +++ /dev/null @@ -1,42 +0,0 @@ -package net.minecraft.src; - -import java.io.File; -import java.net.MalformedURLException; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Random; - -public class SoundPool { - private Random rand = new Random(); - private Map nameToSoundPoolEntriesMapping = new HashMap(); - public int numberOfSoundPoolEntries = 0; - - public SoundPoolEntry addSound(String var1, File var2) { - try { - String var3 = var1; - - for(var1 = var1.substring(0, var1.indexOf(".")); Character.isDigit(var1.charAt(var1.length() - 1)); var1 = var1.substring(0, var1.length() - 1)) { - } - - var1 = var1.replaceAll("/", "."); - if(!this.nameToSoundPoolEntriesMapping.containsKey(var1)) { - this.nameToSoundPoolEntriesMapping.put(var1, new ArrayList()); - } - - SoundPoolEntry var4 = new SoundPoolEntry(var3, var2.toURI().toURL()); - ((List)this.nameToSoundPoolEntriesMapping.get(var1)).add(var4); - ++this.numberOfSoundPoolEntries; - return var4; - } catch (MalformedURLException var5) { - var5.printStackTrace(); - throw new RuntimeException(var5); - } - } - - public SoundPoolEntry getRandomSoundFromSoundPool(String var1) { - List var2 = (List)this.nameToSoundPoolEntriesMapping.get(var1); - return var2 == null ? null : (SoundPoolEntry)var2.get(this.rand.nextInt(var2.size())); - } -} diff --git a/src/net/minecraft/src/SoundPoolEntry.java b/src/net/minecraft/src/SoundPoolEntry.java deleted file mode 100644 index 341e9ba..0000000 --- a/src/net/minecraft/src/SoundPoolEntry.java +++ /dev/null @@ -1,13 +0,0 @@ -package net.minecraft.src; - -import java.net.URL; - -public class SoundPoolEntry { - public String soundName; - public URL soundUrl; - - public SoundPoolEntry(String var1, URL var2) { - this.soundName = var1; - this.soundUrl = var2; - } -} diff --git a/src/net/minecraft/src/SpawnerAnimals.java b/src/net/minecraft/src/SpawnerAnimals.java deleted file mode 100644 index 8acc13f..0000000 --- a/src/net/minecraft/src/SpawnerAnimals.java +++ /dev/null @@ -1,97 +0,0 @@ -package net.minecraft.src; - -public class SpawnerAnimals { - private int maxSpawns; - private Class entityType; - private Class[] entities; - - public SpawnerAnimals(int var1, Class var2, Class[] var3) { - this.maxSpawns = var1; - this.entityType = var2; - this.entities = var3; - } - - public void onUpdate(World var1) { - int var2 = var1.countEntities(this.entityType); - if(var2 < this.maxSpawns) { - for(int var3 = 0; var3 < 10; ++var3) { - this.performSpawning(var1, 1, var1.playerEntity, (IProgressUpdate)null); - } - } - - } - - protected ChunkPosition getRandomSpawningPointInChunk(World var1, int var2, int var3) { - int var4 = var2 + var1.rand.nextInt(256) - 128; - int var5 = var1.rand.nextInt(128); - int var6 = var3 + var1.rand.nextInt(256) - 128; - return new ChunkPosition(var4, var5, var6); - } - - private int performSpawning(World var1, int var2, Entity var3, IProgressUpdate var4) { - int var5 = 0; - int var6 = MathHelper.floor_double(var3.posX); - int var7 = MathHelper.floor_double(var3.posZ); - int var8 = var1.rand.nextInt(this.entities.length); - ChunkPosition var9 = this.getRandomSpawningPointInChunk(var1, var6, var7); - int var10 = var9.x; - int var11 = var9.y; - int var12 = var9.z; - if(var1.isBlockNormalCube(var10, var11, var12)) { - return 0; - } else if(var1.getBlockMaterial(var10, var11, var12) != Material.air) { - return 0; - } else { - for(int var13 = 0; var13 < 3; ++var13) { - int var14 = var10; - int var15 = var11; - int var16 = var12; - byte var17 = 6; - - for(int var18 = 0; var18 < 3; ++var18) { - var14 += var1.rand.nextInt(var17) - var1.rand.nextInt(var17); - var15 += var1.rand.nextInt(1) - var1.rand.nextInt(1); - var16 += var1.rand.nextInt(var17) - var1.rand.nextInt(var17); - if(var1.isBlockNormalCube(var14, var15 - 1, var16) && !var1.isBlockNormalCube(var14, var15, var16) && !var1.getBlockMaterial(var14, var15, var16).getIsLiquid() && !var1.isBlockNormalCube(var14, var15 + 1, var16)) { - float var19 = (float)var14 + 0.5F; - float var20 = (float)var15 + 1.0F; - float var21 = (float)var16 + 0.5F; - if(var3 != null) { - double var22 = (double)var19 - var3.posX; - double var24 = (double)var20 - var3.posY; - double var26 = (double)var21 - var3.posZ; - double var28 = var22 * var22 + var24 * var24 + var26 * var26; - if(var28 < 1024.0D) { - continue; - } - } else { - float var31 = var19 - (float)var1.spawnX; - float var23 = var20 - (float)var1.spawnY; - float var33 = var21 - (float)var1.spawnZ; - float var25 = var31 * var31 + var23 * var23 + var33 * var33; - if(var25 < 1024.0F) { - continue; - } - } - - EntityLiving var32; - try { - var32 = (EntityLiving)this.entities[var8].getConstructor(new Class[]{World.class}).newInstance(new Object[]{var1}); - } catch (Exception var30) { - var30.printStackTrace(); - return var5; - } - - var32.setPositionAndRotation((double)var19, (double)var20, (double)var21, var1.rand.nextFloat() * 360.0F, 0.0F); - if(var32.getCanSpawnHere((double)var19, (double)var20, (double)var21)) { - ++var5; - var1.spawnEntityInWorld(var32); - } - } - } - } - - return var5; - } - } -} diff --git a/src/net/minecraft/src/SpawnerMonsters.java b/src/net/minecraft/src/SpawnerMonsters.java deleted file mode 100644 index d253214..0000000 --- a/src/net/minecraft/src/SpawnerMonsters.java +++ /dev/null @@ -1,17 +0,0 @@ -package net.minecraft.src; - -class SpawnerMonsters extends SpawnerAnimals { - final PlayerControllerSP playerController; - - SpawnerMonsters(PlayerControllerSP var1, int var2, Class var3, Class[] var4) { - super(var2, var3, var4); - this.playerController = var1; - } - - protected ChunkPosition getRandomSpawningPointInChunk(World var1, int var2, int var3) { - int var4 = var2 + var1.rand.nextInt(256) - 128; - int var5 = var1.rand.nextInt(var1.rand.nextInt(var1.rand.nextInt(112) + 8) + 8); - int var6 = var3 + var1.rand.nextInt(256) - 128; - return new ChunkPosition(var4, var5, var6); - } -} diff --git a/src/net/minecraft/src/StepSound.java b/src/net/minecraft/src/StepSound.java deleted file mode 100644 index ad50bb0..0000000 --- a/src/net/minecraft/src/StepSound.java +++ /dev/null @@ -1,29 +0,0 @@ -package net.minecraft.src; - -public class StepSound { - public final String stepSoundName; - public final float stepSoundVolume; - public final float stepSoundPitch; - - public StepSound(String var1, float var2, float var3) { - this.stepSoundName = var1; - this.stepSoundVolume = var2; - this.stepSoundPitch = var3; - } - - public float getVolume() { - return this.stepSoundVolume; - } - - public float getPitch() { - return this.stepSoundPitch; - } - - public String getBreakSound() { - return "step." + this.stepSoundName; - } - - public String getStepSound() { - return "step." + this.stepSoundName; - } -} diff --git a/src/net/minecraft/src/StepSoundGlass.java b/src/net/minecraft/src/StepSoundGlass.java deleted file mode 100644 index a7f7d81..0000000 --- a/src/net/minecraft/src/StepSoundGlass.java +++ /dev/null @@ -1,11 +0,0 @@ -package net.minecraft.src; - -final class StepSoundGlass extends StepSound { - StepSoundGlass(String var1, float var2, float var3) { - super(var1, var2, var3); - } - - public String getBreakSound() { - return "random.glass"; - } -} diff --git a/src/net/minecraft/src/StepSoundSand.java b/src/net/minecraft/src/StepSoundSand.java deleted file mode 100644 index f1e2705..0000000 --- a/src/net/minecraft/src/StepSoundSand.java +++ /dev/null @@ -1,11 +0,0 @@ -package net.minecraft.src; - -final class StepSoundSand extends StepSound { - StepSoundSand(String var1, float var2, float var3) { - super(var1, var2, var3); - } - - public String getBreakSound() { - return "step.gravel"; - } -} diff --git a/src/net/minecraft/src/TerrainTextureManager.java b/src/net/minecraft/src/TerrainTextureManager.java deleted file mode 100644 index e6acf43..0000000 --- a/src/net/minecraft/src/TerrainTextureManager.java +++ /dev/null @@ -1,214 +0,0 @@ -package net.minecraft.src; - -import java.awt.image.BufferedImage; -import java.io.IOException; -import java.util.Arrays; -import javax.imageio.ImageIO; - -public class TerrainTextureManager { - private float[] texCols = new float[768]; - private int[] pixels = new int[5120]; - private int[] zBuf = new int[5120]; - private int[] waterBuf = new int[5120]; - private int[] waterBr = new int[5120]; - private int[] yBuf = new int[34]; - private int[] textures = new int[768]; - - public TerrainTextureManager() { - try { - BufferedImage var1 = ImageIO.read(TerrainTextureManager.class.getResource("/terrain.png")); - int[] var2 = new int[65536]; - var1.getRGB(0, 0, 256, 256, var2, 0, 256); - - for(int var3 = 0; var3 < 256; ++var3) { - int var4 = 0; - int var5 = 0; - int var6 = 0; - int var7 = var3 % 16 * 16; - int var8 = var3 / 16 * 16; - int var9 = 0; - - for(int var10 = 0; var10 < 16; ++var10) { - for(int var11 = 0; var11 < 16; ++var11) { - int var12 = var2[var11 + var7 + (var10 + var8) * 256]; - int var13 = var12 >> 24 & 255; - if(var13 > 128) { - var4 += var12 >> 16 & 255; - var5 += var12 >> 8 & 255; - var6 += var12 & 255; - ++var9; - } - } - - if(var9 == 0) { - ++var9; - } - - this.texCols[var3 * 3 + 0] = (float)(var4 / var9); - this.texCols[var3 * 3 + 1] = (float)(var5 / var9); - this.texCols[var3 * 3 + 2] = (float)(var6 / var9); - } - } - } catch (IOException var14) { - var14.printStackTrace(); - } - - for(int var15 = 0; var15 < 256; ++var15) { - if(Block.blocksList[var15] != null) { - this.textures[var15 * 3 + 0] = Block.blocksList[var15].getBlockTextureFromSide(1); - this.textures[var15 * 3 + 1] = Block.blocksList[var15].getBlockTextureFromSide(2); - this.textures[var15 * 3 + 2] = Block.blocksList[var15].getBlockTextureFromSide(3); - } - } - - } - - public void render(IsoImageBuffer var1) { - World var2 = var1.level; - if(var2 == null) { - var1.noContent = true; - var1.rendered = true; - } else { - int var3 = var1.chunkX * 16; - int var4 = var1.chunkZ * 16; - int var5 = var3 + 16; - int var6 = var4 + 16; - Chunk var7 = var2.getChunkFromChunkCoords(var1.chunkX, var1.chunkZ); - if(var7.isChunkRendered) { - var1.noContent = true; - var1.rendered = true; - } else { - var1.noContent = false; - Arrays.fill(this.zBuf, 0); - Arrays.fill(this.waterBuf, 0); - Arrays.fill(this.yBuf, 160); - - for(int var8 = var6 - 1; var8 >= var4; --var8) { - for(int var9 = var5 - 1; var9 >= var3; --var9) { - int var10 = var9 - var3; - int var11 = var8 - var4; - int var12 = var10 + var11; - boolean var13 = true; - - for(int var14 = 0; var14 < 128; ++var14) { - int var15 = var11 - var10 - var14 + 160 - 16; - if(var15 < this.yBuf[var12] || var15 < this.yBuf[var12 + 1]) { - Block var16 = Block.blocksList[var2.getBlockId(var9, var14, var8)]; - if(var16 == null) { - var13 = false; - } else if(var16.blockMaterial == Material.water) { - int var24 = var2.getBlockId(var9, var14 + 1, var8); - if(var24 == 0 || Block.blocksList[var24].blockMaterial != Material.water) { - float var25 = (float)var14 / 127.0F * 0.6F + 0.4F; - float var26 = var2.getBrightness(var9, var14 + 1, var8) * var25; - if(var15 >= 0 && var15 < 160) { - int var27 = var12 + var15 * 32; - if(var12 >= 0 && var12 <= 32 && this.waterBuf[var27] <= var14) { - this.waterBuf[var27] = var14; - this.waterBr[var27] = (int)(var26 * 127.0F); - } - - if(var12 >= -1 && var12 <= 31 && this.waterBuf[var27 + 1] <= var14) { - this.waterBuf[var27 + 1] = var14; - this.waterBr[var27 + 1] = (int)(var26 * 127.0F); - } - - var13 = false; - } - } - } else { - if(var13) { - if(var15 < this.yBuf[var12]) { - this.yBuf[var12] = var15; - } - - if(var15 < this.yBuf[var12 + 1]) { - this.yBuf[var12 + 1] = var15; - } - } - - float var17 = (float)var14 / 127.0F * 0.6F + 0.4F; - int var18; - int var19; - float var20; - float var22; - if(var15 >= 0 && var15 < 160) { - var18 = var12 + var15 * 32; - var19 = this.textures[var16.blockID * 3 + 0]; - var20 = (var2.getBrightness(var9, var14 + 1, var8) * 0.8F + 0.2F) * var17; - if(var12 >= 0 && this.zBuf[var18] <= var14) { - this.zBuf[var18] = var14; - this.pixels[var18] = -16777216 | (int)(this.texCols[var19 * 3 + 0] * var20) << 16 | (int)(this.texCols[var19 * 3 + 1] * var20) << 8 | (int)(this.texCols[var19 * 3 + 2] * var20); - } - - if(var12 < 31) { - var22 = var20 * 0.9F; - if(this.zBuf[var18 + 1] <= var14) { - this.zBuf[var18 + 1] = var14; - this.pixels[var18 + 1] = -16777216 | (int)(this.texCols[var19 * 3 + 0] * var22) << 16 | (int)(this.texCols[var19 * 3 + 1] * var22) << 8 | (int)(this.texCols[var19 * 3 + 2] * var22); - } - } - } - - if(var15 >= -1 && var15 < 159) { - var18 = var12 + (var15 + 1) * 32; - var19 = this.textures[var16.blockID * 3 + 1]; - var20 = var2.getBrightness(var9 - 1, var14, var8) * 0.8F + 0.2F; - int var21 = this.textures[var16.blockID * 3 + 2]; - var22 = var2.getBrightness(var9, var14, var8 + 1) * 0.8F + 0.2F; - float var23; - if(var12 >= 0) { - var23 = var20 * var17 * 0.6F; - if(this.zBuf[var18] <= var14 - 1) { - this.zBuf[var18] = var14 - 1; - this.pixels[var18] = -16777216 | (int)(this.texCols[var19 * 3 + 0] * var23) << 16 | (int)(this.texCols[var19 * 3 + 1] * var23) << 8 | (int)(this.texCols[var19 * 3 + 2] * var23); - } - } - - if(var12 < 31) { - var23 = var22 * 0.9F * var17 * 0.4F; - if(this.zBuf[var18 + 1] <= var14 - 1) { - this.zBuf[var18 + 1] = var14 - 1; - this.pixels[var18 + 1] = -16777216 | (int)(this.texCols[var21 * 3 + 0] * var23) << 16 | (int)(this.texCols[var21 * 3 + 1] * var23) << 8 | (int)(this.texCols[var21 * 3 + 2] * var23); - } - } - } - } - } - } - } - } - - this.postProcess(); - if(var1.image == null) { - var1.image = new BufferedImage(32, 160, 2); - } - - var1.image.setRGB(0, 0, 32, 160, this.pixels, 0, 32); - var1.rendered = true; - } - } - } - - private void postProcess() { - for(int var1 = 0; var1 < 32; ++var1) { - for(int var2 = 0; var2 < 160; ++var2) { - int var3 = var1 + var2 * 32; - if(this.zBuf[var3] == 0) { - this.pixels[var3] = 0; - } - - if(this.waterBuf[var3] > this.zBuf[var3]) { - int var4 = this.pixels[var3] >> 24 & 255; - this.pixels[var3] = ((this.pixels[var3] & 16711422) >> 1) + this.waterBr[var3]; - if(var4 < 128) { - this.pixels[var3] = Integer.MIN_VALUE + this.waterBr[var3] * 2; - } else { - this.pixels[var3] |= -16777216; - } - } - } - } - - } -} diff --git a/src/net/minecraft/src/Tessellator.java b/src/net/minecraft/src/Tessellator.java deleted file mode 100644 index 0ca7e03..0000000 --- a/src/net/minecraft/src/Tessellator.java +++ /dev/null @@ -1,298 +0,0 @@ -package net.minecraft.src; - -import java.nio.ByteBuffer; -import java.nio.FloatBuffer; -import java.nio.IntBuffer; -import org.lwjgl.opengl.ARBVertexBufferObject; -import org.lwjgl.opengl.GL11; -import org.lwjgl.opengl.GL15; -import org.lwjgl.opengl.GLContext; - -public class Tessellator { - private static boolean convertQuadsToTriangles = true; - private static boolean tryVBO = false; - private ByteBuffer byteBuffer; - private IntBuffer intBuffer; - private FloatBuffer floatBuffer; - private int[] rawBuffer; - private int vertexCount = 0; - private double textureU; - private double textureV; - private int color; - private boolean hasColor = false; - private boolean hasTexture = false; - private boolean hasNormals = false; - private int rawBufferIndex = 0; - private int addedVertices = 0; - private boolean isColorDisabled = false; - private int drawMode; - private double xOffset; - private double yOffset; - private double zOffset; - private int normal; - public static final Tessellator instance = new Tessellator(2097152); - private boolean isDrawing = false; - private boolean useVBO = false; - private IntBuffer vertexBuffers; - private int vboIndex = 0; - private int vboCount = 10; - private int bufferSize; - - private Tessellator(int var1) { - this.bufferSize = var1; - this.byteBuffer = GLAllocation.createDirectByteBuffer(var1 * 4); - this.intBuffer = this.byteBuffer.asIntBuffer(); - this.floatBuffer = this.byteBuffer.asFloatBuffer(); - this.rawBuffer = new int[var1]; - this.useVBO = tryVBO && GLContext.getCapabilities().GL_ARB_vertex_buffer_object; - if(this.useVBO) { - this.vertexBuffers = GLAllocation.createIntBuffer(this.vboCount); - ARBVertexBufferObject.glGenBuffersARB(this.vertexBuffers); - } - - } - - public void draw() { - if(!this.isDrawing) { - throw new IllegalStateException("Not tesselating!"); - } else { - this.isDrawing = false; - if(this.vertexCount > 0) { - this.intBuffer.clear(); - this.intBuffer.put(this.rawBuffer, 0, this.rawBufferIndex); - this.byteBuffer.position(0); - this.byteBuffer.limit(this.rawBufferIndex * 4); - if(this.useVBO) { - this.vboIndex = (this.vboIndex + 1) % this.vboCount; - ARBVertexBufferObject.glBindBufferARB(GL15.GL_ARRAY_BUFFER, this.vertexBuffers.get(this.vboIndex)); - ARBVertexBufferObject.glBufferDataARB(GL15.GL_ARRAY_BUFFER, this.byteBuffer, GL15.GL_STREAM_DRAW); - } - - if(this.hasTexture) { - if(this.useVBO) { - GL11.glTexCoordPointer(2, GL11.GL_FLOAT, 32, 12L); - } else { - this.floatBuffer.position(3); - GL11.glTexCoordPointer(2, 32, (FloatBuffer)this.floatBuffer); - } - - GL11.glEnableClientState(GL11.GL_TEXTURE_COORD_ARRAY); - } - - if(this.hasColor) { - if(this.useVBO) { - GL11.glColorPointer(4, GL11.GL_UNSIGNED_BYTE, 32, 20L); - } else { - this.byteBuffer.position(20); - GL11.glColorPointer(4, true, 32, this.byteBuffer); - } - - GL11.glEnableClientState(GL11.GL_COLOR_ARRAY); - } - - if(this.hasNormals) { - if(this.useVBO) { - GL11.glNormalPointer(GL11.GL_BYTE, 32, 24L); - } else { - this.byteBuffer.position(24); - GL11.glNormalPointer(32, (ByteBuffer)this.byteBuffer); - } - - GL11.glEnableClientState(GL11.GL_NORMAL_ARRAY); - } - - if(this.useVBO) { - GL11.glVertexPointer(3, GL11.GL_FLOAT, 32, 0L); - } else { - this.floatBuffer.position(0); - GL11.glVertexPointer(3, 32, (FloatBuffer)this.floatBuffer); - } - - GL11.glEnableClientState(GL11.GL_VERTEX_ARRAY); - if(this.drawMode == 7 && convertQuadsToTriangles) { - GL11.glDrawArrays(GL11.GL_TRIANGLES, GL11.GL_POINTS, this.vertexCount); - } else { - GL11.glDrawArrays(this.drawMode, GL11.GL_POINTS, this.vertexCount); - } - - GL11.glDisableClientState(GL11.GL_VERTEX_ARRAY); - if(this.hasTexture) { - GL11.glDisableClientState(GL11.GL_TEXTURE_COORD_ARRAY); - } - - if(this.hasColor) { - GL11.glDisableClientState(GL11.GL_COLOR_ARRAY); - } - - if(this.hasNormals) { - GL11.glDisableClientState(GL11.GL_NORMAL_ARRAY); - } - } - - this.reset(); - } - } - - private void reset() { - this.vertexCount = 0; - this.byteBuffer.clear(); - this.rawBufferIndex = 0; - this.addedVertices = 0; - } - - public void startDrawingQuads() { - this.startDrawing(7); - } - - public void startDrawing(int var1) { - if(this.isDrawing) { - throw new IllegalStateException("Already tesselating!"); - } else { - this.isDrawing = true; - this.reset(); - this.drawMode = var1; - this.hasNormals = false; - this.hasColor = false; - this.hasTexture = false; - this.isColorDisabled = false; - } - } - - public void setTextureUV(double var1, double var3) { - this.hasTexture = true; - this.textureU = var1; - this.textureV = var3; - } - - public void setColorOpaque_F(float var1, float var2, float var3) { - this.setColorOpaque((int)(var1 * 255.0F), (int)(var2 * 255.0F), (int)(var3 * 255.0F)); - } - - public void setColorRGBA_F(float var1, float var2, float var3, float var4) { - this.setColorRGBA((int)(var1 * 255.0F), (int)(var2 * 255.0F), (int)(var3 * 255.0F), (int)(var4 * 255.0F)); - } - - public void setColorOpaque(int var1, int var2, int var3) { - this.setColorRGBA(var1, var2, var3, 255); - } - - public void setColorRGBA(int var1, int var2, int var3, int var4) { - if(!this.isColorDisabled) { - if(var1 > 255) { - var1 = 255; - } - - if(var2 > 255) { - var2 = 255; - } - - if(var3 > 255) { - var3 = 255; - } - - if(var4 > 255) { - var4 = 255; - } - - if(var1 < 0) { - var1 = 0; - } - - if(var2 < 0) { - var2 = 0; - } - - if(var3 < 0) { - var3 = 0; - } - - if(var4 < 0) { - var4 = 0; - } - - this.hasColor = true; - this.color = var4 << 24 | var3 << 16 | var2 << 8 | var1; - } - } - - public void addVertexWithUV(double var1, double var3, double var5, double var7, double var9) { - this.setTextureUV(var7, var9); - this.addVertex(var1, var3, var5); - } - - public void addVertex(double var1, double var3, double var5) { - ++this.addedVertices; - if(this.drawMode == 7 && convertQuadsToTriangles && this.addedVertices % 4 == 0) { - for(int var7 = 0; var7 < 2; ++var7) { - int var8 = 8 * (3 - var7); - if(this.hasTexture) { - this.rawBuffer[this.rawBufferIndex + 3] = this.rawBuffer[this.rawBufferIndex - var8 + 3]; - this.rawBuffer[this.rawBufferIndex + 4] = this.rawBuffer[this.rawBufferIndex - var8 + 4]; - } - - if(this.hasColor) { - this.rawBuffer[this.rawBufferIndex + 5] = this.rawBuffer[this.rawBufferIndex - var8 + 5]; - } - - this.rawBuffer[this.rawBufferIndex + 0] = this.rawBuffer[this.rawBufferIndex - var8 + 0]; - this.rawBuffer[this.rawBufferIndex + 1] = this.rawBuffer[this.rawBufferIndex - var8 + 1]; - this.rawBuffer[this.rawBufferIndex + 2] = this.rawBuffer[this.rawBufferIndex - var8 + 2]; - ++this.vertexCount; - this.rawBufferIndex += 8; - } - } - - if(this.hasTexture) { - this.rawBuffer[this.rawBufferIndex + 3] = Float.floatToRawIntBits((float)this.textureU); - this.rawBuffer[this.rawBufferIndex + 4] = Float.floatToRawIntBits((float)this.textureV); - } - - if(this.hasColor) { - this.rawBuffer[this.rawBufferIndex + 5] = this.color; - } - - if(this.hasNormals) { - this.rawBuffer[this.rawBufferIndex + 6] = this.normal; - } - - this.rawBuffer[this.rawBufferIndex + 0] = Float.floatToRawIntBits((float)(var1 + this.xOffset)); - this.rawBuffer[this.rawBufferIndex + 1] = Float.floatToRawIntBits((float)(var3 + this.yOffset)); - this.rawBuffer[this.rawBufferIndex + 2] = Float.floatToRawIntBits((float)(var5 + this.zOffset)); - this.rawBufferIndex += 8; - ++this.vertexCount; - if(this.vertexCount % 4 == 0 && this.rawBufferIndex >= this.bufferSize - 32) { - this.draw(); - this.isDrawing = true; - } - - } - - public void setColorOpaque_I(int var1) { - int var2 = var1 >> 16 & 255; - int var3 = var1 >> 8 & 255; - int var4 = var1 & 255; - this.setColorOpaque(var2, var3, var4); - } - - public void disableColor() { - this.isColorDisabled = true; - } - - public void setNormal(float var1, float var2, float var3) { - if(!this.isDrawing) { - System.out.println("But.."); - } - - this.hasNormals = true; - byte var4 = (byte)((int)(var1 * 128.0F)); - byte var5 = (byte)((int)(var2 * 127.0F)); - byte var6 = (byte)((int)(var3 * 127.0F)); - this.normal = var4 | var5 << 8 | var6 << 16; - } - - public void setTranslationD(double var1, double var3, double var5) { - this.xOffset = var1; - this.yOffset = var3; - this.zOffset = var5; - } -} diff --git a/src/net/minecraft/src/TextureFX.java b/src/net/minecraft/src/TextureFX.java deleted file mode 100644 index 0396745..0000000 --- a/src/net/minecraft/src/TextureFX.java +++ /dev/null @@ -1,16 +0,0 @@ -package net.minecraft.src; - -public class TextureFX { - public byte[] imageData = new byte[1024]; - public int iconIndex; - public boolean anaglyphEnabled = false; - public int textureId = 0; - public int tileSize = 1; - - public TextureFX(int var1) { - this.iconIndex = var1; - } - - public void onTick() { - } -} diff --git a/src/net/minecraft/src/TextureFlamesFX.java b/src/net/minecraft/src/TextureFlamesFX.java deleted file mode 100644 index 9ddc148..0000000 --- a/src/net/minecraft/src/TextureFlamesFX.java +++ /dev/null @@ -1,77 +0,0 @@ -package net.minecraft.src; - -public class TextureFlamesFX extends TextureFX { - protected float[] currentFireFrame = new float[320]; - protected float[] lastFireFrame = new float[320]; - - public TextureFlamesFX(int var1) { - super(Block.fire.blockIndexInTexture + var1 * 16); - } - - public void onTick() { - int var2; - float var4; - int var5; - int var6; - for(int var1 = 0; var1 < 16; ++var1) { - for(var2 = 0; var2 < 20; ++var2) { - int var3 = 18; - var4 = this.currentFireFrame[var1 + (var2 + 1) % 20 * 16] * (float)var3; - - for(var5 = var1 - 1; var5 <= var1 + 1; ++var5) { - for(var6 = var2; var6 <= var2 + 1; ++var6) { - if(var5 >= 0 && var6 >= 0 && var5 < 16 && var6 < 20) { - var4 += this.currentFireFrame[var5 + var6 * 16]; - } - - ++var3; - } - } - - this.lastFireFrame[var1 + var2 * 16] = var4 / ((float)var3 * 1.06F); - if(var2 >= 19) { - this.lastFireFrame[var1 + var2 * 16] = (float)(Math.random() * Math.random() * Math.random() * 4.0D + Math.random() * (double)0.1F + (double)0.2F); - } - } - } - - float[] var12 = this.lastFireFrame; - this.lastFireFrame = this.currentFireFrame; - this.currentFireFrame = var12; - - for(var2 = 0; var2 < 256; ++var2) { - float var13 = this.currentFireFrame[var2] * 1.8F; - if(var13 > 1.0F) { - var13 = 1.0F; - } - - if(var13 < 0.0F) { - var13 = 0.0F; - } - - var5 = (int)(var13 * 155.0F + 100.0F); - var6 = (int)(var13 * var13 * 255.0F); - int var7 = (int)(var13 * var13 * var13 * var13 * var13 * var13 * var13 * var13 * var13 * var13 * 255.0F); - short var8 = 255; - if(var13 < 0.5F) { - var8 = 0; - } - - var4 = (var13 - 0.5F) * 2.0F; - if(this.anaglyphEnabled) { - int var9 = (var5 * 30 + var6 * 59 + var7 * 11) / 100; - int var10 = (var5 * 30 + var6 * 70) / 100; - int var11 = (var5 * 30 + var7 * 70) / 100; - var5 = var9; - var6 = var10; - var7 = var11; - } - - this.imageData[var2 * 4 + 0] = (byte)var5; - this.imageData[var2 * 4 + 1] = (byte)var6; - this.imageData[var2 * 4 + 2] = (byte)var7; - this.imageData[var2 * 4 + 3] = (byte)var8; - } - - } -} diff --git a/src/net/minecraft/src/TextureGearsFX.java b/src/net/minecraft/src/TextureGearsFX.java deleted file mode 100644 index 17138a5..0000000 --- a/src/net/minecraft/src/TextureGearsFX.java +++ /dev/null @@ -1,65 +0,0 @@ -package net.minecraft.src; - -import java.awt.image.BufferedImage; -import java.io.IOException; -import javax.imageio.ImageIO; - -public class TextureGearsFX extends TextureFX { - private int gearRotation = 0; - private int[] gearColor = new int[1024]; - private int[] gearMiddleColor = new int[1024]; - private int gearRotationDir; - - public TextureGearsFX(int var1) { - super(Block.cog.blockIndexInTexture + var1); - this.gearRotationDir = var1 * 2 - 1; - this.gearRotation = 2; - - try { - BufferedImage var2 = ImageIO.read(TextureGearsFX.class.getResource("/misc/gear.png")); - var2.getRGB(0, 0, 32, 32, this.gearColor, 0, 32); - var2 = ImageIO.read(TextureGearsFX.class.getResource("/misc/gearmiddle.png")); - var2.getRGB(0, 0, 16, 16, this.gearMiddleColor, 0, 16); - } catch (IOException var3) { - var3.printStackTrace(); - } - - } - - public void onTick() { - this.gearRotation = this.gearRotation + this.gearRotationDir & 63; - float var1 = MathHelper.sin((float)this.gearRotation / 64.0F * (float)Math.PI * 2.0F); - float var2 = MathHelper.cos((float)this.gearRotation / 64.0F * (float)Math.PI * 2.0F); - - for(int var3 = 0; var3 < 16; ++var3) { - for(int var4 = 0; var4 < 16; ++var4) { - float var5 = ((float)var3 / 15.0F - 0.5F) * 31.0F; - float var6 = ((float)var4 / 15.0F - 0.5F) * 31.0F; - float var7 = var2 * var5 - var1 * var6; - float var8 = var2 * var6 + var1 * var5; - int var9 = (int)(var7 + 16.0F); - int var10 = (int)(var8 + 16.0F); - int var11 = 0; - int var12; - if(var9 >= 0 && var10 >= 0 && var9 < 32 && var10 < 32) { - var11 = this.gearColor[var9 + var10 * 32]; - var12 = this.gearMiddleColor[var3 + var4 * 16]; - if((var12 >> 24 & 255) > 128) { - var11 = var12; - } - } - - var12 = var11 >> 16 & 255; - int var13 = var11 >> 8 & 255; - int var14 = var11 & 255; - int var15 = (var11 >> 24 & 255) > 128 ? 255 : 0; - int var16 = var3 + var4 * 16; - this.imageData[var16 * 4 + 0] = (byte)var12; - this.imageData[var16 * 4 + 1] = (byte)var13; - this.imageData[var16 * 4 + 2] = (byte)var14; - this.imageData[var16 * 4 + 3] = (byte)var15; - } - } - - } -} diff --git a/src/net/minecraft/src/TextureLavaFX.java b/src/net/minecraft/src/TextureLavaFX.java deleted file mode 100644 index c4d9c4c..0000000 --- a/src/net/minecraft/src/TextureLavaFX.java +++ /dev/null @@ -1,81 +0,0 @@ -package net.minecraft.src; - -public class TextureLavaFX extends TextureFX { - protected float[] red = new float[256]; - protected float[] green = new float[256]; - protected float[] blue = new float[256]; - protected float[] alpha = new float[256]; - - public TextureLavaFX() { - super(Block.lavaMoving.blockIndexInTexture); - } - - public void onTick() { - int var2; - float var3; - int var5; - int var6; - int var7; - int var8; - int var9; - for(int var1 = 0; var1 < 16; ++var1) { - for(var2 = 0; var2 < 16; ++var2) { - var3 = 0.0F; - int var4 = (int)(MathHelper.sin((float)var2 * (float)Math.PI * 2.0F / 16.0F) * 1.2F); - var5 = (int)(MathHelper.sin((float)var1 * (float)Math.PI * 2.0F / 16.0F) * 1.2F); - - for(var6 = var1 - 1; var6 <= var1 + 1; ++var6) { - for(var7 = var2 - 1; var7 <= var2 + 1; ++var7) { - var8 = var6 + var4 & 15; - var9 = var7 + var5 & 15; - var3 += this.red[var8 + var9 * 16]; - } - } - - this.green[var1 + var2 * 16] = var3 / 10.0F + (this.blue[(var1 + 0 & 15) + (var2 + 0 & 15) * 16] + this.blue[(var1 + 1 & 15) + (var2 + 0 & 15) * 16] + this.blue[(var1 + 1 & 15) + (var2 + 1 & 15) * 16] + this.blue[(var1 + 0 & 15) + (var2 + 1 & 15) * 16]) / 4.0F * 0.8F; - this.blue[var1 + var2 * 16] += this.alpha[var1 + var2 * 16] * 0.01F; - if(this.blue[var1 + var2 * 16] < 0.0F) { - this.blue[var1 + var2 * 16] = 0.0F; - } - - this.alpha[var1 + var2 * 16] -= 0.06F; - if(Math.random() < 0.005D) { - this.alpha[var1 + var2 * 16] = 1.5F; - } - } - } - - float[] var11 = this.green; - this.green = this.red; - this.red = var11; - - for(var2 = 0; var2 < 256; ++var2) { - var3 = this.red[var2] * 2.0F; - if(var3 > 1.0F) { - var3 = 1.0F; - } - - if(var3 < 0.0F) { - var3 = 0.0F; - } - - var5 = (int)(var3 * 100.0F + 155.0F); - var6 = (int)(var3 * var3 * 255.0F); - var7 = (int)(var3 * var3 * var3 * var3 * 128.0F); - if(this.anaglyphEnabled) { - var8 = (var5 * 30 + var6 * 59 + var7 * 11) / 100; - var9 = (var5 * 30 + var6 * 70) / 100; - int var10 = (var5 * 30 + var7 * 70) / 100; - var5 = var8; - var6 = var9; - var7 = var10; - } - - this.imageData[var2 * 4 + 0] = (byte)var5; - this.imageData[var2 * 4 + 1] = (byte)var6; - this.imageData[var2 * 4 + 2] = (byte)var7; - this.imageData[var2 * 4 + 3] = -1; - } - - } -} diff --git a/src/net/minecraft/src/TextureLavaFlowFX.java b/src/net/minecraft/src/TextureLavaFlowFX.java deleted file mode 100644 index 8d91375..0000000 --- a/src/net/minecraft/src/TextureLavaFlowFX.java +++ /dev/null @@ -1,85 +0,0 @@ -package net.minecraft.src; - -public class TextureLavaFlowFX extends TextureFX { - protected float[] red = new float[256]; - protected float[] green = new float[256]; - protected float[] blue = new float[256]; - protected float[] alpha = new float[256]; - int tickCounter = 0; - - public TextureLavaFlowFX() { - super(Block.lavaMoving.blockIndexInTexture + 1); - this.tileSize = 2; - } - - public void onTick() { - ++this.tickCounter; - - int var2; - float var3; - int var5; - int var6; - int var7; - int var8; - int var9; - for(int var1 = 0; var1 < 16; ++var1) { - for(var2 = 0; var2 < 16; ++var2) { - var3 = 0.0F; - int var4 = (int)(MathHelper.sin((float)var2 * (float)Math.PI * 2.0F / 16.0F) * 1.2F); - var5 = (int)(MathHelper.sin((float)var1 * (float)Math.PI * 2.0F / 16.0F) * 1.2F); - - for(var6 = var1 - 1; var6 <= var1 + 1; ++var6) { - for(var7 = var2 - 1; var7 <= var2 + 1; ++var7) { - var8 = var6 + var4 & 15; - var9 = var7 + var5 & 15; - var3 += this.red[var8 + var9 * 16]; - } - } - - this.green[var1 + var2 * 16] = var3 / 10.0F + (this.blue[(var1 + 0 & 15) + (var2 + 0 & 15) * 16] + this.blue[(var1 + 1 & 15) + (var2 + 0 & 15) * 16] + this.blue[(var1 + 1 & 15) + (var2 + 1 & 15) * 16] + this.blue[(var1 + 0 & 15) + (var2 + 1 & 15) * 16]) / 4.0F * 0.8F; - this.blue[var1 + var2 * 16] += this.alpha[var1 + var2 * 16] * 0.01F; - if(this.blue[var1 + var2 * 16] < 0.0F) { - this.blue[var1 + var2 * 16] = 0.0F; - } - - this.alpha[var1 + var2 * 16] -= 0.06F; - if(Math.random() < 0.005D) { - this.alpha[var1 + var2 * 16] = 1.5F; - } - } - } - - float[] var11 = this.green; - this.green = this.red; - this.red = var11; - - for(var2 = 0; var2 < 256; ++var2) { - var3 = this.red[var2 - this.tickCounter / 3 * 16 & 255] * 2.0F; - if(var3 > 1.0F) { - var3 = 1.0F; - } - - if(var3 < 0.0F) { - var3 = 0.0F; - } - - var5 = (int)(var3 * 100.0F + 155.0F); - var6 = (int)(var3 * var3 * 255.0F); - var7 = (int)(var3 * var3 * var3 * var3 * 128.0F); - if(this.anaglyphEnabled) { - var8 = (var5 * 30 + var6 * 59 + var7 * 11) / 100; - var9 = (var5 * 30 + var6 * 70) / 100; - int var10 = (var5 * 30 + var7 * 70) / 100; - var5 = var8; - var6 = var9; - var7 = var10; - } - - this.imageData[var2 * 4 + 0] = (byte)var5; - this.imageData[var2 * 4 + 1] = (byte)var6; - this.imageData[var2 * 4 + 2] = (byte)var7; - this.imageData[var2 * 4 + 3] = -1; - } - - } -} diff --git a/src/net/minecraft/src/TextureWaterFX.java b/src/net/minecraft/src/TextureWaterFX.java deleted file mode 100644 index 67a5040..0000000 --- a/src/net/minecraft/src/TextureWaterFX.java +++ /dev/null @@ -1,85 +0,0 @@ -package net.minecraft.src; - -public class TextureWaterFX extends TextureFX { - protected float[] red = new float[256]; - protected float[] green = new float[256]; - protected float[] blue = new float[256]; - protected float[] alpha = new float[256]; - private int tickCounter = 0; - - public TextureWaterFX() { - super(Block.waterMoving.blockIndexInTexture); - } - - public void onTick() { - ++this.tickCounter; - - int var1; - int var2; - float var3; - int var5; - int var6; - for(var1 = 0; var1 < 16; ++var1) { - for(var2 = 0; var2 < 16; ++var2) { - var3 = 0.0F; - - for(int var4 = var1 - 1; var4 <= var1 + 1; ++var4) { - var5 = var4 & 15; - var6 = var2 & 15; - var3 += this.red[var5 + var6 * 16]; - } - - this.green[var1 + var2 * 16] = var3 / 3.3F + this.blue[var1 + var2 * 16] * 0.8F; - } - } - - for(var1 = 0; var1 < 16; ++var1) { - for(var2 = 0; var2 < 16; ++var2) { - this.blue[var1 + var2 * 16] += this.alpha[var1 + var2 * 16] * 0.05F; - if(this.blue[var1 + var2 * 16] < 0.0F) { - this.blue[var1 + var2 * 16] = 0.0F; - } - - this.alpha[var1 + var2 * 16] -= 0.1F; - if(Math.random() < 0.05D) { - this.alpha[var1 + var2 * 16] = 0.5F; - } - } - } - - float[] var12 = this.green; - this.green = this.red; - this.red = var12; - - for(var2 = 0; var2 < 256; ++var2) { - var3 = this.red[var2]; - if(var3 > 1.0F) { - var3 = 1.0F; - } - - if(var3 < 0.0F) { - var3 = 0.0F; - } - - float var13 = var3 * var3; - var5 = (int)(32.0F + var13 * 32.0F); - var6 = (int)(50.0F + var13 * 64.0F); - int var7 = 255; - int var8 = (int)(146.0F + var13 * 50.0F); - if(this.anaglyphEnabled) { - int var9 = (var5 * 30 + var6 * 59 + var7 * 11) / 100; - int var10 = (var5 * 30 + var6 * 70) / 100; - int var11 = (var5 * 30 + var7 * 70) / 100; - var5 = var9; - var6 = var10; - var7 = var11; - } - - this.imageData[var2 * 4 + 0] = (byte)var5; - this.imageData[var2 * 4 + 1] = (byte)var6; - this.imageData[var2 * 4 + 2] = (byte)var7; - this.imageData[var2 * 4 + 3] = (byte)var8; - } - - } -} diff --git a/src/net/minecraft/src/TextureWaterFlowFX.java b/src/net/minecraft/src/TextureWaterFlowFX.java deleted file mode 100644 index 668c17f..0000000 --- a/src/net/minecraft/src/TextureWaterFlowFX.java +++ /dev/null @@ -1,86 +0,0 @@ -package net.minecraft.src; - -public class TextureWaterFlowFX extends TextureFX { - protected float[] red = new float[256]; - protected float[] green = new float[256]; - protected float[] blue = new float[256]; - protected float[] alpha = new float[256]; - private int tickCounter = 0; - - public TextureWaterFlowFX() { - super(Block.waterMoving.blockIndexInTexture + 1); - this.tileSize = 2; - } - - public void onTick() { - ++this.tickCounter; - - int var1; - int var2; - float var3; - int var5; - int var6; - for(var1 = 0; var1 < 16; ++var1) { - for(var2 = 0; var2 < 16; ++var2) { - var3 = 0.0F; - - for(int var4 = var2 - 2; var4 <= var2; ++var4) { - var5 = var1 & 15; - var6 = var4 & 15; - var3 += this.red[var5 + var6 * 16]; - } - - this.green[var1 + var2 * 16] = var3 / 3.2F + this.blue[var1 + var2 * 16] * 0.8F; - } - } - - for(var1 = 0; var1 < 16; ++var1) { - for(var2 = 0; var2 < 16; ++var2) { - this.blue[var1 + var2 * 16] += this.alpha[var1 + var2 * 16] * 0.05F; - if(this.blue[var1 + var2 * 16] < 0.0F) { - this.blue[var1 + var2 * 16] = 0.0F; - } - - this.alpha[var1 + var2 * 16] -= 0.3F; - if(Math.random() < 0.2D) { - this.alpha[var1 + var2 * 16] = 0.5F; - } - } - } - - float[] var12 = this.green; - this.green = this.red; - this.red = var12; - - for(var2 = 0; var2 < 256; ++var2) { - var3 = this.red[var2 - this.tickCounter * 16 & 255]; - if(var3 > 1.0F) { - var3 = 1.0F; - } - - if(var3 < 0.0F) { - var3 = 0.0F; - } - - float var13 = var3 * var3; - var5 = (int)(32.0F + var13 * 32.0F); - var6 = (int)(50.0F + var13 * 64.0F); - int var7 = 255; - int var8 = (int)(146.0F + var13 * 50.0F); - if(this.anaglyphEnabled) { - int var9 = (var5 * 30 + var6 * 59 + var7 * 11) / 100; - int var10 = (var5 * 30 + var6 * 70) / 100; - int var11 = (var5 * 30 + var7 * 70) / 100; - var5 = var9; - var6 = var10; - var7 = var11; - } - - this.imageData[var2 * 4 + 0] = (byte)var5; - this.imageData[var2 * 4 + 1] = (byte)var6; - this.imageData[var2 * 4 + 2] = (byte)var7; - this.imageData[var2 * 4 + 3] = (byte)var8; - } - - } -} diff --git a/src/net/minecraft/src/TexturedQuad.java b/src/net/minecraft/src/TexturedQuad.java deleted file mode 100644 index 60719d0..0000000 --- a/src/net/minecraft/src/TexturedQuad.java +++ /dev/null @@ -1,47 +0,0 @@ -package net.minecraft.src; - -public class TexturedQuad { - public PositionTextureVertex[] vertexPositions; - public int nVertices; - - public TexturedQuad(PositionTextureVertex[] var1) { - this.nVertices = 0; - this.vertexPositions = var1; - this.nVertices = var1.length; - } - - public TexturedQuad(PositionTextureVertex[] var1, int var2, int var3, int var4, int var5) { - this(var1); - float var6 = 0.0015625F; - float var7 = 0.003125F; - var1[0] = var1[0].setTexturePosition((float)var4 / 64.0F - var6, (float)var3 / 32.0F + var7); - var1[1] = var1[1].setTexturePosition((float)var2 / 64.0F + var6, (float)var3 / 32.0F + var7); - var1[2] = var1[2].setTexturePosition((float)var2 / 64.0F + var6, (float)var5 / 32.0F - var7); - var1[3] = var1[3].setTexturePosition((float)var4 / 64.0F - var6, (float)var5 / 32.0F - var7); - } - - public void flipFace() { - PositionTextureVertex[] var1 = new PositionTextureVertex[this.vertexPositions.length]; - - for(int var2 = 0; var2 < this.vertexPositions.length; ++var2) { - var1[var2] = this.vertexPositions[this.vertexPositions.length - var2 - 1]; - } - - this.vertexPositions = var1; - } - - public void draw(Tessellator var1, float var2) { - Vec3D var3 = this.vertexPositions[1].vector3D.subtract(this.vertexPositions[0].vector3D); - Vec3D var4 = this.vertexPositions[1].vector3D.subtract(this.vertexPositions[2].vector3D); - Vec3D var5 = var4.crossProduct(var3).normalize(); - var1.startDrawingQuads(); - var1.setNormal((float)var5.xCoord, (float)var5.yCoord, (float)var5.zCoord); - - for(int var6 = 0; var6 < 4; ++var6) { - PositionTextureVertex var7 = this.vertexPositions[var6]; - var1.addVertexWithUV((double)((float)var7.vector3D.xCoord * var2), (double)((float)var7.vector3D.yCoord * var2), (double)((float)var7.vector3D.zCoord * var2), (double)var7.texturePositionX, (double)var7.texturePositionY); - } - - var1.draw(); - } -} diff --git a/src/net/minecraft/src/ThreadDownloadImage.java b/src/net/minecraft/src/ThreadDownloadImage.java deleted file mode 100644 index 3912dc6..0000000 --- a/src/net/minecraft/src/ThreadDownloadImage.java +++ /dev/null @@ -1,44 +0,0 @@ -package net.minecraft.src; - -import java.net.HttpURLConnection; -import java.net.URL; -import javax.imageio.ImageIO; - -class ThreadDownloadImage extends Thread { - final String location; - final ImageBuffer buffer; - final ThreadDownloadImageData imageData; - - ThreadDownloadImage(ThreadDownloadImageData var1, String var2, ImageBuffer var3) { - this.imageData = var1; - this.location = var2; - this.buffer = var3; - } - - public void run() { - HttpURLConnection var1 = null; - - try { - URL var2 = new URL(this.location); - var1 = (HttpURLConnection)var2.openConnection(); - var1.setDoInput(true); - var1.setDoOutput(false); - var1.connect(); - if(var1.getResponseCode() != 404) { - if(this.buffer == null) { - this.imageData.image = ImageIO.read(var1.getInputStream()); - } else { - this.imageData.image = this.buffer.parseUserSkin(ImageIO.read(var1.getInputStream())); - } - - return; - } - } catch (Exception var6) { - var6.printStackTrace(); - return; - } finally { - var1.disconnect(); - } - - } -} diff --git a/src/net/minecraft/src/ThreadDownloadImageData.java b/src/net/minecraft/src/ThreadDownloadImageData.java deleted file mode 100644 index 13ac4e6..0000000 --- a/src/net/minecraft/src/ThreadDownloadImageData.java +++ /dev/null @@ -1,14 +0,0 @@ -package net.minecraft.src; - -import java.awt.image.BufferedImage; - -public class ThreadDownloadImageData { - public BufferedImage image; - public int referenceCount = 1; - public int textureName = -1; - public boolean textureSetupComplete = false; - - public ThreadDownloadImageData(String var1, ImageBuffer var2) { - (new ThreadDownloadImage(this, var1, var2)).start(); - } -} diff --git a/src/net/minecraft/src/ThreadDownloadResources.java b/src/net/minecraft/src/ThreadDownloadResources.java deleted file mode 100644 index 6bcdb12..0000000 --- a/src/net/minecraft/src/ThreadDownloadResources.java +++ /dev/null @@ -1,117 +0,0 @@ -package net.minecraft.src; - -import java.io.BufferedReader; -import java.io.DataInputStream; -import java.io.DataOutputStream; -import java.io.File; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.InputStreamReader; -import java.net.URL; -import java.util.ArrayList; - -public class ThreadDownloadResources extends Thread { - public File resourcesFolder; - private Minecraft mc; - private boolean closing = false; - - public ThreadDownloadResources(File var1, Minecraft var2) { - this.mc = var2; - this.setName("Resource download thread"); - this.setDaemon(true); - this.resourcesFolder = new File(var1, "resources/"); - if(!this.resourcesFolder.exists() && !this.resourcesFolder.mkdirs()) { - throw new RuntimeException("The working directory could not be created: " + this.resourcesFolder); - } - } - - public void run() { - try { - ArrayList var1 = new ArrayList(); - URL var2 = new URL("http://www.minecraft.net/resources/"); - BufferedReader var3 = new BufferedReader(new InputStreamReader(var2.openStream())); - String var4 = ""; - - while(true) { - var4 = var3.readLine(); - if(var4 == null) { - var3.close(); - - for(int var5 = 0; var5 < var1.size(); ++var5) { - this.downloadAndInstallResource(var2, (String)var1.get(var5)); - if(this.closing) { - return; - } - } - break; - } - - var1.add(var4); - } - } catch (IOException var6) { - this.loadResource(this.resourcesFolder, ""); - var6.printStackTrace(); - } - - } - - private void loadResource(File var1, String var2) { - File[] var3 = var1.listFiles(); - - for(int var4 = 0; var4 < var3.length; ++var4) { - if(var3[var4].isDirectory()) { - this.loadResource(var3[var4], var2 + var3[var4].getName() + "/"); - } else { - this.mc.installResource(var2 + var3[var4].getName(), var3[var4]); - } - } - - } - - private void downloadAndInstallResource(URL var1, String var2) { - try { - String[] var3 = var2.split(","); - String var4 = var3[0]; - int var5 = Integer.parseInt(var3[1]); - long var6 = Long.parseLong(var3[2]); - var6 /= 2L; - File var8 = new File(this.resourcesFolder, var4); - if(!var8.exists() || var8.length() != (long)var5) { - var8.getParentFile().mkdirs(); - String var9 = var4.replaceAll(" ", "%20"); - this.downloadResource(new URL(var1, var9), var8, var5); - if(this.closing) { - return; - } - } - - this.mc.installResource(var4, var8); - } catch (Exception var10) { - var10.printStackTrace(); - } - - } - - private void downloadResource(URL var1, File var2, int var3) throws IOException { - byte[] var4 = new byte[4096]; - DataInputStream var5 = new DataInputStream(var1.openStream()); - DataOutputStream var6 = new DataOutputStream(new FileOutputStream(var2)); - boolean var7 = false; - - do { - int var8 = var5.read(var4); - if(var8 < 0) { - var5.close(); - var6.close(); - return; - } - - var6.write(var4, 0, var8); - } while(!this.closing); - - } - - public void closeMinecraft() { - this.closing = true; - } -} diff --git a/src/net/minecraft/src/ThreadRunIsoClient.java b/src/net/minecraft/src/ThreadRunIsoClient.java deleted file mode 100644 index aed30bb..0000000 --- a/src/net/minecraft/src/ThreadRunIsoClient.java +++ /dev/null @@ -1,21 +0,0 @@ -package net.minecraft.src; - -class ThreadRunIsoClient extends Thread { - final CanvasIsomPreview isoCanvas; - - ThreadRunIsoClient(CanvasIsomPreview var1) { - this.isoCanvas = var1; - } - - public void run() { - while(CanvasIsomPreview.a(this.isoCanvas)) { - this.isoCanvas.render(); - - try { - Thread.sleep(1L); - } catch (Exception var2) { - } - } - - } -} diff --git a/src/net/minecraft/src/ThreadSleepForever.java b/src/net/minecraft/src/ThreadSleepForever.java deleted file mode 100644 index 09cb8b7..0000000 --- a/src/net/minecraft/src/ThreadSleepForever.java +++ /dev/null @@ -1,22 +0,0 @@ -package net.minecraft.src; - -class ThreadSleepForever extends Thread { - final Minecraft mc; - - ThreadSleepForever(Minecraft var1, String var2) { - super(var2); - this.mc = var1; - this.setDaemon(true); - this.start(); - } - - public void run() { - while(this.mc.running) { - try { - Thread.sleep(2147483647L); - } catch (InterruptedException var2) { - } - } - - } -} diff --git a/src/net/minecraft/src/TileEntity.java b/src/net/minecraft/src/TileEntity.java deleted file mode 100644 index 78965d1..0000000 --- a/src/net/minecraft/src/TileEntity.java +++ /dev/null @@ -1,86 +0,0 @@ -package net.minecraft.src; - -import java.util.HashMap; -import java.util.Map; - -public class TileEntity { - private static Map nameToClassMap = new HashMap(); - private static Map classToNameMap = new HashMap(); - public World worldObj; - public int xCoord; - public int yCoord; - public int zCoord; - - private static void addMapping(Class var0, String var1) { - if(classToNameMap.containsKey(var1)) { - throw new IllegalArgumentException("Duplicate id: " + var1); - } else { - nameToClassMap.put(var1, var0); - classToNameMap.put(var0, var1); - } - } - - public void readFromNBT(NBTTagCompound var1) { - this.xCoord = var1.getInteger("x"); - this.yCoord = var1.getInteger("y"); - this.zCoord = var1.getInteger("z"); - } - - public void writeToNBT(NBTTagCompound var1) { - String var2 = (String)classToNameMap.get(this.getClass()); - if(var2 == null) { - throw new RuntimeException(this.getClass() + " is missing a mapping! This is a bug!"); - } else { - var1.setString("id", var2); - var1.setInteger("x", this.xCoord); - var1.setInteger("y", this.yCoord); - var1.setInteger("z", this.zCoord); - } - } - - public void updateEntity() { - } - - public static TileEntity createAndLoadEntity(NBTTagCompound var0) { - TileEntity var1 = null; - - try { - Class var2 = (Class)nameToClassMap.get(var0.getString("id")); - if(var2 != null) { - var1 = (TileEntity)var2.newInstance(); - } - } catch (Exception var3) { - var3.printStackTrace(); - } - - if(var1 != null) { - var1.readFromNBT(var0); - } else { - System.out.println("Skipping TileEntity with id " + var0.getString("id")); - } - - return var1; - } - - public int getBlockMetadata() { - return this.worldObj.getBlockMetadata(this.xCoord, this.yCoord, this.zCoord); - } - - public void onInventoryChanged() { - this.worldObj.updateTileEntityChunkAndDoNothing(this.xCoord, this.yCoord, this.zCoord); - } - - public double getDistanceFrom(double var1, double var3, double var5) { - double var7 = (double)this.xCoord + 0.5D - var1; - double var9 = (double)this.yCoord + 0.5D - var3; - double var11 = (double)this.zCoord + 0.5D - var5; - return var7 * var7 + var9 * var9 + var11 * var11; - } - - static { - addMapping(TileEntityFurnace.class, "Furnace"); - addMapping(TileEntityChest.class, "Chest"); - addMapping(TileEntitySign.class, "Sign"); - addMapping(TileEntityMobSpawner.class, "MobSpawner"); - } -} diff --git a/src/net/minecraft/src/TileEntityChest.java b/src/net/minecraft/src/TileEntityChest.java deleted file mode 100644 index e29f7d0..0000000 --- a/src/net/minecraft/src/TileEntityChest.java +++ /dev/null @@ -1,80 +0,0 @@ -package net.minecraft.src; - -public class TileEntityChest extends TileEntity implements IInventory { - private ItemStack[] chestContents = new ItemStack[36]; - - public int getSizeInventory() { - return 27; - } - - public ItemStack getStackInSlot(int var1) { - return this.chestContents[var1]; - } - - public ItemStack decrStackSize(int var1, int var2) { - if(this.chestContents[var1] != null) { - ItemStack var3; - if(this.chestContents[var1].stackSize <= var2) { - var3 = this.chestContents[var1]; - this.chestContents[var1] = null; - return var3; - } else { - var3 = this.chestContents[var1].splitStack(var2); - if(this.chestContents[var1].stackSize == 0) { - this.chestContents[var1] = null; - } - - return var3; - } - } else { - return null; - } - } - - public void setInventorySlotContents(int var1, ItemStack var2) { - this.chestContents[var1] = var2; - if(var2 != null && var2.stackSize > this.getInventoryStackLimit()) { - var2.stackSize = this.getInventoryStackLimit(); - } - - } - - public String getInvName() { - return "Chest"; - } - - public void readFromNBT(NBTTagCompound var1) { - super.readFromNBT(var1); - NBTTagList var2 = var1.getTagList("Items"); - this.chestContents = new ItemStack[this.getSizeInventory()]; - - for(int var3 = 0; var3 < var2.tagCount(); ++var3) { - NBTTagCompound var4 = (NBTTagCompound)var2.tagAt(var3); - int var5 = var4.getByte("Slot") & 255; - if(var5 >= 0 && var5 < this.chestContents.length) { - this.chestContents[var5] = new ItemStack(var4); - } - } - - } - - public void writeToNBT(NBTTagCompound var1) { - super.writeToNBT(var1); - NBTTagList var2 = new NBTTagList(); - - for(int var3 = 0; var3 < this.chestContents.length; ++var3) { - if(this.chestContents[var3] != null) { - NBTTagCompound var4 = new NBTTagCompound(); - var4.setByte("Slot", (byte)var3); - this.chestContents[var3].writeToNBT(var4); - var2.setTag(var4); - } - } - - var1.setTag("Items", var2); - } - - public int getInventoryStackLimit() { - return 64; - } -} diff --git a/src/net/minecraft/src/TileEntityFurnace.java b/src/net/minecraft/src/TileEntityFurnace.java deleted file mode 100644 index fe6c7d7..0000000 --- a/src/net/minecraft/src/TileEntityFurnace.java +++ /dev/null @@ -1,190 +0,0 @@ -package net.minecraft.src; - -public class TileEntityFurnace extends TileEntity implements IInventory { - private ItemStack[] furnaceItemStacks = new ItemStack[3]; - private int furnaceBurnTime = 0; - private int currentItemBurnTime = 0; - private int furnaceCookTime = 0; - - public int getSizeInventory() { - return this.furnaceItemStacks.length; - } - - public ItemStack getStackInSlot(int var1) { - return this.furnaceItemStacks[var1]; - } - - public ItemStack decrStackSize(int var1, int var2) { - if(this.furnaceItemStacks[var1] != null) { - ItemStack var3; - if(this.furnaceItemStacks[var1].stackSize <= var2) { - var3 = this.furnaceItemStacks[var1]; - this.furnaceItemStacks[var1] = null; - return var3; - } else { - var3 = this.furnaceItemStacks[var1].splitStack(var2); - if(this.furnaceItemStacks[var1].stackSize == 0) { - this.furnaceItemStacks[var1] = null; - } - - return var3; - } - } else { - return null; - } - } - - public void setInventorySlotContents(int var1, ItemStack var2) { - this.furnaceItemStacks[var1] = var2; - if(var2 != null && var2.stackSize > this.getInventoryStackLimit()) { - var2.stackSize = this.getInventoryStackLimit(); - } - - } - - public String getInvName() { - return "Chest"; - } - - public void readFromNBT(NBTTagCompound var1) { - super.readFromNBT(var1); - NBTTagList var2 = var1.getTagList("Items"); - this.furnaceItemStacks = new ItemStack[this.getSizeInventory()]; - - for(int var3 = 0; var3 < var2.tagCount(); ++var3) { - NBTTagCompound var4 = (NBTTagCompound)var2.tagAt(var3); - byte var5 = var4.getByte("Slot"); - if(var5 >= 0 && var5 < this.furnaceItemStacks.length) { - this.furnaceItemStacks[var5] = new ItemStack(var4); - } - } - - this.furnaceBurnTime = var1.getShort("BurnTime"); - this.furnaceCookTime = var1.getShort("CookTime"); - this.currentItemBurnTime = this.getItemBurnTime(this.furnaceItemStacks[1]); - } - - public void writeToNBT(NBTTagCompound var1) { - super.writeToNBT(var1); - var1.setShort("BurnTime", (short)this.furnaceBurnTime); - var1.setShort("CookTime", (short)this.furnaceCookTime); - NBTTagList var2 = new NBTTagList(); - - for(int var3 = 0; var3 < this.furnaceItemStacks.length; ++var3) { - if(this.furnaceItemStacks[var3] != null) { - NBTTagCompound var4 = new NBTTagCompound(); - var4.setByte("Slot", (byte)var3); - this.furnaceItemStacks[var3].writeToNBT(var4); - var2.setTag(var4); - } - } - - var1.setTag("Items", var2); - } - - public int getInventoryStackLimit() { - return 64; - } - - public int getCookProgressScaled(int var1) { - return this.furnaceCookTime * var1 / 200; - } - - public int getBurnTimeRemainingScaled(int var1) { - if(this.currentItemBurnTime == 0) { - this.currentItemBurnTime = 200; - } - - return this.furnaceBurnTime * var1 / this.currentItemBurnTime; - } - - public boolean isBurning() { - return this.furnaceBurnTime > 0; - } - - public void updateEntity() { - boolean var1 = this.furnaceBurnTime > 0; - boolean var2 = false; - if(this.furnaceBurnTime > 0) { - --this.furnaceBurnTime; - var2 = true; - } - - if(this.furnaceBurnTime == 0 && this.canSmelt()) { - this.currentItemBurnTime = this.furnaceBurnTime = this.getItemBurnTime(this.furnaceItemStacks[1]); - if(this.furnaceBurnTime > 0) { - var2 = true; - if(this.furnaceItemStacks[1] != null) { - --this.furnaceItemStacks[1].stackSize; - if(this.furnaceItemStacks[1].stackSize == 0) { - this.furnaceItemStacks[1] = null; - } - } - } - } - - if(this.isBurning() && this.canSmelt()) { - ++this.furnaceCookTime; - if(this.furnaceCookTime == 200) { - this.furnaceCookTime = 0; - this.smeltItem(); - var2 = true; - } - } else { - this.furnaceCookTime = 0; - } - - if(var1 != this.furnaceBurnTime > 0) { - var2 = true; - BlockFurnace.updateFurnaceBlockState(this.furnaceBurnTime > 0, this.worldObj, this.xCoord, this.yCoord, this.zCoord); - } - - if(var2) { - this.worldObj.updateTileEntityChunkAndDoNothing(this.xCoord, this.yCoord, this.zCoord); - } - - } - - private boolean canSmelt() { - if(this.furnaceItemStacks[0] == null) { - return false; - } else { - int var1 = this.getSmeltingResult(this.furnaceItemStacks[0].getItem().shiftedIndex); - return var1 < 0 ? false : (this.furnaceItemStacks[2] == null ? true : (this.furnaceItemStacks[2].itemID != var1 ? false : (this.furnaceItemStacks[2].stackSize < this.getInventoryStackLimit() && this.furnaceItemStacks[2].stackSize < this.furnaceItemStacks[2].getMaxStackSize() ? true : this.furnaceItemStacks[2].stackSize < Item.itemsList[var1].getItemStackLimit()))); - } - } - - public void smeltItem() { - if(this.canSmelt()) { - int var1 = this.getSmeltingResult(this.furnaceItemStacks[0].getItem().shiftedIndex); - if(this.furnaceItemStacks[2] == null) { - this.furnaceItemStacks[2] = new ItemStack(var1, 1); - } else if(this.furnaceItemStacks[2].itemID == var1) { - ++this.furnaceItemStacks[2].stackSize; - } - - --this.furnaceItemStacks[0].stackSize; - if(this.furnaceItemStacks[0].stackSize <= 0) { - this.furnaceItemStacks[0] = null; - } - - } - } - - private int getSmeltingResult(int var1) { - return var1 == Block.oreIron.blockID ? Item.ingotIron.shiftedIndex : (var1 == Block.oreGold.blockID ? Item.ingotGold.shiftedIndex : (var1 == Block.oreDiamond.blockID ? Item.diamond.shiftedIndex : (var1 == Block.sand.blockID ? Block.glass.blockID : (var1 == Item.porkRaw.shiftedIndex ? Item.porkCooked.shiftedIndex : (var1 == Block.cobblestone.blockID ? Block.stone.blockID : -1))))); - } - - private int getItemBurnTime(ItemStack var1) { - if(var1 == null) { - return 0; - } else { - int var2 = var1.getItem().shiftedIndex; - return var2 < 256 && Block.blocksList[var2].blockMaterial == Material.wood ? 300 : (var2 == Item.stick.shiftedIndex ? 100 : (var2 == Item.coal.shiftedIndex ? 1600 : 0)); - } - } - - public void onInventoryChanged() { - this.worldObj.updateTileEntityChunkAndDoNothing(this.xCoord, this.yCoord, this.zCoord); - } -} diff --git a/src/net/minecraft/src/TileEntityMobSpawner.java b/src/net/minecraft/src/TileEntityMobSpawner.java deleted file mode 100644 index a03cbb6..0000000 --- a/src/net/minecraft/src/TileEntityMobSpawner.java +++ /dev/null @@ -1,94 +0,0 @@ -package net.minecraft.src; - -public class TileEntityMobSpawner extends TileEntity { - public int delay = -1; - public String mobID = "Pig"; - public double yaw; - public double prevYaw = 0.0D; - - public TileEntityMobSpawner() { - this.delay = 20; - } - - public boolean anyPlayerInRange() { - double var1 = this.worldObj.playerEntity.getDistanceSq((double)this.xCoord, (double)this.yCoord, (double)this.zCoord); - return var1 <= 256.0D; - } - - public void updateEntity() { - this.prevYaw = this.yaw; - if(this.anyPlayerInRange()) { - double var1 = (double)((float)this.xCoord + this.worldObj.rand.nextFloat()); - double var3 = (double)((float)this.yCoord + this.worldObj.rand.nextFloat()); - double var5 = (double)((float)this.zCoord + this.worldObj.rand.nextFloat()); - this.worldObj.spawnParticle("smoke", var1, var3, var5, 0.0D, 0.0D, 0.0D); - this.worldObj.spawnParticle("flame", var1, var3, var5, 0.0D, 0.0D, 0.0D); - - for(this.yaw += (double)(1000.0F / ((float)this.delay + 200.0F)); this.yaw > 360.0D; this.prevYaw -= 360.0D) { - this.yaw -= 360.0D; - } - - if(this.delay == -1) { - this.updateDelay(); - } - - if(this.delay > 0) { - --this.delay; - } else { - byte var7 = 4; - - for(int var8 = 0; var8 < var7; ++var8) { - EntityLiving var9 = (EntityLiving)((EntityLiving)EntityList.createEntityInWorld(this.mobID, this.worldObj)); - if(var9 == null) { - return; - } - - int var10 = this.worldObj.getEntitiesWithinAABB(var9.getClass(), AxisAlignedBB.getBoundingBoxFromPool((double)this.xCoord, (double)this.yCoord, (double)this.zCoord, (double)(this.xCoord + 1), (double)(this.yCoord + 1), (double)(this.zCoord + 1)).expand(8.0D, 4.0D, 8.0D)).size(); - if(var10 >= 6) { - this.updateDelay(); - return; - } - - if(var9 != null) { - double var11 = (double)this.xCoord + (this.worldObj.rand.nextDouble() - this.worldObj.rand.nextDouble()) * 4.0D; - double var13 = (double)(this.yCoord + this.worldObj.rand.nextInt(3) - 1); - double var15 = (double)this.zCoord + (this.worldObj.rand.nextDouble() - this.worldObj.rand.nextDouble()) * 4.0D; - var9.setPositionAndRotation(var11, var13, var15, this.worldObj.rand.nextFloat() * 360.0F, 0.0F); - if(var9.getCanSpawnHere(var11, var13, var15)) { - this.worldObj.spawnEntityInWorld(var9); - - for(int var17 = 0; var17 < 20; ++var17) { - var1 = (double)this.xCoord + 0.5D + ((double)this.worldObj.rand.nextFloat() - 0.5D) * 2.0D; - var3 = (double)this.yCoord + 0.5D + ((double)this.worldObj.rand.nextFloat() - 0.5D) * 2.0D; - var5 = (double)this.zCoord + 0.5D + ((double)this.worldObj.rand.nextFloat() - 0.5D) * 2.0D; - this.worldObj.spawnParticle("smoke", var1, var3, var5, 0.0D, 0.0D, 0.0D); - this.worldObj.spawnParticle("flame", var1, var3, var5, 0.0D, 0.0D, 0.0D); - } - - var9.spawnExplosionParticle(); - this.updateDelay(); - } - } - } - - super.updateEntity(); - } - } - } - - private void updateDelay() { - this.delay = 200 + this.worldObj.rand.nextInt(600); - } - - public void readFromNBT(NBTTagCompound var1) { - super.readFromNBT(var1); - this.mobID = var1.getString("EntityId"); - this.delay = var1.getShort("Delay"); - } - - public void writeToNBT(NBTTagCompound var1) { - super.writeToNBT(var1); - var1.setString("EntityId", this.mobID); - var1.setShort("Delay", (short)this.delay); - } -} diff --git a/src/net/minecraft/src/TileEntityMobSpawnerRenderer.java b/src/net/minecraft/src/TileEntityMobSpawnerRenderer.java deleted file mode 100644 index 6487d2e..0000000 --- a/src/net/minecraft/src/TileEntityMobSpawnerRenderer.java +++ /dev/null @@ -1,36 +0,0 @@ -package net.minecraft.src; - -import java.util.HashMap; -import java.util.Map; -import org.lwjgl.opengl.GL11; - -public class TileEntityMobSpawnerRenderer extends TileEntitySpecialRenderer { - private Map entityHashMap = new HashMap(); - - public void a(TileEntityMobSpawner var1, double var2, double var4, double var6, float var8) { - GL11.glPushMatrix(); - GL11.glTranslatef((float)var2 + 0.5F, (float)var4, (float)var6 + 0.5F); - Entity var9 = (Entity)this.entityHashMap.get(var1.mobID); - if(var9 == null) { - var9 = EntityList.createEntityInWorld(var1.mobID, (World)null); - this.entityHashMap.put(var1.mobID, var9); - } - - if(var9 != null) { - var9.setWorld(var1.worldObj); - float var10 = 7.0F / 16.0F; - GL11.glTranslatef(0.0F, 0.4F, 0.0F); - GL11.glRotatef((float)(var1.prevYaw + (var1.yaw - var1.prevYaw) * (double)var8) * 10.0F, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(-30.0F, 1.0F, 0.0F, 0.0F); - GL11.glTranslatef(0.0F, -0.4F, 0.0F); - GL11.glScalef(var10, var10, var10); - RenderManager.instance.renderEntityWithPosYaw(var9, 0.0D, 0.0D, 0.0D, 0.0F, var8); - } - - GL11.glPopMatrix(); - } - - public void renderTileEntityMobSpawner(TileEntity var1, double var2, double var4, double var6, float var8) { - this.a((TileEntityMobSpawner)var1, var2, var4, var6, var8); - } -} diff --git a/src/net/minecraft/src/TileEntityRenderer.java b/src/net/minecraft/src/TileEntityRenderer.java deleted file mode 100644 index c11fa4e..0000000 --- a/src/net/minecraft/src/TileEntityRenderer.java +++ /dev/null @@ -1,86 +0,0 @@ -package net.minecraft.src; - -import java.util.HashMap; -import java.util.Iterator; -import java.util.Map; -import org.lwjgl.opengl.GL11; - -public class TileEntityRenderer { - private Map specialRendererMap = new HashMap(); - public static TileEntityRenderer instance = new TileEntityRenderer(); - private FontRenderer fontRenderer; - public static double staticPlayerX; - public static double staticPlayerY; - public static double staticPlayerZ; - public RenderEngine renderEngine; - public World worldObj; - public EntityPlayer entityPlayer; - public float playerYaw; - public float playerPitch; - public double playerX; - public double playerY; - public double playerZ; - - private TileEntityRenderer() { - this.specialRendererMap.put(TileEntitySign.class, new TileEntitySignRenderer()); - this.specialRendererMap.put(TileEntityMobSpawner.class, new TileEntityMobSpawnerRenderer()); - Iterator var1 = this.specialRendererMap.values().iterator(); - - while(var1.hasNext()) { - TileEntitySpecialRenderer var2 = (TileEntitySpecialRenderer)var1.next(); - var2.setTileEntityRenderer(this); - } - - } - - public TileEntitySpecialRenderer getSpecialRendererForClass(Class var1) { - TileEntitySpecialRenderer var2 = (TileEntitySpecialRenderer)this.specialRendererMap.get(var1); - if(var2 == null && var1 != TileEntity.class) { - var2 = this.getSpecialRendererForClass(var1.getSuperclass()); - this.specialRendererMap.put(var1, var2); - } - - return var2; - } - - public boolean hasSpecialRenderer(TileEntity var1) { - return this.getSpecialRendererForEntity(var1) != null; - } - - public TileEntitySpecialRenderer getSpecialRendererForEntity(TileEntity var1) { - return this.getSpecialRendererForClass(var1.getClass()); - } - - public void cacheActiveRenderInfo(World var1, RenderEngine var2, FontRenderer var3, EntityPlayer var4, float var5) { - this.worldObj = var1; - this.renderEngine = var2; - this.entityPlayer = var4; - this.fontRenderer = var3; - this.playerYaw = var4.prevRotationYaw + (var4.rotationYaw - var4.prevRotationYaw) * var5; - this.playerPitch = var4.prevRotationPitch + (var4.rotationPitch - var4.prevRotationPitch) * var5; - this.playerX = var4.lastTickPosX + (var4.posX - var4.lastTickPosX) * (double)var5; - this.playerY = var4.lastTickPosY + (var4.posY - var4.lastTickPosY) * (double)var5; - this.playerZ = var4.lastTickPosZ + (var4.posZ - var4.lastTickPosZ) * (double)var5; - } - - public void renderTileEntity(TileEntity var1, float var2) { - if(var1.getDistanceFrom(this.playerX, this.playerY, this.playerZ) < 4096.0D) { - float var3 = this.worldObj.getBrightness(var1.xCoord, var1.yCoord, var1.zCoord); - GL11.glColor3f(var3, var3, var3); - this.renderTileEntityAt(var1, (double)var1.xCoord - staticPlayerX, (double)var1.yCoord - staticPlayerY, (double)var1.zCoord - staticPlayerZ, var2); - } - - } - - public void renderTileEntityAt(TileEntity var1, double var2, double var4, double var6, float var8) { - TileEntitySpecialRenderer var9 = this.getSpecialRendererForEntity(var1); - if(var9 != null) { - var9.renderTileEntityMobSpawner(var1, var2, var4, var6, var8); - } - - } - - public FontRenderer getFontRenderer() { - return this.fontRenderer; - } -} diff --git a/src/net/minecraft/src/TileEntitySign.java b/src/net/minecraft/src/TileEntitySign.java deleted file mode 100644 index 69f2787..0000000 --- a/src/net/minecraft/src/TileEntitySign.java +++ /dev/null @@ -1,26 +0,0 @@ -package net.minecraft.src; - -public class TileEntitySign extends TileEntity { - public String[] signText = new String[]{"", "", "", ""}; - public int lineBeingEdited = -1; - - public void writeToNBT(NBTTagCompound var1) { - super.writeToNBT(var1); - var1.setString("Text1", this.signText[0]); - var1.setString("Text2", this.signText[1]); - var1.setString("Text3", this.signText[2]); - var1.setString("Text4", this.signText[3]); - } - - public void readFromNBT(NBTTagCompound var1) { - super.readFromNBT(var1); - - for(int var2 = 0; var2 < 4; ++var2) { - this.signText[var2] = var1.getString("Text" + (var2 + 1)); - if(this.signText[var2].length() > 15) { - this.signText[var2] = this.signText[var2].substring(0, 15); - } - } - - } -} diff --git a/src/net/minecraft/src/TileEntitySignRenderer.java b/src/net/minecraft/src/TileEntitySignRenderer.java deleted file mode 100644 index b12ca76..0000000 --- a/src/net/minecraft/src/TileEntitySignRenderer.java +++ /dev/null @@ -1,41 +0,0 @@ -package net.minecraft.src; - -import org.lwjgl.opengl.GL11; - -public class TileEntitySignRenderer extends TileEntitySpecialRenderer { - private SignModel modelSign = new SignModel(); - - public void a(TileEntitySign var1, double var2, double var4, double var6, float var8) { - GL11.glPushMatrix(); - GL11.glTranslatef((float)var2 + 0.5F, (float)var4 + 12.0F / 16.0F, (float)var6 + 0.5F); - float var9 = (float)(var1.getBlockMetadata() * 360) / 16.0F; - GL11.glRotatef(-var9, 0.0F, 1.0F, 0.0F); - this.bindTextureByName("/item/sign.png"); - GL11.glPushMatrix(); - GL11.glScalef(1.0F, -1.0F, -1.0F); - this.modelSign.renderSign(); - GL11.glPopMatrix(); - float var10 = (float)(1.0D / 60.0D); - GL11.glTranslatef(0.0F, 0.5F, 0.09F); - GL11.glScalef(var10, -var10, var10); - GL11.glNormal3f(0.0F, 0.0F, -1.0F * var10); - FontRenderer var11 = this.getFontRenderer(); - - for(int var12 = 0; var12 < var1.signText.length; ++var12) { - String var13 = var1.signText[var12]; - if(var12 == var1.lineBeingEdited) { - var13 = "> " + var13 + " <"; - var11.drawString(var13, -var11.getStringWidth(var13) / 2, var12 * 10 - var1.signText.length * 5, 0); - } else { - var11.drawString(var13, -var11.getStringWidth(var13) / 2, var12 * 10 - var1.signText.length * 5, 0); - } - } - - GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); - GL11.glPopMatrix(); - } - - public void renderTileEntityMobSpawner(TileEntity var1, double var2, double var4, double var6, float var8) { - this.a((TileEntitySign)var1, var2, var4, var6, var8); - } -} diff --git a/src/net/minecraft/src/TileEntitySpecialRenderer.java b/src/net/minecraft/src/TileEntitySpecialRenderer.java deleted file mode 100644 index d0ae86c..0000000 --- a/src/net/minecraft/src/TileEntitySpecialRenderer.java +++ /dev/null @@ -1,20 +0,0 @@ -package net.minecraft.src; - -public abstract class TileEntitySpecialRenderer { - protected TileEntityRenderer tileEntityRenderer; - - public abstract void renderTileEntityMobSpawner(TileEntity var1, double var2, double var4, double var6, float var8); - - protected void bindTextureByName(String var1) { - RenderEngine var2 = this.tileEntityRenderer.renderEngine; - var2.bindTexture(var2.getTexture(var1)); - } - - public void setTileEntityRenderer(TileEntityRenderer var1) { - this.tileEntityRenderer = var1; - } - - public FontRenderer getFontRenderer() { - return this.tileEntityRenderer.getFontRenderer(); - } -} diff --git a/src/net/minecraft/src/Timer.java b/src/net/minecraft/src/Timer.java deleted file mode 100644 index 55f1390..0000000 --- a/src/net/minecraft/src/Timer.java +++ /dev/null @@ -1,58 +0,0 @@ -package net.minecraft.src; - -public class Timer { - float ticksPerSecond; - private double lastHRTime; - public int elapsedTicks; - public float renderPartialTicks; - public float timerSpeed = 1.0F; - public float elapsedPartialTicks = 0.0F; - private long lastSyncSysClock; - private long lastSyncHRClock; - private double timeSyncAdjustment = 1.0D; - - public Timer(float var1) { - this.ticksPerSecond = var1; - this.lastSyncSysClock = System.currentTimeMillis(); - this.lastSyncHRClock = System.nanoTime() / 1000000L; - } - - public void updateTimer() { - long var1 = System.currentTimeMillis(); - long var3 = var1 - this.lastSyncSysClock; - long var5 = System.nanoTime() / 1000000L; - double var9; - if(var3 > 1000L) { - long var7 = var5 - this.lastSyncHRClock; - var9 = (double)var3 / (double)var7; - this.timeSyncAdjustment += (var9 - this.timeSyncAdjustment) * (double)0.2F; - this.lastSyncSysClock = var1; - this.lastSyncHRClock = var5; - } - - if(var3 < 0L) { - this.lastSyncSysClock = var1; - this.lastSyncHRClock = var5; - } - - double var11 = (double)var5 / 1000.0D; - var9 = (var11 - this.lastHRTime) * this.timeSyncAdjustment; - this.lastHRTime = var11; - if(var9 < 0.0D) { - var9 = 0.0D; - } - - if(var9 > 1.0D) { - var9 = 1.0D; - } - - this.elapsedPartialTicks = (float)((double)this.elapsedPartialTicks + var9 * (double)this.timerSpeed * (double)this.ticksPerSecond); - this.elapsedTicks = (int)this.elapsedPartialTicks; - this.elapsedPartialTicks -= (float)this.elapsedTicks; - if(this.elapsedTicks > 10) { - this.elapsedTicks = 10; - } - - this.renderPartialTicks = this.elapsedPartialTicks; - } -} diff --git a/src/net/minecraft/src/UnexpectedThrowable.java b/src/net/minecraft/src/UnexpectedThrowable.java deleted file mode 100644 index b05f1b4..0000000 --- a/src/net/minecraft/src/UnexpectedThrowable.java +++ /dev/null @@ -1,11 +0,0 @@ -package net.minecraft.src; - -public class UnexpectedThrowable { - public final String description; - public final Exception exception; - - public UnexpectedThrowable(String var1, Exception var2) { - this.description = var1; - this.exception = var2; - } -} diff --git a/src/net/minecraft/src/Vec3D.java b/src/net/minecraft/src/Vec3D.java deleted file mode 100644 index c0b23a5..0000000 --- a/src/net/minecraft/src/Vec3D.java +++ /dev/null @@ -1,135 +0,0 @@ -package net.minecraft.src; - -import java.util.ArrayList; -import java.util.List; - -public class Vec3D { - private static List vectorList = new ArrayList(); - private static int nextVector = 0; - public double xCoord; - public double yCoord; - public double zCoord; - - public static Vec3D createVectorHelper(double var0, double var2, double var4) { - return new Vec3D(var0, var2, var4); - } - - public static void initialize() { - nextVector = 0; - } - - public static Vec3D createVector(double var0, double var2, double var4) { - if(nextVector >= vectorList.size()) { - vectorList.add(createVectorHelper(0.0D, 0.0D, 0.0D)); - } - - return ((Vec3D)vectorList.get(nextVector++)).setComponents(var0, var2, var4); - } - - private Vec3D(double var1, double var3, double var5) { - if(var1 == -0.0D) { - var1 = 0.0D; - } - - if(var3 == -0.0D) { - var3 = 0.0D; - } - - if(var5 == -0.0D) { - var5 = 0.0D; - } - - this.xCoord = var1; - this.yCoord = var3; - this.zCoord = var5; - } - - private Vec3D setComponents(double var1, double var3, double var5) { - this.xCoord = var1; - this.yCoord = var3; - this.zCoord = var5; - return this; - } - - public Vec3D subtract(Vec3D var1) { - return createVector(var1.xCoord - this.xCoord, var1.yCoord - this.yCoord, var1.zCoord - this.zCoord); - } - - public Vec3D normalize() { - double var1 = (double)MathHelper.sqrt_double(this.xCoord * this.xCoord + this.yCoord * this.yCoord + this.zCoord * this.zCoord); - return var1 < 1.0E-4D ? createVector(0.0D, 0.0D, 0.0D) : createVector(this.xCoord / var1, this.yCoord / var1, this.zCoord / var1); - } - - public Vec3D crossProduct(Vec3D var1) { - return createVector(this.yCoord * var1.zCoord - this.zCoord * var1.yCoord, this.zCoord * var1.xCoord - this.xCoord * var1.zCoord, this.xCoord * var1.yCoord - this.yCoord * var1.xCoord); - } - - public Vec3D addVector(double var1, double var3, double var5) { - return createVector(this.xCoord + var1, this.yCoord + var3, this.zCoord + var5); - } - - public double distanceTo(Vec3D var1) { - double var2 = var1.xCoord - this.xCoord; - double var4 = var1.yCoord - this.yCoord; - double var6 = var1.zCoord - this.zCoord; - return (double)MathHelper.sqrt_double(var2 * var2 + var4 * var4 + var6 * var6); - } - - public double squareDistanceTo(Vec3D var1) { - double var2 = var1.xCoord - this.xCoord; - double var4 = var1.yCoord - this.yCoord; - double var6 = var1.zCoord - this.zCoord; - return var2 * var2 + var4 * var4 + var6 * var6; - } - - public double squareDistanceTo(double var1, double var3, double var5) { - double var7 = var1 - this.xCoord; - double var9 = var3 - this.yCoord; - double var11 = var5 - this.zCoord; - return var7 * var7 + var9 * var9 + var11 * var11; - } - - public double lengthVector() { - return (double)MathHelper.sqrt_double(this.xCoord * this.xCoord + this.yCoord * this.yCoord + this.zCoord * this.zCoord); - } - - public Vec3D getIntermediateWithXValue(Vec3D var1, double var2) { - double var4 = var1.xCoord - this.xCoord; - double var6 = var1.yCoord - this.yCoord; - double var8 = var1.zCoord - this.zCoord; - if(var4 * var4 < (double)1.0E-7F) { - return null; - } else { - double var10 = (var2 - this.xCoord) / var4; - return var10 >= 0.0D && var10 <= 1.0D ? createVector(this.xCoord + var4 * var10, this.yCoord + var6 * var10, this.zCoord + var8 * var10) : null; - } - } - - public Vec3D getIntermediateWithYValue(Vec3D var1, double var2) { - double var4 = var1.xCoord - this.xCoord; - double var6 = var1.yCoord - this.yCoord; - double var8 = var1.zCoord - this.zCoord; - if(var6 * var6 < (double)1.0E-7F) { - return null; - } else { - double var10 = (var2 - this.yCoord) / var6; - return var10 >= 0.0D && var10 <= 1.0D ? createVector(this.xCoord + var4 * var10, this.yCoord + var6 * var10, this.zCoord + var8 * var10) : null; - } - } - - public Vec3D getIntermediateWithZValue(Vec3D var1, double var2) { - double var4 = var1.xCoord - this.xCoord; - double var6 = var1.yCoord - this.yCoord; - double var8 = var1.zCoord - this.zCoord; - if(var8 * var8 < (double)1.0E-7F) { - return null; - } else { - double var10 = (var2 - this.zCoord) / var8; - return var10 >= 0.0D && var10 <= 1.0D ? createVector(this.xCoord + var4 * var10, this.yCoord + var6 * var10, this.zCoord + var8 * var10) : null; - } - } - - public String toString() { - return "(" + this.xCoord + ", " + this.yCoord + ", " + this.zCoord + ")"; - } -} diff --git a/src/net/minecraft/src/World.java b/src/net/minecraft/src/World.java deleted file mode 100644 index ce6119a..0000000 --- a/src/net/minecraft/src/World.java +++ /dev/null @@ -1,1599 +0,0 @@ -package net.minecraft.src; - -import java.io.File; -import java.io.FileInputStream; -import java.io.FileOutputStream; -import java.util.ArrayList; -import java.util.HashSet; -import java.util.List; -import java.util.Random; -import java.util.Set; -import java.util.TreeSet; - -public class World implements IBlockAccess { - private List lightingToUpdate; - private List loadedEntityList; - private List unloadedEntityList; - private TreeSet scheduledTickTreeSet; - private Set scheduledTickSet; - public List loadedTileEntityList; - public long worldTime; - private long skyColor; - private long fogColor; - private long cloudColor; - public int skylightSubtracted; - private int updateLCG; - private int DIST_HASH_MAGIC; - public boolean editingBlocks; - public static float[] lightBrightnessTable = new float[16]; - public Entity playerEntity; - public int difficultySetting; - public Object fontRenderer; - public Random rand; - public int spawnX; - public int spawnY; - public int spawnZ; - public boolean isNewWorld; - private List worldAccesses; - private IChunkProvider chunkProvider; - private File saveDirectory; - public long randomSeed; - private NBTTagCompound nbtCompoundPlayer; - public long setSizeOnDisk; - public final String levelName; - private ArrayList collidingBoundingBoxes; - private List entitiesWithinAABBExcludingEntity; - - public static NBTTagCompound getLevelData(File var0, String var1) { - File var2 = new File(var0, "saves"); - File var3 = new File(var2, var1); - if(!var3.exists()) { - return null; - } else { - File var4 = new File(var3, "level.dat"); - if(var4.exists()) { - try { - NBTTagCompound var5 = CompressedStreamTools.readCompressed(new FileInputStream(var4)); - NBTTagCompound var6 = var5.getCompoundTag("Data"); - return var6; - } catch (Exception var7) { - var7.printStackTrace(); - } - } - - return null; - } - } - - public static void deleteWorld(File var0, String var1) { - File var2 = new File(var0, "saves"); - File var3 = new File(var2, var1); - if(var3.exists()) { - deleteWorldFiles(var3.listFiles()); - var3.delete(); - } - } - - private static void deleteWorldFiles(File[] var0) { - for(int var1 = 0; var1 < var0.length; ++var1) { - if(var0[var1].isDirectory()) { - deleteWorldFiles(var0[var1].listFiles()); - } - - var0[var1].delete(); - } - - } - - public World(File var1, String var2) { - this(var1, var2, (new Random()).nextLong()); - } - - public World(File var1, String var2, long var3) { - this.lightingToUpdate = new ArrayList(); - this.loadedEntityList = new ArrayList(); - this.unloadedEntityList = new ArrayList(); - this.scheduledTickTreeSet = new TreeSet(); - this.scheduledTickSet = new HashSet(); - this.loadedTileEntityList = new ArrayList(); - this.worldTime = 0L; - this.skyColor = 8961023L; - this.fogColor = 12638463L; - this.cloudColor = 16777215L; - this.skylightSubtracted = 0; - this.updateLCG = (new Random()).nextInt(); - this.DIST_HASH_MAGIC = 1013904223; - this.editingBlocks = false; - this.rand = new Random(); - this.isNewWorld = false; - this.worldAccesses = new ArrayList(); - this.randomSeed = 0L; - this.setSizeOnDisk = 0L; - this.collidingBoundingBoxes = new ArrayList(); - this.entitiesWithinAABBExcludingEntity = new ArrayList(); - this.levelName = var2; - var1.mkdirs(); - this.saveDirectory = new File(var1, var2); - this.saveDirectory.mkdirs(); - File var5 = new File(this.saveDirectory, "level.dat"); - this.isNewWorld = !var5.exists(); - if(var5.exists()) { - try { - NBTTagCompound var6 = CompressedStreamTools.readCompressed(new FileInputStream(var5)); - NBTTagCompound var7 = var6.getCompoundTag("Data"); - this.randomSeed = var7.getLong("RandomSeed"); - this.spawnX = var7.getInteger("SpawnX"); - this.spawnY = var7.getInteger("SpawnY"); - this.spawnZ = var7.getInteger("SpawnZ"); - this.worldTime = var7.getLong("Time"); - this.setSizeOnDisk = var7.getLong("SizeOnDisk"); - this.nbtCompoundPlayer = var7.getCompoundTag("Player"); - } catch (Exception var8) { - var8.printStackTrace(); - } - } - - boolean var9 = false; - if(this.randomSeed == 0L) { - this.randomSeed = var3; - var9 = true; - } - - this.chunkProvider = this.getChunkProvider(this.saveDirectory); - if(var9) { - this.spawnX = 0; - this.spawnY = 64; - - for(this.spawnZ = 0; !this.findSpawn(this.spawnX, this.spawnZ); this.spawnZ += this.rand.nextInt(64) - this.rand.nextInt(64)) { - this.spawnX += this.rand.nextInt(64) - this.rand.nextInt(64); - } - } - - this.calculateInitialSkylight(); - } - - protected IChunkProvider getChunkProvider(File var1) { - return new ChunkProviderLoadOrGenerate(this, new ChunkLoader(var1, true), new ChunkProviderGenerate(this, this.randomSeed)); - } - - public void setSpawnLocation() { - while(this.getFirstUncoveredBlock(this.spawnX, this.spawnZ) == 0) { - this.spawnX += this.rand.nextInt(8) - this.rand.nextInt(8); - this.spawnZ += this.rand.nextInt(8) - this.rand.nextInt(8); - } - - } - - private boolean findSpawn(int var1, int var2) { - return this.getFirstUncoveredBlock(var1, var2) == Block.sand.blockID; - } - - private int getFirstUncoveredBlock(int var1, int var2) { - int var3; - for(var3 = 63; this.getBlockId(var1, var3 + 1, var2) != 0; ++var3) { - } - - return this.getBlockId(var1, var3, var2); - } - - public void spawnPlayerWithLoadedChunks() { - try { - if(this.nbtCompoundPlayer != null) { - this.playerEntity.readFromNBT(this.nbtCompoundPlayer); - this.nbtCompoundPlayer = null; - } - - this.spawnEntityInWorld(this.playerEntity); - } catch (Exception var2) { - var2.printStackTrace(); - } - - } - - public void saveWorld(boolean var1, IProgressUpdate var2) { - if(this.chunkProvider.canSave()) { - if(var2 != null) { - var2.displayProgressMessage("Saving level"); - } - - this.saveLevel(); - if(var2 != null) { - var2.displayLoadingString("Saving chunks"); - } - - this.chunkProvider.saveChunks(var1, var2); - } - } - - private void saveLevel() { - NBTTagCompound var1 = new NBTTagCompound(); - var1.setLong("RandomSeed", this.randomSeed); - var1.setInteger("SpawnX", this.spawnX); - var1.setInteger("SpawnY", this.spawnY); - var1.setInteger("SpawnZ", this.spawnZ); - var1.setLong("Time", this.worldTime); - var1.setLong("SizeOnDisk", this.setSizeOnDisk); - var1.setLong("LastPlayed", System.currentTimeMillis()); - NBTTagCompound var2; - if(this.playerEntity != null) { - var2 = new NBTTagCompound(); - this.playerEntity.writeToNBT(var2); - var1.setCompoundTag("Player", var2); - } - - var2 = new NBTTagCompound(); - var2.setTag("Data", var1); - - try { - File var3 = new File(this.saveDirectory, "level.dat_new"); - File var4 = new File(this.saveDirectory, "level.dat_old"); - File var5 = new File(this.saveDirectory, "level.dat"); - CompressedStreamTools.writeCompressed(var2, new FileOutputStream(var3)); - if(var4.exists()) { - var4.delete(); - } - - var5.renameTo(var4); - if(var5.exists()) { - var5.delete(); - } - - var3.renameTo(var5); - if(var3.exists()) { - var3.delete(); - } - } catch (Exception var6) { - var6.printStackTrace(); - } - - } - - public boolean saveWorld(int var1) { - if(!this.chunkProvider.canSave()) { - return true; - } else { - if(var1 == 0) { - this.saveLevel(); - } - - return this.chunkProvider.saveChunks(false, (IProgressUpdate)null); - } - } - - public int getBlockId(int var1, int var2, int var3) { - return var1 >= -32000000 && var3 >= -32000000 && var1 < 32000000 && var3 <= 32000000 ? (var2 < 0 ? 0 : (var2 >= 128 ? 0 : this.getChunkFromChunkCoords(var1 >> 4, var3 >> 4).getBlockID(var1 & 15, var2, var3 & 15))) : 0; - } - - public boolean blockExists(int var1, int var2, int var3) { - return var2 >= 0 && var2 < 128 ? this.chunkExists(var1 >> 4, var3 >> 4) : false; - } - - public boolean checkChunksExist(int var1, int var2, int var3, int var4, int var5, int var6) { - if(var5 >= 0 && var2 < 128) { - var1 >>= 4; - var2 >>= 4; - var3 >>= 4; - var4 >>= 4; - var5 >>= 4; - var6 >>= 4; - - for(int var7 = var1; var7 <= var4; ++var7) { - for(int var8 = var3; var8 <= var6; ++var8) { - if(!this.chunkExists(var7, var8)) { - return false; - } - } - } - - return true; - } else { - return false; - } - } - - private boolean chunkExists(int var1, int var2) { - return this.chunkProvider.chunkExists(var1, var2); - } - - public Chunk getChunkFromBlockCoords(int var1, int var2) { - return this.getChunkFromChunkCoords(var1 >> 4, var2 >> 4); - } - - public Chunk getChunkFromChunkCoords(int var1, int var2) { - return this.chunkProvider.provideChunk(var1, var2); - } - - public boolean setBlockAndMetadata(int var1, int var2, int var3, int var4, int var5) { - if(var1 >= -32000000 && var3 >= -32000000 && var1 < 32000000 && var3 <= 32000000) { - if(var2 < 0) { - return false; - } else if(var2 >= 128) { - return false; - } else { - Chunk var6 = this.getChunkFromChunkCoords(var1 >> 4, var3 >> 4); - return var6.setBlockIDWithMetadata(var1 & 15, var2, var3 & 15, var4, var5); - } - } else { - return false; - } - } - - public boolean setBlock(int var1, int var2, int var3, int var4) { - if(var1 >= -32000000 && var3 >= -32000000 && var1 < 32000000 && var3 <= 32000000) { - if(var2 < 0) { - return false; - } else if(var2 >= 128) { - return false; - } else { - Chunk var5 = this.getChunkFromChunkCoords(var1 >> 4, var3 >> 4); - return var5.setBlockID(var1 & 15, var2, var3 & 15, var4); - } - } else { - return false; - } - } - - public Material getBlockMaterial(int var1, int var2, int var3) { - int var4 = this.getBlockId(var1, var2, var3); - return var4 == 0 ? Material.air : Block.blocksList[var4].blockMaterial; - } - - public int getBlockMetadata(int var1, int var2, int var3) { - if(var1 >= -32000000 && var3 >= -32000000 && var1 < 32000000 && var3 <= 32000000) { - if(var2 < 0) { - return 0; - } else if(var2 >= 128) { - return 0; - } else { - Chunk var4 = this.getChunkFromChunkCoords(var1 >> 4, var3 >> 4); - var1 &= 15; - var3 &= 15; - return var4.getBlockMetadata(var1, var2, var3); - } - } else { - return 0; - } - } - - public void setBlockMetadataWithNotify(int var1, int var2, int var3, int var4) { - this.setBlockMetadata(var1, var2, var3, var4); - } - - public boolean setBlockMetadata(int var1, int var2, int var3, int var4) { - if(var1 >= -32000000 && var3 >= -32000000 && var1 < 32000000 && var3 <= 32000000) { - if(var2 < 0) { - return false; - } else if(var2 >= 128) { - return false; - } else { - Chunk var5 = this.getChunkFromChunkCoords(var1 >> 4, var3 >> 4); - var1 &= 15; - var3 &= 15; - var5.setBlockMetadata(var1, var2, var3, var4); - return true; - } - } else { - return false; - } - } - - public boolean setBlockWithNotify(int var1, int var2, int var3, int var4) { - if(this.setBlock(var1, var2, var3, var4)) { - this.markBlockNeedsUpdate(var1, var2, var3, var4); - return true; - } else { - return false; - } - } - - public boolean setBlockAndMetadataWithNotify(int var1, int var2, int var3, int var4, int var5) { - if(this.setBlockAndMetadata(var1, var2, var3, var4, var5)) { - this.markBlockNeedsUpdate(var1, var2, var3, var4); - return true; - } else { - return false; - } - } - - private void markBlockNeedsUpdate(int var1, int var2, int var3, int var4) { - for(int var5 = 0; var5 < this.worldAccesses.size(); ++var5) { - ((IWorldAccess)this.worldAccesses.get(var5)).markBlockAndNeighborsNeedsUpdate(var1, var2, var3); - } - - this.notifyBlocksOfNeighborChange(var1, var2, var3, var4); - } - - public void markBlockAsNeedsUpdate(int var1, int var2, int var3, int var4) { - if(var3 > var4) { - int var5 = var4; - var4 = var3; - var3 = var5; - } - - this.markBlocksDirty(var1, var3, var2, var1, var4, var2); - } - - public void markBlocksDirty(int var1, int var2, int var3, int var4, int var5, int var6) { - for(int var7 = 0; var7 < this.worldAccesses.size(); ++var7) { - ((IWorldAccess)this.worldAccesses.get(var7)).markBlockRangeNeedsUpdate(var1, var2, var3, var4, var5, var6); - } - - } - - public void notifyBlocksOfNeighborChange(int var1, int var2, int var3, int var4) { - this.notifyBlockOfNeighborChange(var1 - 1, var2, var3, var4); - this.notifyBlockOfNeighborChange(var1 + 1, var2, var3, var4); - this.notifyBlockOfNeighborChange(var1, var2 - 1, var3, var4); - this.notifyBlockOfNeighborChange(var1, var2 + 1, var3, var4); - this.notifyBlockOfNeighborChange(var1, var2, var3 - 1, var4); - this.notifyBlockOfNeighborChange(var1, var2, var3 + 1, var4); - } - - private void notifyBlockOfNeighborChange(int var1, int var2, int var3, int var4) { - if(!this.editingBlocks) { - Block var5 = Block.blocksList[this.getBlockId(var1, var2, var3)]; - if(var5 != null) { - var5.onNeighborBlockChange(this, var1, var2, var3, var4); - } - - } - } - - public boolean canBlockSeeTheSky(int var1, int var2, int var3) { - return this.getChunkFromChunkCoords(var1 >> 4, var3 >> 4).canBlockSeeTheSky(var1 & 15, var2, var3 & 15); - } - - public int getBlockLightValue(int var1, int var2, int var3) { - return this.getBlockLightValue_do(var1, var2, var3, true); - } - - public int getBlockLightValue_do(int var1, int var2, int var3, boolean var4) { - if(var1 >= -32000000 && var3 >= -32000000 && var1 < 32000000 && var3 <= 32000000) { - int var5; - if(var4) { - var5 = this.getBlockId(var1, var2, var3); - if(var5 == Block.stairSingle.blockID || var5 == Block.tilledField.blockID) { - int var6 = this.getBlockLightValue_do(var1, var2 + 1, var3, false); - int var7 = this.getBlockLightValue_do(var1 + 1, var2, var3, false); - int var8 = this.getBlockLightValue_do(var1 - 1, var2, var3, false); - int var9 = this.getBlockLightValue_do(var1, var2, var3 + 1, false); - int var10 = this.getBlockLightValue_do(var1, var2, var3 - 1, false); - if(var7 > var6) { - var6 = var7; - } - - if(var8 > var6) { - var6 = var8; - } - - if(var9 > var6) { - var6 = var9; - } - - if(var10 > var6) { - var6 = var10; - } - - return var6; - } - } - - if(var2 < 0) { - return 0; - } else if(var2 >= 128) { - var5 = 15 - this.skylightSubtracted; - if(var5 < 0) { - var5 = 0; - } - - return var5; - } else { - Chunk var11 = this.getChunkFromChunkCoords(var1 >> 4, var3 >> 4); - var1 &= 15; - var3 &= 15; - return var11.getBlockLightValue(var1, var2, var3, this.skylightSubtracted); - } - } else { - return 15; - } - } - - public boolean canExistingBlockSeeTheSky(int var1, int var2, int var3) { - if(var1 >= -32000000 && var3 >= -32000000 && var1 < 32000000 && var3 <= 32000000) { - if(var2 < 0) { - return false; - } else if(var2 >= 128) { - return true; - } else if(!this.chunkExists(var1 >> 4, var3 >> 4)) { - return false; - } else { - Chunk var4 = this.getChunkFromChunkCoords(var1 >> 4, var3 >> 4); - var1 &= 15; - var3 &= 15; - return var4.canBlockSeeTheSky(var1, var2, var3); - } - } else { - return false; - } - } - - public int getHeightValue(int var1, int var2) { - if(var1 >= -32000000 && var2 >= -32000000 && var1 < 32000000 && var2 <= 32000000) { - if(!this.chunkExists(var1 >> 4, var2 >> 4)) { - return 0; - } else { - Chunk var3 = this.getChunkFromChunkCoords(var1 >> 4, var2 >> 4); - return var3.getHeightValue(var1 & 15, var2 & 15); - } - } else { - return 0; - } - } - - public void neighborLightPropagationChanged(EnumSkyBlock var1, int var2, int var3, int var4, int var5) { - if(this.blockExists(var2, var3, var4)) { - if(var1 == EnumSkyBlock.Sky) { - if(this.canExistingBlockSeeTheSky(var2, var3, var4)) { - var5 = 15; - } - } else if(var1 == EnumSkyBlock.Block) { - int var6 = this.getBlockId(var2, var3, var4); - if(Block.lightValue[var6] > var5) { - var5 = Block.lightValue[var6]; - } - } - - if(this.getSavedLightValue(var1, var2, var3, var4) != var5) { - this.scheduleLightingUpdate(var1, var2, var3, var4, var2, var3, var4); - } - - } - } - - public int getSavedLightValue(EnumSkyBlock var1, int var2, int var3, int var4) { - if(var3 >= 0 && var3 < 128 && var2 >= -32000000 && var4 >= -32000000 && var2 < 32000000 && var4 <= 32000000) { - int var5 = var2 >> 4; - int var6 = var4 >> 4; - if(!this.chunkExists(var5, var6)) { - return 0; - } else { - Chunk var7 = this.getChunkFromChunkCoords(var5, var6); - return var7.getSavedLightValue(var1, var2 & 15, var3, var4 & 15); - } - } else { - return var1.defaultLightValue; - } - } - - public void setLightValue(EnumSkyBlock var1, int var2, int var3, int var4, int var5) { - if(var2 >= -32000000 && var4 >= -32000000 && var2 < 32000000 && var4 <= 32000000) { - if(var3 >= 0) { - if(var3 < 128) { - if(this.chunkExists(var2 >> 4, var4 >> 4)) { - Chunk var6 = this.getChunkFromChunkCoords(var2 >> 4, var4 >> 4); - var6.setLightValue(var1, var2 & 15, var3, var4 & 15, var5); - - for(int var7 = 0; var7 < this.worldAccesses.size(); ++var7) { - ((IWorldAccess)this.worldAccesses.get(var7)).markBlockAndNeighborsNeedsUpdate(var2, var3, var4); - } - - } - } - } - } - } - - public float getBrightness(int var1, int var2, int var3) { - return lightBrightnessTable[this.getBlockLightValue(var1, var2, var3)]; - } - - public boolean isDaytime() { - return this.skylightSubtracted < 4; - } - - public MovingObjectPosition rayTraceBlocks(Vec3D var1, Vec3D var2) { - return this.rayTraceBlocks_do(var1, var2, false); - } - - public MovingObjectPosition rayTraceBlocks_do(Vec3D var1, Vec3D var2, boolean var3) { - if(!Double.isNaN(var1.xCoord) && !Double.isNaN(var1.yCoord) && !Double.isNaN(var1.zCoord)) { - if(!Double.isNaN(var2.xCoord) && !Double.isNaN(var2.yCoord) && !Double.isNaN(var2.zCoord)) { - int var4 = MathHelper.floor_double(var2.xCoord); - int var5 = MathHelper.floor_double(var2.yCoord); - int var6 = MathHelper.floor_double(var2.zCoord); - int var7 = MathHelper.floor_double(var1.xCoord); - int var8 = MathHelper.floor_double(var1.yCoord); - int var9 = MathHelper.floor_double(var1.zCoord); - int var10 = 20; - - while(var10-- >= 0) { - if(Double.isNaN(var1.xCoord) || Double.isNaN(var1.yCoord) || Double.isNaN(var1.zCoord)) { - return null; - } - - if(var7 == var4 && var8 == var5 && var9 == var6) { - return null; - } - - double var11 = 999.0D; - double var13 = 999.0D; - double var15 = 999.0D; - if(var4 > var7) { - var11 = (double)var7 + 1.0D; - } - - if(var4 < var7) { - var11 = (double)var7 + 0.0D; - } - - if(var5 > var8) { - var13 = (double)var8 + 1.0D; - } - - if(var5 < var8) { - var13 = (double)var8 + 0.0D; - } - - if(var6 > var9) { - var15 = (double)var9 + 1.0D; - } - - if(var6 < var9) { - var15 = (double)var9 + 0.0D; - } - - double var17 = 999.0D; - double var19 = 999.0D; - double var21 = 999.0D; - double var23 = var2.xCoord - var1.xCoord; - double var25 = var2.yCoord - var1.yCoord; - double var27 = var2.zCoord - var1.zCoord; - if(var11 != 999.0D) { - var17 = (var11 - var1.xCoord) / var23; - } - - if(var13 != 999.0D) { - var19 = (var13 - var1.yCoord) / var25; - } - - if(var15 != 999.0D) { - var21 = (var15 - var1.zCoord) / var27; - } - - boolean var29 = false; - byte var35; - if(var17 < var19 && var17 < var21) { - if(var4 > var7) { - var35 = 4; - } else { - var35 = 5; - } - - var1.xCoord = var11; - var1.yCoord += var25 * var17; - var1.zCoord += var27 * var17; - } else if(var19 < var21) { - if(var5 > var8) { - var35 = 0; - } else { - var35 = 1; - } - - var1.xCoord += var23 * var19; - var1.yCoord = var13; - var1.zCoord += var27 * var19; - } else { - if(var6 > var9) { - var35 = 2; - } else { - var35 = 3; - } - - var1.xCoord += var23 * var21; - var1.yCoord += var25 * var21; - var1.zCoord = var15; - } - - Vec3D var30 = Vec3D.createVector(var1.xCoord, var1.yCoord, var1.zCoord); - var7 = (int)(var30.xCoord = (double)MathHelper.floor_double(var1.xCoord)); - if(var35 == 5) { - --var7; - ++var30.xCoord; - } - - var8 = (int)(var30.yCoord = (double)MathHelper.floor_double(var1.yCoord)); - if(var35 == 1) { - --var8; - ++var30.yCoord; - } - - var9 = (int)(var30.zCoord = (double)MathHelper.floor_double(var1.zCoord)); - if(var35 == 3) { - --var9; - ++var30.zCoord; - } - - int var31 = this.getBlockId(var7, var8, var9); - int var32 = this.getBlockMetadata(var7, var8, var9); - Block var33 = Block.blocksList[var31]; - MovingObjectPosition var34; - if(var31 > 0 && var33.canCollideCheck(var32, var3)) { - var34 = var33.collisionRayTrace(this, var7, var8, var9, var1, var2); - if(var34 != null) { - return var34; - } - } - - var31 = this.getBlockId(var7, var8 - 1, var9); - var32 = this.getBlockMetadata(var7, var8 - 1, var9); - var33 = Block.blocksList[var31]; - if(var31 > 0 && var33.canCollideCheck(var32, var3)) { - var34 = var33.collisionRayTrace(this, var7, var8 - 1, var9, var1, var2); - if(var34 != null) { - return var34; - } - } - } - - return null; - } else { - return null; - } - } else { - return null; - } - } - - public void playSoundAtEntity(Entity var1, String var2, float var3, float var4) { - for(int var5 = 0; var5 < this.worldAccesses.size(); ++var5) { - float var6 = 16.0F; - if(var3 > 1.0F) { - var6 *= var3; - } - - if(this.playerEntity.getDistanceSqToEntity(var1) < (double)(var6 * var6)) { - ((IWorldAccess)this.worldAccesses.get(var5)).playSound(var2, var1.posX, var1.posY - (double)var1.yOffset, var1.posZ, var3, var4); - } - } - - } - - public void playSoundEffect(double var1, double var3, double var5, String var7, float var8, float var9) { - try { - for(int var10 = 0; var10 < this.worldAccesses.size(); ++var10) { - float var11 = 16.0F; - if(var8 > 1.0F) { - var11 *= var8; - } - - double var12 = var1 - this.playerEntity.posX; - double var14 = var3 - this.playerEntity.posY; - double var16 = var5 - this.playerEntity.posZ; - if(var12 * var12 + var14 * var14 + var16 * var16 < (double)(var11 * var11)) { - ((IWorldAccess)this.worldAccesses.get(var10)).playSound(var7, var1, var3, var5, var8, var9); - } - } - } catch (Exception var18) { - var18.printStackTrace(); - } - - } - - public void playMusic(double var1, double var3, double var5, String var7, float var8) { - } - - public void spawnParticle(String var1, double var2, double var4, double var6, double var8, double var10, double var12) { - for(int var14 = 0; var14 < this.worldAccesses.size(); ++var14) { - ((IWorldAccess)this.worldAccesses.get(var14)).spawnParticle(var1, var2, var4, var6, var8, var10, var12); - } - - } - - public void spawnEntityInWorld(Entity var1) { - int var2 = MathHelper.floor_double(var1.posX / 16.0D); - int var3 = MathHelper.floor_double(var1.posZ / 16.0D); - if(this.chunkExists(var2, var3)) { - this.getChunkFromChunkCoords(var2, var3).addEntity(var1); - this.loadedEntityList.add(var1); - - for(int var4 = 0; var4 < this.worldAccesses.size(); ++var4) { - ((IWorldAccess)this.worldAccesses.get(var4)).obtainEntitySkin(var1); - } - } else { - System.out.println("Failed to add entity " + var1); - } - - } - - public void setEntityDead(Entity var1) { - var1.setEntityDead(); - } - - public void addWorldAccess(IWorldAccess var1) { - this.worldAccesses.add(var1); - } - - public void removeWorldAccess(IWorldAccess var1) { - this.worldAccesses.remove(var1); - } - - public List getCollidingBoundingBoxes(Entity var1, AxisAlignedBB var2) { - this.collidingBoundingBoxes.clear(); - int var3 = MathHelper.floor_double(var2.minX); - int var4 = MathHelper.floor_double(var2.maxX + 1.0D); - int var5 = MathHelper.floor_double(var2.minY); - int var6 = MathHelper.floor_double(var2.maxY + 1.0D); - int var7 = MathHelper.floor_double(var2.minZ); - int var8 = MathHelper.floor_double(var2.maxZ + 1.0D); - - for(int var9 = var3; var9 < var4; ++var9) { - for(int var10 = var5 - 1; var10 < var6; ++var10) { - for(int var11 = var7; var11 < var8; ++var11) { - Block var12 = Block.blocksList[this.getBlockId(var9, var10, var11)]; - if(var12 != null) { - var12.getCollidingBoundingBoxes(this, var9, var10, var11, var2, this.collidingBoundingBoxes); - } - } - } - } - - double var16 = 0.25D; - List var14 = this.getEntitiesWithinAABBExcludingEntity(var1, var2.expand(var16, var16, var16)); - - for(int var15 = 0; var15 < var14.size(); ++var15) { - AxisAlignedBB var13 = ((Entity)var14.get(var15)).getBoundingBox(); - if(var13 != null) { - this.collidingBoundingBoxes.add(var13); - } - - var13 = var1.getCollisionBox((Entity)var14.get(var15)); - if(var13 != null) { - this.collidingBoundingBoxes.add(var13); - } - } - - return this.collidingBoundingBoxes; - } - - public int calculateSkylightSubtracted(float var1) { - float var2 = this.getCelestialAngle(var1); - float var3 = 1.0F - (MathHelper.cos(var2 * (float)Math.PI * 2.0F) * 2.0F + 0.5F); - if(var3 < 0.0F) { - var3 = 0.0F; - } - - if(var3 > 1.0F) { - var3 = 1.0F; - } - - return (int)(var3 * 11.0F); - } - - public Vec3D getSkyColor(float var1) { - float var2 = this.getCelestialAngle(var1); - float var3 = MathHelper.cos(var2 * (float)Math.PI * 2.0F) * 2.0F + 0.5F; - if(var3 < 0.0F) { - var3 = 0.0F; - } - - if(var3 > 1.0F) { - var3 = 1.0F; - } - - float var4 = (float)(this.skyColor >> 16 & 255L) / 255.0F; - float var5 = (float)(this.skyColor >> 8 & 255L) / 255.0F; - float var6 = (float)(this.skyColor & 255L) / 255.0F; - var4 *= var3; - var5 *= var3; - var6 *= var3; - return Vec3D.createVector((double)var4, (double)var5, (double)var6); - } - - public float getCelestialAngle(float var1) { - int var2 = (int)(this.worldTime % 24000L); - float var3 = ((float)var2 + var1) / 24000.0F - 0.25F; - if(var3 < 0.0F) { - ++var3; - } - - if(var3 > 1.0F) { - --var3; - } - - float var4 = var3; - var3 = 1.0F - (float)((Math.cos((double)var3 * Math.PI) + 1.0D) / 2.0D); - var3 = var4 + (var3 - var4) / 3.0F; - return var3; - } - - public Vec3D getCloudColor(float var1) { - float var2 = this.getCelestialAngle(var1); - float var3 = MathHelper.cos(var2 * (float)Math.PI * 2.0F) * 2.0F + 0.5F; - if(var3 < 0.0F) { - var3 = 0.0F; - } - - if(var3 > 1.0F) { - var3 = 1.0F; - } - - float var4 = (float)(this.cloudColor >> 16 & 255L) / 255.0F; - float var5 = (float)(this.cloudColor >> 8 & 255L) / 255.0F; - float var6 = (float)(this.cloudColor & 255L) / 255.0F; - var4 *= var3 * 0.9F + 0.1F; - var5 *= var3 * 0.9F + 0.1F; - var6 *= var3 * 0.85F + 0.15F; - return Vec3D.createVector((double)var4, (double)var5, (double)var6); - } - - public Vec3D getFogColor(float var1) { - float var2 = this.getCelestialAngle(var1); - float var3 = MathHelper.cos(var2 * (float)Math.PI * 2.0F) * 2.0F + 0.5F; - if(var3 < 0.0F) { - var3 = 0.0F; - } - - if(var3 > 1.0F) { - var3 = 1.0F; - } - - float var4 = (float)(this.fogColor >> 16 & 255L) / 255.0F; - float var5 = (float)(this.fogColor >> 8 & 255L) / 255.0F; - float var6 = (float)(this.fogColor & 255L) / 255.0F; - var4 *= var3 * 0.94F + 0.06F; - var5 *= var3 * 0.94F + 0.06F; - var6 *= var3 * 0.91F + 0.09F; - return Vec3D.createVector((double)var4, (double)var5, (double)var6); - } - - public int getTopSolidOrLiquidBlock(int var1, int var2) { - return 64; - } - - public float getStarBrightness(float var1) { - float var2 = this.getCelestialAngle(var1); - float var3 = 1.0F - (MathHelper.cos(var2 * (float)Math.PI * 2.0F) * 2.0F + 12.0F / 16.0F); - if(var3 < 0.0F) { - var3 = 0.0F; - } - - if(var3 > 1.0F) { - var3 = 1.0F; - } - - return var3 * var3 * 0.5F; - } - - public void scheduleBlockUpdate(int var1, int var2, int var3, int var4) { - NextTickListEntry var5 = new NextTickListEntry(var1, var2, var3, var4); - byte var6 = 8; - if(this.checkChunksExist(var1 - var6, var2 - var6, var3 - var6, var1 + var6, var2 + var6, var3 + var6)) { - if(var4 > 0) { - var5.setScheduledTime((long)Block.blocksList[var4].tickRate() + this.worldTime); - } - - if(!this.scheduledTickSet.contains(var5)) { - this.scheduledTickSet.add(var5); - this.scheduledTickTreeSet.add(var5); - } - } - - } - - public void updateEntities() { - this.loadedEntityList.removeAll(this.unloadedEntityList); - - int var1; - int var3; - for(var1 = 0; var1 < this.worldAccesses.size(); ++var1) { - IWorldAccess var2 = (IWorldAccess)this.worldAccesses.get(var1); - - for(var3 = 0; var3 < this.unloadedEntityList.size(); ++var3) { - var2.releaseEntitySkin((Entity)this.unloadedEntityList.get(var3)); - } - } - - this.unloadedEntityList.clear(); - - for(var1 = 0; var1 < this.loadedEntityList.size(); ++var1) { - Entity var6 = (Entity)this.loadedEntityList.get(var1); - if(var6.ridingEntity != null) { - if(!var6.ridingEntity.isDead && var6.ridingEntity.riddenByEntity == var6) { - continue; - } - - var6.ridingEntity.riddenByEntity = null; - var6.ridingEntity = null; - } - - if(!var6.isDead) { - this.updateEntity(var6); - } - - if(var6.isDead) { - var3 = MathHelper.floor_double(var6.posX / 16.0D); - int var4 = MathHelper.floor_double(var6.posZ / 16.0D); - if(this.chunkExists(var3, var4)) { - this.getChunkFromChunkCoords(var3, var4).removeEntity(var6); - } - - this.loadedEntityList.remove(var1--); - - for(int var5 = 0; var5 < this.worldAccesses.size(); ++var5) { - ((IWorldAccess)this.worldAccesses.get(var5)).releaseEntitySkin(var6); - } - } - } - - for(var1 = 0; var1 < this.loadedTileEntityList.size(); ++var1) { - TileEntity var7 = (TileEntity)this.loadedTileEntityList.get(var1); - var7.updateEntity(); - } - - } - - private void updateEntity(Entity var1) { - int var2 = MathHelper.floor_double(var1.posX); - int var3 = MathHelper.floor_double(var1.posY); - int var4 = MathHelper.floor_double(var1.posZ); - byte var5 = 16; - if(this.checkChunksExist(var2 - var5, 0, var4 - var5, var2 + var5, 128, var4 + var5)) { - var1.lastTickPosX = var1.posX; - var1.lastTickPosY = var1.posY; - var1.lastTickPosZ = var1.posZ; - var1.prevRotationYaw = var1.rotationYaw; - var1.prevRotationPitch = var1.rotationPitch; - int var6 = MathHelper.floor_double(var1.posX / 16.0D); - int var7 = MathHelper.floor_double(var1.posY / 16.0D); - int var8 = MathHelper.floor_double(var1.posZ / 16.0D); - if(var1.ridingEntity != null) { - var1.updateRidden(); - } else { - var1.onUpdate(); - } - - int var9 = MathHelper.floor_double(var1.posX / 16.0D); - int var10 = MathHelper.floor_double(var1.posY / 16.0D); - int var11 = MathHelper.floor_double(var1.posZ / 16.0D); - if(var6 != var9 || var7 != var10 || var8 != var11) { - if(this.chunkExists(var6, var8)) { - this.getChunkFromChunkCoords(var6, var8).removeEntityAtIndex(var1, var7); - } - - if(this.chunkExists(var9, var11)) { - this.getChunkFromChunkCoords(var9, var11).addEntity(var1); - } else { - var1.setEntityDead(); - } - } - - if(var1.riddenByEntity != null) { - if(!var1.riddenByEntity.isDead && var1.riddenByEntity.ridingEntity == var1) { - this.updateEntity(var1.riddenByEntity); - } else { - var1.riddenByEntity.ridingEntity = null; - var1.riddenByEntity = null; - } - } - - if(Double.isNaN(var1.posX) || Double.isInfinite(var1.posX)) { - var1.posX = var1.lastTickPosX; - } - - if(Double.isNaN(var1.posY) || Double.isInfinite(var1.posY)) { - var1.posY = var1.lastTickPosY; - } - - if(Double.isNaN(var1.posZ) || Double.isInfinite(var1.posZ)) { - var1.posZ = var1.lastTickPosZ; - } - - if(Double.isNaN((double)var1.rotationPitch) || Double.isInfinite((double)var1.rotationPitch)) { - var1.rotationPitch = var1.prevRotationPitch; - } - - if(Double.isNaN((double)var1.rotationYaw) || Double.isInfinite((double)var1.rotationYaw)) { - var1.rotationYaw = var1.prevRotationYaw; - } - - } - } - - public boolean checkIfAABBIsClear(AxisAlignedBB var1) { - List var2 = this.getEntitiesWithinAABBExcludingEntity((Entity)null, var1); - - for(int var3 = 0; var3 < var2.size(); ++var3) { - Entity var4 = (Entity)var2.get(var3); - if(!var4.isDead && var4.preventEntitySpawning) { - return false; - } - } - - return true; - } - - public boolean getIsAnyLiquid(AxisAlignedBB var1) { - int var2 = MathHelper.floor_double(var1.minX); - int var3 = MathHelper.floor_double(var1.maxX + 1.0D); - int var4 = MathHelper.floor_double(var1.minY); - int var5 = MathHelper.floor_double(var1.maxY + 1.0D); - int var6 = MathHelper.floor_double(var1.minZ); - int var7 = MathHelper.floor_double(var1.maxZ + 1.0D); - if(var1.minX < 0.0D) { - --var2; - } - - if(var1.minY < 0.0D) { - --var4; - } - - if(var1.minZ < 0.0D) { - --var6; - } - - for(int var8 = var2; var8 < var3; ++var8) { - for(int var9 = var4; var9 < var5; ++var9) { - for(int var10 = var6; var10 < var7; ++var10) { - Block var11 = Block.blocksList[this.getBlockId(var8, var9, var10)]; - if(var11 != null && var11.blockMaterial.getIsLiquid()) { - return true; - } - } - } - } - - return false; - } - - public boolean isBoundingBoxBurning(AxisAlignedBB var1) { - int var2 = MathHelper.floor_double(var1.minX); - int var3 = MathHelper.floor_double(var1.maxX + 1.0D); - int var4 = MathHelper.floor_double(var1.minY); - int var5 = MathHelper.floor_double(var1.maxY + 1.0D); - int var6 = MathHelper.floor_double(var1.minZ); - int var7 = MathHelper.floor_double(var1.maxZ + 1.0D); - - for(int var8 = var2; var8 < var3; ++var8) { - for(int var9 = var4; var9 < var5; ++var9) { - for(int var10 = var6; var10 < var7; ++var10) { - int var11 = this.getBlockId(var8, var9, var10); - if(var11 == Block.fire.blockID || var11 == Block.lavaMoving.blockID || var11 == Block.lavaStill.blockID) { - return true; - } - } - } - } - - return false; - } - - public boolean handleMaterialAcceleration(AxisAlignedBB var1, Material var2, Entity var3) { - int var4 = MathHelper.floor_double(var1.minX); - int var5 = MathHelper.floor_double(var1.maxX + 1.0D); - int var6 = MathHelper.floor_double(var1.minY); - int var7 = MathHelper.floor_double(var1.maxY + 1.0D); - int var8 = MathHelper.floor_double(var1.minZ); - int var9 = MathHelper.floor_double(var1.maxZ + 1.0D); - boolean var10 = false; - Vec3D var11 = Vec3D.createVector(0.0D, 0.0D, 0.0D); - - for(int var12 = var4; var12 < var5; ++var12) { - for(int var13 = var6; var13 < var7; ++var13) { - for(int var14 = var8; var14 < var9; ++var14) { - Block var15 = Block.blocksList[this.getBlockId(var12, var13, var14)]; - if(var15 != null && var15.blockMaterial == var2) { - double var16 = (double)((float)(var13 + 1) - BlockFluid.getPercentAir(this.getBlockMetadata(var12, var13, var14))); - if((double)var7 >= var16) { - var10 = true; - var15.velocityToAddToEntity(this, var12, var13, var14, var3, var11); - } - } - } - } - } - - if(var11.lengthVector() > 0.0D) { - var11 = var11.normalize(); - double var18 = 0.004D; - var3.motionX += var11.xCoord * var18; - var3.motionY += var11.yCoord * var18; - var3.motionZ += var11.zCoord * var18; - } - - return var10; - } - - public boolean isMaterialInBB(AxisAlignedBB var1, Material var2) { - int var3 = MathHelper.floor_double(var1.minX); - int var4 = MathHelper.floor_double(var1.maxX + 1.0D); - int var5 = MathHelper.floor_double(var1.minY); - int var6 = MathHelper.floor_double(var1.maxY + 1.0D); - int var7 = MathHelper.floor_double(var1.minZ); - int var8 = MathHelper.floor_double(var1.maxZ + 1.0D); - - for(int var9 = var3; var9 < var4; ++var9) { - for(int var10 = var5; var10 < var6; ++var10) { - for(int var11 = var7; var11 < var8; ++var11) { - Block var12 = Block.blocksList[this.getBlockId(var9, var10, var11)]; - if(var12 != null && var12.blockMaterial == var2) { - return true; - } - } - } - } - - return false; - } - - public void createExplosion(Entity var1, double var2, double var4, double var6, float var8) { - (new Explosion()).doExplosion(this, var1, var2, var4, var6, var8); - } - - public float getBlockDensity(Vec3D var1, AxisAlignedBB var2) { - double var3 = 1.0D / ((var2.maxX - var2.minX) * 2.0D + 1.0D); - double var5 = 1.0D / ((var2.maxY - var2.minY) * 2.0D + 1.0D); - double var7 = 1.0D / ((var2.maxZ - var2.minZ) * 2.0D + 1.0D); - int var9 = 0; - int var10 = 0; - - for(float var11 = 0.0F; var11 <= 1.0F; var11 = (float)((double)var11 + var3)) { - for(float var12 = 0.0F; var12 <= 1.0F; var12 = (float)((double)var12 + var5)) { - for(float var13 = 0.0F; var13 <= 1.0F; var13 = (float)((double)var13 + var7)) { - double var14 = var2.minX + (var2.maxX - var2.minX) * (double)var11; - double var16 = var2.minY + (var2.maxY - var2.minY) * (double)var12; - double var18 = var2.minZ + (var2.maxZ - var2.minZ) * (double)var13; - if(this.rayTraceBlocks(Vec3D.createVector(var14, var16, var18), var1) == null) { - ++var9; - } - - ++var10; - } - } - } - - return (float)var9 / (float)var10; - } - - public void extinguishFire(int var1, int var2, int var3, int var4) { - if(var4 == 0) { - --var2; - } - - if(var4 == 1) { - ++var2; - } - - if(var4 == 2) { - --var3; - } - - if(var4 == 3) { - ++var3; - } - - if(var4 == 4) { - --var1; - } - - if(var4 == 5) { - ++var1; - } - - if(this.getBlockId(var1, var2, var3) == Block.fire.blockID) { - this.playSoundEffect((double)((float)var1 + 0.5F), (double)((float)var2 + 0.5F), (double)((float)var3 + 0.5F), "random.fizz", 0.5F, 2.6F + (this.rand.nextFloat() - this.rand.nextFloat()) * 0.8F); - this.setBlockWithNotify(var1, var2, var3, 0); - } - - } - - public Entity createDebugPlayer(Class var1) { - return null; - } - - public String getDebugLoadedEntities() { - return "All: " + this.loadedEntityList.size(); - } - - public Entity getPlayerEntity() { - return this.playerEntity; - } - - public TileEntity getBlockTileEntity(int var1, int var2, int var3) { - Chunk var4 = this.getChunkFromChunkCoords(var1 >> 4, var3 >> 4); - return var4 != null ? var4.getChunkBlockTileEntity(var1 & 15, var2, var3 & 15) : null; - } - - public void setBlockTileEntity(int var1, int var2, int var3, TileEntity var4) { - Chunk var5 = this.getChunkFromChunkCoords(var1 >> 4, var3 >> 4); - if(var5 != null) { - var5.setChunkBlockTileEntity(var1 & 15, var2, var3 & 15, var4); - } - - } - - public void removeBlockTileEntity(int var1, int var2, int var3) { - Chunk var4 = this.getChunkFromChunkCoords(var1 >> 4, var3 >> 4); - if(var4 != null) { - var4.removeChunkBlockTileEntity(var1 & 15, var2, var3 & 15); - } - - } - - public boolean isBlockNormalCube(int var1, int var2, int var3) { - Block var4 = Block.blocksList[this.getBlockId(var1, var2, var3)]; - return var4 == null ? false : var4.isOpaqueCube(); - } - - public void saveWorldIndirectly(IProgressUpdate var1) { - this.saveWorld(true, var1); - } - - public boolean updatingLighting() { - int var1 = 100000; - - while(this.lightingToUpdate.size() > 0) { - --var1; - if(var1 <= 0) { - return true; - } - - ((MetadataChunkBlock)this.lightingToUpdate.remove(this.lightingToUpdate.size() - 1)).updateLight(this); - } - - return false; - } - - public void scheduleLightingUpdate(EnumSkyBlock var1, int var2, int var3, int var4, int var5, int var6, int var7) { - int var8 = this.lightingToUpdate.size(); - int var9 = 4; - if(var9 > var8) { - var9 = var8; - } - - for(int var10 = 0; var10 < var9; ++var10) { - MetadataChunkBlock var11 = (MetadataChunkBlock)this.lightingToUpdate.get(this.lightingToUpdate.size() - var10 - 1); - if(var11.skyBlock == var1 && var11.getLightUpdated(var2, var3, var4, var5, var6, var7)) { - return; - } - } - - this.lightingToUpdate.add(new MetadataChunkBlock(var1, var2, var3, var4, var5, var6, var7)); - if(this.lightingToUpdate.size() > 100000) { - while(this.lightingToUpdate.size() > '\uc350') { - this.updatingLighting(); - } - } - - } - - public void calculateInitialSkylight() { - int var1 = this.calculateSkylightSubtracted(1.0F); - if(var1 != this.skylightSubtracted) { - this.skylightSubtracted = var1; - } - - } - - public void tick() { - this.chunkProvider.unload100OldestChunks(); - if(!this.loadedEntityList.contains(this.playerEntity) && this.playerEntity != null) { - System.out.println("DOHASDOSHIH!"); - this.spawnEntityInWorld(this.playerEntity); - } - - int var1 = this.calculateSkylightSubtracted(1.0F); - int var2; - if(var1 != this.skylightSubtracted) { - this.skylightSubtracted = var1; - - for(var2 = 0; var2 < this.worldAccesses.size(); ++var2) { - ((IWorldAccess)this.worldAccesses.get(var2)).updateAllRenderers(); - } - } - - ++this.worldTime; - if(this.worldTime % 20L == 0L) { - this.saveWorld(false, (IProgressUpdate)null); - } - - this.tickUpdates(false); - var2 = MathHelper.floor_double(this.playerEntity.posX); - int var3 = MathHelper.floor_double(this.playerEntity.posZ); - byte var4 = 64; - ChunkCache var5 = new ChunkCache(this, var2 - var4, 0, var3 - var4, var2 + var4, 128, var3 + var4); - - for(int var6 = 0; var6 < 8000; ++var6) { - this.updateLCG = this.updateLCG * 3 + this.DIST_HASH_MAGIC; - int var7 = this.updateLCG >> 2; - int var8 = (var7 & 127) - 64 + var2; - int var9 = (var7 >> 8 & 127) - 64 + var3; - int var10 = var7 >> 16 & 127; - int var11 = var5.getBlockId(var8, var10, var9); - if(Block.tickOnLoad[var11]) { - Block.blocksList[var11].updateTick(this, var8, var10, var9, this.rand); - } - } - - } - - public boolean tickUpdates(boolean var1) { - int var2 = this.scheduledTickTreeSet.size(); - if(var2 != this.scheduledTickSet.size()) { - throw new IllegalStateException("TickNextTick list out of synch"); - } else { - if(var2 > 500) { - var2 = 500; - } - - for(int var3 = 0; var3 < var2; ++var3) { - NextTickListEntry var4 = (NextTickListEntry)this.scheduledTickTreeSet.first(); - if(!var1 && var4.scheduledTime > this.worldTime) { - break; - } - - this.scheduledTickTreeSet.remove(var4); - this.scheduledTickSet.remove(var4); - byte var5 = 8; - if(this.checkChunksExist(var4.xCoord - var5, var4.yCoord - var5, var4.zCoord - var5, var4.xCoord + var5, var4.yCoord + var5, var4.zCoord + var5)) { - int var6 = this.getBlockId(var4.xCoord, var4.yCoord, var4.zCoord); - if(var6 == var4.blockID && var6 > 0) { - Block.blocksList[var6].updateTick(this, var4.xCoord, var4.yCoord, var4.zCoord, this.rand); - } - } - } - - return this.scheduledTickTreeSet.size() != 0; - } - } - - public void randomDisplayUpdates(int var1, int var2, int var3) { - byte var4 = 16; - Random var5 = new Random(); - - for(int var6 = 0; var6 < 1000; ++var6) { - int var7 = var1 + this.rand.nextInt(var4) - this.rand.nextInt(var4); - int var8 = var2 + this.rand.nextInt(var4) - this.rand.nextInt(var4); - int var9 = var3 + this.rand.nextInt(var4) - this.rand.nextInt(var4); - int var10 = this.getBlockId(var7, var8, var9); - if(var10 > 0) { - Block.blocksList[var10].randomDisplayTick(this, var7, var8, var9, var5); - } - } - - } - - public List getEntitiesWithinAABBExcludingEntity(Entity var1, AxisAlignedBB var2) { - this.entitiesWithinAABBExcludingEntity.clear(); - int var3 = MathHelper.floor_double((var2.minX - 2.0D) / 16.0D); - int var4 = MathHelper.floor_double((var2.maxX + 2.0D) / 16.0D); - int var5 = MathHelper.floor_double((var2.minZ - 2.0D) / 16.0D); - int var6 = MathHelper.floor_double((var2.maxZ + 2.0D) / 16.0D); - - for(int var7 = var3; var7 <= var4; ++var7) { - for(int var8 = var5; var8 <= var6; ++var8) { - if(this.chunkExists(var7, var8)) { - this.getChunkFromChunkCoords(var7, var8).getEntitiesWithinAABBForEntity(var1, var2, this.entitiesWithinAABBExcludingEntity); - } - } - } - - return this.entitiesWithinAABBExcludingEntity; - } - - public List getEntitiesWithinAABB(Class var1, AxisAlignedBB var2) { - int var3 = MathHelper.floor_double((var2.minX - 2.0D) / 16.0D); - int var4 = MathHelper.floor_double((var2.maxX + 2.0D) / 16.0D); - int var5 = MathHelper.floor_double((var2.minZ - 2.0D) / 16.0D); - int var6 = MathHelper.floor_double((var2.maxZ + 2.0D) / 16.0D); - ArrayList var7 = new ArrayList(); - - for(int var8 = var3; var8 <= var4; ++var8) { - for(int var9 = var5; var9 <= var6; ++var9) { - if(this.chunkExists(var8, var9)) { - this.getChunkFromChunkCoords(var8, var9).getEntitiesOfTypeWithinAAAB(var1, var2, var7); - } - } - } - - return var7; - } - - public List getLoadedEntityList() { - return this.loadedEntityList; - } - - public void updateTileEntityChunkAndDoNothing(int var1, int var2, int var3) { - if(this.blockExists(var1, var2, var3)) { - this.getChunkFromBlockCoords(var1, var3).setChunkModified(); - } - - } - - public int countEntities(Class var1) { - int var2 = 0; - - for(int var3 = 0; var3 < this.loadedEntityList.size(); ++var3) { - Entity var4 = (Entity)this.loadedEntityList.get(var3); - if(var1.isAssignableFrom(var4.getClass())) { - ++var2; - } - } - - return var2; - } - - public void addLoadedEntities(List var1) { - this.loadedEntityList.addAll(var1); - - for(int var2 = 0; var2 < this.worldAccesses.size(); ++var2) { - IWorldAccess var3 = (IWorldAccess)this.worldAccesses.get(var2); - - for(int var4 = 0; var4 < var1.size(); ++var4) { - var3.obtainEntitySkin((Entity)var1.get(var4)); - } - } - - } - - public void unloadEntities(List var1) { - this.unloadedEntityList.addAll(var1); - } - - public void dropOldChunks() { - while(this.chunkProvider.unload100OldestChunks()) { - } - - } - - public boolean canBlockBePlacedAt(int var1, int var2, int var3, int var4, boolean var5) { - int var6 = this.getBlockId(var2, var3, var4); - Block var7 = Block.blocksList[var6]; - Block var8 = Block.blocksList[var1]; - AxisAlignedBB var9 = var8.getCollisionBoundingBoxFromPool(this, var2, var3, var4); - if(var5) { - var9 = null; - } - - return (var1 > 0 && var7 == null || var7 == Block.waterMoving || var7 == Block.waterStill || var7 == Block.lavaMoving || var7 == Block.lavaStill || var7 == Block.fire) && (var9 == null || this.checkIfAABBIsClear(var9)) && var8.canPlaceBlockAt(this, var2, var3, var4); - } - - public PathEntity getPathToEntity(Entity var1, Entity var2, float var3) { - int var4 = MathHelper.floor_double(var1.posX); - int var5 = MathHelper.floor_double(var1.posY); - int var6 = MathHelper.floor_double(var1.posZ); - int var7 = (int)(var3 + 32.0F); - int var8 = var4 - var7; - int var9 = var5 - var7; - int var10 = var6 - var7; - int var11 = var4 + var7; - int var12 = var5 + var7; - int var13 = var6 + var7; - ChunkCache var14 = new ChunkCache(this, var8, var9, var10, var11, var12, var13); - return (new Pathfinder(var14)).createEntityPathTo(var1, var2, var3); - } - - public PathEntity getEntityPathToXYZ(Entity var1, int var2, int var3, int var4, float var5) { - int var6 = MathHelper.floor_double(var1.posX); - int var7 = MathHelper.floor_double(var1.posY); - int var8 = MathHelper.floor_double(var1.posZ); - int var9 = (int)(var5 + 32.0F); - int var10 = var6 - var9; - int var11 = var7 - var9; - int var12 = var8 - var9; - int var13 = var6 + var9; - int var14 = var7 + var9; - int var15 = var8 + var9; - ChunkCache var16 = new ChunkCache(this, var10, var11, var12, var13, var14, var15); - return (new Pathfinder(var16)).createEntityPathTo(var1, var2, var3, var4, var5); - } - - static { - float var0 = 0.05F; - - for(int var1 = 0; var1 <= 15; ++var1) { - float var2 = 1.0F - (float)var1 / 15.0F; - lightBrightnessTable[var1] = (1.0F - var2) / (var2 * 3.0F + 1.0F) * (1.0F - var0) + var0; - } - - } -} diff --git a/src/net/minecraft/src/WorldGenDungeons.java b/src/net/minecraft/src/WorldGenDungeons.java deleted file mode 100644 index 64d59f0..0000000 --- a/src/net/minecraft/src/WorldGenDungeons.java +++ /dev/null @@ -1,116 +0,0 @@ -package net.minecraft.src; - -import java.util.Random; - -public class WorldGenDungeons extends WorldGenerator { - public boolean generate(World var1, Random var2, int var3, int var4, int var5) { - byte var6 = 3; - int var7 = var2.nextInt(2) + 2; - int var8 = var2.nextInt(2) + 2; - int var9 = 0; - - int var10; - int var11; - int var12; - for(var10 = var3 - var7 - 1; var10 <= var3 + var7 + 1; ++var10) { - for(var11 = var4 - 1; var11 <= var4 + var6 + 1; ++var11) { - for(var12 = var5 - var8 - 1; var12 <= var5 + var8 + 1; ++var12) { - Material var13 = var1.getBlockMaterial(var10, var11, var12); - if(var11 == var4 - 1 && !var13.isSolid()) { - return false; - } - - if(var11 == var4 + var6 + 1 && !var13.isSolid()) { - return false; - } - - if((var10 == var3 - var7 - 1 || var10 == var3 + var7 + 1 || var12 == var5 - var8 - 1 || var12 == var5 + var8 + 1) && var11 == var4 && var1.getBlockId(var10, var11, var12) == 0 && var1.getBlockId(var10, var11 + 1, var12) == 0) { - ++var9; - } - } - } - } - - if(var9 >= 1 && var9 <= 5) { - for(var10 = var3 - var7 - 1; var10 <= var3 + var7 + 1; ++var10) { - for(var11 = var4 + var6; var11 >= var4 - 1; --var11) { - for(var12 = var5 - var8 - 1; var12 <= var5 + var8 + 1; ++var12) { - if(var10 != var3 - var7 - 1 && var11 != var4 - 1 && var12 != var5 - var8 - 1 && var10 != var3 + var7 + 1 && var11 != var4 + var6 + 1 && var12 != var5 + var8 + 1) { - var1.setBlockWithNotify(var10, var11, var12, 0); - } else if(var11 >= 0 && !var1.getBlockMaterial(var10, var11 - 1, var12).isSolid()) { - var1.setBlockWithNotify(var10, var11, var12, 0); - } else if(var1.getBlockMaterial(var10, var11, var12).isSolid()) { - if(var11 == var4 - 1 && var2.nextInt(4) != 0) { - var1.setBlockWithNotify(var10, var11, var12, Block.cobblestoneMossy.blockID); - } else { - var1.setBlockWithNotify(var10, var11, var12, Block.cobblestone.blockID); - } - } - } - } - } - - label110: - for(var10 = 0; var10 < 2; ++var10) { - for(var11 = 0; var11 < 3; ++var11) { - var12 = var3 + var2.nextInt(var7 * 2 + 1) - var7; - int var14 = var5 + var2.nextInt(var8 * 2 + 1) - var8; - if(var1.getBlockId(var12, var4, var14) == 0) { - int var15 = 0; - if(var1.getBlockMaterial(var12 - 1, var4, var14).isSolid()) { - ++var15; - } - - if(var1.getBlockMaterial(var12 + 1, var4, var14).isSolid()) { - ++var15; - } - - if(var1.getBlockMaterial(var12, var4, var14 - 1).isSolid()) { - ++var15; - } - - if(var1.getBlockMaterial(var12, var4, var14 + 1).isSolid()) { - ++var15; - } - - if(var15 == 1) { - var1.setBlockWithNotify(var12, var4, var14, Block.chest.blockID); - TileEntityChest var16 = (TileEntityChest)var1.getBlockTileEntity(var12, var4, var14); - int var17 = 0; - - while(true) { - if(var17 >= 8) { - continue label110; - } - - ItemStack var18 = this.pickCheckLootItem(var2); - if(var18 != null) { - var16.setInventorySlotContents(var2.nextInt(var16.getSizeInventory()), var18); - } - - ++var17; - } - } - } - } - } - - var1.setBlockWithNotify(var3, var4, var5, Block.mobSpawner.blockID); - TileEntityMobSpawner var19 = (TileEntityMobSpawner)var1.getBlockTileEntity(var3, var4, var5); - var19.mobID = this.pickMobSpawner(var2); - return true; - } else { - return false; - } - } - - private ItemStack pickCheckLootItem(Random var1) { - int var2 = var1.nextInt(10); - return var2 == 0 ? new ItemStack(Item.saddle) : (var2 == 1 ? new ItemStack(Item.ingotIron, var1.nextInt(4) + 1) : (var2 == 2 ? new ItemStack(Item.bread) : (var2 == 3 ? new ItemStack(Item.wheat, var1.nextInt(4) + 1) : (var2 == 4 ? new ItemStack(Item.gunpowder, var1.nextInt(4) + 1) : (var2 == 5 ? new ItemStack(Item.silk, var1.nextInt(4) + 1) : (var2 == 6 ? new ItemStack(Item.bucketEmpty) : (var2 == 7 && var1.nextInt(100) == 0 ? new ItemStack(Item.appleGold) : null))))))); - } - - private String pickMobSpawner(Random var1) { - int var2 = var1.nextInt(4); - return var2 == 0 ? "Skeleton" : (var2 == 1 ? "Zombie" : (var2 == 2 ? "Zombie" : (var2 == 3 ? "Spider" : ""))); - } -} diff --git a/src/net/minecraft/src/WorldGenFlowers.java b/src/net/minecraft/src/WorldGenFlowers.java deleted file mode 100644 index f01a0f1..0000000 --- a/src/net/minecraft/src/WorldGenFlowers.java +++ /dev/null @@ -1,24 +0,0 @@ -package net.minecraft.src; - -import java.util.Random; - -public class WorldGenFlowers extends WorldGenerator { - private int plantBlockId; - - public WorldGenFlowers(int var1) { - this.plantBlockId = var1; - } - - public boolean generate(World var1, Random var2, int var3, int var4, int var5) { - for(int var6 = 0; var6 < 64; ++var6) { - int var7 = var3 + var2.nextInt(8) - var2.nextInt(8); - int var8 = var4 + var2.nextInt(4) - var2.nextInt(4); - int var9 = var5 + var2.nextInt(8) - var2.nextInt(8); - if(var1.getBlockId(var7, var8, var9) == 0 && ((BlockFlower)Block.blocksList[this.plantBlockId]).canBlockStay(var1, var7, var8, var9)) { - var1.setBlock(var7, var8, var9, this.plantBlockId); - } - } - - return true; - } -} diff --git a/src/net/minecraft/src/WorldGenLiquids.java b/src/net/minecraft/src/WorldGenLiquids.java deleted file mode 100644 index 7fbf0cb..0000000 --- a/src/net/minecraft/src/WorldGenLiquids.java +++ /dev/null @@ -1,61 +0,0 @@ -package net.minecraft.src; - -import java.util.Random; - -public class WorldGenLiquids extends WorldGenerator { - private int liquidBlockId; - - public WorldGenLiquids(int var1) { - this.liquidBlockId = var1; - } - - public boolean generate(World var1, Random var2, int var3, int var4, int var5) { - if(var1.getBlockId(var3, var4 + 1, var5) != Block.stone.blockID) { - return false; - } else if(var1.getBlockId(var3, var4 - 1, var5) != Block.stone.blockID) { - return false; - } else if(var1.getBlockId(var3, var4, var5) != 0 && var1.getBlockId(var3, var4, var5) != Block.stone.blockID) { - return false; - } else { - int var6 = 0; - if(var1.getBlockId(var3 - 1, var4, var5) == Block.stone.blockID) { - ++var6; - } - - if(var1.getBlockId(var3 + 1, var4, var5) == Block.stone.blockID) { - ++var6; - } - - if(var1.getBlockId(var3, var4, var5 - 1) == Block.stone.blockID) { - ++var6; - } - - if(var1.getBlockId(var3, var4, var5 + 1) == Block.stone.blockID) { - ++var6; - } - - int var7 = 0; - if(var1.getBlockId(var3 - 1, var4, var5) == 0) { - ++var7; - } - - if(var1.getBlockId(var3 + 1, var4, var5) == 0) { - ++var7; - } - - if(var1.getBlockId(var3, var4, var5 - 1) == 0) { - ++var7; - } - - if(var1.getBlockId(var3, var4, var5 + 1) == 0) { - ++var7; - } - - if(var6 == 3 && var7 == 1) { - var1.setBlockWithNotify(var3, var4, var5, this.liquidBlockId); - } - - return true; - } - } -} diff --git a/src/net/minecraft/src/WorldGenMinable.java b/src/net/minecraft/src/WorldGenMinable.java deleted file mode 100644 index 652dd5a..0000000 --- a/src/net/minecraft/src/WorldGenMinable.java +++ /dev/null @@ -1,47 +0,0 @@ -package net.minecraft.src; - -import java.util.Random; - -public class WorldGenMinable extends WorldGenerator { - private int minableBlockId; - private int numberOfBlocks; - - public WorldGenMinable(int var1, int var2) { - this.minableBlockId = var1; - this.numberOfBlocks = var2; - } - - public boolean generate(World var1, Random var2, int var3, int var4, int var5) { - float var6 = var2.nextFloat() * (float)Math.PI; - double var7 = (double)((float)(var3 + 8) + MathHelper.sin(var6) * (float)this.numberOfBlocks / 8.0F); - double var9 = (double)((float)(var3 + 8) - MathHelper.sin(var6) * (float)this.numberOfBlocks / 8.0F); - double var11 = (double)((float)(var5 + 8) + MathHelper.cos(var6) * (float)this.numberOfBlocks / 8.0F); - double var13 = (double)((float)(var5 + 8) - MathHelper.cos(var6) * (float)this.numberOfBlocks / 8.0F); - double var15 = (double)(var4 + var2.nextInt(3) + 2); - double var17 = (double)(var4 + var2.nextInt(3) + 2); - - for(int var19 = 0; var19 <= this.numberOfBlocks; ++var19) { - double var20 = var7 + (var9 - var7) * (double)var19 / (double)this.numberOfBlocks; - double var22 = var15 + (var17 - var15) * (double)var19 / (double)this.numberOfBlocks; - double var24 = var11 + (var13 - var11) * (double)var19 / (double)this.numberOfBlocks; - double var26 = var2.nextDouble() * (double)this.numberOfBlocks / 16.0D; - double var28 = (double)(MathHelper.sin((float)var19 * (float)Math.PI / (float)this.numberOfBlocks) + 1.0F) * var26 + 1.0D; - double var30 = (double)(MathHelper.sin((float)var19 * (float)Math.PI / (float)this.numberOfBlocks) + 1.0F) * var26 + 1.0D; - - for(int var32 = (int)(var20 - var28 / 2.0D); var32 <= (int)(var20 + var28 / 2.0D); ++var32) { - for(int var33 = (int)(var22 - var30 / 2.0D); var33 <= (int)(var22 + var30 / 2.0D); ++var33) { - for(int var34 = (int)(var24 - var28 / 2.0D); var34 <= (int)(var24 + var28 / 2.0D); ++var34) { - double var35 = ((double)var32 + 0.5D - var20) / (var28 / 2.0D); - double var37 = ((double)var33 + 0.5D - var22) / (var30 / 2.0D); - double var39 = ((double)var34 + 0.5D - var24) / (var28 / 2.0D); - if(var35 * var35 + var37 * var37 + var39 * var39 < 1.0D && var1.getBlockId(var32, var33, var34) == Block.stone.blockID) { - var1.setBlock(var32, var33, var34, this.minableBlockId); - } - } - } - } - } - - return true; - } -} diff --git a/src/net/minecraft/src/WorldGenTrees.java b/src/net/minecraft/src/WorldGenTrees.java deleted file mode 100644 index 631e379..0000000 --- a/src/net/minecraft/src/WorldGenTrees.java +++ /dev/null @@ -1,78 +0,0 @@ -package net.minecraft.src; - -import java.util.Random; - -public class WorldGenTrees extends WorldGenerator { - public boolean generate(World var1, Random var2, int var3, int var4, int var5) { - int var6 = var2.nextInt(3) + 4; - boolean var7 = true; - if(var4 >= 1 && var4 + var6 + 1 <= 128) { - int var8; - int var10; - int var11; - int var12; - for(var8 = var4; var8 <= var4 + 1 + var6; ++var8) { - byte var9 = 1; - if(var8 == var4) { - var9 = 0; - } - - if(var8 >= var4 + 1 + var6 - 2) { - var9 = 2; - } - - for(var10 = var3 - var9; var10 <= var3 + var9 && var7; ++var10) { - for(var11 = var5 - var9; var11 <= var5 + var9 && var7; ++var11) { - if(var8 >= 0 && var8 < 128) { - var12 = var1.getBlockId(var10, var8, var11); - if(var12 != 0 && var12 != Block.leaves.blockID) { - var7 = false; - } - } else { - var7 = false; - } - } - } - } - - if(!var7) { - return false; - } else { - var8 = var1.getBlockId(var3, var4 - 1, var5); - if((var8 == Block.grass.blockID || var8 == Block.dirt.blockID) && var4 < 128 - var6 - 1) { - var1.setBlock(var3, var4 - 1, var5, Block.dirt.blockID); - - int var16; - for(var16 = var4 - 3 + var6; var16 <= var4 + var6; ++var16) { - var10 = var16 - (var4 + var6); - var11 = 1 - var10 / 2; - - for(var12 = var3 - var11; var12 <= var3 + var11; ++var12) { - int var13 = var12 - var3; - - for(int var14 = var5 - var11; var14 <= var5 + var11; ++var14) { - int var15 = var14 - var5; - if((Math.abs(var13) != var11 || Math.abs(var15) != var11 || var2.nextInt(2) != 0 && var10 != 0) && !Block.opaqueCubeLookup[var1.getBlockId(var12, var16, var14)]) { - var1.setBlock(var12, var16, var14, Block.leaves.blockID); - } - } - } - } - - for(var16 = 0; var16 < var6; ++var16) { - var10 = var1.getBlockId(var3, var4 + var16, var5); - if(var10 == 0 || var10 == Block.leaves.blockID) { - var1.setBlock(var3, var4 + var16, var5, Block.wood.blockID); - } - } - - return true; - } else { - return false; - } - } - } else { - return false; - } - } -} diff --git a/src/net/minecraft/src/WorldGenerator.java b/src/net/minecraft/src/WorldGenerator.java deleted file mode 100644 index 61bcf66..0000000 --- a/src/net/minecraft/src/WorldGenerator.java +++ /dev/null @@ -1,10 +0,0 @@ -package net.minecraft.src; - -import java.util.Random; - -public abstract class WorldGenerator { - public abstract boolean generate(World var1, Random var2, int var3, int var4, int var5); - - public void setScale(double var1, double var3, double var5) { - } -} diff --git a/src/net/minecraft/src/WorldIso.java b/src/net/minecraft/src/WorldIso.java deleted file mode 100644 index 703718d..0000000 --- a/src/net/minecraft/src/WorldIso.java +++ /dev/null @@ -1,16 +0,0 @@ -package net.minecraft.src; - -import java.io.File; - -class WorldIso extends World { - final CanvasIsomPreview isomPreview; - - WorldIso(CanvasIsomPreview var1, File var2, String var3) { - super(var2, var3); - this.isomPreview = var1; - } - - protected IChunkProvider getChunkProvider(File var1) { - return new ChunkProviderIso(this, new ChunkLoader(var1, false)); - } -} diff --git a/src/net/minecraft/src/WorldRenderer.java b/src/net/minecraft/src/WorldRenderer.java deleted file mode 100644 index d9ae1a0..0000000 --- a/src/net/minecraft/src/WorldRenderer.java +++ /dev/null @@ -1,214 +0,0 @@ -package net.minecraft.src; - -import java.util.ArrayList; -import java.util.HashSet; -import java.util.List; -import org.lwjgl.opengl.GL11; - -public class WorldRenderer { - public World worldObj; - private int glRenderList = -1; - private static Tessellator tessellator = Tessellator.instance; - public static int chunksUpdated = 0; - public int posX; - public int posY; - public int posZ; - public int sizeWidth; - public int sizeHeight; - public int sizeDepth; - public int posXMinus; - public int posYMinus; - public int posZMinus; - public int posXClip; - public int posYClip; - public int posZClip; - public boolean isInFrustum = false; - public boolean[] skipRenderPass = new boolean[2]; - public int posXPlus; - public int posYPlus; - public int posZPlus; - public float rendererRadius; - public boolean needsUpdate; - public AxisAlignedBB rendererBoundingBox; - public int chunkIndex; - public boolean isVisible = true; - public boolean isWaitingOnOcclusionQuery; - public int glOcclusionQuery; - public boolean isChunkLit; - private boolean isInitialized = false; - public List tileEntityRenderers = new ArrayList(); - private List tileEntities; - - public WorldRenderer(World var1, List var2, int var3, int var4, int var5, int var6, int var7) { - this.worldObj = var1; - this.tileEntities = var2; - this.sizeWidth = this.sizeHeight = this.sizeDepth = var6; - this.rendererRadius = MathHelper.sqrt_float((float)(this.sizeWidth * this.sizeWidth + this.sizeHeight * this.sizeHeight + this.sizeDepth * this.sizeDepth)) / 2.0F; - this.glRenderList = var7; - this.posX = -999; - this.setPosition(var3, var4, var5); - this.needsUpdate = false; - } - - public void setPosition(int var1, int var2, int var3) { - if(var1 != this.posX || var2 != this.posY || var3 != this.posZ) { - this.setDontDraw(); - this.posX = var1; - this.posY = var2; - this.posZ = var3; - this.posXPlus = var1 + this.sizeWidth / 2; - this.posYPlus = var2 + this.sizeHeight / 2; - this.posZPlus = var3 + this.sizeDepth / 2; - this.posXClip = var1 & 1023; - this.posYClip = var2; - this.posZClip = var3 & 1023; - this.posXMinus = var1 - this.posXClip; - this.posYMinus = var2 - this.posYClip; - this.posZMinus = var3 - this.posZClip; - float var4 = 2.0F; - this.rendererBoundingBox = AxisAlignedBB.getBoundingBox((double)((float)var1 - var4), (double)((float)var2 - var4), (double)((float)var3 - var4), (double)((float)(var1 + this.sizeWidth) + var4), (double)((float)(var2 + this.sizeHeight) + var4), (double)((float)(var3 + this.sizeDepth) + var4)); - GL11.glNewList(this.glRenderList + 2, GL11.GL_COMPILE); - RenderItem.renderAABB(AxisAlignedBB.getBoundingBoxFromPool((double)((float)this.posXClip - var4), (double)((float)this.posYClip - var4), (double)((float)this.posZClip - var4), (double)((float)(this.posXClip + this.sizeWidth) + var4), (double)((float)(this.posYClip + this.sizeHeight) + var4), (double)((float)(this.posZClip + this.sizeDepth) + var4))); - GL11.glEndList(); - this.markDirty(); - } - } - - private void setupGLTranslation() { - GL11.glTranslatef((float)this.posXClip, (float)this.posYClip, (float)this.posZClip); - } - - public void updateRenderer() { - if(this.needsUpdate) { - ++chunksUpdated; - int var1 = this.posX; - int var2 = this.posY; - int var3 = this.posZ; - int var4 = this.posX + this.sizeWidth; - int var5 = this.posY + this.sizeHeight; - int var6 = this.posZ + this.sizeDepth; - - for(int var7 = 0; var7 < 2; ++var7) { - this.skipRenderPass[var7] = true; - } - - Chunk.isLit = false; - HashSet var21 = new HashSet(); - var21.addAll(this.tileEntityRenderers); - this.tileEntityRenderers.clear(); - byte var8 = 1; - ChunkCache var9 = new ChunkCache(this.worldObj, var1 - var8, var2 - var8, var3 - var8, var4 + var8, var5 + var8, var6 + var8); - RenderBlocks var10 = new RenderBlocks(var9); - - for(int var11 = 0; var11 < 2; ++var11) { - boolean var12 = false; - boolean var13 = false; - boolean var14 = false; - - for(int var15 = var2; var15 < var5; ++var15) { - for(int var16 = var3; var16 < var6; ++var16) { - for(int var17 = var1; var17 < var4; ++var17) { - int var18 = var9.getBlockId(var17, var15, var16); - if(var18 > 0) { - if(!var14) { - var14 = true; - GL11.glNewList(this.glRenderList + var11, GL11.GL_COMPILE); - GL11.glPushMatrix(); - this.setupGLTranslation(); - float var19 = 1.000001F; - GL11.glTranslatef((float)(-this.sizeDepth) / 2.0F, (float)(-this.sizeHeight) / 2.0F, (float)(-this.sizeDepth) / 2.0F); - GL11.glScalef(var19, var19, var19); - GL11.glTranslatef((float)this.sizeDepth / 2.0F, (float)this.sizeHeight / 2.0F, (float)this.sizeDepth / 2.0F); - tessellator.startDrawingQuads(); - tessellator.setTranslationD((double)(-this.posX), (double)(-this.posY), (double)(-this.posZ)); - } - - if(var11 == 0 && Block.blocksList[var18] instanceof BlockContainer) { - TileEntity var23 = var9.getBlockTileEntity(var17, var15, var16); - if(TileEntityRenderer.instance.hasSpecialRenderer(var23)) { - this.tileEntityRenderers.add(var23); - } - } - - Block var24 = Block.blocksList[var18]; - int var20 = var24.getRenderBlockPass(); - if(var20 != var11) { - var12 = true; - } else if(var20 == var11) { - var13 |= var10.renderBlockByRenderType(var24, var17, var15, var16); - } - } - } - } - } - - if(var14) { - tessellator.draw(); - GL11.glPopMatrix(); - GL11.glEndList(); - tessellator.setTranslationD(0.0D, 0.0D, 0.0D); - } else { - var13 = false; - } - - if(var13) { - this.skipRenderPass[var11] = false; - } - - if(!var12) { - break; - } - } - - HashSet var22 = new HashSet(); - var22.addAll(this.tileEntityRenderers); - var22.removeAll(var21); - this.tileEntities.addAll(var22); - var21.removeAll(this.tileEntityRenderers); - this.tileEntities.removeAll(var21); - this.isChunkLit = Chunk.isLit; - this.isInitialized = true; - } - } - - public float distanceToEntitySquared(Entity var1) { - float var2 = (float)(var1.posX - (double)this.posXPlus); - float var3 = (float)(var1.posY - (double)this.posYPlus); - float var4 = (float)(var1.posZ - (double)this.posZPlus); - return var2 * var2 + var3 * var3 + var4 * var4; - } - - public void setDontDraw() { - for(int var1 = 0; var1 < 2; ++var1) { - this.skipRenderPass[var1] = true; - } - - this.isInFrustum = false; - this.isInitialized = false; - } - - public void stopRendering() { - this.setDontDraw(); - this.worldObj = null; - } - - public int getGLCallListForPass(int var1) { - return !this.isInFrustum ? -1 : (!this.skipRenderPass[var1] ? this.glRenderList + var1 : -1); - } - - public void updateInFrustrum(ICamera var1) { - this.isInFrustum = var1.isBoundingBoxInFrustum(this.rendererBoundingBox); - } - - public void callOcclusionQueryList() { - GL11.glCallList(this.glRenderList + 2); - } - - public boolean skipAllRenderPasses() { - return !this.isInitialized ? false : this.skipRenderPass[0] && this.skipRenderPass[1]; - } - - public void markDirty() { - this.needsUpdate = true; - } -}

    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

    *{r`sgF%RnZ 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 rz^C~IFq1jS=&=eu8gQF8q_5nt;4>N \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn () { + echo "$*" +} + +die () { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; + NONSTOP* ) + nonstop=true + ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin or MSYS, switch paths to Windows format before running java +if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=`expr $i + 1` + done + case $i in + 0) set -- ;; + 1) set -- "$args0" ;; + 2) set -- "$args0" "$args1" ;; + 3) set -- "$args0" "$args1" "$args2" ;; + 4) set -- "$args0" "$args1" "$args2" "$args3" ;; + 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Escape application args +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " +} +APP_ARGS=`save "$@"` + +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat new file mode 100755 index 0000000..24467a1 --- /dev/null +++ b/gradlew.bat @@ -0,0 +1,100 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windows variants + +if not "%OS%" == "Windows_NT" goto win9xME_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/jars/deobfuscated-source.jar b/jars/deobfuscated-source.jar deleted file mode 100644 index 226094dbb3cdbca6f08024f7923f230d85a1e363..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 367966 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χ0ZYLx^dX~yMyt-2Y_{( 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ðRL!%h|&D$537+#I2sHWf*h4XJ}9h7 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