From b302c97c42ec0f17f6d0f895367cca4a9da67898 Mon Sep 17 00:00:00 2001 From: eaglercraft Date: Sat, 21 Sep 2024 22:29:10 -0700 Subject: [PATCH] u37 --- .gitignore | 3 +- CODE_STANDARDS.md | 306 +++ EAGLERCRAFTX_README.md | 246 ++ build.gradle | 57 +- desktopRuntime/RTWebViewClient.html | 514 ++++ desktopRuntime/eclipseProject/.classpath | 3 + desktopRuntime/eclipseProject/.project | 25 +- .../{libGLESv2.so => libGLESv2.so.2} | Bin .../resources/SignedClientTemplate.txt | 229 +- .../resources/assets/eagler/CREDITS.txt | 56 +- .../assets/eagler/audioctx_test_ogg.dat | Bin 0 -> 3980 bytes .../assets/eagler/audioctx_test_wav16.dat | Bin 0 -> 2106 bytes .../assets/eagler/audioctx_test_wav32f.dat | Bin 0 -> 4144 bytes .../eagler/boot_menu/boot_menu_markup.html | 88 + .../eagler/boot_menu/boot_menu_style.css | 328 +++ .../conf_template_eaglercraftX_1_8.json | 4 + ...conf_template_eaglercraftX_1_8_signed.json | 4 + .../conf_template_eaglercraft_1_5.json | 4 + .../conf_template_eaglercraft_1_5_legacy.json | 5 + .../conf_template_eaglercraft_b1_3.json | 5 + .../conf_template_peytonplayz585_a1_2_6.json | 4 + .../conf_template_peytonplayz585_b1_7_3.json | 4 + .../conf_template_peytonplayz585_indev.json | 4 + .../conf_template_standard_offline.json | 8 + .../eagler/boot_menu/meta_opts_templates.json | 192 ++ .../offline_template_eaglercraftX_1_8.html | 86 + ...template_eaglercraftX_1_8_fat_offline.html | 85 + ..._template_eaglercraftX_1_8_fat_signed.html | 268 ++ ...line_template_eaglercraftX_1_8_signed.html | 267 ++ .../offline_template_eaglercraft_1_5.html | 78 + ...fline_template_eaglercraft_1_5_legacy.html | 59 + .../offline_template_eaglercraft_b1_3.html | 59 + .../offline_template_peytonplayz585_a_b.html | 40 + ...offline_template_peytonplayz585_indev.html | 38 + .../offline_template_standard_offline.html | 77 + .../opts_template_eaglercraftX_1_8.txt | 66 + .../opts_template_eaglercraftX_1_8_demo.txt | 66 + ...template_eaglercraftX_1_8_html5Cursors.txt | 66 + .../opts_template_eaglercraft_1_5.txt | 52 + .../opts_template_eaglercraft_1_5_legacy.txt | 32 + ...ts_template_eaglercraft_1_5_livestream.txt | 63 + .../opts_template_peytonplayz585_a1_2_6.txt | 6 + .../opts_template_peytonplayz585_b1_7_3.txt | 6 + .../boot_menu/web_cl_eagleiii_8x16.woff | Bin 0 -> 9876 bytes .../assets/eagler/glsl/accel_font.fsh | 16 +- .../assets/eagler/glsl/accel_font.vsh | 23 +- .../assets/eagler/glsl/accel_particle.fsh | 16 +- .../assets/eagler/glsl/accel_particle.vsh | 29 +- .../resources/assets/eagler/glsl/core.fsh | 70 +- .../resources/assets/eagler/glsl/core.vsh | 28 +- .../eagler/glsl/deferred/forward_core.fsh | 16 +- .../glsl/deferred/reproject_control.fsh | 4 +- .../glsl/deferred/shader_pack_info.json | 2 +- .../eagler/glsl/deferred/ssao_generate.fsh | 2 +- .../glsl/dynamiclights/core_dynamiclights.fsh | 29 +- .../assets/eagler/glsl/gles2_compat.glsl | 98 + .../assets/eagler/glsl/hw_fingerprint.fsh | 55 + .../resources/assets/eagler/glsl/local.vsh | 14 +- .../assets/eagler/glsl/post_fxaa.fsh | 34 +- .../assets/eagler/glsl/texture_blit.fsh | 14 +- .../assets/eagler/glsl/texture_blit.vsh | 14 +- .../assets/eagler/glsl/texture_mix.fsh | 14 +- .../assets/eagler/gui/eagler_gui.png | Bin 8564 -> 11256 bytes .../assets/eagler/gui/notif_bk_large.png | Bin 0 -> 5089 bytes .../resources/assets/eagler/gui/touch_gui.png | Bin 0 -> 13590 bytes .../assets/minecraft/lang/en_US.lang | 178 +- desktopRuntime/resources/plugin_download.zip | Bin 256139 -> 540037 bytes desktopRuntime/resources/plugin_version.json | 2 +- .../resources/profanity_filter.wlist | 740 ++++++ desktopRuntime/resources/relay_download.zip | Bin 267938 -> 234512 bytes javascript/ES6ShimScript.txt | 31 + javascript/OfflineDownloadTemplate.txt | 29 +- javascript/SignedBundleTemplate.txt | 10 +- javascript/SignedClientTemplate.txt | 230 +- javascript/UpdateDownloadSources.txt | 19 + javascript/index.html | 27 +- .../java/net/minecraft/block/Block.java | 0 .../java/net/minecraft/block/BlockAir.java | 0 .../java/net/minecraft/block/BlockAnvil.java | 0 .../java/net/minecraft/block/BlockBanner.java | 0 .../net/minecraft/block/BlockBarrier.java | 0 .../block/BlockBasePressurePlate.java | 0 .../java/net/minecraft/block/BlockBeacon.java | 0 .../java/net/minecraft/block/BlockBed.java | 0 .../net/minecraft/block/BlockBookshelf.java | 0 .../net/minecraft/block/BlockBreakable.java | 0 .../minecraft/block/BlockBrewingStand.java | 0 .../java/net/minecraft/block/BlockBush.java | 0 .../java/net/minecraft/block/BlockButton.java | 0 .../net/minecraft/block/BlockButtonStone.java | 0 .../net/minecraft/block/BlockButtonWood.java | 0 .../java/net/minecraft/block/BlockCactus.java | 0 .../java/net/minecraft/block/BlockCake.java | 0 .../java/net/minecraft/block/BlockCarpet.java | 0 .../java/net/minecraft/block/BlockCarrot.java | 0 .../net/minecraft/block/BlockCauldron.java | 0 .../java/net/minecraft/block/BlockChest.java | 0 .../java/net/minecraft/block/BlockClay.java | 0 .../java/net/minecraft/block/BlockCocoa.java | 0 .../net/minecraft/block/BlockColored.java | 0 .../minecraft/block/BlockCommandBlock.java | 0 .../block/BlockCompressedPowered.java | 0 .../net/minecraft/block/BlockContainer.java | 0 .../java/net/minecraft/block/BlockCrops.java | 0 .../block/BlockDaylightDetector.java | 0 .../net/minecraft/block/BlockDeadBush.java | 0 .../net/minecraft/block/BlockDirectional.java | 0 .../java/net/minecraft/block/BlockDirt.java | 0 .../net/minecraft/block/BlockDispenser.java | 0 .../java/net/minecraft/block/BlockDoor.java | 0 .../net/minecraft/block/BlockDoublePlant.java | 0 .../minecraft/block/BlockDoubleStoneSlab.java | 0 .../block/BlockDoubleStoneSlabNew.java | 0 .../minecraft/block/BlockDoubleWoodSlab.java | 0 .../net/minecraft/block/BlockDragonEgg.java | 0 .../net/minecraft/block/BlockDropper.java | 0 .../minecraft/block/BlockDynamicLiquid.java | 0 .../block/BlockEnchantmentTable.java | 0 .../net/minecraft/block/BlockEndPortal.java | 0 .../minecraft/block/BlockEndPortalFrame.java | 0 .../net/minecraft/block/BlockEnderChest.java | 0 .../net/minecraft/block/BlockEventData.java | 0 .../net/minecraft/block/BlockFalling.java | 0 .../net/minecraft/block/BlockFarmland.java | 0 .../java/net/minecraft/block/BlockFence.java | 0 .../net/minecraft/block/BlockFenceGate.java | 0 .../java/net/minecraft/block/BlockFire.java | 0 .../java/net/minecraft/block/BlockFlower.java | 0 .../net/minecraft/block/BlockFlowerPot.java | 0 .../net/minecraft/block/BlockFurnace.java | 0 .../java/net/minecraft/block/BlockGlass.java | 0 .../net/minecraft/block/BlockGlowstone.java | 0 .../java/net/minecraft/block/BlockGrass.java | 0 .../java/net/minecraft/block/BlockGravel.java | 0 .../minecraft/block/BlockHalfStoneSlab.java | 0 .../block/BlockHalfStoneSlabNew.java | 0 .../minecraft/block/BlockHalfWoodSlab.java | 0 .../minecraft/block/BlockHardenedClay.java | 0 .../java/net/minecraft/block/BlockHay.java | 0 .../java/net/minecraft/block/BlockHopper.java | 0 .../minecraft/block/BlockHugeMushroom.java | 0 .../java/net/minecraft/block/BlockIce.java | 0 .../net/minecraft/block/BlockJukebox.java | 0 .../java/net/minecraft/block/BlockLadder.java | 0 .../java/net/minecraft/block/BlockLeaves.java | 0 .../net/minecraft/block/BlockLeavesBase.java | 0 .../java/net/minecraft/block/BlockLever.java | 0 .../net/minecraft/block/BlockLilyPad.java | 0 .../java/net/minecraft/block/BlockLiquid.java | 0 .../java/net/minecraft/block/BlockLog.java | 0 .../java/net/minecraft/block/BlockMelon.java | 0 .../net/minecraft/block/BlockMobSpawner.java | 0 .../net/minecraft/block/BlockMushroom.java | 0 .../net/minecraft/block/BlockMycelium.java | 0 .../net/minecraft/block/BlockNetherBrick.java | 0 .../net/minecraft/block/BlockNetherWart.java | 0 .../net/minecraft/block/BlockNetherrack.java | 0 .../net/minecraft/block/BlockNewLeaf.java | 0 .../java/net/minecraft/block/BlockNewLog.java | 0 .../java/net/minecraft/block/BlockNote.java | 0 .../net/minecraft/block/BlockObsidian.java | 0 .../net/minecraft/block/BlockOldLeaf.java | 0 .../java/net/minecraft/block/BlockOldLog.java | 0 .../java/net/minecraft/block/BlockOre.java | 0 .../net/minecraft/block/BlockPackedIce.java | 0 .../java/net/minecraft/block/BlockPane.java | 0 .../net/minecraft/block/BlockPistonBase.java | 0 .../minecraft/block/BlockPistonExtension.java | 0 .../minecraft/block/BlockPistonMoving.java | 0 .../java/net/minecraft/block/BlockPlanks.java | 0 .../java/net/minecraft/block/BlockPortal.java | 0 .../java/net/minecraft/block/BlockPotato.java | 0 .../minecraft/block/BlockPressurePlate.java | 0 .../block/BlockPressurePlateWeighted.java | 0 .../net/minecraft/block/BlockPrismarine.java | 0 .../net/minecraft/block/BlockPumpkin.java | 0 .../java/net/minecraft/block/BlockQuartz.java | 0 .../java/net/minecraft/block/BlockRail.java | 0 .../net/minecraft/block/BlockRailBase.java | 0 .../minecraft/block/BlockRailDetector.java | 0 .../net/minecraft/block/BlockRailPowered.java | 0 .../net/minecraft/block/BlockRedFlower.java | 0 .../minecraft/block/BlockRedSandstone.java | 0 .../block/BlockRedstoneComparator.java | 0 .../minecraft/block/BlockRedstoneDiode.java | 0 .../minecraft/block/BlockRedstoneLight.java | 0 .../net/minecraft/block/BlockRedstoneOre.java | 0 .../block/BlockRedstoneRepeater.java | 0 .../minecraft/block/BlockRedstoneTorch.java | 0 .../minecraft/block/BlockRedstoneWire.java | 0 .../java/net/minecraft/block/BlockReed.java | 0 .../minecraft/block/BlockRotatedPillar.java | 0 .../java/net/minecraft/block/BlockSand.java | 0 .../net/minecraft/block/BlockSandStone.java | 0 .../net/minecraft/block/BlockSapling.java | 0 .../net/minecraft/block/BlockSeaLantern.java | 0 .../java/net/minecraft/block/BlockSign.java | 0 .../net/minecraft/block/BlockSilverfish.java | 0 .../java/net/minecraft/block/BlockSkull.java | 0 .../java/net/minecraft/block/BlockSlab.java | 0 .../java/net/minecraft/block/BlockSlime.java | 0 .../java/net/minecraft/block/BlockSnow.java | 0 .../net/minecraft/block/BlockSnowBlock.java | 0 .../net/minecraft/block/BlockSoulSand.java | 0 .../net/minecraft/block/BlockSourceImpl.java | 0 .../java/net/minecraft/block/BlockSponge.java | 0 .../minecraft/block/BlockStainedGlass.java | 0 .../block/BlockStainedGlassPane.java | 0 .../java/net/minecraft/block/BlockStairs.java | 0 .../minecraft/block/BlockStandingSign.java | 0 .../minecraft/block/BlockStaticLiquid.java | 0 .../java/net/minecraft/block/BlockStem.java | 0 .../java/net/minecraft/block/BlockStone.java | 0 .../net/minecraft/block/BlockStoneBrick.java | 0 .../net/minecraft/block/BlockStoneSlab.java | 0 .../minecraft/block/BlockStoneSlabNew.java | 0 .../java/net/minecraft/block/BlockTNT.java | 0 .../net/minecraft/block/BlockTallGrass.java | 0 .../java/net/minecraft/block/BlockTorch.java | 0 .../net/minecraft/block/BlockTrapDoor.java | 0 .../net/minecraft/block/BlockTripWire.java | 0 .../minecraft/block/BlockTripWireHook.java | 0 .../java/net/minecraft/block/BlockVine.java | 0 .../java/net/minecraft/block/BlockWall.java | 0 .../net/minecraft/block/BlockWallSign.java | 0 .../java/net/minecraft/block/BlockWeb.java | 0 .../net/minecraft/block/BlockWoodSlab.java | 0 .../net/minecraft/block/BlockWorkbench.java | 0 .../minecraft/block/BlockYellowFlower.java | 0 .../java/net/minecraft/block/IGrowable.java | 0 .../minecraft/block/ITileEntityProvider.java | 0 .../minecraft/block/material/MapColor.java | 0 .../minecraft/block/material/Material.java | 0 .../block/material/MaterialLiquid.java | 0 .../block/material/MaterialLogic.java | 0 .../block/material/MaterialPortal.java | 0 .../block/material/MaterialTransparent.java | 0 .../minecraft/block/properties/IProperty.java | 0 .../block/properties/PropertyBool.java | 0 .../block/properties/PropertyDirection.java | 0 .../block/properties/PropertyEnum.java | 0 .../block/properties/PropertyHelper.java | 0 .../block/properties/PropertyInteger.java | 0 .../state/BlockPistonStructureHelper.java | 0 .../net/minecraft/block/state/BlockState.java | 0 .../minecraft/block/state/BlockStateBase.java | 0 .../block/state/BlockWorldState.java | 0 .../minecraft/block/state/IBlockState.java | 0 .../block/state/pattern/BlockHelper.java | 0 .../block/state/pattern/BlockPattern.java | 0 .../block/state/pattern/BlockStateHelper.java | 0 .../state/pattern/FactoryBlockPattern.java | 0 .../client/ClientBrandRetriever.java | 0 .../client/LoadingScreenRenderer.java | 17 +- .../java/net/minecraft/client/Minecraft.java | 700 ++--- .../minecraft/client/audio/GuardianSound.java | 0 .../net/minecraft/client/audio/ISound.java | 0 .../client/audio/ISoundEventAccessor.java | 0 .../client/audio/ITickableSound.java | 0 .../minecraft/client/audio/MovingSound.java | 0 .../client/audio/MovingSoundMinecart.java | 0 .../audio/MovingSoundMinecartRiding.java | 0 .../minecraft/client/audio/MusicTicker.java | 0 .../client/audio/PositionedSound.java | 0 .../client/audio/PositionedSoundRecord.java | 0 .../minecraft/client/audio/SoundCategory.java | 2 +- .../client/audio/SoundEventAccessor.java | 0 .../audio/SoundEventAccessorComposite.java | 0 .../minecraft/client/audio/SoundHandler.java | 6 - .../net/minecraft/client/audio/SoundList.java | 0 .../client/audio/SoundListSerializer.java | 0 .../client/audio/SoundPoolEntry.java | 0 .../minecraft/client/audio/SoundRegistry.java | 0 .../client/entity/AbstractClientPlayer.java | 33 +- .../client/entity/EntityOtherPlayerMP.java | 0 .../client/entity/EntityPlayerSP.java | 2 + .../net/minecraft/client/gui/ChatLine.java | 12 +- .../minecraft/client/gui/FontRenderer.java | 32 +- .../java/net/minecraft/client/gui/Gui.java | 0 .../net/minecraft/client/gui/GuiButton.java | 5 + .../client/gui/GuiButtonLanguage.java | 0 .../net/minecraft/client/gui/GuiChat.java | 57 +- .../minecraft/client/gui/GuiCommandBlock.java | 15 +- .../client/gui/GuiConfirmOpenLink.java | 0 .../net/minecraft/client/gui/GuiControls.java | 8 +- .../client/gui/GuiCreateFlatWorld.java | 5 + .../minecraft/client/gui/GuiCreateWorld.java | 13 + .../client/gui/GuiCustomizeSkin.java | 0 .../client/gui/GuiCustomizeWorldScreen.java | 17 + .../minecraft/client/gui/GuiDisconnected.java | 0 .../client/gui/GuiDownloadTerrain.java | 5 + .../minecraft/client/gui/GuiEnchantment.java | 2 +- .../minecraft/client/gui/GuiErrorScreen.java | 0 .../minecraft/client/gui/GuiFlatPresets.java | 17 + .../net/minecraft/client/gui/GuiGameOver.java | 0 .../net/minecraft/client/gui/GuiHopper.java | 0 .../net/minecraft/client/gui/GuiIngame.java | 343 ++- .../minecraft/client/gui/GuiIngameMenu.java | 131 +- .../client/gui/GuiKeyBindingList.java | 21 +- .../net/minecraft/client/gui/GuiLabel.java | 0 .../net/minecraft/client/gui/GuiLanguage.java | 7 +- .../minecraft/client/gui/GuiListButton.java | 0 .../minecraft/client/gui/GuiListExtended.java | 0 .../client/gui/GuiLockIconButton.java | 0 .../net/minecraft/client/gui/GuiMainMenu.java | 2 +- .../client/gui/GuiMemoryErrorScreen.java | 0 .../net/minecraft/client/gui/GuiMerchant.java | 0 .../minecraft/client/gui/GuiMultiplayer.java | 22 +- .../net/minecraft/client/gui/GuiNewChat.java | 2 +- .../minecraft/client/gui/GuiOptionButton.java | 0 .../minecraft/client/gui/GuiOptionSlider.java | 10 +- .../net/minecraft/client/gui/GuiOptions.java | 68 +- .../client/gui/GuiOptionsRowList.java | 65 +- .../minecraft/client/gui/GuiOverlayDebug.java | 42 +- .../client/gui/GuiPageButtonList.java | 43 +- .../client/gui/GuiPlayerTabOverlay.java | 5 +- .../minecraft/client/gui/GuiRenameWorld.java | 12 + .../net/minecraft/client/gui/GuiRepair.java | 12 + .../client/gui/GuiResourcePackAvailable.java | 0 .../client/gui/GuiResourcePackList.java | 0 .../client/gui/GuiResourcePackSelected.java | 0 .../net/minecraft/client/gui/GuiScreen.java | 282 +- .../client/gui/GuiScreenAddServer.java | 41 +- .../minecraft/client/gui/GuiScreenBook.java | 28 +- .../client/gui/GuiScreenCustomizePresets.java | 16 + .../client/gui/GuiScreenOptionsSounds.java | 4 + .../client/gui/GuiScreenResourcePacks.java | 6 + .../client/gui/GuiScreenServerList.java | 12 + .../client/gui/GuiScreenWorking.java | 0 .../minecraft/client/gui/GuiSelectWorld.java | 20 +- .../net/minecraft/client/gui/GuiSleepMP.java | 0 .../net/minecraft/client/gui/GuiSlider.java | 4 + .../net/minecraft/client/gui/GuiSlot.java | 34 +- .../minecraft/client/gui/GuiSpectator.java | 0 .../minecraft/client/gui/GuiTextField.java | 19 + .../client/gui/GuiUtilRenderComponents.java | 4 + .../client/gui/GuiVideoSettings.java | 51 +- .../net/minecraft/client/gui/GuiWinGame.java | 0 .../net/minecraft/client/gui/GuiYesNo.java | 0 .../client/gui/GuiYesNoCallback.java | 0 .../minecraft/client/gui/IProgressMeter.java | 0 .../minecraft/client/gui/MapItemRenderer.java | 0 .../client/gui/ScaledResolution.java | 6 + .../client/gui/ScreenChatOptions.java | 17 +- .../client/gui/ServerListEntryNormal.java | 0 .../client/gui/ServerSelectionList.java | 0 .../gui/achievement/GuiAchievement.java | 2 +- .../gui/achievement/GuiAchievements.java | 3 +- .../client/gui/achievement/GuiStats.java | 11 +- .../gui/inventory/CreativeCrafting.java | 0 .../client/gui/inventory/GuiBeacon.java | 0 .../client/gui/inventory/GuiBrewingStand.java | 0 .../client/gui/inventory/GuiChest.java | 0 .../client/gui/inventory/GuiContainer.java | 73 +- .../gui/inventory/GuiContainerCreative.java | 34 +- .../client/gui/inventory/GuiCrafting.java | 0 .../client/gui/inventory/GuiDispenser.java | 0 .../client/gui/inventory/GuiEditSign.java | 31 +- .../client/gui/inventory/GuiFurnace.java | 0 .../client/gui/inventory/GuiInventory.java | 0 .../inventory/GuiScreenHorseInventory.java | 0 .../gui/spectator/BaseSpectatorGroup.java | 0 .../gui/spectator/ISpectatorMenuObject.java | 0 .../spectator/ISpectatorMenuRecipient.java | 0 .../gui/spectator/ISpectatorMenuView.java | 0 .../gui/spectator/PlayerMenuObject.java | 0 .../client/gui/spectator/SpectatorMenu.java | 0 .../categories/SpectatorDetails.java | 0 .../categories/TeleportToPlayer.java | 0 .../spectator/categories/TeleportToTeam.java | 0 .../client/main/GameConfiguration.java | 0 .../java/net/minecraft/client/main/Main.java | 0 .../client/model/ModelArmorStand.java | 0 .../client/model/ModelArmorStandArmor.java | 0 .../minecraft/client/model/ModelBanner.java | 0 .../net/minecraft/client/model/ModelBase.java | 0 .../net/minecraft/client/model/ModelBat.java | 0 .../minecraft/client/model/ModelBiped.java | 0 .../minecraft/client/model/ModelBlaze.java | 0 .../net/minecraft/client/model/ModelBoat.java | 0 .../net/minecraft/client/model/ModelBook.java | 0 .../net/minecraft/client/model/ModelBox.java | 0 .../minecraft/client/model/ModelChest.java | 0 .../minecraft/client/model/ModelChicken.java | 0 .../net/minecraft/client/model/ModelCow.java | 0 .../minecraft/client/model/ModelCreeper.java | 0 .../minecraft/client/model/ModelDragon.java | 0 .../client/model/ModelEnderCrystal.java | 0 .../client/model/ModelEnderMite.java | 0 .../minecraft/client/model/ModelEnderman.java | 0 .../minecraft/client/model/ModelGhast.java | 0 .../minecraft/client/model/ModelGuardian.java | 0 .../minecraft/client/model/ModelHorse.java | 0 .../client/model/ModelHumanoidHead.java | 0 .../client/model/ModelIronGolem.java | 0 .../client/model/ModelLargeChest.java | 0 .../client/model/ModelLeashKnot.java | 0 .../client/model/ModelMagmaCube.java | 0 .../minecraft/client/model/ModelMinecart.java | 0 .../minecraft/client/model/ModelOcelot.java | 0 .../net/minecraft/client/model/ModelPig.java | 0 .../minecraft/client/model/ModelPlayer.java | 0 .../client/model/ModelQuadruped.java | 0 .../minecraft/client/model/ModelRabbit.java | 0 .../minecraft/client/model/ModelRenderer.java | 0 .../minecraft/client/model/ModelSheep1.java | 0 .../minecraft/client/model/ModelSheep2.java | 0 .../net/minecraft/client/model/ModelSign.java | 0 .../client/model/ModelSilverfish.java | 0 .../minecraft/client/model/ModelSkeleton.java | 0 .../client/model/ModelSkeletonHead.java | 0 .../minecraft/client/model/ModelSlime.java | 0 .../minecraft/client/model/ModelSnowMan.java | 0 .../minecraft/client/model/ModelSpider.java | 0 .../minecraft/client/model/ModelSquid.java | 0 .../minecraft/client/model/ModelVillager.java | 0 .../minecraft/client/model/ModelWitch.java | 0 .../minecraft/client/model/ModelWither.java | 0 .../net/minecraft/client/model/ModelWolf.java | 0 .../minecraft/client/model/ModelZombie.java | 0 .../client/model/ModelZombieVillager.java | 0 .../client/model/PositionTextureVertex.java | 0 .../minecraft/client/model/TextureOffset.java | 0 .../minecraft/client/model/TexturedQuad.java | 0 .../multiplayer/ChunkProviderClient.java | 9 +- .../client/multiplayer/GuiConnecting.java | 144 +- .../multiplayer/PlayerControllerMP.java | 3 + .../client/multiplayer/ServerAddress.java | 0 .../client/multiplayer/ServerData.java | 11 + .../client/multiplayer/ServerList.java | 6 +- .../client/multiplayer/WorldClient.java | 12 +- .../client/network/NetHandlerPlayClient.java | 110 +- .../client/network/NetworkPlayerInfo.java | 33 + .../minecraft/client/particle/Barrier.java | 0 .../client/particle/EffectRenderer.java | 18 +- .../client/particle/EntityAuraFX.java | 0 .../client/particle/EntityBlockDustFX.java | 0 .../client/particle/EntityBreakingFX.java | 0 .../client/particle/EntityBubbleFX.java | 0 .../client/particle/EntityCloudFX.java | 0 .../client/particle/EntityCrit2FX.java | 0 .../client/particle/EntityCritFX.java | 0 .../client/particle/EntityDiggingFX.java | 0 .../client/particle/EntityDropParticleFX.java | 0 .../EntityEnchantmentTableParticleFX.java | 0 .../client/particle/EntityExplodeFX.java | 0 .../minecraft/client/particle/EntityFX.java | 0 .../client/particle/EntityFirework.java | 0 .../client/particle/EntityFishWakeFX.java | 0 .../client/particle/EntityFlameFX.java | 0 .../client/particle/EntityFootStepFX.java | 0 .../client/particle/EntityHeartFX.java | 0 .../client/particle/EntityHugeExplodeFX.java | 0 .../client/particle/EntityLargeExplodeFX.java | 0 .../client/particle/EntityLavaFX.java | 0 .../client/particle/EntityNoteFX.java | 0 .../particle/EntityParticleEmitter.java | 0 .../client/particle/EntityPickupFX.java | 0 .../client/particle/EntityPortalFX.java | 0 .../client/particle/EntityRainFX.java | 0 .../client/particle/EntityReddustFX.java | 0 .../client/particle/EntitySmokeFX.java | 0 .../client/particle/EntitySnowShovelFX.java | 0 .../particle/EntitySpellParticleFX.java | 0 .../client/particle/EntitySplashFX.java | 0 .../client/particle/EntitySuspendFX.java | 0 .../client/particle/IParticleFactory.java | 0 .../client/particle/MobAppearance.java | 0 .../player/inventory/ContainerLocalMenu.java | 0 .../LocalBlockIntercommunication.java | 0 .../client/renderer/ActiveRenderInfo.java | 0 .../client/renderer/BlockFluidRenderer.java | 0 .../client/renderer/BlockModelRenderer.java | 0 .../client/renderer/BlockModelShapes.java | 0 .../renderer/BlockRendererDispatcher.java | 0 .../client/renderer/ChestRenderer.java | 0 .../client/renderer/ChunkRenderContainer.java | 0 .../client/renderer/DestroyBlockProgress.java | 0 .../client/renderer/EntityRenderer.java | 147 +- .../client/renderer/EnumFaceDirection.java | 0 .../client/renderer/GLAllocation.java | 0 .../client/renderer/IImageBuffer.java | 0 .../client/renderer/ImageBufferDownload.java | 0 .../renderer/InventoryEffectRenderer.java | 0 .../client/renderer/ItemMeshDefinition.java | 0 .../client/renderer/ItemModelMesher.java | 0 .../client/renderer/ItemRenderer.java | 0 .../client/renderer/RegionRenderCache.java | 0 .../renderer/RegionRenderCacheBuilder.java | 0 .../client/renderer/RenderGlobal.java | 33 +- .../client/renderer/RenderHelper.java | 0 .../minecraft/client/renderer/RenderList.java | 0 .../client/renderer/StitcherException.java | 0 .../client/renderer/Tessellator.java | 0 .../client/renderer/ViewFrustum.java | 0 .../renderer/block/model/BakedQuad.java | 0 .../renderer/block/model/BlockFaceUV.java | 0 .../renderer/block/model/BlockPart.java | 0 .../renderer/block/model/BlockPartFace.java | 0 .../block/model/BlockPartRotation.java | 0 .../renderer/block/model/BreakingFour.java | 0 .../renderer/block/model/FaceBakery.java | 0 .../block/model/ItemCameraTransforms.java | 0 .../block/model/ItemModelGenerator.java | 0 .../block/model/ItemTransformVec3f.java | 0 .../renderer/block/model/ModelBlock.java | 0 .../block/model/ModelBlockDefinition.java | 0 .../block/statemap/BlockStateMapper.java | 0 .../block/statemap/DefaultStateMapper.java | 0 .../renderer/block/statemap/IStateMapper.java | 0 .../renderer/block/statemap/StateMap.java | 0 .../block/statemap/StateMapperBase.java | 0 .../chunk/ChunkCompileTaskGenerator.java | 0 .../renderer/chunk/ChunkRenderWorker.java | 0 .../client/renderer/chunk/CompiledChunk.java | 0 .../renderer/chunk/IRenderChunkFactory.java | 0 .../renderer/chunk/ListChunkFactory.java | 0 .../renderer/chunk/ListedRenderChunk.java | 0 .../client/renderer/chunk/RenderChunk.java | 0 .../client/renderer/chunk/SetVisibility.java | 0 .../client/renderer/chunk/VisGraph.java | 0 .../renderer/culling/ClippingHelper.java | 0 .../renderer/culling/ClippingHelperImpl.java | 0 .../client/renderer/culling/Frustum.java | 0 .../client/renderer/culling/ICamera.java | 0 .../renderer/entity/ArmorStandRenderer.java | 0 .../client/renderer/entity/Render.java | 2 +- .../client/renderer/entity/RenderArrow.java | 0 .../client/renderer/entity/RenderBat.java | 0 .../client/renderer/entity/RenderBiped.java | 0 .../client/renderer/entity/RenderBlaze.java | 0 .../client/renderer/entity/RenderBoat.java | 0 .../renderer/entity/RenderCaveSpider.java | 0 .../client/renderer/entity/RenderChicken.java | 0 .../client/renderer/entity/RenderCow.java | 0 .../client/renderer/entity/RenderCreeper.java | 0 .../client/renderer/entity/RenderDragon.java | 0 .../renderer/entity/RenderEnderman.java | 0 .../renderer/entity/RenderEndermite.java | 0 .../client/renderer/entity/RenderEntity.java | 0 .../renderer/entity/RenderEntityItem.java | 0 .../renderer/entity/RenderFallingBlock.java | 0 .../renderer/entity/RenderFireball.java | 0 .../client/renderer/entity/RenderFish.java | 0 .../client/renderer/entity/RenderGhast.java | 0 .../renderer/entity/RenderGiantZombie.java | 0 .../renderer/entity/RenderGuardian.java | 0 .../client/renderer/entity/RenderHorse.java | 0 .../renderer/entity/RenderIronGolem.java | 0 .../client/renderer/entity/RenderItem.java | 0 .../renderer/entity/RenderLeashKnot.java | 0 .../renderer/entity/RenderLightningBolt.java | 0 .../client/renderer/entity/RenderLiving.java | 0 .../renderer/entity/RenderMagmaCube.java | 0 .../client/renderer/entity/RenderManager.java | 0 .../renderer/entity/RenderMinecart.java | 0 .../entity/RenderMinecartMobSpawner.java | 0 .../renderer/entity/RenderMooshroom.java | 0 .../client/renderer/entity/RenderOcelot.java | 0 .../renderer/entity/RenderPainting.java | 0 .../client/renderer/entity/RenderPig.java | 0 .../renderer/entity/RenderPigZombie.java | 0 .../client/renderer/entity/RenderPlayer.java | 2 +- .../client/renderer/entity/RenderPotion.java | 0 .../client/renderer/entity/RenderRabbit.java | 0 .../client/renderer/entity/RenderSheep.java | 0 .../renderer/entity/RenderSilverfish.java | 0 .../renderer/entity/RenderSkeleton.java | 0 .../client/renderer/entity/RenderSlime.java | 0 .../client/renderer/entity/RenderSnowMan.java | 0 .../renderer/entity/RenderSnowball.java | 0 .../client/renderer/entity/RenderSpider.java | 0 .../client/renderer/entity/RenderSquid.java | 0 .../renderer/entity/RenderTNTPrimed.java | 0 .../renderer/entity/RenderTntMinecart.java | 0 .../renderer/entity/RenderVillager.java | 0 .../client/renderer/entity/RenderWitch.java | 0 .../client/renderer/entity/RenderWither.java | 0 .../client/renderer/entity/RenderWolf.java | 0 .../client/renderer/entity/RenderXPOrb.java | 0 .../client/renderer/entity/RenderZombie.java | 0 .../renderer/entity/RendererLivingEntity.java | 2 +- .../entity/layers/LayerArmorBase.java | 0 .../renderer/entity/layers/LayerArrow.java | 0 .../entity/layers/LayerBipedArmor.java | 0 .../renderer/entity/layers/LayerCape.java | 0 .../entity/layers/LayerCreeperCharge.java | 0 .../entity/layers/LayerCustomHead.java | 0 .../entity/layers/LayerDeadmau5Head.java | 0 .../entity/layers/LayerEnderDragonDeath.java | 0 .../entity/layers/LayerEnderDragonEyes.java | 0 .../entity/layers/LayerEndermanEyes.java | 0 .../entity/layers/LayerHeldBlock.java | 0 .../renderer/entity/layers/LayerHeldItem.java | 0 .../entity/layers/LayerHeldItemWitch.java | 0 .../entity/layers/LayerIronGolemFlower.java | 0 .../entity/layers/LayerMooshroomMushroom.java | 0 .../renderer/entity/layers/LayerRenderer.java | 0 .../renderer/entity/layers/LayerSaddle.java | 0 .../entity/layers/LayerSheepWool.java | 0 .../renderer/entity/layers/LayerSlimeGel.java | 0 .../entity/layers/LayerSnowmanHead.java | 0 .../entity/layers/LayerSpiderEyes.java | 0 .../entity/layers/LayerVillagerArmor.java | 0 .../entity/layers/LayerWitherAura.java | 0 .../entity/layers/LayerWolfCollar.java | 0 .../renderer/texture/AbstractTexture.java | 4 +- .../renderer/texture/DynamicTexture.java | 0 .../client/renderer/texture/IIconCreator.java | 0 .../renderer/texture/ITextureObject.java | 0 .../client/renderer/texture/ITickable.java | 0 .../texture/ITickableTextureObject.java | 0 .../texture/LayeredColorMaskTexture.java | 0 .../renderer/texture/LayeredTexture.java | 0 .../renderer/texture/SimpleTexture.java | 0 .../client/renderer/texture/Stitcher.java | 0 .../client/renderer/texture/TextureClock.java | 0 .../renderer/texture/TextureCompass.java | 0 .../renderer/texture/TextureManager.java | 0 .../client/renderer/texture/TextureMap.java | 24 +- .../client/renderer/texture/TextureUtil.java | 20 +- .../tileentity/RenderEnderCrystal.java | 0 .../renderer/tileentity/RenderItemFrame.java | 2 +- .../tileentity/RenderWitherSkull.java | 0 .../tileentity/TileEntityBannerRenderer.java | 5 +- .../tileentity/TileEntityBeaconRenderer.java | 0 .../tileentity/TileEntityChestRenderer.java | 3 +- .../TileEntityEnchantmentTableRenderer.java | 0 .../TileEntityEndPortalRenderer.java | 0 .../TileEntityEnderChestRenderer.java | 0 .../TileEntityItemStackRenderer.java | 0 .../TileEntityMobSpawnerRenderer.java | 0 .../tileentity/TileEntityPistonRenderer.java | 0 .../TileEntityRendererDispatcher.java | 0 .../tileentity/TileEntitySignRenderer.java | 18 +- .../tileentity/TileEntitySkullRenderer.java | 0 .../tileentity/TileEntitySpecialRenderer.java | 0 .../renderer/vertex/DefaultVertexFormats.java | 0 .../resources/AbstractResourcePack.java | 0 .../client/resources/DefaultPlayerSkin.java | 0 .../client/resources/DefaultResourcePack.java | 9 +- .../resources/FallbackResourceManager.java | 0 .../resources/FoliageColorReloadListener.java | 0 .../resources/GrassColorReloadListener.java | 0 .../net/minecraft/client/resources/I18n.java | 0 .../resources/IReloadableResourceManager.java | 0 .../minecraft/client/resources/IResource.java | 0 .../client/resources/IResourceManager.java | 0 .../IResourceManagerReloadListener.java | 0 .../client/resources/IResourcePack.java | 0 .../minecraft/client/resources/Language.java | 0 .../client/resources/LanguageManager.java | 0 .../minecraft/client/resources/Locale.java | 2 +- .../ResourcePackFileNotFoundException.java | 0 .../resources/ResourcePackListEntry.java | 0 .../ResourcePackListEntryDefault.java | 0 .../resources/ResourcePackListEntryFound.java | 0 .../resources/ResourcePackRepository.java | 0 .../SimpleReloadableResourceManager.java | 0 .../client/resources/SimpleResource.java | 0 .../client/resources/data/AnimationFrame.java | 0 .../data/AnimationMetadataSection.java | 0 .../AnimationMetadataSectionSerializer.java | 0 .../data/BaseMetadataSectionSerializer.java | 0 .../resources/data/FontMetadataSection.java | 0 .../data/FontMetadataSectionSerializer.java | 0 .../resources/data/IMetadataSection.java | 0 .../data/IMetadataSectionSerializer.java | 0 .../resources/data/IMetadataSerializer.java | 0 .../data/LanguageMetadataSection.java | 0 .../LanguageMetadataSectionSerializer.java | 0 .../resources/data/PackMetadataSection.java | 0 .../data/PackMetadataSectionSerializer.java | 0 .../data/TextureMetadataSection.java | 0 .../TextureMetadataSectionSerializer.java | 0 .../client/resources/model/BuiltInModel.java | 0 .../client/resources/model/IBakedModel.java | 0 .../client/resources/model/ModelBakery.java | 0 .../client/resources/model/ModelManager.java | 0 .../model/ModelResourceLocation.java | 0 .../client/resources/model/ModelRotation.java | 0 .../resources/model/SimpleBakedModel.java | 0 .../resources/model/WeightedBakedModel.java | 0 .../client/settings/GameSettings.java | 140 +- .../minecraft/client/settings/KeyBinding.java | 0 .../net/minecraft/client/stream/IStream.java | 0 .../client/util/JsonBlendingMode.java | 0 .../minecraft/client/util/JsonException.java | 0 .../net/minecraft/command/CommandBase.java | 0 .../minecraft/command/CommandBlockData.java | 0 .../command/CommandClearInventory.java | 0 .../net/minecraft/command/CommandClone.java | 0 .../net/minecraft/command/CommandCompare.java | 0 .../command/CommandDefaultGameMode.java | 0 .../minecraft/command/CommandDifficulty.java | 0 .../net/minecraft/command/CommandEffect.java | 0 .../net/minecraft/command/CommandEnchant.java | 0 .../minecraft/command/CommandEntityData.java | 0 .../minecraft/command/CommandException.java | 0 .../minecraft/command/CommandExecuteAt.java | 0 .../net/minecraft/command/CommandFill.java | 0 .../minecraft/command/CommandGameMode.java | 0 .../minecraft/command/CommandGameRule.java | 0 .../net/minecraft/command/CommandGive.java | 0 .../net/minecraft/command/CommandHandler.java | 0 .../net/minecraft/command/CommandHelp.java | 0 .../net/minecraft/command/CommandKill.java | 0 .../command/CommandNotFoundException.java | 0 .../minecraft/command/CommandParticle.java | 0 .../minecraft/command/CommandPlaySound.java | 0 .../minecraft/command/CommandReplaceItem.java | 0 .../minecraft/command/CommandResultStats.java | 0 .../minecraft/command/CommandServerKick.java | 0 .../command/CommandSetPlayerTimeout.java | 0 .../command/CommandSetSpawnpoint.java | 0 .../minecraft/command/CommandShowSeed.java | 0 .../command/CommandSpreadPlayers.java | 0 .../net/minecraft/command/CommandStats.java | 0 .../net/minecraft/command/CommandTime.java | 0 .../net/minecraft/command/CommandTitle.java | 0 .../command/CommandToggleDownfall.java | 0 .../net/minecraft/command/CommandTrigger.java | 0 .../net/minecraft/command/CommandWeather.java | 0 .../minecraft/command/CommandWorldBorder.java | 0 .../java/net/minecraft/command/CommandXP.java | 0 .../command/EntityNotFoundException.java | 0 .../net/minecraft/command/IAdminCommand.java | 0 .../java/net/minecraft/command/ICommand.java | 0 .../minecraft/command/ICommandManager.java | 0 .../net/minecraft/command/ICommandSender.java | 0 .../command/NumberInvalidException.java | 0 .../command/PlayerNotFoundException.java | 0 .../net/minecraft/command/PlayerSelector.java | 0 .../command/ServerCommandManager.java | 0 .../command/SyntaxErrorException.java | 0 .../command/WrongUsageException.java | 0 .../command/server/CommandAchievement.java | 0 .../command/server/CommandBlockLogic.java | 0 .../command/server/CommandBroadcast.java | 0 .../command/server/CommandEmote.java | 0 .../command/server/CommandListPlayers.java | 0 .../command/server/CommandMessage.java | 0 .../command/server/CommandMessageRaw.java | 0 .../command/server/CommandScoreboard.java | 0 .../command/server/CommandSetBlock.java | 0 .../server/CommandSetDefaultSpawnpoint.java | 0 .../command/server/CommandSummon.java | 0 .../command/server/CommandTeleport.java | 0 .../command/server/CommandTestFor.java | 0 .../command/server/CommandTestForBlock.java | 0 .../java/net/minecraft/crash/CrashReport.java | 0 .../minecraft/crash/CrashReportCategory.java | 0 .../minecraft/creativetab/CreativeTabs.java | 0 .../BehaviorDefaultDispenseItem.java | 0 .../dispenser/BehaviorProjectileDispense.java | 0 .../dispenser/IBehaviorDispenseItem.java | 0 .../net/minecraft/dispenser/IBlockSource.java | 0 .../minecraft/dispenser/ILocatableSource.java | 0 .../net/minecraft/dispenser/ILocation.java | 0 .../net/minecraft/dispenser/IPosition.java | 0 .../net/minecraft/dispenser/PositionImpl.java | 0 .../minecraft/enchantment/Enchantment.java | 0 .../enchantment/EnchantmentArrowDamage.java | 0 .../enchantment/EnchantmentArrowFire.java | 0 .../enchantment/EnchantmentArrowInfinite.java | 0 .../EnchantmentArrowKnockback.java | 0 .../enchantment/EnchantmentDamage.java | 0 .../enchantment/EnchantmentData.java | 0 .../enchantment/EnchantmentDigging.java | 0 .../enchantment/EnchantmentDurability.java | 0 .../enchantment/EnchantmentFireAspect.java | 0 .../enchantment/EnchantmentFishingSpeed.java | 0 .../enchantment/EnchantmentHelper.java | 0 .../enchantment/EnchantmentKnockback.java | 0 .../enchantment/EnchantmentLootBonus.java | 0 .../enchantment/EnchantmentOxygen.java | 0 .../enchantment/EnchantmentProtection.java | 0 .../enchantment/EnchantmentThorns.java | 0 .../enchantment/EnchantmentUntouching.java | 0 .../enchantment/EnchantmentWaterWalker.java | 0 .../enchantment/EnchantmentWaterWorker.java | 0 .../enchantment/EnumEnchantmentType.java | 0 .../net/minecraft/entity/DataWatcher.java | 0 .../java/net/minecraft/entity/Entity.java | 57 +- .../net/minecraft/entity/EntityAgeable.java | 0 .../minecraft/entity/EntityBodyHelper.java | 0 .../net/minecraft/entity/EntityCreature.java | 0 .../net/minecraft/entity/EntityFlying.java | 0 .../net/minecraft/entity/EntityHanging.java | 0 .../net/minecraft/entity/EntityLeashKnot.java | 0 .../java/net/minecraft/entity/EntityList.java | 0 .../net/minecraft/entity/EntityLiving.java | 29 +- .../minecraft/entity/EntityLivingBase.java | 19 +- .../entity/EntityMinecartCommandBlock.java | 0 .../entity/EntitySpawnPlacementRegistry.java | 0 .../net/minecraft/entity/EntityTracker.java | 0 .../minecraft/entity/EntityTrackerEntry.java | 0 .../entity/EnumCreatureAttribute.java | 0 .../minecraft/entity/EnumCreatureType.java | 0 .../minecraft/entity/IEntityLivingData.java | 0 .../minecraft/entity/IEntityMultiPart.java | 0 .../net/minecraft/entity/IEntityOwnable.java | 0 .../java/net/minecraft/entity/IMerchant.java | 0 .../java/net/minecraft/entity/INpc.java | 0 .../net/minecraft/entity/IProjectile.java | 0 .../minecraft/entity/IRangedAttackMob.java | 0 .../net/minecraft/entity/NpcMerchant.java | 0 .../entity/SharedMonsterAttributes.java | 0 .../entity/ai/EntityAIArrowAttack.java | 0 .../entity/ai/EntityAIAttackOnCollide.java | 0 .../entity/ai/EntityAIAvoidEntity.java | 0 .../net/minecraft/entity/ai/EntityAIBase.java | 0 .../net/minecraft/entity/ai/EntityAIBeg.java | 0 .../entity/ai/EntityAIBreakDoor.java | 0 .../entity/ai/EntityAIControlledByPlayer.java | 0 .../entity/ai/EntityAICreeperSwell.java | 0 .../entity/ai/EntityAIDefendVillage.java | 0 .../entity/ai/EntityAIDoorInteract.java | 0 .../minecraft/entity/ai/EntityAIEatGrass.java | 0 .../entity/ai/EntityAIFindEntityNearest.java | 0 .../ai/EntityAIFindEntityNearestPlayer.java | 0 .../minecraft/entity/ai/EntityAIFleeSun.java | 0 .../entity/ai/EntityAIFollowGolem.java | 0 .../entity/ai/EntityAIFollowOwner.java | 0 .../entity/ai/EntityAIFollowParent.java | 0 .../entity/ai/EntityAIHarvestFarmland.java | 0 .../entity/ai/EntityAIHurtByTarget.java | 0 .../entity/ai/EntityAILeapAtTarget.java | 0 .../entity/ai/EntityAILookAtTradePlayer.java | 0 .../entity/ai/EntityAILookAtVillager.java | 0 .../minecraft/entity/ai/EntityAILookIdle.java | 0 .../net/minecraft/entity/ai/EntityAIMate.java | 0 .../entity/ai/EntityAIMoveIndoors.java | 0 .../entity/ai/EntityAIMoveThroughVillage.java | 0 .../entity/ai/EntityAIMoveToBlock.java | 0 .../ai/EntityAIMoveTowardsRestriction.java | 0 .../entity/ai/EntityAIMoveTowardsTarget.java | 0 .../ai/EntityAINearestAttackableTarget.java | 0 .../entity/ai/EntityAIOcelotAttack.java | 0 .../entity/ai/EntityAIOcelotSit.java | 0 .../minecraft/entity/ai/EntityAIOpenDoor.java | 0 .../entity/ai/EntityAIOwnerHurtByTarget.java | 0 .../entity/ai/EntityAIOwnerHurtTarget.java | 0 .../minecraft/entity/ai/EntityAIPanic.java | 0 .../net/minecraft/entity/ai/EntityAIPlay.java | 0 .../entity/ai/EntityAIRestrictOpenDoor.java | 0 .../entity/ai/EntityAIRestrictSun.java | 0 .../entity/ai/EntityAIRunAroundLikeCrazy.java | 0 .../net/minecraft/entity/ai/EntityAISit.java | 0 .../minecraft/entity/ai/EntityAISwimming.java | 0 .../minecraft/entity/ai/EntityAITarget.java | 0 .../entity/ai/EntityAITargetNonTamed.java | 0 .../minecraft/entity/ai/EntityAITasks.java | 12 - .../minecraft/entity/ai/EntityAITempt.java | 0 .../entity/ai/EntityAITradePlayer.java | 0 .../entity/ai/EntityAIVillagerInteract.java | 0 .../entity/ai/EntityAIVillagerMate.java | 0 .../minecraft/entity/ai/EntityAIWander.java | 0 .../entity/ai/EntityAIWatchClosest.java | 0 .../entity/ai/EntityAIWatchClosest2.java | 0 .../minecraft/entity/ai/EntityJumpHelper.java | 0 .../minecraft/entity/ai/EntityLookHelper.java | 0 .../entity/ai/EntityMinecartMobSpawner.java | 0 .../minecraft/entity/ai/EntityMoveHelper.java | 0 .../net/minecraft/entity/ai/EntitySenses.java | 2 - .../entity/ai/RandomPositionGenerator.java | 0 .../ai/attributes/AttributeModifier.java | 0 .../entity/ai/attributes/BaseAttribute.java | 0 .../ai/attributes/BaseAttributeMap.java | 0 .../entity/ai/attributes/IAttribute.java | 0 .../ai/attributes/IAttributeInstance.java | 0 .../ModifiableAttributeInstance.java | 0 .../entity/ai/attributes/RangedAttribute.java | 0 .../ai/attributes/ServersideAttributeMap.java | 0 .../net/minecraft/entity/boss/BossStatus.java | 0 .../minecraft/entity/boss/EntityDragon.java | 0 .../entity/boss/EntityDragonPart.java | 0 .../minecraft/entity/boss/EntityWither.java | 0 .../entity/boss/IBossDisplayData.java | 0 .../entity/effect/EntityLightningBolt.java | 0 .../entity/effect/EntityWeatherEffect.java | 0 .../entity/item/EntityArmorStand.java | 0 .../net/minecraft/entity/item/EntityBoat.java | 0 .../entity/item/EntityEnderCrystal.java | 0 .../minecraft/entity/item/EntityEnderEye.java | 0 .../entity/item/EntityEnderPearl.java | 0 .../entity/item/EntityExpBottle.java | 0 .../entity/item/EntityFallingBlock.java | 0 .../entity/item/EntityFireworkRocket.java | 0 .../net/minecraft/entity/item/EntityItem.java | 2 +- .../entity/item/EntityItemFrame.java | 2 +- .../minecraft/entity/item/EntityMinecart.java | 19 +- .../entity/item/EntityMinecartChest.java | 0 .../entity/item/EntityMinecartContainer.java | 0 .../entity/item/EntityMinecartEmpty.java | 0 .../entity/item/EntityMinecartFurnace.java | 0 .../entity/item/EntityMinecartHopper.java | 0 .../entity/item/EntityMinecartTNT.java | 0 .../minecraft/entity/item/EntityPainting.java | 0 .../entity/item/EntityTNTPrimed.java | 0 .../minecraft/entity/item/EntityXPOrb.java | 0 .../minecraft/entity/monster/EntityBlaze.java | 0 .../entity/monster/EntityCaveSpider.java | 0 .../entity/monster/EntityCreeper.java | 0 .../entity/monster/EntityEnderman.java | 0 .../entity/monster/EntityEndermite.java | 0 .../minecraft/entity/monster/EntityGhast.java | 0 .../entity/monster/EntityGiantZombie.java | 0 .../minecraft/entity/monster/EntityGolem.java | 0 .../entity/monster/EntityGuardian.java | 0 .../entity/monster/EntityIronGolem.java | 0 .../entity/monster/EntityMagmaCube.java | 0 .../minecraft/entity/monster/EntityMob.java | 0 .../entity/monster/EntityPigZombie.java | 0 .../entity/monster/EntitySilverfish.java | 0 .../entity/monster/EntitySkeleton.java | 0 .../minecraft/entity/monster/EntitySlime.java | 0 .../entity/monster/EntitySnowman.java | 0 .../entity/monster/EntitySpider.java | 0 .../minecraft/entity/monster/EntityWitch.java | 0 .../entity/monster/EntityZombie.java | 0 .../net/minecraft/entity/monster/IMob.java | 0 .../entity/passive/EntityAmbientCreature.java | 0 .../entity/passive/EntityAnimal.java | 0 .../minecraft/entity/passive/EntityBat.java | 0 .../entity/passive/EntityChicken.java | 0 .../minecraft/entity/passive/EntityCow.java | 0 .../minecraft/entity/passive/EntityHorse.java | 10 +- .../entity/passive/EntityMooshroom.java | 0 .../entity/passive/EntityOcelot.java | 13 +- .../minecraft/entity/passive/EntityPig.java | 0 .../entity/passive/EntityRabbit.java | 0 .../minecraft/entity/passive/EntitySheep.java | 0 .../minecraft/entity/passive/EntitySquid.java | 0 .../entity/passive/EntityTameable.java | 10 +- .../entity/passive/EntityVillager.java | 12 +- .../entity/passive/EntityWaterMob.java | 0 .../minecraft/entity/passive/EntityWolf.java | 0 .../minecraft/entity/passive/IAnimals.java | 0 .../minecraft/entity/player/EntityPlayer.java | 9 + .../entity/player/EntityPlayerMP.java | 5 +- .../entity/player/EnumPlayerModelParts.java | 0 .../entity/player/InventoryPlayer.java | 0 .../entity/player/PlayerCapabilities.java | 0 .../entity/projectile/EntityArrow.java | 0 .../entity/projectile/EntityEgg.java | 0 .../entity/projectile/EntityFireball.java | 0 .../entity/projectile/EntityFishHook.java | 0 .../projectile/EntityLargeFireball.java | 0 .../entity/projectile/EntityPotion.java | 0 .../projectile/EntitySmallFireball.java | 0 .../entity/projectile/EntitySnowball.java | 0 .../entity/projectile/EntityThrowable.java | 0 .../entity/projectile/EntityWitherSkull.java | 0 .../java/net/minecraft/event/ClickEvent.java | 0 .../java/net/minecraft/event/HoverEvent.java | 0 .../java/net/minecraft/init/Blocks.java | 0 .../java/net/minecraft/init/Bootstrap.java | 0 .../java/net/minecraft/init/Items.java | 0 .../net/minecraft/inventory/AnimalChest.java | 0 .../net/minecraft/inventory/Container.java | 0 .../minecraft/inventory/ContainerBeacon.java | 0 .../inventory/ContainerBrewingStand.java | 0 .../minecraft/inventory/ContainerChest.java | 0 .../inventory/ContainerDispenser.java | 0 .../inventory/ContainerEnchantment.java | 0 .../minecraft/inventory/ContainerFurnace.java | 0 .../minecraft/inventory/ContainerHopper.java | 0 .../inventory/ContainerHorseInventory.java | 0 .../inventory/ContainerMerchant.java | 0 .../minecraft/inventory/ContainerPlayer.java | 0 .../minecraft/inventory/ContainerRepair.java | 0 .../inventory/ContainerWorkbench.java | 0 .../net/minecraft/inventory/ICrafting.java | 0 .../net/minecraft/inventory/IInvBasic.java | 0 .../net/minecraft/inventory/IInventory.java | 0 .../minecraft/inventory/ISidedInventory.java | 0 .../minecraft/inventory/InventoryBasic.java | 0 .../inventory/InventoryCraftResult.java | 0 .../inventory/InventoryCrafting.java | 0 .../inventory/InventoryEnderChest.java | 0 .../minecraft/inventory/InventoryHelper.java | 0 .../inventory/InventoryLargeChest.java | 0 .../inventory/InventoryMerchant.java | 0 .../java/net/minecraft/inventory/Slot.java | 0 .../net/minecraft/inventory/SlotCrafting.java | 0 .../minecraft/inventory/SlotFurnaceFuel.java | 0 .../inventory/SlotFurnaceOutput.java | 0 .../inventory/SlotMerchantResult.java | 0 .../java/net/minecraft/item/EnumAction.java | 0 .../java/net/minecraft/item/EnumDyeColor.java | 0 .../java/net/minecraft/item/EnumRarity.java | 0 .../java/net/minecraft/item/Item.java | 10 +- .../net/minecraft/item/ItemAnvilBlock.java | 0 .../net/minecraft/item/ItemAppleGold.java | 0 .../java/net/minecraft/item/ItemArmor.java | 0 .../net/minecraft/item/ItemArmorStand.java | 0 .../java/net/minecraft/item/ItemAxe.java | 0 .../java/net/minecraft/item/ItemBanner.java | 0 .../java/net/minecraft/item/ItemBed.java | 0 .../java/net/minecraft/item/ItemBlock.java | 2 +- .../java/net/minecraft/item/ItemBoat.java | 0 .../java/net/minecraft/item/ItemBook.java | 0 .../java/net/minecraft/item/ItemBow.java | 0 .../java/net/minecraft/item/ItemBucket.java | 0 .../net/minecraft/item/ItemBucketMilk.java | 0 .../minecraft/item/ItemCarrotOnAStick.java | 0 .../java/net/minecraft/item/ItemCloth.java | 0 .../java/net/minecraft/item/ItemCoal.java | 0 .../java/net/minecraft/item/ItemColored.java | 0 .../java/net/minecraft/item/ItemDoor.java | 0 .../net/minecraft/item/ItemDoublePlant.java | 0 .../java/net/minecraft/item/ItemDye.java | 0 .../net/minecraft/item/ItemEditableBook.java | 0 .../java/net/minecraft/item/ItemEgg.java | 4 + .../java/net/minecraft/item/ItemEmptyMap.java | 0 .../net/minecraft/item/ItemEnchantedBook.java | 0 .../java/net/minecraft/item/ItemEnderEye.java | 4 + .../net/minecraft/item/ItemEnderPearl.java | 4 + .../net/minecraft/item/ItemExpBottle.java | 4 + .../java/net/minecraft/item/ItemFireball.java | 0 .../java/net/minecraft/item/ItemFirework.java | 4 + .../minecraft/item/ItemFireworkCharge.java | 0 .../java/net/minecraft/item/ItemFishFood.java | 0 .../net/minecraft/item/ItemFishingRod.java | 0 .../net/minecraft/item/ItemFlintAndSteel.java | 0 .../java/net/minecraft/item/ItemFood.java | 0 .../net/minecraft/item/ItemGlassBottle.java | 0 .../net/minecraft/item/ItemHangingEntity.java | 0 .../java/net/minecraft/item/ItemHoe.java | 0 .../java/net/minecraft/item/ItemLead.java | 0 .../java/net/minecraft/item/ItemLeaves.java | 0 .../java/net/minecraft/item/ItemLilyPad.java | 0 .../java/net/minecraft/item/ItemMap.java | 0 .../java/net/minecraft/item/ItemMapBase.java | 0 .../java/net/minecraft/item/ItemMinecart.java | 0 .../net/minecraft/item/ItemMonsterPlacer.java | 0 .../net/minecraft/item/ItemMultiTexture.java | 0 .../java/net/minecraft/item/ItemNameTag.java | 0 .../java/net/minecraft/item/ItemPickaxe.java | 0 .../java/net/minecraft/item/ItemPiston.java | 0 .../java/net/minecraft/item/ItemPotion.java | 0 .../java/net/minecraft/item/ItemRecord.java | 0 .../java/net/minecraft/item/ItemRedstone.java | 0 .../java/net/minecraft/item/ItemReed.java | 0 .../java/net/minecraft/item/ItemSaddle.java | 0 .../java/net/minecraft/item/ItemSeedFood.java | 0 .../java/net/minecraft/item/ItemSeeds.java | 0 .../java/net/minecraft/item/ItemShears.java | 0 .../java/net/minecraft/item/ItemSign.java | 0 .../net/minecraft/item/ItemSimpleFoiled.java | 0 .../java/net/minecraft/item/ItemSkull.java | 0 .../java/net/minecraft/item/ItemSlab.java | 0 .../java/net/minecraft/item/ItemSnow.java | 0 .../java/net/minecraft/item/ItemSnowball.java | 4 + .../java/net/minecraft/item/ItemSoup.java | 0 .../java/net/minecraft/item/ItemSpade.java | 0 .../java/net/minecraft/item/ItemStack.java | 36 +- .../java/net/minecraft/item/ItemSword.java | 0 .../java/net/minecraft/item/ItemTool.java | 0 .../net/minecraft/item/ItemWritableBook.java | 0 .../item/crafting/CraftingManager.java | 0 .../item/crafting/FurnaceRecipes.java | 0 .../net/minecraft/item/crafting/IRecipe.java | 0 .../item/crafting/RecipeBookCloning.java | 0 .../item/crafting/RecipeFireworks.java | 0 .../item/crafting/RecipeRepairItem.java | 0 .../minecraft/item/crafting/RecipesArmor.java | 0 .../item/crafting/RecipesArmorDyes.java | 0 .../item/crafting/RecipesBanners.java | 0 .../item/crafting/RecipesCrafting.java | 0 .../minecraft/item/crafting/RecipesDyes.java | 0 .../minecraft/item/crafting/RecipesFood.java | 0 .../item/crafting/RecipesIngots.java | 0 .../item/crafting/RecipesMapCloning.java | 0 .../item/crafting/RecipesMapExtending.java | 0 .../minecraft/item/crafting/RecipesTools.java | 0 .../item/crafting/RecipesWeapons.java | 0 .../item/crafting/ShapedRecipes.java | 0 .../item/crafting/ShapelessRecipes.java | 0 .../minecraft/nbt/CompressedStreamTools.java | 0 .../java/net/minecraft/nbt/JsonToNBT.java | 0 .../java/net/minecraft/nbt/NBTBase.java | 0 .../java/net/minecraft/nbt/NBTException.java | 0 .../net/minecraft/nbt/NBTSizeTracker.java | 0 .../java/net/minecraft/nbt/NBTTagByte.java | 0 .../net/minecraft/nbt/NBTTagByteArray.java | 0 .../net/minecraft/nbt/NBTTagCompound.java | 0 .../java/net/minecraft/nbt/NBTTagDouble.java | 0 .../java/net/minecraft/nbt/NBTTagEnd.java | 0 .../java/net/minecraft/nbt/NBTTagFloat.java | 0 .../java/net/minecraft/nbt/NBTTagInt.java | 0 .../net/minecraft/nbt/NBTTagIntArray.java | 0 .../java/net/minecraft/nbt/NBTTagList.java | 0 .../java/net/minecraft/nbt/NBTTagLong.java | 0 .../java/net/minecraft/nbt/NBTTagShort.java | 0 .../java/net/minecraft/nbt/NBTTagString.java | 0 .../java/net/minecraft/nbt/NBTUtil.java | 0 .../network/EnumConnectionState.java | 0 .../network/EnumPacketDirection.java | 0 .../net/minecraft/network/INetHandler.java | 0 .../network/NetHandlerPlayServer.java | 67 +- .../java/net/minecraft/network/Packet.java | 0 .../net/minecraft/network/PacketBuffer.java | 0 .../network/ServerStatusResponse.java | 0 .../handshake/INetHandlerHandshakeServer.java | 0 .../handshake/client/C00Handshake.java | 0 .../network/login/INetHandlerLoginClient.java | 0 .../network/login/INetHandlerLoginServer.java | 0 .../login/client/C00PacketLoginStart.java | 19 +- .../client/C01PacketEncryptionResponse.java | 0 .../login/server/S00PacketDisconnect.java | 0 .../server/S01PacketEncryptionRequest.java | 0 .../login/server/S02PacketLoginSuccess.java | 12 +- .../server/S03PacketEnableCompression.java | 0 .../network/play/INetHandlerPlayClient.java | 0 .../network/play/INetHandlerPlayServer.java | 0 .../play/client/C00PacketKeepAlive.java | 0 .../play/client/C01PacketChatMessage.java | 0 .../play/client/C02PacketUseEntity.java | 0 .../network/play/client/C03PacketPlayer.java | 0 .../play/client/C07PacketPlayerDigging.java | 0 .../client/C08PacketPlayerBlockPlacement.java | 0 .../play/client/C09PacketHeldItemChange.java | 0 .../play/client/C0APacketAnimation.java | 0 .../play/client/C0BPacketEntityAction.java | 0 .../network/play/client/C0CPacketInput.java | 0 .../play/client/C0DPacketCloseWindow.java | 0 .../play/client/C0EPacketClickWindow.java | 0 .../client/C0FPacketConfirmTransaction.java | 0 .../C10PacketCreativeInventoryAction.java | 0 .../play/client/C11PacketEnchantItem.java | 0 .../play/client/C12PacketUpdateSign.java | 0 .../play/client/C13PacketPlayerAbilities.java | 0 .../play/client/C14PacketTabComplete.java | 0 .../play/client/C15PacketClientSettings.java | 0 .../play/client/C16PacketClientStatus.java | 0 .../play/client/C17PacketCustomPayload.java | 0 .../play/client/C18PacketSpectate.java | 0 .../client/C19PacketResourcePackStatus.java | 0 .../play/server/S00PacketKeepAlive.java | 0 .../play/server/S01PacketJoinGame.java | 0 .../network/play/server/S02PacketChat.java | 0 .../play/server/S03PacketTimeUpdate.java | 0 .../play/server/S04PacketEntityEquipment.java | 0 .../play/server/S05PacketSpawnPosition.java | 0 .../play/server/S06PacketUpdateHealth.java | 0 .../network/play/server/S07PacketRespawn.java | 0 .../play/server/S08PacketPlayerPosLook.java | 0 .../play/server/S09PacketHeldItemChange.java | 0 .../network/play/server/S0APacketUseBed.java | 0 .../play/server/S0BPacketAnimation.java | 0 .../play/server/S0CPacketSpawnPlayer.java | 0 .../play/server/S0DPacketCollectItem.java | 0 .../play/server/S0EPacketSpawnObject.java | 0 .../play/server/S0FPacketSpawnMob.java | 0 .../play/server/S10PacketSpawnPainting.java | 0 .../server/S11PacketSpawnExperienceOrb.java | 0 .../play/server/S12PacketEntityVelocity.java | 0 .../play/server/S13PacketDestroyEntities.java | 0 .../network/play/server/S14PacketEntity.java | 0 .../play/server/S18PacketEntityTeleport.java | 0 .../play/server/S19PacketEntityHeadLook.java | 0 .../play/server/S19PacketEntityStatus.java | 0 .../play/server/S1BPacketEntityAttach.java | 0 .../play/server/S1CPacketEntityMetadata.java | 0 .../play/server/S1DPacketEntityEffect.java | 0 .../server/S1EPacketRemoveEntityEffect.java | 0 .../play/server/S1FPacketSetExperience.java | 0 .../server/S20PacketEntityProperties.java | 0 .../play/server/S21PacketChunkData.java | 0 .../server/S22PacketMultiBlockChange.java | 0 .../play/server/S23PacketBlockChange.java | 0 .../play/server/S24PacketBlockAction.java | 0 .../play/server/S25PacketBlockBreakAnim.java | 0 .../play/server/S26PacketMapChunkBulk.java | 0 .../play/server/S27PacketExplosion.java | 0 .../network/play/server/S28PacketEffect.java | 0 .../play/server/S29PacketSoundEffect.java | 0 .../play/server/S2APacketParticles.java | 0 .../play/server/S2BPacketChangeGameState.java | 0 .../server/S2CPacketSpawnGlobalEntity.java | 0 .../play/server/S2DPacketOpenWindow.java | 0 .../play/server/S2EPacketCloseWindow.java | 0 .../network/play/server/S2FPacketSetSlot.java | 0 .../play/server/S30PacketWindowItems.java | 0 .../play/server/S31PacketWindowProperty.java | 0 .../server/S32PacketConfirmTransaction.java | 0 .../play/server/S33PacketUpdateSign.java | 0 .../network/play/server/S34PacketMaps.java | 0 .../server/S35PacketUpdateTileEntity.java | 0 .../play/server/S36PacketSignEditorOpen.java | 0 .../play/server/S37PacketStatistics.java | 0 .../play/server/S38PacketPlayerListItem.java | 0 .../play/server/S39PacketPlayerAbilities.java | 0 .../play/server/S3APacketTabComplete.java | 0 .../server/S3BPacketScoreboardObjective.java | 0 .../play/server/S3CPacketUpdateScore.java | 0 .../server/S3DPacketDisplayScoreboard.java | 0 .../network/play/server/S3EPacketTeams.java | 0 .../play/server/S3FPacketCustomPayload.java | 0 .../play/server/S40PacketDisconnect.java | 0 .../server/S41PacketServerDifficulty.java | 0 .../play/server/S42PacketCombatEvent.java | 0 .../network/play/server/S43PacketCamera.java | 0 .../play/server/S44PacketWorldBorder.java | 0 .../network/play/server/S45PacketTitle.java | 0 .../server/S46PacketSetCompressionLevel.java | 0 .../S47PacketPlayerListHeaderFooter.java | 0 .../server/S48PacketResourcePackSend.java | 0 .../play/server/S49PacketUpdateEntityNBT.java | 0 .../java/net/minecraft/pathfinding/Path.java | 0 .../net/minecraft/pathfinding/PathEntity.java | 0 .../net/minecraft/pathfinding/PathFinder.java | 0 .../minecraft/pathfinding/PathNavigate.java | 4 - .../pathfinding/PathNavigateClimber.java | 0 .../pathfinding/PathNavigateGround.java | 0 .../pathfinding/PathNavigateSwimmer.java | 0 .../net/minecraft/pathfinding/PathPoint.java | 0 .../java/net/minecraft/potion/Potion.java | 0 .../minecraft/potion/PotionAbsorption.java | 0 .../minecraft/potion/PotionAttackDamage.java | 0 .../net/minecraft/potion/PotionEffect.java | 0 .../net/minecraft/potion/PotionHealth.java | 0 .../minecraft/potion/PotionHealthBoost.java | 0 .../net/minecraft/potion/PotionHelper.java | 0 .../net/minecraft/scoreboard/GoalColor.java | 0 .../scoreboard/IScoreObjectiveCriteria.java | 0 .../java/net/minecraft/scoreboard/Score.java | 0 .../scoreboard/ScoreDummyCriteria.java | 0 .../scoreboard/ScoreHealthCriteria.java | 0 .../minecraft/scoreboard/ScoreObjective.java | 15 + .../minecraft/scoreboard/ScorePlayerTeam.java | 0 .../net/minecraft/scoreboard/Scoreboard.java | 0 .../scoreboard/ScoreboardSaveData.java | 0 .../scoreboard/ServerScoreboard.java | 0 .../java/net/minecraft/scoreboard/Team.java | 0 .../net/minecraft/server/MinecraftServer.java | 58 +- .../server/management/ItemInWorldManager.java | 0 .../server/management/LowerStringMap.java | 0 .../server/management/PlayerManager.java | 0 .../ServerConfigurationManager.java | 32 +- .../server/network/NetHandlerLoginServer.java | 54 +- .../java/net/minecraft/stats/Achievement.java | 0 .../net/minecraft/stats/AchievementList.java | 0 .../minecraft/stats/IStatStringFormat.java | 0 .../java/net/minecraft/stats/IStatType.java | 0 .../net/minecraft/stats/ObjectiveStat.java | 0 .../java/net/minecraft/stats/StatBase.java | 0 .../java/net/minecraft/stats/StatBasic.java | 0 .../net/minecraft/stats/StatCrafting.java | 0 .../net/minecraft/stats/StatFileWriter.java | 0 .../java/net/minecraft/stats/StatList.java | 0 .../net/minecraft/stats/StatisticsFile.java | 0 .../net/minecraft/tileentity/IHopper.java | 0 .../tileentity/MobSpawnerBaseLogic.java | 0 .../net/minecraft/tileentity/TileEntity.java | 0 .../tileentity/TileEntityBanner.java | 0 .../tileentity/TileEntityBeacon.java | 0 .../tileentity/TileEntityBrewingStand.java | 0 .../minecraft/tileentity/TileEntityChest.java | 0 .../tileentity/TileEntityCommandBlock.java | 0 .../tileentity/TileEntityComparator.java | 0 .../TileEntityDaylightDetector.java | 0 .../tileentity/TileEntityDispenser.java | 0 .../tileentity/TileEntityDropper.java | 0 .../TileEntityEnchantmentTable.java | 0 .../tileentity/TileEntityEndPortal.java | 0 .../tileentity/TileEntityEnderChest.java | 0 .../tileentity/TileEntityFlowerPot.java | 0 .../tileentity/TileEntityFurnace.java | 0 .../tileentity/TileEntityHopper.java | 0 .../tileentity/TileEntityLockable.java | 0 .../tileentity/TileEntityMobSpawner.java | 0 .../minecraft/tileentity/TileEntityNote.java | 0 .../tileentity/TileEntityPiston.java | 0 .../minecraft/tileentity/TileEntitySign.java | 22 + .../minecraft/tileentity/TileEntitySkull.java | 0 .../net/minecraft/util/AxisAlignedBB.java | 0 .../java/net/minecraft/util/BlockPos.java | 0 .../java/net/minecraft/util/Cartesian.java | 0 .../minecraft/util/ChatAllowedCharacters.java | 0 .../util/ChatComponentProcessor.java | 0 .../minecraft/util/ChatComponentScore.java | 0 .../minecraft/util/ChatComponentSelector.java | 0 .../minecraft/util/ChatComponentStyle.java | 4 + .../net/minecraft/util/ChatComponentText.java | 0 .../util/ChatComponentTranslation.java | 0 ...atComponentTranslationFormatException.java | 0 .../java/net/minecraft/util/ChatStyle.java | 11 +- .../util/ClassInheritanceMultiMap.java | 0 .../java/net/minecraft/util/CombatEntry.java | 0 .../net/minecraft/util/CombatTracker.java | 0 .../java/net/minecraft/util/DamageSource.java | 0 .../minecraft/util/EnchantmentNameParts.java | 0 .../minecraft/util/EntityDamageSource.java | 0 .../util/EntityDamageSourceIndirect.java | 0 .../net/minecraft/util/EntitySelectors.java | 0 .../minecraft/util/EnumChatFormatting.java | 0 .../java/net/minecraft/util/EnumFacing.java | 0 .../net/minecraft/util/EnumParticleTypes.java | 0 .../minecraft/util/EnumWorldBlockLayer.java | 0 .../java/net/minecraft/util/FoodStats.java | 0 .../java/net/minecraft/util/FrameTimer.java | 0 .../net/minecraft/util/IChatComponent.java | 0 .../net/minecraft/util/IJsonSerializable.java | 0 .../minecraft/util/IObjectIntIterable.java | 0 .../net/minecraft/util/IProgressUpdate.java | 0 .../java/net/minecraft/util/IRegistry.java | 0 .../minecraft/util/IStringSerializable.java | 0 .../net/minecraft/util/IThreadListener.java | 0 .../java/net/minecraft/util/ITickable.java | 0 .../java/net/minecraft/util/IntHashMap.java | 0 .../java/net/minecraft/util/IntegerCache.java | 0 .../minecraft/util/JsonSerializableSet.java | 0 .../java/net/minecraft/util/LazyLoadBase.java | 0 .../minecraft/util/LoggingPrintStream.java | 0 .../java/net/minecraft/util/LongHashMap.java | 0 .../java/net/minecraft/util/MapPopulator.java | 0 .../java/net/minecraft/util/MathHelper.java | 0 .../java/net/minecraft/util/Matrix4f.java | 0 .../net/minecraft/util/MinecraftError.java | 0 .../java/net/minecraft/util/MouseFilter.java | 0 .../java/net/minecraft/util/MouseHelper.java | 5 +- .../net/minecraft/util/MovementInput.java | 0 .../util/MovementInputFromOptions.java | 20 +- .../minecraft/util/MovingObjectPosition.java | 0 .../minecraft/util/ObjectIntIdentityMap.java | 0 .../net/minecraft/util/RegistryDefaulted.java | 0 .../minecraft/util/RegistryNamespaced.java | 0 .../RegistryNamespacedDefaultedByKey.java | 0 .../net/minecraft/util/RegistrySimple.java | 0 .../net/minecraft/util/ReportedException.java | 0 .../net/minecraft/util/ResourceLocation.java | 0 .../java/net/minecraft/util/Rotations.java | 0 .../net/minecraft/util/ScreenShotHelper.java | 0 .../java/net/minecraft/util/Session.java | 6 +- .../net/minecraft/util/StatCollector.java | 0 .../net/minecraft/util/StringTranslate.java | 6 +- .../java/net/minecraft/util/StringUtils.java | 2 +- .../java/net/minecraft/util/Timer.java | 5 +- .../java/net/minecraft/util/Tuple.java | 0 .../util/TupleIntJsonSerializable.java | 0 .../java/net/minecraft/util/Util.java | 0 .../java/net/minecraft/util/Vec3.java | 0 .../java/net/minecraft/util/Vec3i.java | 0 .../java/net/minecraft/util/Vec4b.java | 0 .../java/net/minecraft/util/Vector3d.java | 0 .../net/minecraft/util/WeightedRandom.java | 0 .../util/WeightedRandomChestContent.java | 0 .../util/WeightedRandomFishable.java | 0 .../net/minecraft/village/MerchantRecipe.java | 0 .../minecraft/village/MerchantRecipeList.java | 0 .../java/net/minecraft/village/Village.java | 0 .../minecraft/village/VillageCollection.java | 0 .../minecraft/village/VillageDoorInfo.java | 0 .../net/minecraft/village/VillageSiege.java | 0 .../java/net/minecraft/world/ChunkCache.java | 0 .../minecraft/world/ChunkCoordIntPair.java | 0 .../net/minecraft/world/ColorizerFoliage.java | 0 .../net/minecraft/world/ColorizerGrass.java | 0 .../minecraft/world/DifficultyInstance.java | 0 .../net/minecraft/world/EnumDifficulty.java | 0 .../net/minecraft/world/EnumSkyBlock.java | 0 .../java/net/minecraft/world/Explosion.java | 0 .../java/net/minecraft/world/GameRules.java | 1 + .../net/minecraft/world/IBlockAccess.java | 0 .../minecraft/world/IInteractionObject.java | 0 .../minecraft/world/ILockableContainer.java | 0 .../net/minecraft/world/IWorldAccess.java | 0 .../net/minecraft/world/IWorldNameable.java | 0 .../java/net/minecraft/world/LockCode.java | 0 .../minecraft/world/MinecraftException.java | 0 .../minecraft/world/NextTickListEntry.java | 0 .../net/minecraft/world/SpawnerAnimals.java | 0 .../java/net/minecraft/world/Teleporter.java | 0 .../java/net/minecraft/world/World.java | 39 +- .../net/minecraft/world/WorldManager.java | 0 .../net/minecraft/world/WorldProvider.java | 0 .../net/minecraft/world/WorldProviderEnd.java | 0 .../minecraft/world/WorldProviderHell.java | 0 .../minecraft/world/WorldProviderSurface.java | 0 .../net/minecraft/world/WorldSavedData.java | 0 .../java/net/minecraft/world/WorldServer.java | 27 +- .../net/minecraft/world/WorldServerMulti.java | 6 +- .../net/minecraft/world/WorldSettings.java | 0 .../java/net/minecraft/world/WorldType.java | 0 .../net/minecraft/world/biome/BiomeCache.java | 0 .../world/biome/BiomeColorHelper.java | 0 .../minecraft/world/biome/BiomeDecorator.java | 0 .../world/biome/BiomeEndDecorator.java | 0 .../minecraft/world/biome/BiomeGenBase.java | 0 .../minecraft/world/biome/BiomeGenBeach.java | 0 .../minecraft/world/biome/BiomeGenDesert.java | 0 .../minecraft/world/biome/BiomeGenEnd.java | 0 .../minecraft/world/biome/BiomeGenForest.java | 0 .../minecraft/world/biome/BiomeGenHell.java | 0 .../minecraft/world/biome/BiomeGenHills.java | 0 .../minecraft/world/biome/BiomeGenJungle.java | 0 .../minecraft/world/biome/BiomeGenMesa.java | 0 .../world/biome/BiomeGenMushroomIsland.java | 0 .../world/biome/BiomeGenMutated.java | 0 .../minecraft/world/biome/BiomeGenOcean.java | 0 .../minecraft/world/biome/BiomeGenPlains.java | 0 .../minecraft/world/biome/BiomeGenRiver.java | 0 .../world/biome/BiomeGenSavanna.java | 0 .../minecraft/world/biome/BiomeGenSnow.java | 0 .../world/biome/BiomeGenStoneBeach.java | 0 .../minecraft/world/biome/BiomeGenSwamp.java | 0 .../minecraft/world/biome/BiomeGenTaiga.java | 0 .../world/biome/WorldChunkManager.java | 0 .../world/biome/WorldChunkManagerHell.java | 0 .../world/border/EnumBorderStatus.java | 0 .../world/border/IBorderListener.java | 0 .../minecraft/world/border/WorldBorder.java | 9 +- .../java/net/minecraft/world/chunk/Chunk.java | 4 - .../minecraft/world/chunk/ChunkPrimer.java | 0 .../net/minecraft/world/chunk/EmptyChunk.java | 0 .../minecraft/world/chunk/IChunkProvider.java | 0 .../minecraft/world/chunk/NibbleArray.java | 0 .../world/chunk/storage/AnvilChunkLoader.java | 0 .../world/chunk/storage/ChunkLoader.java | 0 .../chunk/storage/ExtendedBlockStorage.java | 0 .../world/chunk/storage/IChunkLoader.java | 0 .../chunk/storage/NibbleArrayReader.java | 0 .../world/chunk/storage/RegionFile.java | 0 .../world/demo/DemoWorldManager.java | 0 .../minecraft/world/demo/DemoWorldServer.java | 6 +- .../world/gen/ChunkProviderDebug.java | 0 .../minecraft/world/gen/ChunkProviderEnd.java | 0 .../world/gen/ChunkProviderFlat.java | 0 .../world/gen/ChunkProviderGenerate.java | 0 .../world/gen/ChunkProviderHell.java | 0 .../world/gen/ChunkProviderServer.java | 0 .../world/gen/ChunkProviderSettings.java | 0 .../world/gen/FlatGeneratorInfo.java | 0 .../minecraft/world/gen/FlatLayerInfo.java | 0 .../world/gen/GeneratorBushFeature.java | 0 .../net/minecraft/world/gen/MapGenBase.java | 0 .../net/minecraft/world/gen/MapGenCaves.java | 0 .../minecraft/world/gen/MapGenCavesHell.java | 0 .../net/minecraft/world/gen/MapGenRavine.java | 0 .../minecraft/world/gen/NoiseGenerator.java | 0 .../world/gen/NoiseGeneratorImproved.java | 0 .../world/gen/NoiseGeneratorOctaves.java | 0 .../world/gen/NoiseGeneratorPerlin.java | 0 .../world/gen/NoiseGeneratorSimplex.java | 0 .../gen/feature/WorldGenAbstractTree.java | 0 .../gen/feature/WorldGenBigMushroom.java | 0 .../world/gen/feature/WorldGenBigTree.java | 0 .../world/gen/feature/WorldGenBlockBlob.java | 0 .../world/gen/feature/WorldGenCactus.java | 0 .../world/gen/feature/WorldGenCanopyTree.java | 0 .../world/gen/feature/WorldGenClay.java | 0 .../world/gen/feature/WorldGenDeadBush.java | 0 .../gen/feature/WorldGenDesertWells.java | 0 .../gen/feature/WorldGenDoublePlant.java | 0 .../world/gen/feature/WorldGenDungeons.java | 0 .../world/gen/feature/WorldGenFire.java | 0 .../world/gen/feature/WorldGenFlowers.java | 0 .../world/gen/feature/WorldGenForest.java | 0 .../world/gen/feature/WorldGenGlowStone1.java | 0 .../world/gen/feature/WorldGenGlowStone2.java | 0 .../world/gen/feature/WorldGenHellLava.java | 0 .../world/gen/feature/WorldGenHugeTrees.java | 0 .../world/gen/feature/WorldGenIcePath.java | 0 .../world/gen/feature/WorldGenIceSpike.java | 0 .../world/gen/feature/WorldGenLakes.java | 0 .../world/gen/feature/WorldGenLiquids.java | 0 .../world/gen/feature/WorldGenMegaJungle.java | 0 .../gen/feature/WorldGenMegaPineTree.java | 0 .../world/gen/feature/WorldGenMelon.java | 0 .../world/gen/feature/WorldGenMinable.java | 0 .../world/gen/feature/WorldGenPumpkin.java | 0 .../world/gen/feature/WorldGenReed.java | 0 .../world/gen/feature/WorldGenSand.java | 0 .../gen/feature/WorldGenSavannaTree.java | 0 .../world/gen/feature/WorldGenShrub.java | 0 .../world/gen/feature/WorldGenSpikes.java | 0 .../world/gen/feature/WorldGenSwamp.java | 0 .../world/gen/feature/WorldGenTaiga1.java | 0 .../world/gen/feature/WorldGenTaiga2.java | 0 .../world/gen/feature/WorldGenTallGrass.java | 0 .../world/gen/feature/WorldGenTrees.java | 0 .../world/gen/feature/WorldGenVines.java | 0 .../world/gen/feature/WorldGenWaterlily.java | 0 .../world/gen/feature/WorldGenerator.java | 0 .../gen/feature/WorldGeneratorBonusChest.java | 0 .../minecraft/world/gen/layer/GenLayer.java | 0 .../world/gen/layer/GenLayerAddIsland.java | 0 .../gen/layer/GenLayerAddMushroomIsland.java | 0 .../world/gen/layer/GenLayerAddSnow.java | 0 .../world/gen/layer/GenLayerBiome.java | 0 .../world/gen/layer/GenLayerBiomeEdge.java | 0 .../world/gen/layer/GenLayerDeepOcean.java | 0 .../world/gen/layer/GenLayerEdge.java | 0 .../world/gen/layer/GenLayerFuzzyZoom.java | 0 .../world/gen/layer/GenLayerHills.java | 0 .../world/gen/layer/GenLayerIsland.java | 0 .../world/gen/layer/GenLayerRareBiome.java | 0 .../gen/layer/GenLayerRemoveTooMuchOcean.java | 0 .../world/gen/layer/GenLayerRiver.java | 0 .../world/gen/layer/GenLayerRiverInit.java | 0 .../world/gen/layer/GenLayerRiverMix.java | 0 .../world/gen/layer/GenLayerShore.java | 0 .../world/gen/layer/GenLayerSmooth.java | 0 .../world/gen/layer/GenLayerVoronoiZoom.java | 0 .../world/gen/layer/GenLayerZoom.java | 0 .../minecraft/world/gen/layer/IntCache.java | 0 .../ComponentScatteredFeaturePieces.java | 0 .../world/gen/structure/MapGenMineshaft.java | 0 .../gen/structure/MapGenNetherBridge.java | 0 .../gen/structure/MapGenScatteredFeature.java | 0 .../world/gen/structure/MapGenStronghold.java | 0 .../world/gen/structure/MapGenStructure.java | 0 .../gen/structure/MapGenStructureData.java | 0 .../gen/structure/MapGenStructureIO.java | 0 .../world/gen/structure/MapGenVillage.java | 0 .../gen/structure/StructureBoundingBox.java | 0 .../gen/structure/StructureComponent.java | 0 .../structure/StructureMineshaftPieces.java | 0 .../structure/StructureMineshaftStart.java | 0 .../StructureNetherBridgePieces.java | 0 .../gen/structure/StructureOceanMonument.java | 0 .../StructureOceanMonumentPieces.java | 0 .../world/gen/structure/StructureStart.java | 0 .../structure/StructureStrongholdPieces.java | 0 .../gen/structure/StructureVillagePieces.java | 0 .../world/pathfinder/NodeProcessor.java | 0 .../world/pathfinder/SwimNodeProcessor.java | 0 .../world/pathfinder/WalkNodeProcessor.java | 0 .../world/storage/DerivedWorldInfo.java | 0 .../world/storage/IPlayerFileData.java | 0 .../minecraft/world/storage/ISaveFormat.java | 0 .../minecraft/world/storage/ISaveHandler.java | 0 .../net/minecraft/world/storage/MapData.java | 0 .../minecraft/world/storage/MapStorage.java | 2 +- .../world/storage/SaveDataMemoryStorage.java | 0 .../world/storage/SaveFormatComparator.java | 0 .../world/storage/SaveFormatOld.java | 17 +- .../minecraft/world/storage/SaveHandler.java | 31 +- .../world/storage/SaveHandlerMP.java | 0 .../minecraft/world/storage/WorldInfo.java | 3 +- src/lwjgl/java/fi/iki/elonen/NanoHTTPD.java | 2333 +++++++++++++++++ .../v1_8/internal/OpenGLObjects.java | 36 + .../v1_8/internal/PlatformApplication.java | 59 +- .../v1_8/internal/PlatformAssets.java | 26 +- .../v1_8/internal/PlatformAudio.java | 8 +- .../v1_8/internal/PlatformFilesystem.java | 123 +- .../v1_8/internal/PlatformInput.java | 414 ++- .../v1_8/internal/PlatformNetworking.java | 130 +- .../v1_8/internal/PlatformOpenGL.java | 292 ++- .../v1_8/internal/PlatformRuntime.java | 142 +- .../v1_8/internal/PlatformScreenRecord.java | 59 + .../v1_8/internal/PlatformUpdateSvc.java | 10 + .../v1_8/internal/PlatformWebRTC.java | 883 +------ .../v1_8/internal/PlatformWebView.java | 93 + .../v1_8/internal/WebSocketServerQuery.java | 173 -- .../buffer/EaglerLWJGLByteBuffer.java | 111 +- .../buffer/EaglerLWJGLFloatBuffer.java | 84 +- .../internal/buffer/EaglerLWJGLIntBuffer.java | 86 +- .../buffer/EaglerLWJGLShortBuffer.java | 86 +- .../v1_8/internal/lwjgl/DebugFilesystem.java | 34 +- .../lwjgl/DesktopClientConfigAdapter.java | 60 +- .../lwjgl/DesktopWebSocketClient.java | 109 + .../lwjgl/DesktopWebSocketFrameBinary.java | 64 + .../lwjgl/DesktopWebSocketFrameString.java | 63 + .../internal/lwjgl/FallbackWebViewHTTPD.java | 41 + .../lwjgl/FallbackWebViewProtocol.java | 299 +++ .../internal/lwjgl/FallbackWebViewServer.java | 190 ++ .../internal/lwjgl/FallbackWebViewWSD.java | 273 ++ .../v1_8/internal/lwjgl/JDBCFilesystem.java | 38 +- .../lwjgl/JDBCFilesystemConverter.java | 6 +- .../v1_8/internal/lwjgl/LWJGLEntryPoint.java | 12 +- .../WebSocketClientImpl.java} | 72 +- .../internal/ClientPlatformSingleplayer.java | 12 +- .../internal/ServerPlatformSingleplayer.java | 33 +- .../internal/lwjgl/MemoryConnection.java | 4 +- .../com/google/common/base/CharMatcher.java | 24 +- .../net/lax1dude/eaglercraft/v1_8/Base64.java | 8 + .../v1_8/ClientUUIDLoadingCache.java | 152 ++ .../lax1dude/eaglercraft/v1_8/Display.java | 41 +- .../lax1dude/eaglercraft/v1_8/EagRuntime.java | 101 +- .../lax1dude/eaglercraft/v1_8/EagUtils.java | 9 + .../eaglercraft/v1_8/EaglerOutputStream.java | 5 + .../v1_8/EaglerXBungeeVersion.java | 11 +- .../v1_8/EaglercraftSoundManager.java | 6 +- .../eaglercraft/v1_8/EaglercraftUUID.java | 16 +- .../eaglercraft/v1_8/EaglercraftVersion.java | 13 +- .../lax1dude/eaglercraft/v1_8/Filesystem.java | 158 ++ .../lax1dude/eaglercraft/v1_8/Gamepad.java | 115 + .../lax1dude/eaglercraft/v1_8/HashKey.java | 54 + .../lax1dude/eaglercraft/v1_8/IOUtils.java | 2 +- .../lax1dude/eaglercraft/v1_8/Keyboard.java | 5 + .../net/lax1dude/eaglercraft/v1_8/Mouse.java | 17 + .../v1_8/PauseMenuCustomizeState.java | 257 ++ .../v1_8/PointerInputAbstraction.java | 227 ++ .../net/lax1dude/eaglercraft/v1_8/Touch.java | 134 + .../boot_menu/GuiScreenEnterBootMenu.java | 54 + .../v1_8/cache/EaglerLoadingCache.java | 2 +- .../cookie/GuiScreenInspectSessionToken.java | 84 + .../cookie/GuiScreenRevokeSessionToken.java | 146 ++ .../cookie/GuiScreenSendRevokeRequest.java | 177 ++ .../v1_8/cookie/HardwareFingerprint.java | 294 +++ .../v1_8/cookie/ServerCookieDataStore.java | 396 +++ .../v1_8/crypto/AESLightEngine.java | 527 ++++ .../v1_8/futures/ListenableFutureTask.java | 4 +- .../internal/AbstractWebSocketClient.java | 227 ++ .../EaglerMissingResourceException.java} | 29 +- .../v1_8/internal/EnumFireKeyboardEvent.java | 20 + .../v1_8/internal/EnumFireMouseEvent.java | 20 + .../v1_8/internal/EnumPlatformANGLE.java | 5 + .../v1_8/internal/EnumPlatformAgent.java | 5 +- .../v1_8/internal/EnumPlatformOS.java | 6 + .../v1_8/internal/EnumTouchEvent.java | 43 + .../v1_8/internal/EnumWebViewContentMode.java | 20 + .../v1_8/internal/GLObjectMap.java | 7 + .../v1_8/internal/GamepadConstants.java | 134 + .../v1_8/internal/IClientConfigAdapter.java | 22 +- .../internal/IClientConfigAdapterHooks.java | 2 + .../v1_8/internal/IEaglerFilesystem.java | 46 + .../v1_8/internal/IServerQuery.java | 12 +- .../v1_8/internal/IWebSocketClient.java | 62 + .../v1_8/internal/IWebSocketFrame.java} | 28 +- .../v1_8/internal/QueryResponse.java | 4 +- .../v1_8/internal/RamdiskFilesystemImpl.java | 131 + .../v1_8/internal/ScreenRecordParameters.java | 37 + .../VFSFilenameIteratorNonRecursive.java | 47 + .../v1_8/internal/WebViewOptions.java | 67 + .../v1_8/internal/buffer/Buffer.java | 8 +- .../v1_8/internal/buffer/ByteBuffer.java | 12 +- .../buffer/EaglerBufferInputStream.java | 1 - .../v1_8/internal/buffer/FloatBuffer.java | 12 +- .../v1_8/internal/buffer/IntBuffer.java | 12 +- .../v1_8/internal/buffer/ShortBuffer.java | 12 +- .../vfs2/VFSFilenameIteratorImpl.java | 7 +- .../vfs2/VFSListFilesIteratorImpl.java | 7 +- .../v1_8/internal/vfs2/VFile2.java | 85 +- .../v1_8/internal/vfs2/VFileOutputStream.java | 3 +- .../v1_8/json/JSONTypeProvider.java | 6 +- .../v1_8/json/impl/SoundMapDeserializer.java | 2 +- .../eaglercraft/v1_8/log4j/LogManager.java | 2 +- .../eaglercraft/v1_8/log4j/Logger.java | 2 +- .../v1_8/minecraft/ChunkUpdateManager.java | 13 +- .../minecraft/EaglerFolderResourcePack.java | 2 +- .../v1_8/minecraft/EaglerFontRenderer.java | 19 +- .../minecraft/EaglerTextureAtlasSprite.java | 11 +- .../v1_8/minecraft/EnumInputEvent.java | 20 + .../v1_8/minecraft/FontMappingHelper.java | 525 ++++ .../minecraft/GuiButtonWithStupidIcons.java | 132 + .../GuiScreenGenericErrorMessage.java | 6 +- .../minecraft/GuiScreenVisualViewport.java | 144 + .../v1_8/minecraft/TextureAnimationCache.java | 6 +- .../CachedNotifBadgeTexture.java | 46 + .../v1_8/notifications/ClickEventZone.java | 41 + .../notifications/GuiButtonNotifBell.java | 69 + .../notifications/GuiScreenNotifications.java | 172 ++ .../notifications/GuiSlotNotifications.java | 338 +++ .../v1_8/notifications/NotificationBadge.java | 171 ++ .../v1_8/notifications/NotificationIcon.java | 51 + .../ServerNotificationManager.java | 277 ++ .../ServerNotificationRenderer.java | 539 ++++ .../eaglercraft/v1_8/opengl/DrawUtils.java | 58 +- .../v1_8/opengl/EaglerMeshLoader.java | 22 +- .../v1_8/opengl/EaglercraftGPU.java | 457 +++- .../v1_8/opengl/EffectPipelineFXAA.java | 38 +- .../v1_8/opengl/FixedFunctionPipeline.java | 90 +- .../v1_8/opengl/FixedFunctionShader.java | 1 - .../eaglercraft/v1_8/opengl/GLSLHeader.java | 99 + .../v1_8/opengl/GameOverlayFramebuffer.java | 45 +- .../v1_8/opengl/GlStateManager.java | 31 +- .../eaglercraft/v1_8/opengl/ImageData.java | 50 + .../v1_8/opengl/InstancedFontRenderer.java | 122 +- .../opengl/InstancedParticleRenderer.java | 101 +- .../v1_8/opengl/RealOpenGLEnums.java | 2 +- .../v1_8/opengl/SoftGLBufferArray.java | 225 ++ .../v1_8/opengl/SoftGLBufferState.java | 31 + .../v1_8/opengl/SpriteLevelMixer.java | 38 +- .../eaglercraft/v1_8/opengl/StreamBuffer.java | 6 +- .../v1_8/opengl/TextureCopyUtil.java | 123 +- .../v1_8/opengl/TextureFormatHelper.java | 81 + .../v1_8/opengl/VSHInputLayoutParser.java | 91 + .../v1_8/opengl/WorldRenderer.java | 13 +- .../opengl/ext/deferred/BlockVertexIDs.java | 2 +- .../ext/deferred/CloudRenderWorker.java | 12 +- .../ext/deferred/DebugFramebufferView.java | 15 +- .../ext/deferred/DeferredStateManager.java | 4 +- .../ext/deferred/DynamicLightInstance.java | 4 +- .../ext/deferred/DynamicLightManager.java | 8 +- .../ext/deferred/EaglerDeferredPipeline.java | 184 +- .../ForwardRenderCallbackHandler.java | 2 +- .../ext/deferred/LensFlareMeshRenderer.java | 20 +- .../opengl/ext/deferred/ShaderPackInfo.java | 2 +- .../ext/deferred/gui/GuiShaderConfig.java | 5 + .../ext/deferred/gui/GuiShaderConfigList.java | 9 +- .../PipelineShaderAccelParticleForward.java | 2 +- .../program/PipelineShaderGBufferCombine.java | 2 +- .../program/PipelineShaderGBufferFog.java | 2 +- .../program/PipelineShaderLightingPoint.java | 2 +- .../program/PipelineShaderLightingSun.java | 2 +- .../PipelineShaderPostExposureAvg.java | 2 +- .../program/PipelineShaderReprojControl.java | 2 +- .../program/PipelineShaderShadowsSun.java | 2 +- .../program/PipelineShaderSkyboxRender.java | 2 +- .../ext/deferred/program/ShaderCompiler.java | 4 +- .../ext/deferred/program/ShaderSource.java | 2 +- .../texture/EaglerTextureAtlasSpritePBR.java | 3 +- .../ext/deferred/texture/EmissiveItems.java | 2 +- .../texture/PBRMaterialConstants.java | 2 +- .../DynamicLightBucketLoader.java | 163 +- .../DynamicLightsStateManager.java | 22 +- .../GuiScreenContentWarning.java | 63 + .../LookAlikeUnicodeConv.java | 1028 ++++++++ .../profanity_filter/ProfanityFilter.java | 534 ++++ .../eaglercraft/v1_8/profile/CapePackets.java | 48 - .../v1_8/profile/EaglerProfile.java | 110 +- .../v1_8/profile/EaglerSkinTexture.java | 26 +- .../v1_8/profile/GuiAuthenticationScreen.java | 15 +- .../v1_8/profile/GuiScreenEditCape.java | 9 +- .../v1_8/profile/GuiScreenEditProfile.java | 21 +- .../v1_8/profile/GuiScreenImportProfile.java | 4 +- .../v1_8/profile/RenderHighPoly.java | 3 +- .../v1_8/profile/ServerCapeCache.java | 63 +- .../v1_8/profile/ServerSkinCache.java | 80 +- .../eaglercraft/v1_8/profile/SkinModel.java | 2 +- .../eaglercraft/v1_8/profile/SkinPackets.java | 100 +- .../v1_8/profile/SkinPreviewRenderer.java | 3 +- .../recording/EnumScreenRecordingCodec.java | 152 ++ .../recording/GuiScreenRecordingNote.java | 52 + .../recording/GuiScreenRecordingSettings.java | 201 ++ .../v1_8/recording/GuiScreenSelectCodec.java | 92 + .../v1_8/recording/GuiSlotSelectCodec.java | 58 + .../recording/ScreenRecordingController.java | 99 + .../v1_8/socket/ConnectionHandshake.java | 196 +- .../socket/EaglercraftNetworkManager.java | 120 +- .../v1_8/socket/GuiHandshakeApprove.java | 2 +- .../v1_8/socket/RateLimitTracker.java | 14 +- .../v1_8/socket/ServerQueryDispatch.java | 4 +- .../v1_8/socket/ServerQueryImpl.java} | 102 +- .../v1_8/socket/WebSocketNetworkManager.java | 152 ++ .../client/ClientV3MessageHandler.java | 130 + .../client/ClientV4MessageHandler.java | 222 ++ .../client/GameProtocolMessageController.java | 199 ++ .../client/IPluginMessageSendFunction.java | 24 + .../client/PacketBufferInputWrapper.java | 303 +++ .../client/PacketBufferOutputWrapper.java | 316 +++ .../v1_8/sp/SingleplayerServerController.java | 62 +- .../eaglercraft/v1_8/sp/SkullCommand.java | 9 +- .../sp/gui/GuiIntegratedServerStartup.java | 58 - .../v1_8/sp/gui/GuiScreenAddRelay.java | 13 + .../GuiScreenDemoIntegratedServerStartup.java | 43 +- .../sp/gui/GuiScreenIntegratedServerBusy.java | 10 +- .../gui/GuiScreenIntegratedServerCrashed.java | 4 +- .../gui/GuiScreenIntegratedServerFailed.java | 12 + .../gui/GuiScreenIntegratedServerStartup.java | 35 +- .../v1_8/sp/gui/GuiScreenLANConnect.java | 11 + .../v1_8/sp/gui/GuiScreenLANConnecting.java | 10 +- .../v1_8/sp/gui/GuiScreenNameWorldImport.java | 14 +- .../sp/gui/GuiScreenRAMDiskModeDetected.java | 55 + .../v1_8/sp/gui/GuiScreenRelay.java | 12 +- .../gui/GuiScreenSingleplayerConnecting.java | 18 +- .../v1_8/sp/gui/GuiShareToLan.java | 12 + .../eaglercraft/v1_8/sp/gui/GuiSlider2.java | 36 +- .../v1_8/sp/ipc/IPCPacket14StringList.java | 6 +- .../v1_8/sp/ipc/IPCPacket16NBTList.java | 6 +- .../v1_8/sp/ipc/IPCPacket17ConfigureLAN.java | 2 +- ...age.java => IPCPacket1ALoggerMessage.java} | 10 +- ...ing.java => IPCPacket1BEnableLogging.java} | 8 +- .../v1_8/sp/ipc/IPCPacket1CIssueDetected.java | 57 + .../v1_8/sp/ipc/IPCPacketManager.java | 7 +- .../v1_8/sp/lan/LANClientNetworkManager.java | 60 +- .../v1_8/sp/lan/LANClientPeer.java | 21 +- .../v1_8/sp/lan/LANServerController.java | 54 +- .../v1_8/sp/lan/LANServerList.java | 18 +- .../v1_8/sp/relay/RelayLoggerImpl.java | 54 + .../v1_8/sp/relay/RelayManager.java | 28 +- .../eaglercraft/v1_8/sp/relay/RelayQuery.java | 1 + .../v1_8/sp/relay/RelayQueryImpl.java | 225 ++ .../sp/relay/RelayQueryRateLimitDummy.java | 75 + .../v1_8/sp/relay/RelayServer.java | 36 +- .../sp/relay/RelayServerRateLimitTracker.java | 98 + .../v1_8/sp/relay/RelayServerSocket.java | 9 +- .../v1_8/sp/relay/RelayServerSocketImpl.java | 173 ++ .../RelayServerSocketRateLimitDummy.java | 80 + .../v1_8/sp/relay/RelayWorldsQuery.java | 5 +- .../v1_8/sp/relay/RelayWorldsQueryImpl.java | 197 ++ .../relay/RelayWorldsQueryRateLimitDummy.java | 64 + .../v1_8/sp/relay/pkt/ICEServerSet.java | 55 - .../sp/relay/pkt/IPacket01ICEServers.java | 53 - .../v1_8/sp/server/EaglerChunkLoader.java | 4 +- .../server/EaglerIntegratedServerWorker.java | 49 +- .../v1_8/sp/server/EaglerMinecraftServer.java | 21 +- .../v1_8/sp/server/EaglerSaveFormat.java | 20 +- .../v1_8/sp/server/EaglerSaveHandler.java | 2 +- .../eaglercraft/v1_8/sp/server/WorldsDB.java | 32 + .../v1_8/sp/server/export/EPKCompiler.java | 97 +- .../sp/server/export/WorldConverterEPK.java | 5 +- .../sp/server/export/WorldConverterMCA.java | 25 +- .../v1_8/sp/server/skins/CustomSkullData.java | 29 +- .../server/skins/IntegratedCapePackets.java | 67 +- .../server/skins/IntegratedCapeService.java | 27 +- .../server/skins/IntegratedSkinPackets.java | 208 +- .../server/skins/IntegratedSkinService.java | 59 +- .../IntegratedServerPlayerNetworkManager.java | 5 +- .../protocol/ServerV3MessageHandler.java | 90 + .../protocol/ServerV4MessageHandler.java | 104 + .../server/voice/IntegratedVoiceService.java | 149 +- .../voice/IntegratedVoiceSignalPackets.java | 198 -- .../socket/NetHandlerSingleplayerLogin.java | 22 +- .../v1_8/touch_gui/EnumTouchControl.java | 579 ++++ .../v1_8/touch_gui/EnumTouchControlPos.java | 20 + .../v1_8/touch_gui/EnumTouchLayoutState.java | 28 + .../v1_8/touch_gui/TouchControlInput.java | 27 + .../v1_8/touch_gui/TouchControls.java | 164 ++ .../v1_8/touch_gui/TouchOverlayRenderer.java | 197 ++ .../v1_8/update/GuiUpdateDownloadSuccess.java | 60 + .../v1_8/update/GuiUpdateInstallOptions.java | 84 + .../v1_8/update/GuiUpdateVersionList.java | 13 +- .../v1_8/update/GuiUpdateVersionSlot.java | 5 +- .../v1_8/update/RelayUpdateChecker.java | 10 +- .../v1_8/update/UpdateDataObj.java | 28 + .../v1_8/update/UpdateResultObj.java | 48 + .../v1_8/update/UpdateService.java | 23 +- .../eaglercraft/v1_8/voice/ExpiringSet.java | 6 +- .../eaglercraft/v1_8/voice/GuiVoiceMenu.java | 60 +- .../v1_8/voice/GuiVoiceOverlay.java | 11 +- .../v1_8/voice/VoiceClientController.java | 70 +- .../v1_8/voice/VoiceSignalPackets.java | 142 - .../v1_8/voice/VoiceTagRenderer.java | 2 +- .../v1_8/webview/GuiScreenPhishingWaring.java | 104 + .../webview/GuiScreenRecieveServerInfo.java | 203 ++ .../v1_8/webview/GuiScreenServerInfo.java | 128 + .../webview/GuiScreenServerInfoDesktop.java | 92 + .../v1_8/webview/PermissionsCache.java | 64 + .../v1_8/webview/ServerInfoCache.java | 130 + .../webview/WebViewOverlayController.java | 92 + .../java/net/minecraft/profiler/Profiler.java | 194 -- src/main/java/org/json/JSONArray.java | 330 ++- src/main/java/org/json/JSONObject.java | 425 ++- .../org/json/JSONParserConfiguration.java | 26 + src/main/java/org/json/JSONPointer.java | 12 + .../java/org/json/JSONPointerException.java | 11 + .../java/org/json/JSONPropertyIgnore.java | 6 +- src/main/java/org/json/JSONPropertyName.java | 7 +- src/main/java/org/json/JSONString.java | 1 + src/main/java/org/json/JSONTokener.java | 45 +- .../java/org/json/ParserConfiguration.java | 126 + .../protocol/GamePacketInputBuffer.java | 44 + .../protocol/GamePacketOutputBuffer.java | 61 + .../protocol/GamePluginMessageConstants.java | 52 + .../protocol/GamePluginMessageProtocol.java | 230 ++ .../protocol/pkt/GameMessageHandler.java | 207 ++ .../protocol/pkt/GameMessagePacket.java | 33 + .../protocol/pkt/WrongPacketException.java | 24 + .../pkt/client/CPacketGetOtherCapeEAG.java | 60 + .../CPacketGetOtherClientUUIDV4EAG.java | 64 + .../pkt/client/CPacketGetOtherSkinEAG.java | 60 + .../pkt/client/CPacketGetSkinByURLEAG.java | 64 + .../pkt/client/CPacketInstallSkinSPEAG.java | 58 + .../client/CPacketRequestServerInfoV4EAG.java | 60 + .../client/CPacketVoiceSignalConnectEAG.java | 48 + .../pkt/client/CPacketVoiceSignalDescEAG.java | 80 + ...CPacketVoiceSignalDisconnectPeerV4EAG.java | 60 + .../CPacketVoiceSignalDisconnectV3EAG.java | 69 + .../CPacketVoiceSignalDisconnectV4EAG.java | 48 + .../pkt/client/CPacketVoiceSignalICEEAG.java | 80 + .../client/CPacketVoiceSignalRequestEAG.java | 60 + .../client/CPacketWebViewMessageEnV4EAG.java | 71 + .../client/CPacketWebViewMessageV4EAG.java | 74 + .../SPacketCustomizePauseMenuV4EAG.java | 193 ++ .../pkt/server/SPacketEnableFNAWSkinsEAG.java | 60 + .../SPacketForceClientCapeCustomV4EAG.java | 60 + .../SPacketForceClientCapePresetV4EAG.java | 56 + .../SPacketForceClientSkinCustomV4EAG.java | 64 + .../SPacketForceClientSkinPresetV4EAG.java | 56 + .../SPacketInvalidatePlayerCacheV4EAG.java | 114 + .../server/SPacketNotifBadgeHideV4EAG.java | 60 + .../server/SPacketNotifBadgeShowV4EAG.java | 172 ++ .../SPacketNotifIconsRegisterV4EAG.java | 111 + .../server/SPacketNotifIconsReleaseV4EAG.java | 92 + .../pkt/server/SPacketOtherCapeCustomEAG.java | 68 + .../pkt/server/SPacketOtherCapePresetEAG.java | 64 + .../SPacketOtherPlayerClientUUIDV4EAG.java | 64 + .../server/SPacketOtherSkinCustomV3EAG.java | 72 + .../server/SPacketOtherSkinCustomV4EAG.java | 72 + .../pkt/server/SPacketOtherSkinPresetEAG.java | 64 + .../server/SPacketRedirectClientV4EAG.java | 56 + .../SPacketServerInfoDataChunkV4EAG.java | 79 + .../server/SPacketSetServerCookieV4EAG.java | 85 + .../pkt/server/SPacketUnforceClientV4EAG.java | 63 + .../pkt/server/SPacketUpdateCertEAG.java | 58 + .../server/SPacketVoiceSignalAllowedEAG.java | 79 + ...PacketVoiceSignalConnectAnnounceV4EAG.java | 60 + .../SPacketVoiceSignalConnectV3EAG.java | 73 + .../SPacketVoiceSignalConnectV4EAG.java | 64 + .../pkt/server/SPacketVoiceSignalDescEAG.java | 73 + .../SPacketVoiceSignalDisconnectPeerEAG.java | 60 + .../server/SPacketVoiceSignalGlobalEAG.java | 110 + .../pkt/server/SPacketVoiceSignalICEEAG.java | 73 + .../server/SPacketWebViewMessageV4EAG.java | 74 + .../socket/protocol/util/PacketImageData.java | 79 + .../util/ReusableByteArrayInputStream.java | 80 + .../util/ReusableByteArrayOutputStream.java | 81 + .../protocol/util/SimpleInputBufferImpl.java | 209 ++ .../protocol/util/SimpleOutputBufferImpl.java | 107 + .../protocol/util/SkinPacketVersionCache.java | 360 +++ .../v1_8/sp/relay/pkt/IRelayLogger.java | 30 + .../v1_8/sp/relay/pkt/RelayPacket.java} | 136 +- .../sp/relay/pkt/RelayPacket00Handshake.java} | 12 +- .../sp/relay/pkt/RelayPacket01ICEServers.java | 105 + .../sp/relay/pkt/RelayPacket02NewClient.java} | 18 +- .../relay/pkt/RelayPacket03ICECandidate.java} | 31 +- .../relay/pkt/RelayPacket04Description.java} | 31 +- .../pkt/RelayPacket05ClientSuccess.java} | 8 +- .../pkt/RelayPacket06ClientFailure.java} | 19 +- .../relay/pkt/RelayPacket07LocalWorlds.java} | 48 +- .../v1_8/sp/relay/pkt/RelayPacket69Pong.java} | 19 +- .../pkt/RelayPacket70SpecialUpdate.java} | 6 +- .../pkt/RelayPacketFEDisconnectClient.java} | 14 +- .../sp/relay/pkt/RelayPacketFFErrorCode.java} | 22 +- .../v1_8/boot_menu/teavm/BootMenuAssets.java | 35 + .../boot_menu/teavm/BootMenuConstants.java | 53 + .../v1_8/boot_menu/teavm/BootMenuDOM.java | 203 ++ .../boot_menu/teavm/BootMenuDataManager.java | 464 ++++ .../boot_menu/teavm/BootMenuDatastore.java | 362 +++ .../boot_menu/teavm/BootMenuEntryPoint.java | 178 ++ .../teavm/BootMenuFatOfflineLoader.java | 93 + .../v1_8/boot_menu/teavm/BootMenuMain.java | 304 +++ .../boot_menu/teavm/BootMenuMetadata.java | 224 ++ .../boot_menu/teavm/BootableClientEntry.java | 366 +++ .../teavm/CheckboxListController.java | 108 + .../boot_menu/teavm/ClientBootFactory.java | 725 +++++ .../v1_8/boot_menu/teavm/ClientDataEntry.java | 152 ++ .../teavm/ConfirmationPopupController.java | 191 ++ .../boot_menu/teavm/EPKClientFactory.java | 100 + .../v1_8/boot_menu/teavm/EPKClientParser.java | 136 + .../v1_8/boot_menu/teavm/EPKDataEntry.java | 30 + .../boot_menu/teavm/EnumClientFormatType.java | 67 + .../boot_menu/teavm/EnumClientLaunchType.java | 86 + .../boot_menu/teavm/EnumOfflineParseType.java | 53 + .../teavm/FatOfflineDownloadFactory.java | 207 ++ .../teavm/IBootMenuConfigAdapter.java | 30 + .../boot_menu/teavm/IProgressMsgCallback.java | 22 + .../boot_menu/teavm/InputPopupController.java | 111 + .../v1_8/boot_menu/teavm/KeyCodes.java | 34 + .../boot_menu/teavm/LaunchConfigEntry.java | 143 + .../teavm/MenuPopupStateConfirmation.java | 141 + .../teavm/MenuPopupStateEditInteger.java | 114 + .../teavm/MenuPopupStateEditString.java | 109 + .../teavm/MenuPopupStateFileChooser.java | 106 + .../teavm/MenuPopupStateLoading.java | 98 + .../teavm/MenuPopupStateSelection.java | 141 + .../v1_8/boot_menu/teavm/MenuState.java | 135 + .../v1_8/boot_menu/teavm/MenuStateBoot.java | 583 ++++ .../teavm/MenuStateClientMultiSelect.java | 137 + .../teavm/MenuStateEditBootOrder.java | 268 ++ .../teavm/MenuStateEditingLaunch.java | 674 +++++ .../boot_menu/teavm/MenuStateEnterSetup.java | 261 ++ .../teavm/MenuStateImportMultiSelect.java | 144 + .../teavm/MenuStateSelectExportClients.java | 151 ++ .../teavm/OfflineDownloadFactory.java | 613 +++++ .../teavm/OfflineDownloadParser.java | 990 +++++++ .../boot_menu/teavm/RelayRandomizeHelper.java | 71 + .../teavm/SelectionListController.java | 240 ++ .../boot_menu/teavm/SignatureCheckHelper.java | 48 + .../teavm/SignedClientInstaller.java | 77 + .../v1_8/boot_menu/teavm/TemplateLoader.java | 77 + .../v1_8/boot_menu/teavm/TemplateParser.java | 260 ++ .../teavm/UnsignedBootException.java | 23 + src/teavm/java/com/jcraft/jogg/Buffer.java | 293 +++ src/teavm/java/com/jcraft/jogg/Packet.java | 45 + src/teavm/java/com/jcraft/jogg/Page.java | 130 + .../java/com/jcraft/jogg/StreamState.java | 538 ++++ src/teavm/java/com/jcraft/jogg/SyncState.java | 273 ++ src/teavm/java/com/jcraft/jorbis/Block.java | 126 + .../java/com/jcraft/jorbis/CodeBook.java | 471 ++++ src/teavm/java/com/jcraft/jorbis/Comment.java | 240 ++ src/teavm/java/com/jcraft/jorbis/Drft.java | 1319 ++++++++++ .../java/com/jcraft/jorbis/DspState.java | 369 +++ src/teavm/java/com/jcraft/jorbis/Floor0.java | 332 +++ src/teavm/java/com/jcraft/jorbis/Floor1.java | 584 +++++ .../java/com/jcraft/jorbis/FuncFloor.java | 52 + .../java/com/jcraft/jorbis/FuncMapping.java | 45 + .../java/com/jcraft/jorbis/FuncResidue.java | 45 + .../java/com/jcraft/jorbis/FuncTime.java | 45 + src/teavm/java/com/jcraft/jorbis/Info.java | 468 ++++ .../java/com/jcraft/jorbis/InfoMode.java | 34 + .../com/jcraft/jorbis/JOrbisException.java | 40 + src/teavm/java/com/jcraft/jorbis/Lookup.java | 122 + src/teavm/java/com/jcraft/jorbis/Lpc.java | 185 ++ src/teavm/java/com/jcraft/jorbis/Lsp.java | 102 + .../java/com/jcraft/jorbis/Mapping0.java | 361 +++ src/teavm/java/com/jcraft/jorbis/Mdct.java | 249 ++ src/teavm/java/com/jcraft/jorbis/PsyInfo.java | 74 + src/teavm/java/com/jcraft/jorbis/PsyLook.java | 42 + .../java/com/jcraft/jorbis/Residue0.java | 326 +++ .../java/com/jcraft/jorbis/Residue1.java | 44 + .../java/com/jcraft/jorbis/Residue2.java | 41 + .../com/jcraft/jorbis/StaticCodeBook.java | 436 +++ src/teavm/java/com/jcraft/jorbis/Time0.java | 52 + src/teavm/java/com/jcraft/jorbis/Util.java | 30 + .../java/com/jcraft/jorbis/VorbisFile.java | 1348 ++++++++++ .../v1_8/internal/OpenGLObjects.java | 113 +- .../v1_8/internal/PlatformApplication.java | 307 ++- .../v1_8/internal/PlatformAssets.java | 66 +- .../v1_8/internal/PlatformAudio.java | 315 ++- .../v1_8/internal/PlatformFilesystem.java | 331 +-- .../v1_8/internal/PlatformInput.java | 2154 +++++++++++++-- .../v1_8/internal/PlatformNetworking.java | 182 +- .../v1_8/internal/PlatformOpenGL.java | 337 ++- .../v1_8/internal/PlatformRuntime.java | 1028 ++++++-- .../v1_8/internal/PlatformScreenRecord.java | 286 ++ .../v1_8/internal/PlatformUpdateSvc.java | 43 +- .../v1_8/internal/PlatformVoiceClient.java | 265 +- .../v1_8/internal/PlatformWebRTC.java | 1009 ++----- .../v1_8/internal/PlatformWebView.java | 639 +++++ .../buffer/EaglerArrayByteBuffer.java | 118 +- .../buffer/EaglerArrayFloatBuffer.java | 87 +- .../internal/buffer/EaglerArrayIntBuffer.java | 87 +- .../buffer/EaglerArrayShortBuffer.java | 87 +- .../teavm/AdvancedHTMLIFrameElement.java | 120 + .../teavm/ArrayBufferInputStream.java | 37 +- .../internal/teavm/Base64VarIntArray.java | 129 + .../v1_8/internal/teavm/ClassesJSLocator.java | 94 + .../v1_8/internal/teavm/ClientMain.java | 334 ++- .../internal/teavm/DebugConsoleWindow.java | 91 +- .../v1_8/internal/teavm/ES6ShimStatus.java | 82 + .../v1_8/internal/teavm/ES6ShimStatusJS.java | 52 + .../v1_8/internal/teavm/EarlyLoadScreen.java | 220 +- .../internal/teavm/EnumES6ShimStatus.java | 56 + .../v1_8/internal/teavm/EnumES6Shims.java | 58 + .../internal/teavm/FixWebMDurationJS.java | 20 + .../internal/teavm/IFrameSafetyException.java | 35 + .../internal/teavm/ImmediateContinue.java | 26 + .../internal/teavm/IndexedDBFilesystem.java | 365 +++ .../v1_8/internal/teavm/InputEvent.java | 29 + .../teavm/JOrbisAudioBufferDecoder.java | 420 +++ .../teavm/LegacyKeycodeTranslator.java | 328 +++ .../v1_8/internal/teavm/MessageChannel.java | 37 + .../v1_8/internal/teavm/OffsetTouch.java | 43 + .../v1_8/internal/teavm/PCMToWAVLoader.java | 118 + .../v1_8/internal/teavm/SortedTouchEvent.java | 85 + .../internal/teavm/TeaVMBlobURLHandle.java | 28 + .../internal/teavm/TeaVMBlobURLManager.java | 188 ++ .../teavm/TeaVMClientConfigAdapter.java | 243 +- .../teavm/TeaVMClientConfigAdapterHooks.java | 19 + .../internal/teavm/TeaVMDataURLManager.java | 87 + .../teavm/TeaVMEnterBootMenuException.java | 20 + .../v1_8/internal/teavm/TeaVMFetchJS.java | 44 + .../teavm/TeaVMRuntimeDeobfuscator.java | 242 ++ .../internal/teavm/TeaVMUpdateThread.java | 20 +- .../v1_8/internal/teavm/TeaVMUtils.java | 320 +-- .../internal/teavm/TeaVMWebSocketClient.java | 125 + .../internal/teavm/TeaVMWebSocketFrame.java | 114 + .../v1_8/internal/teavm/Touch.java | 67 + .../v1_8/internal/teavm/TouchEvent.java | 44 + .../v1_8/internal/teavm/TouchList.java | 28 + .../v1_8/internal/teavm/VisualViewport.java | 45 + .../teavm/WebGLANGLEInstancedArrays.java | 28 + .../v1_8/internal/teavm/WebGLBackBuffer.java | 300 +++ .../teavm/WebGLOESVertexArrayObject.java | 28 + .../TeaVMRuntimeDeobfuscatorGenerator.java | 108 + .../generators/TeaVMUtilsUnwrapGenerator.java | 166 ++ .../teavm/opts/JSEaglercraftXOptsHooks.java | 3 + .../teavm/opts/JSEaglercraftXOptsRoot.java | 72 + .../teavm/opts/JSEaglercraftXOptsServer.java | 3 + .../internal/ClientPlatformSingleplayer.java | 179 +- .../internal/ServerPlatformSingleplayer.java | 207 +- .../internal/teavm/SingleThreadWorker.java | 44 + .../sp/server/internal/teavm/WorkerMain.java | 2 +- .../org/teavm/backend/javascript/long.js | 693 +++++ 2071 files changed, 65205 insertions(+), 8542 deletions(-) create mode 100755 CODE_STANDARDS.md create mode 100755 EAGLERCRAFTX_README.md create mode 100755 desktopRuntime/RTWebViewClient.html rename desktopRuntime/{libGLESv2.so => libGLESv2.so.2} (100%) create mode 100755 desktopRuntime/resources/assets/eagler/audioctx_test_ogg.dat create mode 100755 desktopRuntime/resources/assets/eagler/audioctx_test_wav16.dat create mode 100755 desktopRuntime/resources/assets/eagler/audioctx_test_wav32f.dat create mode 100755 desktopRuntime/resources/assets/eagler/boot_menu/boot_menu_markup.html create mode 100755 desktopRuntime/resources/assets/eagler/boot_menu/boot_menu_style.css create mode 100755 desktopRuntime/resources/assets/eagler/boot_menu/conf_template_eaglercraftX_1_8.json create mode 100755 desktopRuntime/resources/assets/eagler/boot_menu/conf_template_eaglercraftX_1_8_signed.json create mode 100755 desktopRuntime/resources/assets/eagler/boot_menu/conf_template_eaglercraft_1_5.json create mode 100755 desktopRuntime/resources/assets/eagler/boot_menu/conf_template_eaglercraft_1_5_legacy.json create mode 100755 desktopRuntime/resources/assets/eagler/boot_menu/conf_template_eaglercraft_b1_3.json create mode 100755 desktopRuntime/resources/assets/eagler/boot_menu/conf_template_peytonplayz585_a1_2_6.json create mode 100755 desktopRuntime/resources/assets/eagler/boot_menu/conf_template_peytonplayz585_b1_7_3.json create mode 100755 desktopRuntime/resources/assets/eagler/boot_menu/conf_template_peytonplayz585_indev.json create mode 100755 desktopRuntime/resources/assets/eagler/boot_menu/conf_template_standard_offline.json create mode 100755 desktopRuntime/resources/assets/eagler/boot_menu/meta_opts_templates.json create mode 100755 desktopRuntime/resources/assets/eagler/boot_menu/offline_template_eaglercraftX_1_8.html create mode 100755 desktopRuntime/resources/assets/eagler/boot_menu/offline_template_eaglercraftX_1_8_fat_offline.html create mode 100755 desktopRuntime/resources/assets/eagler/boot_menu/offline_template_eaglercraftX_1_8_fat_signed.html create mode 100755 desktopRuntime/resources/assets/eagler/boot_menu/offline_template_eaglercraftX_1_8_signed.html create mode 100755 desktopRuntime/resources/assets/eagler/boot_menu/offline_template_eaglercraft_1_5.html create mode 100755 desktopRuntime/resources/assets/eagler/boot_menu/offline_template_eaglercraft_1_5_legacy.html create mode 100755 desktopRuntime/resources/assets/eagler/boot_menu/offline_template_eaglercraft_b1_3.html create mode 100755 desktopRuntime/resources/assets/eagler/boot_menu/offline_template_peytonplayz585_a_b.html create mode 100755 desktopRuntime/resources/assets/eagler/boot_menu/offline_template_peytonplayz585_indev.html create mode 100755 desktopRuntime/resources/assets/eagler/boot_menu/offline_template_standard_offline.html create mode 100755 desktopRuntime/resources/assets/eagler/boot_menu/opts_template_eaglercraftX_1_8.txt create mode 100755 desktopRuntime/resources/assets/eagler/boot_menu/opts_template_eaglercraftX_1_8_demo.txt create mode 100755 desktopRuntime/resources/assets/eagler/boot_menu/opts_template_eaglercraftX_1_8_html5Cursors.txt create mode 100755 desktopRuntime/resources/assets/eagler/boot_menu/opts_template_eaglercraft_1_5.txt create mode 100755 desktopRuntime/resources/assets/eagler/boot_menu/opts_template_eaglercraft_1_5_legacy.txt create mode 100755 desktopRuntime/resources/assets/eagler/boot_menu/opts_template_eaglercraft_1_5_livestream.txt create mode 100755 desktopRuntime/resources/assets/eagler/boot_menu/opts_template_peytonplayz585_a1_2_6.txt create mode 100755 desktopRuntime/resources/assets/eagler/boot_menu/opts_template_peytonplayz585_b1_7_3.txt create mode 100755 desktopRuntime/resources/assets/eagler/boot_menu/web_cl_eagleiii_8x16.woff create mode 100755 desktopRuntime/resources/assets/eagler/glsl/gles2_compat.glsl create mode 100755 desktopRuntime/resources/assets/eagler/glsl/hw_fingerprint.fsh create mode 100755 desktopRuntime/resources/assets/eagler/gui/notif_bk_large.png create mode 100755 desktopRuntime/resources/assets/eagler/gui/touch_gui.png create mode 100755 desktopRuntime/resources/profanity_filter.wlist create mode 100755 javascript/ES6ShimScript.txt rename src/{main => game}/java/net/minecraft/block/Block.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockAir.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockAnvil.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockBanner.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockBarrier.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockBasePressurePlate.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockBeacon.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockBed.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockBookshelf.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockBreakable.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockBrewingStand.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockBush.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockButton.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockButtonStone.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockButtonWood.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockCactus.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockCake.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockCarpet.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockCarrot.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockCauldron.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockChest.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockClay.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockCocoa.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockColored.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockCommandBlock.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockCompressedPowered.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockContainer.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockCrops.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockDaylightDetector.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockDeadBush.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockDirectional.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockDirt.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockDispenser.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockDoor.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockDoublePlant.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockDoubleStoneSlab.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockDoubleStoneSlabNew.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockDoubleWoodSlab.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockDragonEgg.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockDropper.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockDynamicLiquid.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockEnchantmentTable.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockEndPortal.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockEndPortalFrame.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockEnderChest.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockEventData.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockFalling.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockFarmland.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockFence.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockFenceGate.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockFire.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockFlower.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockFlowerPot.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockFurnace.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockGlass.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockGlowstone.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockGrass.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockGravel.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockHalfStoneSlab.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockHalfStoneSlabNew.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockHalfWoodSlab.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockHardenedClay.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockHay.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockHopper.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockHugeMushroom.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockIce.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockJukebox.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockLadder.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockLeaves.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockLeavesBase.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockLever.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockLilyPad.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockLiquid.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockLog.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockMelon.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockMobSpawner.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockMushroom.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockMycelium.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockNetherBrick.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockNetherWart.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockNetherrack.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockNewLeaf.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockNewLog.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockNote.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockObsidian.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockOldLeaf.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockOldLog.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockOre.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockPackedIce.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockPane.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockPistonBase.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockPistonExtension.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockPistonMoving.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockPlanks.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockPortal.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockPotato.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockPressurePlate.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockPressurePlateWeighted.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockPrismarine.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockPumpkin.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockQuartz.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockRail.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockRailBase.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockRailDetector.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockRailPowered.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockRedFlower.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockRedSandstone.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockRedstoneComparator.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockRedstoneDiode.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockRedstoneLight.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockRedstoneOre.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockRedstoneRepeater.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockRedstoneTorch.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockRedstoneWire.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockReed.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockRotatedPillar.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockSand.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockSandStone.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockSapling.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockSeaLantern.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockSign.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockSilverfish.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockSkull.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockSlab.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockSlime.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockSnow.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockSnowBlock.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockSoulSand.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockSourceImpl.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockSponge.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockStainedGlass.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockStainedGlassPane.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockStairs.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockStandingSign.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockStaticLiquid.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockStem.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockStone.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockStoneBrick.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockStoneSlab.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockStoneSlabNew.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockTNT.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockTallGrass.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockTorch.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockTrapDoor.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockTripWire.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockTripWireHook.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockVine.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockWall.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockWallSign.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockWeb.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockWoodSlab.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockWorkbench.java (100%) rename src/{main => game}/java/net/minecraft/block/BlockYellowFlower.java (100%) rename src/{main => game}/java/net/minecraft/block/IGrowable.java (100%) rename src/{main => game}/java/net/minecraft/block/ITileEntityProvider.java (100%) rename src/{main => game}/java/net/minecraft/block/material/MapColor.java (100%) rename src/{main => game}/java/net/minecraft/block/material/Material.java (100%) rename src/{main => game}/java/net/minecraft/block/material/MaterialLiquid.java (100%) rename src/{main => game}/java/net/minecraft/block/material/MaterialLogic.java (100%) rename src/{main => game}/java/net/minecraft/block/material/MaterialPortal.java (100%) rename src/{main => game}/java/net/minecraft/block/material/MaterialTransparent.java (100%) rename src/{main => game}/java/net/minecraft/block/properties/IProperty.java (100%) rename src/{main => game}/java/net/minecraft/block/properties/PropertyBool.java (100%) rename src/{main => game}/java/net/minecraft/block/properties/PropertyDirection.java (100%) rename src/{main => game}/java/net/minecraft/block/properties/PropertyEnum.java (100%) rename src/{main => game}/java/net/minecraft/block/properties/PropertyHelper.java (100%) rename src/{main => game}/java/net/minecraft/block/properties/PropertyInteger.java (100%) rename src/{main => game}/java/net/minecraft/block/state/BlockPistonStructureHelper.java (100%) rename src/{main => game}/java/net/minecraft/block/state/BlockState.java (100%) rename src/{main => game}/java/net/minecraft/block/state/BlockStateBase.java (100%) rename src/{main => game}/java/net/minecraft/block/state/BlockWorldState.java (100%) rename src/{main => game}/java/net/minecraft/block/state/IBlockState.java (100%) rename src/{main => game}/java/net/minecraft/block/state/pattern/BlockHelper.java (100%) rename src/{main => game}/java/net/minecraft/block/state/pattern/BlockPattern.java (100%) rename src/{main => game}/java/net/minecraft/block/state/pattern/BlockStateHelper.java (100%) rename src/{main => game}/java/net/minecraft/block/state/pattern/FactoryBlockPattern.java (100%) rename src/{main => game}/java/net/minecraft/client/ClientBrandRetriever.java (100%) rename src/{main => game}/java/net/minecraft/client/LoadingScreenRenderer.java (90%) rename src/{main => game}/java/net/minecraft/client/Minecraft.java (80%) rename src/{main => game}/java/net/minecraft/client/audio/GuardianSound.java (100%) rename src/{main => game}/java/net/minecraft/client/audio/ISound.java (100%) rename src/{main => game}/java/net/minecraft/client/audio/ISoundEventAccessor.java (100%) rename src/{main => game}/java/net/minecraft/client/audio/ITickableSound.java (100%) rename src/{main => game}/java/net/minecraft/client/audio/MovingSound.java (100%) rename src/{main => game}/java/net/minecraft/client/audio/MovingSoundMinecart.java (100%) rename src/{main => game}/java/net/minecraft/client/audio/MovingSoundMinecartRiding.java (100%) rename src/{main => game}/java/net/minecraft/client/audio/MusicTicker.java (100%) rename src/{main => game}/java/net/minecraft/client/audio/PositionedSound.java (100%) rename src/{main => game}/java/net/minecraft/client/audio/PositionedSoundRecord.java (100%) rename src/{main => game}/java/net/minecraft/client/audio/SoundCategory.java (95%) rename src/{main => game}/java/net/minecraft/client/audio/SoundEventAccessor.java (100%) rename src/{main => game}/java/net/minecraft/client/audio/SoundEventAccessorComposite.java (100%) rename src/{main => game}/java/net/minecraft/client/audio/SoundHandler.java (95%) rename src/{main => game}/java/net/minecraft/client/audio/SoundList.java (100%) rename src/{main => game}/java/net/minecraft/client/audio/SoundListSerializer.java (100%) rename src/{main => game}/java/net/minecraft/client/audio/SoundPoolEntry.java (100%) rename src/{main => game}/java/net/minecraft/client/audio/SoundRegistry.java (100%) rename src/{main => game}/java/net/minecraft/client/entity/AbstractClientPlayer.java (75%) rename src/{main => game}/java/net/minecraft/client/entity/EntityOtherPlayerMP.java (100%) rename src/{main => game}/java/net/minecraft/client/entity/EntityPlayerSP.java (96%) rename src/{main => game}/java/net/minecraft/client/gui/ChatLine.java (77%) rename src/{main => game}/java/net/minecraft/client/gui/FontRenderer.java (78%) rename src/{main => game}/java/net/minecraft/client/gui/Gui.java (100%) rename src/{main => game}/java/net/minecraft/client/gui/GuiButton.java (96%) rename src/{main => game}/java/net/minecraft/client/gui/GuiButtonLanguage.java (100%) rename src/{main => game}/java/net/minecraft/client/gui/GuiChat.java (83%) rename src/{main => game}/java/net/minecraft/client/gui/GuiCommandBlock.java (92%) rename src/{main => game}/java/net/minecraft/client/gui/GuiConfirmOpenLink.java (100%) rename src/{main => game}/java/net/minecraft/client/gui/GuiControls.java (94%) rename src/{main => game}/java/net/minecraft/client/gui/GuiCreateFlatWorld.java (96%) rename src/{main => game}/java/net/minecraft/client/gui/GuiCreateWorld.java (95%) rename src/{main => game}/java/net/minecraft/client/gui/GuiCustomizeSkin.java (100%) rename src/{main => game}/java/net/minecraft/client/gui/GuiCustomizeWorldScreen.java (96%) rename src/{main => game}/java/net/minecraft/client/gui/GuiDisconnected.java (100%) rename src/{main => game}/java/net/minecraft/client/gui/GuiDownloadTerrain.java (95%) rename src/{main => game}/java/net/minecraft/client/gui/GuiEnchantment.java (96%) rename src/{main => game}/java/net/minecraft/client/gui/GuiErrorScreen.java (100%) rename src/{main => game}/java/net/minecraft/client/gui/GuiFlatPresets.java (94%) rename src/{main => game}/java/net/minecraft/client/gui/GuiGameOver.java (100%) rename src/{main => game}/java/net/minecraft/client/gui/GuiHopper.java (100%) rename src/{main => game}/java/net/minecraft/client/gui/GuiIngame.java (77%) rename src/{main => game}/java/net/minecraft/client/gui/GuiIngameMenu.java (59%) rename src/{main => game}/java/net/minecraft/client/gui/GuiKeyBindingList.java (85%) rename src/{main => game}/java/net/minecraft/client/gui/GuiLabel.java (100%) rename src/{main => game}/java/net/minecraft/client/gui/GuiLanguage.java (94%) rename src/{main => game}/java/net/minecraft/client/gui/GuiListButton.java (100%) rename src/{main => game}/java/net/minecraft/client/gui/GuiListExtended.java (100%) rename src/{main => game}/java/net/minecraft/client/gui/GuiLockIconButton.java (100%) rename src/{main => game}/java/net/minecraft/client/gui/GuiMainMenu.java (97%) rename src/{main => game}/java/net/minecraft/client/gui/GuiMemoryErrorScreen.java (100%) rename src/{main => game}/java/net/minecraft/client/gui/GuiMerchant.java (100%) rename src/{main => game}/java/net/minecraft/client/gui/GuiMultiplayer.java (93%) rename src/{main => game}/java/net/minecraft/client/gui/GuiNewChat.java (96%) rename src/{main => game}/java/net/minecraft/client/gui/GuiOptionButton.java (100%) rename src/{main => game}/java/net/minecraft/client/gui/GuiOptionSlider.java (94%) rename src/{main => game}/java/net/minecraft/client/gui/GuiOptions.java (78%) rename src/{main => game}/java/net/minecraft/client/gui/GuiOptionsRowList.java (68%) rename src/{main => game}/java/net/minecraft/client/gui/GuiOverlayDebug.java (93%) rename src/{main => game}/java/net/minecraft/client/gui/GuiPageButtonList.java (90%) rename src/{main => game}/java/net/minecraft/client/gui/GuiPlayerTabOverlay.java (96%) rename src/{main => game}/java/net/minecraft/client/gui/GuiRenameWorld.java (92%) rename src/{main => game}/java/net/minecraft/client/gui/GuiRepair.java (94%) rename src/{main => game}/java/net/minecraft/client/gui/GuiResourcePackAvailable.java (100%) rename src/{main => game}/java/net/minecraft/client/gui/GuiResourcePackList.java (100%) rename src/{main => game}/java/net/minecraft/client/gui/GuiResourcePackSelected.java (100%) rename src/{main => game}/java/net/minecraft/client/gui/GuiScreen.java (68%) rename src/{main => game}/java/net/minecraft/client/gui/GuiScreenAddServer.java (76%) rename src/{main => game}/java/net/minecraft/client/gui/GuiScreenBook.java (93%) rename src/{main => game}/java/net/minecraft/client/gui/GuiScreenCustomizePresets.java (95%) rename src/{main => game}/java/net/minecraft/client/gui/GuiScreenOptionsSounds.java (96%) rename src/{main => game}/java/net/minecraft/client/gui/GuiScreenResourcePacks.java (95%) rename src/{main => game}/java/net/minecraft/client/gui/GuiScreenServerList.java (92%) rename src/{main => game}/java/net/minecraft/client/gui/GuiScreenWorking.java (100%) rename src/{main => game}/java/net/minecraft/client/gui/GuiSelectWorld.java (92%) rename src/{main => game}/java/net/minecraft/client/gui/GuiSleepMP.java (100%) rename src/{main => game}/java/net/minecraft/client/gui/GuiSlider.java (95%) rename src/{main => game}/java/net/minecraft/client/gui/GuiSlot.java (92%) rename src/{main => game}/java/net/minecraft/client/gui/GuiSpectator.java (100%) rename src/{main => game}/java/net/minecraft/client/gui/GuiTextField.java (94%) rename src/{main => game}/java/net/minecraft/client/gui/GuiUtilRenderComponents.java (95%) rename src/{main => game}/java/net/minecraft/client/gui/GuiVideoSettings.java (71%) rename src/{main => game}/java/net/minecraft/client/gui/GuiWinGame.java (100%) rename src/{main => game}/java/net/minecraft/client/gui/GuiYesNo.java (100%) rename src/{main => game}/java/net/minecraft/client/gui/GuiYesNoCallback.java (100%) rename src/{main => game}/java/net/minecraft/client/gui/IProgressMeter.java (100%) rename src/{main => game}/java/net/minecraft/client/gui/MapItemRenderer.java (100%) rename src/{main => game}/java/net/minecraft/client/gui/ScaledResolution.java (91%) rename src/{main => game}/java/net/minecraft/client/gui/ScreenChatOptions.java (77%) rename src/{main => game}/java/net/minecraft/client/gui/ServerListEntryNormal.java (100%) rename src/{main => game}/java/net/minecraft/client/gui/ServerSelectionList.java (100%) rename src/{main => game}/java/net/minecraft/client/gui/achievement/GuiAchievement.java (96%) rename src/{main => game}/java/net/minecraft/client/gui/achievement/GuiAchievements.java (96%) rename src/{main => game}/java/net/minecraft/client/gui/achievement/GuiStats.java (96%) rename src/{main => game}/java/net/minecraft/client/gui/inventory/CreativeCrafting.java (100%) rename src/{main => game}/java/net/minecraft/client/gui/inventory/GuiBeacon.java (100%) rename src/{main => game}/java/net/minecraft/client/gui/inventory/GuiBrewingStand.java (100%) rename src/{main => game}/java/net/minecraft/client/gui/inventory/GuiChest.java (100%) rename src/{main => game}/java/net/minecraft/client/gui/inventory/GuiContainer.java (89%) rename src/{main => game}/java/net/minecraft/client/gui/inventory/GuiContainerCreative.java (93%) rename src/{main => game}/java/net/minecraft/client/gui/inventory/GuiCrafting.java (100%) rename src/{main => game}/java/net/minecraft/client/gui/inventory/GuiDispenser.java (100%) rename src/{main => game}/java/net/minecraft/client/gui/inventory/GuiEditSign.java (84%) rename src/{main => game}/java/net/minecraft/client/gui/inventory/GuiFurnace.java (100%) rename src/{main => game}/java/net/minecraft/client/gui/inventory/GuiInventory.java (100%) rename src/{main => game}/java/net/minecraft/client/gui/inventory/GuiScreenHorseInventory.java (100%) rename src/{main => game}/java/net/minecraft/client/gui/spectator/BaseSpectatorGroup.java (100%) rename src/{main => game}/java/net/minecraft/client/gui/spectator/ISpectatorMenuObject.java (100%) rename src/{main => game}/java/net/minecraft/client/gui/spectator/ISpectatorMenuRecipient.java (100%) rename src/{main => game}/java/net/minecraft/client/gui/spectator/ISpectatorMenuView.java (100%) rename src/{main => game}/java/net/minecraft/client/gui/spectator/PlayerMenuObject.java (100%) rename src/{main => game}/java/net/minecraft/client/gui/spectator/SpectatorMenu.java (100%) rename src/{main => game}/java/net/minecraft/client/gui/spectator/categories/SpectatorDetails.java (100%) rename src/{main => game}/java/net/minecraft/client/gui/spectator/categories/TeleportToPlayer.java (100%) rename src/{main => game}/java/net/minecraft/client/gui/spectator/categories/TeleportToTeam.java (100%) rename src/{main => game}/java/net/minecraft/client/main/GameConfiguration.java (100%) rename src/{main => game}/java/net/minecraft/client/main/Main.java (100%) rename src/{main => game}/java/net/minecraft/client/model/ModelArmorStand.java (100%) rename src/{main => game}/java/net/minecraft/client/model/ModelArmorStandArmor.java (100%) rename src/{main => game}/java/net/minecraft/client/model/ModelBanner.java (100%) rename src/{main => game}/java/net/minecraft/client/model/ModelBase.java (100%) rename src/{main => game}/java/net/minecraft/client/model/ModelBat.java (100%) rename src/{main => game}/java/net/minecraft/client/model/ModelBiped.java (100%) rename src/{main => game}/java/net/minecraft/client/model/ModelBlaze.java (100%) rename src/{main => game}/java/net/minecraft/client/model/ModelBoat.java (100%) rename src/{main => game}/java/net/minecraft/client/model/ModelBook.java (100%) rename src/{main => game}/java/net/minecraft/client/model/ModelBox.java (100%) rename src/{main => game}/java/net/minecraft/client/model/ModelChest.java (100%) rename src/{main => game}/java/net/minecraft/client/model/ModelChicken.java (100%) rename src/{main => game}/java/net/minecraft/client/model/ModelCow.java (100%) rename src/{main => game}/java/net/minecraft/client/model/ModelCreeper.java (100%) rename src/{main => game}/java/net/minecraft/client/model/ModelDragon.java (100%) rename src/{main => game}/java/net/minecraft/client/model/ModelEnderCrystal.java (100%) rename src/{main => game}/java/net/minecraft/client/model/ModelEnderMite.java (100%) rename src/{main => game}/java/net/minecraft/client/model/ModelEnderman.java (100%) rename src/{main => game}/java/net/minecraft/client/model/ModelGhast.java (100%) rename src/{main => game}/java/net/minecraft/client/model/ModelGuardian.java (100%) rename src/{main => game}/java/net/minecraft/client/model/ModelHorse.java (100%) rename src/{main => game}/java/net/minecraft/client/model/ModelHumanoidHead.java (100%) rename src/{main => game}/java/net/minecraft/client/model/ModelIronGolem.java (100%) rename src/{main => game}/java/net/minecraft/client/model/ModelLargeChest.java (100%) rename src/{main => game}/java/net/minecraft/client/model/ModelLeashKnot.java (100%) rename src/{main => game}/java/net/minecraft/client/model/ModelMagmaCube.java (100%) rename src/{main => game}/java/net/minecraft/client/model/ModelMinecart.java (100%) rename src/{main => game}/java/net/minecraft/client/model/ModelOcelot.java (100%) rename src/{main => game}/java/net/minecraft/client/model/ModelPig.java (100%) rename src/{main => game}/java/net/minecraft/client/model/ModelPlayer.java (100%) rename src/{main => game}/java/net/minecraft/client/model/ModelQuadruped.java (100%) rename src/{main => game}/java/net/minecraft/client/model/ModelRabbit.java (100%) rename src/{main => game}/java/net/minecraft/client/model/ModelRenderer.java (100%) rename src/{main => game}/java/net/minecraft/client/model/ModelSheep1.java (100%) rename src/{main => game}/java/net/minecraft/client/model/ModelSheep2.java (100%) rename src/{main => game}/java/net/minecraft/client/model/ModelSign.java (100%) rename src/{main => game}/java/net/minecraft/client/model/ModelSilverfish.java (100%) rename src/{main => game}/java/net/minecraft/client/model/ModelSkeleton.java (100%) rename src/{main => game}/java/net/minecraft/client/model/ModelSkeletonHead.java (100%) rename src/{main => game}/java/net/minecraft/client/model/ModelSlime.java (100%) rename src/{main => game}/java/net/minecraft/client/model/ModelSnowMan.java (100%) rename src/{main => game}/java/net/minecraft/client/model/ModelSpider.java (100%) rename src/{main => game}/java/net/minecraft/client/model/ModelSquid.java (100%) rename src/{main => game}/java/net/minecraft/client/model/ModelVillager.java (100%) rename src/{main => game}/java/net/minecraft/client/model/ModelWitch.java (100%) rename src/{main => game}/java/net/minecraft/client/model/ModelWither.java (100%) rename src/{main => game}/java/net/minecraft/client/model/ModelWolf.java (100%) rename src/{main => game}/java/net/minecraft/client/model/ModelZombie.java (100%) rename src/{main => game}/java/net/minecraft/client/model/ModelZombieVillager.java (100%) rename src/{main => game}/java/net/minecraft/client/model/PositionTextureVertex.java (100%) rename src/{main => game}/java/net/minecraft/client/model/TextureOffset.java (100%) rename src/{main => game}/java/net/minecraft/client/model/TexturedQuad.java (100%) rename src/{main => game}/java/net/minecraft/client/multiplayer/ChunkProviderClient.java (92%) rename src/{main => game}/java/net/minecraft/client/multiplayer/GuiConnecting.java (62%) rename src/{main => game}/java/net/minecraft/client/multiplayer/PlayerControllerMP.java (96%) rename src/{main => game}/java/net/minecraft/client/multiplayer/ServerAddress.java (100%) rename src/{main => game}/java/net/minecraft/client/multiplayer/ServerData.java (92%) rename src/{main => game}/java/net/minecraft/client/multiplayer/ServerList.java (94%) rename src/{main => game}/java/net/minecraft/client/multiplayer/WorldClient.java (94%) rename src/{main => game}/java/net/minecraft/client/network/NetHandlerPlayClient.java (94%) rename src/{main => game}/java/net/minecraft/client/network/NetworkPlayerInfo.java (78%) rename src/{main => game}/java/net/minecraft/client/particle/Barrier.java (100%) rename src/{main => game}/java/net/minecraft/client/particle/EffectRenderer.java (94%) rename src/{main => game}/java/net/minecraft/client/particle/EntityAuraFX.java (100%) rename src/{main => game}/java/net/minecraft/client/particle/EntityBlockDustFX.java (100%) rename src/{main => game}/java/net/minecraft/client/particle/EntityBreakingFX.java (100%) rename src/{main => game}/java/net/minecraft/client/particle/EntityBubbleFX.java (100%) rename src/{main => game}/java/net/minecraft/client/particle/EntityCloudFX.java (100%) rename src/{main => game}/java/net/minecraft/client/particle/EntityCrit2FX.java (100%) rename src/{main => game}/java/net/minecraft/client/particle/EntityCritFX.java (100%) rename src/{main => game}/java/net/minecraft/client/particle/EntityDiggingFX.java (100%) rename src/{main => game}/java/net/minecraft/client/particle/EntityDropParticleFX.java (100%) rename src/{main => game}/java/net/minecraft/client/particle/EntityEnchantmentTableParticleFX.java (100%) rename src/{main => game}/java/net/minecraft/client/particle/EntityExplodeFX.java (100%) rename src/{main => game}/java/net/minecraft/client/particle/EntityFX.java (100%) rename src/{main => game}/java/net/minecraft/client/particle/EntityFirework.java (100%) rename src/{main => game}/java/net/minecraft/client/particle/EntityFishWakeFX.java (100%) rename src/{main => game}/java/net/minecraft/client/particle/EntityFlameFX.java (100%) rename src/{main => game}/java/net/minecraft/client/particle/EntityFootStepFX.java (100%) rename src/{main => game}/java/net/minecraft/client/particle/EntityHeartFX.java (100%) rename src/{main => game}/java/net/minecraft/client/particle/EntityHugeExplodeFX.java (100%) rename src/{main => game}/java/net/minecraft/client/particle/EntityLargeExplodeFX.java (100%) rename src/{main => game}/java/net/minecraft/client/particle/EntityLavaFX.java (100%) rename src/{main => game}/java/net/minecraft/client/particle/EntityNoteFX.java (100%) rename src/{main => game}/java/net/minecraft/client/particle/EntityParticleEmitter.java (100%) rename src/{main => game}/java/net/minecraft/client/particle/EntityPickupFX.java (100%) rename src/{main => game}/java/net/minecraft/client/particle/EntityPortalFX.java (100%) rename src/{main => game}/java/net/minecraft/client/particle/EntityRainFX.java (100%) rename src/{main => game}/java/net/minecraft/client/particle/EntityReddustFX.java (100%) rename src/{main => game}/java/net/minecraft/client/particle/EntitySmokeFX.java (100%) rename src/{main => game}/java/net/minecraft/client/particle/EntitySnowShovelFX.java (100%) rename src/{main => game}/java/net/minecraft/client/particle/EntitySpellParticleFX.java (100%) rename src/{main => game}/java/net/minecraft/client/particle/EntitySplashFX.java (100%) rename src/{main => game}/java/net/minecraft/client/particle/EntitySuspendFX.java (100%) rename src/{main => game}/java/net/minecraft/client/particle/IParticleFactory.java (100%) rename src/{main => game}/java/net/minecraft/client/particle/MobAppearance.java (100%) rename src/{main => game}/java/net/minecraft/client/player/inventory/ContainerLocalMenu.java (100%) rename src/{main => game}/java/net/minecraft/client/player/inventory/LocalBlockIntercommunication.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/ActiveRenderInfo.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/BlockFluidRenderer.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/BlockModelRenderer.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/BlockModelShapes.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/BlockRendererDispatcher.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/ChestRenderer.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/ChunkRenderContainer.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/DestroyBlockProgress.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/EntityRenderer.java (93%) rename src/{main => game}/java/net/minecraft/client/renderer/EnumFaceDirection.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/GLAllocation.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/IImageBuffer.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/ImageBufferDownload.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/InventoryEffectRenderer.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/ItemMeshDefinition.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/ItemModelMesher.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/ItemRenderer.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/RegionRenderCache.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/RegionRenderCacheBuilder.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/RenderGlobal.java (96%) rename src/{main => game}/java/net/minecraft/client/renderer/RenderHelper.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/RenderList.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/StitcherException.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/Tessellator.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/ViewFrustum.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/block/model/BakedQuad.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/block/model/BlockFaceUV.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/block/model/BlockPart.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/block/model/BlockPartFace.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/block/model/BlockPartRotation.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/block/model/BreakingFour.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/block/model/FaceBakery.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/block/model/ItemCameraTransforms.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/block/model/ItemModelGenerator.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/block/model/ItemTransformVec3f.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/block/model/ModelBlock.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/block/model/ModelBlockDefinition.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/block/statemap/BlockStateMapper.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/block/statemap/DefaultStateMapper.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/block/statemap/IStateMapper.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/block/statemap/StateMap.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/block/statemap/StateMapperBase.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/chunk/ChunkCompileTaskGenerator.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/chunk/ChunkRenderWorker.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/chunk/CompiledChunk.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/chunk/IRenderChunkFactory.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/chunk/ListChunkFactory.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/chunk/ListedRenderChunk.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/chunk/RenderChunk.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/chunk/SetVisibility.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/chunk/VisGraph.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/culling/ClippingHelper.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/culling/ClippingHelperImpl.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/culling/Frustum.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/culling/ICamera.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/entity/ArmorStandRenderer.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/entity/Render.java (97%) rename src/{main => game}/java/net/minecraft/client/renderer/entity/RenderArrow.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/entity/RenderBat.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/entity/RenderBiped.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/entity/RenderBlaze.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/entity/RenderBoat.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/entity/RenderCaveSpider.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/entity/RenderChicken.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/entity/RenderCow.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/entity/RenderCreeper.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/entity/RenderDragon.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/entity/RenderEnderman.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/entity/RenderEndermite.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/entity/RenderEntity.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/entity/RenderEntityItem.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/entity/RenderFallingBlock.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/entity/RenderFireball.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/entity/RenderFish.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/entity/RenderGhast.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/entity/RenderGiantZombie.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/entity/RenderGuardian.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/entity/RenderHorse.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/entity/RenderIronGolem.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/entity/RenderItem.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/entity/RenderLeashKnot.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/entity/RenderLightningBolt.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/entity/RenderLiving.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/entity/RenderMagmaCube.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/entity/RenderManager.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/entity/RenderMinecart.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/entity/RenderMinecartMobSpawner.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/entity/RenderMooshroom.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/entity/RenderOcelot.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/entity/RenderPainting.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/entity/RenderPig.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/entity/RenderPigZombie.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/entity/RenderPlayer.java (97%) rename src/{main => game}/java/net/minecraft/client/renderer/entity/RenderPotion.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/entity/RenderRabbit.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/entity/RenderSheep.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/entity/RenderSilverfish.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/entity/RenderSkeleton.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/entity/RenderSlime.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/entity/RenderSnowMan.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/entity/RenderSnowball.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/entity/RenderSpider.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/entity/RenderSquid.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/entity/RenderTNTPrimed.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/entity/RenderTntMinecart.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/entity/RenderVillager.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/entity/RenderWitch.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/entity/RenderWither.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/entity/RenderWolf.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/entity/RenderXPOrb.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/entity/RenderZombie.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/entity/RendererLivingEntity.java (97%) rename src/{main => game}/java/net/minecraft/client/renderer/entity/layers/LayerArmorBase.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/entity/layers/LayerArrow.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/entity/layers/LayerBipedArmor.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/entity/layers/LayerCape.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/entity/layers/LayerCreeperCharge.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/entity/layers/LayerCustomHead.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/entity/layers/LayerDeadmau5Head.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/entity/layers/LayerEnderDragonDeath.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/entity/layers/LayerEnderDragonEyes.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/entity/layers/LayerEndermanEyes.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/entity/layers/LayerHeldBlock.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/entity/layers/LayerHeldItem.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/entity/layers/LayerHeldItemWitch.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/entity/layers/LayerIronGolemFlower.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/entity/layers/LayerMooshroomMushroom.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/entity/layers/LayerRenderer.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/entity/layers/LayerSaddle.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/entity/layers/LayerSheepWool.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/entity/layers/LayerSlimeGel.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/entity/layers/LayerSnowmanHead.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/entity/layers/LayerSpiderEyes.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/entity/layers/LayerVillagerArmor.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/entity/layers/LayerWitherAura.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/entity/layers/LayerWolfCollar.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/texture/AbstractTexture.java (93%) rename src/{main => game}/java/net/minecraft/client/renderer/texture/DynamicTexture.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/texture/IIconCreator.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/texture/ITextureObject.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/texture/ITickable.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/texture/ITickableTextureObject.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/texture/LayeredColorMaskTexture.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/texture/LayeredTexture.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/texture/SimpleTexture.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/texture/Stitcher.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/texture/TextureClock.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/texture/TextureCompass.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/texture/TextureManager.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/texture/TextureMap.java (95%) rename src/{main => game}/java/net/minecraft/client/renderer/texture/TextureUtil.java (90%) rename src/{main => game}/java/net/minecraft/client/renderer/tileentity/RenderEnderCrystal.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/tileentity/RenderItemFrame.java (97%) rename src/{main => game}/java/net/minecraft/client/renderer/tileentity/RenderWitherSkull.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/tileentity/TileEntityBannerRenderer.java (94%) rename src/{main => game}/java/net/minecraft/client/renderer/tileentity/TileEntityBeaconRenderer.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/tileentity/TileEntityChestRenderer.java (95%) rename src/{main => game}/java/net/minecraft/client/renderer/tileentity/TileEntityEnchantmentTableRenderer.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/tileentity/TileEntityEndPortalRenderer.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/tileentity/TileEntityEnderChestRenderer.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/tileentity/TileEntityItemStackRenderer.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/tileentity/TileEntityMobSpawnerRenderer.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/tileentity/TileEntityPistonRenderer.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/tileentity/TileEntityRendererDispatcher.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/tileentity/TileEntitySignRenderer.java (90%) rename src/{main => game}/java/net/minecraft/client/renderer/tileentity/TileEntitySkullRenderer.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/tileentity/TileEntitySpecialRenderer.java (100%) rename src/{main => game}/java/net/minecraft/client/renderer/vertex/DefaultVertexFormats.java (100%) rename src/{main => game}/java/net/minecraft/client/resources/AbstractResourcePack.java (100%) rename src/{main => game}/java/net/minecraft/client/resources/DefaultPlayerSkin.java (100%) rename src/{main => game}/java/net/minecraft/client/resources/DefaultResourcePack.java (87%) rename src/{main => game}/java/net/minecraft/client/resources/FallbackResourceManager.java (100%) rename src/{main => game}/java/net/minecraft/client/resources/FoliageColorReloadListener.java (100%) rename src/{main => game}/java/net/minecraft/client/resources/GrassColorReloadListener.java (100%) rename src/{main => game}/java/net/minecraft/client/resources/I18n.java (100%) rename src/{main => game}/java/net/minecraft/client/resources/IReloadableResourceManager.java (100%) rename src/{main => game}/java/net/minecraft/client/resources/IResource.java (100%) rename src/{main => game}/java/net/minecraft/client/resources/IResourceManager.java (100%) rename src/{main => game}/java/net/minecraft/client/resources/IResourceManagerReloadListener.java (100%) rename src/{main => game}/java/net/minecraft/client/resources/IResourcePack.java (100%) rename src/{main => game}/java/net/minecraft/client/resources/Language.java (100%) rename src/{main => game}/java/net/minecraft/client/resources/LanguageManager.java (100%) rename src/{main => game}/java/net/minecraft/client/resources/Locale.java (95%) rename src/{main => game}/java/net/minecraft/client/resources/ResourcePackFileNotFoundException.java (100%) rename src/{main => game}/java/net/minecraft/client/resources/ResourcePackListEntry.java (100%) rename src/{main => game}/java/net/minecraft/client/resources/ResourcePackListEntryDefault.java (100%) rename src/{main => game}/java/net/minecraft/client/resources/ResourcePackListEntryFound.java (100%) rename src/{main => game}/java/net/minecraft/client/resources/ResourcePackRepository.java (100%) rename src/{main => game}/java/net/minecraft/client/resources/SimpleReloadableResourceManager.java (100%) rename src/{main => game}/java/net/minecraft/client/resources/SimpleResource.java (100%) rename src/{main => game}/java/net/minecraft/client/resources/data/AnimationFrame.java (100%) rename src/{main => game}/java/net/minecraft/client/resources/data/AnimationMetadataSection.java (100%) rename src/{main => game}/java/net/minecraft/client/resources/data/AnimationMetadataSectionSerializer.java (100%) rename src/{main => game}/java/net/minecraft/client/resources/data/BaseMetadataSectionSerializer.java (100%) rename src/{main => game}/java/net/minecraft/client/resources/data/FontMetadataSection.java (100%) rename src/{main => game}/java/net/minecraft/client/resources/data/FontMetadataSectionSerializer.java (100%) rename src/{main => game}/java/net/minecraft/client/resources/data/IMetadataSection.java (100%) rename src/{main => game}/java/net/minecraft/client/resources/data/IMetadataSectionSerializer.java (100%) rename src/{main => game}/java/net/minecraft/client/resources/data/IMetadataSerializer.java (100%) rename src/{main => game}/java/net/minecraft/client/resources/data/LanguageMetadataSection.java (100%) rename src/{main => game}/java/net/minecraft/client/resources/data/LanguageMetadataSectionSerializer.java (100%) rename src/{main => game}/java/net/minecraft/client/resources/data/PackMetadataSection.java (100%) rename src/{main => game}/java/net/minecraft/client/resources/data/PackMetadataSectionSerializer.java (100%) rename src/{main => game}/java/net/minecraft/client/resources/data/TextureMetadataSection.java (100%) rename src/{main => game}/java/net/minecraft/client/resources/data/TextureMetadataSectionSerializer.java (100%) rename src/{main => game}/java/net/minecraft/client/resources/model/BuiltInModel.java (100%) rename src/{main => game}/java/net/minecraft/client/resources/model/IBakedModel.java (100%) rename src/{main => game}/java/net/minecraft/client/resources/model/ModelBakery.java (100%) rename src/{main => game}/java/net/minecraft/client/resources/model/ModelManager.java (100%) rename src/{main => game}/java/net/minecraft/client/resources/model/ModelResourceLocation.java (100%) rename src/{main => game}/java/net/minecraft/client/resources/model/ModelRotation.java (100%) rename src/{main => game}/java/net/minecraft/client/resources/model/SimpleBakedModel.java (100%) rename src/{main => game}/java/net/minecraft/client/resources/model/WeightedBakedModel.java (100%) rename src/{main => game}/java/net/minecraft/client/settings/GameSettings.java (87%) rename src/{main => game}/java/net/minecraft/client/settings/KeyBinding.java (100%) rename src/{main => game}/java/net/minecraft/client/stream/IStream.java (100%) rename src/{main => game}/java/net/minecraft/client/util/JsonBlendingMode.java (100%) rename src/{main => game}/java/net/minecraft/client/util/JsonException.java (100%) rename src/{main => game}/java/net/minecraft/command/CommandBase.java (100%) rename src/{main => game}/java/net/minecraft/command/CommandBlockData.java (100%) rename src/{main => game}/java/net/minecraft/command/CommandClearInventory.java (100%) rename src/{main => game}/java/net/minecraft/command/CommandClone.java (100%) rename src/{main => game}/java/net/minecraft/command/CommandCompare.java (100%) rename src/{main => game}/java/net/minecraft/command/CommandDefaultGameMode.java (100%) rename src/{main => game}/java/net/minecraft/command/CommandDifficulty.java (100%) rename src/{main => game}/java/net/minecraft/command/CommandEffect.java (100%) rename src/{main => game}/java/net/minecraft/command/CommandEnchant.java (100%) rename src/{main => game}/java/net/minecraft/command/CommandEntityData.java (100%) rename src/{main => game}/java/net/minecraft/command/CommandException.java (100%) rename src/{main => game}/java/net/minecraft/command/CommandExecuteAt.java (100%) rename src/{main => game}/java/net/minecraft/command/CommandFill.java (100%) rename src/{main => game}/java/net/minecraft/command/CommandGameMode.java (100%) rename src/{main => game}/java/net/minecraft/command/CommandGameRule.java (100%) rename src/{main => game}/java/net/minecraft/command/CommandGive.java (100%) rename src/{main => game}/java/net/minecraft/command/CommandHandler.java (100%) rename src/{main => game}/java/net/minecraft/command/CommandHelp.java (100%) rename src/{main => game}/java/net/minecraft/command/CommandKill.java (100%) rename src/{main => game}/java/net/minecraft/command/CommandNotFoundException.java (100%) rename src/{main => game}/java/net/minecraft/command/CommandParticle.java (100%) rename src/{main => game}/java/net/minecraft/command/CommandPlaySound.java (100%) rename src/{main => game}/java/net/minecraft/command/CommandReplaceItem.java (100%) rename src/{main => game}/java/net/minecraft/command/CommandResultStats.java (100%) rename src/{main => game}/java/net/minecraft/command/CommandServerKick.java (100%) rename src/{main => game}/java/net/minecraft/command/CommandSetPlayerTimeout.java (100%) rename src/{main => game}/java/net/minecraft/command/CommandSetSpawnpoint.java (100%) rename src/{main => game}/java/net/minecraft/command/CommandShowSeed.java (100%) rename src/{main => game}/java/net/minecraft/command/CommandSpreadPlayers.java (100%) rename src/{main => game}/java/net/minecraft/command/CommandStats.java (100%) rename src/{main => game}/java/net/minecraft/command/CommandTime.java (100%) rename src/{main => game}/java/net/minecraft/command/CommandTitle.java (100%) rename src/{main => game}/java/net/minecraft/command/CommandToggleDownfall.java (100%) rename src/{main => game}/java/net/minecraft/command/CommandTrigger.java (100%) rename src/{main => game}/java/net/minecraft/command/CommandWeather.java (100%) rename src/{main => game}/java/net/minecraft/command/CommandWorldBorder.java (100%) rename src/{main => game}/java/net/minecraft/command/CommandXP.java (100%) rename src/{main => game}/java/net/minecraft/command/EntityNotFoundException.java (100%) rename src/{main => game}/java/net/minecraft/command/IAdminCommand.java (100%) rename src/{main => game}/java/net/minecraft/command/ICommand.java (100%) rename src/{main => game}/java/net/minecraft/command/ICommandManager.java (100%) rename src/{main => game}/java/net/minecraft/command/ICommandSender.java (100%) rename src/{main => game}/java/net/minecraft/command/NumberInvalidException.java (100%) rename src/{main => game}/java/net/minecraft/command/PlayerNotFoundException.java (100%) rename src/{main => game}/java/net/minecraft/command/PlayerSelector.java (100%) rename src/{main => game}/java/net/minecraft/command/ServerCommandManager.java (100%) rename src/{main => game}/java/net/minecraft/command/SyntaxErrorException.java (100%) rename src/{main => game}/java/net/minecraft/command/WrongUsageException.java (100%) rename src/{main => game}/java/net/minecraft/command/server/CommandAchievement.java (100%) rename src/{main => game}/java/net/minecraft/command/server/CommandBlockLogic.java (100%) rename src/{main => game}/java/net/minecraft/command/server/CommandBroadcast.java (100%) rename src/{main => game}/java/net/minecraft/command/server/CommandEmote.java (100%) rename src/{main => game}/java/net/minecraft/command/server/CommandListPlayers.java (100%) rename src/{main => game}/java/net/minecraft/command/server/CommandMessage.java (100%) rename src/{main => game}/java/net/minecraft/command/server/CommandMessageRaw.java (100%) rename src/{main => game}/java/net/minecraft/command/server/CommandScoreboard.java (100%) rename src/{main => game}/java/net/minecraft/command/server/CommandSetBlock.java (100%) rename src/{main => game}/java/net/minecraft/command/server/CommandSetDefaultSpawnpoint.java (100%) rename src/{main => game}/java/net/minecraft/command/server/CommandSummon.java (100%) rename src/{main => game}/java/net/minecraft/command/server/CommandTeleport.java (100%) rename src/{main => game}/java/net/minecraft/command/server/CommandTestFor.java (100%) rename src/{main => game}/java/net/minecraft/command/server/CommandTestForBlock.java (100%) rename src/{main => game}/java/net/minecraft/crash/CrashReport.java (100%) rename src/{main => game}/java/net/minecraft/crash/CrashReportCategory.java (100%) rename src/{main => game}/java/net/minecraft/creativetab/CreativeTabs.java (100%) rename src/{main => game}/java/net/minecraft/dispenser/BehaviorDefaultDispenseItem.java (100%) rename src/{main => game}/java/net/minecraft/dispenser/BehaviorProjectileDispense.java (100%) rename src/{main => game}/java/net/minecraft/dispenser/IBehaviorDispenseItem.java (100%) rename src/{main => game}/java/net/minecraft/dispenser/IBlockSource.java (100%) rename src/{main => game}/java/net/minecraft/dispenser/ILocatableSource.java (100%) rename src/{main => game}/java/net/minecraft/dispenser/ILocation.java (100%) rename src/{main => game}/java/net/minecraft/dispenser/IPosition.java (100%) rename src/{main => game}/java/net/minecraft/dispenser/PositionImpl.java (100%) rename src/{main => game}/java/net/minecraft/enchantment/Enchantment.java (100%) rename src/{main => game}/java/net/minecraft/enchantment/EnchantmentArrowDamage.java (100%) rename src/{main => game}/java/net/minecraft/enchantment/EnchantmentArrowFire.java (100%) rename src/{main => game}/java/net/minecraft/enchantment/EnchantmentArrowInfinite.java (100%) rename src/{main => game}/java/net/minecraft/enchantment/EnchantmentArrowKnockback.java (100%) rename src/{main => game}/java/net/minecraft/enchantment/EnchantmentDamage.java (100%) rename src/{main => game}/java/net/minecraft/enchantment/EnchantmentData.java (100%) rename src/{main => game}/java/net/minecraft/enchantment/EnchantmentDigging.java (100%) rename src/{main => game}/java/net/minecraft/enchantment/EnchantmentDurability.java (100%) rename src/{main => game}/java/net/minecraft/enchantment/EnchantmentFireAspect.java (100%) rename src/{main => game}/java/net/minecraft/enchantment/EnchantmentFishingSpeed.java (100%) rename src/{main => game}/java/net/minecraft/enchantment/EnchantmentHelper.java (100%) rename src/{main => game}/java/net/minecraft/enchantment/EnchantmentKnockback.java (100%) rename src/{main => game}/java/net/minecraft/enchantment/EnchantmentLootBonus.java (100%) rename src/{main => game}/java/net/minecraft/enchantment/EnchantmentOxygen.java (100%) rename src/{main => game}/java/net/minecraft/enchantment/EnchantmentProtection.java (100%) rename src/{main => game}/java/net/minecraft/enchantment/EnchantmentThorns.java (100%) rename src/{main => game}/java/net/minecraft/enchantment/EnchantmentUntouching.java (100%) rename src/{main => game}/java/net/minecraft/enchantment/EnchantmentWaterWalker.java (100%) rename src/{main => game}/java/net/minecraft/enchantment/EnchantmentWaterWorker.java (100%) rename src/{main => game}/java/net/minecraft/enchantment/EnumEnchantmentType.java (100%) rename src/{main => game}/java/net/minecraft/entity/DataWatcher.java (100%) rename src/{main => game}/java/net/minecraft/entity/Entity.java (95%) rename src/{main => game}/java/net/minecraft/entity/EntityAgeable.java (100%) rename src/{main => game}/java/net/minecraft/entity/EntityBodyHelper.java (100%) rename src/{main => game}/java/net/minecraft/entity/EntityCreature.java (100%) rename src/{main => game}/java/net/minecraft/entity/EntityFlying.java (100%) rename src/{main => game}/java/net/minecraft/entity/EntityHanging.java (100%) rename src/{main => game}/java/net/minecraft/entity/EntityLeashKnot.java (100%) rename src/{main => game}/java/net/minecraft/entity/EntityList.java (100%) rename src/{main => game}/java/net/minecraft/entity/EntityLiving.java (92%) rename src/{main => game}/java/net/minecraft/entity/EntityLivingBase.java (95%) rename src/{main => game}/java/net/minecraft/entity/EntityMinecartCommandBlock.java (100%) rename src/{main => game}/java/net/minecraft/entity/EntitySpawnPlacementRegistry.java (100%) rename src/{main => game}/java/net/minecraft/entity/EntityTracker.java (100%) rename src/{main => game}/java/net/minecraft/entity/EntityTrackerEntry.java (100%) rename src/{main => game}/java/net/minecraft/entity/EnumCreatureAttribute.java (100%) rename src/{main => game}/java/net/minecraft/entity/EnumCreatureType.java (100%) rename src/{main => game}/java/net/minecraft/entity/IEntityLivingData.java (100%) rename src/{main => game}/java/net/minecraft/entity/IEntityMultiPart.java (100%) rename src/{main => game}/java/net/minecraft/entity/IEntityOwnable.java (100%) rename src/{main => game}/java/net/minecraft/entity/IMerchant.java (100%) rename src/{main => game}/java/net/minecraft/entity/INpc.java (100%) rename src/{main => game}/java/net/minecraft/entity/IProjectile.java (100%) rename src/{main => game}/java/net/minecraft/entity/IRangedAttackMob.java (100%) rename src/{main => game}/java/net/minecraft/entity/NpcMerchant.java (100%) rename src/{main => game}/java/net/minecraft/entity/SharedMonsterAttributes.java (100%) rename src/{main => game}/java/net/minecraft/entity/ai/EntityAIArrowAttack.java (100%) rename src/{main => game}/java/net/minecraft/entity/ai/EntityAIAttackOnCollide.java (100%) rename src/{main => game}/java/net/minecraft/entity/ai/EntityAIAvoidEntity.java (100%) rename src/{main => game}/java/net/minecraft/entity/ai/EntityAIBase.java (100%) rename src/{main => game}/java/net/minecraft/entity/ai/EntityAIBeg.java (100%) rename src/{main => game}/java/net/minecraft/entity/ai/EntityAIBreakDoor.java (100%) rename src/{main => game}/java/net/minecraft/entity/ai/EntityAIControlledByPlayer.java (100%) rename src/{main => game}/java/net/minecraft/entity/ai/EntityAICreeperSwell.java (100%) rename src/{main => game}/java/net/minecraft/entity/ai/EntityAIDefendVillage.java (100%) rename src/{main => game}/java/net/minecraft/entity/ai/EntityAIDoorInteract.java (100%) rename src/{main => game}/java/net/minecraft/entity/ai/EntityAIEatGrass.java (100%) rename src/{main => game}/java/net/minecraft/entity/ai/EntityAIFindEntityNearest.java (100%) rename src/{main => game}/java/net/minecraft/entity/ai/EntityAIFindEntityNearestPlayer.java (100%) rename src/{main => game}/java/net/minecraft/entity/ai/EntityAIFleeSun.java (100%) rename src/{main => game}/java/net/minecraft/entity/ai/EntityAIFollowGolem.java (100%) rename src/{main => game}/java/net/minecraft/entity/ai/EntityAIFollowOwner.java (100%) rename src/{main => game}/java/net/minecraft/entity/ai/EntityAIFollowParent.java (100%) rename src/{main => game}/java/net/minecraft/entity/ai/EntityAIHarvestFarmland.java (100%) rename src/{main => game}/java/net/minecraft/entity/ai/EntityAIHurtByTarget.java (100%) rename src/{main => game}/java/net/minecraft/entity/ai/EntityAILeapAtTarget.java (100%) rename src/{main => game}/java/net/minecraft/entity/ai/EntityAILookAtTradePlayer.java (100%) rename src/{main => game}/java/net/minecraft/entity/ai/EntityAILookAtVillager.java (100%) rename src/{main => game}/java/net/minecraft/entity/ai/EntityAILookIdle.java (100%) rename src/{main => game}/java/net/minecraft/entity/ai/EntityAIMate.java (100%) rename src/{main => game}/java/net/minecraft/entity/ai/EntityAIMoveIndoors.java (100%) rename src/{main => game}/java/net/minecraft/entity/ai/EntityAIMoveThroughVillage.java (100%) rename src/{main => game}/java/net/minecraft/entity/ai/EntityAIMoveToBlock.java (100%) rename src/{main => game}/java/net/minecraft/entity/ai/EntityAIMoveTowardsRestriction.java (100%) rename src/{main => game}/java/net/minecraft/entity/ai/EntityAIMoveTowardsTarget.java (100%) rename src/{main => game}/java/net/minecraft/entity/ai/EntityAINearestAttackableTarget.java (100%) rename src/{main => game}/java/net/minecraft/entity/ai/EntityAIOcelotAttack.java (100%) rename src/{main => game}/java/net/minecraft/entity/ai/EntityAIOcelotSit.java (100%) rename src/{main => game}/java/net/minecraft/entity/ai/EntityAIOpenDoor.java (100%) rename src/{main => game}/java/net/minecraft/entity/ai/EntityAIOwnerHurtByTarget.java (100%) rename src/{main => game}/java/net/minecraft/entity/ai/EntityAIOwnerHurtTarget.java (100%) rename src/{main => game}/java/net/minecraft/entity/ai/EntityAIPanic.java (100%) rename src/{main => game}/java/net/minecraft/entity/ai/EntityAIPlay.java (100%) rename src/{main => game}/java/net/minecraft/entity/ai/EntityAIRestrictOpenDoor.java (100%) rename src/{main => game}/java/net/minecraft/entity/ai/EntityAIRestrictSun.java (100%) rename src/{main => game}/java/net/minecraft/entity/ai/EntityAIRunAroundLikeCrazy.java (100%) rename src/{main => game}/java/net/minecraft/entity/ai/EntityAISit.java (100%) rename src/{main => game}/java/net/minecraft/entity/ai/EntityAISwimming.java (100%) rename src/{main => game}/java/net/minecraft/entity/ai/EntityAITarget.java (100%) rename src/{main => game}/java/net/minecraft/entity/ai/EntityAITargetNonTamed.java (100%) rename src/{main => game}/java/net/minecraft/entity/ai/EntityAITasks.java (92%) rename src/{main => game}/java/net/minecraft/entity/ai/EntityAITempt.java (100%) rename src/{main => game}/java/net/minecraft/entity/ai/EntityAITradePlayer.java (100%) rename src/{main => game}/java/net/minecraft/entity/ai/EntityAIVillagerInteract.java (100%) rename src/{main => game}/java/net/minecraft/entity/ai/EntityAIVillagerMate.java (100%) rename src/{main => game}/java/net/minecraft/entity/ai/EntityAIWander.java (100%) rename src/{main => game}/java/net/minecraft/entity/ai/EntityAIWatchClosest.java (100%) rename src/{main => game}/java/net/minecraft/entity/ai/EntityAIWatchClosest2.java (100%) rename src/{main => game}/java/net/minecraft/entity/ai/EntityJumpHelper.java (100%) rename src/{main => game}/java/net/minecraft/entity/ai/EntityLookHelper.java (100%) rename src/{main => game}/java/net/minecraft/entity/ai/EntityMinecartMobSpawner.java (100%) rename src/{main => game}/java/net/minecraft/entity/ai/EntityMoveHelper.java (100%) rename src/{main => game}/java/net/minecraft/entity/ai/EntitySenses.java (92%) rename src/{main => game}/java/net/minecraft/entity/ai/RandomPositionGenerator.java (100%) rename src/{main => game}/java/net/minecraft/entity/ai/attributes/AttributeModifier.java (100%) rename src/{main => game}/java/net/minecraft/entity/ai/attributes/BaseAttribute.java (100%) rename src/{main => game}/java/net/minecraft/entity/ai/attributes/BaseAttributeMap.java (100%) rename src/{main => game}/java/net/minecraft/entity/ai/attributes/IAttribute.java (100%) rename src/{main => game}/java/net/minecraft/entity/ai/attributes/IAttributeInstance.java (100%) rename src/{main => game}/java/net/minecraft/entity/ai/attributes/ModifiableAttributeInstance.java (100%) rename src/{main => game}/java/net/minecraft/entity/ai/attributes/RangedAttribute.java (100%) rename src/{main => game}/java/net/minecraft/entity/ai/attributes/ServersideAttributeMap.java (100%) rename src/{main => game}/java/net/minecraft/entity/boss/BossStatus.java (100%) rename src/{main => game}/java/net/minecraft/entity/boss/EntityDragon.java (100%) rename src/{main => game}/java/net/minecraft/entity/boss/EntityDragonPart.java (100%) rename src/{main => game}/java/net/minecraft/entity/boss/EntityWither.java (100%) rename src/{main => game}/java/net/minecraft/entity/boss/IBossDisplayData.java (100%) rename src/{main => game}/java/net/minecraft/entity/effect/EntityLightningBolt.java (100%) rename src/{main => game}/java/net/minecraft/entity/effect/EntityWeatherEffect.java (100%) rename src/{main => game}/java/net/minecraft/entity/item/EntityArmorStand.java (100%) rename src/{main => game}/java/net/minecraft/entity/item/EntityBoat.java (100%) rename src/{main => game}/java/net/minecraft/entity/item/EntityEnderCrystal.java (100%) rename src/{main => game}/java/net/minecraft/entity/item/EntityEnderEye.java (100%) rename src/{main => game}/java/net/minecraft/entity/item/EntityEnderPearl.java (100%) rename src/{main => game}/java/net/minecraft/entity/item/EntityExpBottle.java (100%) rename src/{main => game}/java/net/minecraft/entity/item/EntityFallingBlock.java (100%) rename src/{main => game}/java/net/minecraft/entity/item/EntityFireworkRocket.java (100%) rename src/{main => game}/java/net/minecraft/entity/item/EntityItem.java (96%) rename src/{main => game}/java/net/minecraft/entity/item/EntityItemFrame.java (96%) rename src/{main => game}/java/net/minecraft/entity/item/EntityMinecart.java (96%) rename src/{main => game}/java/net/minecraft/entity/item/EntityMinecartChest.java (100%) rename src/{main => game}/java/net/minecraft/entity/item/EntityMinecartContainer.java (100%) rename src/{main => game}/java/net/minecraft/entity/item/EntityMinecartEmpty.java (100%) rename src/{main => game}/java/net/minecraft/entity/item/EntityMinecartFurnace.java (100%) rename src/{main => game}/java/net/minecraft/entity/item/EntityMinecartHopper.java (100%) rename src/{main => game}/java/net/minecraft/entity/item/EntityMinecartTNT.java (100%) rename src/{main => game}/java/net/minecraft/entity/item/EntityPainting.java (100%) rename src/{main => game}/java/net/minecraft/entity/item/EntityTNTPrimed.java (100%) rename src/{main => game}/java/net/minecraft/entity/item/EntityXPOrb.java (100%) rename src/{main => game}/java/net/minecraft/entity/monster/EntityBlaze.java (100%) rename src/{main => game}/java/net/minecraft/entity/monster/EntityCaveSpider.java (100%) rename src/{main => game}/java/net/minecraft/entity/monster/EntityCreeper.java (100%) rename src/{main => game}/java/net/minecraft/entity/monster/EntityEnderman.java (100%) rename src/{main => game}/java/net/minecraft/entity/monster/EntityEndermite.java (100%) rename src/{main => game}/java/net/minecraft/entity/monster/EntityGhast.java (100%) rename src/{main => game}/java/net/minecraft/entity/monster/EntityGiantZombie.java (100%) rename src/{main => game}/java/net/minecraft/entity/monster/EntityGolem.java (100%) rename src/{main => game}/java/net/minecraft/entity/monster/EntityGuardian.java (100%) rename src/{main => game}/java/net/minecraft/entity/monster/EntityIronGolem.java (100%) rename src/{main => game}/java/net/minecraft/entity/monster/EntityMagmaCube.java (100%) rename src/{main => game}/java/net/minecraft/entity/monster/EntityMob.java (100%) rename src/{main => game}/java/net/minecraft/entity/monster/EntityPigZombie.java (100%) rename src/{main => game}/java/net/minecraft/entity/monster/EntitySilverfish.java (100%) rename src/{main => game}/java/net/minecraft/entity/monster/EntitySkeleton.java (100%) rename src/{main => game}/java/net/minecraft/entity/monster/EntitySlime.java (100%) rename src/{main => game}/java/net/minecraft/entity/monster/EntitySnowman.java (100%) rename src/{main => game}/java/net/minecraft/entity/monster/EntitySpider.java (100%) rename src/{main => game}/java/net/minecraft/entity/monster/EntityWitch.java (100%) rename src/{main => game}/java/net/minecraft/entity/monster/EntityZombie.java (100%) rename src/{main => game}/java/net/minecraft/entity/monster/IMob.java (100%) rename src/{main => game}/java/net/minecraft/entity/passive/EntityAmbientCreature.java (100%) rename src/{main => game}/java/net/minecraft/entity/passive/EntityAnimal.java (100%) rename src/{main => game}/java/net/minecraft/entity/passive/EntityBat.java (100%) rename src/{main => game}/java/net/minecraft/entity/passive/EntityChicken.java (100%) rename src/{main => game}/java/net/minecraft/entity/passive/EntityCow.java (100%) rename src/{main => game}/java/net/minecraft/entity/passive/EntityHorse.java (96%) rename src/{main => game}/java/net/minecraft/entity/passive/EntityMooshroom.java (100%) rename src/{main => game}/java/net/minecraft/entity/passive/EntityOcelot.java (94%) rename src/{main => game}/java/net/minecraft/entity/passive/EntityPig.java (100%) rename src/{main => game}/java/net/minecraft/entity/passive/EntityRabbit.java (100%) rename src/{main => game}/java/net/minecraft/entity/passive/EntitySheep.java (100%) rename src/{main => game}/java/net/minecraft/entity/passive/EntitySquid.java (100%) rename src/{main => game}/java/net/minecraft/entity/passive/EntityTameable.java (93%) rename src/{main => game}/java/net/minecraft/entity/passive/EntityVillager.java (96%) rename src/{main => game}/java/net/minecraft/entity/passive/EntityWaterMob.java (100%) rename src/{main => game}/java/net/minecraft/entity/passive/EntityWolf.java (100%) rename src/{main => game}/java/net/minecraft/entity/passive/IAnimals.java (100%) rename src/{main => game}/java/net/minecraft/entity/player/EntityPlayer.java (96%) rename src/{main => game}/java/net/minecraft/entity/player/EntityPlayerMP.java (96%) rename src/{main => game}/java/net/minecraft/entity/player/EnumPlayerModelParts.java (100%) rename src/{main => game}/java/net/minecraft/entity/player/InventoryPlayer.java (100%) rename src/{main => game}/java/net/minecraft/entity/player/PlayerCapabilities.java (100%) rename src/{main => game}/java/net/minecraft/entity/projectile/EntityArrow.java (100%) rename src/{main => game}/java/net/minecraft/entity/projectile/EntityEgg.java (100%) rename src/{main => game}/java/net/minecraft/entity/projectile/EntityFireball.java (100%) rename src/{main => game}/java/net/minecraft/entity/projectile/EntityFishHook.java (100%) rename src/{main => game}/java/net/minecraft/entity/projectile/EntityLargeFireball.java (100%) rename src/{main => game}/java/net/minecraft/entity/projectile/EntityPotion.java (100%) rename src/{main => game}/java/net/minecraft/entity/projectile/EntitySmallFireball.java (100%) rename src/{main => game}/java/net/minecraft/entity/projectile/EntitySnowball.java (100%) rename src/{main => game}/java/net/minecraft/entity/projectile/EntityThrowable.java (100%) rename src/{main => game}/java/net/minecraft/entity/projectile/EntityWitherSkull.java (100%) rename src/{main => game}/java/net/minecraft/event/ClickEvent.java (100%) rename src/{main => game}/java/net/minecraft/event/HoverEvent.java (100%) rename src/{main => game}/java/net/minecraft/init/Blocks.java (100%) rename src/{main => game}/java/net/minecraft/init/Bootstrap.java (100%) rename src/{main => game}/java/net/minecraft/init/Items.java (100%) rename src/{main => game}/java/net/minecraft/inventory/AnimalChest.java (100%) rename src/{main => game}/java/net/minecraft/inventory/Container.java (100%) rename src/{main => game}/java/net/minecraft/inventory/ContainerBeacon.java (100%) rename src/{main => game}/java/net/minecraft/inventory/ContainerBrewingStand.java (100%) rename src/{main => game}/java/net/minecraft/inventory/ContainerChest.java (100%) rename src/{main => game}/java/net/minecraft/inventory/ContainerDispenser.java (100%) rename src/{main => game}/java/net/minecraft/inventory/ContainerEnchantment.java (100%) rename src/{main => game}/java/net/minecraft/inventory/ContainerFurnace.java (100%) rename src/{main => game}/java/net/minecraft/inventory/ContainerHopper.java (100%) rename src/{main => game}/java/net/minecraft/inventory/ContainerHorseInventory.java (100%) rename src/{main => game}/java/net/minecraft/inventory/ContainerMerchant.java (100%) rename src/{main => game}/java/net/minecraft/inventory/ContainerPlayer.java (100%) rename src/{main => game}/java/net/minecraft/inventory/ContainerRepair.java (100%) rename src/{main => game}/java/net/minecraft/inventory/ContainerWorkbench.java (100%) rename src/{main => game}/java/net/minecraft/inventory/ICrafting.java (100%) rename src/{main => game}/java/net/minecraft/inventory/IInvBasic.java (100%) rename src/{main => game}/java/net/minecraft/inventory/IInventory.java (100%) rename src/{main => game}/java/net/minecraft/inventory/ISidedInventory.java (100%) rename src/{main => game}/java/net/minecraft/inventory/InventoryBasic.java (100%) rename src/{main => game}/java/net/minecraft/inventory/InventoryCraftResult.java (100%) rename src/{main => game}/java/net/minecraft/inventory/InventoryCrafting.java (100%) rename src/{main => game}/java/net/minecraft/inventory/InventoryEnderChest.java (100%) rename src/{main => game}/java/net/minecraft/inventory/InventoryHelper.java (100%) rename src/{main => game}/java/net/minecraft/inventory/InventoryLargeChest.java (100%) rename src/{main => game}/java/net/minecraft/inventory/InventoryMerchant.java (100%) rename src/{main => game}/java/net/minecraft/inventory/Slot.java (100%) rename src/{main => game}/java/net/minecraft/inventory/SlotCrafting.java (100%) rename src/{main => game}/java/net/minecraft/inventory/SlotFurnaceFuel.java (100%) rename src/{main => game}/java/net/minecraft/inventory/SlotFurnaceOutput.java (100%) rename src/{main => game}/java/net/minecraft/inventory/SlotMerchantResult.java (100%) rename src/{main => game}/java/net/minecraft/item/EnumAction.java (100%) rename src/{main => game}/java/net/minecraft/item/EnumDyeColor.java (100%) rename src/{main => game}/java/net/minecraft/item/EnumRarity.java (100%) rename src/{main => game}/java/net/minecraft/item/Item.java (97%) rename src/{main => game}/java/net/minecraft/item/ItemAnvilBlock.java (100%) rename src/{main => game}/java/net/minecraft/item/ItemAppleGold.java (100%) rename src/{main => game}/java/net/minecraft/item/ItemArmor.java (100%) rename src/{main => game}/java/net/minecraft/item/ItemArmorStand.java (100%) rename src/{main => game}/java/net/minecraft/item/ItemAxe.java (100%) rename src/{main => game}/java/net/minecraft/item/ItemBanner.java (100%) rename src/{main => game}/java/net/minecraft/item/ItemBed.java (100%) rename src/{main => game}/java/net/minecraft/item/ItemBlock.java (96%) rename src/{main => game}/java/net/minecraft/item/ItemBoat.java (100%) rename src/{main => game}/java/net/minecraft/item/ItemBook.java (100%) rename src/{main => game}/java/net/minecraft/item/ItemBow.java (100%) rename src/{main => game}/java/net/minecraft/item/ItemBucket.java (100%) rename src/{main => game}/java/net/minecraft/item/ItemBucketMilk.java (100%) rename src/{main => game}/java/net/minecraft/item/ItemCarrotOnAStick.java (100%) rename src/{main => game}/java/net/minecraft/item/ItemCloth.java (100%) rename src/{main => game}/java/net/minecraft/item/ItemCoal.java (100%) rename src/{main => game}/java/net/minecraft/item/ItemColored.java (100%) rename src/{main => game}/java/net/minecraft/item/ItemDoor.java (100%) rename src/{main => game}/java/net/minecraft/item/ItemDoublePlant.java (100%) rename src/{main => game}/java/net/minecraft/item/ItemDye.java (100%) rename src/{main => game}/java/net/minecraft/item/ItemEditableBook.java (100%) rename src/{main => game}/java/net/minecraft/item/ItemEgg.java (94%) rename src/{main => game}/java/net/minecraft/item/ItemEmptyMap.java (100%) rename src/{main => game}/java/net/minecraft/item/ItemEnchantedBook.java (100%) rename src/{main => game}/java/net/minecraft/item/ItemEnderEye.java (96%) rename src/{main => game}/java/net/minecraft/item/ItemEnderPearl.java (94%) rename src/{main => game}/java/net/minecraft/item/ItemExpBottle.java (94%) rename src/{main => game}/java/net/minecraft/item/ItemFireball.java (100%) rename src/{main => game}/java/net/minecraft/item/ItemFirework.java (95%) rename src/{main => game}/java/net/minecraft/item/ItemFireworkCharge.java (100%) rename src/{main => game}/java/net/minecraft/item/ItemFishFood.java (100%) rename src/{main => game}/java/net/minecraft/item/ItemFishingRod.java (100%) rename src/{main => game}/java/net/minecraft/item/ItemFlintAndSteel.java (100%) rename src/{main => game}/java/net/minecraft/item/ItemFood.java (100%) rename src/{main => game}/java/net/minecraft/item/ItemGlassBottle.java (100%) rename src/{main => game}/java/net/minecraft/item/ItemHangingEntity.java (100%) rename src/{main => game}/java/net/minecraft/item/ItemHoe.java (100%) rename src/{main => game}/java/net/minecraft/item/ItemLead.java (100%) rename src/{main => game}/java/net/minecraft/item/ItemLeaves.java (100%) rename src/{main => game}/java/net/minecraft/item/ItemLilyPad.java (100%) rename src/{main => game}/java/net/minecraft/item/ItemMap.java (100%) rename src/{main => game}/java/net/minecraft/item/ItemMapBase.java (100%) rename src/{main => game}/java/net/minecraft/item/ItemMinecart.java (100%) rename src/{main => game}/java/net/minecraft/item/ItemMonsterPlacer.java (100%) rename src/{main => game}/java/net/minecraft/item/ItemMultiTexture.java (100%) rename src/{main => game}/java/net/minecraft/item/ItemNameTag.java (100%) rename src/{main => game}/java/net/minecraft/item/ItemPickaxe.java (100%) rename src/{main => game}/java/net/minecraft/item/ItemPiston.java (100%) rename src/{main => game}/java/net/minecraft/item/ItemPotion.java (100%) rename src/{main => game}/java/net/minecraft/item/ItemRecord.java (100%) rename src/{main => game}/java/net/minecraft/item/ItemRedstone.java (100%) rename src/{main => game}/java/net/minecraft/item/ItemReed.java (100%) rename src/{main => game}/java/net/minecraft/item/ItemSaddle.java (100%) rename src/{main => game}/java/net/minecraft/item/ItemSeedFood.java (100%) rename src/{main => game}/java/net/minecraft/item/ItemSeeds.java (100%) rename src/{main => game}/java/net/minecraft/item/ItemShears.java (100%) rename src/{main => game}/java/net/minecraft/item/ItemSign.java (100%) rename src/{main => game}/java/net/minecraft/item/ItemSimpleFoiled.java (100%) rename src/{main => game}/java/net/minecraft/item/ItemSkull.java (100%) rename src/{main => game}/java/net/minecraft/item/ItemSlab.java (100%) rename src/{main => game}/java/net/minecraft/item/ItemSnow.java (100%) rename src/{main => game}/java/net/minecraft/item/ItemSnowball.java (94%) rename src/{main => game}/java/net/minecraft/item/ItemSoup.java (100%) rename src/{main => game}/java/net/minecraft/item/ItemSpade.java (100%) rename src/{main => game}/java/net/minecraft/item/ItemStack.java (92%) rename src/{main => game}/java/net/minecraft/item/ItemSword.java (100%) rename src/{main => game}/java/net/minecraft/item/ItemTool.java (100%) rename src/{main => game}/java/net/minecraft/item/ItemWritableBook.java (100%) rename src/{main => game}/java/net/minecraft/item/crafting/CraftingManager.java (100%) rename src/{main => game}/java/net/minecraft/item/crafting/FurnaceRecipes.java (100%) rename src/{main => game}/java/net/minecraft/item/crafting/IRecipe.java (100%) rename src/{main => game}/java/net/minecraft/item/crafting/RecipeBookCloning.java (100%) rename src/{main => game}/java/net/minecraft/item/crafting/RecipeFireworks.java (100%) rename src/{main => game}/java/net/minecraft/item/crafting/RecipeRepairItem.java (100%) rename src/{main => game}/java/net/minecraft/item/crafting/RecipesArmor.java (100%) rename src/{main => game}/java/net/minecraft/item/crafting/RecipesArmorDyes.java (100%) rename src/{main => game}/java/net/minecraft/item/crafting/RecipesBanners.java (100%) rename src/{main => game}/java/net/minecraft/item/crafting/RecipesCrafting.java (100%) rename src/{main => game}/java/net/minecraft/item/crafting/RecipesDyes.java (100%) rename src/{main => game}/java/net/minecraft/item/crafting/RecipesFood.java (100%) rename src/{main => game}/java/net/minecraft/item/crafting/RecipesIngots.java (100%) rename src/{main => game}/java/net/minecraft/item/crafting/RecipesMapCloning.java (100%) rename src/{main => game}/java/net/minecraft/item/crafting/RecipesMapExtending.java (100%) rename src/{main => game}/java/net/minecraft/item/crafting/RecipesTools.java (100%) rename src/{main => game}/java/net/minecraft/item/crafting/RecipesWeapons.java (100%) rename src/{main => game}/java/net/minecraft/item/crafting/ShapedRecipes.java (100%) rename src/{main => game}/java/net/minecraft/item/crafting/ShapelessRecipes.java (100%) rename src/{main => game}/java/net/minecraft/nbt/CompressedStreamTools.java (100%) rename src/{main => game}/java/net/minecraft/nbt/JsonToNBT.java (100%) rename src/{main => game}/java/net/minecraft/nbt/NBTBase.java (100%) rename src/{main => game}/java/net/minecraft/nbt/NBTException.java (100%) rename src/{main => game}/java/net/minecraft/nbt/NBTSizeTracker.java (100%) rename src/{main => game}/java/net/minecraft/nbt/NBTTagByte.java (100%) rename src/{main => game}/java/net/minecraft/nbt/NBTTagByteArray.java (100%) rename src/{main => game}/java/net/minecraft/nbt/NBTTagCompound.java (100%) rename src/{main => game}/java/net/minecraft/nbt/NBTTagDouble.java (100%) rename src/{main => game}/java/net/minecraft/nbt/NBTTagEnd.java (100%) rename src/{main => game}/java/net/minecraft/nbt/NBTTagFloat.java (100%) rename src/{main => game}/java/net/minecraft/nbt/NBTTagInt.java (100%) rename src/{main => game}/java/net/minecraft/nbt/NBTTagIntArray.java (100%) rename src/{main => game}/java/net/minecraft/nbt/NBTTagList.java (100%) rename src/{main => game}/java/net/minecraft/nbt/NBTTagLong.java (100%) rename src/{main => game}/java/net/minecraft/nbt/NBTTagShort.java (100%) rename src/{main => game}/java/net/minecraft/nbt/NBTTagString.java (100%) rename src/{main => game}/java/net/minecraft/nbt/NBTUtil.java (100%) rename src/{main => game}/java/net/minecraft/network/EnumConnectionState.java (100%) rename src/{main => game}/java/net/minecraft/network/EnumPacketDirection.java (100%) rename src/{main => game}/java/net/minecraft/network/INetHandler.java (100%) rename src/{main => game}/java/net/minecraft/network/NetHandlerPlayServer.java (94%) rename src/{main => game}/java/net/minecraft/network/Packet.java (100%) rename src/{main => game}/java/net/minecraft/network/PacketBuffer.java (100%) rename src/{main => game}/java/net/minecraft/network/ServerStatusResponse.java (100%) rename src/{main => game}/java/net/minecraft/network/handshake/INetHandlerHandshakeServer.java (100%) rename src/{main => game}/java/net/minecraft/network/handshake/client/C00Handshake.java (100%) rename src/{main => game}/java/net/minecraft/network/login/INetHandlerLoginClient.java (100%) rename src/{main => game}/java/net/minecraft/network/login/INetHandlerLoginServer.java (100%) rename src/{main => game}/java/net/minecraft/network/login/client/C00PacketLoginStart.java (80%) rename src/{main => game}/java/net/minecraft/network/login/client/C01PacketEncryptionResponse.java (100%) rename src/{main => game}/java/net/minecraft/network/login/server/S00PacketDisconnect.java (100%) rename src/{main => game}/java/net/minecraft/network/login/server/S01PacketEncryptionRequest.java (100%) rename src/{main => game}/java/net/minecraft/network/login/server/S02PacketLoginSuccess.java (84%) rename src/{main => game}/java/net/minecraft/network/login/server/S03PacketEnableCompression.java (100%) rename src/{main => game}/java/net/minecraft/network/play/INetHandlerPlayClient.java (100%) rename src/{main => game}/java/net/minecraft/network/play/INetHandlerPlayServer.java (100%) rename src/{main => game}/java/net/minecraft/network/play/client/C00PacketKeepAlive.java (100%) rename src/{main => game}/java/net/minecraft/network/play/client/C01PacketChatMessage.java (100%) rename src/{main => game}/java/net/minecraft/network/play/client/C02PacketUseEntity.java (100%) rename src/{main => game}/java/net/minecraft/network/play/client/C03PacketPlayer.java (100%) rename src/{main => game}/java/net/minecraft/network/play/client/C07PacketPlayerDigging.java (100%) rename src/{main => game}/java/net/minecraft/network/play/client/C08PacketPlayerBlockPlacement.java (100%) rename src/{main => game}/java/net/minecraft/network/play/client/C09PacketHeldItemChange.java (100%) rename src/{main => game}/java/net/minecraft/network/play/client/C0APacketAnimation.java (100%) rename src/{main => game}/java/net/minecraft/network/play/client/C0BPacketEntityAction.java (100%) rename src/{main => game}/java/net/minecraft/network/play/client/C0CPacketInput.java (100%) rename src/{main => game}/java/net/minecraft/network/play/client/C0DPacketCloseWindow.java (100%) rename src/{main => game}/java/net/minecraft/network/play/client/C0EPacketClickWindow.java (100%) rename src/{main => game}/java/net/minecraft/network/play/client/C0FPacketConfirmTransaction.java (100%) rename src/{main => game}/java/net/minecraft/network/play/client/C10PacketCreativeInventoryAction.java (100%) rename src/{main => game}/java/net/minecraft/network/play/client/C11PacketEnchantItem.java (100%) rename src/{main => game}/java/net/minecraft/network/play/client/C12PacketUpdateSign.java (100%) rename src/{main => game}/java/net/minecraft/network/play/client/C13PacketPlayerAbilities.java (100%) rename src/{main => game}/java/net/minecraft/network/play/client/C14PacketTabComplete.java (100%) rename src/{main => game}/java/net/minecraft/network/play/client/C15PacketClientSettings.java (100%) rename src/{main => game}/java/net/minecraft/network/play/client/C16PacketClientStatus.java (100%) rename src/{main => game}/java/net/minecraft/network/play/client/C17PacketCustomPayload.java (100%) rename src/{main => game}/java/net/minecraft/network/play/client/C18PacketSpectate.java (100%) rename src/{main => game}/java/net/minecraft/network/play/client/C19PacketResourcePackStatus.java (100%) rename src/{main => game}/java/net/minecraft/network/play/server/S00PacketKeepAlive.java (100%) rename src/{main => game}/java/net/minecraft/network/play/server/S01PacketJoinGame.java (100%) rename src/{main => game}/java/net/minecraft/network/play/server/S02PacketChat.java (100%) rename src/{main => game}/java/net/minecraft/network/play/server/S03PacketTimeUpdate.java (100%) rename src/{main => game}/java/net/minecraft/network/play/server/S04PacketEntityEquipment.java (100%) rename src/{main => game}/java/net/minecraft/network/play/server/S05PacketSpawnPosition.java (100%) rename src/{main => game}/java/net/minecraft/network/play/server/S06PacketUpdateHealth.java (100%) rename src/{main => game}/java/net/minecraft/network/play/server/S07PacketRespawn.java (100%) rename src/{main => game}/java/net/minecraft/network/play/server/S08PacketPlayerPosLook.java (100%) rename src/{main => game}/java/net/minecraft/network/play/server/S09PacketHeldItemChange.java (100%) rename src/{main => game}/java/net/minecraft/network/play/server/S0APacketUseBed.java (100%) rename src/{main => game}/java/net/minecraft/network/play/server/S0BPacketAnimation.java (100%) rename src/{main => game}/java/net/minecraft/network/play/server/S0CPacketSpawnPlayer.java (100%) rename src/{main => game}/java/net/minecraft/network/play/server/S0DPacketCollectItem.java (100%) rename src/{main => game}/java/net/minecraft/network/play/server/S0EPacketSpawnObject.java (100%) rename src/{main => game}/java/net/minecraft/network/play/server/S0FPacketSpawnMob.java (100%) rename src/{main => game}/java/net/minecraft/network/play/server/S10PacketSpawnPainting.java (100%) rename src/{main => game}/java/net/minecraft/network/play/server/S11PacketSpawnExperienceOrb.java (100%) rename src/{main => game}/java/net/minecraft/network/play/server/S12PacketEntityVelocity.java (100%) rename src/{main => game}/java/net/minecraft/network/play/server/S13PacketDestroyEntities.java (100%) rename src/{main => game}/java/net/minecraft/network/play/server/S14PacketEntity.java (100%) rename src/{main => game}/java/net/minecraft/network/play/server/S18PacketEntityTeleport.java (100%) rename src/{main => game}/java/net/minecraft/network/play/server/S19PacketEntityHeadLook.java (100%) rename src/{main => game}/java/net/minecraft/network/play/server/S19PacketEntityStatus.java (100%) rename src/{main => game}/java/net/minecraft/network/play/server/S1BPacketEntityAttach.java (100%) rename src/{main => game}/java/net/minecraft/network/play/server/S1CPacketEntityMetadata.java (100%) rename src/{main => game}/java/net/minecraft/network/play/server/S1DPacketEntityEffect.java (100%) rename src/{main => game}/java/net/minecraft/network/play/server/S1EPacketRemoveEntityEffect.java (100%) rename src/{main => game}/java/net/minecraft/network/play/server/S1FPacketSetExperience.java (100%) rename src/{main => game}/java/net/minecraft/network/play/server/S20PacketEntityProperties.java (100%) rename src/{main => game}/java/net/minecraft/network/play/server/S21PacketChunkData.java (100%) rename src/{main => game}/java/net/minecraft/network/play/server/S22PacketMultiBlockChange.java (100%) rename src/{main => game}/java/net/minecraft/network/play/server/S23PacketBlockChange.java (100%) rename src/{main => game}/java/net/minecraft/network/play/server/S24PacketBlockAction.java (100%) rename src/{main => game}/java/net/minecraft/network/play/server/S25PacketBlockBreakAnim.java (100%) rename src/{main => game}/java/net/minecraft/network/play/server/S26PacketMapChunkBulk.java (100%) rename src/{main => game}/java/net/minecraft/network/play/server/S27PacketExplosion.java (100%) rename src/{main => game}/java/net/minecraft/network/play/server/S28PacketEffect.java (100%) rename src/{main => game}/java/net/minecraft/network/play/server/S29PacketSoundEffect.java (100%) rename src/{main => game}/java/net/minecraft/network/play/server/S2APacketParticles.java (100%) rename src/{main => game}/java/net/minecraft/network/play/server/S2BPacketChangeGameState.java (100%) rename src/{main => game}/java/net/minecraft/network/play/server/S2CPacketSpawnGlobalEntity.java (100%) rename src/{main => game}/java/net/minecraft/network/play/server/S2DPacketOpenWindow.java (100%) rename src/{main => game}/java/net/minecraft/network/play/server/S2EPacketCloseWindow.java (100%) rename src/{main => game}/java/net/minecraft/network/play/server/S2FPacketSetSlot.java (100%) rename src/{main => game}/java/net/minecraft/network/play/server/S30PacketWindowItems.java (100%) rename src/{main => game}/java/net/minecraft/network/play/server/S31PacketWindowProperty.java (100%) rename src/{main => game}/java/net/minecraft/network/play/server/S32PacketConfirmTransaction.java (100%) rename src/{main => game}/java/net/minecraft/network/play/server/S33PacketUpdateSign.java (100%) rename src/{main => game}/java/net/minecraft/network/play/server/S34PacketMaps.java (100%) rename src/{main => game}/java/net/minecraft/network/play/server/S35PacketUpdateTileEntity.java (100%) rename src/{main => game}/java/net/minecraft/network/play/server/S36PacketSignEditorOpen.java (100%) rename src/{main => game}/java/net/minecraft/network/play/server/S37PacketStatistics.java (100%) rename src/{main => game}/java/net/minecraft/network/play/server/S38PacketPlayerListItem.java (100%) rename src/{main => game}/java/net/minecraft/network/play/server/S39PacketPlayerAbilities.java (100%) rename src/{main => game}/java/net/minecraft/network/play/server/S3APacketTabComplete.java (100%) rename src/{main => game}/java/net/minecraft/network/play/server/S3BPacketScoreboardObjective.java (100%) rename src/{main => game}/java/net/minecraft/network/play/server/S3CPacketUpdateScore.java (100%) rename src/{main => game}/java/net/minecraft/network/play/server/S3DPacketDisplayScoreboard.java (100%) rename src/{main => game}/java/net/minecraft/network/play/server/S3EPacketTeams.java (100%) rename src/{main => game}/java/net/minecraft/network/play/server/S3FPacketCustomPayload.java (100%) rename src/{main => game}/java/net/minecraft/network/play/server/S40PacketDisconnect.java (100%) rename src/{main => game}/java/net/minecraft/network/play/server/S41PacketServerDifficulty.java (100%) rename src/{main => game}/java/net/minecraft/network/play/server/S42PacketCombatEvent.java (100%) rename src/{main => game}/java/net/minecraft/network/play/server/S43PacketCamera.java (100%) rename src/{main => game}/java/net/minecraft/network/play/server/S44PacketWorldBorder.java (100%) rename src/{main => game}/java/net/minecraft/network/play/server/S45PacketTitle.java (100%) rename src/{main => game}/java/net/minecraft/network/play/server/S46PacketSetCompressionLevel.java (100%) rename src/{main => game}/java/net/minecraft/network/play/server/S47PacketPlayerListHeaderFooter.java (100%) rename src/{main => game}/java/net/minecraft/network/play/server/S48PacketResourcePackSend.java (100%) rename src/{main => game}/java/net/minecraft/network/play/server/S49PacketUpdateEntityNBT.java (100%) rename src/{main => game}/java/net/minecraft/pathfinding/Path.java (100%) rename src/{main => game}/java/net/minecraft/pathfinding/PathEntity.java (100%) rename src/{main => game}/java/net/minecraft/pathfinding/PathFinder.java (100%) rename src/{main => game}/java/net/minecraft/pathfinding/PathNavigate.java (95%) rename src/{main => game}/java/net/minecraft/pathfinding/PathNavigateClimber.java (100%) rename src/{main => game}/java/net/minecraft/pathfinding/PathNavigateGround.java (100%) rename src/{main => game}/java/net/minecraft/pathfinding/PathNavigateSwimmer.java (100%) rename src/{main => game}/java/net/minecraft/pathfinding/PathPoint.java (100%) rename src/{main => game}/java/net/minecraft/potion/Potion.java (100%) rename src/{main => game}/java/net/minecraft/potion/PotionAbsorption.java (100%) rename src/{main => game}/java/net/minecraft/potion/PotionAttackDamage.java (100%) rename src/{main => game}/java/net/minecraft/potion/PotionEffect.java (100%) rename src/{main => game}/java/net/minecraft/potion/PotionHealth.java (100%) rename src/{main => game}/java/net/minecraft/potion/PotionHealthBoost.java (100%) rename src/{main => game}/java/net/minecraft/potion/PotionHelper.java (100%) rename src/{main => game}/java/net/minecraft/scoreboard/GoalColor.java (100%) rename src/{main => game}/java/net/minecraft/scoreboard/IScoreObjectiveCriteria.java (100%) rename src/{main => game}/java/net/minecraft/scoreboard/Score.java (100%) rename src/{main => game}/java/net/minecraft/scoreboard/ScoreDummyCriteria.java (100%) rename src/{main => game}/java/net/minecraft/scoreboard/ScoreHealthCriteria.java (100%) rename src/{main => game}/java/net/minecraft/scoreboard/ScoreObjective.java (80%) rename src/{main => game}/java/net/minecraft/scoreboard/ScorePlayerTeam.java (100%) rename src/{main => game}/java/net/minecraft/scoreboard/Scoreboard.java (100%) rename src/{main => game}/java/net/minecraft/scoreboard/ScoreboardSaveData.java (100%) rename src/{main => game}/java/net/minecraft/scoreboard/ServerScoreboard.java (100%) rename src/{main => game}/java/net/minecraft/scoreboard/Team.java (100%) rename src/{main => game}/java/net/minecraft/server/MinecraftServer.java (90%) rename src/{main => game}/java/net/minecraft/server/management/ItemInWorldManager.java (100%) rename src/{main => game}/java/net/minecraft/server/management/LowerStringMap.java (100%) rename src/{main => game}/java/net/minecraft/server/management/PlayerManager.java (100%) rename src/{main => game}/java/net/minecraft/server/management/ServerConfigurationManager.java (93%) rename src/{main => game}/java/net/minecraft/server/network/NetHandlerLoginServer.java (79%) rename src/{main => game}/java/net/minecraft/stats/Achievement.java (100%) rename src/{main => game}/java/net/minecraft/stats/AchievementList.java (100%) rename src/{main => game}/java/net/minecraft/stats/IStatStringFormat.java (100%) rename src/{main => game}/java/net/minecraft/stats/IStatType.java (100%) rename src/{main => game}/java/net/minecraft/stats/ObjectiveStat.java (100%) rename src/{main => game}/java/net/minecraft/stats/StatBase.java (100%) rename src/{main => game}/java/net/minecraft/stats/StatBasic.java (100%) rename src/{main => game}/java/net/minecraft/stats/StatCrafting.java (100%) rename src/{main => game}/java/net/minecraft/stats/StatFileWriter.java (100%) rename src/{main => game}/java/net/minecraft/stats/StatList.java (100%) rename src/{main => game}/java/net/minecraft/stats/StatisticsFile.java (100%) rename src/{main => game}/java/net/minecraft/tileentity/IHopper.java (100%) rename src/{main => game}/java/net/minecraft/tileentity/MobSpawnerBaseLogic.java (100%) rename src/{main => game}/java/net/minecraft/tileentity/TileEntity.java (100%) rename src/{main => game}/java/net/minecraft/tileentity/TileEntityBanner.java (100%) rename src/{main => game}/java/net/minecraft/tileentity/TileEntityBeacon.java (100%) rename src/{main => game}/java/net/minecraft/tileentity/TileEntityBrewingStand.java (100%) rename src/{main => game}/java/net/minecraft/tileentity/TileEntityChest.java (100%) rename src/{main => game}/java/net/minecraft/tileentity/TileEntityCommandBlock.java (100%) rename src/{main => game}/java/net/minecraft/tileentity/TileEntityComparator.java (100%) rename src/{main => game}/java/net/minecraft/tileentity/TileEntityDaylightDetector.java (100%) rename src/{main => game}/java/net/minecraft/tileentity/TileEntityDispenser.java (100%) rename src/{main => game}/java/net/minecraft/tileentity/TileEntityDropper.java (100%) rename src/{main => game}/java/net/minecraft/tileentity/TileEntityEnchantmentTable.java (100%) rename src/{main => game}/java/net/minecraft/tileentity/TileEntityEndPortal.java (100%) rename src/{main => game}/java/net/minecraft/tileentity/TileEntityEnderChest.java (100%) rename src/{main => game}/java/net/minecraft/tileentity/TileEntityFlowerPot.java (100%) rename src/{main => game}/java/net/minecraft/tileentity/TileEntityFurnace.java (100%) rename src/{main => game}/java/net/minecraft/tileentity/TileEntityHopper.java (100%) rename src/{main => game}/java/net/minecraft/tileentity/TileEntityLockable.java (100%) rename src/{main => game}/java/net/minecraft/tileentity/TileEntityMobSpawner.java (100%) rename src/{main => game}/java/net/minecraft/tileentity/TileEntityNote.java (100%) rename src/{main => game}/java/net/minecraft/tileentity/TileEntityPiston.java (100%) rename src/{main => game}/java/net/minecraft/tileentity/TileEntitySign.java (87%) rename src/{main => game}/java/net/minecraft/tileentity/TileEntitySkull.java (100%) rename src/{main => game}/java/net/minecraft/util/AxisAlignedBB.java (100%) rename src/{main => game}/java/net/minecraft/util/BlockPos.java (100%) rename src/{main => game}/java/net/minecraft/util/Cartesian.java (100%) rename src/{main => game}/java/net/minecraft/util/ChatAllowedCharacters.java (100%) rename src/{main => game}/java/net/minecraft/util/ChatComponentProcessor.java (100%) rename src/{main => game}/java/net/minecraft/util/ChatComponentScore.java (100%) rename src/{main => game}/java/net/minecraft/util/ChatComponentSelector.java (100%) rename src/{main => game}/java/net/minecraft/util/ChatComponentStyle.java (95%) rename src/{main => game}/java/net/minecraft/util/ChatComponentText.java (100%) rename src/{main => game}/java/net/minecraft/util/ChatComponentTranslation.java (100%) rename src/{main => game}/java/net/minecraft/util/ChatComponentTranslationFormatException.java (100%) rename src/{main => game}/java/net/minecraft/util/ChatStyle.java (95%) rename src/{main => game}/java/net/minecraft/util/ClassInheritanceMultiMap.java (100%) rename src/{main => game}/java/net/minecraft/util/CombatEntry.java (100%) rename src/{main => game}/java/net/minecraft/util/CombatTracker.java (100%) rename src/{main => game}/java/net/minecraft/util/DamageSource.java (100%) rename src/{main => game}/java/net/minecraft/util/EnchantmentNameParts.java (100%) rename src/{main => game}/java/net/minecraft/util/EntityDamageSource.java (100%) rename src/{main => game}/java/net/minecraft/util/EntityDamageSourceIndirect.java (100%) rename src/{main => game}/java/net/minecraft/util/EntitySelectors.java (100%) rename src/{main => game}/java/net/minecraft/util/EnumChatFormatting.java (100%) rename src/{main => game}/java/net/minecraft/util/EnumFacing.java (100%) rename src/{main => game}/java/net/minecraft/util/EnumParticleTypes.java (100%) rename src/{main => game}/java/net/minecraft/util/EnumWorldBlockLayer.java (100%) rename src/{main => game}/java/net/minecraft/util/FoodStats.java (100%) rename src/{main => game}/java/net/minecraft/util/FrameTimer.java (100%) rename src/{main => game}/java/net/minecraft/util/IChatComponent.java (100%) rename src/{main => game}/java/net/minecraft/util/IJsonSerializable.java (100%) rename src/{main => game}/java/net/minecraft/util/IObjectIntIterable.java (100%) rename src/{main => game}/java/net/minecraft/util/IProgressUpdate.java (100%) rename src/{main => game}/java/net/minecraft/util/IRegistry.java (100%) rename src/{main => game}/java/net/minecraft/util/IStringSerializable.java (100%) rename src/{main => game}/java/net/minecraft/util/IThreadListener.java (100%) rename src/{main => game}/java/net/minecraft/util/ITickable.java (100%) rename src/{main => game}/java/net/minecraft/util/IntHashMap.java (100%) rename src/{main => game}/java/net/minecraft/util/IntegerCache.java (100%) rename src/{main => game}/java/net/minecraft/util/JsonSerializableSet.java (100%) rename src/{main => game}/java/net/minecraft/util/LazyLoadBase.java (100%) rename src/{main => game}/java/net/minecraft/util/LoggingPrintStream.java (100%) rename src/{main => game}/java/net/minecraft/util/LongHashMap.java (100%) rename src/{main => game}/java/net/minecraft/util/MapPopulator.java (100%) rename src/{main => game}/java/net/minecraft/util/MathHelper.java (100%) rename src/{main => game}/java/net/minecraft/util/Matrix4f.java (100%) rename src/{main => game}/java/net/minecraft/util/MinecraftError.java (100%) rename src/{main => game}/java/net/minecraft/util/MouseFilter.java (100%) rename src/{main => game}/java/net/minecraft/util/MouseHelper.java (88%) rename src/{main => game}/java/net/minecraft/util/MovementInput.java (100%) rename src/{main => game}/java/net/minecraft/util/MovementInputFromOptions.java (60%) rename src/{main => game}/java/net/minecraft/util/MovingObjectPosition.java (100%) rename src/{main => game}/java/net/minecraft/util/ObjectIntIdentityMap.java (100%) rename src/{main => game}/java/net/minecraft/util/RegistryDefaulted.java (100%) rename src/{main => game}/java/net/minecraft/util/RegistryNamespaced.java (100%) rename src/{main => game}/java/net/minecraft/util/RegistryNamespacedDefaultedByKey.java (100%) rename src/{main => game}/java/net/minecraft/util/RegistrySimple.java (100%) rename src/{main => game}/java/net/minecraft/util/ReportedException.java (100%) rename src/{main => game}/java/net/minecraft/util/ResourceLocation.java (100%) rename src/{main => game}/java/net/minecraft/util/Rotations.java (100%) rename src/{main => game}/java/net/minecraft/util/ScreenShotHelper.java (100%) rename src/{main => game}/java/net/minecraft/util/Session.java (90%) rename src/{main => game}/java/net/minecraft/util/StatCollector.java (100%) rename src/{main => game}/java/net/minecraft/util/StringTranslate.java (92%) rename src/{main => game}/java/net/minecraft/util/StringUtils.java (95%) rename src/{main => game}/java/net/minecraft/util/Timer.java (92%) rename src/{main => game}/java/net/minecraft/util/Tuple.java (100%) rename src/{main => game}/java/net/minecraft/util/TupleIntJsonSerializable.java (100%) rename src/{main => game}/java/net/minecraft/util/Util.java (100%) rename src/{main => game}/java/net/minecraft/util/Vec3.java (100%) rename src/{main => game}/java/net/minecraft/util/Vec3i.java (100%) rename src/{main => game}/java/net/minecraft/util/Vec4b.java (100%) rename src/{main => game}/java/net/minecraft/util/Vector3d.java (100%) rename src/{main => game}/java/net/minecraft/util/WeightedRandom.java (100%) rename src/{main => game}/java/net/minecraft/util/WeightedRandomChestContent.java (100%) rename src/{main => game}/java/net/minecraft/util/WeightedRandomFishable.java (100%) rename src/{main => game}/java/net/minecraft/village/MerchantRecipe.java (100%) rename src/{main => game}/java/net/minecraft/village/MerchantRecipeList.java (100%) rename src/{main => game}/java/net/minecraft/village/Village.java (100%) rename src/{main => game}/java/net/minecraft/village/VillageCollection.java (100%) rename src/{main => game}/java/net/minecraft/village/VillageDoorInfo.java (100%) rename src/{main => game}/java/net/minecraft/village/VillageSiege.java (100%) rename src/{main => game}/java/net/minecraft/world/ChunkCache.java (100%) rename src/{main => game}/java/net/minecraft/world/ChunkCoordIntPair.java (100%) rename src/{main => game}/java/net/minecraft/world/ColorizerFoliage.java (100%) rename src/{main => game}/java/net/minecraft/world/ColorizerGrass.java (100%) rename src/{main => game}/java/net/minecraft/world/DifficultyInstance.java (100%) rename src/{main => game}/java/net/minecraft/world/EnumDifficulty.java (100%) rename src/{main => game}/java/net/minecraft/world/EnumSkyBlock.java (100%) rename src/{main => game}/java/net/minecraft/world/Explosion.java (100%) rename src/{main => game}/java/net/minecraft/world/GameRules.java (95%) rename src/{main => game}/java/net/minecraft/world/IBlockAccess.java (100%) rename src/{main => game}/java/net/minecraft/world/IInteractionObject.java (100%) rename src/{main => game}/java/net/minecraft/world/ILockableContainer.java (100%) rename src/{main => game}/java/net/minecraft/world/IWorldAccess.java (100%) rename src/{main => game}/java/net/minecraft/world/IWorldNameable.java (100%) rename src/{main => game}/java/net/minecraft/world/LockCode.java (100%) rename src/{main => game}/java/net/minecraft/world/MinecraftException.java (100%) rename src/{main => game}/java/net/minecraft/world/NextTickListEntry.java (100%) rename src/{main => game}/java/net/minecraft/world/SpawnerAnimals.java (100%) rename src/{main => game}/java/net/minecraft/world/Teleporter.java (100%) rename src/{main => game}/java/net/minecraft/world/World.java (95%) rename src/{main => game}/java/net/minecraft/world/WorldManager.java (100%) rename src/{main => game}/java/net/minecraft/world/WorldProvider.java (100%) rename src/{main => game}/java/net/minecraft/world/WorldProviderEnd.java (100%) rename src/{main => game}/java/net/minecraft/world/WorldProviderHell.java (100%) rename src/{main => game}/java/net/minecraft/world/WorldProviderSurface.java (100%) rename src/{main => game}/java/net/minecraft/world/WorldSavedData.java (100%) rename src/{main => game}/java/net/minecraft/world/WorldServer.java (94%) rename src/{main => game}/java/net/minecraft/world/WorldServerMulti.java (93%) rename src/{main => game}/java/net/minecraft/world/WorldSettings.java (100%) rename src/{main => game}/java/net/minecraft/world/WorldType.java (100%) rename src/{main => game}/java/net/minecraft/world/biome/BiomeCache.java (100%) rename src/{main => game}/java/net/minecraft/world/biome/BiomeColorHelper.java (100%) rename src/{main => game}/java/net/minecraft/world/biome/BiomeDecorator.java (100%) rename src/{main => game}/java/net/minecraft/world/biome/BiomeEndDecorator.java (100%) rename src/{main => game}/java/net/minecraft/world/biome/BiomeGenBase.java (100%) rename src/{main => game}/java/net/minecraft/world/biome/BiomeGenBeach.java (100%) rename src/{main => game}/java/net/minecraft/world/biome/BiomeGenDesert.java (100%) rename src/{main => game}/java/net/minecraft/world/biome/BiomeGenEnd.java (100%) rename src/{main => game}/java/net/minecraft/world/biome/BiomeGenForest.java (100%) rename src/{main => game}/java/net/minecraft/world/biome/BiomeGenHell.java (100%) rename src/{main => game}/java/net/minecraft/world/biome/BiomeGenHills.java (100%) rename src/{main => game}/java/net/minecraft/world/biome/BiomeGenJungle.java (100%) rename src/{main => game}/java/net/minecraft/world/biome/BiomeGenMesa.java (100%) rename src/{main => game}/java/net/minecraft/world/biome/BiomeGenMushroomIsland.java (100%) rename src/{main => game}/java/net/minecraft/world/biome/BiomeGenMutated.java (100%) rename src/{main => game}/java/net/minecraft/world/biome/BiomeGenOcean.java (100%) rename src/{main => game}/java/net/minecraft/world/biome/BiomeGenPlains.java (100%) rename src/{main => game}/java/net/minecraft/world/biome/BiomeGenRiver.java (100%) rename src/{main => game}/java/net/minecraft/world/biome/BiomeGenSavanna.java (100%) rename src/{main => game}/java/net/minecraft/world/biome/BiomeGenSnow.java (100%) rename src/{main => game}/java/net/minecraft/world/biome/BiomeGenStoneBeach.java (100%) rename src/{main => game}/java/net/minecraft/world/biome/BiomeGenSwamp.java (100%) rename src/{main => game}/java/net/minecraft/world/biome/BiomeGenTaiga.java (100%) rename src/{main => game}/java/net/minecraft/world/biome/WorldChunkManager.java (100%) rename src/{main => game}/java/net/minecraft/world/biome/WorldChunkManagerHell.java (100%) rename src/{main => game}/java/net/minecraft/world/border/EnumBorderStatus.java (100%) rename src/{main => game}/java/net/minecraft/world/border/IBorderListener.java (100%) rename src/{main => game}/java/net/minecraft/world/border/WorldBorder.java (93%) rename src/{main => game}/java/net/minecraft/world/chunk/Chunk.java (96%) rename src/{main => game}/java/net/minecraft/world/chunk/ChunkPrimer.java (100%) rename src/{main => game}/java/net/minecraft/world/chunk/EmptyChunk.java (100%) rename src/{main => game}/java/net/minecraft/world/chunk/IChunkProvider.java (100%) rename src/{main => game}/java/net/minecraft/world/chunk/NibbleArray.java (100%) rename src/{main => game}/java/net/minecraft/world/chunk/storage/AnvilChunkLoader.java (100%) rename src/{main => game}/java/net/minecraft/world/chunk/storage/ChunkLoader.java (100%) rename src/{main => game}/java/net/minecraft/world/chunk/storage/ExtendedBlockStorage.java (100%) rename src/{main => game}/java/net/minecraft/world/chunk/storage/IChunkLoader.java (100%) rename src/{main => game}/java/net/minecraft/world/chunk/storage/NibbleArrayReader.java (100%) rename src/{main => game}/java/net/minecraft/world/chunk/storage/RegionFile.java (100%) rename src/{main => game}/java/net/minecraft/world/demo/DemoWorldManager.java (100%) rename src/{main => game}/java/net/minecraft/world/demo/DemoWorldServer.java (89%) rename src/{main => game}/java/net/minecraft/world/gen/ChunkProviderDebug.java (100%) rename src/{main => game}/java/net/minecraft/world/gen/ChunkProviderEnd.java (100%) rename src/{main => game}/java/net/minecraft/world/gen/ChunkProviderFlat.java (100%) rename src/{main => game}/java/net/minecraft/world/gen/ChunkProviderGenerate.java (100%) rename src/{main => game}/java/net/minecraft/world/gen/ChunkProviderHell.java (100%) rename src/{main => game}/java/net/minecraft/world/gen/ChunkProviderServer.java (100%) rename src/{main => game}/java/net/minecraft/world/gen/ChunkProviderSettings.java (100%) rename src/{main => game}/java/net/minecraft/world/gen/FlatGeneratorInfo.java (100%) rename src/{main => game}/java/net/minecraft/world/gen/FlatLayerInfo.java (100%) rename src/{main => game}/java/net/minecraft/world/gen/GeneratorBushFeature.java (100%) rename src/{main => game}/java/net/minecraft/world/gen/MapGenBase.java (100%) rename src/{main => game}/java/net/minecraft/world/gen/MapGenCaves.java (100%) rename src/{main => game}/java/net/minecraft/world/gen/MapGenCavesHell.java (100%) rename src/{main => game}/java/net/minecraft/world/gen/MapGenRavine.java (100%) rename src/{main => game}/java/net/minecraft/world/gen/NoiseGenerator.java (100%) rename src/{main => game}/java/net/minecraft/world/gen/NoiseGeneratorImproved.java (100%) rename src/{main => game}/java/net/minecraft/world/gen/NoiseGeneratorOctaves.java (100%) rename src/{main => game}/java/net/minecraft/world/gen/NoiseGeneratorPerlin.java (100%) rename src/{main => game}/java/net/minecraft/world/gen/NoiseGeneratorSimplex.java (100%) rename src/{main => game}/java/net/minecraft/world/gen/feature/WorldGenAbstractTree.java (100%) rename src/{main => game}/java/net/minecraft/world/gen/feature/WorldGenBigMushroom.java (100%) rename src/{main => game}/java/net/minecraft/world/gen/feature/WorldGenBigTree.java (100%) rename src/{main => game}/java/net/minecraft/world/gen/feature/WorldGenBlockBlob.java (100%) rename src/{main => game}/java/net/minecraft/world/gen/feature/WorldGenCactus.java (100%) rename src/{main => game}/java/net/minecraft/world/gen/feature/WorldGenCanopyTree.java (100%) rename src/{main => game}/java/net/minecraft/world/gen/feature/WorldGenClay.java (100%) rename src/{main => game}/java/net/minecraft/world/gen/feature/WorldGenDeadBush.java (100%) rename src/{main => game}/java/net/minecraft/world/gen/feature/WorldGenDesertWells.java (100%) rename src/{main => game}/java/net/minecraft/world/gen/feature/WorldGenDoublePlant.java (100%) rename src/{main => game}/java/net/minecraft/world/gen/feature/WorldGenDungeons.java (100%) rename src/{main => game}/java/net/minecraft/world/gen/feature/WorldGenFire.java (100%) rename src/{main => game}/java/net/minecraft/world/gen/feature/WorldGenFlowers.java (100%) rename src/{main => game}/java/net/minecraft/world/gen/feature/WorldGenForest.java (100%) rename src/{main => game}/java/net/minecraft/world/gen/feature/WorldGenGlowStone1.java (100%) rename src/{main => game}/java/net/minecraft/world/gen/feature/WorldGenGlowStone2.java (100%) rename src/{main => game}/java/net/minecraft/world/gen/feature/WorldGenHellLava.java (100%) rename src/{main => game}/java/net/minecraft/world/gen/feature/WorldGenHugeTrees.java (100%) rename src/{main => game}/java/net/minecraft/world/gen/feature/WorldGenIcePath.java (100%) rename src/{main => game}/java/net/minecraft/world/gen/feature/WorldGenIceSpike.java (100%) rename src/{main => game}/java/net/minecraft/world/gen/feature/WorldGenLakes.java (100%) rename src/{main => game}/java/net/minecraft/world/gen/feature/WorldGenLiquids.java (100%) rename src/{main => game}/java/net/minecraft/world/gen/feature/WorldGenMegaJungle.java (100%) rename src/{main => game}/java/net/minecraft/world/gen/feature/WorldGenMegaPineTree.java (100%) rename src/{main => game}/java/net/minecraft/world/gen/feature/WorldGenMelon.java (100%) rename src/{main => game}/java/net/minecraft/world/gen/feature/WorldGenMinable.java (100%) rename src/{main => game}/java/net/minecraft/world/gen/feature/WorldGenPumpkin.java (100%) rename src/{main => game}/java/net/minecraft/world/gen/feature/WorldGenReed.java (100%) rename src/{main => game}/java/net/minecraft/world/gen/feature/WorldGenSand.java (100%) rename src/{main => game}/java/net/minecraft/world/gen/feature/WorldGenSavannaTree.java (100%) rename src/{main => game}/java/net/minecraft/world/gen/feature/WorldGenShrub.java (100%) rename src/{main => game}/java/net/minecraft/world/gen/feature/WorldGenSpikes.java (100%) rename src/{main => game}/java/net/minecraft/world/gen/feature/WorldGenSwamp.java (100%) rename src/{main => game}/java/net/minecraft/world/gen/feature/WorldGenTaiga1.java (100%) rename src/{main => game}/java/net/minecraft/world/gen/feature/WorldGenTaiga2.java (100%) rename src/{main => game}/java/net/minecraft/world/gen/feature/WorldGenTallGrass.java (100%) rename src/{main => game}/java/net/minecraft/world/gen/feature/WorldGenTrees.java (100%) rename src/{main => game}/java/net/minecraft/world/gen/feature/WorldGenVines.java (100%) rename src/{main => game}/java/net/minecraft/world/gen/feature/WorldGenWaterlily.java (100%) rename src/{main => game}/java/net/minecraft/world/gen/feature/WorldGenerator.java (100%) rename src/{main => game}/java/net/minecraft/world/gen/feature/WorldGeneratorBonusChest.java (100%) rename src/{main => game}/java/net/minecraft/world/gen/layer/GenLayer.java (100%) rename src/{main => game}/java/net/minecraft/world/gen/layer/GenLayerAddIsland.java (100%) rename src/{main => game}/java/net/minecraft/world/gen/layer/GenLayerAddMushroomIsland.java (100%) rename src/{main => game}/java/net/minecraft/world/gen/layer/GenLayerAddSnow.java (100%) rename src/{main => game}/java/net/minecraft/world/gen/layer/GenLayerBiome.java (100%) rename src/{main => game}/java/net/minecraft/world/gen/layer/GenLayerBiomeEdge.java (100%) rename src/{main => game}/java/net/minecraft/world/gen/layer/GenLayerDeepOcean.java (100%) rename src/{main => game}/java/net/minecraft/world/gen/layer/GenLayerEdge.java (100%) rename src/{main => game}/java/net/minecraft/world/gen/layer/GenLayerFuzzyZoom.java (100%) rename src/{main => game}/java/net/minecraft/world/gen/layer/GenLayerHills.java (100%) rename src/{main => game}/java/net/minecraft/world/gen/layer/GenLayerIsland.java (100%) rename src/{main => game}/java/net/minecraft/world/gen/layer/GenLayerRareBiome.java (100%) rename src/{main => game}/java/net/minecraft/world/gen/layer/GenLayerRemoveTooMuchOcean.java (100%) rename src/{main => game}/java/net/minecraft/world/gen/layer/GenLayerRiver.java (100%) rename src/{main => game}/java/net/minecraft/world/gen/layer/GenLayerRiverInit.java (100%) rename src/{main => game}/java/net/minecraft/world/gen/layer/GenLayerRiverMix.java (100%) rename src/{main => game}/java/net/minecraft/world/gen/layer/GenLayerShore.java (100%) rename src/{main => game}/java/net/minecraft/world/gen/layer/GenLayerSmooth.java (100%) rename src/{main => game}/java/net/minecraft/world/gen/layer/GenLayerVoronoiZoom.java (100%) rename src/{main => game}/java/net/minecraft/world/gen/layer/GenLayerZoom.java (100%) rename src/{main => game}/java/net/minecraft/world/gen/layer/IntCache.java (100%) rename src/{main => game}/java/net/minecraft/world/gen/structure/ComponentScatteredFeaturePieces.java (100%) rename src/{main => game}/java/net/minecraft/world/gen/structure/MapGenMineshaft.java (100%) rename src/{main => game}/java/net/minecraft/world/gen/structure/MapGenNetherBridge.java (100%) rename src/{main => game}/java/net/minecraft/world/gen/structure/MapGenScatteredFeature.java (100%) rename src/{main => game}/java/net/minecraft/world/gen/structure/MapGenStronghold.java (100%) rename src/{main => game}/java/net/minecraft/world/gen/structure/MapGenStructure.java (100%) rename src/{main => game}/java/net/minecraft/world/gen/structure/MapGenStructureData.java (100%) rename src/{main => game}/java/net/minecraft/world/gen/structure/MapGenStructureIO.java (100%) rename src/{main => game}/java/net/minecraft/world/gen/structure/MapGenVillage.java (100%) rename src/{main => game}/java/net/minecraft/world/gen/structure/StructureBoundingBox.java (100%) rename src/{main => game}/java/net/minecraft/world/gen/structure/StructureComponent.java (100%) rename src/{main => game}/java/net/minecraft/world/gen/structure/StructureMineshaftPieces.java (100%) rename src/{main => game}/java/net/minecraft/world/gen/structure/StructureMineshaftStart.java (100%) rename src/{main => game}/java/net/minecraft/world/gen/structure/StructureNetherBridgePieces.java (100%) rename src/{main => game}/java/net/minecraft/world/gen/structure/StructureOceanMonument.java (100%) rename src/{main => game}/java/net/minecraft/world/gen/structure/StructureOceanMonumentPieces.java (100%) rename src/{main => game}/java/net/minecraft/world/gen/structure/StructureStart.java (100%) rename src/{main => game}/java/net/minecraft/world/gen/structure/StructureStrongholdPieces.java (100%) rename src/{main => game}/java/net/minecraft/world/gen/structure/StructureVillagePieces.java (100%) rename src/{main => game}/java/net/minecraft/world/pathfinder/NodeProcessor.java (100%) rename src/{main => game}/java/net/minecraft/world/pathfinder/SwimNodeProcessor.java (100%) rename src/{main => game}/java/net/minecraft/world/pathfinder/WalkNodeProcessor.java (100%) rename src/{main => game}/java/net/minecraft/world/storage/DerivedWorldInfo.java (100%) rename src/{main => game}/java/net/minecraft/world/storage/IPlayerFileData.java (100%) rename src/{main => game}/java/net/minecraft/world/storage/ISaveFormat.java (100%) rename src/{main => game}/java/net/minecraft/world/storage/ISaveHandler.java (100%) rename src/{main => game}/java/net/minecraft/world/storage/MapData.java (100%) rename src/{main => game}/java/net/minecraft/world/storage/MapStorage.java (96%) rename src/{main => game}/java/net/minecraft/world/storage/SaveDataMemoryStorage.java (100%) rename src/{main => game}/java/net/minecraft/world/storage/SaveFormatComparator.java (100%) rename src/{main => game}/java/net/minecraft/world/storage/SaveFormatOld.java (88%) rename src/{main => game}/java/net/minecraft/world/storage/SaveHandler.java (83%) rename src/{main => game}/java/net/minecraft/world/storage/SaveHandlerMP.java (100%) rename src/{main => game}/java/net/minecraft/world/storage/WorldInfo.java (96%) create mode 100755 src/lwjgl/java/fi/iki/elonen/NanoHTTPD.java create mode 100755 src/lwjgl/java/net/lax1dude/eaglercraft/v1_8/internal/PlatformScreenRecord.java create mode 100755 src/lwjgl/java/net/lax1dude/eaglercraft/v1_8/internal/PlatformWebView.java delete mode 100755 src/lwjgl/java/net/lax1dude/eaglercraft/v1_8/internal/WebSocketServerQuery.java create mode 100755 src/lwjgl/java/net/lax1dude/eaglercraft/v1_8/internal/lwjgl/DesktopWebSocketClient.java create mode 100755 src/lwjgl/java/net/lax1dude/eaglercraft/v1_8/internal/lwjgl/DesktopWebSocketFrameBinary.java create mode 100755 src/lwjgl/java/net/lax1dude/eaglercraft/v1_8/internal/lwjgl/DesktopWebSocketFrameString.java create mode 100755 src/lwjgl/java/net/lax1dude/eaglercraft/v1_8/internal/lwjgl/FallbackWebViewHTTPD.java create mode 100755 src/lwjgl/java/net/lax1dude/eaglercraft/v1_8/internal/lwjgl/FallbackWebViewProtocol.java create mode 100755 src/lwjgl/java/net/lax1dude/eaglercraft/v1_8/internal/lwjgl/FallbackWebViewServer.java create mode 100755 src/lwjgl/java/net/lax1dude/eaglercraft/v1_8/internal/lwjgl/FallbackWebViewWSD.java rename src/lwjgl/java/net/lax1dude/eaglercraft/v1_8/internal/{WebSocketPlayClient.java => lwjgl/WebSocketClientImpl.java} (55%) create mode 100755 src/main/java/net/lax1dude/eaglercraft/v1_8/ClientUUIDLoadingCache.java create mode 100755 src/main/java/net/lax1dude/eaglercraft/v1_8/Filesystem.java create mode 100755 src/main/java/net/lax1dude/eaglercraft/v1_8/Gamepad.java create mode 100755 src/main/java/net/lax1dude/eaglercraft/v1_8/HashKey.java create mode 100755 src/main/java/net/lax1dude/eaglercraft/v1_8/PauseMenuCustomizeState.java create mode 100755 src/main/java/net/lax1dude/eaglercraft/v1_8/PointerInputAbstraction.java create mode 100755 src/main/java/net/lax1dude/eaglercraft/v1_8/Touch.java create mode 100755 src/main/java/net/lax1dude/eaglercraft/v1_8/boot_menu/GuiScreenEnterBootMenu.java create mode 100755 src/main/java/net/lax1dude/eaglercraft/v1_8/cookie/GuiScreenInspectSessionToken.java create mode 100755 src/main/java/net/lax1dude/eaglercraft/v1_8/cookie/GuiScreenRevokeSessionToken.java create mode 100755 src/main/java/net/lax1dude/eaglercraft/v1_8/cookie/GuiScreenSendRevokeRequest.java create mode 100755 src/main/java/net/lax1dude/eaglercraft/v1_8/cookie/HardwareFingerprint.java create mode 100755 src/main/java/net/lax1dude/eaglercraft/v1_8/cookie/ServerCookieDataStore.java create mode 100755 src/main/java/net/lax1dude/eaglercraft/v1_8/crypto/AESLightEngine.java create mode 100755 src/main/java/net/lax1dude/eaglercraft/v1_8/internal/AbstractWebSocketClient.java rename src/{teavm/java/net/lax1dude/eaglercraft/v1_8/internal/PlatformBufferFunctions.java => main/java/net/lax1dude/eaglercraft/v1_8/internal/EaglerMissingResourceException.java} (61%) create mode 100755 src/main/java/net/lax1dude/eaglercraft/v1_8/internal/EnumFireKeyboardEvent.java create mode 100755 src/main/java/net/lax1dude/eaglercraft/v1_8/internal/EnumFireMouseEvent.java create mode 100755 src/main/java/net/lax1dude/eaglercraft/v1_8/internal/EnumTouchEvent.java create mode 100755 src/main/java/net/lax1dude/eaglercraft/v1_8/internal/EnumWebViewContentMode.java create mode 100755 src/main/java/net/lax1dude/eaglercraft/v1_8/internal/GamepadConstants.java create mode 100755 src/main/java/net/lax1dude/eaglercraft/v1_8/internal/IEaglerFilesystem.java create mode 100755 src/main/java/net/lax1dude/eaglercraft/v1_8/internal/IWebSocketClient.java rename src/{lwjgl/java/net/lax1dude/eaglercraft/v1_8/internal/PlatformBufferFunctions.java => main/java/net/lax1dude/eaglercraft/v1_8/internal/IWebSocketFrame.java} (61%) create mode 100755 src/main/java/net/lax1dude/eaglercraft/v1_8/internal/RamdiskFilesystemImpl.java create mode 100755 src/main/java/net/lax1dude/eaglercraft/v1_8/internal/ScreenRecordParameters.java create mode 100755 src/main/java/net/lax1dude/eaglercraft/v1_8/internal/VFSFilenameIteratorNonRecursive.java create mode 100755 src/main/java/net/lax1dude/eaglercraft/v1_8/internal/WebViewOptions.java create mode 100755 src/main/java/net/lax1dude/eaglercraft/v1_8/minecraft/EnumInputEvent.java create mode 100755 src/main/java/net/lax1dude/eaglercraft/v1_8/minecraft/FontMappingHelper.java create mode 100755 src/main/java/net/lax1dude/eaglercraft/v1_8/minecraft/GuiButtonWithStupidIcons.java create mode 100755 src/main/java/net/lax1dude/eaglercraft/v1_8/minecraft/GuiScreenVisualViewport.java create mode 100755 src/main/java/net/lax1dude/eaglercraft/v1_8/notifications/CachedNotifBadgeTexture.java create mode 100755 src/main/java/net/lax1dude/eaglercraft/v1_8/notifications/ClickEventZone.java create mode 100755 src/main/java/net/lax1dude/eaglercraft/v1_8/notifications/GuiButtonNotifBell.java create mode 100755 src/main/java/net/lax1dude/eaglercraft/v1_8/notifications/GuiScreenNotifications.java create mode 100755 src/main/java/net/lax1dude/eaglercraft/v1_8/notifications/GuiSlotNotifications.java create mode 100755 src/main/java/net/lax1dude/eaglercraft/v1_8/notifications/NotificationBadge.java create mode 100755 src/main/java/net/lax1dude/eaglercraft/v1_8/notifications/NotificationIcon.java create mode 100755 src/main/java/net/lax1dude/eaglercraft/v1_8/notifications/ServerNotificationManager.java create mode 100755 src/main/java/net/lax1dude/eaglercraft/v1_8/notifications/ServerNotificationRenderer.java create mode 100755 src/main/java/net/lax1dude/eaglercraft/v1_8/opengl/GLSLHeader.java create mode 100755 src/main/java/net/lax1dude/eaglercraft/v1_8/opengl/SoftGLBufferArray.java create mode 100755 src/main/java/net/lax1dude/eaglercraft/v1_8/opengl/SoftGLBufferState.java create mode 100755 src/main/java/net/lax1dude/eaglercraft/v1_8/opengl/TextureFormatHelper.java create mode 100755 src/main/java/net/lax1dude/eaglercraft/v1_8/opengl/VSHInputLayoutParser.java create mode 100755 src/main/java/net/lax1dude/eaglercraft/v1_8/profanity_filter/GuiScreenContentWarning.java create mode 100755 src/main/java/net/lax1dude/eaglercraft/v1_8/profanity_filter/LookAlikeUnicodeConv.java create mode 100755 src/main/java/net/lax1dude/eaglercraft/v1_8/profanity_filter/ProfanityFilter.java create mode 100755 src/main/java/net/lax1dude/eaglercraft/v1_8/recording/EnumScreenRecordingCodec.java create mode 100755 src/main/java/net/lax1dude/eaglercraft/v1_8/recording/GuiScreenRecordingNote.java create mode 100755 src/main/java/net/lax1dude/eaglercraft/v1_8/recording/GuiScreenRecordingSettings.java create mode 100755 src/main/java/net/lax1dude/eaglercraft/v1_8/recording/GuiScreenSelectCodec.java create mode 100755 src/main/java/net/lax1dude/eaglercraft/v1_8/recording/GuiSlotSelectCodec.java create mode 100755 src/main/java/net/lax1dude/eaglercraft/v1_8/recording/ScreenRecordingController.java rename src/{teavm/java/net/lax1dude/eaglercraft/v1_8/internal/teavm/TeaVMServerQuery.java => main/java/net/lax1dude/eaglercraft/v1_8/socket/ServerQueryImpl.java} (62%) create mode 100755 src/main/java/net/lax1dude/eaglercraft/v1_8/socket/WebSocketNetworkManager.java create mode 100755 src/main/java/net/lax1dude/eaglercraft/v1_8/socket/protocol/client/ClientV3MessageHandler.java create mode 100755 src/main/java/net/lax1dude/eaglercraft/v1_8/socket/protocol/client/ClientV4MessageHandler.java create mode 100755 src/main/java/net/lax1dude/eaglercraft/v1_8/socket/protocol/client/GameProtocolMessageController.java create mode 100755 src/main/java/net/lax1dude/eaglercraft/v1_8/socket/protocol/client/IPluginMessageSendFunction.java create mode 100755 src/main/java/net/lax1dude/eaglercraft/v1_8/socket/protocol/client/PacketBufferInputWrapper.java create mode 100755 src/main/java/net/lax1dude/eaglercraft/v1_8/socket/protocol/client/PacketBufferOutputWrapper.java delete mode 100755 src/main/java/net/lax1dude/eaglercraft/v1_8/sp/gui/GuiIntegratedServerStartup.java create mode 100755 src/main/java/net/lax1dude/eaglercraft/v1_8/sp/gui/GuiScreenRAMDiskModeDetected.java rename src/main/java/net/lax1dude/eaglercraft/v1_8/sp/ipc/{IPCPacket20LoggerMessage.java => IPCPacket1ALoggerMessage.java} (83%) rename src/main/java/net/lax1dude/eaglercraft/v1_8/sp/ipc/{IPCPacket21EnableLogging.java => IPCPacket1BEnableLogging.java} (84%) create mode 100755 src/main/java/net/lax1dude/eaglercraft/v1_8/sp/ipc/IPCPacket1CIssueDetected.java create mode 100755 src/main/java/net/lax1dude/eaglercraft/v1_8/sp/relay/RelayLoggerImpl.java create mode 100755 src/main/java/net/lax1dude/eaglercraft/v1_8/sp/relay/RelayQueryImpl.java create mode 100755 src/main/java/net/lax1dude/eaglercraft/v1_8/sp/relay/RelayQueryRateLimitDummy.java create mode 100755 src/main/java/net/lax1dude/eaglercraft/v1_8/sp/relay/RelayServerRateLimitTracker.java create mode 100755 src/main/java/net/lax1dude/eaglercraft/v1_8/sp/relay/RelayServerSocketImpl.java create mode 100755 src/main/java/net/lax1dude/eaglercraft/v1_8/sp/relay/RelayServerSocketRateLimitDummy.java create mode 100755 src/main/java/net/lax1dude/eaglercraft/v1_8/sp/relay/RelayWorldsQueryImpl.java create mode 100755 src/main/java/net/lax1dude/eaglercraft/v1_8/sp/relay/RelayWorldsQueryRateLimitDummy.java delete mode 100755 src/main/java/net/lax1dude/eaglercraft/v1_8/sp/relay/pkt/ICEServerSet.java delete mode 100755 src/main/java/net/lax1dude/eaglercraft/v1_8/sp/relay/pkt/IPacket01ICEServers.java create mode 100755 src/main/java/net/lax1dude/eaglercraft/v1_8/sp/server/WorldsDB.java create mode 100755 src/main/java/net/lax1dude/eaglercraft/v1_8/sp/server/socket/protocol/ServerV3MessageHandler.java create mode 100755 src/main/java/net/lax1dude/eaglercraft/v1_8/sp/server/socket/protocol/ServerV4MessageHandler.java delete mode 100755 src/main/java/net/lax1dude/eaglercraft/v1_8/sp/server/voice/IntegratedVoiceSignalPackets.java create mode 100755 src/main/java/net/lax1dude/eaglercraft/v1_8/touch_gui/EnumTouchControl.java create mode 100755 src/main/java/net/lax1dude/eaglercraft/v1_8/touch_gui/EnumTouchControlPos.java create mode 100755 src/main/java/net/lax1dude/eaglercraft/v1_8/touch_gui/EnumTouchLayoutState.java create mode 100755 src/main/java/net/lax1dude/eaglercraft/v1_8/touch_gui/TouchControlInput.java create mode 100755 src/main/java/net/lax1dude/eaglercraft/v1_8/touch_gui/TouchControls.java create mode 100755 src/main/java/net/lax1dude/eaglercraft/v1_8/touch_gui/TouchOverlayRenderer.java create mode 100755 src/main/java/net/lax1dude/eaglercraft/v1_8/update/GuiUpdateDownloadSuccess.java create mode 100755 src/main/java/net/lax1dude/eaglercraft/v1_8/update/GuiUpdateInstallOptions.java create mode 100755 src/main/java/net/lax1dude/eaglercraft/v1_8/update/UpdateDataObj.java create mode 100755 src/main/java/net/lax1dude/eaglercraft/v1_8/update/UpdateResultObj.java delete mode 100755 src/main/java/net/lax1dude/eaglercraft/v1_8/voice/VoiceSignalPackets.java create mode 100755 src/main/java/net/lax1dude/eaglercraft/v1_8/webview/GuiScreenPhishingWaring.java create mode 100755 src/main/java/net/lax1dude/eaglercraft/v1_8/webview/GuiScreenRecieveServerInfo.java create mode 100755 src/main/java/net/lax1dude/eaglercraft/v1_8/webview/GuiScreenServerInfo.java create mode 100755 src/main/java/net/lax1dude/eaglercraft/v1_8/webview/GuiScreenServerInfoDesktop.java create mode 100755 src/main/java/net/lax1dude/eaglercraft/v1_8/webview/PermissionsCache.java create mode 100755 src/main/java/net/lax1dude/eaglercraft/v1_8/webview/ServerInfoCache.java create mode 100755 src/main/java/net/lax1dude/eaglercraft/v1_8/webview/WebViewOverlayController.java delete mode 100755 src/main/java/net/minecraft/profiler/Profiler.java create mode 100755 src/main/java/org/json/JSONParserConfiguration.java create mode 100755 src/main/java/org/json/ParserConfiguration.java create mode 100755 src/protocol-game/java/net/lax1dude/eaglercraft/v1_8/socket/protocol/GamePacketInputBuffer.java create mode 100755 src/protocol-game/java/net/lax1dude/eaglercraft/v1_8/socket/protocol/GamePacketOutputBuffer.java create mode 100755 src/protocol-game/java/net/lax1dude/eaglercraft/v1_8/socket/protocol/GamePluginMessageConstants.java create mode 100755 src/protocol-game/java/net/lax1dude/eaglercraft/v1_8/socket/protocol/GamePluginMessageProtocol.java create mode 100755 src/protocol-game/java/net/lax1dude/eaglercraft/v1_8/socket/protocol/pkt/GameMessageHandler.java create mode 100755 src/protocol-game/java/net/lax1dude/eaglercraft/v1_8/socket/protocol/pkt/GameMessagePacket.java create mode 100755 src/protocol-game/java/net/lax1dude/eaglercraft/v1_8/socket/protocol/pkt/WrongPacketException.java create mode 100755 src/protocol-game/java/net/lax1dude/eaglercraft/v1_8/socket/protocol/pkt/client/CPacketGetOtherCapeEAG.java create mode 100755 src/protocol-game/java/net/lax1dude/eaglercraft/v1_8/socket/protocol/pkt/client/CPacketGetOtherClientUUIDV4EAG.java create mode 100755 src/protocol-game/java/net/lax1dude/eaglercraft/v1_8/socket/protocol/pkt/client/CPacketGetOtherSkinEAG.java create mode 100755 src/protocol-game/java/net/lax1dude/eaglercraft/v1_8/socket/protocol/pkt/client/CPacketGetSkinByURLEAG.java create mode 100755 src/protocol-game/java/net/lax1dude/eaglercraft/v1_8/socket/protocol/pkt/client/CPacketInstallSkinSPEAG.java create mode 100755 src/protocol-game/java/net/lax1dude/eaglercraft/v1_8/socket/protocol/pkt/client/CPacketRequestServerInfoV4EAG.java create mode 100755 src/protocol-game/java/net/lax1dude/eaglercraft/v1_8/socket/protocol/pkt/client/CPacketVoiceSignalConnectEAG.java create mode 100755 src/protocol-game/java/net/lax1dude/eaglercraft/v1_8/socket/protocol/pkt/client/CPacketVoiceSignalDescEAG.java create mode 100755 src/protocol-game/java/net/lax1dude/eaglercraft/v1_8/socket/protocol/pkt/client/CPacketVoiceSignalDisconnectPeerV4EAG.java create mode 100755 src/protocol-game/java/net/lax1dude/eaglercraft/v1_8/socket/protocol/pkt/client/CPacketVoiceSignalDisconnectV3EAG.java create mode 100755 src/protocol-game/java/net/lax1dude/eaglercraft/v1_8/socket/protocol/pkt/client/CPacketVoiceSignalDisconnectV4EAG.java create mode 100755 src/protocol-game/java/net/lax1dude/eaglercraft/v1_8/socket/protocol/pkt/client/CPacketVoiceSignalICEEAG.java create mode 100755 src/protocol-game/java/net/lax1dude/eaglercraft/v1_8/socket/protocol/pkt/client/CPacketVoiceSignalRequestEAG.java create mode 100755 src/protocol-game/java/net/lax1dude/eaglercraft/v1_8/socket/protocol/pkt/client/CPacketWebViewMessageEnV4EAG.java create mode 100755 src/protocol-game/java/net/lax1dude/eaglercraft/v1_8/socket/protocol/pkt/client/CPacketWebViewMessageV4EAG.java create mode 100755 src/protocol-game/java/net/lax1dude/eaglercraft/v1_8/socket/protocol/pkt/server/SPacketCustomizePauseMenuV4EAG.java create mode 100755 src/protocol-game/java/net/lax1dude/eaglercraft/v1_8/socket/protocol/pkt/server/SPacketEnableFNAWSkinsEAG.java create mode 100755 src/protocol-game/java/net/lax1dude/eaglercraft/v1_8/socket/protocol/pkt/server/SPacketForceClientCapeCustomV4EAG.java create mode 100755 src/protocol-game/java/net/lax1dude/eaglercraft/v1_8/socket/protocol/pkt/server/SPacketForceClientCapePresetV4EAG.java create mode 100755 src/protocol-game/java/net/lax1dude/eaglercraft/v1_8/socket/protocol/pkt/server/SPacketForceClientSkinCustomV4EAG.java create mode 100755 src/protocol-game/java/net/lax1dude/eaglercraft/v1_8/socket/protocol/pkt/server/SPacketForceClientSkinPresetV4EAG.java create mode 100755 src/protocol-game/java/net/lax1dude/eaglercraft/v1_8/socket/protocol/pkt/server/SPacketInvalidatePlayerCacheV4EAG.java create mode 100755 src/protocol-game/java/net/lax1dude/eaglercraft/v1_8/socket/protocol/pkt/server/SPacketNotifBadgeHideV4EAG.java create mode 100755 src/protocol-game/java/net/lax1dude/eaglercraft/v1_8/socket/protocol/pkt/server/SPacketNotifBadgeShowV4EAG.java create mode 100755 src/protocol-game/java/net/lax1dude/eaglercraft/v1_8/socket/protocol/pkt/server/SPacketNotifIconsRegisterV4EAG.java create mode 100755 src/protocol-game/java/net/lax1dude/eaglercraft/v1_8/socket/protocol/pkt/server/SPacketNotifIconsReleaseV4EAG.java create mode 100755 src/protocol-game/java/net/lax1dude/eaglercraft/v1_8/socket/protocol/pkt/server/SPacketOtherCapeCustomEAG.java create mode 100755 src/protocol-game/java/net/lax1dude/eaglercraft/v1_8/socket/protocol/pkt/server/SPacketOtherCapePresetEAG.java create mode 100755 src/protocol-game/java/net/lax1dude/eaglercraft/v1_8/socket/protocol/pkt/server/SPacketOtherPlayerClientUUIDV4EAG.java create mode 100755 src/protocol-game/java/net/lax1dude/eaglercraft/v1_8/socket/protocol/pkt/server/SPacketOtherSkinCustomV3EAG.java create mode 100755 src/protocol-game/java/net/lax1dude/eaglercraft/v1_8/socket/protocol/pkt/server/SPacketOtherSkinCustomV4EAG.java create mode 100755 src/protocol-game/java/net/lax1dude/eaglercraft/v1_8/socket/protocol/pkt/server/SPacketOtherSkinPresetEAG.java create mode 100755 src/protocol-game/java/net/lax1dude/eaglercraft/v1_8/socket/protocol/pkt/server/SPacketRedirectClientV4EAG.java create mode 100755 src/protocol-game/java/net/lax1dude/eaglercraft/v1_8/socket/protocol/pkt/server/SPacketServerInfoDataChunkV4EAG.java create mode 100755 src/protocol-game/java/net/lax1dude/eaglercraft/v1_8/socket/protocol/pkt/server/SPacketSetServerCookieV4EAG.java create mode 100755 src/protocol-game/java/net/lax1dude/eaglercraft/v1_8/socket/protocol/pkt/server/SPacketUnforceClientV4EAG.java create mode 100755 src/protocol-game/java/net/lax1dude/eaglercraft/v1_8/socket/protocol/pkt/server/SPacketUpdateCertEAG.java create mode 100755 src/protocol-game/java/net/lax1dude/eaglercraft/v1_8/socket/protocol/pkt/server/SPacketVoiceSignalAllowedEAG.java create mode 100755 src/protocol-game/java/net/lax1dude/eaglercraft/v1_8/socket/protocol/pkt/server/SPacketVoiceSignalConnectAnnounceV4EAG.java create mode 100755 src/protocol-game/java/net/lax1dude/eaglercraft/v1_8/socket/protocol/pkt/server/SPacketVoiceSignalConnectV3EAG.java create mode 100755 src/protocol-game/java/net/lax1dude/eaglercraft/v1_8/socket/protocol/pkt/server/SPacketVoiceSignalConnectV4EAG.java create mode 100755 src/protocol-game/java/net/lax1dude/eaglercraft/v1_8/socket/protocol/pkt/server/SPacketVoiceSignalDescEAG.java create mode 100755 src/protocol-game/java/net/lax1dude/eaglercraft/v1_8/socket/protocol/pkt/server/SPacketVoiceSignalDisconnectPeerEAG.java create mode 100755 src/protocol-game/java/net/lax1dude/eaglercraft/v1_8/socket/protocol/pkt/server/SPacketVoiceSignalGlobalEAG.java create mode 100755 src/protocol-game/java/net/lax1dude/eaglercraft/v1_8/socket/protocol/pkt/server/SPacketVoiceSignalICEEAG.java create mode 100755 src/protocol-game/java/net/lax1dude/eaglercraft/v1_8/socket/protocol/pkt/server/SPacketWebViewMessageV4EAG.java create mode 100755 src/protocol-game/java/net/lax1dude/eaglercraft/v1_8/socket/protocol/util/PacketImageData.java create mode 100755 src/protocol-game/java/net/lax1dude/eaglercraft/v1_8/socket/protocol/util/ReusableByteArrayInputStream.java create mode 100755 src/protocol-game/java/net/lax1dude/eaglercraft/v1_8/socket/protocol/util/ReusableByteArrayOutputStream.java create mode 100755 src/protocol-game/java/net/lax1dude/eaglercraft/v1_8/socket/protocol/util/SimpleInputBufferImpl.java create mode 100755 src/protocol-game/java/net/lax1dude/eaglercraft/v1_8/socket/protocol/util/SimpleOutputBufferImpl.java create mode 100755 src/protocol-game/java/net/lax1dude/eaglercraft/v1_8/socket/protocol/util/SkinPacketVersionCache.java create mode 100755 src/protocol-relay/java/net/lax1dude/eaglercraft/v1_8/sp/relay/pkt/IRelayLogger.java rename src/{main/java/net/lax1dude/eaglercraft/v1_8/sp/relay/pkt/IPacket.java => protocol-relay/java/net/lax1dude/eaglercraft/v1_8/sp/relay/pkt/RelayPacket.java} (51%) rename src/{main/java/net/lax1dude/eaglercraft/v1_8/sp/relay/pkt/IPacket00Handshake.java => protocol-relay/java/net/lax1dude/eaglercraft/v1_8/sp/relay/pkt/RelayPacket00Handshake.java} (81%) create mode 100755 src/protocol-relay/java/net/lax1dude/eaglercraft/v1_8/sp/relay/pkt/RelayPacket01ICEServers.java rename src/{main/java/net/lax1dude/eaglercraft/v1_8/sp/relay/pkt/IPacket06ClientFailure.java => protocol-relay/java/net/lax1dude/eaglercraft/v1_8/sp/relay/pkt/RelayPacket02NewClient.java} (83%) rename src/{main/java/net/lax1dude/eaglercraft/v1_8/sp/relay/pkt/IPacket03ICECandidate.java => protocol-relay/java/net/lax1dude/eaglercraft/v1_8/sp/relay/pkt/RelayPacket03ICECandidate.java} (65%) rename src/{main/java/net/lax1dude/eaglercraft/v1_8/sp/relay/pkt/IPacket04Description.java => protocol-relay/java/net/lax1dude/eaglercraft/v1_8/sp/relay/pkt/RelayPacket04Description.java} (65%) rename src/{main/java/net/lax1dude/eaglercraft/v1_8/sp/relay/pkt/IPacket05ClientSuccess.java => protocol-relay/java/net/lax1dude/eaglercraft/v1_8/sp/relay/pkt/RelayPacket05ClientSuccess.java} (83%) rename src/{main/java/net/lax1dude/eaglercraft/v1_8/sp/relay/pkt/IPacket02NewClient.java => protocol-relay/java/net/lax1dude/eaglercraft/v1_8/sp/relay/pkt/RelayPacket06ClientFailure.java} (70%) rename src/{main/java/net/lax1dude/eaglercraft/v1_8/sp/relay/pkt/IPacket07LocalWorlds.java => protocol-relay/java/net/lax1dude/eaglercraft/v1_8/sp/relay/pkt/RelayPacket07LocalWorlds.java} (55%) rename src/{main/java/net/lax1dude/eaglercraft/v1_8/sp/relay/pkt/IPacket69Pong.java => protocol-relay/java/net/lax1dude/eaglercraft/v1_8/sp/relay/pkt/RelayPacket69Pong.java} (70%) rename src/{main/java/net/lax1dude/eaglercraft/v1_8/sp/relay/pkt/IPacket70SpecialUpdate.java => protocol-relay/java/net/lax1dude/eaglercraft/v1_8/sp/relay/pkt/RelayPacket70SpecialUpdate.java} (87%) rename src/{main/java/net/lax1dude/eaglercraft/v1_8/sp/relay/pkt/IPacketFEDisconnectClient.java => protocol-relay/java/net/lax1dude/eaglercraft/v1_8/sp/relay/pkt/RelayPacketFEDisconnectClient.java} (85%) rename src/{main/java/net/lax1dude/eaglercraft/v1_8/sp/relay/pkt/IPacketFFErrorCode.java => protocol-relay/java/net/lax1dude/eaglercraft/v1_8/sp/relay/pkt/RelayPacketFFErrorCode.java} (89%) create mode 100755 src/teavm-boot-menu/java/net/lax1dude/eaglercraft/v1_8/boot_menu/teavm/BootMenuAssets.java create mode 100755 src/teavm-boot-menu/java/net/lax1dude/eaglercraft/v1_8/boot_menu/teavm/BootMenuConstants.java create mode 100755 src/teavm-boot-menu/java/net/lax1dude/eaglercraft/v1_8/boot_menu/teavm/BootMenuDOM.java create mode 100755 src/teavm-boot-menu/java/net/lax1dude/eaglercraft/v1_8/boot_menu/teavm/BootMenuDataManager.java create mode 100755 src/teavm-boot-menu/java/net/lax1dude/eaglercraft/v1_8/boot_menu/teavm/BootMenuDatastore.java create mode 100755 src/teavm-boot-menu/java/net/lax1dude/eaglercraft/v1_8/boot_menu/teavm/BootMenuEntryPoint.java create mode 100755 src/teavm-boot-menu/java/net/lax1dude/eaglercraft/v1_8/boot_menu/teavm/BootMenuFatOfflineLoader.java create mode 100755 src/teavm-boot-menu/java/net/lax1dude/eaglercraft/v1_8/boot_menu/teavm/BootMenuMain.java create mode 100755 src/teavm-boot-menu/java/net/lax1dude/eaglercraft/v1_8/boot_menu/teavm/BootMenuMetadata.java create mode 100755 src/teavm-boot-menu/java/net/lax1dude/eaglercraft/v1_8/boot_menu/teavm/BootableClientEntry.java create mode 100755 src/teavm-boot-menu/java/net/lax1dude/eaglercraft/v1_8/boot_menu/teavm/CheckboxListController.java create mode 100755 src/teavm-boot-menu/java/net/lax1dude/eaglercraft/v1_8/boot_menu/teavm/ClientBootFactory.java create mode 100755 src/teavm-boot-menu/java/net/lax1dude/eaglercraft/v1_8/boot_menu/teavm/ClientDataEntry.java create mode 100755 src/teavm-boot-menu/java/net/lax1dude/eaglercraft/v1_8/boot_menu/teavm/ConfirmationPopupController.java create mode 100755 src/teavm-boot-menu/java/net/lax1dude/eaglercraft/v1_8/boot_menu/teavm/EPKClientFactory.java create mode 100755 src/teavm-boot-menu/java/net/lax1dude/eaglercraft/v1_8/boot_menu/teavm/EPKClientParser.java create mode 100755 src/teavm-boot-menu/java/net/lax1dude/eaglercraft/v1_8/boot_menu/teavm/EPKDataEntry.java create mode 100755 src/teavm-boot-menu/java/net/lax1dude/eaglercraft/v1_8/boot_menu/teavm/EnumClientFormatType.java create mode 100755 src/teavm-boot-menu/java/net/lax1dude/eaglercraft/v1_8/boot_menu/teavm/EnumClientLaunchType.java create mode 100755 src/teavm-boot-menu/java/net/lax1dude/eaglercraft/v1_8/boot_menu/teavm/EnumOfflineParseType.java create mode 100755 src/teavm-boot-menu/java/net/lax1dude/eaglercraft/v1_8/boot_menu/teavm/FatOfflineDownloadFactory.java create mode 100755 src/teavm-boot-menu/java/net/lax1dude/eaglercraft/v1_8/boot_menu/teavm/IBootMenuConfigAdapter.java create mode 100755 src/teavm-boot-menu/java/net/lax1dude/eaglercraft/v1_8/boot_menu/teavm/IProgressMsgCallback.java create mode 100755 src/teavm-boot-menu/java/net/lax1dude/eaglercraft/v1_8/boot_menu/teavm/InputPopupController.java create mode 100755 src/teavm-boot-menu/java/net/lax1dude/eaglercraft/v1_8/boot_menu/teavm/KeyCodes.java create mode 100755 src/teavm-boot-menu/java/net/lax1dude/eaglercraft/v1_8/boot_menu/teavm/LaunchConfigEntry.java create mode 100755 src/teavm-boot-menu/java/net/lax1dude/eaglercraft/v1_8/boot_menu/teavm/MenuPopupStateConfirmation.java create mode 100755 src/teavm-boot-menu/java/net/lax1dude/eaglercraft/v1_8/boot_menu/teavm/MenuPopupStateEditInteger.java create mode 100755 src/teavm-boot-menu/java/net/lax1dude/eaglercraft/v1_8/boot_menu/teavm/MenuPopupStateEditString.java create mode 100755 src/teavm-boot-menu/java/net/lax1dude/eaglercraft/v1_8/boot_menu/teavm/MenuPopupStateFileChooser.java create mode 100755 src/teavm-boot-menu/java/net/lax1dude/eaglercraft/v1_8/boot_menu/teavm/MenuPopupStateLoading.java create mode 100755 src/teavm-boot-menu/java/net/lax1dude/eaglercraft/v1_8/boot_menu/teavm/MenuPopupStateSelection.java create mode 100755 src/teavm-boot-menu/java/net/lax1dude/eaglercraft/v1_8/boot_menu/teavm/MenuState.java create mode 100755 src/teavm-boot-menu/java/net/lax1dude/eaglercraft/v1_8/boot_menu/teavm/MenuStateBoot.java create mode 100755 src/teavm-boot-menu/java/net/lax1dude/eaglercraft/v1_8/boot_menu/teavm/MenuStateClientMultiSelect.java create mode 100755 src/teavm-boot-menu/java/net/lax1dude/eaglercraft/v1_8/boot_menu/teavm/MenuStateEditBootOrder.java create mode 100755 src/teavm-boot-menu/java/net/lax1dude/eaglercraft/v1_8/boot_menu/teavm/MenuStateEditingLaunch.java create mode 100755 src/teavm-boot-menu/java/net/lax1dude/eaglercraft/v1_8/boot_menu/teavm/MenuStateEnterSetup.java create mode 100755 src/teavm-boot-menu/java/net/lax1dude/eaglercraft/v1_8/boot_menu/teavm/MenuStateImportMultiSelect.java create mode 100755 src/teavm-boot-menu/java/net/lax1dude/eaglercraft/v1_8/boot_menu/teavm/MenuStateSelectExportClients.java create mode 100755 src/teavm-boot-menu/java/net/lax1dude/eaglercraft/v1_8/boot_menu/teavm/OfflineDownloadFactory.java create mode 100755 src/teavm-boot-menu/java/net/lax1dude/eaglercraft/v1_8/boot_menu/teavm/OfflineDownloadParser.java create mode 100755 src/teavm-boot-menu/java/net/lax1dude/eaglercraft/v1_8/boot_menu/teavm/RelayRandomizeHelper.java create mode 100755 src/teavm-boot-menu/java/net/lax1dude/eaglercraft/v1_8/boot_menu/teavm/SelectionListController.java create mode 100755 src/teavm-boot-menu/java/net/lax1dude/eaglercraft/v1_8/boot_menu/teavm/SignatureCheckHelper.java create mode 100755 src/teavm-boot-menu/java/net/lax1dude/eaglercraft/v1_8/boot_menu/teavm/SignedClientInstaller.java create mode 100755 src/teavm-boot-menu/java/net/lax1dude/eaglercraft/v1_8/boot_menu/teavm/TemplateLoader.java create mode 100755 src/teavm-boot-menu/java/net/lax1dude/eaglercraft/v1_8/boot_menu/teavm/TemplateParser.java create mode 100755 src/teavm-boot-menu/java/net/lax1dude/eaglercraft/v1_8/boot_menu/teavm/UnsignedBootException.java create mode 100755 src/teavm/java/com/jcraft/jogg/Buffer.java create mode 100755 src/teavm/java/com/jcraft/jogg/Packet.java create mode 100755 src/teavm/java/com/jcraft/jogg/Page.java create mode 100755 src/teavm/java/com/jcraft/jogg/StreamState.java create mode 100755 src/teavm/java/com/jcraft/jogg/SyncState.java create mode 100755 src/teavm/java/com/jcraft/jorbis/Block.java create mode 100755 src/teavm/java/com/jcraft/jorbis/CodeBook.java create mode 100755 src/teavm/java/com/jcraft/jorbis/Comment.java create mode 100755 src/teavm/java/com/jcraft/jorbis/Drft.java create mode 100755 src/teavm/java/com/jcraft/jorbis/DspState.java create mode 100755 src/teavm/java/com/jcraft/jorbis/Floor0.java create mode 100755 src/teavm/java/com/jcraft/jorbis/Floor1.java create mode 100755 src/teavm/java/com/jcraft/jorbis/FuncFloor.java create mode 100755 src/teavm/java/com/jcraft/jorbis/FuncMapping.java create mode 100755 src/teavm/java/com/jcraft/jorbis/FuncResidue.java create mode 100755 src/teavm/java/com/jcraft/jorbis/FuncTime.java create mode 100755 src/teavm/java/com/jcraft/jorbis/Info.java create mode 100755 src/teavm/java/com/jcraft/jorbis/InfoMode.java create mode 100755 src/teavm/java/com/jcraft/jorbis/JOrbisException.java create mode 100755 src/teavm/java/com/jcraft/jorbis/Lookup.java create mode 100755 src/teavm/java/com/jcraft/jorbis/Lpc.java create mode 100755 src/teavm/java/com/jcraft/jorbis/Lsp.java create mode 100755 src/teavm/java/com/jcraft/jorbis/Mapping0.java create mode 100755 src/teavm/java/com/jcraft/jorbis/Mdct.java create mode 100755 src/teavm/java/com/jcraft/jorbis/PsyInfo.java create mode 100755 src/teavm/java/com/jcraft/jorbis/PsyLook.java create mode 100755 src/teavm/java/com/jcraft/jorbis/Residue0.java create mode 100755 src/teavm/java/com/jcraft/jorbis/Residue1.java create mode 100755 src/teavm/java/com/jcraft/jorbis/Residue2.java create mode 100755 src/teavm/java/com/jcraft/jorbis/StaticCodeBook.java create mode 100755 src/teavm/java/com/jcraft/jorbis/Time0.java create mode 100755 src/teavm/java/com/jcraft/jorbis/Util.java create mode 100755 src/teavm/java/com/jcraft/jorbis/VorbisFile.java create mode 100755 src/teavm/java/net/lax1dude/eaglercraft/v1_8/internal/PlatformScreenRecord.java create mode 100755 src/teavm/java/net/lax1dude/eaglercraft/v1_8/internal/PlatformWebView.java create mode 100755 src/teavm/java/net/lax1dude/eaglercraft/v1_8/internal/teavm/AdvancedHTMLIFrameElement.java create mode 100755 src/teavm/java/net/lax1dude/eaglercraft/v1_8/internal/teavm/Base64VarIntArray.java create mode 100755 src/teavm/java/net/lax1dude/eaglercraft/v1_8/internal/teavm/ClassesJSLocator.java create mode 100755 src/teavm/java/net/lax1dude/eaglercraft/v1_8/internal/teavm/ES6ShimStatus.java create mode 100755 src/teavm/java/net/lax1dude/eaglercraft/v1_8/internal/teavm/ES6ShimStatusJS.java create mode 100755 src/teavm/java/net/lax1dude/eaglercraft/v1_8/internal/teavm/EnumES6ShimStatus.java create mode 100755 src/teavm/java/net/lax1dude/eaglercraft/v1_8/internal/teavm/EnumES6Shims.java create mode 100755 src/teavm/java/net/lax1dude/eaglercraft/v1_8/internal/teavm/IFrameSafetyException.java create mode 100755 src/teavm/java/net/lax1dude/eaglercraft/v1_8/internal/teavm/ImmediateContinue.java create mode 100755 src/teavm/java/net/lax1dude/eaglercraft/v1_8/internal/teavm/IndexedDBFilesystem.java create mode 100755 src/teavm/java/net/lax1dude/eaglercraft/v1_8/internal/teavm/InputEvent.java create mode 100755 src/teavm/java/net/lax1dude/eaglercraft/v1_8/internal/teavm/JOrbisAudioBufferDecoder.java create mode 100755 src/teavm/java/net/lax1dude/eaglercraft/v1_8/internal/teavm/LegacyKeycodeTranslator.java create mode 100755 src/teavm/java/net/lax1dude/eaglercraft/v1_8/internal/teavm/MessageChannel.java create mode 100755 src/teavm/java/net/lax1dude/eaglercraft/v1_8/internal/teavm/OffsetTouch.java create mode 100755 src/teavm/java/net/lax1dude/eaglercraft/v1_8/internal/teavm/PCMToWAVLoader.java create mode 100755 src/teavm/java/net/lax1dude/eaglercraft/v1_8/internal/teavm/SortedTouchEvent.java create mode 100755 src/teavm/java/net/lax1dude/eaglercraft/v1_8/internal/teavm/TeaVMBlobURLHandle.java create mode 100755 src/teavm/java/net/lax1dude/eaglercraft/v1_8/internal/teavm/TeaVMBlobURLManager.java create mode 100755 src/teavm/java/net/lax1dude/eaglercraft/v1_8/internal/teavm/TeaVMDataURLManager.java create mode 100755 src/teavm/java/net/lax1dude/eaglercraft/v1_8/internal/teavm/TeaVMEnterBootMenuException.java create mode 100755 src/teavm/java/net/lax1dude/eaglercraft/v1_8/internal/teavm/TeaVMFetchJS.java create mode 100755 src/teavm/java/net/lax1dude/eaglercraft/v1_8/internal/teavm/TeaVMRuntimeDeobfuscator.java create mode 100755 src/teavm/java/net/lax1dude/eaglercraft/v1_8/internal/teavm/TeaVMWebSocketClient.java create mode 100755 src/teavm/java/net/lax1dude/eaglercraft/v1_8/internal/teavm/TeaVMWebSocketFrame.java create mode 100755 src/teavm/java/net/lax1dude/eaglercraft/v1_8/internal/teavm/Touch.java create mode 100755 src/teavm/java/net/lax1dude/eaglercraft/v1_8/internal/teavm/TouchEvent.java create mode 100755 src/teavm/java/net/lax1dude/eaglercraft/v1_8/internal/teavm/TouchList.java create mode 100755 src/teavm/java/net/lax1dude/eaglercraft/v1_8/internal/teavm/VisualViewport.java create mode 100755 src/teavm/java/net/lax1dude/eaglercraft/v1_8/internal/teavm/WebGLANGLEInstancedArrays.java create mode 100755 src/teavm/java/net/lax1dude/eaglercraft/v1_8/internal/teavm/WebGLBackBuffer.java create mode 100755 src/teavm/java/net/lax1dude/eaglercraft/v1_8/internal/teavm/WebGLOESVertexArrayObject.java create mode 100755 src/teavm/java/net/lax1dude/eaglercraft/v1_8/internal/teavm/generators/TeaVMRuntimeDeobfuscatorGenerator.java create mode 100755 src/teavm/java/net/lax1dude/eaglercraft/v1_8/internal/teavm/generators/TeaVMUtilsUnwrapGenerator.java create mode 100755 src/teavm/java/net/lax1dude/eaglercraft/v1_8/sp/server/internal/teavm/SingleThreadWorker.java create mode 100755 src/teavmc-classpath/resources/org/teavm/backend/javascript/long.js diff --git a/.gitignore b/.gitignore index 59eb444..922d98c 100755 --- a/.gitignore +++ b/.gitignore @@ -13,4 +13,5 @@ desktopRuntime/crash-reports/* desktopRuntime/options.txt desktopRuntime/_eagstorage* desktopRuntime/filesystem/* -desktopRuntime/downloads/* \ No newline at end of file +desktopRuntime/downloads/* +desktopRuntime/screenshots/* \ No newline at end of file diff --git a/CODE_STANDARDS.md b/CODE_STANDARDS.md new file mode 100755 index 0000000..ed30f2a --- /dev/null +++ b/CODE_STANDARDS.md @@ -0,0 +1,306 @@ +# Eaglercraft Code Standards + +**These are some basic rules to follow if you would like to write code that is consistent with the Eaglercraft 1.8 codebase. If you are already familiar with Eaglercraft 1.5 or b1.3, please abandon whatever you think is the best practice as a result of reading that code, those clients should be considered as obsolete prototypes.** + +## Part A. Coding Style + +### 1. Tabs, not spaces + +Tabs not spaces, it makes indentation easier to manage and reduces file size. Other popular projects that are also known to use tabs instead of spaces include the linux kernel. We prefer to set tab width to 4 spaces on our editors. + +Format code like the eclipse formatter on factory settings + +### 2. Avoid redundant hash map lookups + +Don't retrieve the same value from a hash map more than once, that includes checking if an entry exists first before retrieving its value. If you do this, you are a horrible person! + +**Incorrect:** + +```java +if(hashMap.containsKey("eagler")) { + Object val = hashMap.get("eagler"); + // do something with val +} +``` + +**Correct:** + +```java +Object val = hashMap.get("eagler"); +if(val != null) { + // do something with val +} +``` + +### 3. Cache the return value of a function if you plan to use it multiple times + +This is somewhat an extension of rule #2, don't repeatedly call the same function multiple times if there's no reason to, even if its a relatively fast function. Everything is slower and less efficient in a browser. + +**Incorrect:** + +```java +while(itr.hasNext()) { + if(!Minecraft.getMinecraft().getRenderManager().getEntityClassRenderObject(SomeEntity.class).shouldRender(itr.next())) { + itr.remove(); + } +} +``` + +**Correct:** + +```java +Render render = Minecraft.getMinecraft().getRenderManager().getEntityClassRenderObject(SomeEntity.class); +while(itr.hasNext()) { + if(!render.shouldRender(itr.next())) { + itr.remove(); + } +} +``` + +### 4. Iterators aren't that great + +Avoid using iterators when possible, this includes a `for(Item item : list)` type loop, since this may compile into bytecode that uses an iterator. If the list is a linked list or some other type of data structure that can’t perform random access efficiently, then it is recommended to use an iterator, but if the collection is guaranteed to be something similar to an ArrayList then implement it via a traditional for loop instead. + +**Recommended way to iterate an ArrayList:** + +```java +for(int i = 0, l = list.size(); i < l; ++i) { + Item item = list.get(i); + // do something +} +``` + +### 5. Don't shit on the heap + +Avoid creating temporary single-use objects in performance critical code, since the overhead of doing so is larger in a browser where there’s no type safety to predefine object structures. This includes using lambdas or using most of the stuff in the google guava package. Also this is partially why I prefer not using iterators whenever possible. + +**Incorrect, creates 5 temporary objects:** + +```java +List list1 = Arrays.asList("eagler", "eagler", "deevis"); +List list2 = Lists.newArrayList( + Collections2.transform( + Collections2.filter( + list1, + (e) -> !e.equals("deevis") + ), + (e) -> (e + "!") + ) +); +``` + +**Correct, creates no temporary objects:** + +```java +List list1 = Arrays.asList("eagler", "eagler", "deevis"); +List list2 = Lists.newArrayList(); +for(int i = 0, l = list1.size(); i < l; ++i) { + String s = list1.get(i); + if(!s.equals("deevis")) { + list2.add(s + "!"); + } +} +``` + +(note: we are ignoring the StringBuilder instances that the compiler generates from ` + "!"`) + +### 6. Don't base game/render logic off of the system time + +Use `EagRuntime.steadyTimeMillis()` instead to access a monotonic clock, as in a clock that is guaranteed to only run forwards, and is not affected by changes in the system time. `System.currentTimeMillis()` should only be used in situations where you want to know the actual wall time or are measuring elapsed time across multiple page refreshes. + +### 7. Prefer multiplication over division + +If you're always gonna divide a number by some constant, it is better to multiply it by one-over-the-constant instead. + +**Incorrect** + +```java +float b = a / 50.0f; +``` + +**Correct** + +```java +float b = a * 0.02f; +``` + +### 8. Shaders should take advantage of compiler intrinsics + +Although you may think these two pieces of code are identical, its more than likely that the "Correct" example will compile to a more efficient shader on almost any hardware. The functions in GLSL are not a library, they are compiler intrinsics that usually compile to inline assembly that can take advantage of different acceleration instructions in the GPU's instruction set. Vector math should be done in ways that promotes the use of SIMD instructions when the code is compiled to a shader. + +**Incorrect:** + +```glsl +float dx = pos1.x - pos2.x; +float dy = pos1.y - pos2.y; +float dz = pos1.z - pos2.z; +float distance = sqrt(dx * dx + dy * dy + dz * dz); +float fogDensity = pow(2.718, -density * distance); +``` + +**Correct:** + +```glsl +float fogDensity = exp(-density * length(pos1.xyz - pos2.xyz)); +``` + +### 9. Flatten the control flow of shaders + +Modern GPUs are able to execute multiple instances of a shader on a single core, but if one of those shaders encounters a branch (if statement, or related) that causes it to begin executing different code from the other instances of the shader running on that core, that instance of the shader can no longer be executed at the same time as the other instances, and suddenly you've significantly increased the amount of time this core will now be busy executing shader instructions to account for all of the branches the different shader instances have taken. + +**Incorrect:** + +```glsl +float lightValue = dot(lightDirection, normal); +if(lightValue > 0.0) { + color += lightValue * lightColor * diffuseColor; +} +``` + +**Correct:** +```glsl +float lightValue = max(dot(lightDirection, normal), 0.0); +color += lightValue * lightColor * diffuseColor; +``` + +### 10. Use textureLod unless mipmapping is necessary + +This will prevent the shader from wasting time trying to determine what mipmap levels to read from when the texture is sampled. + +**Incorrect:** + +```glsl +float depthValue = texture(depthBuffer, pos).r; +``` + +**Correct:** + +```glsl +float depthValue = textureLod(depthBuffer, pos, 0.0).r; +``` + +### 11. Divide complex and branch-intensive shaders into multiple draw calls + +You can use a variety of different blending modes to mathematically combine the results of shaders. This is done for the same reason as flattening the control flow, to try and keep instruction pointers in sync by periodically resetting their positions, and also to allow for the driver to multitask better on GPUs with insane numbers of cores. It also allows the shader’s execution to be distributed across multiple frames in the case of something that doesn’t need to update often (like clouds). + + +### 12. Don't abuse `@JSBody` in TeaVM code + +TeaVM provides lots of ways of interacting with JavaScript, using `@JSBody` is not the only way, consider using an overlay type. + +**Incorrect** + +```java +@JSObject(params = { "obj" }, script = "return obj.valueA;") +public static native JSObject getValueA(JSObject obj); + +@JSObject(params = { "obj" }, script = "return obj.valueB;") +public static native JSObject getValueB(JSObject obj); + +@JSObject(params = { "obj" }, script = "return obj.valueC;") +public static native JSObject getValueC(JSObject obj); + +@JSObject(params = { "obj" }, script = "obj.dumbFunction();") +public static native void callDumbFunction(JSObject obj); +``` + +**Correct** + +```java +public interface MyObject extends JSObject { + + @JSProperty + JSObject getValueA(); + + @JSProperty + JSObject getValueB(); + + @JSProperty + JSObject getValueC(); + + void dumbFunction(); + +} +``` + +### 13. Don't fall for TeaVM's threads + +It is impossible to have multithreading in JavaScript, only worker objects can be used to execute code concurrently, which can't share javascript variables. Therefore, when you create a thread in TeaVM, you're creating a virtual thread that isn't capable of running at the same time as any other virtual thread in the TeaVM context. This means it's impossible to speed a TeaVM program up through the use of multiple Java threads, instead it is more than likely that it will just slow the program down more to implement multithreading through TeaVM's threads due to the additional time required for synchronization and context switches. Its more efficient to just program the entire application to be single threaded to begin with, just put everything in the main loop and realize that if it was in a different thread it would just periodically interrupt the main loop. + +### 14. Always use try-with-resources + +For any code that deals with streams to be considered safe, it should either use a try-with-resources or try/finally in order to release resources when complete, since otherwise the stream might not close if an IO error causes the function to return early. This is especially important for plugin code since its supposed to be able to run on a large server for weeks at a time without the underlying JVM being restarted. If hackers discover a bug in the code to cause a function to return early like this without closing a stream, they might exploit it to fatally crash the server by spamming whatever corrupt packet causes the function to leak the stream, so all code must be written so it can fail at any time without leaking resources. + +**Incorrect** + +```java +InputStream is = new FileInputStream(new File("phile.txt")); +is.write(someArray); +is.close(); +``` + +**Correct** + +```java +try(InputStream is = new FileInputStream(new File("phile.txt"))) { + is.write(someArray); +} +``` + +Notice that the `.close()` can be omitted completely when using a try-with-resources + +### 15. Always close compression/decompression streams + +In the desktop runtime, the default oracle JDK uses native code to implement the compression/decompression streams (InflaterInputStream, GZIPInputStream, etc) and therefore if you forget to close the compression/decompression stream it will cause a memory leak when the code isn't running in a browser. This is a common issue when using byte array input/output streams since you might believe when decompressing data from a byte array that there's no reason to close the stream when you're done since its not a file, but that will still cause a memory leak due to the decompression stream not being cleaned up. + +## Part B. Project Structure + +### 1. Code decompiled from Minecraft goes in `src/game/java` + +Don't add any new classes to `src/game/java`, and ideally any significant additions to the game's source (functions, etc) should be done through creating new classes in `src/main/java` instead of adding it directly to the decompiled classes. + +### 2. Do not put platform-dependent code in `src/main/java` or `src/game/java` + +One of the objectives of Eaglercraft is to make Minecraft Java edition truly cross platform, why stop at just a desktop and JavaScript runtime? There are plans to create an Android runtime and several WebAssembly runtimes, all of which will be compatible with any pre-existing eaglercraft clients that only depend on the EaglercraftX runtime library and don't directly depend on components of TeaVM or LWJGL. Ideally, all core features of the client should be implemented in the `src/main/java` and `src/game/java` and any platform-dependent features should be stubbed out in some abstract platform-independent way in classes in the `src/teavm/java` and `src/lwjgl/java` and any other future runtime you want your client to support. Ideally, every source folder of platform-dependent code should expose an identical API for access to the platform-independent code as all the other platform-dependant code folders currently expose. + +### 3. Don't mix JavaScript with Java + +Don’t implement features in the JavaScript runtime by requiring additional JavaScript files be included on index.html, if you must access browser APIs then use the TeaVM JSO to write your code in Java instead so it’s baked directly into classes.js. Certain browser APIs may be missing from the default TeaVM JSO-APIs library but it is not difficult to create the overlay types for them manually. Clients that violate this rule may also not possible to automatically import into the EaglercraftX boot menu depending on how fucked up they are. There aren't any limitations to the TeaVM JSO that give you a good enough excuse not to follow this rule. + +### 4. Don't access the classes named "Platform\*" directly from your platform-independent code + +Much like the Java runtime environment itself, Eaglercraft's runtime library consists of two layers, the internal classes full of platform-dependent code that expose an intermediate API not meant to be used by programmers directly, and the platform-independent API classes that provide a platform-independent wrapper for the platform dependent classes and also provide all the miscellaneous utility functions that don't require platform dependent code to be implemented. Chances are if you are directly using a function on a class that has a name that starts with "Platform\*", that there is a different class in `src/main/java` that you are meant to use in order to access that feature, that may perform additional checks or adjust the values you are passing to the function before calling the function in the Platform class. + +## Part C. Compatibility Standards + +### 1. Target minimum JDK version is Java 8 + +Its difficult to find a platform where its not possible to run Java 8 in some capacity, therefore the desktop runtime of EaglercraftX and the BungeeCord plugin should target Java 8. The Velocity plugin is an exception since Velocity itself doesn't support Java 8 either. + +### 2. Target minimum supported browser is Google Chrome 38 + +Released on October 7, 2014, we think its a good target for the JavaScript versions of EaglercraftX. This is the last version of Chrome that supports hardware accelerated WebGL 1.0 on Windows XP. All base features of the underlying Minecraft 1.8 client must be functional, however things such as EaglercraftX's shaders or dynamic lighting are not required to work. The client cannot crash as a result of any missing features on an old browser, you must either implement fallbacks or safely disable the unsupported features. + +### 3. Target minimum supported graphics API is OpenGL ES 2.0 (WebGL 1.0) + +The most widely supported graphics API in the world is currently OpenGL ES 2.0, so ideally that should be the target for EaglercraftX 1.8. We can guarantee the client will be on an OpenGL ES 3.0 context 99% of the time, however its not that hard to also maintain support for GLES 2.0 (WebGL 1.0) as well with slightly reduced functionality so we might as well make it a feature in case of the 1% of the time that functionality is not available. The client cannot depend on any GL extensions in order to run in GLES 2.0 mode, however its reasonable to assume there will be VAO support via extensions in most GLES 2.0 contexts so the client includes an abstraction layer (via EaglercraftGPU.java) to seamlessly emulate VAO functionality even when the client is running in GLES 2.0 mode with no VAO extensions. The only core feature of Minecraft 1.8 that is completely unavailable in GLES 2.0 mode is mip-mapping for the blocks/items texture atlas due to being unable to limit the max mipmap level. + +### 4. Use preprocessor directives to make portable shaders that can be compiled for both OpenGL ES 2.0 and 3.0 contexts + +Most of the shaders in the base "glsl" directory of the resources EPK file use a file called "gles2_compat.glsl" to polyfill certain GLSL features (such as input/output declarations) via preprocessor directives to allow them to be compiled on both OpenGL ES 3.0 and 2.0 contexts. This is the preferred way to implement backwards compatibility over creating seprate versions of the same shaders, since future developers don't need to waste time maintaining multiple versions of the same code if they don't really care about backwards compatibility in the first place. + +### 5. Target minimum version of the JavaScript syntax is ES5 strict mode + +A shim is included to provide certain ES6 functions, however you should always program with syntax compatible with ES5, so the script doesn't crash immediately due to syntax errors even if the functions that use unsupported syntax aren't actually being called. `build.gradle` currently patches out all the ES5 strict mode incompatible syntax in the output of TeaVM 0.9.2, but this will probably break if you try to update TeaVM. Don't worry though because future WASM versions of EaglercraftX will use the latest versions of TeaVM. **Some common incompatible syntax to avoid includes `const`, `let`, `async`, `( ) => `, and using named functions! You can't do any of these things in your JSBody annotations.** + +### 6. You cannot depend on any deprecated browser features + +The same way we want EaglercraftX to work on browsers from over 10 years ago, we want it to still work in browsers 10 years from today, therefore the client cannot depend on any deprecated browser features in order for all the base Minecraft 1.8 game's features to work properly. However it is okay to use deprecated features as fallback if any modern non-deprecated feature (such as keyboard event handling) that the game needs if the game is running in an old browser. + +### 7. Always use addEventListener to register event handlers + +Always use addEventListener to register event handlers for browser APIs, never through the use of assigning the legacy "on\*" (onclick, onkeydown, onmessage, etc) variables, the TeaVMUtils class has a universal helper function for accessing addEventListener on any JSO objects that don’t already implement the function. + +### 8. JavaScript should be executed in strict mode + +Always make sure your JavaScript files start with `"use strict";`, be careful when adding this to your code retroactively because it will probably break hastily written code unless you haven’t made a single typo that’s not forbidden in strict mode. Be aware that in Chrome 38 this means you can't use stuff such as `const` and `let` or named functions in any of your JSBody annotations! diff --git a/EAGLERCRAFTX_README.md b/EAGLERCRAFTX_README.md new file mode 100755 index 0000000..7a33236 --- /dev/null +++ b/EAGLERCRAFTX_README.md @@ -0,0 +1,246 @@ + +# EaglercraftX 1.8 + +### Play Minecraft 1.8 in your browser, supports singleplayer and multiplayer + +![EaglercraftX 1.8 Screenshot Main Menu](https://deev.is/eagler/cors/eagler-1.8-u22-titlescreen-480p.png) + +### This repository contains: + + - **Utilities to decompile Minecraft 1.8 and apply patch files to it** + - **Source code to provide the LWJGL keyboard, mouse, and OpenGL APIs in a browser** + - **Patch files to mod the Minecraft 1.8 source code to make it browser compatible** + - **Browser-modified portions of Minecraft 1.8's open-source dependencies** + - **Plugins for Minecraft servers to allow the eagler client to connect to them** + +### This repository does NOT contain: + + - **Any portion of the decompiled Minecraft 1.8 source code or resources** + - **Any portion of Mod Coder Pack and it's config files** + - **Data that can be used alone to reconstruct portions of the game's source code** + +## Getting Started: + +### To compile the latest version of the client, on Windows: + +1. Make sure you have at least Java 11 installed and added to your PATH, it is recommended to use Java 17 +2. Download (clone) this repository to your computer +3. Double click `CompileLatestClient.bat`, a GUI resembling a classic windows installer should open +4. Follow the steps shown to you in the new window to finish compiling + +### To compile the latest version of the client, on Linux/macOS: + +1. Make sure you have at least Java 11 installed, it is recommended to use Java 17 +2. Download (clone) this repository to your computer +3. Open a terminal in the folder the repository was cloned to +4. Type `chmod +x CompileLatestClient.sh` and hit enter +5. Type `./CompileLatestClient.sh` and hit enter, a GUI resembling a classic windows installer should open +6. Follow the steps shown to you in the new window to finish compiling + +## Browser Compatibility + +EaglercraftX 1.8 is currently known to work on browsers as old as Chrome 38 on Windows XP, the game supports both WebGL 1.0 and WebGL 2.0 however features such as dynamic lighting and PBR shaders require WebGL 2.0. The game also supports mobile browsers that don't have a keyboard or mouse, the game will enter touch screen mode automatically when touch input is detected. The game also includes an embedded OGG codec (JOrbis) for loading audio files on iOS where the browsers don't support loading OGG files in an AudioContext. + +## Singleplayer + +EaglercraftX 1.8 fully supports singleplayer mode through an integrated server. Worlds are saved to your browser's local storage and are available even if your device does not have an internet connection. You can also import and export worlds in EaglercraftX as EPK files to copy them between devices and send them to your friends. + +You can also import and export your existing vanilla Minecraft 1.8 worlds into EaglercraftX using ZIP files if you want to try playing all your old 1.8 maps in a modern browser. The glitch that caused some chunks to become corrupt when exporting worlds as vanilla in Eaglercraft 1.5.2 no longer happens in EaglercraftX 1.8, its perfect now. Beware that the inventories of LAN world players are not saved when the world is converted to vanilla, and pets (dogs, cats, horses, etc) might sometimes forget their owners due to the UUID changes. + +## Shared Worlds + +**This feature used to be known as "LAN Worlds" but has been renamed to "Shared Worlds" to avoid confusion** + +If you would like to invite other players to join your singleplayer world and play the game together, use the "Invite" button in the pause menu. You can configure gamemode and cheats for the other players joining your world, you can also decide if you would like to hide your world from other people on your wifi network or advertise your world to them. If hidden is "off" then other people on your same wifi network will see your world listed on their game's "Multiplayer" screen with all of their servers like how sharing LAN worlds behave in vanilla Minecraft 1.8. + +Once you press "Start Shared World", EaglercraftX 1.8 will give you a "join code" (usually 5 letters) to share with your friends. On a different device, go the "Multiplayer" screen and press "Direct Connect" and press "Join Shared World", enter the join code given to you when you started the shared world and press "Join World". Given a few seconds, the client should successfully be able to join your shared world from any other device on the internet that also has unrestricted internet access. If it does not work, check the "Network Settings" screen and make sure you and your friends all have the same set of shared world relay URLs configured or your clients will not be able to find each other. + +If you would like to host your own relay, the JAR file and instructions can be downloaded from the "Network Settings" screen in the client. EaglercraftX 1.8 uses the same "LAN world" relay server that is used by Eaglercraft 1.5.2, if you would like the relay source code find a random copy of the Eaglercraft 1.5.2 source code and it should be located in the "sp-relay" folder. The relay has not been updated since then, it has only been renamed from "LAN world relay" to "Shared world relay". + +## PBR Shaders + +EaglercraftX 1.8 includes a deferred physically-based renderer modeled after the GTA V rendering engine with many new improvements and a novel raytracing technique for fast realistic reflections. It can be enabled in the "Shaders" menu in the game's options screen. Shader packs in EaglercraftX are just a component of resource packs, so any custom shaders you install will be in the form of a resource pack. EaglercraftX also comes with a very well optimized built-in PBR shader pack and also a built-in PBR material texture pack to give all blocks and items in the game realistic lighting and materials that looks better than most vanilla Minecraft shader packs. The default shader and texture packs were created from scratch by lax1dude, shaders packs made for vanilla Minecraft will not work in EaglercraftX and no shaders in EaglercraftX were taken from vanilla Minecraft shader packs. The shaders are not available in WebGL 1.0 mode or if floating point HDR render targets are not fully supported. + +## Voice Chat + +EaglercraftX 1.8 includes an integrated voice-chat service that can be used in shared worlds and also on multiplayer servers when it is enabled by the server owner. This feature also uses WebRTC like shared worlds, so be careful that you don't leak your IP address accidentally by using it on a public server. If you own a website and don't want people to use voice chat on it, edit the `eaglercraftXOpts` variable in your index.html and add `allowVoiceClient: false`. + +## Resource Packs + +EaglercraftX 1.8 allows you to use any vanilla Minecraft 1.8 resource pack in your browser by importing it as a zip file, resource packs are saved to your browser's local storage and are saved between page refreshes. This can be used to add the original C418 soundtrack back into the game, download and import [this pack](https://bafybeiayojww5jfyzvlmtuk7l5ufkt7nlfto7mhwmzf2vs4bvsjd5ouiuq.ipfs.nftstorage.link/?filename=Music_For_Eaglercraft.zip) to add music back to Eaglercraft. A known bug with the debug desktop runtime is that sound files in resource packs do not play, this may be fixed in the future but is not a high priority issue. + +If you are creating a resource pack and want to disable the blur filter on the main menu panorama, create a file called `assets/minecraft/textures/gui/title/background/enable_blur.txt` in your pack and set it's contents to `enable_blur=0` + +## Making a Server + +To make a server for EaglercraftX 1.8 the recommended software to use is EaglercraftXBungee ("EaglerXBungee") which is included in this repository in the `gateway/EaglercraftXBungee` folder. This is a plugin designed to be used with BungeeCord to allow Eaglercraft players to join your BungeeCord server. It is assumed that the reader already knows what BungeeCord is and has a working server set up that is joinable via java edition. If you don't know what BungeeCord is, please research the topic yourself first before continuing. Waterfall and FlameCord have also been tested, but EaglerXBungee was natively compiled against BungeeCord. + +There is an experimental velocity plugin available in `gateway/EaglercraftXVelocity` but it is still in development and not recommended for public servers, so be sure to check for updates regularly if you use it. Configuration files are basically identical to EaglercraftXBungee so its safe to just directy copy in your old EaglercraftXBungee config files to the `plugins/eaglerxvelocity` folder and they should work with a minimal number of edits if you are migrating your network from BungeeCord to Velocity. + +### Detailed READMEs + +- [**EaglerXBungee README**](README_EAGLERXBUNGEE.md) +- [**EaglerXVelocity README**](README_EAGLERXVELOCITY.md) +- [**EaglerXBukkitAPI README**](README_EAGLERXBUKKITAPI.md) + +### Installation + +Obtain the latest version of the EaglerXBungee JAR file (it can be downloaded in the client from the "Multiplayer" screen) and place it in the "plugins" folder of your BungeeCord server. It's recommended to only join native Minecraft 1.8 servers through an EaglerXBungee server but plugins like ProtocolSupport have allowed some people to join newer servers too. + +Configuration files and other plugin data will be written in `plugins/EaglercraftXBungee` + +### Online Mode Instructions + +1. Enable `online_mode` in BungeeCord's `config.yml` file and make sure it works +2. Join the BungeeCord server using Minecraft Java Edition while logged into your Microsoft account +3. Run the `/eagler` command, it will give you a temporary login code +4. Disconnect from the server, close java edition, launch EaglercraftX 1.8 +5. Set your profile username to the username of your Microsoft account +6. Go to the "Multiplayer" menu, press "Direct Connect", press "Connect to Server", then enter "ws://localhost:8081/" +7. If you are using a VPS, replace "localhost" with the IP address of the VPS when you connect +8. Press "Join Server", a login screen will be displayed, enter the temporary login code into the password field +9. EaglerXBungee will log you into the server as the Microsoft account you generated the login code with + +Players using EaglercraftX will be able to see the vanilla skins of players on the server using vanilla Minecraft, but players on the server using vanilla Minecraft won't be able to see the skins of players using Eaglercraft. Instead they will see the skin of the Minecraft account that was used when the Eaglercraft player originally ran the `/eagler` command. + +To disable this vanilla player skin feature and stop the plugin from downloading the textures of any player heads spawned with commands, edit the EaglercraftXBungee `settings.yml` file in the `plugins/EaglercraftXBungee` folder and change `download_vanilla_skins_to_clients` to `false`. Ratelimits configured in `settings.yml` define the maximum number of times per minute a single player is allowed to trigger profile/skin lookups and also define the maximum number of times per minute the entire server is allowed to actually perform profile/skin lookups. + +By default, EaglercraftXBungee will use a local SQLite database in the server's working directory to store player skins and authentication codes. SQLite will be downloaded automatically if it is not already present. If you would like to use MySQL or something else instead, EaglercraftXBungee is JDBC-based and supports any database type that you can find a driver for. You can set the path of the database, path of the driver JAR, and the name of the driver class (example: `org.sqlite.JDBC`) for storing player skins in `settings.yml` and for storing login codes and profiles in `authservice.yml`. + +### Offline Mode Instructions + +By setting `online_mode` to `false` in the BungeeCord `config.yml` the authentication system will be disabled and players will no longer be required to first generate a code to log in. This should only be used for testing or if you can't get the authentication system to work. EaglercraftXBungee's skin system is supposed to be able to display SkinsRestorer skins if you plan to have vanilla players on the server but it's not guaranteed. + +### Built-in HTTP server + +When configuring the EaglercraftXBungee `listeners.yml` file, every listener includes an `http_server` section that can be used to configure the listener to also behave like a regular HTTP server when the websocket address is entered into a browser. If this is disabled people will get the normal "404 Websocket Upgrade Failure" instead when they accidentally type your server address into their browser. `root` defines the path to the folder containing index.html and the other files you want to host, relative to the `plugins/EaglercraftXBungee` folder. This can be useful for hosting the client if the offline download doesn't work for some reason but might slow your BungeeCord server down if lots of people are loading it all the time. + +### Enabling Voice Chat + +Voice chat is disabled by default in EaglercraftXBungee because it is not recommended for use on public servers. To enable it, add or change `allow_voice: true` to your EaglercraftXBungee `listeners.yml` file. The main difference between Eaglercraft 1.5.2 and EaglercraftX 1.8's voice chat feature is that the "Global" channel now only includes other players on the same server as you instead of every single player connected to the same bungeecord proxy. If you would like to disable voice chat on certain servers, add the names of the servers to the `disable_voice_chat_on_servers` list in the EaglercraftXBungee `settings.yml` file. You may have to add this property to the YML file manually if you've upgraded your server from an older version of EaglercraftXBungee. + +### Disabling FNAW Skins + +Players are known to complain about the high-poly Five Nights At Winstons character skins making PVP harder because of the belief that they change a player's hitbox. If you would like to disable those skins in your PVP worlds you can either set `disable_fnaw_skins_everywhere: true` in your EaglercraftXBungee `settings.yml` file to disable them for all players on your whole BungeeCord proxy, or you can disable them on specific servers by adding the names of the servers to the `disable_fnaw_skins_on_servers` list also in `settings.yml` like with disabling voice chat. + +## Launch Options + +The EaglercraftX 1.8 client is configured primarily through a variable called `window.eaglercraftXOpts` that must be set before the client starts up. + +The default eaglercraftXOpts values is this: + + const relayId = Math.floor(Math.random() * 3); + window.eaglercraftXOpts = { + demoMode: false, + container: "game_frame", + assetsURI: "assets.epk", + localesURI: "lang/", + worldsDB: "worlds", + servers: [ + { addr: "ws://localhost:8081/", name: "Local test server" } + ], + relays: [ + { addr: "wss://relay.deev.is/", comment: "lax1dude relay #1", primary: relayId == 0 }, + { addr: "wss://relay.lax1dude.net/", comment: "lax1dude relay #2", primary: relayId == 1 }, + { addr: "wss://relay.shhnowisnottheti.me/", comment: "ayunami relay #1", primary: relayId == 2 } + ] + }; + +### List of available options + +- `container:` the ID of the HTML element to create the canvas in **(required)** +- `assetsURI:` the URL of the assets.epk file **(required)** +- `localesURI:` the URL where extra .lang files can be found +- `lang`: the default language to use for the game (like "en_US") +- `joinServer`: server address to join when the game launches +- `worldsDB:` the name of the IndexedDB database to store worlds in +- `resourcePacksDB:` the name of the IndexedDB database to store resource packs in +- `demoMode:` whether to launch the game in java edition demo mode +- `servers:` a list of default servers to display on the Multiplayer screen +- `relays:` the default list of shared world relays to use for invites +- `checkShaderGLErrors:` enables more verbose opengl error logging for the shaders +- `enableDownloadOfflineButton:` whether to show a "Download Offline" button on the title screen +- `downloadOfflineButtonLink:` overrides the download link for the "Download Offline" button +- `html5CursorSupport:` enables support for showing the CSS "pointer" cursor over buttons +- `allowUpdateSvc:` enables the certificate-based update system +- `allowUpdateDL:` allows the client to download new updates it finds +- `logInvalidCerts:` print update certificates with invalid signatures to console +- `enableSignatureBadge:` show a badge on the title screen indicating if digital signature is valid +- `checkRelaysForUpdates:` proprietary feature used in offline downloads +- `allowVoiceClient:` can be used to disable the voice chat feature +- `allowFNAWSkins:` can be used to disable the high poly FNAW skins +- `localStorageNamespace:` can be used to change the prefix of the local storage keys (Default: `"_eaglercraftX"`) +- `enableMinceraft:` can be used to disable the "Minceraft" title screen +- `crashOnUncaughtExceptions:` display crash reports when `window.onerror` is fired +- `openDebugConsoleOnLaunch:` open debug console automatically at launch +- `fixDebugConsoleUnloadListener:` close debug console beforeunload instead of unload +- `forceWebViewSupport:` if the server info webview should be allowed even on browsers without the required safety features +- `enableWebViewCSP:` if the `csp` attibute should be set on the server info webview for extra security +- `enableServerCookies:` can be used to disable server cookies +- `allowServerRedirects:` if servers should be allowed to make the client reconnect to a different address +- `autoFixLegacyStyleAttr:` if the viewport meta tag and style attributes on old offline downloads and websites should be automatically patched +- `showBootMenuOnLaunch:` if the client should always show the boot menu on every launch +- `bootMenuBlocksUnsignedClients:` if the boot menu should only be allowed to launch signed clients +- `allowBootMenu:` can be used to disable the boot menu entirely +- `forceProfanityFilter:` if the profanity filter should be forced enabled +- `forceWebGL1:` if the game should force the browser to only use WebGL 1.0 for the canvas +- `forceWebGL2:` if the game should force the browser to only use WebGL 2.0 for the canvas +- `allowExperimentalWebGL1:` if the game should be allowed to create an `experimental-webgl` context +- `useWebGLExt:` can be used to disable all OpenGL ES extensions to test the game on a pure WebGL 1.0/2.0 context +- `useDelayOnSwap:` if the game should `setTimeout(..., 0)` every frame instead of using MessageChannel hacks +- `useJOrbisAudioDecoder:` if OGG vorbis files should be decoded using the JOrbis Java OGG decoder instead of using the browser +- `useXHRFetch:` if the game should use XMLHttpRequest for downloading resources instead of the fetch API +- `useVisualViewport:` if the game should resize some GUIs relative to `window.visualViewport` (needed on mobile browsers when the keyboard is open) +- `deobfStackTraces:` can be used to disable the runtime stack-trace deobfuscation, reduces micro stutters if the game is logging errors +- `disableBlobURLs:` if the game should use `data:` URLs instead of `blob:` URLs for loading certain resources +- `eaglerNoDelay:` can be used to disable "Vigg's Algorithm", an algorithm that delays and combines multiple EaglercraftX packets together if they are sent in the same tick (does not affect regular Minecraft 1.8 packets) +- `ramdiskMode:` if worlds and resource packs should be stored in RAM instead of IndexedDB +- `singleThreadMode:` if the game should run the client and integrated server in the same context instead of creating a worker object +- `hooks:` can be used to define JavaScript callbacks for certain events + * `localStorageSaved:` JavaScript callback to save local storage keys (key, data) + * `localStorageLoaded:` JavaScript callback to load local storage keys (key) returns data + * `crashReportShow:` JavaScript callback when a crash report is shown (report, customMessageCB) + * `screenChanged:` JavaScript callback when the screen changes/resizes (screenName, scaledWidth, scaledHeight, realWidth, realHeight, scaleFactor) + +### Using Hooks + +You may want to implement some custom logic for loading/saving certain local storage keys. The eaglercraftXOpts hooks section can be used to override the client's local storage load and save functions. Currently, local storage keys are used to save game settings, the user's profile, custom servers, and shared world relays. Worlds and resource packs do not use local storage keys because modern browsers limit local storage keys to only 5 megabytes per domain which is too small for saving entire worlds and resource packs. Worlds and resource packs are saved using [IndexedDB](https://developer.mozilla.org/en-US/docs/Web/API/IndexedDB_API). + + window.eaglercraftXOpts = { + ... + ... + ... + hooks: { + localStorageSaved: function(key, data) { + // 'key' is local storage key name as a string + // 'data' is base64-encoded byte array as a string + // function returns nothing + }, + localStorageLoaded: function(key) { + // 'key' is local storage key name as a string + // function returns a base64-encoded byte array as a string + // function returns null if the key does not exist + } + } + } + +Be aware that the client will still save the key to the browser's local storage anyway even if you define a custom save handler, and will just attempt to load the key from the browser's local storage normally if you return null, these are meant to be used like event handlers for creating backups of keys instead of completely replacing the local storage save and load functions. + +On a normal client you will only ever need to handle local storage keys called `p` (profile), `g` (game settings), `s` (server list), `r` (shared world relays), in your hooks functions. Feel free to just ignore any other keys. It is guaranteed that the data the client stores will always be valid base64, so it is best practice to decode it to raw binary first if possible to reduce it's size before saving it to something like a MySQL database in your backend if you are trying to implement some kind of profile syncing system for your website. The keys already have GZIP compression applied to them by default so don't bother trying to compress them yourself a second time because it won't reduce their size. + +### Crash Report Hook + +The `crashReportShow` hook can be used to capture crash reports and append additional text to them. It takes two parameters, the crash report as a string and a callback function for appending text. Do not use the callback function outside the body of the hook. + + hooks: { + crashReportShow: function(report, customMessageCB) { + // 'report' is crash report as a string + customMessageCB("Hello from crashReportShow hook!"); + } + } + +## Developing a Client + +There is currently no system in place to make forks of 1.8 and merge commits made to the patch files in this repository with the patch files or workspace of the fork, you're on your own if you try to keep a fork of this repo for reasons other than to contribute to it + +A javascript-based modding API resembling Minecraft Forge may be implemented someday though for adding custom content to the game. diff --git a/build.gradle b/build.gradle index 5c76755..acbf07f 100755 --- a/build.gradle +++ b/build.gradle @@ -1,16 +1,31 @@ +import org.teavm.gradle.api.OptimizationLevel + +buildscript { + dependencies { + classpath files("src/teavmc-classpath/resources") + } +} + plugins { - id 'java' - id 'eclipse' - id 'org.teavm' version '0.9.2' + id "java" + id "eclipse" + id "org.teavm" version "0.9.2" } sourceSets { main { java { - srcDir 'src/main/java' - srcDir 'src/teavm/java' + srcDirs( + "src/main/java", + "src/game/java", + "src/protocol-game/java", + "src/protocol-relay/java", + "src/teavm/java", + "src/teavm-boot-menu/java" + ) } } + } repositories { @@ -20,20 +35,38 @@ repositories { dependencies { teavm(teavm.libs.jso) teavm(teavm.libs.jsoApis) + compileOnly "org.teavm:teavm-core:0.9.2" // workaround for a few hacks } +def folder = "javascript" +def name = "classes.js" + teavm.js { obfuscated = true sourceMap = true - targetFileName = "../classes.js" - optimization = org.teavm.gradle.api.OptimizationLevel.BALANCED // no fps boost was observed with "AGGRESSIVE" + targetFileName = "../" + name + optimization = OptimizationLevel.BALANCED // Change to "AGGRESSIVE" for release outOfProcess = false fastGlobalAnalysis = false processMemory = 512 - entryPointName = 'main' - mainClass = 'net.lax1dude.eaglercraft.v1_8.internal.teavm.MainClass' - outputDir = file("javascript") - properties = null - sourceMap = true + entryPointName = "main" + mainClass = "net.lax1dude.eaglercraft.v1_8.internal.teavm.MainClass" + outputDir = file(folder) + properties = [ "java.util.TimeZone.autodetect": "true" ] debugInformation = false } + +tasks.named("generateJavaScript") { + doLast { + + // NOTE: This step may break at any time, and is not required for 99% of browsers + + def phile = file(folder + "/" + name) + def dest = phile.getText("UTF-8") + def i = dest.substring(0, dest.indexOf("=\$rt_globals.Symbol('jsoClass');")).lastIndexOf("let ") + dest = dest.substring(0, i) + "var" + dest.substring(i + 3) + def j = dest.indexOf("function(\$rt_globals,\$rt_exports){") + dest = dest.substring(0, j + 34) + "\n" + file(folder + "/ES6ShimScript.txt").getText("UTF-8") + "\n" + dest.substring(j + 34) + phile.write(dest, "UTF-8") + } +} \ No newline at end of file diff --git a/desktopRuntime/RTWebViewClient.html b/desktopRuntime/RTWebViewClient.html new file mode 100755 index 0000000..eb0454d --- /dev/null +++ b/desktopRuntime/RTWebViewClient.html @@ -0,0 +1,514 @@ + + + + + + + + + Eaglercraft Desktop Runtime + + + + +
+
+

Please Wait...

+
+
+ + + + + + \ No newline at end of file diff --git a/desktopRuntime/eclipseProject/.classpath b/desktopRuntime/eclipseProject/.classpath index 7ed6dda..6300425 100755 --- a/desktopRuntime/eclipseProject/.classpath +++ b/desktopRuntime/eclipseProject/.classpath @@ -1,6 +1,9 @@ + + + diff --git a/desktopRuntime/eclipseProject/.project b/desktopRuntime/eclipseProject/.project index 482815d..65e5fa0 100755 --- a/desktopRuntime/eclipseProject/.project +++ b/desktopRuntime/eclipseProject/.project @@ -15,15 +15,30 @@ org.eclipse.jdt.core.javanature - - src_lwjgl_java - 2 - PARENT-2-PROJECT_LOC../src/lwjgl/java - src_main_java 2 PARENT-2-PROJECT_LOC../src/main/java + + src_game_java + 2 + PARENT-2-PROJECT_LOC../src/game/java + + + src_protocol-game_java + 2 + PARENT-2-PROJECT_LOC../src/protocol-game/java + + + src_protocol-relay_java + 2 + PARENT-2-PROJECT_LOC../src/protocol-relay/java + + + src_lwjgl_java + 2 + PARENT-2-PROJECT_LOC../src/lwjgl/java + diff --git a/desktopRuntime/libGLESv2.so b/desktopRuntime/libGLESv2.so.2 similarity index 100% rename from desktopRuntime/libGLESv2.so rename to desktopRuntime/libGLESv2.so.2 diff --git a/desktopRuntime/resources/SignedClientTemplate.txt b/desktopRuntime/resources/SignedClientTemplate.txt index 876e1ce..6753b51 100755 --- a/desktopRuntime/resources/SignedClientTemplate.txt +++ b/desktopRuntime/resources/SignedClientTemplate.txt @@ -1,8 +1,8 @@ - + - + EaglercraftX 1.8 @@ -12,7 +12,7 @@ - +

This file is from ${date}

-

Game will launch in 5...

-
+

Game will launch in 5...

+
+

diff --git a/desktopRuntime/resources/assets/eagler/CREDITS.txt b/desktopRuntime/resources/assets/eagler/CREDITS.txt index b118f61..943a638 100755 --- a/desktopRuntime/resources/assets/eagler/CREDITS.txt +++ b/desktopRuntime/resources/assets/eagler/CREDITS.txt @@ -3,24 +3,26 @@ ~~~~~~~~~~~~~~~~~~~~~~~ lax1dude: - + - Creator of Eaglercraft - Ported the Minecraft 1.8 src to TeaVM - Wrote HW accelerated OpenGL 1.3 emulator - Wrote the default shader pack - Made the integrated PBR resource pack + - Added touch and mobile device support - Wrote all desktop emulation code - Wrote EaglercraftXBungee - Wrote EaglercraftXVelocity - Wrote WebRTC relay server - Wrote voice chat server - Wrote the patch and build system - + ayunami2000: - + - Many bug fixes - WebRTC LAN worlds - WebRTC voice chat + - Worked on touch support - Made velocity plugin work - Added resource packs - Added screen recording @@ -410,7 +412,7 @@ Project Author: The Legion of the Bouncy Castle Project URL: https://www.bouncycastle.org/java.html - Used For: MD5, SHA-1, SHA-256 implementations + Used For: MD5, SHA-1, SHA-256, and AES implementations * Copyright (c) 2000-2021 The Legion of the Bouncy Castle Inc. (https://www.bouncycastle.org) * @@ -668,23 +670,23 @@ Project Author: ymnk, JCraft Inc. Project URL: http://www.jcraft.com/jorbis/ - Used For: Audio in desktop runtime + Used For: Audio in desktop runtime and browsers that don't support OGG * JOrbis * Copyright (C) 2000 ymnk, JCraft,Inc. - * + * * Written by: 2000 ymnk * * Many thanks to * Monty and * The XIPHOPHORUS Company http://www.xiph.org/ . * JOrbis has been based on their awesome works, Vorbis codec. - * + * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public License * as published by the Free Software Foundation; either version 2 of * the License, or (at your option) any later version. - + * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the @@ -696,6 +698,44 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + Project Name: NanoHTTPD + Project Author: NanoHTTPD + Project URL: http://nanohttpd.org/ + + Used For: HTTP server in the desktop runtime + + * Copyright (c) 2012-2013 by Paul S. Hawke, + * 2001,2005-2013 by Jarno Elonen, + * 2010 by Konstantinos Togias 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 the NanoHttpd organization 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 HOLDER 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. + + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + Project Name: sqlite-jdbc Project Author: Taro L. Saito (xerial) Project URL: https://github.com/xerial/sqlite-jdbc diff --git a/desktopRuntime/resources/assets/eagler/audioctx_test_ogg.dat b/desktopRuntime/resources/assets/eagler/audioctx_test_ogg.dat new file mode 100755 index 0000000000000000000000000000000000000000..ff379a7ceae88520037fd572272fae9f8849c371 GIT binary patch literal 3980 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 Sb?xg8eI%auvENs%9)AbWp+dg^ literal 0 HcmV?d00001 diff --git a/desktopRuntime/resources/assets/eagler/audioctx_test_wav16.dat b/desktopRuntime/resources/assets/eagler/audioctx_test_wav16.dat new file mode 100755 index 0000000000000000000000000000000000000000..cfa8ce9c66935e16f64cb45f6a57f13a48441ab6 GIT binary patch literal 2106 zcmWMn2~br>7QNl?y}!W!{11wVA}|swBM2g>xKA9F1SG_TxDFB)K~T{sA-IlY(J`Z? z(P&20jF!7j6eSWFjG&;7yC^C_aae=_l|?@M<-LA==T+CO+qe4kJ*VpQGAkxJI>G=j zck-NR>C1BhtpGr@v1yVv*#JPn3TeqX$&d5^eQCZv#cZLoKB>}ozm^I8k8b=KRO!>R_p95e82 zEorZ9{r>gE*OFJ1rND{ebN-F-Zl9C-u8_UmR)d${nz>@uREIy|K#J7Ri0Q^a(UmVn~jNA=QiG)blcEfl3tbA7C#|tsG-7P%Dz?W zci1Pk@x?@9{)kaI*L*2F#p6>SOUP$1k=49+CBmCLGd&*^AOw5Pm&P*-iS$TtGv5pM zi5((d_?Y?yR=nPRue0}a%h9G|t!a%1TQYlxn3JrV?t=oJUFLn#udb`PDbAJEH^VfD73zGAH=Zw|X5-E-D_{8XZ@6(l zM0G}Mpn1CSE9F)5vUhcm+*_fPn|`(|Y4NZ{{9!vi)RyO;YfUhOTU(r)eH@+(I5Um& z&llGUUE(0WeL-j1oW`wgb;gro`kSd9b3N|39zc!da_79xUzA~;JDds~!mf0jRif1b zyQ8ZZ4m&@zU$wp8)up(t!;|p6SR;w}W4c!0(g(`ivYk;ZT zRHzyicYUY(W;+fXN4>~+YpCu3P8Ls@YV?`bTe_vHNt#LHnZ)-13 zTB_Tlx;KJN=OdrC>2<_@xc!1~UUnCH-u=o~AlmOkp0kS-^v)Ib(q4>o7NCbY!?Bf2 z!3223iF!jk;)oQUiR&;_JfU><+?Vyj79j+BRH_)%=e)+AB=#6{I~J>+(okgw%a@Mn z18ldjM}LjBaD#Nj{Vpky<00JGW%yQ_q06UCc%q9G21!AtCD;XN`bF|VVRXOgwk@o` z`%}80`-nczu+8QzomMW(b9fPq5b_i*+Z-LnHI4#)-g#YFDy^53oGtvZ?n8O6{eiFs z_PZ9+21Q}Vh539o|5}ZpLH5<;j@u#bZ&#R+K39t9TG5;PI2`Dp6ql-$__8SBwCHd9 zSsh`XtY+HhxE+L{iiem9rQ&lojz$UZXbj!v+A6-)hl)*DgcA${F@xL}Gk6bn=vE0o z$qPguDTs_f7cwCY!i7|p&Ps5%ZWbge+i|BZhz#vzO8S+uI zlLo#=PLTTYJ?bPLD%=3Vns_ETK=QGSpMhNd32qd}sxG-*xQ1iZcEu^K=J9l}EGoP7 z;Td_rGkG@IN58}_nocS(hU}*g6ffz3zPxvmI7mFsP2@JU z)6dvSFp4hprTp2WW+Qos6cNT(Y_c9}5fdwz5{k4U*R|tF#72u^D)W z{Kj?@C;3!e3vaLw_oU}gzzE@UmI{BRdNl@r5T3}Z;1#Ljh1^q^jKg?ee59@-jrb)L zV+iXbCPBQC1Bb;|t_re-T;v(5Q-~wuU5lh?Sf#1G21S^|h6^Py#aX4BMnv@kdJcjy z0P8WCZIZ%>8;=8(XG;>RS5Fa7GFfdGT=c4I3;hTELM|m`Lb37$+J&1~%7$<|B+!Q> zL9OTS;bQVo^y7`Pg8vf6i$AiN@=W0aV!$NcUpk2nC5bnPW{6U%$xt#F``{F^2y&6( zF?F*rggu2knyF@y6ugNtZ=|6xnC&OGUW<^d17(By zN@yjO{5to5mADSv@IE<$>HIu-p~jF)>_<`tPtb!D@Evf7pP`d*H!CE6rz4>stY)RK zOk9Zv*l{wF9@891fJDvV-Ab}>nB=QX_)>`H@54Ou8y}`{M*czB1wT3o?KY{BVp z6n0=bRO2kX2p!moN3{?2BpP5e{15*Oc~F4e8ulZI1Q~}xC3c{U)!2%$;0qQwqIu;8 zaoYZ&V1yIeU9~^}^w;`xG($7`Y83%91Z#+AI1uJTUnoHl`oLgl)7Zv9ucp_I1GM@f zR^cd(y%r_#fEF}@4(hai6f)By14n8rF;gQ2Edc~4%$qk)%Yj-f&Q4vCws;l9CFiD& Y8XGn$JZwaGc;K?kl-w1oQZiTn9~UI?Y5)KL literal 0 HcmV?d00001 diff --git a/desktopRuntime/resources/assets/eagler/audioctx_test_wav32f.dat b/desktopRuntime/resources/assets/eagler/audioctx_test_wav32f.dat new file mode 100755 index 0000000000000000000000000000000000000000..13ed4a860ec99188b9cfcc7ab055d9a222ac88a4 GIT binary patch literal 4144 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 literal 0 HcmV?d00001 diff --git a/desktopRuntime/resources/assets/eagler/boot_menu/boot_menu_markup.html b/desktopRuntime/resources/assets/eagler/boot_menu/boot_menu_markup.html new file mode 100755 index 0000000..3d386a1 --- /dev/null +++ b/desktopRuntime/resources/assets/eagler/boot_menu/boot_menu_markup.html @@ -0,0 +1,88 @@ + +
+
+
+

EaglercraftX 1.8 Boot Manager

+
+
+
+ + + +
+
+ +
+
\ No newline at end of file diff --git a/desktopRuntime/resources/assets/eagler/boot_menu/boot_menu_style.css b/desktopRuntime/resources/assets/eagler/boot_menu/boot_menu_style.css new file mode 100755 index 0000000..edac9eb --- /dev/null +++ b/desktopRuntime/resources/assets/eagler/boot_menu/boot_menu_style.css @@ -0,0 +1,328 @@ +@font-face { + font-family: "{% global `root_class_gen` %}_font0"; + src: url("data:font/woff;base64,{% embed base64 `web_cl_eagleiii_8x16.woff` %}") format("woff"); +} +.{% global `root_class_gen` %} { + font: 24px "{% global `root_class_gen` %}_font0"; + color: #CCCCCC; + background-color: #000000; + user-select: none; + width: 100%; + height: 100%; + overflow-y: auto; +} +.{% global `root_class_gen` %}::-moz-selection { + color: #000000; + background-color: #CCCCCC; +} +.{% global `root_class_gen` %}::selection { + color: #000000; + background-color: #CCCCCC; +} +.{% global `root_class_gen` %}::-webkit-scrollbar { + width: 12px; +} +.{% global `root_class_gen` %} ::-webkit-scrollbar { + width: 12px; +} +.{% global `root_class_gen` %}::-webkit-scrollbar-track, .{% global `root_class_gen` %} ::-webkit-scrollbar-track { + background-color: #000000; +} +.{% global `root_class_gen` %}::-webkit-scrollbar-thumb, .{% global `root_class_gen` %} ::-webkit-scrollbar-thumb { + background-color: #CCCCCC; +} +.{% global `root_class_gen` %}::-webkit-scrollbar-button, .{% global `root_class_gen` %} ::-webkit-scrollbar-button { + display: none; +} +.{% global `root_class_gen` %}::-webkit-scrollbar-corner, .{% global `root_class_gen` %} ::-webkit-scrollbar-corner { + background-color: #CCCCCC; +} +.{% global `root_class_gen` %} ._eaglercraftX_boot_menu_inner { + width: 100%; + height: 100%; + min-height: 480px; + display: flex; + flex-flow: column; +} +.{% global `root_class_gen` %} p { + margin-block-start: 0px; + margin-block-end: 0px; + -webkit-margin-before:0px; + -webkit-margin-after:0px; +} +.{% global `root_class_gen` %} ._eaglercraftX_boot_menu_header { + flex: 0 1 auto; +} +.{% global `root_class_gen` %} ._eaglercraftX_boot_menu_header_title { + text-align: center; + padding: 32px 0px 0px 0px; + color: #CCCCCC; + white-space: pre-wrap; +} +.{% global `root_class_gen` %} ._eaglercraftX_boot_menu_content { + flex: 1 1 auto; + position: relative; +} +.{% global `root_class_gen` %} ._eaglercraftX_boot_menu_content_inner { + position: absolute; + top: 32px; + left: 32px; + bottom: 32px; + right: 32px; + border: 2px solid white; + z-index: 1; +} +.{% global `root_class_gen` %} ._eaglercraftX_boot_menu_popup { + position: absolute; + top: 128px; + left: 64px; + bottom: 64px; + right: 64px; + z-index: 10; +} +.{% global `root_class_gen` %} ._eaglercraftX_boot_menu_popup_inner { + width: 50%; + min-width: min(calc(100% - 20px), 400px); + max-width: 800px; + max-height: calc(100% - 20px); + margin-left: auto; + margin-right: auto; + border: 2px solid white; + background-color: #000000; + padding: 10px; + overflow-y: auto; +} +.{% global `root_class_gen` %} ._eaglercraftX_boot_menu_popup_confirm_title { + text-align: center; + padding: 16px; + color: #CCCCCC; + white-space: pre-wrap; +} +.{% global `root_class_gen` %} ._eaglercraftX_boot_menu_popup_confirm_opts { + text-align: center; + padding: 16px; + color: #CCCCCC; +} +.{% global `root_class_gen` %} ._eaglercraftX_boot_menu_popup_confirm_opt { + cursor: pointer; +} +.{% global `root_class_gen` %} ._eaglercraftX_boot_menu_popup_confirm_opt_selected { + color: #000000; + background-color: #CCCCCC; +} +.{% global `root_class_gen` %} ._eaglercraftX_boot_menu_popup_confirm_opt_disabled { + color: #888888; + cursor: default; +} +.{% global `root_class_gen` %} ._eaglercraftX_boot_menu_popup_selection_title { + text-align: center; + padding: 16px; + color: #CCCCCC; +} +.{% global `root_class_gen` %} ._eaglercraftX_boot_menu_popup_selection { + width: calc(100% - 8px); + padding: 8px 4px; +} +.{% global `root_class_gen` %} ._eaglercraftX_boot_menu_popup_input_title { + text-align: center; + padding: 16px; + color: #CCCCCC; + white-space: pre-wrap; +} +.{% global `root_class_gen` %} ._eaglercraftX_boot_menu_popup_input_opts { + text-align: center; + padding: 16px; + color: #CCCCCC; +} +.{% global `root_class_gen` %} ._eaglercraftX_boot_menu_popup_input_opt { + cursor: pointer; +} +.{% global `root_class_gen` %} ._eaglercraftX_boot_menu_popup_input_opt_selected { + color: #000000; + background-color: #CCCCCC; +} +.{% global `root_class_gen` %} ._eaglercraftX_boot_menu_popup_input_opt_disabled { + color: #888888; + cursor: default; +} +.{% global `root_class_gen` %} ._eaglercraftX_boot_menu_popup_input_val_container { + text-align: center; +} +.{% global `root_class_gen` %} ._eaglercraftX_boot_menu_popup_input_val { + min-width: 15em; + width: calc(90% - 50px); + font: 24px "{% global `root_class_gen` %}_font0"; + outline: none; + resize: none; + background-color: #000000; + color: #CCCCCC; + border: 2px solid white; + padding: 2px 4px; +} +.{% global `root_class_gen` %} ._eaglercraftX_boot_menu_popup_input_val:disabled { + color: #888888; +} +.{% global `root_class_gen` %} ._eaglercraftX_boot_menu_popup_input_val::-moz-selection { + color: #000000; + background-color: #CCCCCC; +} +.{% global `root_class_gen` %} ._eaglercraftX_boot_menu_popup_input_val::selection { + color: #000000; + background-color: #CCCCCC; +} +.{% global `root_class_gen` %} ._eaglercraftX_boot_menu_content_view_selection { + width: 100%; + height: 100%; +} +.{% global `root_class_gen` %} ._eaglercraftX_boot_menu_content_selection { + width: calc(100% - 8px); + height: calc(100% - 16px); + padding: 8px 4px; + overflow-y: auto; +} +.{% global `root_class_gen` %} ._eaglercraftX_boot_menu_content_item { + width: 100%; + overflow-y: auto; + cursor: pointer; +} +.{% global `root_class_gen` %} ._eaglercraftX_boot_menu_content_item::before { + content: "\00a0"; +} +.{% global `root_class_gen` %} ._eaglercraftX_boot_menu_content_item_selected { + color: #000000; + background-color: #CCCCCC; +} +.{% global `root_class_gen` %} ._eaglercraftX_boot_menu_content_item_selected::before { + content: "*"; +} +.{% global `root_class_gen` %} ._eaglercraftX_boot_menu_content_item_disabled { + color: #888888; + cursor: default; +} +.{% global `root_class_gen` %} ._eaglercraftX_boot_menu_content_view_editor { + width: 100%; + height: 100%; + position: relative; +} +.{% global `root_class_gen` %} ._eaglercraftX_boot_menu_launch_conf { + position: absolute; + top: 0px; + left: 0px; + right: 0px; + height: calc(25% - 20px); + padding: 10px; + overflow-x: hidden; + overflow-y: auto; + color: #CCCCCC; +} +.{% global `root_class_gen` %} ._eaglercraftX_boot_menu_launch_conf_item_wide { + width: 100%; +} +.{% global `root_class_gen` %} ._eaglercraftX_boot_menu_launch_conf_item { + display: inline-block; + padding: 20px; +} +.{% global `root_class_gen` %} ._eaglercraftX_boot_menu_launch_conf_item input[type=text] { + min-width: 15em; + font: 24px "{% global `root_class_gen` %}_font0"; + outline: none; + resize: none; + background-color: #000000; + color: #CCCCCC; + border: 2px solid white; + padding: 2px 4px; +} +.{% global `root_class_gen` %} ._eaglercraftX_boot_menu_launch_conf_item input[type=text]:disabled { + color: #888888; +} +.{% global `root_class_gen` %} ._eaglercraftX_boot_menu_launch_conf_item input[type=checkbox] { + zoom: 2; + padding: 2px 4px; +} +.{% global `root_class_gen` %} ._eaglercraftX_boot_menu_launch_conf_item select { + font: 24px "{% global `root_class_gen` %}_font0"; + outline: none; + resize: none; + background-color: #000000; + color: #CCCCCC; + border: 2px solid white; + padding: 2px 4px; +} +.{% global `root_class_gen` %} ._eaglercraftX_boot_menu_launch_conf_item option:checked { + background-color: #CCCCCC; + color: #000000; +} +.{% global `root_class_gen` %} ._eaglercraftX_boot_menu_launch_conf_item option:disabled { + color: #888888; +} +.{% global `root_class_gen` %} ._eaglercraftX_boot_menu_launch_conf_item input::-moz-selection { + color: #000000; + background-color: #CCCCCC; +} +.{% global `root_class_gen` %} ._eaglercraftX_boot_menu_launch_conf_item input::selection { + color: #000000; + background-color: #CCCCCC; +} +.{% global `root_class_gen` %} ._eaglercraftX_boot_menu_launch_conf_val_profile_name { + width: calc(100% - 10em); + font: 24px "{% global `root_class_gen` %}_font0"; + outline: none; + resize: none; + background-color: #000000; + color: #CCCCCC; + border: 2px solid white; + padding: 2px 4px; +} +.{% global `root_class_gen` %} ._eaglercraftX_boot_menu_launch_conf_val_profile_name::-moz-selection { + color: #000000; + background-color: #CCCCCC; +} +.{% global `root_class_gen` %} ._eaglercraftX_boot_menu_launch_conf_val_profile_name::selection { + color: #000000; + background-color: #CCCCCC; +} +.{% global `root_class_gen` %} ._eaglercraftX_boot_menu_launch_conf_val_profile_name:disabled { + color: #888888; +} +.{% global `root_class_gen` %} ._eaglercraftX_boot_menu_launch_conf_val_data_format { + padding: 2px 4px; + border: 2px solid white; +} +.{% global `root_class_gen` %} ._eaglercraftX_boot_menu_launch_opt_editor { + position: absolute; + bottom: 0px; + left: 0px; + right: 0px; + height: calc(75% - 22px); + width: calc(100% - 20px); + margin: 0px; + padding: 10px; + font: 24px "{% global `root_class_gen` %}_font0"; + border: none; + border-top: 2px solid white; + outline: none; + resize: none; + background-color: #000000; + color: #CCCCCC; + overflow: auto; + tab-size: 4; +} +.{% global `root_class_gen` %} ._eaglercraftX_boot_menu_launch_opt_editor:disabled { + color: #888888; +} +.{% global `root_class_gen` %} ._eaglercraftX_boot_menu_launch_opt_editor::-moz-selection { + color: #000000; + background-color: #CCCCCC; +} +.{% global `root_class_gen` %} ._eaglercraftX_boot_menu_launch_opt_editor::selection { + color: #000000; + background-color: #CCCCCC; +} +.{% global `root_class_gen` %} ._eaglercraftX_boot_menu_footer { + flex: 0 1 auto; +} +.{% global `root_class_gen` %} ._eaglercraftX_boot_menu_footer_text { + text-align: left; + padding: 0px 0px 32px 64px; + color: #CCCCCC; +} \ No newline at end of file diff --git a/desktopRuntime/resources/assets/eagler/boot_menu/conf_template_eaglercraftX_1_8.json b/desktopRuntime/resources/assets/eagler/boot_menu/conf_template_eaglercraftX_1_8.json new file mode 100755 index 0000000..43c867c --- /dev/null +++ b/desktopRuntime/resources/assets/eagler/boot_menu/conf_template_eaglercraftX_1_8.json @@ -0,0 +1,4 @@ +{ + "client_launch_type": "EAGLERX_V1", + "clear_cookies_before_launch": false +} \ No newline at end of file diff --git a/desktopRuntime/resources/assets/eagler/boot_menu/conf_template_eaglercraftX_1_8_signed.json b/desktopRuntime/resources/assets/eagler/boot_menu/conf_template_eaglercraftX_1_8_signed.json new file mode 100755 index 0000000..c7d4046 --- /dev/null +++ b/desktopRuntime/resources/assets/eagler/boot_menu/conf_template_eaglercraftX_1_8_signed.json @@ -0,0 +1,4 @@ +{ + "client_launch_type": "EAGLERX_SIGNED_V1", + "clear_cookies_before_launch": false +} \ No newline at end of file diff --git a/desktopRuntime/resources/assets/eagler/boot_menu/conf_template_eaglercraft_1_5.json b/desktopRuntime/resources/assets/eagler/boot_menu/conf_template_eaglercraft_1_5.json new file mode 100755 index 0000000..a579c7b --- /dev/null +++ b/desktopRuntime/resources/assets/eagler/boot_menu/conf_template_eaglercraft_1_5.json @@ -0,0 +1,4 @@ +{ + "client_launch_type": "EAGLER_1_5_V2", + "clear_cookies_before_launch": false +} \ No newline at end of file diff --git a/desktopRuntime/resources/assets/eagler/boot_menu/conf_template_eaglercraft_1_5_legacy.json b/desktopRuntime/resources/assets/eagler/boot_menu/conf_template_eaglercraft_1_5_legacy.json new file mode 100755 index 0000000..551d0fd --- /dev/null +++ b/desktopRuntime/resources/assets/eagler/boot_menu/conf_template_eaglercraft_1_5_legacy.json @@ -0,0 +1,5 @@ +{ + "client_launch_type": "EAGLER_1_5_V1", + "join_server": "", + "clear_cookies_before_launch": false +} \ No newline at end of file diff --git a/desktopRuntime/resources/assets/eagler/boot_menu/conf_template_eaglercraft_b1_3.json b/desktopRuntime/resources/assets/eagler/boot_menu/conf_template_eaglercraft_b1_3.json new file mode 100755 index 0000000..57ec0c8 --- /dev/null +++ b/desktopRuntime/resources/assets/eagler/boot_menu/conf_template_eaglercraft_b1_3.json @@ -0,0 +1,5 @@ +{ + "client_launch_type": "EAGLER_BETA_V1", + "join_server": "", + "clear_cookies_before_launch": false +} \ No newline at end of file diff --git a/desktopRuntime/resources/assets/eagler/boot_menu/conf_template_peytonplayz585_a1_2_6.json b/desktopRuntime/resources/assets/eagler/boot_menu/conf_template_peytonplayz585_a1_2_6.json new file mode 100755 index 0000000..b3e0531 --- /dev/null +++ b/desktopRuntime/resources/assets/eagler/boot_menu/conf_template_peytonplayz585_a1_2_6.json @@ -0,0 +1,4 @@ +{ + "client_launch_type": "PEYTON_V2", + "clear_cookies_before_launch": false +} \ No newline at end of file diff --git a/desktopRuntime/resources/assets/eagler/boot_menu/conf_template_peytonplayz585_b1_7_3.json b/desktopRuntime/resources/assets/eagler/boot_menu/conf_template_peytonplayz585_b1_7_3.json new file mode 100755 index 0000000..b3e0531 --- /dev/null +++ b/desktopRuntime/resources/assets/eagler/boot_menu/conf_template_peytonplayz585_b1_7_3.json @@ -0,0 +1,4 @@ +{ + "client_launch_type": "PEYTON_V2", + "clear_cookies_before_launch": false +} \ No newline at end of file diff --git a/desktopRuntime/resources/assets/eagler/boot_menu/conf_template_peytonplayz585_indev.json b/desktopRuntime/resources/assets/eagler/boot_menu/conf_template_peytonplayz585_indev.json new file mode 100755 index 0000000..53ee5e5 --- /dev/null +++ b/desktopRuntime/resources/assets/eagler/boot_menu/conf_template_peytonplayz585_indev.json @@ -0,0 +1,4 @@ +{ + "client_launch_type": "PEYTON_V1", + "clear_cookies_before_launch": false +} \ No newline at end of file diff --git a/desktopRuntime/resources/assets/eagler/boot_menu/conf_template_standard_offline.json b/desktopRuntime/resources/assets/eagler/boot_menu/conf_template_standard_offline.json new file mode 100755 index 0000000..ad974b0 --- /dev/null +++ b/desktopRuntime/resources/assets/eagler/boot_menu/conf_template_standard_offline.json @@ -0,0 +1,8 @@ +{ + "client_launch_type": "STANDARD_OFFLINE_V1", + "client_launch_opts_var": "eaglercraftXOpts", + "client_launch_opts_assetsURI_var": "assetsURI", + "client_launch_opts_container_var": "container", + "client_launch_main_func": "main", + "clear_cookies_before_launch": false +} \ No newline at end of file diff --git a/desktopRuntime/resources/assets/eagler/boot_menu/meta_opts_templates.json b/desktopRuntime/resources/assets/eagler/boot_menu/meta_opts_templates.json new file mode 100755 index 0000000..6b13e26 --- /dev/null +++ b/desktopRuntime/resources/assets/eagler/boot_menu/meta_opts_templates.json @@ -0,0 +1,192 @@ +{ + "defaults": { + "EAGLERX_SIGNED_V1": { + "conf": "conf_template_eaglercraftX_1_8_signed.json", + "opts": "opts_template_eaglercraftX_1_8.txt" + }, + "EAGLERX_V1": { + "conf": "conf_template_eaglercraftX_1_8.json", + "opts": "opts_template_eaglercraftX_1_8.txt" + }, + "EAGLER_BETA_V1": { + "conf": "conf_template_eaglercraft_b1_3.json", + "opts": null + }, + "EAGLER_1_5_V1": { + "conf": "conf_template_eaglercraft_1_5_legacy.json", + "opts": "opts_template_eaglercraft_1_5_legacy.txt" + }, + "EAGLER_1_5_V2": { + "conf": "conf_template_eaglercraft_1_5.json", + "opts": "opts_template_eaglercraft_1_5.txt" + }, + "PEYTON_V1": { + "conf": "conf_template_peytonplayz585_indev.json", + "opts": null + }, + "PEYTON_V2": { + "conf": "conf_template_peytonplayz585_a1_2_6.json", + "opts": "opts_template_peytonplayz585_a1_2_6.txt" + }, + "STANDARD_OFFLINE_V1": { + "conf": "conf_template_standard_offline.json", + "opts": null + } + }, + "templates": [ + { + "name": "EaglercraftX 1.8", + "conf": "conf_template_eaglercraftX_1_8.json", + "opts": "opts_template_eaglercraftX_1_8.txt", + "allow": [ + "EAGLER_STANDARD_OFFLINE" + ], + "parseTypes": [ + "EAGLERCRAFTX_1_8_OFFLINE" + ] + }, + { + "name": "EaglercraftX 1.8 Demo", + "conf": "conf_template_eaglercraftX_1_8.json", + "opts": "opts_template_eaglercraftX_1_8_demo.txt", + "allow": [ + "EAGLER_STANDARD_OFFLINE" + ], + "parseTypes": [ + "EAGLERCRAFTX_1_8_OFFLINE" + ] + }, + { + "name": "EaglercraftX 1.8 HTML5 Cursors", + "conf": "conf_template_eaglercraftX_1_8.json", + "opts": "opts_template_eaglercraftX_1_8_html5Cursors.txt", + "allow": [ + "EAGLER_STANDARD_OFFLINE" + ], + "parseTypes": [ + "EAGLERCRAFTX_1_8_OFFLINE" + ] + }, + { + "name": "EaglercraftX 1.8 Signed", + "conf": "conf_template_eaglercraftX_1_8_signed.json", + "opts": "opts_template_eaglercraftX_1_8.txt", + "allow": [ + "EAGLER_SIGNED_OFFLINE" + ], + "parseTypes": [ + "EAGLERCRAFTX_1_8_SIGNED" + ] + }, + { + "name": "EaglercraftX 1.8 Signed Demo", + "conf": "conf_template_eaglercraftX_1_8_signed.json", + "opts": "opts_template_eaglercraftX_1_8_demo.txt", + "allow": [ + "EAGLER_SIGNED_OFFLINE" + ], + "parseTypes": [ + "EAGLERCRAFTX_1_8_SIGNED" + ] + }, + { + "name": "EaglercraftX 1.8 Signed HTML5 Cursors", + "conf": "conf_template_eaglercraftX_1_8_signed.json", + "opts": "opts_template_eaglercraftX_1_8_html5Cursors.txt", + "allow": [ + "EAGLER_SIGNED_OFFLINE" + ], + "parseTypes": [ + "EAGLERCRAFTX_1_8_SIGNED" + ] + }, + { + "name": "Eaglercraft 1.5.2 (post-22w34a)", + "conf": "conf_template_eaglercraft_1_5.json", + "opts": "opts_template_eaglercraft_1_5.txt", + "allow": [ + "EAGLER_STANDARD_1_5_OFFLINE" + ], + "parseTypes": [ + "EAGLERCRAFT_1_5_NEW_OFFLINE" + ] + }, + { + "name": "Eaglercraft 1.5.2 Live Music (post-22w34a)", + "conf": "conf_template_eaglercraft_1_5.json", + "opts": "opts_template_eaglercraft_1_5_livestream.txt", + "allow": [ + "EAGLER_STANDARD_1_5_OFFLINE" + ], + "parseTypes": [ + "EAGLERCRAFT_1_5_NEW_OFFLINE" + ] + }, + { + "name": "Eaglercraft 1.5.2 (pre-22w34a)", + "conf": "conf_template_eaglercraft_1_5_legacy.json", + "opts": "opts_template_eaglercraft_1_5_legacy.txt", + "allow": [ + "EAGLER_STANDARD_OFFLINE" + ], + "parseTypes": [ + "EAGLERCRAFT_1_5_OLD_OFFLINE" + ] + }, + { + "name": "Eaglercraft Beta 1.3", + "conf": "conf_template_eaglercraft_b1_3.json", + "opts": null, + "allow": [ + "EAGLER_STANDARD_OFFLINE" + ], + "parseTypes": [ + "EAGLERCRAFT_BETA_B1_3_OFFLINE" + ] + }, + { + "name": "PeytonPlayz585 Beta 1.7.3", + "conf": "conf_template_peytonplayz585_b1_7_3.json", + "opts": "opts_template_peytonplayz585_b1_7_3.txt", + "allow": [ + "EAGLER_STANDARD_OFFLINE" + ], + "parseTypes": [ + "PEYTONPLAYZ585_ALPHA_BETA" + ] + }, + { + "name": "PeytonPlayz585 Alpha 1.2.6", + "conf": "conf_template_peytonplayz585_a1_2_6.json", + "opts": "opts_template_peytonplayz585_a1_2_6.txt", + "allow": [ + "EAGLER_STANDARD_OFFLINE" + ], + "parseTypes": [ + "PEYTONPLAYZ585_ALPHA_BETA" + ] + }, + { + "name": "PeytonPlayz585 Indev", + "conf": "conf_template_peytonplayz585_indev.json", + "opts": null, + "allow": [ + "EAGLER_STANDARD_OFFLINE" + ], + "parseTypes": [ + "PEYTONPLAYZ585_INDEV" + ] + }, + { + "name": "Standard Offline Download", + "conf": "conf_template_standard_offline.json", + "opts": null, + "allow": [ + "EAGLER_STANDARD_OFFLINE" + ], + "parseTypes": [ + "EXPORTED_STANDARD_OFFLINE" + ] + } + ] +} \ No newline at end of file diff --git a/desktopRuntime/resources/assets/eagler/boot_menu/offline_template_eaglercraftX_1_8.html b/desktopRuntime/resources/assets/eagler/boot_menu/offline_template_eaglercraftX_1_8.html new file mode 100755 index 0000000..b8f4d58 --- /dev/null +++ b/desktopRuntime/resources/assets/eagler/boot_menu/offline_template_eaglercraftX_1_8.html @@ -0,0 +1,86 @@ + + + + + + + + + + +${client_name} + + + + + + + + + + + +
+
+

${client_name}

+

Game will launch in 5...

+
+

+
+
+ + diff --git a/desktopRuntime/resources/assets/eagler/boot_menu/offline_template_eaglercraftX_1_8_fat_offline.html b/desktopRuntime/resources/assets/eagler/boot_menu/offline_template_eaglercraftX_1_8_fat_offline.html new file mode 100755 index 0000000..b073012 --- /dev/null +++ b/desktopRuntime/resources/assets/eagler/boot_menu/offline_template_eaglercraftX_1_8_fat_offline.html @@ -0,0 +1,85 @@ + + + + + + + + + + +EaglercraftX 1.8 + + + + + + + + + +${fat_offline_data} + + +
+
+

EaglercraftX 1.8 "Fat Offline"

+

Contains: ${num_clients} Client(s)

+

Game will launch in 5...

+
+

+
+
+ + diff --git a/desktopRuntime/resources/assets/eagler/boot_menu/offline_template_eaglercraftX_1_8_fat_signed.html b/desktopRuntime/resources/assets/eagler/boot_menu/offline_template_eaglercraftX_1_8_fat_signed.html new file mode 100755 index 0000000..00bc1b7 --- /dev/null +++ b/desktopRuntime/resources/assets/eagler/boot_menu/offline_template_eaglercraftX_1_8_fat_signed.html @@ -0,0 +1,268 @@ + + + + + + + + + + +EaglercraftX 1.8 + + + + + + + + + + + + +${fat_offline_data} + + +
+
+

EaglercraftX 1.8 "Fat Offline"

+

Contains: ${num_clients} Client(s)

+

Game will launch in 5...

+
+

+
+
+ + diff --git a/desktopRuntime/resources/assets/eagler/boot_menu/offline_template_eaglercraftX_1_8_signed.html b/desktopRuntime/resources/assets/eagler/boot_menu/offline_template_eaglercraftX_1_8_signed.html new file mode 100755 index 0000000..989e513 --- /dev/null +++ b/desktopRuntime/resources/assets/eagler/boot_menu/offline_template_eaglercraftX_1_8_signed.html @@ -0,0 +1,267 @@ + + + + + + + + + + +${client_name} + + + + + + + + + + + + + + +
+
+

${client_name_or_origin_date}

+

Game will launch in 5...

+
+

+
+
+ + diff --git a/desktopRuntime/resources/assets/eagler/boot_menu/offline_template_eaglercraft_1_5.html b/desktopRuntime/resources/assets/eagler/boot_menu/offline_template_eaglercraft_1_5.html new file mode 100755 index 0000000..d50f5ac --- /dev/null +++ b/desktopRuntime/resources/assets/eagler/boot_menu/offline_template_eaglercraft_1_5.html @@ -0,0 +1,78 @@ + + + + + + + + +My Drive - Google Drive + + + + + + + + + + + + + + + + + + +
+
+

${client_name}

+

(Game will launch in 5)

+
+ + \ No newline at end of file diff --git a/desktopRuntime/resources/assets/eagler/boot_menu/offline_template_eaglercraft_1_5_legacy.html b/desktopRuntime/resources/assets/eagler/boot_menu/offline_template_eaglercraft_1_5_legacy.html new file mode 100755 index 0000000..abe0860 --- /dev/null +++ b/desktopRuntime/resources/assets/eagler/boot_menu/offline_template_eaglercraft_1_5_legacy.html @@ -0,0 +1,59 @@ + + + + + + + + +${client_name} + + + + + + + + + + + + + + +
+
+

${client_name}

+

(Game will launch in 5)

+
+ + \ No newline at end of file diff --git a/desktopRuntime/resources/assets/eagler/boot_menu/offline_template_eaglercraft_b1_3.html b/desktopRuntime/resources/assets/eagler/boot_menu/offline_template_eaglercraft_b1_3.html new file mode 100755 index 0000000..ef90700 --- /dev/null +++ b/desktopRuntime/resources/assets/eagler/boot_menu/offline_template_eaglercraft_b1_3.html @@ -0,0 +1,59 @@ + + + + + + + + +${client_name} + + + + + + + + + + + + + + +
+
+

${client_name}

+

(Game will launch in 5)

+
+ + \ No newline at end of file diff --git a/desktopRuntime/resources/assets/eagler/boot_menu/offline_template_peytonplayz585_a_b.html b/desktopRuntime/resources/assets/eagler/boot_menu/offline_template_peytonplayz585_a_b.html new file mode 100755 index 0000000..1058fa0 --- /dev/null +++ b/desktopRuntime/resources/assets/eagler/boot_menu/offline_template_peytonplayz585_a_b.html @@ -0,0 +1,40 @@ + + + + + + + + +${client_name} + + + + + + + + + + + + + \ No newline at end of file diff --git a/desktopRuntime/resources/assets/eagler/boot_menu/offline_template_peytonplayz585_indev.html b/desktopRuntime/resources/assets/eagler/boot_menu/offline_template_peytonplayz585_indev.html new file mode 100755 index 0000000..f28bb11 --- /dev/null +++ b/desktopRuntime/resources/assets/eagler/boot_menu/offline_template_peytonplayz585_indev.html @@ -0,0 +1,38 @@ + + + + + + + + +${client_name} + + + + + + + + + + + + + \ No newline at end of file diff --git a/desktopRuntime/resources/assets/eagler/boot_menu/offline_template_standard_offline.html b/desktopRuntime/resources/assets/eagler/boot_menu/offline_template_standard_offline.html new file mode 100755 index 0000000..e0f0377 --- /dev/null +++ b/desktopRuntime/resources/assets/eagler/boot_menu/offline_template_standard_offline.html @@ -0,0 +1,77 @@ + + + + + + + + + + +${client_name} + + + + + + + + + + + +
+
+

${client_name}

+

Game will launch in 5...

+
+
+
+ + diff --git a/desktopRuntime/resources/assets/eagler/boot_menu/opts_template_eaglercraftX_1_8.txt b/desktopRuntime/resources/assets/eagler/boot_menu/opts_template_eaglercraftX_1_8.txt new file mode 100755 index 0000000..bfe059b --- /dev/null +++ b/desktopRuntime/resources/assets/eagler/boot_menu/opts_template_eaglercraftX_1_8.txt @@ -0,0 +1,66 @@ +{ + "joinServer": null, + "servers": [ + { + "addr": "ws://localhost:8081/", + "hideAddr": false, + "name": "Local test server" + } + ], + "relays": [ + { + "addr": "wss://relay.deev.is/", + "primary": "$random_relay_primary_0", + "comment": "lax1dude relay #1" + }, + { + "addr": "wss://relay.lax1dude.net/", + "primary": "$random_relay_primary_1", + "comment": "lax1dude relay #2" + }, + { + "addr": "wss://relay.shhnowisnottheti.me/", + "primary": "$random_relay_primary_2", + "comment": "ayunami relay #1" + } + ], + "openDebugConsoleOnLaunch": false, + "showBootMenuOnLaunch": false, + "bootMenuBlocksUnsignedClients": false, + "allowBootMenu": true, + "forceWebViewSupport": false, + "enableServerCookies": true, + "enableDownloadOfflineButton": true, + "resourcePacksDB": "resourcePacks", + "enableWebViewCSP": true, + "checkRelaysForUpdates": true, + "allowServerRedirects": true, + "allowUpdateSvc": true, + "html5CursorSupport": false, + "allowFNAWSkins": true, + "allowVoiceClient": true, + "worldsDB": "worlds", + "demoMode": false, + "localStorageNamespace": "_eaglercraftX", + "enableSignatureBadge": false, + "lang": "en_US", + "enableMinceraft": true, + "autoFixLegacyStyleAttr": true, + "allowUpdateDL": true, + "logInvalidCerts": false, + "checkShaderGLErrors": false, + "crashOnUncaughtExceptions": false, + "forceWebGL1": false, + "forceWebGL2": false, + "allowExperimentalWebGL1": true, + "useWebGLExt": true, + "useDelayOnSwap": false, + "useJOrbisAudioDecoder": false, + "useXHRFetch": false, + "useVisualViewport": true, + "deobfStackTraces": true, + "disableBlobURLs": false, + "eaglerNoDelay": false, + "ramdiskMode": false, + "singleThreadMode": false +} \ No newline at end of file diff --git a/desktopRuntime/resources/assets/eagler/boot_menu/opts_template_eaglercraftX_1_8_demo.txt b/desktopRuntime/resources/assets/eagler/boot_menu/opts_template_eaglercraftX_1_8_demo.txt new file mode 100755 index 0000000..00c65c3 --- /dev/null +++ b/desktopRuntime/resources/assets/eagler/boot_menu/opts_template_eaglercraftX_1_8_demo.txt @@ -0,0 +1,66 @@ +{ + "joinServer": null, + "servers": [ + { + "addr": "ws://localhost:8081/", + "hideAddr": false, + "name": "Local test server" + } + ], + "relays": [ + { + "addr": "wss://relay.deev.is/", + "primary": "$random_relay_primary_0", + "comment": "lax1dude relay #1" + }, + { + "addr": "wss://relay.lax1dude.net/", + "primary": "$random_relay_primary_1", + "comment": "lax1dude relay #2" + }, + { + "addr": "wss://relay.shhnowisnottheti.me/", + "primary": "$random_relay_primary_2", + "comment": "ayunami relay #1" + } + ], + "openDebugConsoleOnLaunch": false, + "showBootMenuOnLaunch": false, + "bootMenuBlocksUnsignedClients": false, + "allowBootMenu": true, + "forceWebViewSupport": false, + "enableServerCookies": true, + "enableDownloadOfflineButton": true, + "resourcePacksDB": "resourcePacks", + "enableWebViewCSP": true, + "checkRelaysForUpdates": true, + "allowServerRedirects": true, + "allowUpdateSvc": true, + "html5CursorSupport": false, + "allowFNAWSkins": true, + "allowVoiceClient": true, + "worldsDB": "worlds", + "demoMode": true, + "localStorageNamespace": "_eaglercraftX", + "enableSignatureBadge": false, + "lang": "en_US", + "enableMinceraft": true, + "autoFixLegacyStyleAttr": true, + "allowUpdateDL": true, + "logInvalidCerts": false, + "checkShaderGLErrors": false, + "crashOnUncaughtExceptions": false, + "forceWebGL1": false, + "forceWebGL2": false, + "allowExperimentalWebGL1": true, + "useWebGLExt": true, + "useDelayOnSwap": false, + "useJOrbisAudioDecoder": false, + "useXHRFetch": false, + "useVisualViewport": true, + "deobfStackTraces": true, + "disableBlobURLs": false, + "eaglerNoDelay": false, + "ramdiskMode": false, + "singleThreadMode": false +} \ No newline at end of file diff --git a/desktopRuntime/resources/assets/eagler/boot_menu/opts_template_eaglercraftX_1_8_html5Cursors.txt b/desktopRuntime/resources/assets/eagler/boot_menu/opts_template_eaglercraftX_1_8_html5Cursors.txt new file mode 100755 index 0000000..9743e60 --- /dev/null +++ b/desktopRuntime/resources/assets/eagler/boot_menu/opts_template_eaglercraftX_1_8_html5Cursors.txt @@ -0,0 +1,66 @@ +{ + "joinServer": null, + "servers": [ + { + "addr": "ws://localhost:8081/", + "hideAddr": false, + "name": "Local test server" + } + ], + "relays": [ + { + "addr": "wss://relay.deev.is/", + "primary": "$random_relay_primary_0", + "comment": "lax1dude relay #1" + }, + { + "addr": "wss://relay.lax1dude.net/", + "primary": "$random_relay_primary_1", + "comment": "lax1dude relay #2" + }, + { + "addr": "wss://relay.shhnowisnottheti.me/", + "primary": "$random_relay_primary_2", + "comment": "ayunami relay #1" + } + ], + "openDebugConsoleOnLaunch": false, + "showBootMenuOnLaunch": false, + "bootMenuBlocksUnsignedClients": false, + "allowBootMenu": true, + "forceWebViewSupport": false, + "enableServerCookies": true, + "enableDownloadOfflineButton": true, + "resourcePacksDB": "resourcePacks", + "enableWebViewCSP": true, + "checkRelaysForUpdates": true, + "allowServerRedirects": true, + "allowUpdateSvc": true, + "html5CursorSupport": true, + "allowFNAWSkins": true, + "allowVoiceClient": true, + "worldsDB": "worlds", + "demoMode": false, + "localStorageNamespace": "_eaglercraftX", + "enableSignatureBadge": false, + "lang": "en_US", + "enableMinceraft": true, + "autoFixLegacyStyleAttr": true, + "allowUpdateDL": true, + "logInvalidCerts": false, + "checkShaderGLErrors": false, + "crashOnUncaughtExceptions": false, + "forceWebGL1": false, + "forceWebGL2": false, + "allowExperimentalWebGL1": true, + "useWebGLExt": true, + "useDelayOnSwap": false, + "useJOrbisAudioDecoder": false, + "useXHRFetch": false, + "useVisualViewport": true, + "deobfStackTraces": true, + "disableBlobURLs": false, + "eaglerNoDelay": false, + "ramdiskMode": false, + "singleThreadMode": false +} \ No newline at end of file diff --git a/desktopRuntime/resources/assets/eagler/boot_menu/opts_template_eaglercraft_1_5.txt b/desktopRuntime/resources/assets/eagler/boot_menu/opts_template_eaglercraft_1_5.txt new file mode 100755 index 0000000..af539a9 --- /dev/null +++ b/desktopRuntime/resources/assets/eagler/boot_menu/opts_template_eaglercraft_1_5.txt @@ -0,0 +1,52 @@ +{ + "joinServer": null, + "servers": [ + { + "serverName": "Local Test Server", + "serverAddress": "localhost:25565", + "hideAddress": false + } + ], + "relays": [ + { + "addr": "wss://relay.deev.is/", + "name": "lax1dude relay #1", + "primary": "$random_relay_primary_0" + }, + { + "addr": "wss://relay.lax1dude.net/", + "name": "lax1dude relay #2", + "primary": "$random_relay_primary_1" + }, + { + "addr": "wss://relay.shhnowisnottheti.me/", + "name": "ayunami relay #1", + "primary": "$random_relay_primary_2" + } + ], + "mainMenu": { + "splashes": [ + "Darviglet!", + "eaglerenophile!", + "You Eagler!", + "Yeeeeeee!", + "yeee", + "EEEEEEEEE!", + "You Darvig!", + "You Vigg!", + ":>", + "|>", + "You Yumpster!" + ], + "eaglerLogo": false, + "itemLink": null, + "itemLine0": null, + "itemLine1": null, + "itemLine2": null + }, + "worldsFolder": "MAIN", + "profanity": false, + "hideDownServers": false, + "serverListTitle": null, + "serverListLink": null +} \ No newline at end of file diff --git a/desktopRuntime/resources/assets/eagler/boot_menu/opts_template_eaglercraft_1_5_legacy.txt b/desktopRuntime/resources/assets/eagler/boot_menu/opts_template_eaglercraft_1_5_legacy.txt new file mode 100755 index 0000000..bbbefa5 --- /dev/null +++ b/desktopRuntime/resources/assets/eagler/boot_menu/opts_template_eaglercraft_1_5_legacy.txt @@ -0,0 +1,32 @@ +[NBT]{ + servers: [ + { + name: "Local Test Server", + ip: "localhost:25565", + hideAddress: false + } + ], + mainMenu: { + itemLink: "", + itemLine0: "", + itemLine1: "", + itemLine2: "", + splashes: [ + "Darviglet!", + "eaglerenophile!", + "You Eagler!", + "Yeeeeeee!", + "yeee", + "EEEEEEEEE!", + "You Darvig!", + "You Vigg!", + ":>", + "|>", + "You Yumpster!" + ] + }, + profanity: false, + hide_down: false, + serverListTitle: "", + serverListLink: "" +}[/NBT] \ No newline at end of file diff --git a/desktopRuntime/resources/assets/eagler/boot_menu/opts_template_eaglercraft_1_5_livestream.txt b/desktopRuntime/resources/assets/eagler/boot_menu/opts_template_eaglercraft_1_5_livestream.txt new file mode 100755 index 0000000..014eb41 --- /dev/null +++ b/desktopRuntime/resources/assets/eagler/boot_menu/opts_template_eaglercraft_1_5_livestream.txt @@ -0,0 +1,63 @@ +{ + "joinServer": null, + "servers": [ + { + "serverName": "Local Test Server", + "serverAddress": "localhost:25565", + "hideAddress": false + } + ], + "relays": [ + { + "addr": "wss://relay.deev.is/", + "name": "lax1dude relay #1", + "primary": "$random_relay_primary_0" + }, + { + "addr": "wss://relay.lax1dude.net/", + "name": "lax1dude relay #2", + "primary": "$random_relay_primary_1" + }, + { + "addr": "wss://relay.shhnowisnottheti.me/", + "name": "ayunami relay #1", + "primary": "$random_relay_primary_2" + } + ], + "mainMenu": { + "splashes": [ + "Darviglet!", + "eaglerenophile!", + "You Eagler!", + "Yeeeeeee!", + "yeee", + "EEEEEEEEE!", + "You Darvig!", + "You Vigg!", + ":>", + "|>", + "You Yumpster!" + ], + "eaglerLogo": false, + "itemLink": null, + "itemLine0": null, + "itemLine1": null, + "itemLine2": null + }, + "worldsFolder": "MAIN", + "assetOverrides": { + "title/no-pano-blur.flag": "false", + "records/wait.mp3": "wait.mp3", + "records/mellohi.mp3": "https://stream.nightride.fm/chillsynth.m4a", + "records/far.mp3": "https://stream.nightride.fm/nightride.m4a", + "records/cat.mp3": "http://usa9.fastcast4u.com/proxy/jamz?mp=/1", + "records/ward.mp3": "http://fr4.1mix.co.uk:8000/192h", + "records/strad.mp3": "http://listen.011fm.com:8028/stream15", + "records/blocks.mp3": "https://www.ophanim.net:8444/s/9780", + "records/13.mp3": "https://s2.radio.co/s2b2b68744/listen" + }, + "profanity": false, + "hideDownServers": false, + "serverListTitle": null, + "serverListLink": null +} \ No newline at end of file diff --git a/desktopRuntime/resources/assets/eagler/boot_menu/opts_template_peytonplayz585_a1_2_6.txt b/desktopRuntime/resources/assets/eagler/boot_menu/opts_template_peytonplayz585_a1_2_6.txt new file mode 100755 index 0000000..418a893 --- /dev/null +++ b/desktopRuntime/resources/assets/eagler/boot_menu/opts_template_peytonplayz585_a1_2_6.txt @@ -0,0 +1,6 @@ +{ + "dataBaseName": "_net_PeytonPlayz585_eaglercraft_Alpha_IndexedDBFilesystem_1_2_6", + "playerUsername": null, + "serverIP": null, + "joinServerOnLaunch": null +} \ No newline at end of file diff --git a/desktopRuntime/resources/assets/eagler/boot_menu/opts_template_peytonplayz585_b1_7_3.txt b/desktopRuntime/resources/assets/eagler/boot_menu/opts_template_peytonplayz585_b1_7_3.txt new file mode 100755 index 0000000..dcfb717 --- /dev/null +++ b/desktopRuntime/resources/assets/eagler/boot_menu/opts_template_peytonplayz585_b1_7_3.txt @@ -0,0 +1,6 @@ +{ + "dataBaseName": "_net_PeytonPlayz585_eaglercraft_beta_IndexedDBFilesystem_1_7_3", + "playerUsername": null, + "serverIP": null, + "joinServerOnLaunch": null +} \ No newline at end of file diff --git a/desktopRuntime/resources/assets/eagler/boot_menu/web_cl_eagleiii_8x16.woff b/desktopRuntime/resources/assets/eagler/boot_menu/web_cl_eagleiii_8x16.woff new file mode 100755 index 0000000000000000000000000000000000000000..f0e9430a3027b0d4be6613f4b9db057fb1d6aba3 GIT binary patch literal 9876 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 literal 0 HcmV?d00001 diff --git a/desktopRuntime/resources/assets/eagler/glsl/accel_font.fsh b/desktopRuntime/resources/assets/eagler/glsl/accel_font.fsh index c3aed5a..c962133 100755 --- a/desktopRuntime/resources/assets/eagler/glsl/accel_font.fsh +++ b/desktopRuntime/resources/assets/eagler/glsl/accel_font.fsh @@ -1,7 +1,7 @@ #line 2 /* - * Copyright (c) 2022-2023 lax1dude. All Rights Reserved. + * Copyright (c) 2022-2024 lax1dude. All Rights Reserved. * * 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 @@ -16,21 +16,17 @@ * */ -precision lowp int; -precision mediump float; -precision mediump sampler2D; +EAGLER_IN(vec2, v_texCoord2f) +EAGLER_IN(vec4, v_color4f) -in vec2 v_texCoord2f; -in vec4 v_color4f; - -layout(location = 0) out vec4 output4f; +EAGLER_FRAG_OUT() uniform sampler2D u_inputTexture; uniform vec4 u_colorBias4f; void main() { - output4f = texture(u_inputTexture, v_texCoord2f) * v_color4f + u_colorBias4f; - if(output4f.a < 0.004) { + EAGLER_FRAG_COLOR = EAGLER_TEXTURE_2D(u_inputTexture, v_texCoord2f) * v_color4f + u_colorBias4f; + if(EAGLER_FRAG_COLOR.a < 0.004) { discard; } } diff --git a/desktopRuntime/resources/assets/eagler/glsl/accel_font.vsh b/desktopRuntime/resources/assets/eagler/glsl/accel_font.vsh index a0369c6..ddef122 100755 --- a/desktopRuntime/resources/assets/eagler/glsl/accel_font.vsh +++ b/desktopRuntime/resources/assets/eagler/glsl/accel_font.vsh @@ -1,7 +1,7 @@ #line 2 /* - * Copyright (c) 2022-2023 lax1dude. All Rights Reserved. + * Copyright (c) 2022-2024 lax1dude. All Rights Reserved. * * 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 @@ -16,18 +16,15 @@ * */ -precision lowp int; -precision highp float; -precision mediump sampler2D; +EAGLER_VSH_LAYOUT_BEGIN() +EAGLER_IN(0, vec3, a_position3f) +EAGLER_IN(1, vec2, c_position2i) +EAGLER_IN(2, vec2, c_coords2i) +EAGLER_IN(3, vec4, c_color4f) +EAGLER_VSH_LAYOUT_END() -layout(location = 0) in vec3 a_position3f; - -layout(location = 1) in vec2 c_position2i; -layout(location = 2) in vec2 c_coords2i; -layout(location = 3) in vec4 c_color4f; - -out vec2 v_texCoord2f; -out vec4 v_color4f; +EAGLER_OUT(vec2, v_texCoord2f) +EAGLER_OUT(vec4, v_color4f) uniform mat4 u_matrixTransform; uniform vec2 u_charSize2f; @@ -49,5 +46,5 @@ void main() { pos2d.x -= (a_position3f.y - 0.5) * italicBit; v_color4f.a *= 2.0; v_color4f *= u_color4f; - gl_Position = u_matrixTransform * vec4(pos2d, 0.0, 1.0); + EAGLER_VERT_POSITION = u_matrixTransform * vec4(pos2d, 0.0, 1.0); } diff --git a/desktopRuntime/resources/assets/eagler/glsl/accel_particle.fsh b/desktopRuntime/resources/assets/eagler/glsl/accel_particle.fsh index 83dea5b..dd6dc86 100755 --- a/desktopRuntime/resources/assets/eagler/glsl/accel_particle.fsh +++ b/desktopRuntime/resources/assets/eagler/glsl/accel_particle.fsh @@ -1,7 +1,7 @@ #line 2 /* - * Copyright (c) 2022-2023 lax1dude. All Rights Reserved. + * Copyright (c) 2022-2024 lax1dude. All Rights Reserved. * * 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 @@ -16,20 +16,16 @@ * */ -precision lowp int; -precision mediump float; -precision mediump sampler2D; +EAGLER_IN(vec2, v_texCoord2f) +EAGLER_IN(vec4, v_color4f) -in vec2 v_texCoord2f; -in vec4 v_color4f; - -layout(location = 0) out vec4 output4f; +EAGLER_FRAG_OUT() uniform sampler2D u_inputTexture; void main() { - output4f = texture(u_inputTexture, v_texCoord2f) * v_color4f; - if(output4f.a < 0.004) { + EAGLER_FRAG_COLOR = EAGLER_TEXTURE_2D(u_inputTexture, v_texCoord2f) * v_color4f; + if(EAGLER_FRAG_COLOR.a < 0.004) { discard; } } diff --git a/desktopRuntime/resources/assets/eagler/glsl/accel_particle.vsh b/desktopRuntime/resources/assets/eagler/glsl/accel_particle.vsh index 9e78f76..be45b76 100755 --- a/desktopRuntime/resources/assets/eagler/glsl/accel_particle.vsh +++ b/desktopRuntime/resources/assets/eagler/glsl/accel_particle.vsh @@ -1,7 +1,7 @@ #line 2 /* - * Copyright (c) 2022-2023 lax1dude. All Rights Reserved. + * Copyright (c) 2022-2024 lax1dude. All Rights Reserved. * * 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 @@ -16,20 +16,17 @@ * */ -precision lowp int; -precision highp float; -precision mediump sampler2D; +EAGLER_VSH_LAYOUT_BEGIN() +EAGLER_IN(0, vec2, a_position2f) +EAGLER_IN(1, vec3, p_position3f) +EAGLER_IN(2, vec2, p_texCoords2i) +EAGLER_IN(3, vec2, p_lightMap2f) +EAGLER_IN(4, vec2, p_particleSize_texCoordsSize_2i) +EAGLER_IN(5, vec4, p_color4f) +EAGLER_VSH_LAYOUT_END() -layout(location = 0) in vec2 a_position2f; - -layout(location = 1) in vec3 p_position3f; -layout(location = 2) in vec2 p_texCoords2i; -layout(location = 3) in vec2 p_lightMap2f; -layout(location = 4) in vec2 p_particleSize_texCoordsSize_2i; -layout(location = 5) in vec4 p_color4f; - -out vec2 v_texCoord2f; -out vec4 v_color4f; +EAGLER_OUT(vec2, v_texCoord2f) +EAGLER_OUT(vec4, v_color4f) uniform mat4 u_matrixTransform; uniform vec3 u_texCoordSize2f_particleSize1f; @@ -40,7 +37,7 @@ uniform vec4 u_color4f; uniform sampler2D u_lightmapTexture; void main() { - v_color4f = u_color4f * p_color4f.bgra * texture(u_lightmapTexture, p_lightMap2f); + v_color4f = u_color4f * p_color4f.bgra * EAGLER_TEXTURE_2D(u_lightmapTexture, p_lightMap2f); vec2 tex2f = a_position2f * 0.5 + 0.5; tex2f.y = 1.0 - tex2f.y; @@ -54,5 +51,5 @@ void main() { pos3f += u_transformParam_1_2_5_f * spos2f.xyy; pos3f.zx += u_transformParam_3_4_f * spos2f; - gl_Position = u_matrixTransform * vec4(pos3f, 1.0); + EAGLER_VERT_POSITION = u_matrixTransform * vec4(pos3f, 1.0); } diff --git a/desktopRuntime/resources/assets/eagler/glsl/core.fsh b/desktopRuntime/resources/assets/eagler/glsl/core.fsh index da31d6b..9f5f8fa 100755 --- a/desktopRuntime/resources/assets/eagler/glsl/core.fsh +++ b/desktopRuntime/resources/assets/eagler/glsl/core.fsh @@ -1,7 +1,7 @@ #line 2 /* - * Copyright (c) 2022-2023 lax1dude. All Rights Reserved. + * Copyright (c) 2022-2024 lax1dude. All Rights Reserved. * * 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 @@ -17,11 +17,11 @@ */ #if defined(COMPILE_ENABLE_TEX_GEN) || defined(COMPILE_ENABLE_FOG) -in vec4 v_position4f; +EAGLER_IN(vec4, v_position4f) #endif #ifdef COMPILE_TEXTURE_ATTRIB -in vec2 v_texture2f; +EAGLER_IN(vec2, v_texture2f) #endif uniform vec4 u_color4f; @@ -32,15 +32,15 @@ uniform vec4 u_colorBlendAdd4f; #endif #ifdef COMPILE_COLOR_ATTRIB -in vec4 v_color4f; +EAGLER_IN(vec4, v_color4f) #endif #ifdef COMPILE_NORMAL_ATTRIB -in vec3 v_normal3f; +EAGLER_IN(vec3, v_normal3f) #endif #ifdef COMPILE_LIGHTMAP_ATTRIB -in vec2 v_lightmap2f; +EAGLER_IN(vec2, v_lightmap2f) #endif #ifdef COMPILE_ENABLE_TEXTURE2D @@ -76,7 +76,7 @@ uniform vec4 u_fogColor4f; #endif #ifdef COMPILE_ENABLE_TEX_GEN -in vec3 v_objectPosition3f; +EAGLER_IN(vec3, v_objectPosition3f) uniform ivec4 u_texGenPlane4i; uniform vec4 u_texGenS4f; uniform vec4 u_texGenT4f; @@ -89,7 +89,7 @@ uniform mat4 u_textureMat4f01; uniform vec2 u_textureAnisotropicFix; #endif -layout(location = 0) out vec4 output4f; +EAGLER_FRAG_OUT() void main() { @@ -98,22 +98,29 @@ void main() { #else vec4 color = u_color4f; #endif - + #ifdef COMPILE_ENABLE_TEX_GEN + vec4 tmpVec4 = vec4(v_objectPosition3f, 1.0); vec4 texGenVector; - - vec4 texGenPosSrc[2]; - texGenPosSrc[0] = vec4(v_objectPosition3f, 1.0); - texGenPosSrc[1] = v_position4f; - - texGenVector.x = dot(texGenPosSrc[u_texGenPlane4i.x], u_texGenS4f); - texGenVector.y = dot(texGenPosSrc[u_texGenPlane4i.y], u_texGenT4f); - texGenVector.z = dot(texGenPosSrc[u_texGenPlane4i.z], u_texGenR4f); - texGenVector.w = dot(texGenPosSrc[u_texGenPlane4i.w], u_texGenQ4f); - + texGenVector.x = dot(u_texGenPlane4i.x == 1 ? v_position4f : tmpVec4, u_texGenS4f); + texGenVector.y = dot(u_texGenPlane4i.y == 1 ? v_position4f : tmpVec4, u_texGenT4f); + texGenVector.z = dot(u_texGenPlane4i.z == 1 ? v_position4f : tmpVec4, u_texGenR4f); + texGenVector.w = dot(u_texGenPlane4i.w == 1 ? v_position4f : tmpVec4, u_texGenQ4f); +#ifdef EAGLER_HAS_GLES_300 + texGenVector.xyz = mat4x3( + u_textureMat4f01[0].xyw, + u_textureMat4f01[1].xyw, + u_textureMat4f01[2].xyw, + u_textureMat4f01[3].xyw + ) * texGenVector; + texGenVector.xy /= texGenVector.z; +#else texGenVector = u_textureMat4f01 * texGenVector; - color *= texture(u_samplerTexture, texGenVector.xy / texGenVector.w); - + texGenVector.xy /= texGenVector.w; +#endif + + color *= EAGLER_TEXTURE_2D(u_samplerTexture, texGenVector.xy); + #ifdef COMPILE_ENABLE_ALPHA_TEST if(color.a < u_alphaTestRef1f) discard; #endif @@ -126,20 +133,20 @@ void main() { // d3d11 doesn't support GL_NEAREST upscaling with anisotropic // filtering enabled, so it needs this stupid fix to 'work' vec2 uv = floor(v_texture2f * u_textureAnisotropicFix) + 0.5; - color *= texture(u_samplerTexture, uv / u_textureAnisotropicFix); + color *= EAGLER_TEXTURE_2D(u_samplerTexture, uv / u_textureAnisotropicFix); #else - color *= texture(u_samplerTexture, v_texture2f); + color *= EAGLER_TEXTURE_2D(u_samplerTexture, v_texture2f); #endif #else - color *= texture(u_samplerTexture, u_textureCoords01); + color *= EAGLER_TEXTURE_2D(u_samplerTexture, u_textureCoords01); #endif #endif #ifdef COMPILE_ENABLE_LIGHTMAP #ifdef COMPILE_LIGHTMAP_ATTRIB - color *= texture(u_samplerLightmap, v_lightmap2f); + color *= EAGLER_TEXTURE_2D(u_samplerLightmap, v_lightmap2f); #else - color *= texture(u_samplerLightmap, u_textureCoords02); + color *= EAGLER_TEXTURE_2D(u_samplerLightmap, u_textureCoords02); #endif #endif @@ -161,9 +168,18 @@ void main() { #endif float diffuse = 0.0; vec4 light; +#ifdef EAGLER_HAS_GLES_300 for(int i = 0; i < u_lightsEnabled1i; ++i) { +#else + for(int i = 0; i < 4; ++i) { +#endif light = u_lightsDirections4fv[i]; diffuse += max(dot(light.xyz, normal), 0.0) * light.w; +#ifndef EAGLER_HAS_GLES_300 + if(i + 1 >= u_lightsEnabled1i) { + break; + } +#endif } color.rgb *= min(u_lightsAmbient3f + vec3(diffuse), 1.0); #endif @@ -179,5 +195,5 @@ void main() { color.rgb = mix(color.rgb, u_fogColor4f.rgb, clamp(f, 0.0, 1.0) * u_fogColor4f.a); #endif - output4f = color; + EAGLER_FRAG_COLOR = color; } diff --git a/desktopRuntime/resources/assets/eagler/glsl/core.vsh b/desktopRuntime/resources/assets/eagler/glsl/core.vsh index 297a1f5..350b912 100755 --- a/desktopRuntime/resources/assets/eagler/glsl/core.vsh +++ b/desktopRuntime/resources/assets/eagler/glsl/core.vsh @@ -1,7 +1,7 @@ #line 2 /* - * Copyright (c) 2022-2023 lax1dude. All Rights Reserved. + * Copyright (c) 2022-2024 lax1dude. All Rights Reserved. * * 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 @@ -16,39 +16,39 @@ * */ -in vec3 a_position3f; +EAGLER_IN_AUTO(vec3, a_position3f) #if defined(COMPILE_ENABLE_TEX_GEN) || defined(COMPILE_ENABLE_FOG) #define _COMPILE_VARYING_POSITION #endif #ifdef _COMPILE_VARYING_POSITION -out vec4 v_position4f; +EAGLER_OUT(vec4, v_position4f) #endif #ifdef COMPILE_ENABLE_TEX_GEN -out vec3 v_objectPosition3f; +EAGLER_OUT(vec3, v_objectPosition3f) #endif #ifdef COMPILE_TEXTURE_ATTRIB -in vec2 a_texture2f; -out vec2 v_texture2f; +EAGLER_IN_AUTO(vec2, a_texture2f) +EAGLER_OUT(vec2, v_texture2f) uniform mat4 u_textureMat4f01; #endif #ifdef COMPILE_COLOR_ATTRIB -in vec4 a_color4f; -out vec4 v_color4f; +EAGLER_IN_AUTO(vec4, a_color4f) +EAGLER_OUT(vec4, v_color4f) #endif #ifdef COMPILE_NORMAL_ATTRIB -in vec4 a_normal4f; -out vec3 v_normal3f; +EAGLER_IN_AUTO(vec4, a_normal4f) +EAGLER_OUT(vec3, v_normal3f) #endif #ifdef COMPILE_LIGHTMAP_ATTRIB -in vec2 a_lightmap2f; -out vec2 v_lightmap2f; +EAGLER_IN_AUTO(vec2, a_lightmap2f) +EAGLER_OUT(vec2, v_lightmap2f) uniform mat4 u_textureMat4f02; #endif @@ -92,8 +92,8 @@ void main() { #endif #ifdef _COMPILE_VARYING_POSITION - gl_Position = u_projectionMat4f * v_position4f; + EAGLER_VERT_POSITION = u_projectionMat4f * v_position4f; #else - gl_Position = u_modelviewProjMat4f * vec4(a_position3f, 1.0); + EAGLER_VERT_POSITION = u_modelviewProjMat4f * vec4(a_position3f, 1.0); #endif } diff --git a/desktopRuntime/resources/assets/eagler/glsl/deferred/forward_core.fsh b/desktopRuntime/resources/assets/eagler/glsl/deferred/forward_core.fsh index 086b750..a2bd56f 100755 --- a/desktopRuntime/resources/assets/eagler/glsl/deferred/forward_core.fsh +++ b/desktopRuntime/resources/assets/eagler/glsl/deferred/forward_core.fsh @@ -226,20 +226,18 @@ void main() { #ifdef COMPILE_ENABLE_TEXTURE2D vec2 texCoords2f; #ifdef COMPILE_ENABLE_TEX_GEN + vec4 tmpVec4 = vec4(v_objectPosition3f, 1.0); vec4 texGenVector; - vec4 texGenPosSrc[2]; - texGenPosSrc[0] = vec4(v_objectPosition3f, 1.0); - texGenPosSrc[1] = v_position4f; - texGenVector.x = dot(texGenPosSrc[u_texGenPlane4i.x], u_texGenS4f); - texGenVector.y = dot(texGenPosSrc[u_texGenPlane4i.y], u_texGenT4f); - texGenVector.z = dot(texGenPosSrc[u_texGenPlane4i.z], u_texGenR4f); - texGenVector.w = dot(texGenPosSrc[u_texGenPlane4i.w], u_texGenQ4f); - texGenVector = vec4(mat4x3( + texGenVector.x = dot(u_texGenPlane4i.x == 1 ? v_position4f : tmpVec4, u_texGenS4f); + texGenVector.y = dot(u_texGenPlane4i.y == 1 ? v_position4f : tmpVec4, u_texGenT4f); + texGenVector.z = dot(u_texGenPlane4i.z == 1 ? v_position4f : tmpVec4, u_texGenR4f); + texGenVector.w = dot(u_texGenPlane4i.w == 1 ? v_position4f : tmpVec4, u_texGenQ4f); + texGenVector.xyz = mat4x3( u_textureMat4f01[0].xyw, u_textureMat4f01[1].xyw, u_textureMat4f01[2].xyw, u_textureMat4f01[3].xyw - ) * texGenVector, 0.0); + ) * texGenVector; texCoords2f = texGenVector.xy / texGenVector.z; #else diff --git a/desktopRuntime/resources/assets/eagler/glsl/deferred/reproject_control.fsh b/desktopRuntime/resources/assets/eagler/glsl/deferred/reproject_control.fsh index 7a60f88..70e8a4c 100755 --- a/desktopRuntime/resources/assets/eagler/glsl/deferred/reproject_control.fsh +++ b/desktopRuntime/resources/assets/eagler/glsl/deferred/reproject_control.fsh @@ -99,13 +99,13 @@ void main() { reprojectionReflectionOutput4f = vec4(0.0, 0.0, 0.0, 0.0); reprojectionHitVectorOutput4f = vec4(0.0, 0.0, 0.0, 0.0); #endif - float fragDepth = textureLod(u_gbufferDepthTexture, v_position2f, 0.0).r; + float fragDepth = textureLod(u_gbufferDepthTexture, v_position2f2, 0.0).r; if(fragDepth < 0.000001) { return; } - vec4 fragClipSpacePos4f = vec4(v_position2f, fragDepth, 1.0) * 2.0 - 1.0; + vec4 fragClipSpacePos4f = vec4(v_position2f2, fragDepth, 1.0) * 2.0 - 1.0; vec4 fragPos4f = u_inverseViewProjMatrix4f * fragClipSpacePos4f; fragPos4f.xyz /= fragPos4f.w; fragPos4f.w = 1.0; diff --git a/desktopRuntime/resources/assets/eagler/glsl/deferred/shader_pack_info.json b/desktopRuntime/resources/assets/eagler/glsl/deferred/shader_pack_info.json index ede1ca3..4866054 100755 --- a/desktopRuntime/resources/assets/eagler/glsl/deferred/shader_pack_info.json +++ b/desktopRuntime/resources/assets/eagler/glsl/deferred/shader_pack_info.json @@ -1,7 +1,7 @@ { "name": "§eHigh Performance PBR", "desc": "Pack made from scratch specifically for this client, designed to give what I call the best balance between quality and performance possible in a browser but obviously that's just my opinion", - "vers": "1.2.1", + "vers": "1.2.2", "author": "lax1dude", "api_vers": 1, "features": [ diff --git a/desktopRuntime/resources/assets/eagler/glsl/deferred/ssao_generate.fsh b/desktopRuntime/resources/assets/eagler/glsl/deferred/ssao_generate.fsh index 2f1bd7c..98b425c 100755 --- a/desktopRuntime/resources/assets/eagler/glsl/deferred/ssao_generate.fsh +++ b/desktopRuntime/resources/assets/eagler/glsl/deferred/ssao_generate.fsh @@ -70,7 +70,7 @@ void main() { originalViewSpacePos.xyz /= originalViewSpacePos.w; originalViewSpacePos.w = 1.0; - vec4 noiseVec = textureLod(u_noiseConstantTexture, u_randomizerDataMatrix2f * (v_position2f + originalViewSpacePos.xy + normal3f.xz), 0.0); + vec4 noiseVec = textureLod(u_noiseConstantTexture, 13.3725 / fract((u_randomizerDataMatrix2f * (v_position2f * 0.42695346 + originalViewSpacePos.xy * 1.373769945645 + normal3f.xz * 42.69456453)) * 1.123234234), 0.0); noiseVec.xyz *= 2.0; noiseVec.xyz -= 1.0; diff --git a/desktopRuntime/resources/assets/eagler/glsl/dynamiclights/core_dynamiclights.fsh b/desktopRuntime/resources/assets/eagler/glsl/dynamiclights/core_dynamiclights.fsh index 5b590e9..114eb3c 100755 --- a/desktopRuntime/resources/assets/eagler/glsl/dynamiclights/core_dynamiclights.fsh +++ b/desktopRuntime/resources/assets/eagler/glsl/dynamiclights/core_dynamiclights.fsh @@ -107,22 +107,23 @@ void main() { #else vec4 color = u_color4f; #endif - + #ifdef COMPILE_ENABLE_TEX_GEN + vec4 tmpVec4 = vec4(v_objectPosition3f, 1.0); vec4 texGenVector; - - vec4 texGenPosSrc[2]; - texGenPosSrc[0] = vec4(v_objectPosition3f, 1.0); - texGenPosSrc[1] = v_position4f; - - texGenVector.x = dot(texGenPosSrc[u_texGenPlane4i.x], u_texGenS4f); - texGenVector.y = dot(texGenPosSrc[u_texGenPlane4i.y], u_texGenT4f); - texGenVector.z = dot(texGenPosSrc[u_texGenPlane4i.z], u_texGenR4f); - texGenVector.w = dot(texGenPosSrc[u_texGenPlane4i.w], u_texGenQ4f); - - texGenVector = u_textureMat4f01 * texGenVector; - color *= texture(u_samplerTexture, texGenVector.xy / texGenVector.w); - + texGenVector.x = dot(u_texGenPlane4i.x == 1 ? v_position4f : tmpVec4, u_texGenS4f); + texGenVector.y = dot(u_texGenPlane4i.y == 1 ? v_position4f : tmpVec4, u_texGenT4f); + texGenVector.z = dot(u_texGenPlane4i.z == 1 ? v_position4f : tmpVec4, u_texGenR4f); + texGenVector.w = dot(u_texGenPlane4i.w == 1 ? v_position4f : tmpVec4, u_texGenQ4f); + texGenVector.xyz = mat4x3( + u_textureMat4f01[0].xyw, + u_textureMat4f01[1].xyw, + u_textureMat4f01[2].xyw, + u_textureMat4f01[3].xyw + ) * texGenVector; + + color *= texture(u_samplerTexture, texGenVector.xy / texGenVector.z); + #ifdef COMPILE_ENABLE_ALPHA_TEST if(color.a < u_alphaTestRef1f) discard; #endif diff --git a/desktopRuntime/resources/assets/eagler/glsl/gles2_compat.glsl b/desktopRuntime/resources/assets/eagler/glsl/gles2_compat.glsl new file mode 100755 index 0000000..5529cbb --- /dev/null +++ b/desktopRuntime/resources/assets/eagler/glsl/gles2_compat.glsl @@ -0,0 +1,98 @@ +#line 2 6969 + +/* + * Copyright (c) 2024 lax1dude. All Rights Reserved. + * + * 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 HOLDER 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. + * + */ + +#ifdef EAGLER_HAS_GLES_300 + +// For GLES 3.00+ (WebGL 2.0) +#ifdef EAGLER_IS_VERTEX_SHADER + +// Vertex Shaders: +#define EAGLER_VSH_LAYOUT_BEGIN() +#define EAGLER_VSH_LAYOUT_END() +#define EAGLER_IN(_loc, _type, _name) layout(location = _loc) in _type _name; +#define EAGLER_IN_AUTO(_type, _name) in _type _name; +#define EAGLER_OUT(_type, _name) out _type _name; +#define EAGLER_VERT_POSITION gl_Position + +#else +#ifdef EAGLER_IS_FRAGMENT_SHADER + +// Fragment Shaders: +#define EAGLER_IN(_type, _name) in _type _name; +#define EAGLER_FRAG_COLOR eagler_FragColor +#define EAGLER_FRAG_DEPTH gl_FragDepth + +#define EAGLER_FRAG_OUT() layout(location = 0) out vec4 EAGLER_FRAG_COLOR; + +#endif +#endif + +// All Shaders: + +#define EAGLER_TEXTURE_2D(tex, coord2f) texture(tex, coord2f) +#define EAGLER_TEXTURE_2D_LOD(_tex, _coord2f, _lod1f) textureLod(_tex, _coord2f, _lod1f) +#define EAGLER_HAS_TEXTURE_2D_LOD + + +#else +#ifdef EAGLER_HAS_GLES_200 + +// For GLES 2.00 (WebGL 1.0) +#ifdef EAGLER_IS_VERTEX_SHADER + +// Vertex Shaders: +#define EAGLER_VSH_LAYOUT_BEGIN() +#define EAGLER_VSH_LAYOUT_END() +#define EAGLER_IN(_loc, _type, _name) attribute _type _name; +#define EAGLER_IN_AUTO(_type, _name) attribute _type _name; +#define EAGLER_OUT(_type, _name) varying _type _name; +#define EAGLER_VERT_POSITION gl_Position + +#else +#ifdef EAGLER_IS_FRAGMENT_SHADER + +// Fragment Shaders: +#define EAGLER_IN(_type, _name) varying _type _name; +#define EAGLER_FRAG_COLOR gl_FragColor +// TODO: Must require EXT_frag_depth to use this on GLES 2.0 (currently not needed) +#define EAGLER_FRAG_DEPTH gl_FragDepth + +#define EAGLER_FRAG_OUT() + +#endif +#endif + +// All Shaders: + +#define EAGLER_TEXTURE_2D(_tex, _coord2f) texture2D(_tex, _coord2f) + +#ifdef EAGLER_HAS_GLES_200_SHADER_TEXTURE_LOD +#define EAGLER_TEXTURE_2D_LOD(_tex, _coord2f, _lod1f) texture2DLodEXT(_tex, _coord2f, _lod1f) +#define EAGLER_HAS_TEXTURE_2D_LOD +#else +// Beware! +#define EAGLER_TEXTURE_2D_LOD(_tex, _coord2f, _lod1f) texture2D(_tex, _coord2f) +#define EAGLER_HAS_TEXTURE_2D_LOD +#endif + +#else +#error Unable to determine API version! (Missing directive EAGLER_HAS_GLES_200 or 300) +#endif +#endif + +#line 1 0 \ No newline at end of file diff --git a/desktopRuntime/resources/assets/eagler/glsl/hw_fingerprint.fsh b/desktopRuntime/resources/assets/eagler/glsl/hw_fingerprint.fsh new file mode 100755 index 0000000..0c11ba8 --- /dev/null +++ b/desktopRuntime/resources/assets/eagler/glsl/hw_fingerprint.fsh @@ -0,0 +1,55 @@ +#line 2 + +/* + * Copyright (c) 2024 lax1dude. All Rights Reserved. + * + * 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 HOLDER 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. + * + */ + +EAGLER_IN(vec2, v_position2f) + +EAGLER_FRAG_OUT() + +uniform sampler2D u_inputTexture; +uniform mat4 u_textureMatrix; + +vec2 rand(in vec2 co){ + float f = dot(co, vec2(12.98984576, 78.23378678)); + return fract(vec2(sin(f + 0.32490982), cos(f - 0.69890)) * 43758.54576873); +} + +void main() { + vec4 coords4f = vec4(v_position2f.x * 0.25 - 0.125, v_position2f.y * 0.25 - 0.125, v_position2f.y * 10.0 - 9.0, 1.0); + coords4f = u_textureMatrix * coords4f; + coords4f.xy /= coords4f.w; + EAGLER_FRAG_COLOR = EAGLER_TEXTURE_2D(u_inputTexture, coords4f.xy * 0.5 + 0.5); + EAGLER_FRAG_COLOR.rg += rand(v_position2f * 1.2344574345) * 0.05; + EAGLER_FRAG_COLOR.ba -= rand(v_position2f * 1.2343525225) * 0.05; + EAGLER_FRAG_COLOR.a = fract(sin(dot(coords4f.yz, vec2(12.9898, 78.233))) * 43758.5453); + EAGLER_FRAG_COLOR.a += exp(length(rand(coords4f.xw)) * -69.420); + EAGLER_FRAG_COLOR = pow(EAGLER_FRAG_COLOR, vec4(1.0 / 2.423952)); + EAGLER_FRAG_COLOR = pow(EAGLER_FRAG_COLOR, vec4(5.4523856)); + EAGLER_FRAG_COLOR += 0.00004423 + EAGLER_FRAG_COLOR.a * 0.02; + EAGLER_FRAG_COLOR = sqrt(EAGLER_FRAG_COLOR); + EAGLER_FRAG_COLOR = pow(EAGLER_FRAG_COLOR, vec4(1.0 / 1.9023576)); +#ifdef EAGLER_HAS_GLES_300 + EAGLER_FRAG_COLOR.ra += tanh(fract(EAGLER_FRAG_COLOR.a * 32.324834)) * 0.1012426; +#endif + EAGLER_FRAG_COLOR.b *= 0.934924; + EAGLER_FRAG_COLOR.b += (1.23213 / inversesqrt(EAGLER_FRAG_COLOR.a)) * 0.156365; + EAGLER_FRAG_COLOR.ga += rand(gl_FragCoord.xy) * 0.13423567; + EAGLER_FRAG_COLOR.rb += gl_PointCoord * 0.0124264565; +#ifdef EAGLER_HAS_GLES_300 + EAGLER_FRAG_COLOR *= 0.95234 + asinh(EAGLER_FRAG_COLOR.g * 5.23423) * 0.0254325; +#endif +} diff --git a/desktopRuntime/resources/assets/eagler/glsl/local.vsh b/desktopRuntime/resources/assets/eagler/glsl/local.vsh index f6e82a1..0802a64 100755 --- a/desktopRuntime/resources/assets/eagler/glsl/local.vsh +++ b/desktopRuntime/resources/assets/eagler/glsl/local.vsh @@ -1,7 +1,7 @@ #line 2 /* - * Copyright (c) 2022-2023 lax1dude. All Rights Reserved. + * Copyright (c) 2022-2024 lax1dude. All Rights Reserved. * * 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 @@ -16,15 +16,13 @@ * */ -precision lowp int; -precision highp float; -precision lowp sampler2D; +EAGLER_VSH_LAYOUT_BEGIN() +EAGLER_IN(0, vec2, a_position2f) +EAGLER_VSH_LAYOUT_END() -layout(location = 0) in vec2 a_position2f; - -out vec2 v_position2f; +EAGLER_OUT(vec2, v_position2f) void main() { v_position2f = a_position2f * 0.5 + 0.5; - gl_Position = vec4(a_position2f, 0.0, 1.0); + EAGLER_VERT_POSITION = vec4(a_position2f, 0.0, 1.0); } diff --git a/desktopRuntime/resources/assets/eagler/glsl/post_fxaa.fsh b/desktopRuntime/resources/assets/eagler/glsl/post_fxaa.fsh index bad7759..8b68059 100755 --- a/desktopRuntime/resources/assets/eagler/glsl/post_fxaa.fsh +++ b/desktopRuntime/resources/assets/eagler/glsl/post_fxaa.fsh @@ -1,11 +1,13 @@ #line 2 // Remove this line below if you plan to modify this file +#ifndef EAGLER_IS_GLES_200 #define USE_OPTIMIZED +#endif /* - * Copyright (c) 2022-2023 lax1dude. All Rights Reserved. + * Copyright (c) 2022-2024 lax1dude. All Rights Reserved. * * 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 @@ -52,14 +54,9 @@ * */ -precision lowp int; -precision mediump float; -precision mediump sampler2D; +EAGLER_IN(vec2, v_position2f) - -in vec2 v_position2f; - -layout(location = 0) out vec4 output4f; +EAGLER_FRAG_OUT() uniform sampler2D u_screenTexture; uniform vec2 u_screenSize2f; @@ -110,7 +107,7 @@ uniform vec2 u_screenSize2f; #define FxaaTex sampler2D /*--------------------------------------------------------------------------*/ - #define FxaaTexTop(t, p) textureLod(t, p, 0.0) + #define FxaaTexTop(t, p) EAGLER_TEXTURE_2D_LOD(t, p, 0.0) /*============================================================================ GREEN AS LUMA OPTION SUPPORT FUNCTION @@ -298,7 +295,7 @@ void main(){ rcpFrameOpt.xy = -screenSize05; rcpFrameOpt.zw = screenSize05; - output4f = vec4(FxaaPixelShader(v_position2f + screenSize05, posPos, u_screenTexture, rcpFrameOpt, rcpFrameOpt * 4.0, edgeSharpness, edgeThreshold, edgeThresholdMin).rgb, 1.0); + EAGLER_FRAG_COLOR = vec4(FxaaPixelShader(v_position2f + screenSize05, posPos, u_screenTexture, rcpFrameOpt, rcpFrameOpt * 4.0, edgeSharpness, edgeThreshold, edgeThresholdMin).rgb, 1.0); } #else @@ -306,7 +303,6 @@ void main(){ // Is it faster? Idfk, probably compiles faster at least, what matters it I tried float _616; -vec4 _617; void main() { @@ -317,14 +313,14 @@ void main() mediump vec4 _608; for(;;) { - mediump vec3 _532 = textureLod(u_screenTexture, _611.xy, 0.0).xyz; + mediump vec3 _532 = EAGLER_TEXTURE_2D_LOD(u_screenTexture, _611.xy, 0.0).xyz; mediump float _536 = dot(_532 * _532, vec3(0.2989999949932098388671875, 0.58700001239776611328125, 0.114000000059604644775390625)); - mediump vec3 _540 = textureLod(u_screenTexture, _611.xw, 0.0).xyz; + mediump vec3 _540 = EAGLER_TEXTURE_2D_LOD(u_screenTexture, _611.xw, 0.0).xyz; mediump float _544 = dot(_540 * _540, vec3(0.2989999949932098388671875, 0.58700001239776611328125, 0.114000000059604644775390625)); - mediump vec3 _548 = textureLod(u_screenTexture, _611.zy, 0.0).xyz; - mediump vec3 _556 = textureLod(u_screenTexture, _611.zw, 0.0).xyz; + mediump vec3 _548 = EAGLER_TEXTURE_2D_LOD(u_screenTexture, _611.zy, 0.0).xyz; + mediump vec3 _556 = EAGLER_TEXTURE_2D_LOD(u_screenTexture, _611.zw, 0.0).xyz; mediump float _560 = dot(_556 * _556, vec3(0.2989999949932098388671875, 0.58700001239776611328125, 0.114000000059604644775390625)); - mediump vec4 _390 = textureLod(u_screenTexture, _290, 0.0); + mediump vec4 _390 = EAGLER_TEXTURE_2D_LOD(u_screenTexture, _290, 0.0); mediump vec3 _564 = _390.xyz; mediump float _568 = dot(_564 * _564, vec3(0.2989999949932098388671875, 0.58700001239776611328125, 0.114000000059604644775390625)); mediump float _397 = dot(_548 * _548, vec3(0.2989999949932098388671875, 0.58700001239776611328125, 0.114000000059604644775390625)) + 0.00260416674427688121795654296875; @@ -347,8 +343,8 @@ void main() mediump vec2 _484 = (_612 * 4.0).zw; vec2 _615 = -hp_copy_481; mediump vec2 mp_copy_615 = _615; - mediump vec4 _498 = textureLod(u_screenTexture, mp_copy_614 * _454 + _290, 0.0) + textureLod(u_screenTexture, _449 * _454 + _290, 0.0); - mediump vec4 _505 = ((textureLod(u_screenTexture, mp_copy_615 * _484 + _290, 0.0) + textureLod(u_screenTexture, _481 * _484 + _290, 0.0)) * 0.25) + (_498 * 0.25); + mediump vec4 _498 = EAGLER_TEXTURE_2D_LOD(u_screenTexture, mp_copy_614 * _454 + _290, 0.0) + EAGLER_TEXTURE_2D_LOD(u_screenTexture, _449 * _454 + _290, 0.0); + mediump vec4 _505 = ((EAGLER_TEXTURE_2D_LOD(u_screenTexture, mp_copy_615 * _484 + _290, 0.0) + EAGLER_TEXTURE_2D_LOD(u_screenTexture, _481 * _484 + _290, 0.0)) * 0.25) + (_498 * 0.25); mediump float _576 = dot(_505.xyz * _505.xyz, vec3(0.2989999949932098388671875, 0.58700001239776611328125, 0.114000000059604644775390625)); mediump vec4 _607; if ((_576 < _412) || (_576 > _409)) @@ -367,7 +363,7 @@ void main() _608 = _607; break; } - output4f = vec4(_608.xyz, 1.0); + EAGLER_FRAG_COLOR = vec4(_608.xyz, 1.0); } #endif \ No newline at end of file diff --git a/desktopRuntime/resources/assets/eagler/glsl/texture_blit.fsh b/desktopRuntime/resources/assets/eagler/glsl/texture_blit.fsh index 3179bc6..e84391d 100755 --- a/desktopRuntime/resources/assets/eagler/glsl/texture_blit.fsh +++ b/desktopRuntime/resources/assets/eagler/glsl/texture_blit.fsh @@ -1,7 +1,7 @@ #line 2 /* - * Copyright (c) 2023 lax1dude. All Rights Reserved. + * Copyright (c) 2023-2024 lax1dude. All Rights Reserved. * * 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 @@ -16,14 +16,10 @@ * */ -precision lowp int; -precision highp float; -precision highp sampler2D; - -in vec2 v_texCoords2f; +EAGLER_IN(vec2, v_texCoords2f) #ifndef COMPILE_BLIT_DEPTH -layout(location = 0) out vec4 output4f; +EAGLER_FRAG_OUT() #endif uniform sampler2D u_inputTexture; @@ -40,8 +36,8 @@ void main() { uv2f = (floor(uv2f * u_pixelAlignmentSizes4f.xy) + u_pixelAlignmentOffset2f) * u_pixelAlignmentSizes4f.zw; #endif #ifndef COMPILE_BLIT_DEPTH - output4f = textureLod(u_inputTexture, uv2f, u_textureLod1f); + EAGLER_FRAG_COLOR = EAGLER_TEXTURE_2D_LOD(u_inputTexture, uv2f, u_textureLod1f); #else - gl_FragDepth = textureLod(u_inputTexture, uv2f, u_textureLod1f).r; + EAGLER_FRAG_DEPTH = EAGLER_TEXTURE_2D_LOD(u_inputTexture, uv2f, u_textureLod1f).r; #endif } diff --git a/desktopRuntime/resources/assets/eagler/glsl/texture_blit.vsh b/desktopRuntime/resources/assets/eagler/glsl/texture_blit.vsh index eaf9ca4..622af8c 100755 --- a/desktopRuntime/resources/assets/eagler/glsl/texture_blit.vsh +++ b/desktopRuntime/resources/assets/eagler/glsl/texture_blit.vsh @@ -1,7 +1,7 @@ #line 2 /* - * Copyright (c) 2023 lax1dude. All Rights Reserved. + * Copyright (c) 2023-2024 lax1dude. All Rights Reserved. * * 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 @@ -16,13 +16,11 @@ * */ -precision lowp int; -precision lowp float; -precision lowp sampler2D; +EAGLER_VSH_LAYOUT_BEGIN() +EAGLER_IN(0, vec2, a_position2f) +EAGLER_VSH_LAYOUT_END() -layout(location = 0) in vec2 a_position2f; - -out vec2 v_texCoords2f; +EAGLER_OUT(vec2, v_texCoords2f) uniform vec4 u_srcCoords4f; uniform vec4 u_dstCoords4f; @@ -30,5 +28,5 @@ uniform vec4 u_dstCoords4f; void main() { vec2 uv = a_position2f * 0.5 + 0.5; v_texCoords2f = u_srcCoords4f.xy + u_srcCoords4f.zw * uv; - gl_Position = vec4(u_dstCoords4f.xy + u_dstCoords4f.zw * uv, 0.0, 1.0); + EAGLER_VERT_POSITION = vec4(u_dstCoords4f.xy + u_dstCoords4f.zw * uv, 0.0, 1.0); } diff --git a/desktopRuntime/resources/assets/eagler/glsl/texture_mix.fsh b/desktopRuntime/resources/assets/eagler/glsl/texture_mix.fsh index 81907e9..b6dc9f2 100755 --- a/desktopRuntime/resources/assets/eagler/glsl/texture_mix.fsh +++ b/desktopRuntime/resources/assets/eagler/glsl/texture_mix.fsh @@ -1,7 +1,7 @@ #line 2 /* - * Copyright (c) 2022-2023 lax1dude. All Rights Reserved. + * Copyright (c) 2022-2024 lax1dude. All Rights Reserved. * * 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 @@ -16,13 +16,9 @@ * */ -precision lowp int; -precision highp float; -precision highp sampler2D; +EAGLER_IN(vec2, v_position2f) -in vec2 v_position2f; - -layout(location = 0) out vec4 output4f; +EAGLER_FRAG_OUT() uniform sampler2D u_inputTexture; uniform float u_textureLod1f; @@ -32,6 +28,6 @@ uniform mat3 u_matrixTransform; void main() { vec3 coords = u_matrixTransform * vec3(v_position2f, 1.0); - vec4 color4f = textureLod(u_inputTexture, coords.xy, u_textureLod1f); - output4f = color4f * u_blendFactor4f + u_blendBias4f; + vec4 color4f = EAGLER_TEXTURE_2D_LOD(u_inputTexture, coords.xy, u_textureLod1f); + EAGLER_FRAG_COLOR = color4f * u_blendFactor4f + u_blendBias4f; } diff --git a/desktopRuntime/resources/assets/eagler/gui/eagler_gui.png b/desktopRuntime/resources/assets/eagler/gui/eagler_gui.png index 704285831160bc03f8e492dd22684bab0d01690c..5d9d516ddecaca2a7f3026187ce08dd71289b97d 100755 GIT binary patch literal 11256 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 O+SxPbP0CI?M*JV1vMhK2 diff --git a/desktopRuntime/resources/assets/eagler/gui/notif_bk_large.png b/desktopRuntime/resources/assets/eagler/gui/notif_bk_large.png new file mode 100755 index 0000000000000000000000000000000000000000..9cab14524960b47d69482185ddc35a94a60b1d84 GIT binary patch literal 5089 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 'Chat Settings' menu) + +eaglercraft.options.screenRecording.unsupported=Recording Unsupported! +eaglercraft.options.screenRecording.button=Record Screen... + +eaglercraft.options.screenRecording.title=Screen Recording +eaglercraft.options.screenRecording.codec=Output Format: %s +eaglercraft.options.screenRecording.codecButton=Change... +eaglercraft.options.screenRecording.start=Start Recording +eaglercraft.options.screenRecording.stop=Stop Recording +eaglercraft.options.screenRecording.status=Status: %s +eaglercraft.options.screenRecording.status.0=Not Recording +eaglercraft.options.screenRecording.status.1=Recording! +eaglercraft.options.screenRecording.audioBitrate=Audio Bitrate +eaglercraft.options.screenRecording.videoBitrate=Video Bitrate +eaglercraft.options.screenRecording.videoResolution=Video Resolution +eaglercraft.options.screenRecording.microphoneVolume=Microphone Volume +eaglercraft.options.screenRecording.gameVolume=Game Volume +eaglercraft.options.screenRecording.videoFPS=Video Frame Rate +eaglercraft.options.screenRecording.onVSync=VSync +eaglercraft.options.screenRecording.failed=Failed to begin recording! + +eaglercraft.options.recordingCodec.title=Select Codec +eaglercraft.options.recordingCodec.showAdvancedCodecs=Show Advanced: %s + +eaglercraft.options.recordingNote.title=Recording Note +eaglercraft.options.recordingNote.text0=If the recorded video does not play, +eaglercraft.options.recordingNote.text1=try opening the file in your browser + +eaglercraft.touch.interact.entity=Interact selectServer.title=Select Server selectServer.empty=empty @@ -685,10 +817,14 @@ addServer.enterName=Server Name addServer.enterIp=Server Address addServer.add=Done addServer.hideAddress=Hide Address +eaglercraft.addServer.hideAddr=Hide Addr addServer.resourcePack=Server Resource Packs addServer.resourcePack.enabled=Enabled addServer.resourcePack.disabled=Disabled addServer.resourcePack.prompt=Prompt +eaglercraft.addServer.enableCookies=Cookies +eaglercraft.addServer.enableCookies.enabled=Enabled +eaglercraft.addServer.enableCookies.disabled=Disabled lanServer.title=Shared World lanServer.scanning=Scanning for games on your local network lanServer.start=Start Shared World diff --git a/desktopRuntime/resources/plugin_download.zip b/desktopRuntime/resources/plugin_download.zip index f31563508e863885dcb69735bd91a6ffc75fdf4a..5b521b5fcce14ac2fdda426b0ec152e8c287e7db 100755 GIT binary patch literal 540037 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

Su<?$EQBa(|lTqq)dS4L|y#zfRcYA6MM9*U{AD~ z75sJ{;1x@Prm4K0KJ=r=kss@Q0GT8u)(iRZ<~(!w7)WG)NvV)5djW^%0+3lML7VN` zhS|vb;f53G4gY;pd=42wck+5LHo(rvgRv5mgDnBL+dMEx7exYnmm%DpnSp|{}r z%NN?-y5v7y${6WciCSvhh-=Un$bUcW1-!=m^6E7SO~G<5lT!kZm(owp1d=}e@zwVE z$Y`RGW6aKTMrwJMj8o$yd;QSXyvYY+1q4SrlCQDvb2p?2-aD|CD>bx>C>tA`!gM2vxU$Xzc2uw0T%Z0!lRI zU=op4;gabQDm9;(`ObDt3gTu|Ue+v==m4`(hfDIEr3G&%2SFJZR?I{tvkv_tev{IK zQfa$Xgf_VN=99mjXu0`UUSd)Ul1Kp9qR~6g4!LpJDpBi>W~cY~j`@$WC-fN#0~d#T zTh+NNqZhlzJDJa59~lWv@N{q~QlLtZgGneVvW1j~H$)N(naGSPuTRKk^A(6)Mij$U z&euG(g;jmuaB*BmEy1!&yVX4`n}{qhgasbP<|`59av!vTP~ic7(qw<(Iy!w>^Yf0P zRfrw2Ik0z#lwQ$&kPA2m$_AL@sCz{fjmMs8w$cxgVik=r{ zYjCGT3Zo30k;sgv^}D%aH9Urfdz9I2HI8bx{Zyf{9d9f_43kvbPGHq~$FKVkqlZ;6 z3w(_e?ulL23uUw>INO4v^H1&h?Suk@>u7t8Jm4vu1K3E#onXRKRTJo4d&cE9v3$e< zoXvKq&mU3LjvN;ZLZOUN6_#Wck8!v9qwszQqWkB<2`qPW(q-L5TTJ&ke=ys2>^q>- zMv?EduELqmks>nCHTuL1dva9^JMGO`1u8SlomEh^e6H^t9ktT@M2*^|rs0&Ae}Q{- zS(8^cd;%>eu%^1JxXM+)4hdhTIyU9!5;qgRG_``W%7lOsmqo{RYc>!I2H8C|ys>oq zzRoswG^n@@pSMeAkDs^WHCzTx=e}6ayi4e7v6<@Xn>B!zu~c^1loT0uLtK_H>5mT) zY4)LV@VLe_G=&{D+(SGKWCb_K7daMz2UGJablZX38Y07rjrHd_lck5(jVA22ck0VW zYHlh1WG6>>M+rG*D_vTXib@kzl}D*l6>K$3j}bb%qQ=?I5$HZ^{PfHrIU@w9xhgfB zg}J+BpS`9!>tK9&b>r*V(NAO4DDy;i#GCZcwiI?9%<#HDe=8W9>QkKQUB}XkV8yo3 zQff}-UQcE2M9pbv%HEYj8J(g*W?7cD@rYLSiHwifj;SP{RE3D z8@sjEGX!kJsGDrrPDh01)@Ql-!EkKwNN5;n;W`au2Zp7EpSyszu$^r11c|Zm1=r+| z#D=5Vhic4XIhIIv8F$MXwukq9#6WreC~}slD&z)so0q$k?HJg{UT4J#34G=aj*U;* zX5IZc`r|-K1F_(o+{^|-&XR2PVr?e7za8Dp?!5rgJk8#}?86vv6vP9s2Q` zFHM8f8Z&+=NZ6sfuiu8kgp}B$%FXJqf1k8ru1F4y*U@ zYj^)xvq|yDmP7j(L7obbPi|c3pikoLy0HW5R+$!SX8KSWOuQ>dNBD?~LlRvw5Wc<( zyeZ|__9(o6Oi2x)`%@ zAWgAz1-yy#AuQm$5~S0vKpXwGlZml9`dU{{A|9W!`v|=GAhJQsPcA3wr62l4i|x#9 zt=-y;Xm1;`u?xOQ2(q#3C8`C4CE%8`Cy@P@(7lylZApqfY7%0PP9vU$-hv^)miKhv3-uTBIkHp!s^70 zI#OZgWM|DX`}SnyZynK%W5djkgUOIxc>ttE65^PK(geS;EgMkfXUPb|MrHZISIn|_C0 zg6LmJ-QbWf%Zc$*b+Wm~621uyinTUcsNSdGj)PpI;e|q%r7>ivJ96{s5p^gj)Q-8z zJ0eRqLV2#X5`||;a<)2S7ewk8nrek4iq93rId|d}4F-Fu!-;R@eN*t4CTe^pY%Cer zv1e#I8zm2k+&=!v+e!ubRbHnp36YQ2J(v1VmLDix7MC*Der`$|a!~8~J~0DoW)o-+ z%G;<^`ZA2_C{sShyb^)q4pNy=eU0N7c@JF3q+{GBUESb0`^~WlU*mtgKeW7I;*yJ?^}|j2}lY+Gc;Y8%zGURsSb7 zCse*VxxG$(Rw*izWQ^oL}Obo)O zYD>)}Ql2sHgOf<^18!kXehY9~kbCm7DskbtJM^|^Vz#j09P)=j?3rFgUmhsC-wp2L#YWE0gWyWu{MF^AwjTKg@P=vZ;?)Tdo);1xKnD^NZe+Oovdx|@S>=a3pvbX zBOLHtPn>Qc^Z5q=F|(8pG3}4G>R4ySG4q)fr!n$d>_*^>V&?2~xB^S(e$g$rvAEM1 z<9>4ZxEpzNy@US2tw}S~S&UfL7!d8r%~lX?x<1TR6>VzVNhGVqJ(YcBitHaXX1Z14 z^xW((n6pV(V6 zd#I~Ym)pnwnP-3U7T?}*1Oq~ew}yDdak?4fnbym_Z{Kx)6c_j>Y}W}vEY0cq`X{MS ztsWUGqERE6CmzzRIn`$Yc!~>HZ`#%ItuX=z?8+0D!*K*>bT1;Zb?g&n?)20bBg_X6 z?=%F@7SI9mEoR4S5%v2J)aHljltO|{f5Nnb)10eMQx;yI9Q0NHEdyx5F zv}X148St!k*?~D-PE4QflOb8ma*jm(?lh)$AR*tG-rT}6)lfwnbNoD+bh)3e^@eT= z!4DLcet!)2M+JQE6SNybe2Fgf|I9VP4|;V)ie0A!ayX$p*;p=W)wt5iVw(OG7u@e9 zZfQpRX@z7DJH4G8Z0;LvJ0QHZC;0v@#3be(0gm3gJ5ZT2hQ7iOCcf~~O{bC*(!<8Y zps%WzEvm7~f^#0zK7pccSSS^p`V}EQ+rQJ6{s0|&=Fk1Msz&*u zP#&KP>(REpD85*k9F16QaEWWI@|iv1rbB#KfSW6{fJX-wU>I)f0M%!3cE}{{G?G|T z?MdMZearc7;z6uS<0{MSpI~)VhMmXP_7-*hHB(0ihfu4Bo83HBM)n?*H z`$TphkBHnARdWr6%Zk5DtXC4N${cF2%RsJ~9Ung%=bw6yDKgHynVz@@1 zoDwBz+QEY+cajwpZrpPUQ?wH^%d7T$mg36j|NPBda^NYD%YmUQJW%tQ@mpZya~bD5 zz%yD+JF=kkPdhfwZ)U7yk++(Bf`10j?dCtDmSmciYkF#)qZ^&Uc}mVGygXeeY{Q7{ z2nH_(cO$;dh#-u_>x30p{mD(Kj5|Pw7(MsE-!MjK(P($lX}PUQ+%+;H zQ!Pr8&6@>heDHBGl#>LqQV>CKUmPLK9wh5N=Ybf=9@lTw*w2 zQ(;%R)$#*|h(bP@f=3RVaV{Swb1qw(9|7K1E~$TL8KPNjhGU;KN%nl77(;ko<|-JL zZmralGS0CrFA+uG_yk_iGH10J=^~BI=ObYmqI!z%d*aW{(!t%b`94zdWR{IG{`1tb zD4T^OkoZD-^64v2pjHq9{7hxxYiG zql3$#b3R{s9iYg^dgsw+nT}*1_*gN*z9rFBW-=Xx-!>BfIBZ^h|vfr>Z~qf4ly(-=|_? zbG^U5jf$*Y{uN-76QuraM7~T!-N9x^Ayvbzz?Q)g)VAk2S@N0KiDWdWwNal=2 zEOdO!S~*fG+`p;>|2%!e5qNu;HOBn=Y8SaeW3~%KqdnS61YG`=K}kJpVjN;_Ou2wv zBx&DOW+K+}K3<);YGPc5i+QcY&si4vIRH#kP3^TalMN13!UE2Ba6%dUxVOZQFEr@2 zVo|pAhrL5A1dzZ>P>7{+w@YcDOxn~ZZTATto=YE|C%0{1D-;9H$~8xU{#bt1+6|TO z)jQpom@Pty+F_|j1(m4I_itm%=89llpRj&C$tg5htLGyAdop~2hFSWEXw>-B27897 z!it8oA`$!&LqRo$nMOb648mq<+NoXSuHWE`S5(S`ukT8YU!HbTt)i~-fpoHo)Y(1} zJvglm@xwN`{$sr)WeWL`z;v#Tb>_{j)4tWM6U|d9aYvNv5?5V*-k4bFqgy=mz1uAVy$e%j@WQ@mn(JcM()~+0)MJ zn|Dwa`;tU?7)=|xN@;Qy(&2i01izH#Yo%U#Pn@Sas27y zrBO4S!C;#|9k*S|V+a;INoy@o&t7goJ?lj+&v z-QC@tkRZX`-Q8WoqCpmSZTs3oUwdp{=P+;PG^e?K8y(BNH*Bz3oFYUq#uhiEfBA!} zv8GxsK_yesy*o8ta!+|vWa2EL-=`^L_Hqbo^!=N&cU=FSf5K~pFfSBKP{&x6V8)FnKU@ z-KIrTu^S2Q;B`Vq*NH?GU4}_2<)nF^2ys_mBA033qG3ghx^G|G{^Bh4Eb)`^L5%|u zX2&l9f~3{3p0;uwT~}R(J+48aTMKBOj=v(2WrH`_|CGaY`@m~Qc$0Zd5=An3|15HL z4?IKi#-0vt#H3}jC7?zFc)|2+7R5_G9VEfRzW?fdi>5n>rZQ~a)wd7qkWeTf=C~c7 zW-mw{t4pSg=9>L__$j%v$XYoi0%Ual4r0;F9?*5wK4)SoZB^%OOG8%Q_vLaYWECy?%S+5xM?{gVKz# zGapgB5t96U{_gkeq%vq$Kh zEea@&N5J6hL>XrKM~u6E{m$G?bBNnp21kaAbZF6G^zz+EV6ZYW;f514uR)$T{&XG& zdlO}o$%*cy`1s@J0tK(UM3u{vGRO6ZnC%V7eMl<0K2G{Z&aaR}U)se+an^8ElbZND zBoxsN;uj|VS|k5Ztbrd96!hcEH&OE&QuSim{=lqR#mKc2Jg409RiER_QvO49o#{tK z#zWCd>z>5sMYAfu9-}qI);$T!faH7<$HUu0bIVthfiJ%c;nBq08IQ}k(*mouKb<{% zLh^SKU=-U@&p&`<%Zdh;-l88-yl7U;-GO!w`!Hep_gD<{&DqSOn#!e2wL(Ik%g}I)r%&${;5bLj9Cp z;+pTa1unNmyV1;HbbWAK=1?{%-|!Yr9tq~ax&$BYTv^L(C^fY39baOimN>yQSunhV zer<4Xbr~Bw@RlV+7{;TW>0QSC z6knhGtD9P6KpkrXUj8y{-^2{MC3SBN5Mw4Nw_Qt8SDzjBOn_PsjP@HvKLL1860_o$t?1q4PEiU^Ep8GN`2 zi3DHsc=>cq&~zoRSce`rEc@W4^3CbMlvB+9g2>v+7kpN4O` z+`$~vFVRr=ls~c3EW4~jqTFC0sO58 z^L_%ByK4rkFiiX7y{;c#Y(c!zvZdB`uP8FL0&zIHYOMON7F-E&{-S@ZNz{nA0BYgQ z?8BKkZ^no?Ji1scI=8KnM z`#$PJyHLwt=k<;!C67g~rg`wt@d#Iz2X5OJ(*^$|shk1)T#mF>Z^Bu?lIp`@r|(5Q zRwVGM9UrZ!{T;c!Cif|=d-AdND301|mr_8F% z%J%|VSkS*Kl4P53N`_ZhU^O%mb2Wdrglf1V_0PlzjnOu$cuft$L1nD{#lxpKZG`Og z>@D%4=YsV7;U<@#*ZAu?>nA8Qu|CrifK6kOQiBvZW5aP8Nyj#rKM>?sgRN+H8tRBw zg~aC$o|yQ1v^-*TRPu5m&h~Zi04~z1pS+$eXDqVQ4^H1x@qkMq9QlM(it^`EhShA` zf@aJ%^V*Y5cYiu$&&YLATR7BlVCi+ZGy;EWcpMRU^}MdnJXq>A=I0BEHkf%RT3a=N zH=eH<@OSLvIj2VI{VL8LI5M4j8dC251T^|qf63W))eRoA5!qQmqJp}hJB3U?JS5a( z3e(i9d1z_c#WEVoXHh;Cl=-F7;IJj;P#h;m2vtaLZqF%P19#{&Jx;qRa z+}enXu0^2FmYqZF$lPf!^s~YfoAR%DVi_DF9;0x z`Nx#f=ID360@q4?flNAj=1n1~u=dIIScST>(97H1Lll3aKM+8kP=d*jL^mUPZ%UiM zjJMB^)7)$!i>81#v7%W zDnUH#g1xwl8M+InuqSOmSCUmecNlMez@^nha-6a+tmqf((cVp!4>^W#)%PyC!QB1{ ziqM>rX0TRu5;kE-`t5`t<92sOTKscUEA~PRhX+#qT<$!}5>|0|myKXp!dyjwUA^m0 z9~0OHm;TzMxnfkuyuy7?O3yNfv&!YRQ3IOL9xJTro>jrzBKn+XzD()v*k*bXGjt=I zRW&u%%~Vyl&k|gBfwU+momC>^&M=Hn82YwlZ_$9O1HG=xlU-P)Lu$UvvS33Vowuw} z+VV-qn~B^K`vz=@p5G*^MA#Z#f2Pr94{p;`G_J9Dm|K-7AKo(kZU8Z1cSc1qo-9e+ zHpk@69#YZ;%d*t*87P_nXwm+Xsw<}|3vJTlW`Nr6ofuU<#6n<4g}|r>q&%@lT&n3m znZmF$CZ>FNf;gQ4*o9|Uj<#a(X?n8~IjghDQp0RH8{%>`)J>?5~IS0 z%=W%6XmpI58jkF`swtW$wndlagZ8*EdGhRPFv{Ac=~jDj^72?5!hM;(aodq~0hvxn zy7>$dLV&{iU(IhTTx(H1YU8WfMr?657;<=Zi5e-Q&AM`icezkr5k(=!_l>FA#71VC zt1Im7CUyIOwq&&}@);>v-W7?mO?RS=^x;)+VnP^yDjjupB(CF?t=%yu%=mS0?933-1&r?6b`w z=}ubEH*Fao%`FKe&YctgZO;z4g*zAj+#X_{=vXSe$3B|q8zN3&E#C|vgdbwS>90Jy zt3K<7<9wR;JI}EcIgi=0V`_V%{M8{b6qtAson^DsIHR~qNKh6rxHeRN_+qna#=PF| znd<6`t~2x~PGC<{3kettM;H_Mz>lLqHWm_s#WEqx6AL&%v5xevBc7r1-+)c*)49US zgGn6pzJlEnM_bnPim?@u;12jA8fgV?y&~#Dm>qn*qIe??h(|J%CN>m@F&svDLVXBc zb^4<#co3{agy0DN>P2YP*XhO46&bthKX8$_1{FB)hhG%qE~UO)%~tpoZWrE1jA%$N z*!{}0D|#mox^U0u=7Ois%8S%5fi*esk-#tbSHISGUO(oS!N4K6HR_N$JxSw4?JvKg zZ%u03pj7q4)btbN?PVgppxv*T1cs4|-G7NCdJzJLUbARK2HdXcEu##w(?dEHArr@Y;|xKr z>Xb7YN_@&vPCdF2$V=XBD(`s8s;gj%W(;MGM6k`NjgWzG9=(s;^Tt zO&wsd-jI{+r}wqubR?=SB9ARL-olZIwjk>4!fBljvPtYp$Yhg7+n=4-TDG2h>l-j$ z2@gyKmBNw7HoXJ4&8=6^5Q8oiUv$=aks*a<)+-JWuHl8#etLpi*Tg(--~nEkmSDmF zsUXs|?xao zzTV&a*R?+U9|nmrly|PfZ11Md#R1`b@@T$6Wj}NI0H3XVhQFu*P9a(6Q(uQ?z@`?6~1pgckm59CtL}NVsg(YOI6=0U^oRZX0*Af9?N6h*L>_LW-2qeA4W^B;>{oA zkj=Odvwp9!`97>cuGxkYMcNL)(&{`N;;yM{TX8RFn{kiVhUik(cnUK)xCt{mxO7ur zxOTJhbc*0Sc7D*1IQg@XxcSq!w3T?RK`=JAPQGsotJr(uMiF1&o0j<&crA6SzfE_m z`JMKtybbziKV`nkUuVBsUblB@ylwioJ}q=>`0ekI_qdBPcytzG`fkxE)^JQ)Fb>Z5zYld<89hATr1-oW~o%s%#3lb2lo5q-VN8$Ra_$J8Y7u5 z4)Qrw^5Yq|YA=&;UGFp`5tu1u-OIB}p;WoEFufbl?_!}?k~JF@B+!VQLw~tvJETtu zs$Ak(h9_V^`RPFfg|_5ezmY&2lmK6SK>Qo-o~11b#0-6~UAQ?T{@D%sXd<;UNB&?uJf8z{Ro1F(T$TdeU z-&*!|JIB6I@BfK;@#UV;NdkVn`uP;jXM*ZPqr|Ydj48#0w$f-3$U4eBr`#>MB9 zEPo`Ixs4%3}_IIYn0zNId9AiN~Cd|K_W{H1gEXEz(1zQ7;EfMpZT%(GKR0n1bE zQZt?;;%>s1GrsSuhQCoSNEp>nS@ssX!$x};N+o3oGzh3tmfjHv+0nR z?s<@g^5Wy4fnz&XFt&fLo3c(11~76&*Ug$!9W0YElBY>aT)uOef4@TabRlzx%e)9r z`z*Z)7SGU+fm!IjFm>IL_7IhzI1|i@KT6BAIFBeAa!<`dSo-A=ya99T<|m&?dLA-$ zxhvFgk*BUyT!MR6XM^h%m4T*0Y>b%a$*aB_6x>M;!E1RQQfRslsO4^9D!mU94hCqU|AKdz#XwtELB&6}CnloJv#xe58 z&E{@<@B@a-#|OH)dcd2Q6lEco$G7jp=;~8u88ZkB6GAGg;|L7G4>Sv#L+?@yg~F8x zZMjw^b?amb_K=!k!1dLiF0h+1M2LF+%HL~cFHMZ*PTW%_)}wpE4R=QWvbi}tL$Q6f zdpz2@FSG;1P`)jd&h_%>B8(MUzi4JlFf!6chC9EsjL!6k(t;JDH{1t}SQRC%dI{~n z)$)o}tgf*b8fhP_vjjv+!J{4vlK^6tPtmV6%XgNnil%a3ynJ2+vQCt?Sw7U$T7Z5H zbGa)tAGRM&v4Lz?)q9OR*UP$BH~XtcW(=Yi-$%KN&%MzXAxi5k4`1;g`W;krPM%W> zp#_VjQ`0Y$T4~Q<1NO#K06X|wK z{sF%N>Do|Fk>5t7tnrEuMdUuHwGF%=XCD~jwcDs#F<3|fjjv3=6 z%F!X*Y!dEhZfnFH$$7%Zve+KhvB0G@sy z{BU0jWL0PUrpd#rIQ=iPYA+Ney~&JVZf~?M#@TS?Lx!aT@8226skJ^|(2{XeFTD|; zvoli?z3~C*nP%x-(72O~^{R&PN;jizYKEa&<964&-o!f;TKkY2pRGRw&Ve`5eyTfR zy~(`$gg2UR)%vlQlZAV-|<4ZLO+#+3_bIDKkbY$9)2TGhP!R2kRHSs8UM8( z>S`0G0fy#pHo$OIp*&v7e&xY8(xkj7DT-&hQI<`CjkF}XBuXyvV*K+Z^998xSt#H7 z&vDG&AmpXv(_cybAsm+1bEy{BbnW{7;w`P;_>pp3TEl#YD^C?ds*Ee2N?u~VSzpz( z8TeO!NND>r)R4!z;Oc;Lv@JKn08_Zwr+UqV`h3z;WbX&?ya~9}r-J-QLTgk)G1H_l zT1Z7-!~y-4SDdIelI2f`JKqpPa%nsUQq7wKq)=(5X{w#$}fvn>(GHtKckGYgxm-WGiz&)K2Jo!It5f>o=kch4@3GgwGg=4EUj z1hdLxk5yLVx>Yt!h#+E>wp|4Va=3-s1hY-uf7Cdg2lsSnOKtlh4|lG$wf`8j-w?&K zm1Akks2FtN(UUDZ>s+UyvTp1xD#uiTb7dy}=@mOE5$h=DBKv1{d4~D8?rWIlj5a0B zK`XcdrOh}LPn^;FXh27&p-XATkP`m5>S^}1Ena_A*!Y2z##Y8VtM?aMxq(F#7|6PR$e6qJPPX2-Y;*;*5 zQBu{L7ov&MF+JH1cjBd{1FG-ljvog=MqFc00erqvKj_r8ZXwruX^_*zLX_=Hwu1wbmkbFyjT?u;QVtD1vShy7N9{qCN)Cp|B#li1_ZhQuySI=ghn`z8bVzA)++ z_lyL+pcj;Qfca1Lx>O+jlS`gnl^d}Tsvtw^`P&4VD+#5&nCAsgM6pUXb6K`X0qv;w)3x*`YGC%>uZANf({IGPkO z14IXmY;@A(+ptMFTiL$~MG-2Ql=n-t^>2+h^?7tDok@Y*7j|Q(K`68{k(W*O&wsRe zDUA+s3$LRw2-nZGQlwu*8qNg#`t#l}i@=kzt|}E_gV92OKfbdl^DvwQ!;?jDx!ANu zIcHy;7H97BF(q%^(*V2Hj^Oy-5(m(GPn6wG3-GY zdWSPzJkLviFs8sotS2)O{p9XLS%=2U`Qpo4IlW<7&p#8;9i8;;p4LV*iN=`iz*d6H zNRWbD(@|1r$}Vh0?@Z#IV|*+Te+0gGx3}639P-1)=Sc*dYttRC3q!&K-R!>GJao9z zNycoXwn0;vzl_w)&#Ulp!@_n$U6Qv6Vv_V0@4!bA$Gp=5-K!JJfY9hd_nVDxL3-EEc9c2sTyk%#>kHiG;bog> zfPL!arU7l(AGWFFO1aSQP34GmMEEk`F+L<2+jsk~2}>`PT2=Yv70e4;G#otKb$K^L z>MmNe4h&JQz~E`6!yzR&X9tG5_VTXRF@i<r!@+B`5%rea}M5tK9xBa&A4!t2e|i zAgVD#%l)ugE=js6OT0@%eqS)!%Z}!Hg=w$aWv?3P=bYsrG{pSp%8^*NCgNl>Lz{Lk zf|ecft~97fu2XKMZNI6L5zyJW*VH-r)d-WpxMti2=~NEHR%RoY$1}dim58N6_!rlw z@gH@?()u#V1e+|P=YK$&OYgYmnik15Dgl2%uyJl$uy2BG8if`FTl|@iD(ORS9X-~&j2zR|`fYP;f!cnoNC1ap!>unUvc{Z?XKe^Jq zPEPbl9YQhiZYsOV5-h$^!lvIDXSsJ1CI(J+u9CKuz+>D46!N5bX%r)W*!K^}9Q=jr z2H->_m$f}bH{1V}vr18XF9V=FUm%|ajY&JQ-`eW6tXaY%Zp10ss??tPm_kPzPMJWb z^b1}m?XH0*?PbxdkV57Huj$rRkdNyyn|ga(5%Kqhnj4*z%4C`q%Qkual*>S`AN&1PdQ25@N@%!I>`Uu!s-a%c zM0@mCQDsH7UhweIg@Y(Ack;uxP7P1g>aj-RVqH)QLkfSvWF6$VX2@d!-dmw zh2p7R{QNmGIW71~R`wVRsoj5^L?<%9irUDOCq^j|Y5ydy)*l)<9zbJ`M5j|cnuZ4P zrk%k0XX!U|}qBmGoo5FgByTWEY^ zsAIhvV&z^&X>zIjM$MH=##?Cl0l(&{D8#mq9O~iWqng=Nw%}!AHjBinLfK7)75_qL zoYID68LLz$wuM?2>$_*_pQ40|L%Hk>Rwu>LirkF)0AnLzXAjAZZ;rtu-D4YencYl_$Kq2COJv#IIBj>g8CElu8dPa zZ6!jR#AId2zWR;f_{v9DWo2_b-?NpUX$n(%vC2Zry>DPFCi9#s@d&hG-|g;WSvJ%lDK_EciI;%68%7q*tKH&+8ZSFmeMq@Z-lukfqA`|qSX`;ZcFxQy_k*u-g&Z=^Lc(_TmLvRO-&R?F9 zys5K?w!GU^1$CKdM~q_koBzBS;_^ZlS$*2%jvT*w7bEQ;oN&j$?;~Oh6L!9GEvyDbPG{MuVGrC^+<`l#rB-*;$YvxD@KuGkxw{NxC&=#+iBB_m>wR5W- z<#;*?29bzJ*4NRqN#&E^x+@N;5?6Vm5{Vc4<8e`8hk%k2AW89pQST(d;3vAczENXn zkuSqfRC!^uV%Q%<71y{J4DvO>*jv( zj+ZN$Bcy&KEhBc6U_D4grMK{OygG6aC)9*P=Hf0W z&Yx4-|JdGNZofWo@V#&~7FM2*>9omn|65otbzkIz^burQFG5DJAeU12TV24Yl1@j5 z=LjD^9yf^g!mDf$fXb?k^V}3J;_7|7jAo=m!3jrdbI`GueM2F4Rps@gNfmDz0 z>WDB3SvkA2G2Fqr^al0A!y3)8nRbhcWqBh5ZUqx|x&BX!@{Eb_1g2}X!#{-;-ilm0 zbw836*UL4T?X`|)x5`p37$$+B(*>dR(wf~u((Boh6?DPkdMiOQTxy-u(MGRA zklKz|1uK76p8ir**PFc*z&5vIMab{730ut)qQ1&H<*3CglDt{!;3FF__^X2ixe_eh zHJo8zc1xSjXA_}uh6m-;yhBL%#w(I=L# zuFbbi$bJ98--r5}prQUD+5aBjoWU>_wgI@v$f`OoeN z%klwPFX9JJ`q6rR`y(y{&wsXYJmg6Zol$rQ)T=L~7u~WOVP!Uo>ro*-N&%%AGRUQv zmhmH&;vZ)m4G8m(D zGJge~_w$ARMwX3$_B6<0Ubdy0mTp(xP;8DPC`bCU44bN=X#KLWo)p0+>6Bn0{}U#K zk&-vw41>OGd@zYMa)3<8+6=n(;V*#IQv8cYWD~|DGz&FC)*yX1t+339fm~$`0_44$ zLIdvVRS?kt_&A(a*Yj1{&T8A}!ASa=W~YJ8W*?M>H`0QO6N*jcYDe5`;<4_o^cWTY zgYNNn!JK=`MytS&`~rz#Y3xzF8E}8sm|7Ds-(V4O`{J?EN%HzO5`{Cp zfga9v`o(~kg4zK!34%|a($PJ}*kA4!+(PkAi3)oVOQ<1?@a&I~@^4-M35s3PO>mv5IA#dBm?Nj33fE1n*7bZ- zMdP-O97FJm6KF>0Fw7c3?7M@X7FdK+uoGCJ^p8#jY4yOq!gtm*lX&?0G8PV+E>|lF z7hf}KHO|;+ajrUE!w*`84WRrgci0|w>g;eo_id3QN9K$2MiL4xt-sY~^XTgn3c;`q zq^hNL0}4^s7P3VbBCfIW#Tv<7{c^(SB_wDmTAH!WD{hT?E6l26^ScWPfBX<5xm>g_ zcmv?h0^=I-`A3uB;2DifY;TRYPvJ?YLPU`zK!Z=SyD(-}*F`#ngZvc5&F0buJ|FP^ zMunr4-WUH{wda6>vipA>{hv42Mf6KM%>ER0^-mo~2o9s0hZ-z8GH;Vq{0kKkCQ2mi zpTQOQmLe&^l1Jw$;K-)iL)_&C@Ho>9){OaFx}Xoy`{=+ttD=pw`hAht7vJ z&FZZ8-b-H2>@Zl2Th~;ho9^RVp-b1d!sB;KL%+vyN+`?mP!Yaeu3ZjrgpBcUl{y*0 z7Q1jBn%)=2HJoP5B1tD#hC0y8p(}L$yqg{sjx};=6{J5u(@}nOgNgC0au|#pWBs%| ztN_-vy3p4|corlN?MjaPLro5R`$n7*vvNrx`55S5N7e%C0dgDideBx<77AbfO50fk zMFJR66k8;?J1p+b;O_1W?zXtQySux)`>@#J?(PnO!6EoU^pZ+)N^j_6(4*hdOI}lU-hA1uGhkR?o)jdwz@rbg>s>ni6H5HvK%2P3Pcw z6}DlC=L&;dMKn4d9o~|(wFxT$vO|n+%w|{x(}4ZJ5v@h$4~$ZUIH~3$)`=Nim3CK+ z-PsBmcFmh1yfgxync;J}z|u!IPCQ%0y6v`+Ka|51bR}z30_H@rjZdOia^oU9TttjEpi-D+9#rM$<8fWks1yCEOGSXJd zzyNWd2TO*9@jg_mQZ-&_?09t(UsMBLqxg=8wXCWUjh}YrDqtr5^iULfbW|S2d9TT1 zJByP-)*$?gFb?aQKFp`3YX4zZ#pzM+kj0n%(Vmy(IUW^Sl6ybVks=cks%*;qpeqU1 z3>(w6NZyXQ8Gtk7DMHMBT@el~44;lEfeSe@ky)X(rNC{=!PP*)~L zeajW4(Vbb^l~^3?cJ?S8bQ(tHlA-+Re_G954~jp|mAh<19<6H;Jvb_-W*$1BKhXxR zKcUgro0^5XOn&FWhtGy*Xu(BJB_Gf2n*VkB98WQpT=tqm_olfR>p|jh7ZTf0AmpBa zswW~Hlk-QBI-|wnLbie|w>pN!fgdSCY0=|7X&Q}>E?j(y`j9n)@^eTGa7*;ID(ZBY z)^??n%Np{m3wZM96H?`K#MB-&6Up{K8^9U9Q*%?h_*M7h@QO`M5D^7mIsr&ZB}Ke9 zJ=Qa%>ps8X#-p`9}2R4p-rH~DzCwZ1WYVP3c z*YymIR^FE?;91|0jYL~MEnKJ8GxFY6iBRt)zmt_bv=sH0Jeo)B1%>n7&Mhejn;o{k z5V>c@SOJ784qtl9`Vc$m>^?pqLLv1MO}M{-$ZcXud6e!RK9inp-1XU(r^V^w*Q zIP5YDScvrxX@&c_{q)_xVdvgadH(!E6?w=#fQ1AN^nuA@44w+Pptg0TpKW@M46QCI z#AvC$lk`cv%6mF+3V2}suF&di5ese_4 zefe3#B6zN?aaP+5nv5NLgEDs_({z7B#!Ngyc%wgZH{r~pq)mH#&=i!>x*C9lhEpU` zD=^?RHe?NXzcTL*Apn|^0t!%pF}2EI4>ek;6n#TVS0WX`o2gCWF4*z~NU4mc#PxKm(4P804`jc!!VDbv z`om};sKQL6wn$fE+=Ppm(yR(kqwdS{P*IbfC-k7n^sXbi|A^RHcA-kg3vk;|^a|a_+vMLYd;&#e1`!n{z7O9Fq5DpP?wO*G!#*=y_s5@M zHTc@lQS#dnUJ7i({Q5NKbD;oqfIaC{LSvp|_+@zTbi|w3ooq2#1s#PsC53raIHk3H z>vB59uBf*#7wWbJja|m*AS@gS1RUeXW!dk%A864%?NzN5Qulvxt$lI)uladhR0W#VC=$_wvRDt z+`F1CUQV))=&Xzk7m=B;LB@LZcSiQ_DdR%M)DwC}t>eLa7)L}UUb}Z}Y=LI7+K8_o zt*|8a<&4~6CIZ!SMugFb_5*(mk38b zWwYqDLyH6Qt_lGom{^{M)cfiG4dest{OU!OZKVMsFVM zfqhTc56E?WQo>Ap4gJ&>0OsOfPigKnoMyDH z%e!bEBQXrTQqV;cuO8|U_z}u?Jkei4P{40tW`Wr3Y9gQjzyYA60L%EfbfN)rq9KPB zUbJ{rloA@k9DkH+m-b4wc~4?LOu{BJ*ql(mJ7i@PVoZYn>bP~Rm1DhY3mF*f;jY>+ z#JP=E=?J3}G8DO>s{?PK&(N`JlUy!eaF|O!DW(|qRtTc+Ie=F(V-w9!%dJn#rKKaW z6I9|C@~3U`@!LG;PM3dG80Sffe1dgGN4by>6@d!TdHn_lK^!%sg4JHF0Sjd}ts4~S z$kDH5H8{*|D~F0B>H}4lDj4KTX%-Zliki!m)revt}ZmDl{lzW$mLROdJt#mg9~7s{DbpYn~-${gSErkSCVB@O1E+Y{*onp z->b=l`+fSyJMCL~Mdg`o4$Z~eypo%#WML1PB|Y37U~DNmshzS!#D5WiS6MR*VK3h8 zcUXX^H5D5=N*p9BM(IkWzFj2&cMrtFqpRqtH(Sn& zTh&~yTOj9`gzicf%tDb+ky*E>|IBypzUbdjFD}26a?E;(Pous?A>eN3byZwI$km{j zUA{r{loDFC@CMIB?_>?1Zh&hGer3a{EX3P*K-ch}LsWR0;dHx#ni>fI%iEM;(%2XD5dGnO;Bs|v$?0HgD_Jg{pZhSkNyn%){FqGuenkUNGubA*EG6QlI;k6%E(GGO{ zJZ|zjgVlO+mCUnyOnS5kfTMs&EWaREp*h{X(8SAR+%yaupIcR-OyOXlS>bdwuS?@} zo%5{QWqQuVVF!uC)42Jp*7Nti*#K&*?!4BW@@uuV-#mH5_q4i#>xLKB`Sxi(mj?`_ z!^=bK?Vqd-<@XH?eSL7<@`8e(>KAo8i`AyBP-W6z_0s8hD@wjEhzvG`LshyS%)DXz z#D5%wm#lu-ofey!0-?6vpWm!Ja4R&LwHG_-2Zj2CS^L6p zY3b2r*^O<`+^#uuCcN(Rp1dUIErWb+uMrff_4R<2{`v{ zW*!amIOhFyOy2Ns4j|cAXklqAu$h@J_=CVEXG2J=h12K}pt=nHN7sIVh61OWBwSQ+ zTo@Ko0)!t^c$c^wpj^D`sn>2OCZu&mqzydg0g?zi+|Vam?buMHO)Gd<787WnX8moD zMvPN-UMw&>)T0XxT_=XACFS?ZIwc`mibt3QA!AqQ!?SZ=>_eh4L%DV4(53LyXY6Hv zTvksEs3$_nn^;SR1p|dUB|)r=Xhep8vU!FLe~Y+%{eTCRpST`0i9WKDpmgbSIoO^+ z=$wB9)W7k{u`L`zPRP7P7%Oy2Jz@c6dp*!qM(gFZztp+%37yrA)z2c{dL!!zE{ovK zHEEVCZ($Inqd=wR@_A{P+Id$+!%@y=yv<4_yV0*7Rufzi-}`@_t$c5FSdCU3kzP zkJuNvv|Bz-KGvjL)qHnL;DonsDpM~S@B#UU)2Ea=e(vHwe%lp$<<}kt^wO&DeN4^Z zxBMo~n~3f__~S^4K#0JXHnbH(%2<;^Geaaxp@D}XM}BD*!I(X4%^qy$Y%oJ0g9;_T z_xE&Ek2?XaMRzwP;|Ax8=>f*kpchM{&HM8Me(OTP&4kL0DVOuHq}nQ)2^#q=6tPua z_>FGar-D>Uuv($*rg=V#vk@fp<=IN)Et6r8?im~FS*-?adJc7bH{z};uEzl2nr?8U zQ**le#Sv%Wh2OmfPz}fOLnV*$>BA4XsdCL5HZI*e!NbI%!o2Ds%^NleNF|;f`As~( zxGN2xE0I0%l+^(>Bdsejt{e5?)v3LO?frXS;kO(uc$O93BD&9Fsd@^XDncs?1Juv> zvbEjVy%Q0l#`G?B+D~y5ochKGfuVS~yQK}OR|CAE=8;Q|yY_^>rx`e%UjmRvyb7v` z;z)?w;mtKy0%3bi7cEn`2IEQVWIYWycy+mDeyCEebhjX4?skLxOs`uk9O!6@htO!COCrzv zg?G+Gta_TCPb~6d^5_K4fbrJ5P*&CfZj`UJomadxY@@#by z%=CV@DT#~4z_v|urcl_pVq0k$<6~3wxML)d14L-dnbD@9oi(hC%Vf?)!0YizxPi@F zh@q=Q0w~v9^HZCDa*BI5GB(lKQofVR`5epzK?TQ(gdz0OkGfF!DJ0?Do#V;b?R&|K zYRJM`EMxqEovhRKSJUop?8L447{_>6zu5$v{*POYGpu-$FD^?)>eNnz-M$`L&nic$ zE$p7saJajBFRIPT;XqueA75z`09HV$zahUpVr9-YWAAFjm22Jht*heM#7DoXw~Vc`v0k{1P4_Qs_HT#; zPsq;uj&V_*=Pb<59Q?jz+C7_{+~WRJ?l7$<8U#*84S#~Yvg<4mYxT=xLbc|eaOesS zz?e37fD4G(;B)2AW-v@v{^OJ!v|$FJySvEI)@MVnC!3$ytSW-?YsMcSC$-k6-czq* zuirm@Cb&Ec$*M~dZygeLY{LBHu0cLSDd*T$;dqOs@%htz=@@Q zqh`Ib#kG^7ORQgxjuP=2vX!?en&i?O4(=wPUd|Dy&XMT*CTY>~>A31&2EKTt|lMJ1$B7y;~3qdnITgQ%l9If7o z+ko-Y!PKn}sxJQ4uD(WE6Crlky#gkg>uGGt=c-I(N;eiTcmN)mY|J=J%0|o=;SxG= zD6jjgH*x6I|LyDdeGqd+*faF+hroX(nOs`sJPxoB5E-}-5a$0wlBxc;9mw$yiuq3^ z2klv4bxbY1(L(4SGWsJWD?kP*No3p|a(bH{Q4u6qQ7F-cKghR)g*Odc!jA0P+1}u8 zZRYmw*}vCw#4LGKEGhq<@1Hn-6tv20LPLa~V(ligdhVIK>CJbg{`z=-FNAnHv?Be3 z${$6O!z{FCn|x&O)sNFkXihpl$p8-QjKX#2Io@f-tSaaaC3uFYei%RzQ&3ecb+3Op zb+TerOAV#E4RwJktb%u4#dDBA&LlO!K#9J>M+g7rYVJZ-Grp1oVMB$(%tnf2rfkMd zAU~z_(6_Eb6M#fjU7+y@lWj^HQ|X>RKzi`knkD}h3yEuTL^2<#C|zAtmj+D?xu%>T zCY^}Wak0Cc;aV%gVVU_zwYodw`Y`F{gyIS8TBO>P8hkY=&FgNQ%HUa%k&x(k6Gd+G z$gYmy;IxWbQB)ENy5!Zm>hj};2B%V7!ls2#8cI7ceDSTz5-C0*1(stM0H59DU0TIO z1(A)`ORMFI9S0m88ReeF-n2^Ij7{`vo9M}qE-1%n5Qq8X1eLtTG)t&%jLXpd1ZfJ2 zi3yvH)Wf(E4iW*o%KV2XKNgbhcqETzR%&K37g{z+!M^^=sE)iUlL@Yeo_Ab|C39jW zZvI%)5Xs6@s(>DVnK~x7Qo?!a6T1!R^1--2jF03A=Xv}AdY073IjP%qoY)gI5^>j% z5ao3C{o}(!Vo;T+6q_MemMu-H0;jzyd*RVM>0N)0*rCW{RylC@{edA$3PF))Kt=2u zy1Y7sesvU^gRIA9>9=#rL6SBZo^W{ajY~HqTZAfu70lxpSFcRPlRSbs!OWqyOIx`~ z!&qxF-WfE5;}A!t;3cN_`4|rbtNDSZ0-1VG@*IrK68-0X)6+epCXkvQtCuaoGYItUbXI>mw!Q6Ea)w_233 zoSwD<$UiErF@Qzdf^uE!!1eDj!;VN8@u-8YPz4;8SigHMJ&}=#jzHMIBKZ7Laq0_( zvr-9(Ad8r3~aF@>X}x*=G{u|I;&i!9f7uxhcpOO!b_H337()<%~H zi-fN;bHo5D^Vc^$w%k(Q*lm zcfpvLPcTK__XEj-ffgOKi7?zX-mNJl1LhX@s?3%elRxxXf^C-c=!M$fPACvmI$ok7G^P>AMD1O*lkjN)Uw-jT6NYoH+LGKXU&$g zPS1mxZy)V7f{e7~AS1GBQMBJn_Y;_d4LWnJY^L1$y@@)`d9W0%IGq0!HX7@96#5*u z^C1(-L@Nb}w_D^(_jQ6$G>1`Fq0AD`GNk7gnA?|sBy6={C3_;+G+EPqs{z~_nKZJl zg1CvYmUMew@<&wMiP2n-AT*Uw80z*yMf-Bbr~W(=)Bp6}ZnH4GorhNedc!f$+>VoK z2R2-wkW|_}2-=ma&cSpjSHBH!@i!sxhi~%PdMMQ+k?xDP%m9R10JEC}0rI7jt4ZgZ zX0{&@n_|-%)x(w=yc!?8*uvF*cC~({wfaq(la;kZMGP|ZkIw6Ae1>V2ZMmj2{ArV} zawlbOQ^2=n;7`j+YGb-^-P$jlyHXjzSNJMIo8osLM24FBW>@|C`Q%nX4Vd=hEyI|D z0O?sM-W7=I04bZ1$75GNQ6HnlA8hOXpWSMSMX!?;U9tfW8=`QEib9Gy?ZiojKi}$u zhU?c-I3Q6|mdT)y7Jo-Uvt~gfVeGF#HF;3)7t8)~wEJab_p1r|R$Isz0ExUeSRp$r z?`Gjb^<#T>#MSN(p3oUfzj+YWFdd**ETZ}V2b8}RO(I>_O$I-K#%ugdy|kdjqp&OV z?L8*erXx2&vu{s2;C5RMXy2GL3W-g*VEgyIUjf3>#(_eGzbVNp8t#9 zasE5KThT@EQeR8|OzgCpNTf;%%YrFE6Sr$pg-654qt+fZ#&q0ACXDjVD6kJ^KW{ zZ+4QA;ljBH8xcVspIi~917eQqb#Gug%PGfB1sfXc&~DQLse5AGMel$hQ55n^=rtsT z%{2$geOHP@edT@_RDqw%0Ed(j{7G{T@9Y4IpQ z1d{Vfjh^*eIm0^x9Lx8D5r0JeR{L$uj@Xqo6H?C zg2}|VaA9XKc?!a>2Sg|??A)A0Jl)4wQzTse36A2r>|FQl9s09Kr~ZH)r+k_q_6_m?VpkcllJ{E!L42J;0``INjtUlsdYG*fS4@qjLy*^@l%T7wKB-9QK$4IL+ zTZJh0)nBm~z8lpZ-I|$LE1EWP`v+&d%yRTMkZw;yoQigzg}h`X=9E)>gbOjYw$hIo z0Cw1GU1+8tBR-3XyZ4cVPYs86u5o^(9I>Xh^+t2N1@+~6UOO>i%Bk62AF!^SJ~ATZ zd_#r3wHC&<2{`m8zEy-PJ(oyqhK^H0~SgJQrf_#ll=aK6w|`N@>wCeo}jj5-dZRwR+q-@uqxi?HE%+U z(G@LaF{bBVMIlg4SN6^O;{XaWzx(B&y$)la8x0vFzQ%`c{AX|xdJ|CbJ=kQ)1A1`f zB-?*0c&Eh_d9cGy%MK$e-g3AW=gL8+t@~ifq@+;2FVPY0-oq;_Pn0;|l1$$l#e%B_ z(spU}4rT7OZi@uQ4GH00evWF0v^g^Zn#{zE$Lvq8CU%skj(~DBwdt^Z3_o;YRfHMr zvvB26epYh4XY`I!G&6Dg{15;+Ea3n#-!)d~i7Q;NcV~j{utw}0WNM|;zTtoeX)#6Q zdPjEW*tCqsLHAn8l_)VPg8i8;+!Jf`ZsH%kuo9iG$OqVoHUmX)q z~Q>Du) zT5M#=SioN2BI~tnlg|)Z4q;^yXxHTJV@4YNt8&zuCKUu#TO z2{gM2`kKf%4H7fAihlA#o$h{c{aI|IO5#wqv2+Km4V(_yP$j6w$drNozA34N6Y2xS}=F6-PA$9SRCBTSQKEm)e8L3Q9L%|W@P3j9+?N716nX53_R%zk^Wz}` z=O;bAJiO?Ah={a5<;IMTqsR6n4YKg+-P{XqL*%S)*@-1U)F>CEBkHXz znHUjB#hA;v6U(E{K7s@q0kXR~qYw zQJDPXl4lY|I`~eQFCZq-i|Ga9gn%Q-Foed~D=sQKXdpFh-|RzSh=y-=(s}1H+8px_ zy>-ktRkLX4Y0|G@I+%XU08Dz!yE2U`b#!Yx*P*jogxiKL&Mu@Xq6h-8dY$rM;NbqRjVefL@#`U9NT{k)L+eGv$AX2H4vBy}!So0)HV zIm{ZF>t zM6~g=RaZD^t_DT7awX=UlYEB8BKCHCPf5cYS591G#%B=6%>+x7KwCFJ@lB6}5}&hA zQsUA!V1ReTG4rBLAt8(UdCQVHgGfUOn}BJ}I-D{O2@Wya>`em6Lxd&jo?41h^So_w zQ;<+~NLK!jx+qd@F-{wl169GH-j%7qC4%_X3pc@fvzym`PVC6?s1*|B-#cgLJ?aFr z%q195n36TA4rPBL&;+|-`o}b}0#--C4XiB17*EF$#*{WNClD5QlzPc`yDRK>Onml5 z1l{`T@VRl{b0YzDd8QO*4D7|+-40A9o?L%wr3w168KE9btQ_Z4 zzq+tIzO|1@T_s|{Jc0Ssa?t`#zC*c`*y}4n1R`7`I{Z4m@zQbL2K3c@R+l^*0JFiY zhyrQ(q+Ki`){|d6pk0Q%LDX#6?VGr&R-rYlL4_v3=%fg^S+l^Eze(9{>F<|vNG8f( zF-@4m3FrC8Wm$u~P>MT(8g&SF@G?bk({L`)8*_0!-&M+o080TtPZylyYfGrNdBJ%> z^AejH5LL+=dcA0JMZE<0s z1cLXm_g8dvH7IR?fP1rUJVwMdWb%P?Bfu!P8gZtjaZ1S)GtDt63Hi!wrmd8Srf_N7 z$XXdtAn(4O@Tw^+l|I7GC;Eepcka}QbE)tTuCa)>X{YXC2Jc&(!~G5Gu;2GP4vbMK zZ{G4<{9B8xL&|V98#nc?Mqq8Ff(EO6J+%T?hO5|!t3O!U&Q{LRS-vMX4(9P!-RZb~ z1H3vrTo);2rO&4dE|*0jJe9;iU*{BeQQakYA;fq2B~6QVF-?l)#+mqfdz_>ZzT+2? zSNKy?Q$L>KI34O!8}ed!%$7lfct&8!2uN$lna6bMAdV@bowW{{*M2 zaC(YF$`+vI{gBtl6Qk`QODfw z&<27tjF=zXXYW&sP8fD0J9_T@r};(|y|L7X{_xTpv!^u($&K2dAq5(-KrZ!fBfWP_ zz!1Mkg~zyq`y+~;0u84FBo2#ku#Oq%kDNGejXc3>0S4X}@*qvZp+)Cvr4?TQj!Arq zM>T+t%${vW*0Y&2*}0R+tea`bVnW+w%IN{jr#DJhH!EF}<_^N(rj&K2Dg$Xx3U;I^ zZ>f1~s!dYMbp;!(Fov^m>!fgDmC4qOu7K!d)pW$v@a2E5Ww;eGof~d(o@A75R!nll z2wU1ba4&F1WU#fxmy|8qfN`u}Wx2Y;^Npdwz))M2T=UlZuw|DFA7ObWOGVNmIDD}9 zwl30}c7WJ+>AZklsdvJkG8R^3e*nu%b@Z(<7pEG9V$m8`?7w60Q{%K}L#~<$c2Gjr zDM8d(1|`x4)v7}_BtrYS`M6yvN-hmQaB<||RM>*k+ypa%8^-K8=hofo<;B#~6D&>g z8ou{CDA$EK(Stm2mIn6uoCP~*g7q>XIuiy2i+^>g4;YZbJs)%0;~%XBOl82;Ie3;s zZ4Z=qu>Uf!o7$zbf7O816B1N>5}Ijz$Gj9w`a?tFh!=id;s&@drPqqR>ACJ(g2Ty^ zSfB4Y)N@n(fpdW15Z>smPH=bSJr+pYrr`}IN2<9&Zs2q9Eo3o-Lz}B%(z=H})QE)% zZwTG{{ZQ7=8fh$nST!MU5zMoD=5Qgn%hH=VWU?pM)D-Rw@u3|hs2$g<9Roqn7S;~m z(j|8J)ago&X9*p#5u|!4758;Bl)s+%&Kd&e41s#U+!NA`?Q5(3)!suS6pEU?SH7-T zSbm088i^T4VkuQ{^&2fp}hEAUJ}5hd!pCkoQ4V!RZd|BM1qsf-6RXvc$Tj&y>HHRG)g2V<7h&0|V-`7}VdczQ zm>=G-u9Ry0z|!5-AGxl5%6Uuftsp;g185d}Kcnrqvv|TY;EcJRJaW6kVp&z8yz9i$2d|oAr%f8?+!_{|=2ln@agEDsl**}t+{5Dd5L#6j%{GC7kg-59E zomqYl&Y1Mh)wa<2l3vmXP}8tX*Bz}gnCI4-%v9xhZTSuVhd=t$n=yOPGEXuxJAgBU zFyA%v%XVbbyfD+&cg!8mE&bhzXdd8W5|(yTv8EL=+U<<2EcW)59bMQSak`h#4SgJ4 zT>{}c4-GuZJ=cl%jwJokWZyCPcQQAU`vxCLM$SMGykSRv&k}?68OC9|`wL>=1({V{;`o{PrIRd#^Q|v!*V%aX!_ena++Aiskur~wdeim4mDfOrpEnJu`-;y1^r`6(n$Ug79f;=uf}J6p3iyl1&`8Tac-|U(JOvK??`b$ z!{YBOem)2JpK}b7|2@2LcDHcx{+AHL)E|XaU{N3-UWorE4eozGqNuDPq59Y9pN#-* zWG{Wq?0~tCo$QJ53OZ{-UB;8fRM}Lva;9Qy`P8;~PGMxloDB2kZ3TxVJ!+1nY<{Y0 z=9v3RavasRh591!s=EocUBs%`n!z@6NlQ25XDk@11w8i?{Mp2ycH}$T%OOj%bOD{H zTwrz0yZ8Dz`|N+?IXl78|GFp(!7wt*DsXFadwxstoi&N`N_!B`mS`3^mu(48HY?j} zblraJiTm0nrW~^iodKVa&F%rm%x_JFnb$PuPQ#MNvaEi+FE1NE(Oyk#ZOXY3kfW59 z8-L772Nm27Tx?lG^rC40O$LL$h_3MgjQ@I4c}BfljPMgM6NpMiIgXjlxga61mGOJ$6l4r4aUgE=)# z%_N0o@eYR(y$X-*N+}j6b@4Gl#{P_OM@=Ao+ddxDOzMoM11^& zv}2{+meZOf!2tzr(PCy;OdIpW=}G{W&$SbLV7t?le-$dyFzWr8m2-%$g~_6DI<~Dp z$&0NUCmq|i%^TnN#rBJB+t!WsV&}!SJM8Y&TCGv{B zBsffuYnz~b!_u6$|M3Hdua;3&a}1(-zJX8+A)DrdbHp2Sq&>qqX@i-ncDVs|dTQ|` zMq-Y1gs*x97#oLTjiF6p#?9Alr!f^7O<$5LZ)@MJwbYnA|75<*mE?>&R^li-OFqx2 z(0sZ|+rytXua`W3+N#cMBR5*R?bs)EHaXP>!7s*js~yu&6p6W()AeS+xlMyf33R6De(E6i)XfmmN0$?CXz zni(d%ZfgeH1@;iz7qY@7bB;GGYx!=x+h#-?hE$Wz$qVVX4TrcjdMPN?J!%rzF!;J+ ziaZ@_z3``b|0dYfojVsct3ObaplQ4?xvs7`!R)Qpn2DQ;jRX{>q>!I;NlqhbuU73^ zk|4ymJWjpLv6-bWSAJ{SN)L zS;v@UJFG~TO;b87rUef%CRN4cgZQ@#cH`YQqdXDy)tQMMe2}wbk`tc{+G-AAaXr^m zneG5`qmIdOJze0u!Q9!?*-O5wgc<1dH(kDsjiC1Emni9+>lD6UH1$05{vJ3Yn__Fx zQfdTEnuuFf`@!sHBK(J}6PbNVqv62c{~?UgXHgmn1iN7|`G<%&xEqz!A1TCKqpep* zsWx&92B9(*|8%TR<#nfuJRr2hg z6>+mWv+xWaK`}X7CTl*jh$RW&Kr$hQS-x+*qxQ74+EKHoFGvFNF-;UXl5;aDq;^yC z<|S_}!IcglC2_O+NT}MBP-c8&r}3vRg~j2;y|J1jq-bWCUMTVBJYoA*t=rD6E~%bl z2?~_CvQ0OI7IzzlVT*gU-opLl zNiq?jJO8L7Ah$Y}oF_!tqvQIi&z>b$rbe(qjJogSEIah;6hvr*lg{tZ2S|}khi$96 z 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