From 40a799828190bee2d817f2f9154edadceda44ddc Mon Sep 17 00:00:00 2001 From: LexManos Date: Mon, 11 Sep 2023 14:47:07 -0700 Subject: [PATCH] Use official mappings for in-repo patches, will be converted to SRG during build. --- build.gradle | 32 +- .../blaze3d/pipeline/RenderTarget.java.patch | 28 +- .../mojang/blaze3d/platform/Window.java.patch | 26 +- .../blaze3d/vertex/BufferBuilder.java.patch | 14 +- .../blaze3d/vertex/PoseStack.java.patch | 2 +- .../SheetedDecalTextureGenerator.java.patch | 8 +- .../blaze3d/vertex/VertexConsumer.java.patch | 14 +- .../blaze3d/vertex/VertexFormat.java.patch | 12 +- .../vertex/VertexFormatElement.java.patch | 4 +- .../com/mojang/math/Transformation.java.patch | 14 +- .../RealmsGenericErrorScreen.java.patch | 14 +- .../net/minecraft/CrashReport.java.patch | 18 +- .../minecraft/CrashReportCategory.java.patch | 24 +- .../net/minecraft/SharedConstants.java.patch | 2 +- .../minecraft/net/minecraft/Util.java.patch | 12 +- .../advancements/Advancement.java.patch | 8 +- .../AdvancementRewards.java.patch | 10 +- .../critereon/ItemPredicate.java.patch | 8 +- .../net/minecraft/client/Camera.java.patch | 14 +- .../client/ClientRecipeBook.java.patch | 18 +- .../minecraft/client/KeyMapping.java.patch | 98 +-- .../client/KeyboardHandler.java.patch | 52 +- .../net/minecraft/client/Minecraft.java.patch | 424 +++++------ .../minecraft/client/MouseHandler.java.patch | 76 +- .../net/minecraft/client/Options.java.patch | 82 +- .../client/RecipeBookCategories.java.patch | 24 +- .../minecraft/client/Screenshot.java.patch | 20 +- .../client/ToggleKeyMapping.java.patch | 12 +- .../client/color/block/BlockColors.java.patch | 36 +- .../client/color/item/ItemColors.java.patch | 28 +- .../net/minecraft/client/gui/Font.java.patch | 10 +- .../net/minecraft/client/gui/Gui.java.patch | 78 +- .../client/gui/GuiGraphics.java.patch | 96 +-- .../gui/components/AbstractButton.java.patch | 8 +- .../AbstractSelectionList.java.patch | 14 +- .../gui/components/AbstractWidget.java.patch | 8 +- .../components/BossHealthOverlay.java.patch | 14 +- .../client/gui/components/Button.java.patch | 16 +- .../components/DebugScreenOverlay.java.patch | 84 +-- .../toasts/ToastComponent.java.patch | 4 +- .../client/gui/screens/ChatScreen.java.patch | 4 +- .../gui/screens/ConnectScreen.java.patch | 4 +- .../gui/screens/LoadingOverlay.java.patch | 16 +- .../client/gui/screens/MenuScreens.java.patch | 12 +- .../gui/screens/OptionsScreen.java.patch | 12 +- .../client/gui/screens/PauseScreen.java.patch | 8 +- .../client/gui/screens/Screen.java.patch | 68 +- .../client/gui/screens/TitleScreen.java.patch | 54 +- .../advancements/AdvancementTab.java.patch | 20 +- .../AdvancementTabType.java.patch | 8 +- .../AdvancementsScreen.java.patch | 80 +- .../screens/controls/KeyBindsList.java.patch | 62 +- .../controls/KeyBindsScreen.java.patch | 30 +- .../AbstractContainerScreen.java.patch | 196 ++--- .../CreativeModeInventoryScreen.java.patch | 264 +++---- .../EffectRenderingInventoryScreen.java.patch | 22 +- .../inventory/EnchantmentScreen.java.patch | 36 +- .../HangingSignEditScreen.java.patch | 12 +- .../inventory/MerchantScreen.java.patch | 22 +- .../tooltip/TooltipRenderUtil.java.patch | 38 +- .../JoinMultiplayerScreen.java.patch | 8 +- .../ServerSelectionList.java.patch | 8 +- .../packs/PackSelectionModel.java.patch | 10 +- .../packs/PackSelectionScreen.java.patch | 18 +- .../recipebook/RecipeBookComponent.java.patch | 16 +- .../CreateWorldScreen.java.patch | 28 +- .../worldselection/PresetEditor.java.patch | 6 +- .../WorldCreationContext.java.patch | 8 +- .../WorldCreationUiState.java.patch | 10 +- .../worldselection/WorldOpenFlows.java.patch | 26 +- .../WorldSelectionList.java.patch | 36 +- .../net/minecraft/client/main/Main.java.patch | 12 +- .../client/model/HumanoidModel.java.patch | 20 +- .../model/geom/LayerDefinitions.java.patch | 6 +- .../client/model/geom/ModelLayers.java.patch | 18 +- .../AccountProfileKeyPairManager.java.patch | 8 +- .../multiplayer/ClientChunkCache.java.patch | 10 +- .../ClientCommonPacketListenerImpl.java.patch | 8 +- ...ConfigurationPacketListenerImpl.java.patch | 10 +- ...ientHandshakePacketListenerImpl.java.patch | 18 +- .../client/multiplayer/ClientLevel.java.patch | 76 +- .../ClientPacketListener.java.patch | 86 +-- .../MultiPlayerGameMode.java.patch | 152 ++-- .../client/multiplayer/PlayerInfo.java.patch | 6 +- .../client/multiplayer/ServerData.java.patch | 8 +- .../multiplayer/ServerStatusPinger.java.patch | 6 +- .../multiplayer/chat/ChatListener.java.patch | 46 +- .../resolver/AddressCheck.java.patch | 8 +- .../particle/BreakingItemParticle.java.patch | 12 +- .../EnchantmentTableParticle.java.patch | 8 +- .../particle/FireworkParticles.java.patch | 22 +- .../client/particle/Particle.java.patch | 4 +- .../client/particle/ParticleEngine.java.patch | 112 +-- .../client/particle/PortalParticle.java.patch | 8 +- .../particle/ReversePortalParticle.java.patch | 8 +- .../particle/TerrainParticle.java.patch | 24 +- .../VibrationSignalParticle.java.patch | 14 +- .../player/AbstractClientPlayer.java.patch | 2 +- .../client/player/LocalPlayer.java.patch | 126 ++-- .../client/player/RemotePlayer.java.patch | 2 +- .../DimensionSpecialEffects.java.patch | 8 +- .../client/renderer/EffectInstance.java.patch | 20 +- .../client/renderer/FogRenderer.java.patch | 22 +- .../client/renderer/GameRenderer.java.patch | 118 +-- .../renderer/ItemBlockRenderTypes.java.patch | 66 +- .../renderer/ItemInHandRenderer.java.patch | 58 +- .../renderer/ItemModelShaper.java.patch | 6 +- .../client/renderer/LevelRenderer.java.patch | 288 +++---- .../client/renderer/LightTexture.java.patch | 6 +- .../client/renderer/PostChain.java.patch | 20 +- .../client/renderer/RenderType.java.patch | 34 +- .../renderer/ScreenEffectRenderer.java.patch | 46 +- .../client/renderer/ShaderInstance.java.patch | 46 +- .../client/renderer/Sheets.java.patch | 22 +- .../SpriteCoordinateExpander.java.patch | 38 +- .../block/BlockModelShaper.java.patch | 12 +- .../block/BlockRenderDispatcher.java.patch | 52 +- .../block/LiquidBlockRenderer.java.patch | 72 +- .../block/ModelBlockRenderer.java.patch | 124 +-- .../renderer/block/model/BakedQuad.java.patch | 22 +- .../block/model/BlockElement.java.patch | 24 +- .../block/model/BlockElementFace.java.patch | 20 +- .../block/model/BlockModel.java.patch | 66 +- .../block/model/FaceBakery.java.patch | 8 +- .../block/model/ItemModelGenerator.java.patch | 6 +- .../block/model/ItemOverrides.java.patch | 22 +- .../block/model/ItemTransform.java.patch | 32 +- .../block/model/ItemTransforms.java.patch | 54 +- .../block/model/MultiVariant.java.patch | 8 +- .../BlockEntityRenderers.java.patch | 8 +- .../blockentity/ChestRenderer.java.patch | 14 +- .../blockentity/PistonHeadRenderer.java.patch | 12 +- .../blockentity/SkullBlockRenderer.java.patch | 6 +- .../chunk/RenderChunkRegion.java.patch | 8 +- .../chunk/SectionRenderDispatcher.java.patch | 82 +- .../renderer/culling/Frustum.java.patch | 4 +- .../renderer/entity/BoatRenderer.java.patch | 14 +- .../entity/EntityRenderDispatcher.java.patch | 34 +- .../renderer/entity/EntityRenderer.java.patch | 20 +- .../entity/FallingBlockRenderer.java.patch | 18 +- .../entity/FishingHookRenderer.java.patch | 8 +- .../entity/ItemEntityRenderer.java.patch | 54 +- .../entity/ItemFrameRenderer.java.patch | 52 +- .../renderer/entity/ItemRenderer.java.patch | 44 +- .../entity/LivingEntityRenderer.java.patch | 40 +- .../entity/layers/ElytraLayer.java.patch | 24 +- .../layers/HumanoidArmorLayer.java.patch | 70 +- .../entity/player/PlayerRenderer.java.patch | 32 +- .../renderer/item/ItemProperties.java.patch | 10 +- .../texture/AbstractTexture.java.patch | 12 +- .../texture/MipmapGenerator.java.patch | 14 +- .../texture/SpriteContents.java.patch | 50 +- .../renderer/texture/SpriteLoader.java.patch | 14 +- .../renderer/texture/Stitcher.java.patch | 14 +- .../renderer/texture/TextureAtlas.java.patch | 12 +- .../texture/TextureAtlasSprite.java.patch | 8 +- .../texture/TextureManager.java.patch | 8 +- .../atlas/SpriteResourceLoader.java.patch | 8 +- .../language/ClientLanguage.java.patch | 6 +- .../client/resources/language/I18n.java.patch | 6 +- .../language/LanguageManager.java.patch | 16 +- .../resources/model/BakedModel.java.patch | 14 +- .../resources/model/ModelBaker.java.patch | 4 +- .../resources/model/ModelBakery.java.patch | 40 +- .../resources/model/ModelManager.java.patch | 74 +- .../model/MultiPartBakedModel.java.patch | 54 +- .../model/SimpleBakedModel.java.patch | 32 +- .../model/WeightedBakedModel.java.patch | 42 +- .../resources/sounds/SoundInstance.java.patch | 2 +- .../client/server/IntegratedServer.java.patch | 26 +- .../server/LanServerDetection.java.patch | 18 +- .../client/server/LanServerPinger.java.patch | 20 +- .../client/sounds/SoundEngine.java.patch | 48 +- .../commands/CommandSourceStack.java.patch | 6 +- .../minecraft/commands/Commands.java.patch | 36 +- .../arguments/EntityArgument.java.patch | 4 +- .../arguments/MessageArgument.java.patch | 8 +- .../arguments/ObjectiveArgument.java.patch | 14 +- .../ResourceLocationArgument.java.patch | 18 +- .../arguments/TeamArgument.java.patch | 8 +- .../coordinates/BlockPosArgument.java.patch | 16 +- .../selector/EntitySelector.java.patch | 8 +- .../selector/EntitySelectorParser.java.patch | 14 +- .../ArgumentTypeInfos.java.patch | 28 +- .../net/minecraft/core/Holder.java.patch | 16 +- .../net/minecraft/core/HolderSet.java.patch | 14 +- .../minecraft/core/MappedRegistry.java.patch | 36 +- .../minecraft/core/RegistryCodecs.java.patch | 6 +- .../core/RegistrySetBuilder.java.patch | 24 +- .../core/RegistrySynchronization.java.patch | 8 +- .../BoatDispenseItemBehavior.java.patch | 34 +- .../dispenser/DispenseItemBehavior.java.patch | 34 +- .../particles/BlockParticleOption.java.patch | 4 +- .../particles/ItemParticleOption.java.patch | 8 +- .../registries/BuiltInRegistries.java.patch | 240 +++--- .../minecraft/data/DataGenerator.java.patch | 32 +- .../net/minecraft/data/HashCache.java.patch | 30 +- .../net/minecraft/data/Main.java.patch | 8 +- .../AdvancementProvider.java.patch | 4 +- .../data/loot/BlockLootSubProvider.java.patch | 16 +- .../loot/EntityLootSubProvider.java.patch | 46 +- .../data/loot/LootTableProvider.java.patch | 26 +- .../data/recipes/RecipeProvider.java.patch | 10 +- .../RegistriesDatapackGenerator.java.patch | 38 +- .../registries/VanillaRegistries.java.patch | 8 +- .../tags/BannerPatternTagsProvider.java.patch | 6 +- .../data/tags/BiomeTagsProvider.java.patch | 6 +- .../tags/CatVariantTagsProvider.java.patch | 6 +- .../tags/DamageTypeTagsProvider.java.patch | 6 +- .../tags/EntityTypeTagsProvider.java.patch | 6 +- ...evelGeneratorPresetTagsProvider.java.patch | 6 +- .../data/tags/FluidTagsProvider.java.patch | 6 +- .../tags/GameEventTagsProvider.java.patch | 8 +- .../tags/InstrumentTagsProvider.java.patch | 6 +- .../IntrinsicHolderTagsProvider.java.patch | 24 +- .../data/tags/ItemTagsProvider.java.patch | 14 +- .../PaintingVariantTagsProvider.java.patch | 6 +- .../data/tags/PoiTypeTagsProvider.java.patch | 6 +- .../tags/StructureTagsProvider.java.patch | 6 +- .../data/tags/TagsProvider.java.patch | 82 +- .../tags/WorldPresetTagsProvider.java.patch | 6 +- .../data/worldgen/BootstapContext.java.patch | 2 +- .../worldgen/biome/OverworldBiomes.java.patch | 6 +- .../gametest/framework/GameTest.java.patch | 6 +- .../framework/GameTestRegistry.java.patch | 38 +- .../framework/GameTestServer.java.patch | 16 +- .../framework/StructureUtils.java.patch | 6 +- .../net/minecraft/locale/Language.java.patch | 14 +- .../net/minecraft/nbt/CompoundTag.java.patch | 24 +- .../net/minecraft/nbt/NbtAccounter.java.patch | 8 +- .../net/minecraft/nbt/NbtIo.java.patch | 12 +- .../net/minecraft/nbt/StringTag.java.patch | 8 +- .../network/CompressionEncoder.java.patch | 16 +- .../minecraft/network/Connection.java.patch | 56 +- .../network/ConnectionProtocol.java.patch | 436 +++++------ .../network/FriendlyByteBuf.java.patch | 30 +- .../contents/TranslatableContents.java.patch | 2 +- .../ClientboundCustomPayloadPacket.java.patch | 18 +- .../ServerboundCustomPayloadPacket.java.patch | 18 +- .../common/custom/DiscardedPayload.java.patch | 12 +- ...ServerboundContainerClickPacket.java.patch | 12 +- ...rboundSetCreativeModeSlotPacket.java.patch | 10 +- .../ClientboundCustomQueryPacket.java.patch | 18 +- ...verboundCustomQueryAnswerPacket.java.patch | 20 +- .../DiscardedQueryAnswerPayload.java.patch | 4 +- .../custom/DiscardedQueryPayload.java.patch | 12 +- ...ClientboundStatusResponsePacket.java.patch | 16 +- .../protocol/status/ServerStatus.java.patch | 12 +- .../syncher/EntityDataSerializers.java.patch | 20 +- .../syncher/SynchedEntityData.java.patch | 12 +- .../recipebook/PlaceRecipe.java.patch | 6 +- .../resources/HolderSetCodec.java.patch | 30 +- .../resources/RegistryDataLoader.java.patch | 10 +- .../resources/RegistryOps.java.patch | 14 +- .../resources/ResourceKey.java.patch | 18 +- .../resources/ResourceLocation.java.patch | 6 +- .../net/minecraft/server/Bootstrap.java.patch | 16 +- .../net/minecraft/server/Eula.java.patch | 8 +- .../net/minecraft/server/Main.java.patch | 68 +- .../server/MinecraftServer.java.patch | 186 ++--- .../server/PlayerAdvancements.java.patch | 30 +- .../ReloadableServerResources.java.patch | 52 +- .../ServerAdvancementManager.java.patch | 22 +- .../minecraft/server/WorldLoader.java.patch | 12 +- .../AdvancementVisibilityEvaluator.java.patch | 6 +- .../commands/SpreadPlayersCommand.java.patch | 6 +- .../commands/TeleportCommand.java.patch | 8 +- .../dedicated/DedicatedServer.java.patch | 42 +- .../dedicated/ServerWatchdog.java.patch | 2 +- .../server/dedicated/Settings.java.patch | 8 +- .../server/gui/MinecraftServerGui.java.patch | 10 +- .../server/level/ChunkHolder.java.patch | 10 +- .../server/level/ChunkMap.java.patch | 58 +- .../server/level/DistanceManager.java.patch | 48 +- .../server/level/ServerChunkCache.java.patch | 30 +- .../server/level/ServerEntity.java.patch | 46 +- .../server/level/ServerLevel.java.patch | 170 ++--- .../server/level/ServerPlayer.java.patch | 252 +++---- .../level/ServerPlayerGameMode.java.patch | 118 +-- .../minecraft/server/level/Ticket.java.patch | 28 +- .../server/level/WorldGenRegion.java.patch | 8 +- .../network/ConfigurationTask.java.patch | 6 +- ...rverHandshakePacketListenerImpl.java.patch | 8 +- .../ServerCommonPacketListenerImpl.java.patch | 12 +- ...ConfigurationPacketListenerImpl.java.patch | 52 +- .../ServerConnectionListener.java.patch | 22 +- .../ServerGamePacketListenerImpl.java.patch | 98 +-- ...rverHandshakePacketListenerImpl.java.patch | 20 +- .../ServerLoginPacketListenerImpl.java.patch | 22 +- .../ServerStatusPacketListenerImpl.java.patch | 22 +- .../packs/AbstractPackResources.java.patch | 6 +- .../server/packs/PackResources.java.patch | 4 +- .../server/packs/repository/Pack.java.patch | 38 +- .../repository/PackRepository.java.patch | 16 +- .../repository/ServerPacksSource.java.patch | 8 +- .../FallbackResourceManager.java.patch | 10 +- .../ReloadableResourceManager.java.patch | 8 +- ...impleJsonResourceReloadListener.java.patch | 2 +- .../server/players/PlayerList.java.patch | 96 +-- .../server/rcon/RconConsoleSource.java.patch | 8 +- .../server/rcon/thread/RconClient.java.patch | 6 +- .../stats/RecipeBookSettings.java.patch | 10 +- .../net/minecraft/tags/BlockTags.java.patch | 6 +- .../net/minecraft/tags/FluidTags.java.patch | 6 +- .../net/minecraft/tags/ItemTags.java.patch | 6 +- .../net/minecraft/tags/TagBuilder.java.patch | 8 +- .../net/minecraft/tags/TagEntry.java.patch | 8 +- .../net/minecraft/tags/TagFile.java.patch | 14 +- .../net/minecraft/tags/TagLoader.java.patch | 30 +- .../net/minecraft/tags/TagManager.java.patch | 10 +- .../net/minecraft/util/SpawnUtil.java.patch | 8 +- .../StructuresBecomeConfiguredFix.java.patch | 4 +- .../util/datafix/schemas/V2832.java.patch | 14 +- .../world/effect/MobEffect.java.patch | 16 +- .../world/effect/MobEffectInstance.java.patch | 42 +- .../minecraft/world/entity/Entity.java.patch | 520 ++++++------- .../world/entity/EntityType.java.patch | 92 +-- .../world/entity/ExperienceOrb.java.patch | 44 +- .../world/entity/FlyingMob.java.patch | 20 +- .../world/entity/LightningBolt.java.patch | 16 +- .../world/entity/LivingEntity.java.patch | 710 +++++++++--------- .../net/minecraft/world/entity/Mob.java.patch | 88 +-- .../world/entity/MobCategory.java.patch | 20 +- .../world/entity/Shearable.java.patch | 4 +- .../world/entity/SpawnPlacements.java.patch | 20 +- .../world/entity/TamableAnimal.java.patch | 18 +- .../world/entity/ai/Brain.java.patch | 36 +- .../attributes/AttributeSupplier.java.patch | 20 +- .../attributes/DefaultAttributes.java.patch | 16 +- .../ai/behavior/CrossbowAttack.java.patch | 46 +- .../ai/behavior/HarvestFarmland.java.patch | 16 +- .../ai/behavior/StartAttacking.java.patch | 8 +- .../world/entity/ai/behavior/Swim.java.patch | 8 +- .../entity/ai/control/MoveControl.java.patch | 14 +- .../entity/ai/goal/BreakDoorGoal.java.patch | 10 +- .../entity/ai/goal/EatBlockGoal.java.patch | 24 +- .../world/entity/ai/goal/FloatGoal.java.patch | 8 +- .../entity/ai/goal/MeleeAttackGoal.java.patch | 38 +- .../ai/goal/RangedBowAttackGoal.java.patch | 28 +- .../goal/RangedCrossbowAttackGoal.java.patch | 32 +- .../entity/ai/goal/RemoveBlockGoal.java.patch | 14 +- .../ai/goal/RunAroundLikeCrazyGoal.java.patch | 10 +- .../ai/navigation/PathNavigation.java.patch | 24 +- .../WallClimberNavigation.java.patch | 12 +- .../entity/ai/village/VillageSiege.java.patch | 20 +- .../entity/ai/village/poi/PoiTypes.java.patch | 28 +- .../world/entity/animal/Animal.java.patch | 16 +- .../world/entity/animal/Bee.java.patch | 12 +- .../world/entity/animal/Cat.java.patch | 24 +- .../world/entity/animal/Fox.java.patch | 58 +- .../entity/animal/MushroomCow.java.patch | 42 +- .../world/entity/animal/Ocelot.java.patch | 16 +- .../world/entity/animal/Parrot.java.patch | 10 +- .../world/entity/animal/Pig.java.patch | 16 +- .../world/entity/animal/Rabbit.java.patch | 8 +- .../world/entity/animal/Sheep.java.patch | 38 +- .../world/entity/animal/SnowGolem.java.patch | 54 +- .../world/entity/animal/Wolf.java.patch | 36 +- .../entity/animal/allay/Allay.java.patch | 10 +- .../entity/animal/camel/Camel.java.patch | 10 +- .../animal/horse/AbstractHorse.java.patch | 46 +- .../entity/animal/horse/Horse.java.patch | 8 +- .../animal/horse/SkeletonTrapGoal.java.patch | 14 +- .../entity/animal/sniffer/Sniffer.java.patch | 6 +- .../entity/boss/EnderDragonPart.java.patch | 14 +- .../boss/enderdragon/EnderDragon.java.patch | 72 +- .../entity/boss/wither/WitherBoss.java.patch | 26 +- .../entity/decoration/ArmorStand.java.patch | 12 +- .../decoration/HangingEntity.java.patch | 8 +- .../entity/item/FallingBlockEntity.java.patch | 20 +- .../world/entity/item/ItemEntity.java.patch | 152 ++-- .../monster/AbstractSkeleton.java.patch | 32 +- .../monster/CrossbowAttackMob.java.patch | 14 +- .../world/entity/monster/EnderMan.java.patch | 74 +- .../world/entity/monster/Evoker.java.patch | 8 +- .../entity/monster/Illusioner.java.patch | 18 +- .../world/entity/monster/MagmaCube.java.patch | 22 +- .../world/entity/monster/Monster.java.patch | 14 +- .../world/entity/monster/Pillager.java.patch | 10 +- .../world/entity/monster/Ravager.java.patch | 8 +- .../world/entity/monster/Shulker.java.patch | 14 +- .../entity/monster/Silverfish.java.patch | 24 +- .../world/entity/monster/Slime.java.patch | 14 +- .../world/entity/monster/Spider.java.patch | 10 +- .../world/entity/monster/Zombie.java.patch | 88 +-- .../entity/monster/ZombieVillager.java.patch | 18 +- .../entity/monster/hoglin/Hoglin.java.patch | 18 +- .../monster/piglin/AbstractPiglin.java.patch | 18 +- .../entity/monster/piglin/Piglin.java.patch | 22 +- .../entity/monster/piglin/PiglinAi.java.patch | 42 +- ...opHoldingItemIfNoLongerAdmiring.java.patch | 10 +- .../entity/npc/AbstractVillager.java.patch | 14 +- .../world/entity/npc/CatSpawner.java.patch | 8 +- .../world/entity/npc/Villager.java.patch | 42 +- .../world/entity/player/Inventory.java.patch | 38 +- .../world/entity/player/Player.java.patch | 380 +++++----- .../projectile/AbstractArrow.java.patch | 50 +- .../AbstractHurtingProjectile.java.patch | 8 +- .../FireworkRocketEntity.java.patch | 12 +- .../entity/projectile/FishingHook.java.patch | 54 +- .../projectile/LargeFireball.java.patch | 14 +- .../entity/projectile/LlamaSpit.java.patch | 14 +- .../entity/projectile/Projectile.java.patch | 4 +- .../projectile/ProjectileUtil.java.patch | 14 +- .../projectile/ShulkerBullet.java.patch | 8 +- .../projectile/SmallFireball.java.patch | 16 +- .../projectile/ThrowableProjectile.java.patch | 6 +- .../projectile/ThrownEnderpearl.java.patch | 30 +- .../entity/projectile/WitherSkull.java.patch | 8 +- .../world/entity/raid/Raid.java.patch | 12 +- .../vehicle/AbstractMinecart.java.patch | 198 ++--- .../AbstractMinecartContainer.java.patch | 14 +- .../world/entity/vehicle/Boat.java.patch | 78 +- .../world/entity/vehicle/ChestBoat.java.patch | 8 +- .../entity/vehicle/ContainerEntity.java.patch | 8 +- .../world/entity/vehicle/Minecart.java.patch | 10 +- .../vehicle/MinecartCommandBlock.java.patch | 8 +- .../entity/vehicle/MinecartFurnace.java.patch | 16 +- .../entity/vehicle/MinecartSpawner.java.patch | 6 +- .../minecraft/world/food/FoodData.java.patch | 10 +- .../world/food/FoodProperties.java.patch | 70 +- .../AbstractContainerMenu.java.patch | 56 +- .../inventory/AbstractFurnaceMenu.java.patch | 8 +- .../world/inventory/AnvilMenu.java.patch | 54 +- .../world/inventory/BeaconMenu.java.patch | 16 +- .../inventory/BrewingStandMenu.java.patch | 28 +- .../inventory/EnchantmentMenu.java.patch | 50 +- .../inventory/FurnaceResultSlot.java.patch | 4 +- .../world/inventory/GrindstoneMenu.java.patch | 92 +-- .../world/inventory/InventoryMenu.java.patch | 8 +- .../world/inventory/MenuType.java.patch | 16 +- .../world/inventory/RecipeBookMenu.java.patch | 8 +- .../world/inventory/ResultSlot.java.patch | 18 +- .../minecraft/world/inventory/Slot.java.patch | 12 +- .../minecraft/world/item/ArmorItem.java.patch | 10 +- .../minecraft/world/item/ArrowItem.java.patch | 4 +- .../minecraft/world/item/AxeItem.java.patch | 26 +- .../world/item/BannerItem.java.patch | 8 +- .../minecraft/world/item/BlockItem.java.patch | 34 +- .../world/item/BoneMealItem.java.patch | 24 +- .../minecraft/world/item/BowItem.java.patch | 48 +- .../world/item/BucketItem.java.patch | 82 +- .../world/item/BundleItem.java.patch | 16 +- .../world/item/ChorusFruitItem.java.patch | 14 +- .../world/item/CreativeModeTab.java.patch | 78 +- .../world/item/CreativeModeTabs.java.patch | 22 +- .../world/item/CrossbowItem.java.patch | 8 +- .../world/item/DiggerItem.java.patch | 16 +- .../item/DispensibleContainerItem.java.patch | 4 +- .../minecraft/world/item/DyeColor.java.patch | 26 +- .../world/item/ElytraItem.java.patch | 14 +- .../world/item/FireworkRocketItem.java.patch | 14 +- .../world/item/FireworkStarItem.java.patch | 8 +- .../world/item/FishingRodItem.java.patch | 2 +- .../minecraft/world/item/HoeItem.java.patch | 20 +- .../world/item/HorseArmorItem.java.patch | 22 +- .../net/minecraft/world/item/Item.java.patch | 126 ++-- .../world/item/ItemDisplayContext.java.patch | 26 +- .../minecraft/world/item/ItemStack.java.patch | 240 +++--- .../net/minecraft/world/item/Items.java.patch | 10 +- .../minecraft/world/item/MapItem.java.patch | 12 +- .../world/item/MilkBucketItem.java.patch | 20 +- .../world/item/MinecartItem.java.patch | 24 +- .../world/item/MobBucketItem.java.patch | 38 +- .../world/item/PickaxeItem.java.patch | 2 +- .../minecraft/world/item/Rarity.java.patch | 8 +- .../world/item/RecordItem.java.patch | 32 +- .../world/item/ShearsItem.java.patch | 24 +- .../world/item/ShieldItem.java.patch | 4 +- .../world/item/ShovelItem.java.patch | 14 +- .../world/item/SpawnEggItem.java.patch | 40 +- .../item/StandingAndWallBlockItem.java.patch | 6 +- .../minecraft/world/item/SwordItem.java.patch | 4 +- .../net/minecraft/world/item/Tier.java.patch | 8 +- .../net/minecraft/world/item/Tiers.java.patch | 4 +- .../world/item/alchemy/Potion.java.patch | 4 +- .../item/alchemy/PotionBrewing.java.patch | 78 +- .../crafting/BannerDuplicateRecipe.java.patch | 12 +- .../crafting/BookCloningRecipe.java.patch | 10 +- .../crafting/FireworkStarRecipe.java.patch | 4 +- .../world/item/crafting/Ingredient.java.patch | 54 +- .../world/item/crafting/Recipe.java.patch | 17 +- .../item/crafting/RecipeManager.java.patch | 20 +- .../item/crafting/RecipeSerializer.java.patch | 6 +- .../item/crafting/RepairItemRecipe.java.patch | 32 +- .../item/crafting/ShapedRecipe.java.patch | 24 +- .../item/crafting/ShapelessRecipe.java.patch | 34 +- .../crafting/ShulkerBoxColoring.java.patch | 28 +- .../SmithingTransformRecipe.java.patch | 6 +- .../crafting/SmithingTrimRecipe.java.patch | 6 +- .../enchantment/DiggingEnchantment.java.patch | 6 +- .../item/enchantment/Enchantment.java.patch | 16 +- .../EnchantmentCategory.java.patch | 6 +- .../enchantment/EnchantmentHelper.java.patch | 52 +- .../FrostWalkerEnchantment.java.patch | 14 +- .../item/trading/MerchantOffer.java.patch | 16 +- .../world/level/BaseSpawner.java.patch | 18 +- .../world/level/BlockAndTintGetter.java.patch | 4 +- .../world/level/BlockGetter.java.patch | 12 +- .../world/level/ClipContext.java.patch | 18 +- .../world/level/DataPackConfig.java.patch | 14 +- .../world/level/Explosion.java.patch | 52 +- .../ExplosionDamageCalculator.java.patch | 8 +- .../level/ForcedChunksSavedData.java.patch | 14 +- .../minecraft/world/level/Level.java.patch | 144 ++-- .../world/level/LevelReader.java.patch | 6 +- .../world/level/LevelSettings.java.patch | 54 +- .../world/level/NaturalSpawner.java.patch | 50 +- .../world/level/SignalGetter.java.patch | 12 +- .../world/level/biome/Biome.java.patch | 38 +- .../biome/BiomeGenerationSettings.java.patch | 20 +- .../biome/BiomeSpecialEffects.java.patch | 22 +- .../level/biome/MobSpawnSettings.java.patch | 26 +- .../level/block/BambooSaplingBlock.java.patch | 8 +- .../level/block/BambooStalkBlock.java.patch | 32 +- .../level/block/BaseFireBlock.java.patch | 12 +- .../level/block/BaseRailBlock.java.patch | 50 +- .../world/level/block/BeehiveBlock.java.patch | 26 +- .../world/level/block/Block.java.patch | 130 ++-- .../world/level/block/Blocks.java.patch | 30 +- .../world/level/block/BucketPickup.java.patch | 4 +- .../world/level/block/BushBlock.java.patch | 18 +- .../world/level/block/CactusBlock.java.patch | 40 +- .../level/block/CampfireBlock.java.patch | 8 +- .../world/level/block/ChestBlock.java.patch | 10 +- .../level/block/ChorusFlowerBlock.java.patch | 10 +- .../world/level/block/CocoaBlock.java.patch | 12 +- .../level/block/ComparatorBlock.java.patch | 10 +- .../block/ConcretePowderBlock.java.patch | 42 +- .../world/level/block/CoralBlock.java.patch | 10 +- .../world/level/block/CropBlock.java.patch | 32 +- .../level/block/DeadBushBlock.java.patch | 4 +- .../level/block/DetectorRailBlock.java.patch | 18 +- .../world/level/block/DiodeBlock.java.patch | 12 +- .../level/block/DoublePlantBlock.java.patch | 8 +- .../block/DropExperienceBlock.java.patch | 8 +- .../world/level/block/DropperBlock.java.patch | 12 +- .../block/EnchantmentTableBlock.java.patch | 8 +- .../world/level/block/FarmBlock.java.patch | 30 +- .../level/block/FenceGateBlock.java.patch | 38 +- .../world/level/block/FireBlock.java.patch | 144 ++-- .../level/block/FlowerPotBlock.java.patch | 46 +- .../world/level/block/FungusBlock.java.patch | 8 +- .../block/GrowingPlantHeadBlock.java.patch | 14 +- .../world/level/block/LeavesBlock.java.patch | 6 +- .../world/level/block/LiquidBlock.java.patch | 60 +- .../level/block/MushroomBlock.java.patch | 14 +- .../level/block/NetherWartBlock.java.patch | 12 +- .../world/level/block/NoteBlock.java.patch | 24 +- .../level/block/PowderSnowBlock.java.patch | 6 +- .../level/block/PoweredRailBlock.java.patch | 52 +- .../world/level/block/PumpkinBlock.java.patch | 12 +- .../world/level/block/RailBlock.java.patch | 6 +- .../world/level/block/RailState.java.patch | 44 +- .../level/block/RedStoneOreBlock.java.patch | 14 +- .../level/block/RedStoneWireBlock.java.patch | 20 +- .../world/level/block/SaplingBlock.java.patch | 6 +- .../level/block/SculkCatalystBlock.java.patch | 8 +- .../level/block/SculkSensorBlock.java.patch | 6 +- .../level/block/SculkShriekerBlock.java.patch | 6 +- .../level/block/SeagrassBlock.java.patch | 4 +- .../world/level/block/SoundType.java.patch | 8 +- .../world/level/block/SpawnerBlock.java.patch | 12 +- .../world/level/block/SpongeBlock.java.patch | 18 +- .../block/SpreadingSnowyDirtBlock.java.patch | 10 +- .../world/level/block/StairBlock.java.patch | 18 +- .../world/level/block/StemBlock.java.patch | 36 +- .../level/block/StemGrownBlock.java.patch | 8 +- .../level/block/SugarCaneBlock.java.patch | 40 +- .../block/SweetBerryBushBlock.java.patch | 14 +- .../level/block/TallGrassBlock.java.patch | 4 +- .../world/level/block/TntBlock.java.patch | 64 +- .../level/block/TrapDoorBlock.java.patch | 10 +- .../level/block/TripWireBlock.java.patch | 10 +- .../level/block/TripWireHookBlock.java.patch | 8 +- .../level/block/TurtleEggBlock.java.patch | 2 +- .../world/level/block/VineBlock.java.patch | 20 +- .../AbstractFurnaceBlockEntity.java.patch | 170 ++--- .../BaseContainerBlockEntity.java.patch | 4 +- .../block/entity/BeaconBlockEntity.java.patch | 12 +- .../level/block/entity/BlockEntity.java.patch | 42 +- .../entity/BrewingStandBlockEntity.java.patch | 46 +- .../block/entity/ChestBlockEntity.java.patch | 20 +- .../ChiseledBookShelfBlockEntity.java.patch | 6 +- .../entity/ConduitBlockEntity.java.patch | 8 +- .../block/entity/HopperBlockEntity.java.patch | 21 +- .../entity/ShulkerBoxBlockEntity.java.patch | 12 +- .../block/entity/SignBlockEntity.java.patch | 2 +- .../grower/AbstractMegaTreeGrower.java.patch | 2 +- .../grower/AbstractTreeGrower.java.patch | 2 +- .../block/piston/PistonBaseBlock.java.patch | 20 +- .../piston/PistonMovingBlockEntity.java.patch | 8 +- .../piston/PistonStructureResolver.java.patch | 58 +- .../block/state/BlockBehaviour.java.patch | 100 +-- .../level/block/state/BlockState.java.patch | 2 +- .../world/level/chunk/ChunkAccess.java.patch | 30 +- .../level/chunk/ImposterProtoChunk.java.patch | 8 +- .../world/level/chunk/LevelChunk.java.patch | 118 +-- .../level/chunk/PalettedContainer.java.patch | 4 +- .../chunk/storage/ChunkSerializer.java.patch | 20 +- .../chunk/storage/EntityStorage.java.patch | 6 +- .../dimension/end/EndDragonFight.java.patch | 6 +- .../PersistentEntitySectionManager.java.patch | 50 +- .../TransientEntitySectionManager.java.patch | 28 +- .../level/levelgen/Beardifier.java.patch | 6 +- .../levelgen/DebugLevelSource.java.patch | 8 +- .../level/levelgen/PhantomSpawner.java.patch | 38 +- .../level/levelgen/feature/Feature.java.patch | 8 +- .../feature/MonsterRoomFeature.java.patch | 4 +- .../TreeConfiguration.java.patch | 8 +- .../AlterGroundDecorator.java.patch | 8 +- .../trunkplacers/TrunkPlacer.java.patch | 8 +- .../levelgen/structure/Structure.java.patch | 22 +- .../structure/StructurePiece.java.patch | 10 +- .../structure/StructureStart.java.patch | 14 +- .../StructureProcessor.java.patch | 8 +- .../StructureTemplate.java.patch | 84 +-- .../lighting/BlockLightEngine.java.patch | 18 +- .../level/lighting/LightEngine.java.patch | 4 +- .../level/material/FlowingFluid.java.patch | 26 +- .../world/level/material/Fluid.java.patch | 10 +- .../level/material/FluidState.java.patch | 12 +- .../world/level/material/LavaFluid.java.patch | 48 +- .../AmphibiousNodeEvaluator.java.patch | 8 +- .../pathfinder/BlockPathTypes.java.patch | 4 +- .../pathfinder/WalkNodeEvaluator.java.patch | 48 +- .../level/portal/PortalForcer.java.patch | 6 +- .../world/level/portal/PortalShape.java.patch | 12 +- .../storage/DimensionDataStorage.java.patch | 12 +- .../storage/LevelStorageSource.java.patch | 28 +- .../level/storage/LevelSummary.java.patch | 2 +- .../storage/PlayerDataStorage.java.patch | 18 +- .../level/storage/PrimaryLevelData.java.patch | 26 +- .../level/storage/loot/LootContext.java.patch | 40 +- .../level/storage/loot/LootParams.java.patch | 6 +- .../level/storage/loot/LootTable.java.patch | 54 +- .../LootingEnchantFunction.java.patch | 6 +- .../functions/SmeltItemFunction.java.patch | 8 +- .../LootContextParamSets.java.patch | 20 +- ...andomChanceWithLootingCondition.java.patch | 6 +- .../nbt/ContextNbtProvider.java.patch | 4 +- 641 files changed, 9696 insertions(+), 9678 deletions(-) diff --git a/build.gradle b/build.gradle index 82e3b67be8..714be13aa5 100644 --- a/build.gradle +++ b/build.gradle @@ -16,6 +16,7 @@ import net.minecraftforge.gradle.common.tasks.CheckJarCompatibility import net.minecraftforge.gradle.common.tasks.DownloadMavenArtifact import net.minecraftforge.gradle.common.tasks.ExtractInheritance import net.minecraftforge.gradle.common.tasks.SignJar +import net.minecraftforge.gradle.patcher.tasks.GeneratePatches import net.minecraftforge.gradle.userdev.tasks.RenameJar import org.apache.tools.ant.filters.ReplaceTokens import org.gradle.plugins.ide.eclipse.model.SourceFolder @@ -654,7 +655,7 @@ project(':forge') { parent = project(':clean') patches = file("$rootDir/patches/minecraft") patchedSrc = file('src/main/java') - srgPatches = true + srgPatches = false accessTransformers.from file("$rootDir/src/main/resources/META-INF/accesstransformer.cfg") sideAnnotationStrippers.from file("$rootDir/src/main/resources/forge.sas") @@ -814,6 +815,33 @@ project(':forge') { } } } + + afterEvaluate { + if (!patcher.srgPatches) { + srg2mcpClean { + dependsOn = [] + input = project(':mcp').setupMCP.output + } + userdevJar { + onlyIf = { t -> true } + } + def patches = project.file('build/genPatchesForUserdev/output/') + patches.mkdirs() + def genPatchesForUserdev = tasks.register('genPatchesForUserdev', GeneratePatches){ + base = project(':mcp').setupMCP.output + modified = applyRangeMapBase.output + originalPrefix = genPatches.originalPrefix + modifiedPrefix = genPatches.modifiedPrefix + output = patches + autoHeader true + lineEnding = '\n' + } + bakePatches { + dependsOn = [] + input = genPatchesForUserdev.get().output + } + } + } ext { MANIFESTS = [ @@ -1220,7 +1248,7 @@ project(':forge') { ], [ sides: ['client'], jar: JAR_SPLITTER, - classpath: JAR_SPLITER_CLASSPATH, + classpath: JAR_SPLITTER_CLASSPATH, args: [ '--input', '{MINECRAFT_JAR}', '--slim', '{MC_SLIM}', diff --git a/patches/minecraft/com/mojang/blaze3d/pipeline/RenderTarget.java.patch b/patches/minecraft/com/mojang/blaze3d/pipeline/RenderTarget.java.patch index 299bd9f951..de00a9db4f 100644 --- a/patches/minecraft/com/mojang/blaze3d/pipeline/RenderTarget.java.patch +++ b/patches/minecraft/com/mojang/blaze3d/pipeline/RenderTarget.java.patch @@ -5,30 +5,30 @@ GlStateManager._texParameter(3553, 10242, 33071); GlStateManager._texParameter(3553, 10243, 33071); + if (!stencilEnabled) - GlStateManager._texImage2D(3553, 0, 6402, this.f_83915_, this.f_83916_, 0, 6402, 5126, (IntBuffer)null); + GlStateManager._texImage2D(3553, 0, 6402, this.width, this.height, 0, 6402, 5126, (IntBuffer)null); + else -+ GlStateManager._texImage2D(3553, 0, org.lwjgl.opengl.GL30.GL_DEPTH32F_STENCIL8, this.f_83915_, this.f_83916_, 0, org.lwjgl.opengl.GL30.GL_DEPTH_STENCIL, org.lwjgl.opengl.GL30.GL_FLOAT_32_UNSIGNED_INT_24_8_REV, null); ++ GlStateManager._texImage2D(3553, 0, org.lwjgl.opengl.GL30.GL_DEPTH32F_STENCIL8, this.width, this.height, 0, org.lwjgl.opengl.GL30.GL_DEPTH_STENCIL, org.lwjgl.opengl.GL30.GL_FLOAT_32_UNSIGNED_INT_24_8_REV, null); } - this.m_83936_(9728); + this.setFilterMode(9728); @@ -124,7 +_,14 @@ - GlStateManager._glBindFramebuffer(36160, this.f_83920_); - GlStateManager._glFramebufferTexture2D(36160, 36064, 3553, this.f_83923_, 0); - if (this.f_83919_) { + GlStateManager._glBindFramebuffer(36160, this.frameBufferId); + GlStateManager._glFramebufferTexture2D(36160, 36064, 3553, this.colorTextureId, 0); + if (this.useDepth) { + if(!stencilEnabled) - GlStateManager._glFramebufferTexture2D(36160, 36096, 3553, this.f_83924_, 0); + GlStateManager._glFramebufferTexture2D(36160, 36096, 3553, this.depthBufferId, 0); + else if(net.minecraftforge.common.ForgeConfig.CLIENT.useCombinedDepthStencilAttachment.get()) { -+ GlStateManager._glFramebufferTexture2D(org.lwjgl.opengl.GL30.GL_FRAMEBUFFER, org.lwjgl.opengl.GL30.GL_DEPTH_STENCIL_ATTACHMENT, 3553, this.f_83924_, 0); ++ GlStateManager._glFramebufferTexture2D(org.lwjgl.opengl.GL30.GL_FRAMEBUFFER, org.lwjgl.opengl.GL30.GL_DEPTH_STENCIL_ATTACHMENT, 3553, this.depthBufferId, 0); + } else { -+ GlStateManager._glFramebufferTexture2D(org.lwjgl.opengl.GL30.GL_FRAMEBUFFER, org.lwjgl.opengl.GL30.GL_DEPTH_ATTACHMENT, 3553, this.f_83924_, 0); -+ GlStateManager._glFramebufferTexture2D(org.lwjgl.opengl.GL30.GL_FRAMEBUFFER, org.lwjgl.opengl.GL30.GL_STENCIL_ATTACHMENT, 3553, this.f_83924_, 0); ++ GlStateManager._glFramebufferTexture2D(org.lwjgl.opengl.GL30.GL_FRAMEBUFFER, org.lwjgl.opengl.GL30.GL_DEPTH_ATTACHMENT, 3553, this.depthBufferId, 0); ++ GlStateManager._glFramebufferTexture2D(org.lwjgl.opengl.GL30.GL_FRAMEBUFFER, org.lwjgl.opengl.GL30.GL_STENCIL_ATTACHMENT, 3553, this.depthBufferId, 0); + } } - this.m_83949_(); + this.checkStatus(); @@ -292,4 +_,27 @@ - public int m_83980_() { - return this.f_83924_; + public int getDepthTextureId() { + return this.depthBufferId; } + + /*================================ FORGE START ================================================*/ @@ -42,7 +42,7 @@ + public void enableStencil() { + if(stencilEnabled) return; + stencilEnabled = true; -+ this.m_83941_(f_83917_, f_83918_, net.minecraft.client.Minecraft.f_91002_); ++ this.resize(viewWidth, viewHeight, net.minecraft.client.Minecraft.ON_OSX); + } + + /** diff --git a/patches/minecraft/com/mojang/blaze3d/platform/Window.java.patch b/patches/minecraft/com/mojang/blaze3d/platform/Window.java.patch index ac425d04a3..81fc698a05 100644 --- a/patches/minecraft/com/mojang/blaze3d/platform/Window.java.patch +++ b/patches/minecraft/com/mojang/blaze3d/platform/Window.java.patch @@ -4,25 +4,25 @@ GLFW.glfwWindowHint(139267, 2); GLFW.glfwWindowHint(139272, 204801); GLFW.glfwWindowHint(139270, 1); -- this.f_85349_ = GLFW.glfwCreateWindow(this.f_85359_, this.f_85360_, p_85376_, this.f_85355_ && monitor != null ? monitor.m_84954_() : 0L, 0L); -+ this.f_85349_ = net.minecraftforge.fml.loading.ImmediateWindowHandler.setupMinecraftWindow(()->this.f_85359_, ()->this.f_85360_, ()->p_85376_, ()->this.f_85355_ && monitor != null ? monitor.m_84954_() : 0L); -+ if (!net.minecraftforge.fml.loading.ImmediateWindowHandler.positionWindow(Optional.ofNullable(monitor), w->this.f_85359_ = this.f_85352_ = w, h->this.f_85360_ = this.f_85353_ = h, x->this.f_85357_ = this.f_85350_ = x, y->this.f_85358_ = this.f_85351_ = y)) { +- this.window = GLFW.glfwCreateWindow(this.width, this.height, p_85376_, this.fullscreen && monitor != null ? monitor.getMonitor() : 0L, 0L); ++ this.window = net.minecraftforge.fml.loading.ImmediateWindowHandler.setupMinecraftWindow(()->this.width, ()->this.height, ()->p_85376_, ()->this.fullscreen && monitor != null ? monitor.getMonitor() : 0L); ++ if (!net.minecraftforge.fml.loading.ImmediateWindowHandler.positionWindow(Optional.ofNullable(monitor), w->this.width = this.windowedWidth = w, h->this.height = this.windowedHeight = h, x->this.x = this.windowedX = x, y->this.y = this.windowedY = y)) { if (monitor != null) { - VideoMode videomode = monitor.m_84948_(this.f_85355_ ? this.f_85354_ : Optional.empty()); - this.f_85350_ = this.f_85357_ = monitor.m_84951_() + videomode.m_85332_() / 2 - this.f_85359_ / 2; + VideoMode videomode = monitor.getPreferredVidMode(this.fullscreen ? this.preferredFullscreenVideoMode : Optional.empty()); + this.windowedX = this.x = monitor.getX() + videomode.getWidth() / 2 - this.width / 2; @@ -93,6 +_,7 @@ - this.f_85350_ = this.f_85357_ = aint1[0]; - this.f_85351_ = this.f_85358_ = aint[0]; + this.windowedX = this.x = aint1[0]; + this.windowedY = this.y = aint[0]; } + } - GLFW.glfwMakeContextCurrent(this.f_85349_); + GLFW.glfwMakeContextCurrent(this.window); GL.createCapabilities(); @@ -242,6 +_,7 @@ - GLFW.glfwGetFramebufferSize(this.f_85349_, aint, aint1); - this.f_85361_ = aint[0] > 0 ? aint[0] : 1; - this.f_85362_ = aint1[0] > 0 ? aint1[0] : 1; -+ if (this.f_85362_ == 0 || this.f_85361_==0) net.minecraftforge.fml.loading.ImmediateWindowHandler.updateFBSize(w->this.f_85361_=w, h->this.f_85362_=h); + GLFW.glfwGetFramebufferSize(this.window, aint, aint1); + this.framebufferWidth = aint[0] > 0 ? aint[0] : 1; + this.framebufferHeight = aint1[0] > 0 ? aint1[0] : 1; ++ if (this.framebufferHeight == 0 || this.framebufferWidth==0) net.minecraftforge.fml.loading.ImmediateWindowHandler.updateFBSize(w->this.framebufferWidth=w, h->this.framebufferHeight=h); } - private void m_85427_(long p_85428_, int p_85429_, int p_85430_) { + private void onResize(long p_85428_, int p_85429_, int p_85430_) { diff --git a/patches/minecraft/com/mojang/blaze3d/vertex/BufferBuilder.java.patch b/patches/minecraft/com/mojang/blaze3d/vertex/BufferBuilder.java.patch index c1187c06c3..1509c543ac 100644 --- a/patches/minecraft/com/mojang/blaze3d/vertex/BufferBuilder.java.patch +++ b/patches/minecraft/com/mojang/blaze3d/vertex/BufferBuilder.java.patch @@ -1,17 +1,17 @@ --- a/com/mojang/blaze3d/vertex/BufferBuilder.java +++ b/com/mojang/blaze3d/vertex/BufferBuilder.java @@ -459,4 +_,14 @@ - this.f_276566_ = p_277855_; + this.sorting = p_277855_; } } + + // Forge start + public void putBulkData(ByteBuffer buffer) { -+ m_85722_(buffer.limit() + this.f_85658_.m_86020_()); -+ this.f_85648_.position(this.f_85652_); -+ this.f_85648_.put(buffer); -+ this.f_85648_.position(0); -+ this.f_85654_ += buffer.limit() / this.f_85658_.m_86020_(); -+ this.f_85652_ += buffer.limit(); ++ ensureCapacity(buffer.limit() + this.format.getVertexSize()); ++ this.buffer.position(this.nextElementByte); ++ this.buffer.put(buffer); ++ this.buffer.position(0); ++ this.vertices += buffer.limit() / this.format.getVertexSize(); ++ this.nextElementByte += buffer.limit(); + } } diff --git a/patches/minecraft/com/mojang/blaze3d/vertex/PoseStack.java.patch b/patches/minecraft/com/mojang/blaze3d/vertex/PoseStack.java.patch index 5f6265ad6f..53a7f103c5 100644 --- a/patches/minecraft/com/mojang/blaze3d/vertex/PoseStack.java.patch +++ b/patches/minecraft/com/mojang/blaze3d/vertex/PoseStack.java.patch @@ -6,6 +6,6 @@ @OnlyIn(Dist.CLIENT) -public class PoseStack { +public class PoseStack implements net.minecraftforge.client.extensions.IForgePoseStack { - private final Deque f_85834_ = Util.m_137469_(Queues.newArrayDeque(), (p_85848_) -> { + private final Deque poseStack = Util.make(Queues.newArrayDeque(), (p_85848_) -> { Matrix4f matrix4f = new Matrix4f(); Matrix3f matrix3f = new Matrix3f(); diff --git a/patches/minecraft/com/mojang/blaze3d/vertex/SheetedDecalTextureGenerator.java.patch b/patches/minecraft/com/mojang/blaze3d/vertex/SheetedDecalTextureGenerator.java.patch index 92f367c09b..ed1bfde335 100644 --- a/patches/minecraft/com/mojang/blaze3d/vertex/SheetedDecalTextureGenerator.java.patch +++ b/patches/minecraft/com/mojang/blaze3d/vertex/SheetedDecalTextureGenerator.java.patch @@ -2,10 +2,10 @@ +++ b/com/mojang/blaze3d/vertex/SheetedDecalTextureGenerator.java @@ -46,7 +_,7 @@ - public void m_5752_() { - Vector3f vector3f = this.f_85869_.transform(new Vector3f(this.f_85876_, this.f_85877_, this.f_85878_)); -- Direction direction = Direction.m_122372_(vector3f.x(), vector3f.y(), vector3f.z()); + public void endVertex() { + Vector3f vector3f = this.normalInversePose.transform(new Vector3f(this.nx, this.ny, this.nz)); +- Direction direction = Direction.getNearest(vector3f.x(), vector3f.y(), vector3f.z()); + Direction direction = net.minecraftforge.client.ForgeHooksClient.getNearestStable(vector3f.x(), vector3f.y(), vector3f.z()); - Vector4f vector4f = this.f_85868_.transform(new Vector4f(this.f_85870_, this.f_85871_, this.f_85872_, 1.0F)); + Vector4f vector4f = this.cameraInversePose.transform(new Vector4f(this.x, this.y, this.z, 1.0F)); vector4f.rotateY((float)Math.PI); vector4f.rotateX((-(float)Math.PI / 2F)); diff --git a/patches/minecraft/com/mojang/blaze3d/vertex/VertexConsumer.java.patch b/patches/minecraft/com/mojang/blaze3d/vertex/VertexConsumer.java.patch index 87c6ad23f7..e5d73fa6da 100644 --- a/patches/minecraft/com/mojang/blaze3d/vertex/VertexConsumer.java.patch +++ b/patches/minecraft/com/mojang/blaze3d/vertex/VertexConsumer.java.patch @@ -6,20 +6,20 @@ @OnlyIn(Dist.CLIENT) -public interface VertexConsumer { +public interface VertexConsumer extends net.minecraftforge.client.extensions.IForgeVertexConsumer { - VertexConsumer m_5483_(double p_85945_, double p_85946_, double p_85947_); + VertexConsumer vertex(double p_85945_, double p_85946_, double p_85947_); - VertexConsumer m_6122_(int p_85973_, int p_85974_, int p_85975_, int p_85976_); + VertexConsumer color(int p_85973_, int p_85974_, int p_85975_, int p_85976_); @@ -64,6 +_,10 @@ } - default void m_85995_(PoseStack.Pose p_85996_, BakedQuad p_85997_, float[] p_85998_, float p_85999_, float p_86000_, float p_86001_, int[] p_86002_, int p_86003_, boolean p_86004_) { + default void putBulkData(PoseStack.Pose p_85996_, BakedQuad p_85997_, float[] p_85998_, float p_85999_, float p_86000_, float p_86001_, int[] p_86002_, int p_86003_, boolean p_86004_) { + putBulkData(p_85996_, p_85997_, p_85998_, p_85999_, p_86000_, p_86001_, 1, p_86002_, p_86003_, p_86004_); + } + + default void putBulkData(PoseStack.Pose p_85996_, BakedQuad p_85997_, float[] p_85998_, float p_85999_, float p_86000_, float p_86001_, float alpha, int[] p_86002_, int p_86003_, boolean p_86004_) { float[] afloat = new float[]{p_85998_[0], p_85998_[1], p_85998_[2], p_85998_[3]}; int[] aint = new int[]{p_86002_[0], p_86002_[1], p_86002_[2], p_86002_[3]}; - int[] aint1 = p_85997_.m_111303_(); + int[] aint1 = p_85997_.getVertices(); @@ -99,11 +_,13 @@ f5 = afloat[k] * p_86001_; } @@ -29,10 +29,10 @@ float f9 = bytebuffer.getFloat(16); float f10 = bytebuffer.getFloat(20); Vector4f vector4f = matrix4f.transform(new Vector4f(f, f1, f2, 1.0F)); -- this.m_5954_(vector4f.x(), vector4f.y(), vector4f.z(), f3, f4, f5, 1.0F, f9, f10, p_86003_, l, vector3f.x(), vector3f.y(), vector3f.z()); -+ applyBakedNormals(vector3f, bytebuffer, p_85996_.m_252943_()); +- this.vertex(vector4f.x(), vector4f.y(), vector4f.z(), f3, f4, f5, 1.0F, f9, f10, p_86003_, l, vector3f.x(), vector3f.y(), vector3f.z()); ++ applyBakedNormals(vector3f, bytebuffer, p_85996_.normal()); + float vertexAlpha = p_86004_ ? alpha * (float) (bytebuffer.get(15) & 255) / 255.0F : alpha; -+ this.m_5954_(vector4f.x(), vector4f.y(), vector4f.z(), f3, f4, f5, vertexAlpha, f9, f10, p_86003_, l, vector3f.x(), vector3f.y(), vector3f.z()); ++ this.vertex(vector4f.x(), vector4f.y(), vector4f.z(), f3, f4, f5, vertexAlpha, f9, f10, p_86003_, l, vector3f.x(), vector3f.y(), vector3f.z()); } } diff --git a/patches/minecraft/com/mojang/blaze3d/vertex/VertexFormat.java.patch b/patches/minecraft/com/mojang/blaze3d/vertex/VertexFormat.java.patch index 6b9314c0b1..071270d1d8 100644 --- a/patches/minecraft/com/mojang/blaze3d/vertex/VertexFormat.java.patch +++ b/patches/minecraft/com/mojang/blaze3d/vertex/VertexFormat.java.patch @@ -5,10 +5,10 @@ } } + -+ public ImmutableMap getElementMapping() { return f_166905_; } -+ public int getOffset(int index) { return f_86013_.getInt(index); } -+ public boolean hasPosition() { return f_86012_.stream().anyMatch(e -> e.m_86048_() == VertexFormatElement.Usage.POSITION); } -+ public boolean hasNormal() { return f_86012_.stream().anyMatch(e -> e.m_86048_() == VertexFormatElement.Usage.NORMAL); } -+ public boolean hasColor() { return f_86012_.stream().anyMatch(e -> e.m_86048_() == VertexFormatElement.Usage.COLOR); } -+ public boolean hasUV(int which) { return f_86012_.stream().anyMatch(e -> e.m_86048_() == VertexFormatElement.Usage.UV && e.m_86049_() == which); } ++ public ImmutableMap getElementMapping() { return elementMapping; } ++ public int getOffset(int index) { return offsets.getInt(index); } ++ public boolean hasPosition() { return elements.stream().anyMatch(e -> e.getUsage() == VertexFormatElement.Usage.POSITION); } ++ public boolean hasNormal() { return elements.stream().anyMatch(e -> e.getUsage() == VertexFormatElement.Usage.NORMAL); } ++ public boolean hasColor() { return elements.stream().anyMatch(e -> e.getUsage() == VertexFormatElement.Usage.COLOR); } ++ public boolean hasUV(int which) { return elements.stream().anyMatch(e -> e.getUsage() == VertexFormatElement.Usage.UV && e.getIndex() == which); } } diff --git a/patches/minecraft/com/mojang/blaze3d/vertex/VertexFormatElement.java.patch b/patches/minecraft/com/mojang/blaze3d/vertex/VertexFormatElement.java.patch index f988836eec..cedb5111eb 100644 --- a/patches/minecraft/com/mojang/blaze3d/vertex/VertexFormatElement.java.patch +++ b/patches/minecraft/com/mojang/blaze3d/vertex/VertexFormatElement.java.patch @@ -1,11 +1,11 @@ --- a/com/mojang/blaze3d/vertex/VertexFormatElement.java +++ b/com/mojang/blaze3d/vertex/VertexFormatElement.java @@ -90,6 +_,10 @@ - this.f_86031_.m_166978_(this.f_86032_, p_166964_); + this.usage.clearBufferState(this.index, p_166964_); } + public int getElementCount() { -+ return f_86033_; ++ return count; + } + @OnlyIn(Dist.CLIENT) diff --git a/patches/minecraft/com/mojang/math/Transformation.java.patch b/patches/minecraft/com/mojang/math/Transformation.java.patch index 629e264531..1f58795a6b 100644 --- a/patches/minecraft/com/mojang/math/Transformation.java.patch +++ b/patches/minecraft/com/mojang/math/Transformation.java.patch @@ -6,12 +6,12 @@ -public final class Transformation { +public final class Transformation implements net.minecraftforge.common.extensions.IForgeTransformation { - private final Matrix4f f_121078_; - public static final Codec f_268453_ = RecordCodecBuilder.create((p_269604_) -> { - return p_269604_.group(ExtraCodecs.f_252432_.fieldOf("translation").forGetter((p_269599_) -> { + private final Matrix4f matrix; + public static final Codec CODEC = RecordCodecBuilder.create((p_269604_) -> { + return p_269604_.group(ExtraCodecs.VECTOR3F.fieldOf("translation").forGetter((p_269599_) -> { @@ -156,6 +_,19 @@ public int hashCode() { - return Objects.hash(this.f_121078_); + return Objects.hash(this.matrix); } + + private Matrix3f normalTransform = null; @@ -21,11 +21,11 @@ + } + private void checkNormalTransform() { + if (normalTransform == null) { -+ normalTransform = new Matrix3f(f_121078_); ++ normalTransform = new Matrix3f(matrix); + normalTransform.invert(); + normalTransform.transpose(); + } + } - public Transformation m_175937_(Transformation p_175938_, float p_175939_) { - Vector3f vector3f = this.m_252829_(); + public Transformation slerp(Transformation p_175938_, float p_175939_) { + Vector3f vector3f = this.getTranslation(); diff --git a/patches/minecraft/com/mojang/realmsclient/gui/screens/RealmsGenericErrorScreen.java.patch b/patches/minecraft/com/mojang/realmsclient/gui/screens/RealmsGenericErrorScreen.java.patch index 294c71ecaa..f3f463e97a 100644 --- a/patches/minecraft/com/mojang/realmsclient/gui/screens/RealmsGenericErrorScreen.java.patch +++ b/patches/minecraft/com/mojang/realmsclient/gui/screens/RealmsGenericErrorScreen.java.patch @@ -1,18 +1,18 @@ --- a/com/mojang/realmsclient/gui/screens/RealmsGenericErrorScreen.java +++ b/com/mojang/realmsclient/gui/screens/RealmsGenericErrorScreen.java @@ -61,6 +_,15 @@ - return Component.m_237119_().m_7220_(this.f_200947_.f_287789_).m_130946_(": ").m_7220_(this.f_200947_.f_287787_); + return Component.empty().append(this.lines.title).append(": ").append(this.lines.detail); } + @Override -+ public boolean m_7933_(int key, int scanCode, int modifiers) { ++ public boolean keyPressed(int key, int scanCode, int modifiers) { + if (key == org.lwjgl.glfw.GLFW.GLFW_KEY_ESCAPE) { -+ f_96541_.m_91152_(this.f_88665_); ++ minecraft.setScreen(this.nextScreen); + return true; + } -+ return super.m_7933_(key, scanCode, modifiers); ++ return super.keyPressed(key, scanCode, modifiers); + } + - public void m_88315_(GuiGraphics p_283497_, int p_88680_, int p_88681_, float p_88682_) { - super.m_88315_(p_283497_, p_88680_, p_88681_, p_88682_); - p_283497_.m_280653_(this.f_96547_, this.f_200947_.f_287789_, this.f_96543_ / 2, 80, -1); + public void render(GuiGraphics p_283497_, int p_88680_, int p_88681_, float p_88682_) { + super.render(p_283497_, p_88680_, p_88681_, p_88682_); + p_283497_.drawCenteredString(this.font, this.lines.title, this.width / 2, 80, -1); diff --git a/patches/minecraft/net/minecraft/CrashReport.java.patch b/patches/minecraft/net/minecraft/CrashReport.java.patch index d2c20ae3e0..6eaec84a30 100644 --- a/patches/minecraft/net/minecraft/CrashReport.java.patch +++ b/patches/minecraft/net/minecraft/CrashReport.java.patch @@ -1,32 +1,32 @@ --- a/net/minecraft/CrashReport.java +++ b/net/minecraft/CrashReport.java @@ -57,14 +_,8 @@ - if (this.f_127506_ != null && this.f_127506_.length > 0) { + if (this.uncategorizedStackTrace != null && this.uncategorizedStackTrace.length > 0) { p_127520_.append("-- Head --\n"); p_127520_.append("Thread: ").append(Thread.currentThread().getName()).append("\n"); - p_127520_.append("Stacktrace:\n"); - -- for(StackTraceElement stacktraceelement : this.f_127506_) { +- for(StackTraceElement stacktraceelement : this.uncategorizedStackTrace) { - p_127520_.append("\t").append("at ").append((Object)stacktraceelement); - p_127520_.append("\n"); - } - - p_127520_.append("\n"); + p_127520_.append("Stacktrace:"); -+ p_127520_.append(net.minecraftforge.logging.CrashReportExtender.generateEnhancedStackTrace(this.f_127506_)); ++ p_127520_.append(net.minecraftforge.logging.CrashReportExtender.generateEnhancedStackTrace(this.uncategorizedStackTrace)); } - for(CrashReportCategory crashreportcategory : this.f_127503_) { + for(CrashReportCategory crashreportcategory : this.details) { @@ -72,6 +_,7 @@ p_127520_.append("\n\n"); } -+ net.minecraftforge.logging.CrashReportExtender.extendSystemReport(f_178624_); - this.f_178624_.m_143525_(p_127520_); ++ net.minecraftforge.logging.CrashReportExtender.extendSystemReport(systemReport); + this.systemReport.appendToCrashReportString(p_127520_); } @@ -91,23 +_,13 @@ - throwable.setStackTrace(this.f_127501_.getStackTrace()); + throwable.setStackTrace(this.exception.getStackTrace()); } - String s; @@ -44,10 +44,10 @@ + return net.minecraftforge.logging.CrashReportExtender.generateEnhancedStackTrace(throwable); } - public String m_127526_() { + public String getFriendlyReport() { StringBuilder stringbuilder = new StringBuilder(); stringbuilder.append("---- Minecraft Crash Report ----\n"); + net.minecraftforge.logging.CrashReportExtender.addCrashReportHeader(stringbuilder, this); stringbuilder.append("// "); - stringbuilder.append(m_127531_()); + stringbuilder.append(getErrorComment()); stringbuilder.append("\n\n"); diff --git a/patches/minecraft/net/minecraft/CrashReportCategory.java.patch b/patches/minecraft/net/minecraft/CrashReportCategory.java.patch index 4084e1d70f..8e9d1e12c9 100644 --- a/patches/minecraft/net/minecraft/CrashReportCategory.java.patch +++ b/patches/minecraft/net/minecraft/CrashReportCategory.java.patch @@ -4,35 +4,35 @@ if (astacktraceelement.length <= 0) { return 0; } else { -- this.f_128139_ = new StackTraceElement[astacktraceelement.length - 3 - p_128149_]; -- System.arraycopy(astacktraceelement, 3 + p_128149_, this.f_128139_, 0, this.f_128139_.length); +- this.stackTrace = new StackTraceElement[astacktraceelement.length - 3 - p_128149_]; +- System.arraycopy(astacktraceelement, 3 + p_128149_, this.stackTrace, 0, this.stackTrace.length); + int len = astacktraceelement.length - 3 - p_128149_; + if (len <= 0) len = astacktraceelement.length; -+ this.f_128139_ = new StackTraceElement[len]; -+ System.arraycopy(astacktraceelement, astacktraceelement.length - len, this.f_128139_, 0, this.f_128139_.length); - return this.f_128139_.length; ++ this.stackTrace = new StackTraceElement[len]; ++ System.arraycopy(astacktraceelement, astacktraceelement.length - len, this.stackTrace, 0, this.stackTrace.length); + return this.stackTrace.length; } } @@ -147,17 +_,17 @@ - if (this.f_128139_ != null && this.f_128139_.length > 0) { + if (this.stackTrace != null && this.stackTrace.length > 0) { p_128169_.append("\nStacktrace:"); - -- for(StackTraceElement stacktraceelement : this.f_128139_) { +- for(StackTraceElement stacktraceelement : this.stackTrace) { - p_128169_.append("\n\tat "); - p_128169_.append((Object)stacktraceelement); - } -+ p_128169_.append(net.minecraftforge.logging.CrashReportExtender.generateEnhancedStackTrace(this.f_128139_)); ++ p_128169_.append(net.minecraftforge.logging.CrashReportExtender.generateEnhancedStackTrace(this.stackTrace)); } } - public StackTraceElement[] m_128143_() { - return this.f_128139_; + public StackTraceElement[] getStacktrace() { + return this.stackTrace; + } + + public void applyStackTrace(Throwable t) { -+ this.f_128139_ = t.getStackTrace(); ++ this.stackTrace = t.getStackTrace(); } - public static void m_178950_(CrashReportCategory p_178951_, LevelHeightAccessor p_178952_, BlockPos p_178953_, @Nullable BlockState p_178954_) { + public static void populateBlockDetails(CrashReportCategory p_178951_, LevelHeightAccessor p_178952_, BlockPos p_178953_, @Nullable BlockState p_178954_) { diff --git a/patches/minecraft/net/minecraft/SharedConstants.java.patch b/patches/minecraft/net/minecraft/SharedConstants.java.patch index bcf2b8db04..d78e9207fa 100644 --- a/patches/minecraft/net/minecraft/SharedConstants.java.patch +++ b/patches/minecraft/net/minecraft/SharedConstants.java.patch @@ -5,6 +5,6 @@ static { + if (System.getProperty("io.netty.leakDetection.level") == null) // Forge: allow level to be manually specified - ResourceLeakDetector.setLevel(f_136180_); + ResourceLeakDetector.setLevel(NETTY_LEAK_DETECTION); CommandSyntaxException.ENABLE_COMMAND_STACK_TRACES = false; CommandSyntaxException.BUILT_IN_EXCEPTIONS = new BrigadierExceptions(); diff --git a/patches/minecraft/net/minecraft/Util.java.patch b/patches/minecraft/net/minecraft/Util.java.patch index d886eaa589..75a4baabaf 100644 --- a/patches/minecraft/net/minecraft/Util.java.patch +++ b/patches/minecraft/net/minecraft/Util.java.patch @@ -9,15 +9,15 @@ + @SuppressWarnings("unused") private static java.util.function.LongSupplier INNER_CLASS_SHIFT1 = new java.util.function.LongSupplier() { public long getAsLong() { return 0; } }; + @SuppressWarnings("unused") private static java.util.function.LongSupplier INNER_CLASS_SHIFT2 = new java.util.function.LongSupplier() { public long getAsLong() { return 0; } }; + - public static ExecutorService m_183991_() { - return f_137444_; + public static ExecutorService backgroundExecutor() { + return BACKGROUND_EXECUTOR; } @@ -240,7 +_,7 @@ try { - type = DataFixers.m_14512_().getSchema(DataFixUtils.makeKey(SharedConstants.m_183709_().m_183476_().m_193006_())).getChoiceType(p_137552_, p_137553_); + type = DataFixers.getDataFixer().getSchema(DataFixUtils.makeKey(SharedConstants.getCurrentVersion().getDataVersion().getVersion())).getChoiceType(p_137552_, p_137553_); } catch (IllegalArgumentException illegalargumentexception) { -- f_137446_.error("No data fixer registered for {}", (Object)p_137553_); -+ f_137446_.debug("No data fixer registered for {}", (Object)p_137553_); - if (SharedConstants.f_136183_) { +- LOGGER.error("No data fixer registered for {}", (Object)p_137553_); ++ LOGGER.debug("No data fixer registered for {}", (Object)p_137553_); + if (SharedConstants.IS_RUNNING_IN_IDE) { throw illegalargumentexception; } diff --git a/patches/minecraft/net/minecraft/advancements/Advancement.java.patch b/patches/minecraft/net/minecraft/advancements/Advancement.java.patch index eac52a8a9b..9288588edd 100644 --- a/patches/minecraft/net/minecraft/advancements/Advancement.java.patch +++ b/patches/minecraft/net/minecraft/advancements/Advancement.java.patch @@ -6,12 +6,12 @@ + /** @deprecated Forge: use {@linkplain #fromJson(JsonObject, DeserializationContext, net.minecraftforge.common.crafting.conditions.ICondition.IContext) overload with context}. */ + @Deprecated - public static Advancement m_294730_(JsonObject p_300691_, DeserializationContext p_300053_) { + public static Advancement fromJson(JsonObject p_300691_, DeserializationContext p_300053_) { + return fromJson(p_300691_, p_300053_, net.minecraftforge.common.crafting.conditions.ICondition.IContext.EMPTY); + } + + public static Advancement fromJson(JsonObject p_300691_, DeserializationContext p_300053_, net.minecraftforge.common.crafting.conditions.ICondition.IContext context) { + //if ((p_300691_ = net.minecraftforge.common.crafting.ConditionalAdvancement.processConditional(p_300691_, context)) == null) return null; - Optional optional = p_300691_.has("parent") ? Optional.of(new ResourceLocation(GsonHelper.m_13906_(p_300691_, "parent"))) : Optional.empty(); - Optional optional1 = p_300691_.has("display") ? Optional.of(DisplayInfo.m_14981_(GsonHelper.m_13930_(p_300691_, "display"))) : Optional.empty(); - AdvancementRewards advancementrewards = p_300691_.has("rewards") ? AdvancementRewards.m_9991_(GsonHelper.m_13930_(p_300691_, "rewards")) : AdvancementRewards.f_9978_; + Optional optional = p_300691_.has("parent") ? Optional.of(new ResourceLocation(GsonHelper.getAsString(p_300691_, "parent"))) : Optional.empty(); + Optional optional1 = p_300691_.has("display") ? Optional.of(DisplayInfo.fromJson(GsonHelper.getAsJsonObject(p_300691_, "display"))) : Optional.empty(); + AdvancementRewards advancementrewards = p_300691_.has("rewards") ? AdvancementRewards.deserialize(GsonHelper.getAsJsonObject(p_300691_, "rewards")) : AdvancementRewards.EMPTY; diff --git a/patches/minecraft/net/minecraft/advancements/AdvancementRewards.java.patch b/patches/minecraft/net/minecraft/advancements/AdvancementRewards.java.patch index e9505601ae..98c186d76a 100644 --- a/patches/minecraft/net/minecraft/advancements/AdvancementRewards.java.patch +++ b/patches/minecraft/net/minecraft/advancements/AdvancementRewards.java.patch @@ -2,10 +2,10 @@ +++ b/net/minecraft/advancements/AdvancementRewards.java @@ -43,7 +_,7 @@ - public void m_9989_(ServerPlayer p_9990_) { - p_9990_.m_6756_(this.f_9979_); -- LootParams lootparams = (new LootParams.Builder(p_9990_.m_284548_())).m_287286_(LootContextParams.f_81455_, p_9990_).m_287286_(LootContextParams.f_81460_, p_9990_.m_20182_()).m_287235_(LootContextParamSets.f_81418_); -+ LootParams lootparams = (new LootParams.Builder(p_9990_.m_284548_())).m_287286_(LootContextParams.f_81455_, p_9990_).m_287286_(LootContextParams.f_81460_, p_9990_.m_20182_()).m_287239_(p_9990_.m_36336_()).m_287235_(LootContextParamSets.f_81418_); // Forge: Add luck to LootContext + public void grant(ServerPlayer p_9990_) { + p_9990_.giveExperiencePoints(this.experience); +- LootParams lootparams = (new LootParams.Builder(p_9990_.serverLevel())).withParameter(LootContextParams.THIS_ENTITY, p_9990_).withParameter(LootContextParams.ORIGIN, p_9990_.position()).create(LootContextParamSets.ADVANCEMENT_REWARD); ++ LootParams lootparams = (new LootParams.Builder(p_9990_.serverLevel())).withParameter(LootContextParams.THIS_ENTITY, p_9990_).withParameter(LootContextParams.ORIGIN, p_9990_.position()).withLuck(p_9990_.getLuck()).create(LootContextParamSets.ADVANCEMENT_REWARD); // Forge: Add luck to LootContext boolean flag = false; - for(ResourceLocation resourcelocation : this.f_9980_) { + for(ResourceLocation resourcelocation : this.loot) { diff --git a/patches/minecraft/net/minecraft/advancements/critereon/ItemPredicate.java.patch b/patches/minecraft/net/minecraft/advancements/critereon/ItemPredicate.java.patch index cc4f00ad72..bd50773003 100644 --- a/patches/minecraft/net/minecraft/advancements/critereon/ItemPredicate.java.patch +++ b/patches/minecraft/net/minecraft/advancements/critereon/ItemPredicate.java.patch @@ -3,9 +3,9 @@ @@ -50,7 +_,7 @@ return false; } else { - if (!this.f_45033_.isEmpty()) { -- Map map = EnchantmentHelper.m_44882_(p_45050_.m_41785_()); + if (!this.enchantments.isEmpty()) { +- Map map = EnchantmentHelper.deserializeEnchantments(p_45050_.getEnchantmentTags()); + Map map = p_45050_.getAllEnchantments(); - for(EnchantmentPredicate enchantmentpredicate : this.f_45033_) { - if (!enchantmentpredicate.m_30476_(map)) { + for(EnchantmentPredicate enchantmentpredicate : this.enchantments) { + if (!enchantmentpredicate.containedIn(map)) { diff --git a/patches/minecraft/net/minecraft/client/Camera.java.patch b/patches/minecraft/net/minecraft/client/Camera.java.patch index ad990b4550..58c330568f 100644 --- a/patches/minecraft/net/minecraft/client/Camera.java.patch +++ b/patches/minecraft/net/minecraft/client/Camera.java.patch @@ -1,21 +1,21 @@ --- a/net/minecraft/client/Camera.java +++ b/net/minecraft/client/Camera.java @@ -206,6 +_,18 @@ - this.f_90549_ = false; + this.initialized = false; } + public void setAnglesInternal(float yaw, float pitch) { -+ this.f_90558_ = yaw; -+ this.f_90557_ = pitch; ++ this.yRot = yaw; ++ this.xRot = pitch; + } + + public net.minecraft.world.level.block.state.BlockState getBlockAtCamera() { -+ if (!this.f_90549_) -+ return net.minecraft.world.level.block.Blocks.f_50016_.m_49966_(); ++ if (!this.initialized) ++ return net.minecraft.world.level.block.Blocks.AIR.defaultBlockState(); + else -+ return this.f_90550_.m_8055_(this.f_90553_).getStateAtViewpoint(this.f_90550_, this.f_90553_, this.f_90552_); ++ return this.level.getBlockState(this.blockPosition).getStateAtViewpoint(this.level, this.blockPosition, this.position); + } + @OnlyIn(Dist.CLIENT) public static class NearPlane { - final Vec3 f_167687_; + final Vec3 forward; diff --git a/patches/minecraft/net/minecraft/client/ClientRecipeBook.java.patch b/patches/minecraft/net/minecraft/client/ClientRecipeBook.java.patch index 5a141ce438..051f10074f 100644 --- a/patches/minecraft/net/minecraft/client/ClientRecipeBook.java.patch +++ b/patches/minecraft/net/minecraft/client/ClientRecipeBook.java.patch @@ -1,20 +1,20 @@ --- a/net/minecraft/client/ClientRecipeBook.java +++ b/net/minecraft/client/ClientRecipeBook.java @@ -56,7 +_,7 @@ - Recipe recipe = recipeholder.f_291008_(); - if (!recipe.m_5598_() && !recipe.m_142505_()) { - RecipeBookCategories recipebookcategories = m_90646_(recipeholder); -- String s = recipe.m_6076_(); -+ String s = recipe.m_6076_().isEmpty() ? recipeholder.f_291676_().toString() : recipe.m_6076_(); // FORGE: Group value defaults to the recipe's ID if the recipe's explicit group is empty. + Recipe recipe = recipeholder.value(); + if (!recipe.isSpecial() && !recipe.isIncomplete()) { + RecipeBookCategories recipebookcategories = getCategory(recipeholder); +- String s = recipe.getGroup(); ++ String s = recipe.getGroup().isEmpty() ? recipeholder.id().toString() : recipe.getGroup(); // FORGE: Group value defaults to the recipe's ID if the recipe's explicit group is empty. if (s.isEmpty()) { map.computeIfAbsent(recipebookcategories, (p_90645_) -> { return Lists.newArrayList(); @@ -144,6 +_,8 @@ - } else if (recipetype == RecipeType.f_44113_) { + } else if (recipetype == RecipeType.SMITHING) { return RecipeBookCategories.SMITHING; } else { + RecipeBookCategories categories = net.minecraftforge.client.RecipeBookManager.findCategories((RecipeType) recipetype, p_299041_); + if (categories != null) return categories; - f_90618_.warn("Unknown recipe category: {}/{}", LogUtils.defer(() -> { - return BuiltInRegistries.f_256990_.m_7981_(recipe.m_6671_()); - }), LogUtils.defer(p_299041_::f_291676_)); + LOGGER.warn("Unknown recipe category: {}/{}", LogUtils.defer(() -> { + return BuiltInRegistries.RECIPE_TYPE.getKey(recipe.getType()); + }), LogUtils.defer(p_299041_::id)); diff --git a/patches/minecraft/net/minecraft/client/KeyMapping.java.patch b/patches/minecraft/net/minecraft/client/KeyMapping.java.patch index b9a00bab66..63ce86fd4e 100644 --- a/patches/minecraft/net/minecraft/client/KeyMapping.java.patch +++ b/patches/minecraft/net/minecraft/client/KeyMapping.java.patch @@ -6,58 +6,58 @@ @OnlyIn(Dist.CLIENT) -public class KeyMapping implements Comparable { +public class KeyMapping implements Comparable, net.minecraftforge.client.extensions.IForgeKeyMapping { - private static final Map f_90809_ = Maps.newHashMap(); -- private static final Map f_90810_ = Maps.newHashMap(); -+ private static final net.minecraftforge.client.settings.KeyMappingLookup f_90810_ = new net.minecraftforge.client.settings.KeyMappingLookup(); - private static final Set f_90811_ = Sets.newHashSet(); - public static final String f_167805_ = "key.categories.movement"; - public static final String f_167806_ = "key.categories.misc"; + private static final Map ALL = Maps.newHashMap(); +- private static final Map MAP = Maps.newHashMap(); ++ private static final net.minecraftforge.client.settings.KeyMappingLookup MAP = new net.minecraftforge.client.settings.KeyMappingLookup(); + private static final Set CATEGORIES = Sets.newHashSet(); + public static final String CATEGORY_MOVEMENT = "key.categories.movement"; + public static final String CATEGORY_MISC = "key.categories.misc"; @@ -41,7 +_,7 @@ - private int f_90818_; + private int clickCount; - public static void m_90835_(InputConstants.Key p_90836_) { -- KeyMapping keymapping = f_90810_.get(p_90836_); -+ for (KeyMapping keymapping : f_90810_.getAll(p_90836_)) + public static void click(InputConstants.Key p_90836_) { +- KeyMapping keymapping = MAP.get(p_90836_); ++ for (KeyMapping keymapping : MAP.getAll(p_90836_)) if (keymapping != null) { - ++keymapping.f_90818_; + ++keymapping.clickCount; } @@ -49,7 +_,7 @@ } - public static void m_90837_(InputConstants.Key p_90838_, boolean p_90839_) { -- KeyMapping keymapping = f_90810_.get(p_90838_); -+ for (KeyMapping keymapping : f_90810_.getAll(p_90838_)) + public static void set(InputConstants.Key p_90838_, boolean p_90839_) { +- KeyMapping keymapping = MAP.get(p_90838_); ++ for (KeyMapping keymapping : MAP.getAll(p_90838_)) if (keymapping != null) { - keymapping.m_7249_(p_90839_); + keymapping.setDown(p_90839_); } @@ -105,7 +_,7 @@ } - public boolean m_90857_() { -- return this.f_90817_; -+ return this.f_90817_ && isConflictContextAndModifierActive(); + public boolean isDown() { +- return this.isDown; ++ return this.isDown && isConflictContextAndModifierActive(); } - public String m_90858_() { + public String getCategory() { @@ -139,7 +_,13 @@ } public int compareTo(KeyMapping p_90841_) { -- return this.f_90815_.equals(p_90841_.f_90815_) ? I18n.m_118938_(this.f_90813_).compareTo(I18n.m_118938_(p_90841_.f_90813_)) : f_90812_.get(this.f_90815_).compareTo(f_90812_.get(p_90841_.f_90815_)); -+ if (this.f_90815_.equals(p_90841_.f_90815_)) return I18n.m_118938_(this.f_90813_).compareTo(I18n.m_118938_(p_90841_.f_90813_)); -+ Integer tCat = f_90812_.get(this.f_90815_); -+ Integer oCat = f_90812_.get(p_90841_.f_90815_); +- return this.category.equals(p_90841_.category) ? I18n.get(this.name).compareTo(I18n.get(p_90841_.name)) : CATEGORY_SORT_ORDER.get(this.category).compareTo(CATEGORY_SORT_ORDER.get(p_90841_.category)); ++ if (this.category.equals(p_90841_.category)) return I18n.get(this.name).compareTo(I18n.get(p_90841_.name)); ++ Integer tCat = CATEGORY_SORT_ORDER.get(this.category); ++ Integer oCat = CATEGORY_SORT_ORDER.get(p_90841_.category); + if (tCat == null && oCat != null) return 1; + if (tCat != null && oCat == null) return -1; -+ if (tCat == null && oCat == null) return I18n.m_118938_(this.f_90815_).compareTo(I18n.m_118938_(p_90841_.f_90815_)); ++ if (tCat == null && oCat == null) return I18n.get(this.category).compareTo(I18n.get(p_90841_.category)); + return tCat.compareTo(oCat); } - public static Supplier m_90842_(String p_90843_) { + public static Supplier createNameSupplier(String p_90843_) { @@ -150,6 +_,20 @@ } - public boolean m_90850_(KeyMapping p_90851_) { + public boolean same(KeyMapping p_90851_) { + if (getKeyConflictContext().conflicts(p_90851_.getKeyConflictContext()) || p_90851_.getKeyConflictContext().conflicts(getKeyConflictContext())) { + net.minecraftforge.client.settings.KeyModifier keyModifier = getKeyModifier(); + net.minecraftforge.client.settings.KeyModifier otherKeyModifier = p_90851_.getKeyModifier(); @@ -72,27 +72,27 @@ + (keyModifier == net.minecraftforge.client.settings.KeyModifier.NONE || otherKeyModifier == net.minecraftforge.client.settings.KeyModifier.NONE)); + } + } - return this.f_90816_.equals(p_90851_.f_90816_); + return this.key.equals(p_90851_.key); } @@ -170,11 +_,13 @@ } - public Component m_90863_() { -+ return getKeyModifier().getCombinedName(f_90816_, () -> { - return this.f_90816_.m_84875_(); + public Component getTranslatedKeyMessage() { ++ return getKeyModifier().getCombinedName(key, () -> { + return this.key.getDisplayName(); + }); } - public boolean m_90864_() { -- return this.f_90816_.equals(this.f_90814_); -+ return this.f_90816_.equals(this.f_90814_) && getKeyModifier() == getDefaultKeyModifier(); + public boolean isDefault() { +- return this.key.equals(this.defaultKey); ++ return this.key.equals(this.defaultKey) && getKeyModifier() == getDefaultKeyModifier(); } - public String m_90865_() { + public String saveString() { @@ -184,4 +_,84 @@ - public void m_7249_(boolean p_90846_) { - this.f_90817_ = p_90846_; + public void setDown(boolean p_90846_) { + this.isDown = p_90846_; } + + /****************** Forge Start *****************************/ @@ -104,7 +104,7 @@ + * Convenience constructor for creating KeyBindings with keyConflictContext set. + */ + public KeyMapping(String description, net.minecraftforge.client.settings.IKeyConflictContext keyConflictContext, final InputConstants.Type inputType, final int keyCode, String category) { -+ this(description, keyConflictContext, inputType.m_84895_(keyCode), category); ++ this(description, keyConflictContext, inputType.getOrCreate(keyCode), category); + } + + /** @@ -118,30 +118,30 @@ + * Convenience constructor for creating KeyBindings with keyConflictContext and keyModifier set. + */ + public KeyMapping(String description, net.minecraftforge.client.settings.IKeyConflictContext keyConflictContext, net.minecraftforge.client.settings.KeyModifier keyModifier, final InputConstants.Type inputType, final int keyCode, String category) { -+ this(description, keyConflictContext, keyModifier, inputType.m_84895_(keyCode), category); ++ this(description, keyConflictContext, keyModifier, inputType.getOrCreate(keyCode), category); + } + + /** + * Convenience constructor for creating KeyBindings with keyConflictContext and keyModifier set. + */ + public KeyMapping(String description, net.minecraftforge.client.settings.IKeyConflictContext keyConflictContext, net.minecraftforge.client.settings.KeyModifier keyModifier, InputConstants.Key keyCode, String category) { -+ this.f_90813_ = description; -+ this.f_90816_ = keyCode; -+ this.f_90814_ = keyCode; -+ this.f_90815_ = category; ++ this.name = description; ++ this.key = keyCode; ++ this.defaultKey = keyCode; ++ this.category = category; + this.keyConflictContext = keyConflictContext; + this.keyModifier = keyModifier; + this.keyModifierDefault = keyModifier; + if (this.keyModifier.matches(keyCode)) + this.keyModifier = net.minecraftforge.client.settings.KeyModifier.NONE; -+ f_90809_.put(description, this); -+ f_90810_.put(keyCode, this); -+ f_90811_.add(category); ++ ALL.put(description, this); ++ MAP.put(keyCode, this); ++ CATEGORIES.add(category); + } + + @Override + public InputConstants.Key getKey() { -+ return this.f_90816_; ++ return this.key; + } + + @Override @@ -166,12 +166,12 @@ + + @Override + public void setKeyModifierAndCode(net.minecraftforge.client.settings.KeyModifier keyModifier, InputConstants.Key keyCode) { -+ this.f_90816_ = keyCode; ++ this.key = keyCode; + if (keyModifier.matches(keyCode)) + keyModifier = net.minecraftforge.client.settings.KeyModifier.NONE; -+ f_90810_.remove(this); ++ MAP.remove(this); + this.keyModifier = keyModifier; -+ f_90810_.put(keyCode, this); ++ MAP.put(keyCode, this); + } + /****************** Forge End *****************************/ } diff --git a/patches/minecraft/net/minecraft/client/KeyboardHandler.java.patch b/patches/minecraft/net/minecraft/client/KeyboardHandler.java.patch index 55b5eea050..cfc985168a 100644 --- a/patches/minecraft/net/minecraft/client/KeyboardHandler.java.patch +++ b/patches/minecraft/net/minecraft/client/KeyboardHandler.java.patch @@ -4,42 +4,42 @@ } } -- if (p_90897_ == 1 && (!(this.f_90867_.f_91080_ instanceof KeyBindsScreen) || ((KeyBindsScreen)screen).f_193976_ <= Util.m_137550_() - 20L)) { +- if (p_90897_ == 1 && (!(this.minecraft.screen instanceof KeyBindsScreen) || ((KeyBindsScreen)screen).lastKeySelection <= Util.getMillis() - 20L)) { + -+ if ((!(this.f_90867_.f_91080_ instanceof KeyBindsScreen) || ((KeyBindsScreen)screen).f_193976_ <= Util.m_137550_() - 20L)) { ++ if ((!(this.minecraft.screen instanceof KeyBindsScreen) || ((KeyBindsScreen)screen).lastKeySelection <= Util.getMillis() - 20L)) { + if (p_90897_ == 1) { - if (this.f_90867_.f_91066_.f_92105_.m_90832_(p_90895_, p_90896_)) { - this.f_90867_.m_91268_().m_85438_(); - this.f_90867_.f_91066_.m_231829_().m_231514_(this.f_90867_.m_91268_().m_85440_()); + if (this.minecraft.options.keyFullscreen.matches(p_90895_, p_90896_)) { + this.minecraft.getWindow().toggleFullScreen(); + this.minecraft.options.fullscreen().set(this.minecraft.getWindow().isFullscreen()); @@ -358,6 +_,8 @@ }); return; } -+ } else if (p_90897_ == 0 /*GLFW_RELEASE*/ && this.f_90867_.f_91080_ instanceof KeyBindsScreen) -+ ((KeyBindsScreen)this.f_90867_.f_91080_).f_193975_ = null; //Forge: Unset pure modifiers. ++ } else if (p_90897_ == 0 /*GLFW_RELEASE*/ && this.minecraft.screen instanceof KeyBindsScreen) ++ ((KeyBindsScreen)this.minecraft.screen).selectedKey = null; //Forge: Unset pure modifiers. } - if (this.f_90867_.m_240477_().m_93316_() && this.f_90867_.f_91066_.m_292959_().m_231551_()) { + if (this.minecraft.getNarrator().isActive() && this.minecraft.options.narratorHotkey().get()) { @@ -380,11 +_,15 @@ - Screen.m_96579_(() -> { + Screen.wrapScreenError(() -> { if (p_90897_ != 1 && p_90897_ != 2) { if (p_90897_ == 0) { -- aboolean[0] = screen.m_7920_(p_90895_, p_90896_, p_90898_); +- aboolean[0] = screen.keyReleased(p_90895_, p_90896_, p_90898_); + aboolean[0] = net.minecraftforge.client.ForgeHooksClient.onScreenKeyReleasedPre(screen, p_90895_, p_90896_, p_90898_); -+ if (!aboolean[0]) aboolean[0] = screen.m_7920_(p_90895_, p_90896_, p_90898_); ++ if (!aboolean[0]) aboolean[0] = screen.keyReleased(p_90895_, p_90896_, p_90898_); + if (!aboolean[0]) aboolean[0] = net.minecraftforge.client.ForgeHooksClient.onScreenKeyReleasedPost(screen, p_90895_, p_90896_, p_90898_); } } else { - screen.m_169416_(); -- aboolean[0] = screen.m_7933_(p_90895_, p_90896_, p_90898_); + screen.afterKeyboardAction(); +- aboolean[0] = screen.keyPressed(p_90895_, p_90896_, p_90898_); + aboolean[0] = net.minecraftforge.client.ForgeHooksClient.onScreenKeyPressedPre(screen, p_90895_, p_90896_, p_90898_); -+ if (!aboolean[0]) aboolean[0] = screen.m_7933_(p_90895_, p_90896_, p_90898_); ++ if (!aboolean[0]) aboolean[0] = screen.keyPressed(p_90895_, p_90896_, p_90898_); + if (!aboolean[0]) aboolean[0] = net.minecraftforge.client.ForgeHooksClient.onScreenKeyPressedPost(screen, p_90895_, p_90896_, p_90898_); } }, "keyPressed event handler", screen.getClass().getCanonicalName()); @@ -443,22 +_,26 @@ - this.f_90867_.m_91111_(p_90895_ - 48); + this.minecraft.debugFpsMeterKeyPress(p_90895_ - 48); } } - @@ -47,24 +47,24 @@ } } - private void m_90889_(long p_90890_, int p_90891_, int p_90892_) { - if (p_90890_ == this.f_90867_.m_91268_().m_85439_()) { -- GuiEventListener guieventlistener = this.f_90867_.f_91080_; -+ Screen guieventlistener = this.f_90867_.f_91080_; - if (guieventlistener != null && this.f_90867_.m_91265_() == null) { + private void charTyped(long p_90890_, int p_90891_, int p_90892_) { + if (p_90890_ == this.minecraft.getWindow().getWindow()) { +- GuiEventListener guieventlistener = this.minecraft.screen; ++ Screen guieventlistener = this.minecraft.screen; + if (guieventlistener != null && this.minecraft.getOverlay() == null) { if (Character.charCount(p_90891_) == 1) { - Screen.m_96579_(() -> { -- guieventlistener.m_5534_((char)p_90891_, p_90892_); + Screen.wrapScreenError(() -> { +- guieventlistener.charTyped((char)p_90891_, p_90892_); + if (net.minecraftforge.client.ForgeHooksClient.onScreenCharTypedPre(guieventlistener, (char)p_90891_, p_90892_)) return; -+ if (guieventlistener.m_5534_((char)p_90891_, p_90892_)) return; ++ if (guieventlistener.charTyped((char)p_90891_, p_90892_)) return; + net.minecraftforge.client.ForgeHooksClient.onScreenCharTypedPost(guieventlistener, (char)p_90891_, p_90892_); }, "charTyped event handler", guieventlistener.getClass().getCanonicalName()); } else { for(char c0 : Character.toChars(p_90891_)) { - Screen.m_96579_(() -> { -- guieventlistener.m_5534_(c0, p_90892_); + Screen.wrapScreenError(() -> { +- guieventlistener.charTyped(c0, p_90892_); + if (net.minecraftforge.client.ForgeHooksClient.onScreenCharTypedPre(guieventlistener, c0, p_90892_)) return; -+ if (guieventlistener.m_5534_(c0, p_90892_)) return; ++ if (guieventlistener.charTyped(c0, p_90892_)) return; + net.minecraftforge.client.ForgeHooksClient.onScreenCharTypedPost(guieventlistener, c0, p_90892_); }, "charTyped event handler", guieventlistener.getClass().getCanonicalName()); } diff --git a/patches/minecraft/net/minecraft/client/Minecraft.java.patch b/patches/minecraft/net/minecraft/client/Minecraft.java.patch index bb458f5f6d..dd44d16c1d 100644 --- a/patches/minecraft/net/minecraft/client/Minecraft.java.patch +++ b/patches/minecraft/net/minecraft/client/Minecraft.java.patch @@ -6,95 +6,95 @@ @OnlyIn(Dist.CLIENT) -public class Minecraft extends ReentrantBlockableEventLoop implements WindowEventHandler { +public class Minecraft extends ReentrantBlockableEventLoop implements WindowEventHandler, net.minecraftforge.client.extensions.IForgeMinecraft { - static Minecraft f_90981_; - private static final Logger f_90982_ = LogUtils.getLogger(); - public static final boolean f_91002_ = Util.m_137581_() == Util.OS.OSX; + static Minecraft instance; + private static final Logger LOGGER = LogUtils.getLogger(); + public static final boolean ON_OSX = Util.getPlatform() == Util.OS.OSX; @@ -421,7 +_,6 @@ - }, Util.m_183992_()); - this.f_193584_ = this.m_193585_(this.f_231338_, p_91084_); - f_90982_.info("Setting user: {}", (Object)this.f_90998_.m_92546_()); -- f_90982_.debug("(Session ID is {})", (Object)this.f_90998_.m_92544_()); - this.f_91033_ = p_91084_.f_101908_.f_101926_; - this.f_91034_ = !p_91084_.f_101908_.f_101929_; - this.f_91035_ = !p_91084_.f_101908_.f_101930_; + }, Util.ioPool()); + this.userApiService = this.createUserApiService(this.authenticationService, p_91084_); + LOGGER.info("Setting user: {}", (Object)this.user.getName()); +- LOGGER.debug("(Session ID is {})", (Object)this.user.getSessionId()); + this.demo = p_91084_.game.demo; + this.allowsMultiplayer = !p_91084_.game.disableMultiplayer; + this.allowsChat = !p_91084_.game.disableChat; @@ -457,15 +_,15 @@ } - this.f_90990_.m_85380_(this.f_91066_.m_232035_().m_231551_()); + this.window.setFramerateLimit(this.options.framerateLimit().get()); + // FORGE: Move mouse and keyboard handler setup further below - this.f_91067_ = new MouseHandler(this); -- this.f_91067_.m_91524_(this.f_90990_.m_85439_()); - this.f_91068_ = new KeyboardHandler(this); -- this.f_91068_.m_90887_(this.f_90990_.m_85439_()); - RenderSystem.initRenderer(this.f_91066_.f_92035_, false); - this.f_91042_ = new MainTarget(this.f_90990_.m_85441_(), this.f_90990_.m_85442_()); - this.f_91042_.m_83931_(0.0F, 0.0F, 0.0F, 0.0F); - this.f_91042_.m_83954_(f_91002_); - this.f_91036_ = new ReloadableResourceManager(PackType.CLIENT_RESOURCES); -+ net.minecraftforge.client.loading.ClientModLoader.begin(this, this.f_91038_, this.f_91036_); - this.f_91038_.m_10506_(); - this.f_91066_.m_92145_(this.f_91038_); - this.f_91039_ = new LanguageManager(this.f_91066_.f_92075_); + this.mouseHandler = new MouseHandler(this); +- this.mouseHandler.setup(this.window.getWindow()); + this.keyboardHandler = new KeyboardHandler(this); +- this.keyboardHandler.setup(this.window.getWindow()); + RenderSystem.initRenderer(this.options.glDebugVerbosity, false); + this.mainRenderTarget = new MainTarget(this.window.getWidth(), this.window.getHeight()); + this.mainRenderTarget.setClearColor(0.0F, 0.0F, 0.0F, 0.0F); + this.mainRenderTarget.clear(ON_OSX); + this.resourceManager = new ReloadableResourceManager(PackType.CLIENT_RESOURCES); ++ net.minecraftforge.client.loading.ClientModLoader.begin(this, this.resourcePackRepository, this.resourceManager); + this.resourcePackRepository.reload(); + this.options.loadSelectedResourcePacks(this.resourcePackRepository); + this.languageManager = new LanguageManager(this.options.languageCode); @@ -511,10 +_,13 @@ - this.f_91063_ = new GameRenderer(this, this.f_90994_.m_234586_(), this.f_91036_, this.f_90993_); - this.f_91036_.m_7217_(this.f_91063_.m_247116_()); - this.f_91060_ = new LevelRenderer(this, this.f_90994_, this.f_167845_, this.f_90993_); + this.gameRenderer = new GameRenderer(this, this.entityRenderDispatcher.getItemInHandRenderer(), this.resourceManager, this.renderBuffers); + this.resourceManager.registerReloadListener(this.gameRenderer.createReloadListener()); + this.levelRenderer = new LevelRenderer(this, this.entityRenderDispatcher, this.blockEntityRenderDispatcher, this.renderBuffers); + net.minecraftforge.fml.ModLoader.get().postEvent(new net.minecraftforge.client.event.RenderLevelStageEvent.RegisterStageEvent()); - this.f_91036_.m_7217_(this.f_91060_); -- this.m_91271_(); + this.resourceManager.registerReloadListener(this.levelRenderer); +- this.createSearchTrees(); + // Forge: We delay this to allow registration of modded creative mode tabs + // this.createSearchTrees(); - this.f_91036_.m_7217_(this.f_90997_); - this.f_91061_ = new ParticleEngine(this.f_91073_, this.f_90987_); -+ net.minecraftforge.client.ForgeHooksClient.onRegisterParticleProviders(this.f_91061_); - this.f_91036_.m_7217_(this.f_91061_); - this.f_91053_ = new PaintingTextureManager(this.f_90987_); - this.f_91036_.m_7217_(this.f_91053_); + this.resourceManager.registerReloadListener(this.searchRegistry); + this.particleEngine = new ParticleEngine(this.level, this.textureManager); ++ net.minecraftforge.client.ForgeHooksClient.onRegisterParticleProviders(this.particleEngine); + this.resourceManager.registerReloadListener(this.particleEngine); + this.paintingTextures = new PaintingTextureManager(this.textureManager); + this.resourceManager.registerReloadListener(this.paintingTextures); @@ -525,7 +_,10 @@ - this.f_91047_ = new GpuWarnlistManager(); - this.f_91036_.m_7217_(this.f_91047_); - this.f_91036_.m_7217_(this.f_205120_); -- this.f_91065_ = new Gui(this, this.f_90995_); -+ this.f_91065_ = new net.minecraftforge.client.gui.overlay.ForgeGui(this); + this.gpuWarnlistManager = new GpuWarnlistManager(); + this.resourceManager.registerReloadListener(this.gpuWarnlistManager); + this.resourceManager.registerReloadListener(this.regionalCompliancies); +- this.gui = new Gui(this, this.itemRenderer); ++ this.gui = new net.minecraftforge.client.gui.overlay.ForgeGui(this); + // FORGE: Moved keyboard and mouse handler setup below ingame gui creation to prevent NPEs in them. -+ this.f_91067_.m_91524_(this.f_90990_.m_85439_()); -+ this.f_91068_.m_90887_(this.f_90990_.m_85439_()); - this.f_91064_ = new DebugRenderer(this); - RealmsClient realmsclient = RealmsClient.m_239151_(this); - this.f_238717_ = new RealmsDataFetcher(realmsclient); ++ this.mouseHandler.setup(this.window.getWindow()); ++ this.keyboardHandler.setup(this.window.getWindow()); + this.debugRenderer = new DebugRenderer(this); + RealmsClient realmsclient = RealmsClient.create(this); + this.realmsDataFetcher = new RealmsDataFetcher(realmsclient); @@ -545,6 +_,7 @@ TinyFileDialogs.tinyfd_messageBox("Minecraft", stringbuilder.toString(), "ok", "error", false); } -+ net.minecraftforge.client.ForgeHooksClient.initClientHooks(this, this.f_91036_); - this.f_90990_.m_85409_(this.f_91066_.m_231817_().m_231551_()); - this.f_90990_.m_85424_(this.f_91066_.m_232123_().m_231551_()); - this.f_90990_.m_85426_(); ++ net.minecraftforge.client.ForgeHooksClient.initClientHooks(this, this.resourceManager); + this.window.updateVsync(this.options.enableVsync().get()); + this.window.updateRawMouseInput(this.options.rawMouseInput().get()); + this.window.setDefaultErrorCallback(); @@ -564,7 +_,7 @@ - ReloadInstance reloadinstance = this.f_91036_.m_142463_(Util.m_183991_(), this, f_90983_, list); - GameLoadTimesEvent.f_285635_.m_285833_(TelemetryProperty.f_285629_); - Minecraft.GameLoadCookie minecraft$gameloadcookie = new Minecraft.GameLoadCookie(realmsclient, p_91084_.f_278410_); -- this.m_91150_(new LoadingOverlay(this, reloadinstance, (p_296164_) -> { -+ this.m_91150_(net.minecraftforge.fml.loading.ImmediateWindowHandler.loadingOverlay(() -> this, () -> reloadinstance, (p_296164_) -> { - Util.m_137521_(p_296164_, (p_296162_) -> { - this.m_91239_(p_296162_, minecraft$gameloadcookie); + ReloadInstance reloadinstance = this.resourceManager.createReload(Util.backgroundExecutor(), this, RESOURCE_RELOAD_INITIAL_TASK, list); + GameLoadTimesEvent.INSTANCE.beginStep(TelemetryProperty.LOAD_TIME_LOADING_OVERLAY_MS); + Minecraft.GameLoadCookie minecraft$gameloadcookie = new Minecraft.GameLoadCookie(realmsclient, p_91084_.quickPlay); +- this.setOverlay(new LoadingOverlay(this, reloadinstance, (p_296164_) -> { ++ this.setOverlay(net.minecraftforge.fml.loading.ImmediateWindowHandler.loadingOverlay(() -> this, () -> reloadinstance, (p_296164_) -> { + Util.ifElse(p_296164_, (p_296162_) -> { + this.rollbackResourcePacks(p_296162_, minecraft$gameloadcookie); }, () -> { @@ -574,8 +_,10 @@ - this.f_167847_.m_168556_(); - this.m_293750_(minecraft$gameloadcookie); + this.reloadStateTracker.finishReload(); + this.onResourceLoadFinished(minecraft$gameloadcookie); + if (net.minecraftforge.client.loading.ClientModLoader.completeModLoading()) + return; // Do not overwrite the error screen if there are errors }); - }, false)); + }, false).get()); - this.f_278504_ = QuickPlayLog.m_278648_(p_91084_.f_278410_.f_278493_()); + this.quickPlayLog = QuickPlayLog.of(p_91084_.quickPlay.path()); } @@ -673,7 +_,7 @@ - private String m_91270_() { + private String createTitle() { StringBuilder stringbuilder = new StringBuilder("Minecraft"); - if (m_193589_().m_184597_()) { + if (checkModStatus().shouldReportAsModified()) { - stringbuilder.append("*"); + stringbuilder.append(' ').append(net.minecraftforge.forge.snapshots.ForgeSnapshotsMod.BRANDING_NAME).append('*'); } @@ -102,77 +102,77 @@ stringbuilder.append(" "); @@ -698,6 +_,8 @@ - private UserApiService m_193585_(YggdrasilAuthenticationService p_193586_, GameConfig p_193587_) { + private UserApiService createUserApiService(YggdrasilAuthenticationService p_193586_, GameConfig p_193587_) { try { -+ if ("0".equals(p_193587_.f_101905_.f_101942_.m_92547_())) // Forge: We use "0" in dev. Short circuit to stop exception spam. ++ if ("0".equals(p_193587_.user.user.getAccessToken())) // Forge: We use "0" in dev. Short circuit to stop exception spam. + return UserApiService.OFFLINE; - return p_193586_.createUserApiService(p_193587_.f_101905_.f_101942_.m_92547_()); + return p_193586_.createUserApiService(p_193587_.user.user.getAccessToken()); } catch (AuthenticationException authenticationexception) { - f_90982_.error("Failed to verify authentication", (Throwable)authenticationexception); + LOGGER.error("Failed to verify authentication", (Throwable)authenticationexception); @@ -710,7 +_,7 @@ } - private void m_91239_(Throwable p_91240_, @Nullable Minecraft.GameLoadCookie p_299515_) { -- if (this.f_91038_.m_10523_().size() > 1) { -+ if (this.f_91038_.m_10524_().stream().anyMatch(e -> !e.m_10449_())) { //Forge: This caused infinite loop if any resource packs are forced. Such as mod resources. So check if we can disable any. - this.m_91241_(p_91240_, (Component)null, p_299515_); + private void rollbackResourcePacks(Throwable p_91240_, @Nullable Minecraft.GameLoadCookie p_299515_) { +- if (this.resourcePackRepository.getSelectedIds().size() > 1) { ++ if (this.resourcePackRepository.getSelectedPacks().stream().anyMatch(e -> !e.isRequired())) { //Forge: This caused infinite loop if any resource packs are forced. Such as mod resources. So check if we can disable any. + this.clearResourcePacksOnError(p_91240_, (Component)null, p_299515_); } else { - Util.m_137559_(p_91240_); + Util.throwAsRuntime(p_91240_); @@ -802,7 +_,10 @@ } - public void m_91271_() { -- this.f_90997_.m_235232_(SearchRegistry.f_119941_, (p_231451_) -> { + public void createSearchTrees() { +- this.searchRegistry.register(SearchRegistry.CREATIVE_NAMES, (p_231451_) -> { + var nameSearchKeys = net.minecraftforge.client.CreativeModeTabSearchRegistry.getNameSearchKeys(); + var tagSearchKeys = net.minecraftforge.client.CreativeModeTabSearchRegistry.getTagSearchKeys(); + for (var nameSearchKey : nameSearchKeys.values()) -+ this.f_90997_.m_235232_(nameSearchKey, (p_231451_) -> { ++ this.searchRegistry.register(nameSearchKey, (p_231451_) -> { return new FullTextSearchTree<>((p_210797_) -> { - return p_210797_.m_41651_((Player)null, TooltipFlag.Default.f_256752_.m_257777_()).stream().map((p_231455_) -> { - return ChatFormatting.m_126649_(p_231455_.getString()).trim(); + return p_210797_.getTooltipLines((Player)null, TooltipFlag.Default.NORMAL.asCreative()).stream().map((p_231455_) -> { + return ChatFormatting.stripFormatting(p_231455_.getString()).trim(); @@ -813,7 +_,8 @@ - return Stream.of(BuiltInRegistries.f_257033_.m_7981_(p_91317_.m_41720_())); + return Stream.of(BuiltInRegistries.ITEM.getKey(p_91317_.getItem())); }, p_231451_); }); -- this.f_90997_.m_235232_(SearchRegistry.f_119942_, (p_231430_) -> { +- this.searchRegistry.register(SearchRegistry.CREATIVE_TAGS, (p_231430_) -> { + for (var tagSearchKey : tagSearchKeys.values()) -+ this.f_90997_.m_235232_(tagSearchKey, (p_231430_) -> { ++ this.searchRegistry.register(tagSearchKey, (p_231430_) -> { return new IdSearchTree<>((p_231353_) -> { - return p_231353_.m_204131_().map(TagKey::f_203868_); + return p_231353_.getTags().map(TagKey::location); }, p_231430_); @@ -833,9 +_,12 @@ }); }, p_301514_); }); -- CreativeModeTabs.m_258007_().m_257882_((p_255439_) -> { -- this.m_231374_(SearchRegistry.f_119941_, p_255439_); -- this.m_231374_(SearchRegistry.f_119942_, p_255439_); +- CreativeModeTabs.searchTab().setSearchTreeBuilder((p_255439_) -> { +- this.populateSearchTree(SearchRegistry.CREATIVE_NAMES, p_255439_); +- this.populateSearchTree(SearchRegistry.CREATIVE_TAGS, p_255439_); + nameSearchKeys.forEach((tab, nameSearchKey) -> { + var tagSearchKey = tagSearchKeys.get(tab); -+ tab.m_257882_(contents -> { -+ this.m_231374_(nameSearchKey, contents); -+ this.m_231374_(tagSearchKey, contents); ++ tab.setSearchTreeBuilder(contents -> { ++ this.populateSearchTree(nameSearchKey, contents); ++ this.populateSearchTree(tagSearchKey, contents); + }); }); } @@ -1018,10 +_,6 @@ - f_90982_.error("setScreen called from non-game thread"); + LOGGER.error("setScreen called from non-game thread"); } -- if (this.f_91080_ != null) { -- this.f_91080_.m_7861_(); +- if (this.screen != null) { +- this.screen.removed(); - } - - if (p_91153_ == null && this.f_91073_ == null) { + if (p_91153_ == null && this.level == null) { p_91153_ = new TitleScreen(); - } else if (p_91153_ == null && this.f_91074_.m_21224_()) { + } else if (p_91153_ == null && this.player.isDeadOrDying()) { @@ -1032,6 +_,19 @@ } } + net.minecraftforge.client.ForgeHooksClient.clearGuiLayers(this); -+ Screen old = this.f_91080_; ++ Screen old = this.screen; + if (p_91153_ != null) { + var event = net.minecraftforge.client.event.ForgeEventFactoryClient.onScreenOpening(old, p_91153_); + if (event == null) return; @@ -181,241 +181,241 @@ + + if (old != null && p_91153_ != old) { + net.minecraftforge.client.event.ForgeEventFactoryClient.onScreenClose(old); -+ old.m_7861_(); ++ old.removed(); + } + - this.f_91080_ = p_91153_; - if (this.f_91080_ != null) { - this.f_91080_.m_274333_(); + this.screen = p_91153_; + if (this.screen != null) { + this.screen.added(); @@ -1178,9 +_,12 @@ RenderSystem.enableCull(); - this.f_91026_.m_7238_(); - if (!this.f_91079_) { -+ this.realPartialTick = this.f_91012_ ? this.f_91013_ : this.f_90991_.f_92518_; // Cache this since pause is volatile + this.profiler.pop(); + if (!this.noRender) { ++ this.realPartialTick = this.pause ? this.pausePartialTick : this.timer.partialTick; // Cache this since pause is volatile + net.minecraftforge.event.ForgeEventFactory.onRenderTickStart(this.realPartialTick); - this.f_91026_.m_6182_("gameRenderer"); - this.f_91063_.m_109093_(this.f_91012_ ? this.f_91013_ : this.f_90991_.f_92518_, i, p_91384_); - this.f_91026_.m_7238_(); + this.profiler.popPush("gameRenderer"); + this.gameRenderer.render(this.pause ? this.pausePartialTick : this.timer.partialTick, i, p_91384_); + this.profiler.pop(); + net.minecraftforge.event.ForgeEventFactory.onRenderTickEnd(this.realPartialTick); } - if (this.f_91056_ != null) { + if (this.fpsPieResults != null) { @@ -1301,10 +_,12 @@ - this.f_90990_.m_85378_((double)i); - if (this.f_91080_ != null) { - this.f_91080_.m_6574_(this, this.f_90990_.m_85445_(), this.f_90990_.m_85446_()); -+ net.minecraftforge.client.ForgeHooksClient.resizeGuiLayers(this, this.f_90990_.m_85445_(), this.f_90990_.m_85446_()); + this.window.setGuiScale((double)i); + if (this.screen != null) { + this.screen.resize(this, this.window.getGuiScaledWidth(), this.window.getGuiScaledHeight()); ++ net.minecraftforge.client.ForgeHooksClient.resizeGuiLayers(this, this.window.getGuiScaledWidth(), this.window.getGuiScaledHeight()); } - RenderTarget rendertarget = this.m_91385_(); - rendertarget.m_83941_(this.f_90990_.m_85441_(), this.f_90990_.m_85442_(), f_91002_); -+ if (this.f_91063_ != null) - this.f_91063_.m_109097_(this.f_90990_.m_85441_(), this.f_90990_.m_85442_()); - this.f_91067_.m_91599_(); + RenderTarget rendertarget = this.getMainRenderTarget(); + rendertarget.resize(this.window.getWidth(), this.window.getHeight(), ON_OSX); ++ if (this.gameRenderer != null) + this.gameRenderer.resize(this.window.getWidth(), this.window.getHeight()); + this.mouseHandler.setIgnoreFirstMove(); } @@ -1578,6 +_,7 @@ } - public void m_91395_() { -+ if (this.m_91396_()) net.minecraftforge.event.ForgeEventFactory.onGameShuttingDown(); - this.f_91019_ = false; + public void stop() { ++ if (this.isRunning()) net.minecraftforge.event.ForgeEventFactory.onGameShuttingDown(); + this.running = false; } @@ -1607,10 +_,18 @@ - if (p_91387_ && this.f_91077_ != null && this.f_91077_.m_6662_() == HitResult.Type.BLOCK) { - BlockHitResult blockhitresult = (BlockHitResult)this.f_91077_; - BlockPos blockpos = blockhitresult.m_82425_(); -- if (!this.f_91073_.m_8055_(blockpos).m_60795_()) { -+ if (!this.f_91073_.m_46859_(blockpos)) { -+ var inputEvent = net.minecraftforge.client.ForgeHooksClient.onClickInput(0, this.f_91066_.f_92096_, InteractionHand.MAIN_HAND); + if (p_91387_ && this.hitResult != null && this.hitResult.getType() == HitResult.Type.BLOCK) { + BlockHitResult blockhitresult = (BlockHitResult)this.hitResult; + BlockPos blockpos = blockhitresult.getBlockPos(); +- if (!this.level.getBlockState(blockpos).isAir()) { ++ if (!this.level.isEmptyBlock(blockpos)) { ++ var inputEvent = net.minecraftforge.client.ForgeHooksClient.onClickInput(0, this.options.keyAttack, InteractionHand.MAIN_HAND); + if (inputEvent.isCanceled()) { + if (inputEvent.shouldSwingHand()) { -+ this.f_91061_.addBlockHitEffects(blockpos, blockhitresult); -+ this.f_91074_.m_6674_(InteractionHand.MAIN_HAND); ++ this.particleEngine.addBlockHitEffects(blockpos, blockhitresult); ++ this.player.swing(InteractionHand.MAIN_HAND); + } + return; + } - Direction direction = blockhitresult.m_82434_(); -- if (this.f_91072_.m_105283_(blockpos, direction)) { -- this.f_91061_.m_107367_(blockpos, direction); -+ if (this.f_91072_.m_105283_(blockpos, direction) && inputEvent.shouldSwingHand()) { -+ this.f_91061_.addBlockHitEffects(blockpos, blockhitresult); - this.f_91074_.m_6674_(InteractionHand.MAIN_HAND); + Direction direction = blockhitresult.getDirection(); +- if (this.gameMode.continueDestroyBlock(blockpos, direction)) { +- this.particleEngine.crack(blockpos, direction); ++ if (this.gameMode.continueDestroyBlock(blockpos, direction) && inputEvent.shouldSwingHand()) { ++ this.particleEngine.addBlockHitEffects(blockpos, blockhitresult); + this.player.swing(InteractionHand.MAIN_HAND); } } @@ -1639,6 +_,8 @@ return false; } else { boolean flag = false; -+ var inputEvent = net.minecraftforge.client.ForgeHooksClient.onClickInput(0, this.f_91066_.f_92096_, InteractionHand.MAIN_HAND); ++ var inputEvent = net.minecraftforge.client.ForgeHooksClient.onClickInput(0, this.options.keyAttack, InteractionHand.MAIN_HAND); + if (!inputEvent.isCanceled()) - switch (this.f_91077_.m_6662_()) { + switch (this.hitResult.getType()) { case ENTITY: - this.f_91072_.m_105223_(this.f_91074_, ((EntityHitResult)this.f_91077_).m_82443_()); + this.gameMode.attack(this.player, ((EntityHitResult)this.hitResult).getEntity()); @@ -1646,7 +_,7 @@ case BLOCK: - BlockHitResult blockhitresult = (BlockHitResult)this.f_91077_; - BlockPos blockpos = blockhitresult.m_82425_(); -- if (!this.f_91073_.m_8055_(blockpos).m_60795_()) { -+ if (!this.f_91073_.m_46859_(blockpos)) { - this.f_91072_.m_105269_(blockpos, blockhitresult.m_82434_()); - if (this.f_91073_.m_8055_(blockpos).m_60795_()) { + BlockHitResult blockhitresult = (BlockHitResult)this.hitResult; + BlockPos blockpos = blockhitresult.getBlockPos(); +- if (!this.level.getBlockState(blockpos).isAir()) { ++ if (!this.level.isEmptyBlock(blockpos)) { + this.gameMode.startDestroyBlock(blockpos, blockhitresult.getDirection()); + if (this.level.getBlockState(blockpos).isAir()) { flag = true; @@ -1659,8 +_,10 @@ } - this.f_91074_.m_36334_(); -+ net.minecraftforge.common.ForgeHooks.onEmptyLeftClick(this.f_91074_); + this.player.resetAttackStrengthTicker(); ++ net.minecraftforge.common.ForgeHooks.onEmptyLeftClick(this.player); } + if (inputEvent.shouldSwingHand()) - this.f_91074_.m_6674_(InteractionHand.MAIN_HAND); + this.player.swing(InteractionHand.MAIN_HAND); return flag; } @@ -1676,6 +_,11 @@ } for(InteractionHand interactionhand : InteractionHand.values()) { -+ var inputEvent = net.minecraftforge.client.ForgeHooksClient.onClickInput(1, this.f_91066_.f_92095_, interactionhand); ++ var inputEvent = net.minecraftforge.client.ForgeHooksClient.onClickInput(1, this.options.keyUse, interactionhand); + if (inputEvent.isCanceled()) { -+ if (inputEvent.shouldSwingHand()) this.f_91074_.m_6674_(interactionhand); ++ if (inputEvent.shouldSwingHand()) this.player.swing(interactionhand); + return; + } - ItemStack itemstack = this.f_91074_.m_21120_(interactionhand); - if (!itemstack.m_246617_(this.f_91073_.m_246046_())) { + ItemStack itemstack = this.player.getItemInHand(interactionhand); + if (!itemstack.isItemEnabled(this.level.enabledFeatures())) { return; @@ -1696,7 +_,7 @@ } - if (interactionresult.m_19077_()) { -- if (interactionresult.m_19080_()) { -+ if (interactionresult.m_19080_() && inputEvent.shouldSwingHand()) { - this.f_91074_.m_6674_(interactionhand); + if (interactionresult.consumesAction()) { +- if (interactionresult.shouldSwing()) { ++ if (interactionresult.shouldSwing() && inputEvent.shouldSwingHand()) { + this.player.swing(interactionhand); } @@ -1708,7 +_,7 @@ - int i = itemstack.m_41613_(); - InteractionResult interactionresult1 = this.f_91072_.m_233732_(this.f_91074_, interactionhand, blockhitresult); - if (interactionresult1.m_19077_()) { -- if (interactionresult1.m_19080_()) { -+ if (interactionresult1.m_19080_() && inputEvent.shouldSwingHand()) { - this.f_91074_.m_6674_(interactionhand); - if (!itemstack.m_41619_() && (itemstack.m_41613_() != i || this.f_91072_.m_105290_())) { - this.f_91063_.f_109055_.m_109320_(interactionhand); + int i = itemstack.getCount(); + InteractionResult interactionresult1 = this.gameMode.useItemOn(this.player, interactionhand, blockhitresult); + if (interactionresult1.consumesAction()) { +- if (interactionresult1.shouldSwing()) { ++ if (interactionresult1.shouldSwing() && inputEvent.shouldSwingHand()) { + this.player.swing(interactionhand); + if (!itemstack.isEmpty() && (itemstack.getCount() != i || this.gameMode.hasInfiniteItems())) { + this.gameRenderer.itemInHandRenderer.itemUsed(interactionhand); @@ -1724,6 +_,9 @@ } } -+ if (itemstack.m_41619_() && (this.f_91077_ == null || this.f_91077_.m_6662_() == HitResult.Type.MISS)) -+ net.minecraftforge.common.ForgeHooks.onEmptyClick(this.f_91074_, interactionhand); ++ if (itemstack.isEmpty() && (this.hitResult == null || this.hitResult.getType() == HitResult.Type.MISS)) ++ net.minecraftforge.common.ForgeHooks.onEmptyClick(this.player, interactionhand); + - if (!itemstack.m_41619_()) { - InteractionResult interactionresult2 = this.f_91072_.m_233721_(this.f_91074_, interactionhand); - if (interactionresult2.m_19077_()) { + if (!itemstack.isEmpty()) { + InteractionResult interactionresult2 = this.gameMode.useItem(this.player, interactionhand); + if (interactionresult2.consumesAction()) { @@ -1750,6 +_,8 @@ - --this.f_91011_; + --this.rightClickDelay; } + net.minecraftforge.event.ForgeEventFactory.onPreClientTick(); + - this.f_91026_.m_6180_("gui"); - this.f_240378_.m_240688_(); - this.f_91065_.m_193832_(this.f_91012_); + this.profiler.push("gui"); + this.chatListener.tick(); + this.gui.tick(this.pause); @@ -1838,6 +_,7 @@ - this.f_91005_.m_120596_(); + this.tutorial.tick(); -+ net.minecraftforge.event.ForgeEventFactory.onPreLevelTick(this.f_91073_, () -> true); ++ net.minecraftforge.event.ForgeEventFactory.onPreLevelTick(this.level, () -> true); try { - this.f_91073_.m_104726_(() -> { + this.level.tick(() -> { return true; @@ -1853,6 +_,7 @@ throw new ReportedException(crashreport); } -+ net.minecraftforge.event.ForgeEventFactory.onPostLevelTick(this.f_91073_, () -> true); ++ net.minecraftforge.event.ForgeEventFactory.onPostLevelTick(this.level, () -> true); } - this.f_91026_.m_6182_("animateTick"); + this.profiler.popPush("animateTick"); @@ -1872,6 +_,8 @@ - this.f_91026_.m_6182_("keyboard"); - this.f_91068_.m_90931_(); - this.f_91026_.m_7238_(); + this.profiler.popPush("keyboard"); + this.keyboardHandler.tick(); + this.profiler.pop(); + + net.minecraftforge.event.ForgeEventFactory.onPostClientTick(); } - private boolean m_91278_() { + private boolean isMultiplayerServer() { @@ -2068,6 +_,7 @@ } - public void m_91156_(ClientLevel p_91157_) { -+ if (this.f_91073_ != null) net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.event.level.LevelEvent.Unload(this.f_91073_)); + public void setLevel(ClientLevel p_91157_) { ++ if (this.level != null) net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.event.level.LevelEvent.Unload(this.level)); ProgressScreen progressscreen = new ProgressScreen(true); - progressscreen.m_6309_(Component.m_237115_("connect.joining")); - this.m_91362_(progressscreen); + progressscreen.progressStartNoAbort(Component.translatable("connect.joining")); + this.updateScreenAndTick(progressscreen); @@ -2101,10 +_,12 @@ - IntegratedServer integratedserver = this.f_91007_; - this.f_91007_ = null; - this.f_91063_.m_109150_(); -+ net.minecraftforge.client.ForgeHooksClient.firePlayerLogout(this.f_91072_, this.f_91074_); - this.f_91072_ = null; - this.f_240365_.m_93328_(); - this.m_91362_(p_91321_); - if (this.f_91073_ != null) { -+ net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.event.level.LevelEvent.Unload(this.f_91073_)); + IntegratedServer integratedserver = this.singleplayerServer; + this.singleplayerServer = null; + this.gameRenderer.resetData(); ++ net.minecraftforge.client.ForgeHooksClient.firePlayerLogout(this.gameMode, this.player); + this.gameMode = null; + this.narrator.clear(); + this.updateScreenAndTick(p_91321_); + if (this.level != null) { ++ net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.event.level.LevelEvent.Unload(this.level)); if (integratedserver != null) { - this.f_91026_.m_6180_("waitForServer"); + this.profiler.push("waitForServer"); @@ -2118,6 +_,7 @@ - this.f_243981_.m_246151_(); - this.f_91065_.m_93089_(); - this.f_91010_ = false; -+ net.minecraftforge.client.ForgeHooksClient.handleClientLevelClosing(this.f_91073_); + this.downloadedPackSource.clearServerPack(); + this.gui.onDisconnected(); + this.isLocalServer = false; ++ net.minecraftforge.client.ForgeHooksClient.handleClientLevelClosing(this.level); } - this.f_91073_ = null; + this.level = null; @@ -2242,6 +_,7 @@ - private void m_91280_() { - if (this.f_91077_ != null && this.f_91077_.m_6662_() != HitResult.Type.MISS) { -+ if (net.minecraftforge.client.ForgeHooksClient.onClickInput(2, this.f_91066_.f_92097_, InteractionHand.MAIN_HAND).isCanceled()) return; - boolean flag = this.f_91074_.m_150110_().f_35937_; + private void pickBlock() { + if (this.hitResult != null && this.hitResult.getType() != HitResult.Type.MISS) { ++ if (net.minecraftforge.client.ForgeHooksClient.onClickInput(2, this.options.keyPickItem, InteractionHand.MAIN_HAND).isCanceled()) return; + boolean flag = this.player.getAbilities().instabuild; BlockEntity blockentity = null; - HitResult.Type hitresult$type = this.f_91077_.m_6662_(); + HitResult.Type hitresult$type = this.hitResult.getType(); @@ -2254,10 +_,7 @@ } - Block block = blockstate.m_60734_(); -- itemstack = block.m_7397_(this.f_91073_, blockpos, blockstate); -- if (itemstack.m_41619_()) { + Block block = blockstate.getBlock(); +- itemstack = block.getCloneItemStack(this.level, blockpos, blockstate); +- if (itemstack.isEmpty()) { - return; - } -+ itemstack = blockstate.getCloneItemStack(this.f_91077_, this.f_91073_, blockpos, this.f_91074_); ++ itemstack = blockstate.getCloneItemStack(this.hitResult, this.level, blockpos, this.player); - if (flag && Screen.m_96637_() && blockstate.m_155947_()) { - blockentity = this.f_91073_.m_7702_(blockpos); + if (flag && Screen.hasControlDown() && blockstate.hasBlockEntity()) { + blockentity = this.level.getBlockEntity(blockpos); @@ -2268,7 +_,7 @@ } - Entity entity = ((EntityHitResult)this.f_91077_).m_82443_(); -- itemstack = entity.m_142340_(); -+ itemstack = entity.getPickedResult(this.f_91077_); + Entity entity = ((EntityHitResult)this.hitResult).getEntity(); +- itemstack = entity.getPickResult(); ++ itemstack = entity.getPickedResult(this.hitResult); if (itemstack == null) { return; } @@ -2804,6 +_,19 @@ - public void m_91312_(int p_91313_) { - this.f_91051_.m_119410_(p_91313_); + public void updateMaxMipLevel(int p_91313_) { + this.modelManager.updateMaxMipLevel(p_91313_); + } + + public ItemColors getItemColors() { -+ return this.f_91041_; ++ return this.itemColors; + } + + public SearchRegistry getSearchTreeManager() { -+ return this.f_90997_; ++ return this.searchRegistry; + } + + private float realPartialTick; @@ -423,4 +423,4 @@ + return this.realPartialTick; } - public EntityModelSet m_167973_() { + public EntityModelSet getEntityModels() { diff --git a/patches/minecraft/net/minecraft/client/MouseHandler.java.patch b/patches/minecraft/net/minecraft/client/MouseHandler.java.patch index 6d7b2b6de1..157c2e6008 100644 --- a/patches/minecraft/net/minecraft/client/MouseHandler.java.patch +++ b/patches/minecraft/net/minecraft/client/MouseHandler.java.patch @@ -1,30 +1,30 @@ --- a/net/minecraft/client/MouseHandler.java +++ b/net/minecraft/client/MouseHandler.java @@ -74,6 +_,7 @@ - this.f_91510_ = -1; + this.activeButton = -1; } + if (net.minecraftforge.client.event.ForgeEventFactoryClient.onMouseButtonPre(p_91532_, p_91533_, p_91534_)) return; boolean[] aboolean = new boolean[]{false}; - if (this.f_91503_.m_91265_() == null) { - if (this.f_91503_.f_91080_ == null) { + if (this.minecraft.getOverlay() == null) { + if (this.minecraft.screen == null) { @@ -87,11 +_,19 @@ if (flag) { - screen.m_169415_(); - Screen.m_96579_(() -> { -- aboolean[0] = screen.m_6375_(d0, d1, i); + screen.afterMouseAction(); + Screen.wrapScreenError(() -> { +- aboolean[0] = screen.mouseClicked(d0, d1, i); + aboolean[0] = net.minecraftforge.client.event.ForgeEventFactoryClient.onScreenMouseClickedPre(screen, d0, d1, i); + if (!aboolean[0]) { -+ aboolean[0] = this.f_91503_.f_91080_.m_6375_(d0, d1, i); ++ aboolean[0] = this.minecraft.screen.mouseClicked(d0, d1, i); + aboolean[0] = net.minecraftforge.client.event.ForgeEventFactoryClient.onScreenMouseClickedPost(screen, d0, d1, i, aboolean[0]); + } }, "mouseClicked event handler", screen.getClass().getCanonicalName()); } else { - Screen.m_96579_(() -> { -- aboolean[0] = screen.m_6348_(d0, d1, i); + Screen.wrapScreenError(() -> { +- aboolean[0] = screen.mouseReleased(d0, d1, i); + aboolean[0] = net.minecraftforge.client.event.ForgeEventFactoryClient.onScreenMouseReleasedPre(screen, d0, d1, i); + if (!aboolean[0]) { -+ aboolean[0] = this.f_91503_.f_91080_.m_6348_(d0, d1, i); ++ aboolean[0] = this.minecraft.screen.mouseReleased(d0, d1, i); + aboolean[0] = net.minecraftforge.client.event.ForgeEventFactoryClient.onScreenMouseReleasedPost(screen, d0, d1, i, aboolean[0]); + } }, "mouseReleased event handler", screen.getClass().getCanonicalName()); @@ -39,48 +39,48 @@ } @@ -129,8 +_,10 @@ - if (this.f_91503_.f_91080_ != null) { - double d3 = this.f_91507_ * (double)this.f_91503_.m_91268_().m_85445_() / (double)this.f_91503_.m_91268_().m_85443_(); - double d4 = this.f_91508_ * (double)this.f_91503_.m_91268_().m_85446_() / (double)this.f_91503_.m_91268_().m_85444_(); -- this.f_91503_.f_91080_.m_6050_(d3, d4, d1, d2); - this.f_91503_.f_91080_.m_169415_(); -+ if (net.minecraftforge.client.event.ForgeEventFactoryClient.onScreenMouseScrollPre(this.f_91503_.f_91080_, d3, d4, d1, d2)) return; -+ if (this.f_91503_.f_91080_.m_6050_(d3, d4, d1, d2)) return; -+ net.minecraftforge.client.event.ForgeEventFactoryClient.onScreenMouseScrollPost(this.f_91503_.f_91080_, d3, d4, d1, d2); - } else if (this.f_91503_.f_91074_ != null) { - if (this.f_291070_ != 0.0D && Math.signum(d1) != Math.signum(this.f_291070_)) { - this.f_291070_ = 0.0D; + if (this.minecraft.screen != null) { + double d3 = this.xpos * (double)this.minecraft.getWindow().getGuiScaledWidth() / (double)this.minecraft.getWindow().getScreenWidth(); + double d4 = this.ypos * (double)this.minecraft.getWindow().getGuiScaledHeight() / (double)this.minecraft.getWindow().getScreenHeight(); +- this.minecraft.screen.mouseScrolled(d3, d4, d1, d2); + this.minecraft.screen.afterMouseAction(); ++ if (net.minecraftforge.client.event.ForgeEventFactoryClient.onScreenMouseScrollPre(this.minecraft.screen, d3, d4, d1, d2)) return; ++ if (this.minecraft.screen.mouseScrolled(d3, d4, d1, d2)) return; ++ net.minecraftforge.client.event.ForgeEventFactoryClient.onScreenMouseScrollPost(this.minecraft.screen, d3, d4, d1, d2); + } else if (this.minecraft.player != null) { + if (this.accumulatedScrollX != 0.0D && Math.signum(d1) != Math.signum(this.accumulatedScrollX)) { + this.accumulatedScrollX = 0.0D; @@ -151,6 +_,7 @@ - this.f_291070_ -= (double)j; - this.f_291867_ -= (double)i; + this.accumulatedScrollX -= (double)j; + this.accumulatedScrollY -= (double)i; int k = i == 0 ? -j : i; + if (net.minecraftforge.client.event.ForgeEventFactoryClient.onMouseScroll(this, d1, d2)) return; - if (this.f_91503_.f_91074_.m_5833_()) { - if (this.f_91503_.f_91065_.m_93085_().m_94768_()) { - this.f_91503_.f_91065_.m_93085_().m_205380_(-k); + if (this.minecraft.player.isSpectator()) { + if (this.minecraft.gui.getSpectatorGui().isMenuActive()) { + this.minecraft.gui.getSpectatorGui().onMouseScrolled(-k); @@ -219,7 +_,9 @@ - double d2 = (p_91563_ - this.f_91507_) * (double)this.f_91503_.m_91268_().m_85445_() / (double)this.f_91503_.m_91268_().m_85443_(); - double d3 = (p_91564_ - this.f_91508_) * (double)this.f_91503_.m_91268_().m_85446_() / (double)this.f_91503_.m_91268_().m_85444_(); - Screen.m_96579_(() -> { -- screen.m_7979_(d0, d1, this.f_91510_, d2, d3); -+ if (net.minecraftforge.client.event.ForgeEventFactoryClient.onScreenMouseDragPre(screen, d0, d1, this.f_91510_, d2, d3)) return; -+ if (screen.m_7979_(d0, d1, this.f_91510_, d2, d3)) return; -+ net.minecraftforge.client.event.ForgeEventFactoryClient.onScreenMouseDragPost(screen, d0, d1, this.f_91510_, d2, d3); + double d2 = (p_91563_ - this.xpos) * (double)this.minecraft.getWindow().getGuiScaledWidth() / (double)this.minecraft.getWindow().getScreenWidth(); + double d3 = (p_91564_ - this.ypos) * (double)this.minecraft.getWindow().getGuiScaledHeight() / (double)this.minecraft.getWindow().getScreenHeight(); + Screen.wrapScreenError(() -> { +- screen.mouseDragged(d0, d1, this.activeButton, d2, d3); ++ if (net.minecraftforge.client.event.ForgeEventFactoryClient.onScreenMouseDragPre(screen, d0, d1, this.activeButton, d2, d3)) return; ++ if (screen.mouseDragged(d0, d1, this.activeButton, d2, d3)) return; ++ net.minecraftforge.client.event.ForgeEventFactoryClient.onScreenMouseDragPost(screen, d0, d1, this.activeButton, d2, d3); }, "mouseDragged event handler", screen.getClass().getCanonicalName()); } @@ -302,6 +_,14 @@ - public double m_91594_() { - return this.f_91508_; + public double ypos() { + return this.ypos; + } + + public double getXVelocity() { -+ return this.f_91516_; ++ return this.accumulatedDX; + } + + public double getYVelocity() { -+ return this.f_91517_; ++ return this.accumulatedDY; } - public void m_91599_() { + public void setIgnoreFirstMove() { diff --git a/patches/minecraft/net/minecraft/client/Options.java.patch b/patches/minecraft/net/minecraft/client/Options.java.patch index 92b25e4750..b288df9d16 100644 --- a/patches/minecraft/net/minecraft/client/Options.java.patch +++ b/patches/minecraft/net/minecraft/client/Options.java.patch @@ -2,25 +2,25 @@ +++ b/net/minecraft/client/Options.java @@ -507,7 +_,8 @@ }, new OptionInstance.LazyEnum<>(() -> { - return Stream.concat(Stream.of(""), Minecraft.m_91087_().m_91106_().m_194525_().stream()).toList(); + return Stream.concat(Stream.of(""), Minecraft.getInstance().getSoundManager().getAvailableSoundDevices().stream()).toList(); }, (p_232011_) -> { -- return Minecraft.m_91087_().m_91396_() && p_232011_ != "" && !Minecraft.m_91087_().m_91106_().m_194525_().contains(p_232011_) ? Optional.empty() : Optional.of(p_232011_); +- return Minecraft.getInstance().isRunning() && p_232011_ != "" && !Minecraft.getInstance().getSoundManager().getAvailableSoundDevices().contains(p_232011_) ? Optional.empty() : Optional.of(p_232011_); + // FORGE: fix incorrect string comparison - PR #8767 -+ return Minecraft.m_91087_().m_91396_() && (p_232011_ == null || !p_232011_.isEmpty()) && !Minecraft.m_91087_().m_91106_().m_194525_().contains(p_232011_) ? Optional.empty() : Optional.of(p_232011_); ++ return Minecraft.getInstance().isRunning() && (p_232011_ == null || !p_232011_.isEmpty()) && !Minecraft.getInstance().getSoundManager().getAvailableSoundDevices().contains(p_232011_) ? Optional.empty() : Optional.of(p_232011_); }, Codec.STRING), "", (p_299350_) -> { - SoundManager soundmanager = Minecraft.m_91087_().m_91106_(); - soundmanager.m_194526_(); + SoundManager soundmanager = Minecraft.getInstance().getSoundManager(); + soundmanager.reload(); @@ -835,6 +_,7 @@ } public Options(Minecraft p_92138_, File p_92139_) { + setForgeKeybindProperties(); - this.f_92060_ = p_92138_; - this.f_92110_ = new File(p_92139_, "options.txt"); - boolean flag = p_92138_.m_91103_(); + this.minecraft = p_92138_; + this.optionsFile = new File(p_92139_, "options.txt"); + boolean flag = p_92138_.is64Bit(); @@ -957,11 +_,21 @@ - p_168428_.m_213982_("telemetryOptInExtra", this.f_260461_); - this.f_263744_ = p_168428_.m_142682_("onboardAccessibility", this.f_263744_); + p_168428_.process("telemetryOptInExtra", this.telemetryOptInExtra); + this.onboardAccessibility = p_168428_.process("onboardAccessibility", this.onboardAccessibility); + net.minecraftforge.forge.snapshots.ForgeSnapshotsMod.processOptions(p_168428_); + processOptionsForge(p_168428_); @@ -28,69 +28,69 @@ + // FORGE: split off to allow reloading options after mod loading is done + private void processOptionsForge(Options.FieldAccess p_168428_) + { - for(KeyMapping keymapping : this.f_92059_) { -- String s = keymapping.m_90865_(); -+ String s = keymapping.m_90865_() + (keymapping.getKeyModifier() != net.minecraftforge.client.settings.KeyModifier.NONE ? ":" + keymapping.getKeyModifier() : ""); - String s1 = p_168428_.m_141943_("key_" + keymapping.m_90860_(), s); + for(KeyMapping keymapping : this.keyMappings) { +- String s = keymapping.saveString(); ++ String s = keymapping.saveString() + (keymapping.getKeyModifier() != net.minecraftforge.client.settings.KeyModifier.NONE ? ":" + keymapping.getKeyModifier() : ""); + String s1 = p_168428_.process("key_" + keymapping.getName(), s); if (!s.equals(s1)) { -- keymapping.m_90848_(InputConstants.m_84851_(s1)); +- keymapping.setKey(InputConstants.getKey(s1)); + if (s1.indexOf(':') != -1) { + String[] pts = s1.split(":"); -+ keymapping.setKeyModifierAndCode(net.minecraftforge.client.settings.KeyModifier.valueFromString(pts[1]), InputConstants.m_84851_(pts[0])); ++ keymapping.setKeyModifierAndCode(net.minecraftforge.client.settings.KeyModifier.valueFromString(pts[1]), InputConstants.getKey(pts[0])); + } else -+ keymapping.setKeyModifierAndCode(net.minecraftforge.client.settings.KeyModifier.NONE, InputConstants.m_84851_(s1)); ++ keymapping.setKeyModifierAndCode(net.minecraftforge.client.settings.KeyModifier.NONE, InputConstants.getKey(s1)); } } @@ -980,6 +_,9 @@ } - public void m_92140_() { + public void load() { + this.load(false); + } + public void load(boolean limited) { try { - if (!this.f_92110_.exists()) { + if (!this.optionsFile.exists()) { return; @@ -1008,7 +_,8 @@ } } -- this.m_168427_(new Options.FieldAccess() { -+ java.util.function.Consumer processor = limited ? this::processOptionsForge : this::m_168427_; +- this.processOptions(new Options.FieldAccess() { ++ java.util.function.Consumer processor = limited ? this::processOptionsForge : this::processOptions; + processor.accept(new Options.FieldAccess() { @Nullable - private String m_168458_(String p_168459_) { - return compoundtag1.m_128441_(p_168459_) ? compoundtag1.m_128461_(p_168459_) : null; + private String getValueOrNull(String p_168459_) { + return compoundtag1.contains(p_168459_) ? compoundtag1.getString(p_168459_) : null; @@ -1181,6 +_,7 @@ } - public void m_92172_() { + public void broadcastOptions() { + if (net.minecraftforge.client.loading.ClientModLoader.isLoading()) return; //Don't save settings before mods add keybindigns and the like to prevent them from being deleted. - if (this.f_92060_.f_91074_ != null) { - this.f_92060_.f_91074_.f_108617_.m_295327_(new ServerboundClientInformationPacket(this.m_294596_())); + if (this.minecraft.player != null) { + this.minecraft.player.connection.send(new ServerboundClientInformationPacket(this.buildPlayerInformation())); } @@ -1239,6 +_,23 @@ } - p_92146_.m_10509_(set); + p_92146_.setSelected(set); + } + + private void setForgeKeybindProperties() { + net.minecraftforge.client.settings.KeyConflictContext inGame = net.minecraftforge.client.settings.KeyConflictContext.IN_GAME; -+ f_92085_.setKeyConflictContext(inGame); -+ f_92086_.setKeyConflictContext(inGame); -+ f_92087_.setKeyConflictContext(inGame); -+ f_92088_.setKeyConflictContext(inGame); -+ f_92089_.setKeyConflictContext(inGame); -+ f_92090_.setKeyConflictContext(inGame); -+ f_92091_.setKeyConflictContext(inGame); -+ f_92096_.setKeyConflictContext(inGame); -+ f_92098_.setKeyConflictContext(inGame); -+ f_92099_.setKeyConflictContext(inGame); -+ f_92100_.setKeyConflictContext(inGame); -+ f_92103_.setKeyConflictContext(inGame); -+ f_92104_.setKeyConflictContext(inGame); ++ keyUp.setKeyConflictContext(inGame); ++ keyLeft.setKeyConflictContext(inGame); ++ keyDown.setKeyConflictContext(inGame); ++ keyRight.setKeyConflictContext(inGame); ++ keyJump.setKeyConflictContext(inGame); ++ keyShift.setKeyConflictContext(inGame); ++ keySprint.setKeyConflictContext(inGame); ++ keyAttack.setKeyConflictContext(inGame); ++ keyChat.setKeyConflictContext(inGame); ++ keyPlayerList.setKeyConflictContext(inGame); ++ keyCommand.setKeyConflictContext(inGame); ++ keyTogglePerspective.setKeyConflictContext(inGame); ++ keySmoothCamera.setKeyConflictContext(inGame); } - public CameraType m_92176_() { + public CameraType getCameraType() { diff --git a/patches/minecraft/net/minecraft/client/RecipeBookCategories.java.patch b/patches/minecraft/net/minecraft/client/RecipeBookCategories.java.patch index 5536566107..1da1c9149f 100644 --- a/patches/minecraft/net/minecraft/client/RecipeBookCategories.java.patch +++ b/patches/minecraft/net/minecraft/client/RecipeBookCategories.java.patch @@ -6,20 +6,20 @@ @OnlyIn(Dist.CLIENT) -public enum RecipeBookCategories { +public enum RecipeBookCategories implements net.minecraftforge.common.IExtensibleEnum { - CRAFTING_SEARCH(new ItemStack(Items.f_42522_)), - CRAFTING_BUILDING_BLOCKS(new ItemStack(Blocks.f_50076_)), - CRAFTING_REDSTONE(new ItemStack(Items.f_42451_)), + CRAFTING_SEARCH(new ItemStack(Items.COMPASS)), + CRAFTING_BUILDING_BLOCKS(new ItemStack(Blocks.BRICKS)), + CRAFTING_REDSTONE(new ItemStack(Items.REDSTONE)), @@ -36,7 +_,7 @@ - public static final List f_92257_ = ImmutableList.of(BLAST_FURNACE_SEARCH, BLAST_FURNACE_BLOCKS, BLAST_FURNACE_MISC); - public static final List f_92258_ = ImmutableList.of(FURNACE_SEARCH, FURNACE_FOOD, FURNACE_BLOCKS, FURNACE_MISC); - public static final List f_92259_ = ImmutableList.of(CRAFTING_SEARCH, CRAFTING_EQUIPMENT, CRAFTING_BUILDING_BLOCKS, CRAFTING_MISC, CRAFTING_REDSTONE); -- public static final Map> f_92260_ = ImmutableMap.of(CRAFTING_SEARCH, ImmutableList.of(CRAFTING_EQUIPMENT, CRAFTING_BUILDING_BLOCKS, CRAFTING_MISC, CRAFTING_REDSTONE), FURNACE_SEARCH, ImmutableList.of(FURNACE_FOOD, FURNACE_BLOCKS, FURNACE_MISC), BLAST_FURNACE_SEARCH, ImmutableList.of(BLAST_FURNACE_BLOCKS, BLAST_FURNACE_MISC), SMOKER_SEARCH, ImmutableList.of(SMOKER_FOOD)); -+ public static final Map> f_92260_ = net.minecraftforge.client.RecipeBookManager.getAggregateCategories(); - private final List f_92261_; + public static final List BLAST_FURNACE_CATEGORIES = ImmutableList.of(BLAST_FURNACE_SEARCH, BLAST_FURNACE_BLOCKS, BLAST_FURNACE_MISC); + public static final List FURNACE_CATEGORIES = ImmutableList.of(FURNACE_SEARCH, FURNACE_FOOD, FURNACE_BLOCKS, FURNACE_MISC); + public static final List CRAFTING_CATEGORIES = ImmutableList.of(CRAFTING_SEARCH, CRAFTING_EQUIPMENT, CRAFTING_BUILDING_BLOCKS, CRAFTING_MISC, CRAFTING_REDSTONE); +- public static final Map> AGGREGATE_CATEGORIES = ImmutableMap.of(CRAFTING_SEARCH, ImmutableList.of(CRAFTING_EQUIPMENT, CRAFTING_BUILDING_BLOCKS, CRAFTING_MISC, CRAFTING_REDSTONE), FURNACE_SEARCH, ImmutableList.of(FURNACE_FOOD, FURNACE_BLOCKS, FURNACE_MISC), BLAST_FURNACE_SEARCH, ImmutableList.of(BLAST_FURNACE_BLOCKS, BLAST_FURNACE_MISC), SMOKER_SEARCH, ImmutableList.of(SMOKER_FOOD)); ++ public static final Map> AGGREGATE_CATEGORIES = net.minecraftforge.client.RecipeBookManager.getAggregateCategories(); + private final List itemIcons; private RecipeBookCategories(ItemStack... p_92267_) { @@ -59,7 +_,7 @@ - list = f_92256_; + list = SMOKER_CATEGORIES; break; default: - throw new IncompatibleClassChangeError(); @@ -29,8 +29,8 @@ return list; @@ -67,5 +_,9 @@ - public List m_92268_() { - return this.f_92261_; + public List getIconItems() { + return this.itemIcons; + } + + public static RecipeBookCategories create(String name, ItemStack... icons) { diff --git a/patches/minecraft/net/minecraft/client/Screenshot.java.patch b/patches/minecraft/net/minecraft/client/Screenshot.java.patch index 854c138e20..100c4686ce 100644 --- a/patches/minecraft/net/minecraft/client/Screenshot.java.patch +++ b/patches/minecraft/net/minecraft/client/Screenshot.java.patch @@ -11,19 +11,19 @@ + } + final File target = event.getScreenshotFile(); + - Util.m_183992_().execute(() -> { + Util.ioPool().execute(() -> { try { -- nativeimage.m_85056_(file2); -+ nativeimage.m_85056_(target); - Component component = Component.m_237113_(file2.getName()).m_130940_(ChatFormatting.UNDERLINE).m_130938_((p_168608_) -> { -- return p_168608_.m_131142_(new ClickEvent(ClickEvent.Action.OPEN_FILE, file2.getAbsolutePath())); -+ return p_168608_.m_131142_(new ClickEvent(ClickEvent.Action.OPEN_FILE, target.getAbsolutePath())); +- nativeimage.writeToFile(file2); ++ nativeimage.writeToFile(target); + Component component = Component.literal(file2.getName()).withStyle(ChatFormatting.UNDERLINE).withStyle((p_168608_) -> { +- return p_168608_.withClickEvent(new ClickEvent(ClickEvent.Action.OPEN_FILE, file2.getAbsolutePath())); ++ return p_168608_.withClickEvent(new ClickEvent(ClickEvent.Action.OPEN_FILE, target.getAbsolutePath())); }); -- p_92311_.accept(Component.m_237110_("screenshot.success", component)); +- p_92311_.accept(Component.translatable("screenshot.success", component)); + if (event.getResultMessage() != null) + p_92311_.accept(event.getResultMessage()); + else -+ p_92311_.accept(Component.m_237110_("screenshot.success", component)); ++ p_92311_.accept(Component.translatable("screenshot.success", component)); } catch (Exception exception) { - f_92276_.warn("Couldn't save screenshot", (Throwable)exception); - p_92311_.accept(Component.m_237110_("screenshot.failure", exception.getMessage())); + LOGGER.warn("Couldn't save screenshot", (Throwable)exception); + p_92311_.accept(Component.translatable("screenshot.failure", exception.getMessage())); diff --git a/patches/minecraft/net/minecraft/client/ToggleKeyMapping.java.patch b/patches/minecraft/net/minecraft/client/ToggleKeyMapping.java.patch index 00765d3917..b51b1d1627 100644 --- a/patches/minecraft/net/minecraft/client/ToggleKeyMapping.java.patch +++ b/patches/minecraft/net/minecraft/client/ToggleKeyMapping.java.patch @@ -2,18 +2,18 @@ +++ b/net/minecraft/client/ToggleKeyMapping.java @@ -16,7 +_,7 @@ - public void m_7249_(boolean p_92534_) { - if (this.f_92527_.getAsBoolean()) { + public void setDown(boolean p_92534_) { + if (this.needsToggle.getAsBoolean()) { - if (p_92534_) { + if (p_92534_ && isConflictContextAndModifierActive()) { - super.m_7249_(!this.m_90857_()); + super.setDown(!this.isDown()); } } else { @@ -24,6 +_,7 @@ } } -+ @Override public boolean m_90857_() { return this.f_90817_ && (isConflictContextAndModifierActive() || f_92527_.getAsBoolean()); } ++ @Override public boolean isDown() { return this.isDown && (isConflictContextAndModifierActive() || needsToggle.getAsBoolean()); } - protected void m_289748_() { - super.m_7249_(false); + protected void reset() { + super.setDown(false); diff --git a/patches/minecraft/net/minecraft/client/color/block/BlockColors.java.patch b/patches/minecraft/net/minecraft/client/color/block/BlockColors.java.patch index fcfa2a859c..46f6897737 100644 --- a/patches/minecraft/net/minecraft/client/color/block/BlockColors.java.patch +++ b/patches/minecraft/net/minecraft/client/color/block/BlockColors.java.patch @@ -3,42 +3,42 @@ @@ -28,7 +_,8 @@ @OnlyIn(Dist.CLIENT) public class BlockColors { - private static final int f_168640_ = -1; -- private final IdMapper f_92571_ = new IdMapper<>(32); + private static final int DEFAULT = -1; +- private final IdMapper blockColors = new IdMapper<>(32); + // FORGE: Use registry delegate as non-Vanilla block ids are not constant -+ private final java.util.Map, BlockColor> f_92571_ = new java.util.HashMap<>(); - private final Map>> f_92572_ = Maps.newHashMap(); ++ private final java.util.Map, BlockColor> blockColors = new java.util.HashMap<>(); + private final Map>> coloringStates = Maps.newHashMap(); - public static BlockColors m_92574_() { + public static BlockColors createDefault() { @@ -80,11 +_,12 @@ - blockcolors.m_92589_((p_92596_, p_92597_, p_92598_, p_92599_) -> { + blockcolors.register((p_92596_, p_92597_, p_92598_, p_92599_) -> { return p_92597_ != null && p_92598_ != null ? 2129968 : 7455580; - }, Blocks.f_50196_); + }, Blocks.LILY_PAD); + net.minecraftforge.client.ForgeHooksClient.onBlockColorsInit(blockcolors); return blockcolors; } - public int m_92582_(BlockState p_92583_, Level p_92584_, BlockPos p_92585_) { -- BlockColor blockcolor = this.f_92571_.m_7942_(BuiltInRegistries.f_256975_.m_7447_(p_92583_.m_60734_())); -+ BlockColor blockcolor = this.f_92571_.get(net.minecraftforge.registries.ForgeRegistries.BLOCKS.getDelegateOrThrow(p_92583_.m_60734_())); + public int getColor(BlockState p_92583_, Level p_92584_, BlockPos p_92585_) { +- BlockColor blockcolor = this.blockColors.byId(BuiltInRegistries.BLOCK.getId(p_92583_.getBlock())); ++ BlockColor blockcolor = this.blockColors.get(net.minecraftforge.registries.ForgeRegistries.BLOCKS.getDelegateOrThrow(p_92583_.getBlock())); if (blockcolor != null) { - return blockcolor.m_92566_(p_92583_, (BlockAndTintGetter)null, (BlockPos)null, 0); + return blockcolor.getColor(p_92583_, (BlockAndTintGetter)null, (BlockPos)null, 0); } else { @@ -94,13 +_,15 @@ } - public int m_92577_(BlockState p_92578_, @Nullable BlockAndTintGetter p_92579_, @Nullable BlockPos p_92580_, int p_92581_) { -- BlockColor blockcolor = this.f_92571_.m_7942_(BuiltInRegistries.f_256975_.m_7447_(p_92578_.m_60734_())); -+ BlockColor blockcolor = this.f_92571_.get(net.minecraftforge.registries.ForgeRegistries.BLOCKS.getDelegateOrThrow(p_92578_.m_60734_())); - return blockcolor == null ? -1 : blockcolor.m_92566_(p_92578_, p_92579_, p_92580_, p_92581_); + public int getColor(BlockState p_92578_, @Nullable BlockAndTintGetter p_92579_, @Nullable BlockPos p_92580_, int p_92581_) { +- BlockColor blockcolor = this.blockColors.byId(BuiltInRegistries.BLOCK.getId(p_92578_.getBlock())); ++ BlockColor blockcolor = this.blockColors.get(net.minecraftforge.registries.ForgeRegistries.BLOCKS.getDelegateOrThrow(p_92578_.getBlock())); + return blockcolor == null ? -1 : blockcolor.getColor(p_92578_, p_92579_, p_92580_, p_92581_); } + /** @deprecated Register via {@link net.minecraftforge.client.event.RegisterColorHandlersEvent.Block} */ + @Deprecated - public void m_92589_(BlockColor p_92590_, Block... p_92591_) { + public void register(BlockColor p_92590_, Block... p_92591_) { for(Block block : p_92591_) { -- this.f_92571_.m_122664_(p_92590_, BuiltInRegistries.f_256975_.m_7447_(block)); -+ this.f_92571_.put(net.minecraftforge.registries.ForgeRegistries.BLOCKS.getDelegateOrThrow(block), p_92590_); +- this.blockColors.addMapping(p_92590_, BuiltInRegistries.BLOCK.getId(block)); ++ this.blockColors.put(net.minecraftforge.registries.ForgeRegistries.BLOCKS.getDelegateOrThrow(block), p_92590_); } } diff --git a/patches/minecraft/net/minecraft/client/color/item/ItemColors.java.patch b/patches/minecraft/net/minecraft/client/color/item/ItemColors.java.patch index d627583e3d..163bbe6502 100644 --- a/patches/minecraft/net/minecraft/client/color/item/ItemColors.java.patch +++ b/patches/minecraft/net/minecraft/client/color/item/ItemColors.java.patch @@ -3,33 +3,33 @@ @@ -25,7 +_,8 @@ @OnlyIn(Dist.CLIENT) public class ItemColors { - private static final int f_168642_ = -1; -- private final IdMapper f_92674_ = new IdMapper<>(32); + private static final int DEFAULT = -1; +- private final IdMapper itemColors = new IdMapper<>(32); + // FORGE: Use registry delegate as non-Vanilla item ids are not constant -+ private final java.util.Map, ItemColor> f_92674_ = new java.util.HashMap<>(); ++ private final java.util.Map, ItemColor> itemColors = new java.util.HashMap<>(); - public static ItemColors m_92683_(BlockColors p_92684_) { + public static ItemColors createDefault(BlockColors p_92684_) { ItemColors itemcolors = new ItemColors(); @@ -88,17 +_,20 @@ - itemcolors.m_92689_((p_232352_, p_232353_) -> { - return p_232353_ == 0 ? -1 : MapItem.m_42918_(p_232352_); - }, Items.f_42573_); + itemcolors.register((p_232352_, p_232353_) -> { + return p_232353_ == 0 ? -1 : MapItem.getColor(p_232352_); + }, Items.FILLED_MAP); + net.minecraftforge.client.ForgeHooksClient.onItemColorsInit(itemcolors, p_92684_); return itemcolors; } - public int m_92676_(ItemStack p_92677_, int p_92678_) { -- ItemColor itemcolor = this.f_92674_.m_7942_(BuiltInRegistries.f_257033_.m_7447_(p_92677_.m_41720_())); -+ ItemColor itemcolor = this.f_92674_.get(net.minecraftforge.registries.ForgeRegistries.ITEMS.getDelegateOrThrow(p_92677_.m_41720_())); - return itemcolor == null ? -1 : itemcolor.m_92671_(p_92677_, p_92678_); + public int getColor(ItemStack p_92677_, int p_92678_) { +- ItemColor itemcolor = this.itemColors.byId(BuiltInRegistries.ITEM.getId(p_92677_.getItem())); ++ ItemColor itemcolor = this.itemColors.get(net.minecraftforge.registries.ForgeRegistries.ITEMS.getDelegateOrThrow(p_92677_.getItem())); + return itemcolor == null ? -1 : itemcolor.getColor(p_92677_, p_92678_); } + /** @deprecated Register via {@link net.minecraftforge.client.event.RegisterColorHandlersEvent.Item} */ + @Deprecated - public void m_92689_(ItemColor p_92690_, ItemLike... p_92691_) { + public void register(ItemColor p_92690_, ItemLike... p_92691_) { for(ItemLike itemlike : p_92691_) { -- this.f_92674_.m_122664_(p_92690_, Item.m_41393_(itemlike.m_5456_())); -+ this.f_92674_.put(net.minecraftforge.registries.ForgeRegistries.ITEMS.getDelegateOrThrow(itemlike.m_5456_()), p_92690_); +- this.itemColors.addMapping(p_92690_, Item.getId(itemlike.asItem())); ++ this.itemColors.put(net.minecraftforge.registries.ForgeRegistries.ITEMS.getDelegateOrThrow(itemlike.asItem()), p_92690_); } } diff --git a/patches/minecraft/net/minecraft/client/gui/Font.java.patch b/patches/minecraft/net/minecraft/client/gui/Font.java.patch index 908208beee..b00fb3da5c 100644 --- a/patches/minecraft/net/minecraft/client/gui/Font.java.patch +++ b/patches/minecraft/net/minecraft/client/gui/Font.java.patch @@ -6,12 +6,12 @@ @OnlyIn(Dist.CLIENT) -public class Font { +public class Font implements net.minecraftforge.client.extensions.IForgeFont { - private static final float f_168643_ = 0.01F; - private static final Vector3f f_92712_ = new Vector3f(0.0F, 0.0F, 0.03F); - public static final int f_193827_ = 8; + private static final float EFFECT_DEPTH = 0.01F; + private static final Vector3f SHADOW_OFFSET = new Vector3f(0.0F, 0.0F, 0.03F); + public static final int ALPHA_CUTOFF = 8; @@ -202,6 +_,8 @@ - public StringSplitter m_92865_() { - return this.f_92714_; + public StringSplitter getSplitter() { + return this.splitter; } + + @Override public Font self() { return this; } diff --git a/patches/minecraft/net/minecraft/client/gui/Gui.java.patch b/patches/minecraft/net/minecraft/client/gui/Gui.java.patch index e590da7534..4913538082 100644 --- a/patches/minecraft/net/minecraft/client/gui/Gui.java.patch +++ b/patches/minecraft/net/minecraft/client/gui/Gui.java.patch @@ -1,77 +1,77 @@ --- a/net/minecraft/client/gui/Gui.java +++ b/net/minecraft/client/gui/Gui.java @@ -130,7 +_,7 @@ - public float f_92980_ = 1.0F; - protected int f_92993_; - protected ItemStack f_92994_ = ItemStack.f_41583_; -- protected final DebugScreenOverlay f_291320_; -+ protected DebugScreenOverlay f_291320_; - protected final SubtitleOverlay f_92996_; - protected final SpectatorGui f_92997_; - protected final PlayerTabOverlay f_92998_; + public float vignetteBrightness = 1.0F; + protected int toolHighlightTimer; + protected ItemStack lastToolHighlight = ItemStack.EMPTY; +- protected final DebugScreenOverlay debugOverlay; ++ protected DebugScreenOverlay debugOverlay; + protected final SubtitleOverlay subtitleOverlay; + protected final SpectatorGui spectatorGui; + protected final PlayerTabOverlay tabList; @@ -453,6 +_,8 @@ for(MobEffectInstance mobeffectinstance : Ordering.natural().reverse().sortedCopy(collection)) { - MobEffect mobeffect = mobeffectinstance.m_19544_(); + MobEffect mobeffect = mobeffectinstance.getEffect(); + var renderer = net.minecraftforge.client.extensions.common.IClientMobEffectExtensions.of(mobeffectinstance); + if (!renderer.isVisibleInGui(mobeffectinstance)) continue; - if (mobeffectinstance.m_19575_()) { - int i = this.f_92977_; + if (mobeffectinstance.showIcon()) { + int i = this.screenWidth; int j = 1; @@ -481,6 +_,7 @@ } } + if (renderer.renderGuiIcon(mobeffectinstance, this, p_282812_, i, j, 0, f)) continue; - TextureAtlasSprite textureatlassprite = mobeffecttexturemanager.m_118732_(mobeffect); + TextureAtlasSprite textureatlassprite = mobeffecttexturemanager.get(mobeffect); int i1 = j; float f1 = f; @@ -601,16 +_,21 @@ } - public void m_280295_(GuiGraphics p_283501_) { + public void renderSelectedItemName(GuiGraphics p_283501_) { + renderSelectedItemName(p_283501_, 0); + } + + public void renderSelectedItemName(GuiGraphics p_283501_, int yShift) { - this.f_92986_.m_91307_().m_6180_("selectedItemName"); - if (this.f_92993_ > 0 && !this.f_92994_.m_41619_()) { -- MutableComponent mutablecomponent = Component.m_237119_().m_7220_(this.f_92994_.m_41786_()).m_130940_(this.f_92994_.m_41791_().f_43022_); -+ MutableComponent mutablecomponent = Component.m_237119_().m_7220_(this.f_92994_.m_41786_()).m_130938_(this.f_92994_.m_41791_().getStyleModifier()); - if (this.f_92994_.m_41788_()) { - mutablecomponent.m_130940_(ChatFormatting.ITALIC); + this.minecraft.getProfiler().push("selectedItemName"); + if (this.toolHighlightTimer > 0 && !this.lastToolHighlight.isEmpty()) { +- MutableComponent mutablecomponent = Component.empty().append(this.lastToolHighlight.getHoverName()).withStyle(this.lastToolHighlight.getRarity().color); ++ MutableComponent mutablecomponent = Component.empty().append(this.lastToolHighlight.getHoverName()).withStyle(this.lastToolHighlight.getRarity().getStyleModifier()); + if (this.lastToolHighlight.hasCustomHoverName()) { + mutablecomponent.withStyle(ChatFormatting.ITALIC); } -- int i = this.m_93082_().m_92852_(mutablecomponent); -+ Component highlightTip = this.f_92994_.getHighlightTip(mutablecomponent); -+ int i = this.m_93082_().m_92852_(highlightTip); - int j = (this.f_92977_ - i) / 2; -- int k = this.f_92978_ - 59; -+ int k = this.f_92978_ - Math.max(yShift, 59); - if (!this.f_92986_.f_91072_.m_105205_()) { +- int i = this.getFont().width(mutablecomponent); ++ Component highlightTip = this.lastToolHighlight.getHighlightTip(mutablecomponent); ++ int i = this.getFont().width(highlightTip); + int j = (this.screenWidth - i) / 2; +- int k = this.screenHeight - 59; ++ int k = this.screenHeight - Math.max(yShift, 59); + if (!this.minecraft.gameMode.canHurtPlayer()) { k += 14; } @@ -622,7 +_,13 @@ if (l > 0) { - p_283501_.m_280509_(j - 2, k - 2, j + i + 2, k + 9 + 2, this.f_92986_.f_91066_.m_92143_(0)); -- p_283501_.m_280430_(this.m_93082_(), mutablecomponent, j, k, 16777215 + (l << 24)); -+ Font font = net.minecraftforge.client.extensions.common.IClientItemExtensions.of(f_92994_).getFont(f_92994_, net.minecraftforge.client.extensions.common.IClientItemExtensions.FontContext.SELECTED_ITEM_NAME); + p_283501_.fill(j - 2, k - 2, j + i + 2, k + 9 + 2, this.minecraft.options.getBackgroundColor(0)); +- p_283501_.drawString(this.getFont(), mutablecomponent, j, k, 16777215 + (l << 24)); ++ Font font = net.minecraftforge.client.extensions.common.IClientItemExtensions.of(lastToolHighlight).getFont(lastToolHighlight, net.minecraftforge.client.extensions.common.IClientItemExtensions.FontContext.SELECTED_ITEM_NAME); + if (font == null) { -+ p_283501_.m_280430_(this.m_93082_(), highlightTip, j, k, 16777215 + (l << 24)); ++ p_283501_.drawString(this.getFont(), highlightTip, j, k, 16777215 + (l << 24)); + } else { -+ j = (this.f_92977_ - font.m_92852_(highlightTip)) / 2; -+ p_283501_.m_280430_(font, highlightTip, j, k, 16777215 + (l << 24)); ++ j = (this.screenWidth - font.width(highlightTip)) / 2; ++ p_283501_.drawString(font, highlightTip, j, k, 16777215 + (l << 24)); + } } } @@ -1069,7 +_,7 @@ - ItemStack itemstack = this.f_92986_.f_91074_.m_150109_().m_36056_(); - if (itemstack.m_41619_()) { - this.f_92993_ = 0; -- } else if (!this.f_92994_.m_41619_() && itemstack.m_150930_(this.f_92994_.m_41720_()) && itemstack.m_41786_().equals(this.f_92994_.m_41786_())) { -+ } else if (!this.f_92994_.m_41619_() && itemstack.m_41720_() == this.f_92994_.m_41720_() && (itemstack.m_41786_().equals(this.f_92994_.m_41786_()) && itemstack.getHighlightTip(itemstack.m_41786_()).equals(f_92994_.getHighlightTip(f_92994_.m_41786_())))) { - if (this.f_92993_ > 0) { - --this.f_92993_; + ItemStack itemstack = this.minecraft.player.getInventory().getSelected(); + if (itemstack.isEmpty()) { + this.toolHighlightTimer = 0; +- } else if (!this.lastToolHighlight.isEmpty() && itemstack.is(this.lastToolHighlight.getItem()) && itemstack.getHoverName().equals(this.lastToolHighlight.getHoverName())) { ++ } else if (!this.lastToolHighlight.isEmpty() && itemstack.getItem() == this.lastToolHighlight.getItem() && (itemstack.getHoverName().equals(this.lastToolHighlight.getHoverName()) && itemstack.getHighlightTip(itemstack.getHoverName()).equals(lastToolHighlight.getHighlightTip(lastToolHighlight.getHoverName())))) { + if (this.toolHighlightTimer > 0) { + --this.toolHighlightTimer; } diff --git a/patches/minecraft/net/minecraft/client/gui/GuiGraphics.java.patch b/patches/minecraft/net/minecraft/client/gui/GuiGraphics.java.patch index 20de32b85b..2b00717d05 100644 --- a/patches/minecraft/net/minecraft/client/gui/GuiGraphics.java.patch +++ b/patches/minecraft/net/minecraft/client/gui/GuiGraphics.java.patch @@ -6,13 +6,13 @@ @OnlyIn(Dist.CLIENT) -public class GuiGraphics { +public class GuiGraphics implements net.minecraftforge.client.extensions.IForgeGuiGraphics { - public static final float f_289044_ = 10000.0F; - public static final float f_289038_ = -10000.0F; - private static final int f_279564_ = 2; + public static final float MAX_GUI_Z = 10000.0F; + public static final float MIN_GUI_Z = -10000.0F; + private static final int EXTRA_SPACE_AFTER_FIRST_TOOLTIP_LINE = 2; @@ -271,6 +_,11 @@ } - public int m_280056_(Font p_283343_, @Nullable String p_281896_, int p_283569_, int p_283418_, int p_281560_, boolean p_282130_) { + public int drawString(Font p_283343_, @Nullable String p_281896_, int p_283569_, int p_283418_, int p_281560_, boolean p_282130_) { + return this.drawString(p_283343_, p_281896_, (float)p_283569_, (float)p_283418_, p_281560_, p_282130_); + } + @@ -24,83 +24,83 @@ @@ -285,6 +_,11 @@ } - public int m_280649_(Font p_282636_, FormattedCharSequence p_281596_, int p_281586_, int p_282816_, int p_281743_, boolean p_282394_) { + public int drawString(Font p_282636_, FormattedCharSequence p_281596_, int p_281586_, int p_282816_, int p_281743_, boolean p_282394_) { + return this.drawString(p_282636_, p_281596_, (float)p_281586_, (float)p_282816_, p_281743_, p_282394_); + } + + // Forge: Add float variant for x,y coordinates + public int drawString(Font p_282636_, FormattedCharSequence p_281596_, float p_281586_, float p_282816_, int p_281743_, boolean p_282394_) { - int i = p_282636_.m_272191_(p_281596_, (float)p_281586_, (float)p_282816_, p_281743_, p_282394_, this.f_279612_.m_85850_().m_252922_(), this.f_279627_, Font.DisplayMode.NORMAL, 0, 15728880); - this.m_286081_(); + int i = p_282636_.drawInBatch(p_281596_, (float)p_281586_, (float)p_282816_, p_281743_, p_282394_, this.pose.last().pose(), this.bufferSource, Font.DisplayMode.NORMAL, 0, 15728880); + this.flushIfUnmanaged(); return i; @@ -511,6 +_,7 @@ - crashreportcategory.m_128165_("Item Type", () -> { - return String.valueOf((Object)p_281675_.m_41720_()); + crashreportcategory.setDetail("Item Type", () -> { + return String.valueOf((Object)p_281675_.getItem()); }); -+ crashreportcategory.m_128165_("Registry Name", () -> String.valueOf(net.minecraftforge.registries.ForgeRegistries.ITEMS.getKey(p_281675_.m_41720_()))); - crashreportcategory.m_128165_("Item Damage", () -> { - return String.valueOf(p_281675_.m_41773_()); ++ crashreportcategory.setDetail("Registry Name", () -> String.valueOf(net.minecraftforge.registries.ForgeRegistries.ITEMS.getKey(p_281675_.getItem()))); + crashreportcategory.setDetail("Item Damage", () -> { + return String.valueOf(p_281675_.getDamageValue()); }); @@ -558,18 +_,26 @@ } - this.f_279612_.m_85849_(); + this.pose.popPose(); + net.minecraftforge.client.ItemDecoratorHandler.of(p_283349_).render(this, p_282005_, p_283349_, p_282641_, p_282146_); } } + -+ private ItemStack tooltipStack = ItemStack.f_41583_; ++ private ItemStack tooltipStack = ItemStack.EMPTY; - public void m_280153_(Font p_282308_, ItemStack p_282781_, int p_282687_, int p_282292_) { + public void renderTooltip(Font p_282308_, ItemStack p_282781_, int p_282687_, int p_282292_) { + this.tooltipStack = p_282781_; - this.m_280677_(p_282308_, Screen.m_280152_(this.f_279544_, p_282781_), p_282781_.m_150921_(), p_282687_, p_282292_); -+ this.tooltipStack = ItemStack.f_41583_; + this.renderTooltip(p_282308_, Screen.getTooltipFromItem(this.minecraft, p_282781_), p_282781_.getTooltipImage(), p_282687_, p_282292_); ++ this.tooltipStack = ItemStack.EMPTY; + } + + public void renderTooltip(Font font, List textComponents, Optional tooltipComponent, ItemStack stack, int mouseX, int mouseY) { + this.tooltipStack = stack; -+ this.m_280677_(font, textComponents, tooltipComponent, mouseX, mouseY); -+ this.tooltipStack = ItemStack.f_41583_; ++ this.renderTooltip(font, textComponents, tooltipComponent, mouseX, mouseY); ++ this.tooltipStack = ItemStack.EMPTY; } - public void m_280677_(Font p_283128_, List p_282716_, Optional p_281682_, int p_283678_, int p_281696_) { -- List list = p_282716_.stream().map(Component::m_7532_).map(ClientTooltipComponent::m_169948_).collect(Collectors.toList()); + public void renderTooltip(Font p_283128_, List p_282716_, Optional p_281682_, int p_283678_, int p_281696_) { +- List list = p_282716_.stream().map(Component::getVisualOrderText).map(ClientTooltipComponent::create).collect(Collectors.toList()); - p_281682_.ifPresent((p_282969_) -> { -- list.add(1, ClientTooltipComponent.m_169950_(p_282969_)); +- list.add(1, ClientTooltipComponent.create(p_282969_)); - }); -+ List list = net.minecraftforge.client.ForgeHooksClient.gatherTooltipComponents(this.tooltipStack, p_282716_, p_281682_, p_283678_, m_280182_(), m_280206_(), p_283128_); - this.m_280497_(p_283128_, list, p_283678_, p_281696_, DefaultTooltipPositioner.f_262752_); ++ List list = net.minecraftforge.client.ForgeHooksClient.gatherTooltipComponents(this.tooltipStack, p_282716_, p_281682_, p_283678_, guiWidth(), guiHeight(), p_283128_); + this.renderTooltipInternal(p_283128_, list, p_283678_, p_281696_, DefaultTooltipPositioner.INSTANCE); } @@ -578,7 +_,15 @@ } - public void m_280666_(Font p_282739_, List p_281832_, int p_282191_, int p_282446_) { -- this.m_280245_(p_282739_, Lists.transform(p_281832_, Component::m_7532_), p_282191_, p_282446_); -+ List components = net.minecraftforge.client.ForgeHooksClient.gatherTooltipComponents(this.tooltipStack, p_281832_, p_282191_, m_280182_(), m_280206_(), p_282739_); -+ this.m_280497_(p_282739_, components, p_282191_, p_282446_, DefaultTooltipPositioner.f_262752_); + public void renderComponentTooltip(Font p_282739_, List p_281832_, int p_282191_, int p_282446_) { +- this.renderTooltip(p_282739_, Lists.transform(p_281832_, Component::getVisualOrderText), p_282191_, p_282446_); ++ List components = net.minecraftforge.client.ForgeHooksClient.gatherTooltipComponents(this.tooltipStack, p_281832_, p_282191_, guiWidth(), guiHeight(), p_282739_); ++ this.renderTooltipInternal(p_282739_, components, p_282191_, p_282446_, DefaultTooltipPositioner.INSTANCE); + } + + public void renderComponentTooltip(Font font, List tooltips, int mouseX, int mouseY, ItemStack stack) { + this.tooltipStack = stack; -+ List components = net.minecraftforge.client.ForgeHooksClient.gatherTooltipComponents(stack, tooltips, mouseX, m_280182_(), m_280206_(), font); -+ this.m_280497_(font, components, mouseX, mouseY, DefaultTooltipPositioner.f_262752_); -+ this.tooltipStack = ItemStack.f_41583_; ++ List components = net.minecraftforge.client.ForgeHooksClient.gatherTooltipComponents(stack, tooltips, mouseX, guiWidth(), guiHeight(), font); ++ this.renderTooltipInternal(font, components, mouseX, mouseY, DefaultTooltipPositioner.INSTANCE); ++ this.tooltipStack = ItemStack.EMPTY; } - public void m_280245_(Font p_282192_, List p_282297_, int p_281680_, int p_283325_) { + public void renderTooltip(Font p_282192_, List p_282297_, int p_281680_, int p_283325_) { @@ -591,11 +_,13 @@ - private void m_280497_(Font p_282675_, List p_282615_, int p_283230_, int p_283417_, ClientTooltipPositioner p_282442_) { + private void renderTooltipInternal(Font p_282675_, List p_282615_, int p_283230_, int p_283417_, ClientTooltipPositioner p_282442_) { if (!p_282615_.isEmpty()) { -+ net.minecraftforge.client.event.RenderTooltipEvent.Pre preEvent = net.minecraftforge.client.ForgeHooksClient.onRenderTooltipPre(this.tooltipStack, this, p_283230_, p_283417_, m_280182_(), m_280206_(), p_282615_, p_282675_, p_282442_); ++ net.minecraftforge.client.event.RenderTooltipEvent.Pre preEvent = net.minecraftforge.client.ForgeHooksClient.onRenderTooltipPre(this.tooltipStack, this, p_283230_, p_283417_, guiWidth(), guiHeight(), p_282615_, p_282675_, p_282442_); + if (preEvent.isCanceled()) return; int i = 0; int j = p_282615_.size() == 1 ? -2 : 0; for(ClientTooltipComponent clienttooltipcomponent : p_282615_) { -- int k = clienttooltipcomponent.m_142069_(p_282675_); -+ int k = clienttooltipcomponent.m_142069_(preEvent.getFont()); +- int k = clienttooltipcomponent.getWidth(p_282675_); ++ int k = clienttooltipcomponent.getWidth(preEvent.getFont()); if (k > i) { i = k; } @@ -108,33 +108,33 @@ int i2 = i; int j2 = j; -- Vector2ic vector2ic = p_282442_.m_262814_(this.m_280182_(), this.m_280206_(), p_283230_, p_283417_, i2, j2); -+ Vector2ic vector2ic = p_282442_.m_262814_(this.m_280182_(), this.m_280206_(), preEvent.getX(), preEvent.getY(), i2, j2); +- Vector2ic vector2ic = p_282442_.positionTooltip(this.guiWidth(), this.guiHeight(), p_283230_, p_283417_, i2, j2); ++ Vector2ic vector2ic = p_282442_.positionTooltip(this.guiWidth(), this.guiHeight(), preEvent.getX(), preEvent.getY(), i2, j2); int l = vector2ic.x(); int i1 = vector2ic.y(); - this.f_279612_.m_85836_(); + this.pose.pushPose(); int j1 = 400; - this.m_286007_(() -> { -- TooltipRenderUtil.m_280205_(this, l, i1, i2, j2, 400); + this.drawManaged(() -> { +- TooltipRenderUtil.renderTooltipBackground(this, l, i1, i2, j2, 400); + net.minecraftforge.client.event.RenderTooltipEvent.Color colorEvent = net.minecraftforge.client.ForgeHooksClient.onRenderTooltipColor(this.tooltipStack, this, l, i1, preEvent.getFont(), p_282615_); + TooltipRenderUtil.renderTooltipBackground(this, l, i1, i2, j2, 400, colorEvent.getBackgroundStart(), colorEvent.getBackgroundEnd(), colorEvent.getBorderStart(), colorEvent.getBorderEnd()); }); - this.f_279612_.m_252880_(0.0F, 0.0F, 400.0F); + this.pose.translate(0.0F, 0.0F, 400.0F); int k1 = i1; for(int l1 = 0; l1 < p_282615_.size(); ++l1) { ClientTooltipComponent clienttooltipcomponent1 = p_282615_.get(l1); -- clienttooltipcomponent1.m_142440_(p_282675_, l, k1, this.f_279612_.m_85850_().m_252922_(), this.f_279627_); -+ clienttooltipcomponent1.m_142440_(preEvent.getFont(), l, k1, this.f_279612_.m_85850_().m_252922_(), this.f_279627_); - k1 += clienttooltipcomponent1.m_142103_() + (l1 == 0 ? 2 : 0); +- clienttooltipcomponent1.renderText(p_282675_, l, k1, this.pose.last().pose(), this.bufferSource); ++ clienttooltipcomponent1.renderText(preEvent.getFont(), l, k1, this.pose.last().pose(), this.bufferSource); + k1 += clienttooltipcomponent1.getHeight() + (l1 == 0 ? 2 : 0); } @@ -626,7 +_,7 @@ for(int k2 = 0; k2 < p_282615_.size(); ++k2) { ClientTooltipComponent clienttooltipcomponent2 = p_282615_.get(k2); -- clienttooltipcomponent2.m_183452_(p_282675_, l, k1, this); -+ clienttooltipcomponent2.m_183452_(preEvent.getFont(), l, k1, this); - k1 += clienttooltipcomponent2.m_142103_() + (k2 == 0 ? 2 : 0); +- clienttooltipcomponent2.renderImage(p_282675_, l, k1, this); ++ clienttooltipcomponent2.renderImage(preEvent.getFont(), l, k1, this); + k1 += clienttooltipcomponent2.getHeight() + (k2 == 0 ? 2 : 0); } diff --git a/patches/minecraft/net/minecraft/client/gui/components/AbstractButton.java.patch b/patches/minecraft/net/minecraft/client/gui/components/AbstractButton.java.patch index 798695e504..a2c4aa6f18 100644 --- a/patches/minecraft/net/minecraft/client/gui/components/AbstractButton.java.patch +++ b/patches/minecraft/net/minecraft/client/gui/components/AbstractButton.java.patch @@ -2,10 +2,10 @@ +++ b/net/minecraft/client/gui/components/AbstractButton.java @@ -29,7 +_,7 @@ RenderSystem.enableDepthTest(); - p_281670_.m_292816_(f_290895_.m_295557_(this.f_93623_, this.m_198029_()), this.m_252754_(), this.m_252907_(), this.m_5711_(), this.m_93694_()); - p_281670_.m_280246_(1.0F, 1.0F, 1.0F, 1.0F); -- int i = this.f_93623_ ? 16777215 : 10526880; + p_281670_.blitSprite(SPRITES.get(this.active, this.isHoveredOrFocused()), this.getX(), this.getY(), this.getWidth(), this.getHeight()); + p_281670_.setColor(1.0F, 1.0F, 1.0F, 1.0F); +- int i = this.active ? 16777215 : 10526880; + int i = getFGColor(); - this.m_280465_(p_281670_, minecraft.f_91062_, i | Mth.m_14167_(this.f_93625_ * 255.0F) << 24); + this.renderString(p_281670_, minecraft.font, i | Mth.ceil(this.alpha * 255.0F) << 24); } diff --git a/patches/minecraft/net/minecraft/client/gui/components/AbstractSelectionList.java.patch b/patches/minecraft/net/minecraft/client/gui/components/AbstractSelectionList.java.patch index 43fcd2911a..0c36775fb4 100644 --- a/patches/minecraft/net/minecraft/client/gui/components/AbstractSelectionList.java.patch +++ b/patches/minecraft/net/minecraft/client/gui/components/AbstractSelectionList.java.patch @@ -1,15 +1,15 @@ --- a/net/minecraft/client/gui/components/AbstractSelectionList.java +++ b/net/minecraft/client/gui/components/AbstractSelectionList.java @@ -504,6 +_,13 @@ - return new ScreenRectangle(this.f_93393_, this.f_93390_, this.f_93392_ - this.f_93393_, this.f_93391_ - this.f_93390_); + return new ScreenRectangle(this.x0, this.y0, this.x1 - this.x0, this.y1 - this.y0); } -+ public int getWidth() { return this.f_93388_; } -+ public int getHeight() { return this.f_93389_; } -+ public int getTop() { return this.f_93390_; } -+ public int getBottom() { return this.f_93391_; } -+ public int getLeft() { return this.f_93393_; } -+ public int getRight() { return this.f_93392_; } ++ public int getWidth() { return this.width; } ++ public int getHeight() { return this.height; } ++ public int getTop() { return this.y0; } ++ public int getBottom() { return this.y1; } ++ public int getLeft() { return this.x0; } ++ public int getRight() { return this.x1; } + @OnlyIn(Dist.CLIENT) protected abstract static class Entry> implements GuiEventListener { diff --git a/patches/minecraft/net/minecraft/client/gui/components/AbstractWidget.java.patch b/patches/minecraft/net/minecraft/client/gui/components/AbstractWidget.java.patch index 7978199a73..e14bada3e0 100644 --- a/patches/minecraft/net/minecraft/client/gui/components/AbstractWidget.java.patch +++ b/patches/minecraft/net/minecraft/client/gui/components/AbstractWidget.java.patch @@ -1,14 +1,14 @@ --- a/net/minecraft/client/gui/components/AbstractWidget.java +++ b/net/minecraft/client/gui/components/AbstractWidget.java @@ -259,6 +_,19 @@ - this.f_93616_ = p_93693_; + this.focused = p_93693_; } + public static final int UNSET_FG_COLOR = -1; + protected int packedFGColor = UNSET_FG_COLOR; + public int getFGColor() { + if (packedFGColor != UNSET_FG_COLOR) return packedFGColor; -+ return this.f_93623_ ? 16777215 : 10526880; // White : Light Grey ++ return this.active ? 16777215 : 10526880; // White : Light Grey + } + public void setFGColor(int color) { + this.packedFGColor = color; @@ -17,6 +17,6 @@ + this.packedFGColor = UNSET_FG_COLOR; + } + - public NarratableEntry.NarrationPriority m_142684_() { - if (this.m_93696_()) { + public NarratableEntry.NarrationPriority narrationPriority() { + if (this.isFocused()) { return NarratableEntry.NarrationPriority.FOCUSED; diff --git a/patches/minecraft/net/minecraft/client/gui/components/BossHealthOverlay.java.patch b/patches/minecraft/net/minecraft/client/gui/components/BossHealthOverlay.java.patch index 1c27b56004..ee74fd903c 100644 --- a/patches/minecraft/net/minecraft/client/gui/components/BossHealthOverlay.java.patch +++ b/patches/minecraft/net/minecraft/client/gui/components/BossHealthOverlay.java.patch @@ -2,19 +2,19 @@ +++ b/net/minecraft/client/gui/components/BossHealthOverlay.java @@ -36,13 +_,16 @@ - for(LerpingBossEvent lerpingbossevent : this.f_93699_.values()) { + for(LerpingBossEvent lerpingbossevent : this.events.values()) { int k = i / 2 - 91; -+ var event = net.minecraftforge.client.ForgeHooksClient.onCustomizeBossEventProgress(p_283175_, this.f_93698_.m_91268_(), lerpingbossevent, k, j, 10 + this.f_93698_.f_91062_.f_92710_); ++ var event = net.minecraftforge.client.ForgeHooksClient.onCustomizeBossEventProgress(p_283175_, this.minecraft.getWindow(), lerpingbossevent, k, j, 10 + this.minecraft.font.lineHeight); + if (!event.isCanceled()) { - this.m_280106_(p_283175_, k, j, lerpingbossevent); - Component component = lerpingbossevent.m_18861_(); - int l = this.f_93698_.f_91062_.m_92852_(component); + this.drawBar(p_283175_, k, j, lerpingbossevent); + Component component = lerpingbossevent.getName(); + int l = this.minecraft.font.width(component); int i1 = i / 2 - l / 2; int j1 = j - 9; - p_283175_.m_280430_(this.f_93698_.f_91062_, component, i1, j1, 16777215); + p_283175_.drawString(this.minecraft.font, component, i1, j1, 16777215); - j += 10 + 9; + } + j += event.getIncrement(); - if (j >= p_283175_.m_280206_() / 3) { + if (j >= p_283175_.guiHeight() / 3) { break; } diff --git a/patches/minecraft/net/minecraft/client/gui/components/Button.java.patch b/patches/minecraft/net/minecraft/client/gui/components/Button.java.patch index dd80a1b9b3..b2d90216b3 100644 --- a/patches/minecraft/net/minecraft/client/gui/components/Button.java.patch +++ b/patches/minecraft/net/minecraft/client/gui/components/Button.java.patch @@ -1,23 +1,23 @@ --- a/net/minecraft/client/gui/components/Button.java +++ b/net/minecraft/client/gui/components/Button.java @@ -29,6 +_,11 @@ - this.f_252416_ = p_259552_; + this.createNarration = p_259552_; } + protected Button(Builder builder) { -+ this(builder.f_252538_, builder.f_252462_, builder.f_252510_, builder.f_252447_, builder.f_252401_, builder.f_252468_, builder.f_252431_); -+ m_257544_(builder.f_256855_); // Forge: Make use of the Builder tooltip ++ this(builder.x, builder.y, builder.width, builder.height, builder.message, builder.onPress, builder.createNarration); ++ setTooltip(builder.tooltip); // Forge: Make use of the Builder tooltip + } + - public void m_5691_() { - this.f_93717_.m_93750_(this); + public void onPress() { + this.onPress.onPress(this); } @@ -92,9 +_,11 @@ } - public Button m_253136_() { -- Button button = new Button(this.f_252538_, this.f_252462_, this.f_252510_, this.f_252447_, this.f_252401_, this.f_252468_, this.f_252431_); -- button.m_257544_(this.f_256855_); + public Button build() { +- Button button = new Button(this.x, this.y, this.width, this.height, this.message, this.onPress, this.createNarration); +- button.setTooltip(this.tooltip); - return button; + return build(Button::new); + } diff --git a/patches/minecraft/net/minecraft/client/gui/components/DebugScreenOverlay.java.patch b/patches/minecraft/net/minecraft/client/gui/components/DebugScreenOverlay.java.patch index e7d5ca7464..aaf9c616ba 100644 --- a/patches/minecraft/net/minecraft/client/gui/components/DebugScreenOverlay.java.patch +++ b/patches/minecraft/net/minecraft/client/gui/components/DebugScreenOverlay.java.patch @@ -2,91 +2,91 @@ +++ b/net/minecraft/client/gui/components/DebugScreenOverlay.java @@ -93,9 +_,9 @@ @Nullable - private CompletableFuture f_94036_; - private boolean f_291101_; -- private boolean f_291871_; -- private boolean f_290551_; -- private boolean f_291005_; -+ protected boolean f_291871_; -+ protected boolean f_290551_; -+ protected boolean f_291005_; - private final SampleLogger f_291039_ = new SampleLogger(); - private final SampleLogger f_291524_ = new SampleLogger(); - private final SampleLogger f_290653_ = new SampleLogger(); + private CompletableFuture serverChunk; + private boolean renderDebug; +- private boolean renderProfilerChart; +- private boolean renderFpsCharts; +- private boolean renderNetworkCharts; ++ protected boolean renderProfilerChart; ++ protected boolean renderFpsCharts; ++ protected boolean renderNetworkCharts; + private final SampleLogger frameTimeLogger = new SampleLogger(); + private final SampleLogger tickTimeLogger = new SampleLogger(); + private final SampleLogger pingLogger = new SampleLogger(); @@ -120,14 +_,18 @@ - this.f_94035_ = null; + this.clientChunk = null; } -- public void m_94056_(GuiGraphics p_281427_) { -- this.f_94030_.m_91307_().m_6180_("debug"); +- public void render(GuiGraphics p_281427_) { +- this.minecraft.getProfiler().push("debug"); + protected void update() { - Entity entity = this.f_94030_.m_91288_(); - this.f_94032_ = entity.m_19907_(20.0D, 0.0F, false); - this.f_94033_ = entity.m_19907_(20.0D, 0.0F, true); -- p_281427_.m_286007_(() -> { -- this.m_280186_(p_281427_); -- this.m_280532_(p_281427_); + Entity entity = this.minecraft.getCameraEntity(); + this.block = entity.pick(20.0D, 0.0F, false); + this.liquid = entity.pick(20.0D, 0.0F, true); +- p_281427_.drawManaged(() -> { +- this.drawGameInformation(p_281427_); +- this.drawSystemInformation(p_281427_); + } + + protected void drawText(GuiGraphics p_281427_) { -+ this.m_280186_(p_281427_); -+ this.m_280532_(p_281427_); ++ this.drawGameInformation(p_281427_); ++ this.drawSystemInformation(p_281427_); + } + + protected void drawFPSCharts(GuiGraphics p_281427_) { - if (this.f_290551_) { - int i = p_281427_.m_280182_(); + if (this.renderFpsCharts) { + int i = p_281427_.guiWidth(); int j = i / 2; @@ -137,7 +_,9 @@ - this.f_291179_.m_293623_(p_281427_, i - k, k); + this.tpsChart.drawChart(p_281427_, i - k, k); } } + } + protected void drawNetworkCharts(GuiGraphics p_281427_) { - if (this.f_291005_) { - int l = p_281427_.m_280182_(); + if (this.renderNetworkCharts) { + int l = p_281427_.guiWidth(); int i1 = l / 2; @@ -148,17 +_,32 @@ - int j1 = this.f_291349_.m_295014_(i1); - this.f_291349_.m_293623_(p_281427_, l - j1, j1); + int j1 = this.pingChart.getWidth(i1); + this.pingChart.drawChart(p_281427_, l - j1, j1); } + } + -+ public void m_94056_(GuiGraphics p_281427_) { -+ this.f_94030_.m_91307_().m_6180_("debug"); ++ public void render(GuiGraphics p_281427_) { ++ this.minecraft.getProfiler().push("debug"); + this.update(); -+ p_281427_.m_286007_(() -> { ++ p_281427_.drawManaged(() -> { + this.drawText(p_281427_); + this.drawFPSCharts(p_281427_); + this.drawNetworkCharts(p_281427_); }); - this.f_94030_.m_91307_().m_7238_(); + this.minecraft.getProfiler().pop(); } -- protected void m_280186_(GuiGraphics p_281525_) { -- List list = this.m_94075_(); +- protected void drawGameInformation(GuiGraphics p_281525_) { +- List list = this.getGameInformation(); + protected List getOverlayHelp() { + List list = Lists.newArrayList(); list.add(""); - boolean flag = this.f_94030_.m_91092_() != null; - list.add("Debug charts: [F3+1] Profiler " + (this.f_291871_ ? "visible" : "hidden") + "; [F3+2] " + (flag ? "FPS + TPS " : "FPS ") + (this.f_290551_ ? "visible" : "hidden") + "; [F3+3] " + (!this.f_94030_.m_91090_() ? "Bandwidth + Ping" : "Ping") + (this.f_291005_ ? " visible" : " hidden")); + boolean flag = this.minecraft.getSingleplayerServer() != null; + list.add("Debug charts: [F3+1] Profiler " + (this.renderProfilerChart ? "visible" : "hidden") + "; [F3+2] " + (flag ? "FPS + TPS " : "FPS ") + (this.renderFpsCharts ? "visible" : "hidden") + "; [F3+3] " + (!this.minecraft.isLocalServer() ? "Bandwidth + Ping" : "Ping") + (this.renderNetworkCharts ? " visible" : " hidden")); list.add("For help: press F3 + Q"); + return list; + } + -+ protected void m_280186_(GuiGraphics p_281525_) { -+ List list = this.m_94075_(); ++ protected void drawGameInformation(GuiGraphics p_281525_) { ++ List list = this.getGameInformation(); + list.addAll(this.getOverlayHelp()); - this.m_286013_(p_281525_, list, true); + this.renderLines(p_281525_, list, true); } @@ -430,6 +_,7 @@ list.add(""); list.add(ChatFormatting.UNDERLINE + "Targeted Entity"); - list.add(String.valueOf((Object)BuiltInRegistries.f_256780_.m_7981_(entity.m_6095_()))); -+ entity.m_6095_().m_204041_().m_203616_().forEach(t -> list.add("#" + t.f_203868_())); + list.add(String.valueOf((Object)BuiltInRegistries.ENTITY_TYPE.getKey(entity.getType()))); ++ entity.getType().builtInRegistryHolder().tags().forEach(t -> list.add("#" + t.location())); } return list; diff --git a/patches/minecraft/net/minecraft/client/gui/components/toasts/ToastComponent.java.patch b/patches/minecraft/net/minecraft/client/gui/components/toasts/ToastComponent.java.patch index 419b263c22..920b7d61c9 100644 --- a/patches/minecraft/net/minecraft/client/gui/components/toasts/ToastComponent.java.patch +++ b/patches/minecraft/net/minecraft/client/gui/components/toasts/ToastComponent.java.patch @@ -3,8 +3,8 @@ @@ -101,6 +_,7 @@ } - public void m_94922_(Toast p_94923_) { + public void addToast(Toast p_94923_) { + if (net.minecraftforge.client.ForgeHooksClient.onToastAdd(p_94923_)) return; - this.f_94916_.add(p_94923_); + this.queued.add(p_94923_); } diff --git a/patches/minecraft/net/minecraft/client/gui/screens/ChatScreen.java.patch b/patches/minecraft/net/minecraft/client/gui/screens/ChatScreen.java.patch index 779ef5682f..8968974f3a 100644 --- a/patches/minecraft/net/minecraft/client/gui/screens/ChatScreen.java.patch +++ b/patches/minecraft/net/minecraft/client/gui/screens/ChatScreen.java.patch @@ -1,11 +1,11 @@ --- a/net/minecraft/client/gui/screens/ChatScreen.java +++ b/net/minecraft/client/gui/screens/ChatScreen.java @@ -225,7 +_,7 @@ - this.f_96541_.f_91074_.f_108617_.m_246175_(p_242400_); + this.minecraft.player.connection.sendChat(p_242400_); } - return true; -+ return f_96541_.f_91080_ == this; // FORGE: Prevent closing the screen if another screen has been opened. ++ return minecraft.screen == this; // FORGE: Prevent closing the screen if another screen has been opened. } } diff --git a/patches/minecraft/net/minecraft/client/gui/screens/ConnectScreen.java.patch b/patches/minecraft/net/minecraft/client/gui/screens/ConnectScreen.java.patch index d535a7622c..5aaaf87247 100644 --- a/patches/minecraft/net/minecraft/client/gui/screens/ConnectScreen.java.patch +++ b/patches/minecraft/net/minecraft/client/gui/screens/ConnectScreen.java.patch @@ -4,8 +4,8 @@ } if (optional.isEmpty()) { -+ ConnectScreen.f_95683_.error("Couldn't connect to server: Unknown host \"{}\"", p_249536_.m_171863_()); ++ ConnectScreen.LOGGER.error("Couldn't connect to server: Unknown host \"{}\"", p_249536_.getHost()); + net.minecraftforge.network.DualStackUtils.logInitialPreferences(); p_251955_.execute(() -> { - p_251955_.m_91152_(new DisconnectedScreen(ConnectScreen.this.f_95686_, ConnectScreen.this.f_278471_, ConnectScreen.f_169260_)); + p_251955_.setScreen(new DisconnectedScreen(ConnectScreen.this.parent, ConnectScreen.this.connectFailedTitle, ConnectScreen.UNKNOWN_HOST_MESSAGE)); }); diff --git a/patches/minecraft/net/minecraft/client/gui/screens/LoadingOverlay.java.patch b/patches/minecraft/net/minecraft/client/gui/screens/LoadingOverlay.java.patch index e3c7a5c084..02b12e39a8 100644 --- a/patches/minecraft/net/minecraft/client/gui/screens/LoadingOverlay.java.patch +++ b/patches/minecraft/net/minecraft/client/gui/screens/LoadingOverlay.java.patch @@ -3,16 +3,16 @@ @@ -132,6 +_,7 @@ } - if (this.f_96168_ == -1L && this.f_96164_.m_7746_() && (!this.f_96166_ || f1 >= 2.0F)) { -+ this.f_96168_ = Util.m_137550_(); // Moved up to guard against inf loops caused by callback + if (this.fadeOutStart == -1L && this.reload.isDone() && (!this.fadeIn || f1 >= 2.0F)) { ++ this.fadeOutStart = Util.getMillis(); // Moved up to guard against inf loops caused by callback try { - this.f_96164_.m_7748_(); - this.f_96165_.accept(Optional.empty()); + this.reload.checkExceptions(); + this.onFinish.accept(Optional.empty()); @@ -139,7 +_,6 @@ - this.f_96165_.accept(Optional.of(throwable)); + this.onFinish.accept(Optional.of(throwable)); } -- this.f_96168_ = Util.m_137550_(); - if (this.f_96163_.f_91080_ != null) { - this.f_96163_.f_91080_.m_6575_(this.f_96163_, p_281839_.m_280182_(), p_281839_.m_280206_()); +- this.fadeOutStart = Util.getMillis(); + if (this.minecraft.screen != null) { + this.minecraft.screen.init(this.minecraft, p_281839_.guiWidth(), p_281839_.guiHeight()); } diff --git a/patches/minecraft/net/minecraft/client/gui/screens/MenuScreens.java.patch b/patches/minecraft/net/minecraft/client/gui/screens/MenuScreens.java.patch index 366ec53b4e..fcd32a6019 100644 --- a/patches/minecraft/net/minecraft/client/gui/screens/MenuScreens.java.patch +++ b/patches/minecraft/net/minecraft/client/gui/screens/MenuScreens.java.patch @@ -1,21 +1,21 @@ --- a/net/minecraft/client/gui/screens/MenuScreens.java +++ b/net/minecraft/client/gui/screens/MenuScreens.java @@ -40,6 +_,10 @@ - private static final Map, MenuScreens.ScreenConstructor> f_96196_ = Maps.newHashMap(); + private static final Map, MenuScreens.ScreenConstructor> SCREENS = Maps.newHashMap(); - public static void m_96201_(@Nullable MenuType p_96202_, Minecraft p_96203_, int p_96204_, Component p_96205_) { -+ getScreenFactory(p_96202_, p_96203_, p_96204_, p_96205_).ifPresent(f -> f.m_96209_(p_96205_, p_96202_, p_96203_, p_96204_)); + public static void create(@Nullable MenuType p_96202_, Minecraft p_96203_, int p_96204_, Component p_96205_) { ++ getScreenFactory(p_96202_, p_96203_, p_96204_, p_96205_).ifPresent(f -> f.fromPacket(p_96205_, p_96202_, p_96203_, p_96204_)); + } + + public static java.util.Optional> getScreenFactory(@Nullable MenuType p_96202_, Minecraft p_96203_, int p_96204_, Component p_96205_) { if (p_96202_ == null) { - f_96195_.warn("Trying to open invalid screen with name: {}", (Object)p_96205_.getString()); + LOGGER.warn("Trying to open invalid screen with name: {}", (Object)p_96205_.getString()); } else { @@ -47,9 +_,10 @@ if (screenconstructor == null) { - f_96195_.warn("Failed to create screen for menu type: {}", (Object)BuiltInRegistries.f_256818_.m_7981_(p_96202_)); + LOGGER.warn("Failed to create screen for menu type: {}", (Object)BuiltInRegistries.MENU.getKey(p_96202_)); } else { -- screenconstructor.m_96209_(p_96205_, p_96202_, p_96203_, p_96204_); +- screenconstructor.fromPacket(p_96205_, p_96202_, p_96203_, p_96204_); + return java.util.Optional.of(screenconstructor); } } diff --git a/patches/minecraft/net/minecraft/client/gui/screens/OptionsScreen.java.patch b/patches/minecraft/net/minecraft/client/gui/screens/OptionsScreen.java.patch index dec3aa8c4d..b0d09f10d3 100644 --- a/patches/minecraft/net/minecraft/client/gui/screens/OptionsScreen.java.patch +++ b/patches/minecraft/net/minecraft/client/gui/screens/OptionsScreen.java.patch @@ -1,17 +1,17 @@ --- a/net/minecraft/client/gui/screens/OptionsScreen.java +++ b/net/minecraft/client/gui/screens/OptionsScreen.java @@ -150,6 +_,14 @@ - p_283520_.m_280653_(this.f_96547_, this.f_96539_, this.f_96543_ / 2, 15, 16777215); + p_283520_.drawCenteredString(this.font, this.title, this.width / 2, 15, 16777215); } + @Override -+ public void m_7379_() { ++ public void onClose() { + // We need to consider 2 potential parent screens here: + // 1. From the main menu, in which case display the main menu + // 2. From the pause menu, in which case exit back to game -+ this.f_96541_.m_91152_(this.f_96235_ instanceof PauseScreen ? null : this.f_96235_); ++ this.minecraft.setScreen(this.lastScreen instanceof PauseScreen ? null : this.lastScreen); + } + - private Button m_260993_(Component p_261565_, Supplier p_262119_) { - return Button.m_253074_(p_261565_, (p_280808_) -> { - this.f_96541_.m_91152_(p_262119_.get()); + private Button openScreenButton(Component p_261565_, Supplier p_262119_) { + return Button.builder(p_261565_, (p_280808_) -> { + this.minecraft.setScreen(p_262119_.get()); diff --git a/patches/minecraft/net/minecraft/client/gui/screens/PauseScreen.java.patch b/patches/minecraft/net/minecraft/client/gui/screens/PauseScreen.java.patch index 0af93af62d..45bf65d5aa 100644 --- a/patches/minecraft/net/minecraft/client/gui/screens/PauseScreen.java.patch +++ b/patches/minecraft/net/minecraft/client/gui/screens/PauseScreen.java.patch @@ -2,9 +2,9 @@ +++ b/net/minecraft/client/gui/screens/PauseScreen.java @@ -88,6 +_,7 @@ } else { - gridlayout$rowhelper.m_264139_(this.m_262456_(f_262254_, SocialInteractionsScreen::new)); + gridlayout$rowhelper.addChild(this.openScreenButton(PLAYER_REPORTING, SocialInteractionsScreen::new)); } -+ gridlayout$rowhelper.m_264108_(Button.m_253074_(Component.m_237115_("fml.menu.mods"), button -> this.f_96541_.m_91152_(new net.minecraftforge.client.gui.ModListScreen(this))).m_252780_(f_262268_).m_253136_(), 2); ++ gridlayout$rowhelper.addChild(Button.builder(Component.translatable("fml.menu.mods"), button -> this.minecraft.setScreen(new net.minecraftforge.client.gui.ModListScreen(this))).width(BUTTON_WIDTH_FULL).build(), 2); - Component component = this.f_96541_.m_91090_() ? f_262217_ : CommonComponents.f_290546_; - this.f_252482_ = gridlayout$rowhelper.m_264108_(Button.m_253074_(component, (p_280815_) -> { + Component component = this.minecraft.isLocalServer() ? RETURN_TO_MENU : CommonComponents.GUI_DISCONNECT; + this.disconnectButton = gridlayout$rowhelper.addChild(Button.builder(component, (p_280815_) -> { diff --git a/patches/minecraft/net/minecraft/client/gui/screens/Screen.java.patch b/patches/minecraft/net/minecraft/client/gui/screens/Screen.java.patch index 2683af1273..1ebdc4cb85 100644 --- a/patches/minecraft/net/minecraft/client/gui/screens/Screen.java.patch +++ b/patches/minecraft/net/minecraft/client/gui/screens/Screen.java.patch @@ -3,72 +3,72 @@ @@ -207,7 +_,7 @@ } - public void m_7379_() { -- this.f_96541_.m_91152_((Screen)null); -+ this.f_96541_.popGuiLayer(); + public void onClose() { +- this.minecraft.setScreen((Screen)null); ++ this.minecraft.popGuiLayer(); } - protected T m_142416_(T p_169406_) { + protected T addRenderableWidget(T p_169406_) { @@ -319,7 +_,10 @@ - this.f_96543_ = p_96608_; - this.f_96544_ = p_96609_; - if (!this.f_267454_) { -+ if (!net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.client.event.ScreenEvent.Init.Pre(this, this.f_96540_, this::addEventWidget, this::m_169411_))) { - this.m_7856_(); + this.width = p_96608_; + this.height = p_96609_; + if (!this.initialized) { ++ if (!net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.client.event.ScreenEvent.Init.Pre(this, this.children, this::addEventWidget, this::removeWidget))) { + this.init(); + } -+ net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.client.event.ScreenEvent.Init.Post(this, this.f_96540_, this::addEventWidget, this::m_169411_)); ++ net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.client.event.ScreenEvent.Init.Post(this, this.children, this::addEventWidget, this::removeWidget)); } else { - this.m_267719_(); + this.repositionElements(); } @@ -332,7 +_,10 @@ - protected void m_232761_() { - this.m_169413_(); - this.m_264131_(); -+ if (!net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.client.event.ScreenEvent.Init.Pre(this, this.f_96540_, this::addEventWidget, this::m_169411_))) { - this.m_7856_(); + protected void rebuildWidgets() { + this.clearWidgets(); + this.clearFocus(); ++ if (!net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.client.event.ScreenEvent.Init.Pre(this, this.children, this::addEventWidget, this::removeWidget))) { + this.init(); + } -+ net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.client.event.ScreenEvent.Init.Post(this, this.f_96540_, this::addEventWidget, this::m_169411_)); ++ net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.client.event.ScreenEvent.Init.Post(this, this.children, this::addEventWidget, this::removeWidget)); } - public List m_6702_() { + public List children() { @@ -354,6 +_,7 @@ - public void m_280273_(GuiGraphics p_283688_, int p_299421_, int p_298679_, float p_297268_) { - if (this.f_96541_.f_91073_ != null) { - this.m_293900_(p_283688_); + public void renderBackground(GuiGraphics p_283688_, int p_299421_, int p_298679_, float p_297268_) { + if (this.minecraft.level != null) { + this.renderTransparentBackground(p_283688_); + net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.client.event.ScreenEvent.BackgroundRendered(this, p_283688_)); } else { - this.m_280039_(p_283688_); + this.renderDirtBackground(p_283688_); } @@ -369,6 +_,7 @@ int i = 32; - p_282281_.m_280398_(f_279548_, 0, 0, 0, 0.0F, 0.0F, this.f_96543_, this.f_96544_, 32, 32); - p_282281_.m_280246_(1.0F, 1.0F, 1.0F, 1.0F); + p_282281_.blit(BACKGROUND_LOCATION, 0, 0, 0, 0.0F, 0.0F, this.width, this.height, 32, 32); + p_282281_.setColor(1.0F, 1.0F, 1.0F, 1.0F); + net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.client.event.ScreenEvent.BackgroundRendered(this, p_282281_)); } - public boolean m_7043_() { + public boolean isPauseScreen() { @@ -462,6 +_,10 @@ - public void m_7400_(List p_96591_) { + public void onFilesDrop(List p_96591_) { } + public Minecraft getMinecraft() { -+ return this.f_96541_; ++ return this.minecraft; + } + - private void m_169380_(long p_169381_, boolean p_169382_) { - this.f_169377_ = Util.m_137550_() + p_169381_; + private void scheduleNarration(long p_169381_, boolean p_169382_) { + this.nextNarrationTime = Util.getMillis() + p_169381_; if (p_169382_) { @@ -632,5 +_,13 @@ - this.f_169421_ = p_169425_; - this.f_169422_ = p_169426_; + this.index = p_169425_; + this.priority = p_169426_; } + } + + private void addEventWidget(GuiEventListener b) { + if (b instanceof Renderable r) -+ this.f_169369_.add(r); ++ this.renderables.add(r); + if (b instanceof NarratableEntry ne) -+ this.f_169368_.add(ne); -+ f_96540_.add(b); ++ this.narratables.add(ne); ++ children.add(b); } } diff --git a/patches/minecraft/net/minecraft/client/gui/screens/TitleScreen.java.patch b/patches/minecraft/net/minecraft/client/gui/screens/TitleScreen.java.patch index 54f7b0c5c8..3e3b45a640 100644 --- a/patches/minecraft/net/minecraft/client/gui/screens/TitleScreen.java.patch +++ b/patches/minecraft/net/minecraft/client/gui/screens/TitleScreen.java.patch @@ -2,66 +2,66 @@ +++ b/net/minecraft/client/gui/screens/TitleScreen.java @@ -64,6 +_,7 @@ @Nullable - private TitleScreen.WarningLabel f_232768_; - private final LogoRenderer f_263781_; + private TitleScreen.WarningLabel warningLabel; + private final LogoRenderer logoRenderer; + private net.minecraftforge.client.gui.TitleScreenModUpdateIndicator modUpdateNotification; public TitleScreen() { this(false); @@ -114,11 +_,15 @@ - int j = this.f_96543_ - i - 2; + int j = this.width - i - 2; int k = 24; - int l = this.f_96544_ / 4 + 48; + int l = this.height / 4 + 48; + Button modButton = null; - if (this.f_96541_.m_91402_()) { - this.m_96772_(l, 24); + if (this.minecraft.isDemo()) { + this.createDemoMenuOptions(l, 24); } else { - this.m_96763_(l, 24); -+ modButton = this.m_142416_(Button.m_253074_(Component.m_237115_("fml.menu.mods"), button -> this.f_96541_.m_91152_(new net.minecraftforge.client.gui.ModListScreen(this))) -+ .m_252794_(this.f_96543_ / 2 - 100, l + 24 * 2).m_253046_(98, 20).m_253136_()); + this.createNormalMenuOptions(l, 24); ++ modButton = this.addRenderableWidget(Button.builder(Component.translatable("fml.menu.mods"), button -> this.minecraft.setScreen(new net.minecraftforge.client.gui.ModListScreen(this))) ++ .pos(this.width / 2 - 100, l + 24 * 2).size(98, 20).build()); } + modUpdateNotification = net.minecraftforge.client.gui.TitleScreenModUpdateIndicator.init(this, modButton); - SpriteIconButton spriteiconbutton = this.m_142416_(CommonButtons.m_292713_(20, (p_280830_) -> { - this.f_96541_.m_91152_(new LanguageSelectScreen(this, this.f_96541_.f_91066_, this.f_96541_.m_91102_())); + SpriteIconButton spriteiconbutton = this.addRenderableWidget(CommonButtons.language(20, (p_280830_) -> { + this.minecraft.setScreen(new LanguageSelectScreen(this, this.minecraft.options, this.minecraft.getLanguageManager())); @@ -164,7 +_,7 @@ - }).m_252987_(this.f_96543_ / 2 - 100, p_96764_ + p_96765_ * 1, 200, 20).m_257505_(tooltip).m_253136_())).f_93623_ = flag; - (this.m_142416_(Button.m_253074_(Component.m_237115_("menu.online"), (p_210872_) -> { - this.m_96793_(); -- }).m_252987_(this.f_96543_ / 2 - 100, p_96764_ + p_96765_ * 2, 200, 20).m_257505_(tooltip).m_253136_())).f_93623_ = flag; -+ }).m_252987_(this.f_96543_ / 2 + 2, p_96764_ + p_96765_ * 2, 98, 20).m_257505_(tooltip).m_253136_())).f_93623_ = flag; + }).bounds(this.width / 2 - 100, p_96764_ + p_96765_ * 1, 200, 20).tooltip(tooltip).build())).active = flag; + (this.addRenderableWidget(Button.builder(Component.translatable("menu.online"), (p_210872_) -> { + this.realmsButtonClicked(); +- }).bounds(this.width / 2 - 100, p_96764_ + p_96765_ * 2, 200, 20).tooltip(tooltip).build())).active = flag; ++ }).bounds(this.width / 2 + 2, p_96764_ + p_96765_ * 2, 98, 20).tooltip(tooltip).build())).active = flag; } @Nullable @@ -248,6 +_,7 @@ - this.f_232768_.m_280409_(p_282860_, i); + this.warningLabel.render(p_282860_, i); } -+ net.minecraftforge.client.ForgeHooksClient.renderMainMenu(this, p_282860_, this.f_96547_, this.f_96543_, this.f_96544_, i); - if (this.f_96721_ != null) { - this.f_96721_.m_280672_(p_282860_, this.f_96543_, this.f_96547_, i); ++ net.minecraftforge.client.ForgeHooksClient.renderMainMenu(this, p_282860_, this.font, this.width, this.height, i); + if (this.splash != null) { + this.splash.render(p_282860_, this.width, this.font, i); } @@ -263,7 +_,14 @@ - s = s + I18n.m_118938_("menu.modded"); + s = s + I18n.get("menu.modded"); } -- p_282860_.m_280488_(this.f_96547_, s, 2, this.f_96544_ - 10, 16777215 | i); +- p_282860_.drawString(this.font, s, 2, this.height - 10, 16777215 | i); + net.minecraftforge.internal.BrandingControl.forEachLine(true, true, (brdline, brd) -> -+ p_282860_.m_280488_(this.f_96547_, brd, 2, this.f_96544_ - ( 10 + brdline * (this.f_96547_.f_92710_ + 1)), 16777215 | i) ++ p_282860_.drawString(this.font, brd, 2, this.height - ( 10 + brdline * (this.font.lineHeight + 1)), 16777215 | i) + ); + + net.minecraftforge.internal.BrandingControl.forEachAboveCopyrightLine((brdline, brd) -> -+ p_282860_.m_280488_(this.f_96547_, brd, this.f_96543_ - f_96547_.m_92895_(brd), this.f_96544_ - (10 + (brdline + 1) * ( this.f_96547_.f_92710_ + 1)), 16777215 | i) ++ p_282860_.drawString(this.font, brd, this.width - font.width(brd), this.height - (10 + (brdline + 1) * ( this.font.lineHeight + 1)), 16777215 | i) + ); + - for(GuiEventListener guieventlistener : this.m_6702_()) { + for(GuiEventListener guieventlistener : this.children()) { if (guieventlistener instanceof AbstractWidget) { @@ -276,6 +_,7 @@ RenderSystem.enableDepthTest(); - this.f_96726_.m_88315_(p_282860_, p_281753_, p_283539_, p_282628_); + this.realmsNotificationsScreen.render(p_282860_, p_281753_, p_283539_, p_282628_); } -+ if (f1 >= 1.0f) modUpdateNotification.m_88315_(p_282860_, p_281753_, p_283539_, p_282628_); ++ if (f1 >= 1.0f) modUpdateNotification.render(p_282860_, p_281753_, p_283539_, p_282628_); } } diff --git a/patches/minecraft/net/minecraft/client/gui/screens/advancements/AdvancementTab.java.patch b/patches/minecraft/net/minecraft/client/gui/screens/advancements/AdvancementTab.java.patch index 3f650e905e..a67d239fb2 100644 --- a/patches/minecraft/net/minecraft/client/gui/screens/advancements/AdvancementTab.java.patch +++ b/patches/minecraft/net/minecraft/client/gui/screens/advancements/AdvancementTab.java.patch @@ -1,15 +1,15 @@ --- a/net/minecraft/client/gui/screens/advancements/AdvancementTab.java +++ b/net/minecraft/client/gui/screens/advancements/AdvancementTab.java @@ -38,6 +_,7 @@ - private int f_97141_ = Integer.MIN_VALUE; - private float f_97142_; - private boolean f_97143_; + private int maxY = Integer.MIN_VALUE; + private float fade; + private boolean centered; + private int page; public AdvancementTab(Minecraft p_97145_, AdvancementsScreen p_97146_, AdvancementTabType p_97147_, int p_97148_, AdvancementNode p_297568_, DisplayInfo p_97150_) { - this.f_97126_ = p_97145_; + this.minecraft = p_97145_; @@ -52,6 +_,15 @@ - this.m_97175_(this.f_97134_, p_297568_.m_295246_()); + this.addWidget(this.root, p_297568_.holder()); } + public AdvancementTab(Minecraft mc, AdvancementsScreen screen, AdvancementTabType type, int index, int page, AdvancementNode adv, DisplayInfo info) { @@ -21,17 +21,17 @@ + return page; + } + - public AdvancementTabType m_169538_() { - return this.f_97128_; + public AdvancementTabType getType() { + return this.type; } @@ -146,8 +_,8 @@ return null; } else { for(AdvancementTabType advancementtabtype : AdvancementTabType.values()) { -- if (p_97173_ < advancementtabtype.m_97210_()) { +- if (p_97173_ < advancementtabtype.getMax()) { - return new AdvancementTab(p_97171_, p_97172_, advancementtabtype, p_97173_, p_299876_, optional.get()); -+ if ((p_97173_ % AdvancementTabType.MAX_TABS) < advancementtabtype.m_97210_()) { ++ if ((p_97173_ % AdvancementTabType.MAX_TABS) < advancementtabtype.getMax()) { + return new AdvancementTab(p_97171_, p_97172_, advancementtabtype, p_97173_ % AdvancementTabType.MAX_TABS, p_97173_ / AdvancementTabType.MAX_TABS, p_299876_, optional.get()); } - p_97173_ -= advancementtabtype.m_97210_(); + p_97173_ -= advancementtabtype.getMax(); diff --git a/patches/minecraft/net/minecraft/client/gui/screens/advancements/AdvancementTabType.java.patch b/patches/minecraft/net/minecraft/client/gui/screens/advancements/AdvancementTabType.java.patch index aaf4306457..c2392b8290 100644 --- a/patches/minecraft/net/minecraft/client/gui/screens/advancements/AdvancementTabType.java.patch +++ b/patches/minecraft/net/minecraft/client/gui/screens/advancements/AdvancementTabType.java.patch @@ -4,7 +4,7 @@ LEFT(new AdvancementTabType.Sprites(new ResourceLocation("advancements/tab_left_top_selected"), new ResourceLocation("advancements/tab_left_middle_selected"), new ResourceLocation("advancements/tab_left_bottom_selected")), new AdvancementTabType.Sprites(new ResourceLocation("advancements/tab_left_top"), new ResourceLocation("advancements/tab_left_middle"), new ResourceLocation("advancements/tab_left_bottom")), 32, 28, 5), RIGHT(new AdvancementTabType.Sprites(new ResourceLocation("advancements/tab_right_top_selected"), new ResourceLocation("advancements/tab_right_middle_selected"), new ResourceLocation("advancements/tab_right_bottom_selected")), new AdvancementTabType.Sprites(new ResourceLocation("advancements/tab_right_top"), new ResourceLocation("advancements/tab_right_middle"), new ResourceLocation("advancements/tab_right_bottom")), 32, 28, 5); -+ public static final int MAX_TABS = java.util.Arrays.stream(values()).mapToInt(e -> e.f_97199_).sum(); - private final AdvancementTabType.Sprites f_291110_; - private final AdvancementTabType.Sprites f_291777_; - private final int f_97197_; ++ public static final int MAX_TABS = java.util.Arrays.stream(values()).mapToInt(e -> e.max).sum(); + private final AdvancementTabType.Sprites selectedSprites; + private final AdvancementTabType.Sprites unselectedSprites; + private final int width; diff --git a/patches/minecraft/net/minecraft/client/gui/screens/advancements/AdvancementsScreen.java.patch b/patches/minecraft/net/minecraft/client/gui/screens/advancements/AdvancementsScreen.java.patch index 0838731a77..f6cb64b45f 100644 --- a/patches/minecraft/net/minecraft/client/gui/screens/advancements/AdvancementsScreen.java.patch +++ b/patches/minecraft/net/minecraft/client/gui/screens/advancements/AdvancementsScreen.java.patch @@ -2,73 +2,73 @@ +++ b/net/minecraft/client/gui/screens/advancements/AdvancementsScreen.java @@ -42,6 +_,7 @@ @Nullable - private AdvancementTab f_97336_; - private boolean f_97337_; + private AdvancementTab selectedTab; + private boolean isScrolling; + private static int tabPage, maxPages; public AdvancementsScreen(ClientAdvancements p_97340_) { - super(GameNarrator.f_93310_); + super(GameNarrator.NO_TITLE); @@ -58,7 +_,15 @@ } else { - this.f_97334_.m_104401_(this.f_97336_ == null ? null : this.f_97336_.m_293004_().m_295246_(), true); + this.advancements.setSelectedTab(this.selectedTab == null ? null : this.selectedTab.getRootNode().holder(), true); } - -+ if (this.f_97335_.size() > AdvancementTabType.MAX_TABS) { -+ int guiLeft = (this.f_96543_ - 252) / 2; -+ int guiTop = (this.f_96544_ - 140) / 2; -+ m_142416_(net.minecraft.client.gui.components.Button.m_253074_(Component.m_237113_("<"), b -> tabPage = Math.max(tabPage - 1, 0 )) -+ .m_252794_(guiLeft, guiTop - 50).m_253046_(20, 20).m_253136_()); -+ m_142416_(net.minecraft.client.gui.components.Button.m_253074_(Component.m_237113_(">"), b -> tabPage = Math.min(tabPage + 1, maxPages)) -+ .m_252794_(guiLeft + f_169556_ - 20, guiTop - 50).m_253046_(20, 20).m_253136_()); -+ maxPages = this.f_97335_.size() / AdvancementTabType.MAX_TABS; ++ if (this.tabs.size() > AdvancementTabType.MAX_TABS) { ++ int guiLeft = (this.width - 252) / 2; ++ int guiTop = (this.height - 140) / 2; ++ addRenderableWidget(net.minecraft.client.gui.components.Button.builder(Component.literal("<"), b -> tabPage = Math.max(tabPage - 1, 0 )) ++ .pos(guiLeft, guiTop - 50).size(20, 20).build()); ++ addRenderableWidget(net.minecraft.client.gui.components.Button.builder(Component.literal(">"), b -> tabPage = Math.min(tabPage + 1, maxPages)) ++ .pos(guiLeft + WINDOW_WIDTH - 20, guiTop - 50).size(20, 20).build()); ++ maxPages = this.tabs.size() / AdvancementTabType.MAX_TABS; + } } - public void m_7861_() { + public void removed() { @@ -76,7 +_,7 @@ - int j = (this.f_96544_ - 140) / 2; + int j = (this.height - 140) / 2; - for(AdvancementTab advancementtab : this.f_97335_.values()) { -- if (advancementtab.m_97154_(i, j, p_97343_, p_97344_)) { -+ if (advancementtab.getPage() == tabPage && advancementtab.m_97154_(i, j, p_97343_, p_97344_)) { - this.f_97334_.m_104401_(advancementtab.m_293004_().m_295246_(), true); + for(AdvancementTab advancementtab : this.tabs.values()) { +- if (advancementtab.isMouseOver(i, j, p_97343_, p_97344_)) { ++ if (advancementtab.getPage() == tabPage && advancementtab.isMouseOver(i, j, p_97343_, p_97344_)) { + this.advancements.setSelectedTab(advancementtab.getRootNode().holder(), true); break; } @@ -100,9 +_,15 @@ - int i = (this.f_96543_ - 252) / 2; - int j = (this.f_96544_ - 140) / 2; - this.m_280273_(p_282589_, p_282255_, p_283354_, p_283123_); + int i = (this.width - 252) / 2; + int j = (this.height - 140) / 2; + this.renderBackground(p_282589_, p_282255_, p_283354_, p_283123_); + if (maxPages != 0) { -+ net.minecraft.network.chat.Component page = Component.m_237113_(String.format("%d / %d", tabPage + 1, maxPages + 1)); -+ int width = this.f_96547_.m_92852_(page); -+ p_282589_.m_280648_(this.f_96547_, page.m_7532_(), i + (252 / 2) - (width / 2), j - 44, -1); ++ net.minecraft.network.chat.Component page = Component.literal(String.format("%d / %d", tabPage + 1, maxPages + 1)); ++ int width = this.font.width(page); ++ p_282589_.drawString(this.font, page.getVisualOrderText(), i + (252 / 2) - (width / 2), j - 44, -1); + } - this.m_97373_(p_282589_, p_282255_, p_283354_, i, j); - this.m_280088_(p_282589_, i, j); - this.m_280355_(p_282589_, p_282255_, p_283354_, i, j); -+ super.m_88315_(p_282589_, p_282255_, p_283354_, p_283123_); + this.renderInside(p_282589_, p_282255_, p_283354_, i, j); + this.renderWindow(p_282589_, i, j); + this.renderTooltips(p_282589_, p_282255_, p_283354_, i, j); ++ super.render(p_282589_, p_282255_, p_283354_, p_283123_); } - public boolean m_7979_(double p_97347_, double p_97348_, int p_97349_, double p_97350_, double p_97351_) { + public boolean mouseDragged(double p_97347_, double p_97348_, int p_97349_, double p_97350_, double p_97351_) { @@ -146,10 +_,12 @@ - p_283395_.m_280218_(f_97329_, p_281890_, p_282532_, 0, 0, 252, 140); - if (this.f_97335_.size() > 1) { - for(AdvancementTab advancementtab : this.f_97335_.values()) { + p_283395_.blit(WINDOW_LOCATION, p_281890_, p_282532_, 0, 0, 252, 140); + if (this.tabs.size() > 1) { + for(AdvancementTab advancementtab : this.tabs.values()) { + if (advancementtab.getPage() == tabPage) - advancementtab.m_280105_(p_283395_, p_281890_, p_282532_, advancementtab == this.f_97336_); + advancementtab.drawTab(p_283395_, p_281890_, p_282532_, advancementtab == this.selectedTab); } - for(AdvancementTab advancementtab1 : this.f_97335_.values()) { + for(AdvancementTab advancementtab1 : this.tabs.values()) { + if (advancementtab1.getPage() == tabPage) - advancementtab1.m_280485_(p_283395_, p_281890_, p_282532_); + advancementtab1.drawIcon(p_283395_, p_281890_, p_282532_); } } @@ -169,7 +_,7 @@ - if (this.f_97335_.size() > 1) { - for(AdvancementTab advancementtab : this.f_97335_.values()) { -- if (advancementtab.m_97154_(p_281519_, p_283371_, (double)p_283556_, (double)p_282458_)) { -+ if (advancementtab.getPage() == tabPage && advancementtab.m_97154_(p_281519_, p_283371_, (double)p_283556_, (double)p_282458_)) { - p_282784_.m_280557_(this.f_96547_, advancementtab.m_97189_(), p_283556_, p_282458_); + if (this.tabs.size() > 1) { + for(AdvancementTab advancementtab : this.tabs.values()) { +- if (advancementtab.isMouseOver(p_281519_, p_283371_, (double)p_283556_, (double)p_282458_)) { ++ if (advancementtab.getPage() == tabPage && advancementtab.isMouseOver(p_281519_, p_283371_, (double)p_283556_, (double)p_282458_)) { + p_282784_.renderTooltip(this.font, advancementtab.getTitle(), p_283556_, p_282458_); } } diff --git a/patches/minecraft/net/minecraft/client/gui/screens/controls/KeyBindsList.java.patch b/patches/minecraft/net/minecraft/client/gui/screens/controls/KeyBindsList.java.patch index 4c37a75365..787b329ae4 100644 --- a/patches/minecraft/net/minecraft/client/gui/screens/controls/KeyBindsList.java.patch +++ b/patches/minecraft/net/minecraft/client/gui/screens/controls/KeyBindsList.java.patch @@ -3,40 +3,40 @@ @@ -64,7 +_,7 @@ } - protected int m_5756_() { -- return super.m_5756_() + 15; -+ return super.m_5756_() + 15 + 20; + protected int getScrollbarPosition() { +- return super.getScrollbarPosition() + 15; ++ return super.getScrollbarPosition() + 15 + 20; } - public int m_5759_() { + public int getRowWidth() { @@ -129,10 +_,11 @@ - this.f_193912_ = Button.m_253074_(p_193917_, (p_269618_) -> { - KeyBindsList.this.f_193858_.f_193975_ = p_193916_; - KeyBindsList.this.m_269130_(); -- }).m_252987_(0, 0, 75, 20).m_252778_((p_253311_) -> { -+ }).m_252987_(0, 0, 75 + 20 /* Forge: Add space */, 20).m_252778_((p_253311_) -> { - return p_193916_.m_90862_() ? Component.m_237110_("narrator.controls.unbound", p_193917_) : Component.m_237110_("narrator.controls.bound", p_193917_, p_253311_.get()); - }).m_253136_(); - this.f_193913_ = Button.m_253074_(Component.m_237115_("controls.reset"), (p_269616_) -> { -+ this.f_193910_.setToDefault(); - KeyBindsList.this.f_93386_.f_91066_.m_92159_(p_193916_, p_193916_.m_90861_()); - KeyBindsList.this.m_269130_(); - }).m_252987_(0, 0, 50, 20).m_252778_((p_253313_) -> { + this.changeButton = Button.builder(p_193917_, (p_269618_) -> { + KeyBindsList.this.keyBindsScreen.selectedKey = p_193916_; + KeyBindsList.this.resetMappingAndUpdateButtons(); +- }).bounds(0, 0, 75, 20).createNarration((p_253311_) -> { ++ }).bounds(0, 0, 75 + 20 /* Forge: Add space */, 20).createNarration((p_253311_) -> { + return p_193916_.isUnbound() ? Component.translatable("narrator.controls.unbound", p_193917_) : Component.translatable("narrator.controls.bound", p_193917_, p_253311_.get()); + }).build(); + this.resetButton = Button.builder(Component.translatable("controls.reset"), (p_269616_) -> { ++ this.key.setToDefault(); + KeyBindsList.this.minecraft.options.setKey(p_193916_, p_193916_.getDefaultKey()); + KeyBindsList.this.resetMappingAndUpdateButtons(); + }).bounds(0, 0, 50, 20).createNarration((p_253313_) -> { @@ -144,7 +_,7 @@ - public void m_6311_(GuiGraphics p_281805_, int p_281298_, int p_282357_, int p_281373_, int p_283433_, int p_281932_, int p_282224_, int p_282053_, boolean p_282605_, float p_281432_) { - int k = p_281373_ + 90 - KeyBindsList.this.f_193859_; - p_281805_.m_280614_(KeyBindsList.this.f_93386_.f_91062_, this.f_193911_, k, p_282357_ + p_281932_ / 2 - 9 / 2, 16777215, false); -- this.f_193913_.m_252865_(p_281373_ + 190); -+ this.f_193913_.m_252865_(p_281373_ + 190 + 20); - this.f_193913_.m_253211_(p_282357_); - this.f_193913_.m_88315_(p_281805_, p_282224_, p_282053_, p_281432_); - this.f_193912_.m_252865_(p_281373_ + 105); + public void render(GuiGraphics p_281805_, int p_281298_, int p_282357_, int p_281373_, int p_283433_, int p_281932_, int p_282224_, int p_282053_, boolean p_282605_, float p_281432_) { + int k = p_281373_ + 90 - KeyBindsList.this.maxNameWidth; + p_281805_.drawString(KeyBindsList.this.minecraft.font, this.name, k, p_282357_ + p_281932_ / 2 - 9 / 2, 16777215, false); +- this.resetButton.setX(p_281373_ + 190); ++ this.resetButton.setX(p_281373_ + 190 + 20); + this.resetButton.setY(p_282357_); + this.resetButton.render(p_281805_, p_282224_, p_282053_, p_281432_); + this.changeButton.setX(p_281373_ + 105); @@ -173,7 +_,7 @@ - MutableComponent mutablecomponent = Component.m_237119_(); - if (!this.f_193910_.m_90862_()) { - for(KeyMapping keymapping : KeyBindsList.this.f_93386_.f_91066_.f_92059_) { -- if (keymapping != this.f_193910_ && this.f_193910_.m_90850_(keymapping)) { -+ if ((keymapping != this.f_193910_ && this.f_193910_.m_90850_(keymapping)) || keymapping.hasKeyModifierConflict(this.f_193910_)) { // FORGE: gracefully handle conflicts like SHIFT vs SHIFT+G - if (this.f_268447_) { - mutablecomponent.m_130946_(", "); + MutableComponent mutablecomponent = Component.empty(); + if (!this.key.isUnbound()) { + for(KeyMapping keymapping : KeyBindsList.this.minecraft.options.keyMappings) { +- if (keymapping != this.key && this.key.same(keymapping)) { ++ if ((keymapping != this.key && this.key.same(keymapping)) || keymapping.hasKeyModifierConflict(this.key)) { // FORGE: gracefully handle conflicts like SHIFT vs SHIFT+G + if (this.hasCollision) { + mutablecomponent.append(", "); } diff --git a/patches/minecraft/net/minecraft/client/gui/screens/controls/KeyBindsScreen.java.patch b/patches/minecraft/net/minecraft/client/gui/screens/controls/KeyBindsScreen.java.patch index 6f85bdd4e3..3139a26469 100644 --- a/patches/minecraft/net/minecraft/client/gui/screens/controls/KeyBindsScreen.java.patch +++ b/patches/minecraft/net/minecraft/client/gui/screens/controls/KeyBindsScreen.java.patch @@ -1,26 +1,26 @@ --- a/net/minecraft/client/gui/screens/controls/KeyBindsScreen.java +++ b/net/minecraft/client/gui/screens/controls/KeyBindsScreen.java @@ -31,7 +_,7 @@ - this.m_7787_(this.f_193977_); - this.f_193978_ = this.m_142416_(Button.m_253074_(Component.m_237115_("controls.resetAll"), (p_269619_) -> { - for(KeyMapping keymapping : this.f_96282_.f_92059_) { -- keymapping.m_90848_(keymapping.m_90861_()); + this.addWidget(this.keyBindsList); + this.resetButton = this.addRenderableWidget(Button.builder(Component.translatable("controls.resetAll"), (p_269619_) -> { + for(KeyMapping keymapping : this.options.keyMappings) { +- keymapping.setKey(keymapping.getDefaultKey()); + keymapping.setToDefault(); } - this.f_193977_.m_269130_(); + this.keyBindsList.resetMappingAndUpdateButtons(); @@ -55,11 +_,14 @@ - public boolean m_7933_(int p_193987_, int p_193988_, int p_193989_) { - if (this.f_193975_ != null) { + public boolean keyPressed(int p_193987_, int p_193988_, int p_193989_) { + if (this.selectedKey != null) { if (p_193987_ == 256) { -+ this.f_193975_.setKeyModifierAndCode(net.minecraftforge.client.settings.KeyModifier.getActiveModifier(), InputConstants.f_84822_); - this.f_96282_.m_92159_(this.f_193975_, InputConstants.f_84822_); ++ this.selectedKey.setKeyModifierAndCode(net.minecraftforge.client.settings.KeyModifier.getActiveModifier(), InputConstants.UNKNOWN); + this.options.setKey(this.selectedKey, InputConstants.UNKNOWN); } else { -+ this.f_193975_.setKeyModifierAndCode(net.minecraftforge.client.settings.KeyModifier.getActiveModifier(), InputConstants.m_84827_(p_193987_, p_193988_)); - this.f_96282_.m_92159_(this.f_193975_, InputConstants.m_84827_(p_193987_, p_193988_)); ++ this.selectedKey.setKeyModifierAndCode(net.minecraftforge.client.settings.KeyModifier.getActiveModifier(), InputConstants.getKey(p_193987_, p_193988_)); + this.options.setKey(this.selectedKey, InputConstants.getKey(p_193987_, p_193988_)); } -+ if(!net.minecraftforge.client.settings.KeyModifier.isKeyCodeModifier(this.f_193975_.getKey())) - this.f_193975_ = null; - this.f_193976_ = Util.m_137550_(); - this.f_193977_.m_269130_(); ++ if(!net.minecraftforge.client.settings.KeyModifier.isKeyCodeModifier(this.selectedKey.getKey())) + this.selectedKey = null; + this.lastKeySelection = Util.getMillis(); + this.keyBindsList.resetMappingAndUpdateButtons(); diff --git a/patches/minecraft/net/minecraft/client/gui/screens/inventory/AbstractContainerScreen.java.patch b/patches/minecraft/net/minecraft/client/gui/screens/inventory/AbstractContainerScreen.java.patch index 038a72155d..695b875edf 100644 --- a/patches/minecraft/net/minecraft/client/gui/screens/inventory/AbstractContainerScreen.java.patch +++ b/patches/minecraft/net/minecraft/client/gui/screens/inventory/AbstractContainerScreen.java.patch @@ -1,150 +1,150 @@ --- a/net/minecraft/client/gui/screens/inventory/AbstractContainerScreen.java +++ b/net/minecraft/client/gui/screens/inventory/AbstractContainerScreen.java @@ -90,6 +_,7 @@ - int i = this.f_97735_; - int j = this.f_97736_; - super.m_88315_(p_283479_, p_283661_, p_281248_, p_281886_); + int i = this.leftPos; + int j = this.topPos; + super.render(p_283479_, p_283661_, p_281248_, p_281886_); + net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.client.event.ContainerScreenEvent.Render.Background(this, p_283479_, p_283661_, p_281248_)); RenderSystem.disableDepthTest(); - p_283479_.m_280168_().m_85836_(); - p_283479_.m_280168_().m_252880_((float)i, (float)j, 0.0F); + p_283479_.pose().pushPose(); + p_283479_.pose().translate((float)i, (float)j, 0.0F); @@ -106,12 +_,13 @@ - int l = slot.f_40220_; - int i1 = slot.f_40221_; - if (this.f_97734_.m_280329_()) { -- m_280359_(p_283479_, l, i1, 0); + int l = slot.x; + int i1 = slot.y; + if (this.hoveredSlot.isHighlightable()) { +- renderSlotHighlight(p_283479_, l, i1, 0); + renderSlotHighlight(p_283479_, l, i1, 0, getSlotColor(k)); } } } - this.m_280003_(p_283479_, p_283661_, p_281248_); + this.renderLabels(p_283479_, p_283661_, p_281248_); + net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.client.event.ContainerScreenEvent.Render.Foreground(this, p_283479_, p_283661_, p_281248_)); - ItemStack itemstack = this.f_97711_.m_41619_() ? this.f_97732_.m_142621_() : this.f_97711_; - if (!itemstack.m_41619_()) { + ItemStack itemstack = this.draggingItem.isEmpty() ? this.menu.getCarried() : this.draggingItem; + if (!itemstack.isEmpty()) { int l1 = 8; @@ -153,13 +_,16 @@ } - public static void m_280359_(GuiGraphics p_283692_, int p_281453_, int p_281915_, int p_283504_) { -- p_283692_.m_285978_(RenderType.m_286086_(), p_281453_, p_281915_, p_281453_ + 16, p_281915_ + 16, -2130706433, -2130706433, p_283504_); + public static void renderSlotHighlight(GuiGraphics p_283692_, int p_281453_, int p_281915_, int p_283504_) { +- p_283692_.fillGradient(RenderType.guiOverlay(), p_281453_, p_281915_, p_281453_ + 16, p_281915_ + 16, -2130706433, -2130706433, p_283504_); + renderSlotHighlight(p_283692_, p_281453_, p_281915_, p_283504_, -2130706433); + } + public static void renderSlotHighlight(GuiGraphics p_283692_, int p_281453_, int p_281915_, int p_283504_, int color) { -+ p_283692_.m_285978_(RenderType.m_286086_(), p_281453_, p_281915_, p_281453_ + 16, p_281915_ + 16, color, color, p_283504_); ++ p_283692_.fillGradient(RenderType.guiOverlay(), p_281453_, p_281915_, p_281453_ + 16, p_281915_ + 16, color, color, p_283504_); } - protected void m_280072_(GuiGraphics p_283594_, int p_282171_, int p_281909_) { - if (this.f_97732_.m_142621_().m_41619_() && this.f_97734_ != null && this.f_97734_.m_6657_()) { - ItemStack itemstack = this.f_97734_.m_7993_(); -- p_283594_.m_280677_(this.f_96547_, this.m_280553_(itemstack), itemstack.m_150921_(), p_282171_, p_281909_); -+ p_283594_.renderTooltip(this.f_96547_, this.m_280553_(itemstack), itemstack.m_150921_(), itemstack, p_282171_, p_281909_); + protected void renderTooltip(GuiGraphics p_283594_, int p_282171_, int p_281909_) { + if (this.menu.getCarried().isEmpty() && this.hoveredSlot != null && this.hoveredSlot.hasItem()) { + ItemStack itemstack = this.hoveredSlot.getItem(); +- p_283594_.renderTooltip(this.font, this.getTooltipFromContainerItem(itemstack), itemstack.getTooltipImage(), p_282171_, p_281909_); ++ p_283594_.renderTooltip(this.font, this.getTooltipFromContainerItem(itemstack), itemstack.getTooltipImage(), itemstack, p_282171_, p_281909_); } } @@ -172,7 +_,8 @@ - p_282567_.m_280168_().m_85836_(); - p_282567_.m_280168_().m_252880_(0.0F, 0.0F, 232.0F); - p_282567_.m_280480_(p_281330_, p_281772_, p_281689_); -- p_282567_.m_280302_(this.f_96547_, p_281330_, p_281772_, p_281689_ - (this.f_97711_.m_41619_() ? 0 : 8), p_282568_); + p_282567_.pose().pushPose(); + p_282567_.pose().translate(0.0F, 0.0F, 232.0F); + p_282567_.renderItem(p_281330_, p_281772_, p_281689_); +- p_282567_.renderItemDecorations(this.font, p_281330_, p_281772_, p_281689_ - (this.draggingItem.isEmpty() ? 0 : 8), p_282568_); + var font = net.minecraftforge.client.extensions.common.IClientItemExtensions.of(p_281330_).getFont(p_281330_, net.minecraftforge.client.extensions.common.IClientItemExtensions.FontContext.ITEM_COUNT); -+ p_282567_.m_280302_(font == null ? this.f_96547_ : font, p_281330_, p_281772_, p_281689_ - (this.f_97711_.m_41619_() ? 0 : 8), p_282568_); - p_282567_.m_280168_().m_85849_(); ++ p_282567_.renderItemDecorations(font == null ? this.font : font, p_281330_, p_281772_, p_281689_ - (this.draggingItem.isEmpty() ? 0 : 8), p_282568_); + p_282567_.pose().popPose(); } @@ -274,7 +_,8 @@ - if (super.m_6375_(p_97748_, p_97749_, p_97750_)) { + if (super.mouseClicked(p_97748_, p_97749_, p_97750_)) { return true; } else { -- boolean flag = this.f_96541_.f_91066_.f_92097_.m_90830_(p_97750_) && this.f_96541_.f_91072_.m_105290_(); -+ InputConstants.Key mouseKey = InputConstants.Type.MOUSE.m_84895_(p_97750_); -+ boolean flag = this.f_96541_.f_91066_.f_92097_.isActiveAndMatches(mouseKey); - Slot slot = this.m_97744_(p_97748_, p_97749_); - long i = Util.m_137550_(); - this.f_97723_ = this.f_97709_ == slot && i - this.f_97721_ < 250L && this.f_97722_ == p_97750_; +- boolean flag = this.minecraft.options.keyPickItem.matchesMouse(p_97750_) && this.minecraft.gameMode.hasInfiniteItems(); ++ InputConstants.Key mouseKey = InputConstants.Type.MOUSE.getOrCreate(p_97750_); ++ boolean flag = this.minecraft.options.keyPickItem.isActiveAndMatches(mouseKey); + Slot slot = this.findSlot(p_97748_, p_97749_); + long i = Util.getMillis(); + this.doubleclick = this.lastClickSlot == slot && i - this.lastClickTime < 250L && this.lastClickButton == p_97750_; @@ -285,6 +_,7 @@ - int j = this.f_97735_; - int k = this.f_97736_; - boolean flag1 = this.m_7467_(p_97748_, p_97749_, j, k, p_97750_); + int j = this.leftPos; + int k = this.topPos; + boolean flag1 = this.hasClickedOutside(p_97748_, p_97749_, j, k, p_97750_); + if (slot != null) flag1 = false; // Forge, prevent dropping of items through slots outside of GUI boundaries int l = -1; if (slot != null) { - l = slot.f_40219_; + l = slot.index; @@ -310,7 +_,7 @@ } - } else if (!this.f_97738_) { - if (this.f_97732_.m_142621_().m_41619_()) { + } else if (!this.isQuickCrafting) { + if (this.menu.getCarried().isEmpty()) { - if (flag) { -+ if (this.f_96541_.f_91066_.f_92097_.isActiveAndMatches(mouseKey)) { - this.m_6597_(slot, l, p_97750_, ClickType.CLONE); ++ if (this.minecraft.options.keyPickItem.isActiveAndMatches(mouseKey)) { + this.slotClicked(slot, l, p_97750_, ClickType.CLONE); } else { - boolean flag2 = l != -999 && (InputConstants.m_84830_(Minecraft.m_91087_().m_91268_().m_85439_(), 340) || InputConstants.m_84830_(Minecraft.m_91087_().m_91268_().m_85439_(), 344)); + boolean flag2 = l != -999 && (InputConstants.isKeyDown(Minecraft.getInstance().getWindow().getWindow(), 340) || InputConstants.isKeyDown(Minecraft.getInstance().getWindow().getWindow(), 344)); @@ -334,7 +_,7 @@ - this.f_97717_ = 0; + this.quickCraftingType = 0; } else if (p_97750_ == 1) { - this.f_97717_ = 1; + this.quickCraftingType = 1; - } else if (flag) { -+ } else if (this.f_96541_.f_91066_.f_92097_.isActiveAndMatches(mouseKey)) { - this.f_97717_ = 2; ++ } else if (this.minecraft.options.keyPickItem.isActiveAndMatches(mouseKey)) { + this.quickCraftingType = 2; } } @@ -403,10 +_,13 @@ } - public boolean m_6348_(double p_97812_, double p_97813_, int p_97814_) { -+ super.m_6348_(p_97812_, p_97813_, p_97814_); //Forge, Call parent to release buttons - Slot slot = this.m_97744_(p_97812_, p_97813_); - int i = this.f_97735_; - int j = this.f_97736_; - boolean flag = this.m_7467_(p_97812_, p_97813_, i, j, p_97814_); + public boolean mouseReleased(double p_97812_, double p_97813_, int p_97814_) { ++ super.mouseReleased(p_97812_, p_97813_, p_97814_); //Forge, Call parent to release buttons + Slot slot = this.findSlot(p_97812_, p_97813_); + int i = this.leftPos; + int j = this.topPos; + boolean flag = this.hasClickedOutside(p_97812_, p_97813_, i, j, p_97814_); + if (slot != null) flag = false; // Forge, prevent dropping of items through slots outside of GUI boundaries -+ InputConstants.Key mouseKey = InputConstants.Type.MOUSE.m_84895_(p_97814_); ++ InputConstants.Key mouseKey = InputConstants.Type.MOUSE.getOrCreate(p_97814_); int k = -1; if (slot != null) { - k = slot.f_40219_; + k = slot.index; @@ -420,7 +_,7 @@ - if (m_96638_()) { - if (!this.f_97724_.m_41619_()) { - for(Slot slot2 : this.f_97732_.f_38839_) { -- if (slot2 != null && slot2.m_8010_(this.f_96541_.f_91074_) && slot2.m_6657_() && slot2.f_40218_ == slot.f_40218_ && AbstractContainerMenu.m_38899_(slot2, this.f_97724_, true)) { -+ if (slot2 != null && slot2.m_8010_(this.f_96541_.f_91074_) && slot2.m_6657_() && slot2.isSameInventory(slot) && AbstractContainerMenu.m_38899_(slot2, this.f_97724_, true)) { - this.m_6597_(slot2, slot2.f_40219_, p_97814_, ClickType.QUICK_MOVE); + if (hasShiftDown()) { + if (!this.lastQuickMoved.isEmpty()) { + for(Slot slot2 : this.menu.slots) { +- if (slot2 != null && slot2.mayPickup(this.minecraft.player) && slot2.hasItem() && slot2.container == slot.container && AbstractContainerMenu.canItemQuickReplace(slot2, this.lastQuickMoved, true)) { ++ if (slot2 != null && slot2.mayPickup(this.minecraft.player) && slot2.hasItem() && slot2.isSameInventory(slot) && AbstractContainerMenu.canItemQuickReplace(slot2, this.lastQuickMoved, true)) { + this.slotClicked(slot2, slot2.index, p_97814_, ClickType.QUICK_MOVE); } } @@ -483,7 +_,7 @@ - this.m_6597_((Slot)null, -999, AbstractContainerMenu.m_38930_(2, this.f_97717_), ClickType.QUICK_CRAFT); - } else if (!this.f_97732_.m_142621_().m_41619_()) { -- if (this.f_96541_.f_91066_.f_92097_.m_90830_(p_97814_)) { -+ if (this.f_96541_.f_91066_.f_92097_.isActiveAndMatches(mouseKey)) { - this.m_6597_(slot, k, p_97814_, ClickType.CLONE); + this.slotClicked((Slot)null, -999, AbstractContainerMenu.getQuickcraftMask(2, this.quickCraftingType), ClickType.QUICK_CRAFT); + } else if (!this.menu.getCarried().isEmpty()) { +- if (this.minecraft.options.keyPickItem.matchesMouse(p_97814_)) { ++ if (this.minecraft.options.keyPickItem.isActiveAndMatches(mouseKey)) { + this.slotClicked(slot, k, p_97814_, ClickType.CLONE); } else { - boolean flag1 = k != -999 && (InputConstants.m_84830_(Minecraft.m_91087_().m_91268_().m_85439_(), 340) || InputConstants.m_84830_(Minecraft.m_91087_().m_91268_().m_85439_(), 344)); + boolean flag1 = k != -999 && (InputConstants.isKeyDown(Minecraft.getInstance().getWindow().getWindow(), 340) || InputConstants.isKeyDown(Minecraft.getInstance().getWindow().getWindow(), 344)); @@ -530,34 +_,39 @@ } - public boolean m_7933_(int p_97765_, int p_97766_, int p_97767_) { -+ InputConstants.Key mouseKey = InputConstants.m_84827_(p_97765_, p_97766_); - if (super.m_7933_(p_97765_, p_97766_, p_97767_)) { + public boolean keyPressed(int p_97765_, int p_97766_, int p_97767_) { ++ InputConstants.Key mouseKey = InputConstants.getKey(p_97765_, p_97766_); + if (super.keyPressed(p_97765_, p_97766_, p_97767_)) { return true; -- } else if (this.f_96541_.f_91066_.f_92092_.m_90832_(p_97765_, p_97766_)) { -+ } else if (this.f_96541_.f_91066_.f_92092_.isActiveAndMatches(mouseKey)) { - this.m_7379_(); +- } else if (this.minecraft.options.keyInventory.matches(p_97765_, p_97766_)) { ++ } else if (this.minecraft.options.keyInventory.isActiveAndMatches(mouseKey)) { + this.onClose(); return true; } else { -- this.m_97805_(p_97765_, p_97766_); -+ boolean handled = this.m_97805_(p_97765_, p_97766_);// Forge MC-146650: Needs to return true when the key is handled - if (this.f_97734_ != null && this.f_97734_.m_6657_()) { -- if (this.f_96541_.f_91066_.f_92097_.m_90832_(p_97765_, p_97766_)) { -+ if (this.f_96541_.f_91066_.f_92097_.isActiveAndMatches(mouseKey)) { - this.m_6597_(this.f_97734_, this.f_97734_.f_40219_, 0, ClickType.CLONE); -- } else if (this.f_96541_.f_91066_.f_92094_.m_90832_(p_97765_, p_97766_)) { +- this.checkHotbarKeyPressed(p_97765_, p_97766_); ++ boolean handled = this.checkHotbarKeyPressed(p_97765_, p_97766_);// Forge MC-146650: Needs to return true when the key is handled + if (this.hoveredSlot != null && this.hoveredSlot.hasItem()) { +- if (this.minecraft.options.keyPickItem.matches(p_97765_, p_97766_)) { ++ if (this.minecraft.options.keyPickItem.isActiveAndMatches(mouseKey)) { + this.slotClicked(this.hoveredSlot, this.hoveredSlot.index, 0, ClickType.CLONE); +- } else if (this.minecraft.options.keyDrop.matches(p_97765_, p_97766_)) { + handled = true; -+ } else if (this.f_96541_.f_91066_.f_92094_.isActiveAndMatches(mouseKey)) { - this.m_6597_(this.f_97734_, this.f_97734_.f_40219_, m_96637_() ? 1 : 0, ClickType.THROW); ++ } else if (this.minecraft.options.keyDrop.isActiveAndMatches(mouseKey)) { + this.slotClicked(this.hoveredSlot, this.hoveredSlot.index, hasControlDown() ? 1 : 0, ClickType.THROW); + handled = true; } -+ } else if (this.f_96541_.f_91066_.f_92094_.isActiveAndMatches(mouseKey)) { ++ } else if (this.minecraft.options.keyDrop.isActiveAndMatches(mouseKey)) { + handled = true; // Forge MC-146650: Emulate MC bug, so we don't drop from hotbar when pressing drop without hovering over a item. } @@ -153,36 +153,36 @@ } } - protected boolean m_97805_(int p_97806_, int p_97807_) { - if (this.f_97732_.m_142621_().m_41619_() && this.f_97734_ != null) { -- if (this.f_96541_.f_91066_.f_92093_.m_90832_(p_97806_, p_97807_)) { -+ if (this.f_96541_.f_91066_.f_92093_.isActiveAndMatches(InputConstants.m_84827_(p_97806_, p_97807_))) { - this.m_6597_(this.f_97734_, this.f_97734_.f_40219_, 40, ClickType.SWAP); + protected boolean checkHotbarKeyPressed(int p_97806_, int p_97807_) { + if (this.menu.getCarried().isEmpty() && this.hoveredSlot != null) { +- if (this.minecraft.options.keySwapOffhand.matches(p_97806_, p_97807_)) { ++ if (this.minecraft.options.keySwapOffhand.isActiveAndMatches(InputConstants.getKey(p_97806_, p_97807_))) { + this.slotClicked(this.hoveredSlot, this.hoveredSlot.index, 40, ClickType.SWAP); return true; } for(int i = 0; i < 9; ++i) { -- if (this.f_96541_.f_91066_.f_92056_[i].m_90832_(p_97806_, p_97807_)) { -+ if (this.f_96541_.f_91066_.f_92056_[i].isActiveAndMatches(InputConstants.m_84827_(p_97806_, p_97807_))) { - this.m_6597_(this.f_97734_, this.f_97734_.f_40219_, i, ClickType.SWAP); +- if (this.minecraft.options.keyHotbarSlots[i].matches(p_97806_, p_97807_)) { ++ if (this.minecraft.options.keyHotbarSlots[i].isActiveAndMatches(InputConstants.getKey(p_97806_, p_97807_))) { + this.slotClicked(this.hoveredSlot, this.hoveredSlot.index, i, ClickType.SWAP); return true; } @@ -592,6 +_,18 @@ - public T m_6262_() { - return this.f_97732_; + public T getMenu() { + return this.menu; + } + + @org.jetbrains.annotations.Nullable -+ public Slot getSlotUnderMouse() { return this.f_97734_; } -+ public int getGuiLeft() { return f_97735_; } -+ public int getGuiTop() { return f_97736_; } -+ public int getXSize() { return f_97726_; } -+ public int getYSize() { return f_97727_; } ++ public Slot getSlotUnderMouse() { return this.hoveredSlot; } ++ public int getGuiLeft() { return leftPos; } ++ public int getGuiTop() { return topPos; } ++ public int getXSize() { return imageWidth; } ++ public int getYSize() { return imageHeight; } + + protected int slotColor = -2130706433; + public int getSlotColor(int index) { + return slotColor; } - public void m_7379_() { + public void onClose() { diff --git a/patches/minecraft/net/minecraft/client/gui/screens/inventory/CreativeModeInventoryScreen.java.patch b/patches/minecraft/net/minecraft/client/gui/screens/inventory/CreativeModeInventoryScreen.java.patch index 8b3fc4ae21..950e15f1b1 100644 --- a/patches/minecraft/net/minecraft/client/gui/screens/inventory/CreativeModeInventoryScreen.java.patch +++ b/patches/minecraft/net/minecraft/client/gui/screens/inventory/CreativeModeInventoryScreen.java.patch @@ -1,27 +1,27 @@ --- a/net/minecraft/client/gui/screens/inventory/CreativeModeInventoryScreen.java +++ b/net/minecraft/client/gui/screens/inventory/CreativeModeInventoryScreen.java @@ -79,6 +_,8 @@ - private boolean f_98515_; - private final Set> f_98516_ = new HashSet<>(); - private final boolean f_256872_; + private boolean hasClickedOutside; + private final Set> visibleTags = new HashSet<>(); + private final boolean displayOperatorCreativeTab; + private final List pages = new java.util.ArrayList<>(); + private net.minecraftforge.client.gui.CreativeTabsScreenPage currentPage = new net.minecraftforge.client.gui.CreativeTabsScreenPage(new java.util.ArrayList<>()); public CreativeModeInventoryScreen(Player p_259788_, FeatureFlagSet p_260074_, boolean p_259569_) { - super(new CreativeModeInventoryScreen.ItemPickerMenu(p_259788_), p_259788_.m_150109_(), CommonComponents.f_237098_); + super(new CreativeModeInventoryScreen.ItemPickerMenu(p_259788_), p_259788_.getInventory(), CommonComponents.EMPTY); @@ -112,7 +_,7 @@ - private void m_257687_(Collection p_261591_) { - int i = this.f_97732_.m_257485_(this.f_98508_); - (this.f_97732_).f_98639_.clear(); -- if (f_98507_.m_257962_() == CreativeModeTab.Type.SEARCH) { -+ if (f_98507_.hasSearchBar()) { - this.m_98630_(); + private void refreshCurrentTabContents(Collection p_261591_) { + int i = this.menu.getRowIndexForScroll(this.scrollOffs); + (this.menu).items.clear(); +- if (selectedTab.getType() == CreativeModeTab.Type.SEARCH) { ++ if (selectedTab.hasSearchBar()) { + this.refreshSearchResults(); } else { - (this.f_97732_).f_98639_.addAll(p_261591_); + (this.menu).items.addAll(p_261591_); @@ -266,6 +_,34 @@ - protected void m_7856_() { - if (this.f_96541_.f_91072_.m_105290_()) { - super.m_7856_(); + protected void init() { + if (this.minecraft.gameMode.hasInfiniteItems()) { + super.init(); + this.pages.clear(); + int tabIndex = 0; + List currentPage = new java.util.ArrayList<>(); @@ -43,211 +43,211 @@ + this.currentPage = this.pages.get(0); + } + if (this.pages.size() > 1) { -+ m_142416_(net.minecraft.client.gui.components.Button.m_253074_(Component.m_237113_("<"), b -> setCurrentPage(this.pages.get(Math.max(this.pages.indexOf(this.currentPage) - 1, 0)))).m_252794_(f_97735_, f_97736_ - 50).m_253046_(20, 20).m_253136_()); -+ m_142416_(net.minecraft.client.gui.components.Button.m_253074_(Component.m_237113_(">"), b -> setCurrentPage(this.pages.get(Math.min(this.pages.indexOf(this.currentPage) + 1, this.pages.size() - 1)))).m_252794_(f_97735_ + f_97726_ - 20, f_97736_ - 50).m_253046_(20, 20).m_253136_()); ++ addRenderableWidget(net.minecraft.client.gui.components.Button.builder(Component.literal("<"), b -> setCurrentPage(this.pages.get(Math.max(this.pages.indexOf(this.currentPage) - 1, 0)))).pos(leftPos, topPos - 50).size(20, 20).build()); ++ addRenderableWidget(net.minecraft.client.gui.components.Button.builder(Component.literal(">"), b -> setCurrentPage(this.pages.get(Math.min(this.pages.indexOf(this.currentPage) + 1, this.pages.size() - 1)))).pos(leftPos + imageWidth - 20, topPos - 50).size(20, 20).build()); + } -+ this.currentPage = this.pages.stream().filter(page -> page.getVisibleTabs().contains(f_98507_)).findFirst().orElse(this.currentPage); -+ if (!this.currentPage.getVisibleTabs().contains(f_98507_)) { -+ f_98507_ = this.currentPage.getVisibleTabs().get(0); ++ this.currentPage = this.pages.stream().filter(page -> page.getVisibleTabs().contains(selectedTab)).findFirst().orElse(this.currentPage); ++ if (!this.currentPage.getVisibleTabs().contains(selectedTab)) { ++ selectedTab = this.currentPage.getVisibleTabs().get(0); + } - this.f_98510_ = new EditBox(this.f_96547_, this.f_97735_ + 82, this.f_97736_ + 6, 80, 9, Component.m_237115_("itemGroup.search")); - this.f_98510_.m_94199_(50); - this.f_98510_.m_94182_(false); + this.searchBox = new EditBox(this.font, this.leftPos + 82, this.topPos + 6, 80, 9, Component.translatable("itemGroup.search")); + this.searchBox.setMaxLength(50); + this.searchBox.setBordered(false); @@ -311,7 +_,7 @@ - public boolean m_5534_(char p_98521_, int p_98522_) { - if (this.f_98514_) { + public boolean charTyped(char p_98521_, int p_98522_) { + if (this.ignoreTextInput) { return false; -- } else if (f_98507_.m_257962_() != CreativeModeTab.Type.SEARCH) { -+ } else if (!f_98507_.hasSearchBar()) { +- } else if (selectedTab.getType() != CreativeModeTab.Type.SEARCH) { ++ } else if (!selectedTab.hasSearchBar()) { return false; } else { - String s = this.f_98510_.m_94155_(); + String s = this.searchBox.getValue(); @@ -329,7 +_,7 @@ - public boolean m_7933_(int p_98547_, int p_98548_, int p_98549_) { - this.f_98514_ = false; -- if (f_98507_.m_257962_() != CreativeModeTab.Type.SEARCH) { -+ if (!f_98507_.hasSearchBar()) { - if (this.f_96541_.f_91066_.f_92098_.m_90832_(p_98547_, p_98548_)) { - this.f_98514_ = true; - this.m_98560_(CreativeModeTabs.m_258007_()); + public boolean keyPressed(int p_98547_, int p_98548_, int p_98549_) { + this.ignoreTextInput = false; +- if (selectedTab.getType() != CreativeModeTab.Type.SEARCH) { ++ if (!selectedTab.hasSearchBar()) { + if (this.minecraft.options.keyChat.matches(p_98547_, p_98548_)) { + this.ignoreTextInput = true; + this.selectTab(CreativeModeTabs.searchTab()); @@ -364,6 +_,7 @@ } - private void m_98630_() { -+ if (!f_98507_.hasSearchBar()) return; - (this.f_97732_).f_98639_.clear(); - this.f_98516_.clear(); - String s = this.f_98510_.m_94155_(); + private void refreshSearchResults() { ++ if (!selectedTab.hasSearchBar()) return; + (this.menu).items.clear(); + this.visibleTags.clear(); + String s = this.searchBox.getValue(); @@ -373,10 +_,10 @@ SearchTree searchtree; if (s.startsWith("#")) { s = s.substring(1); -- searchtree = this.f_96541_.m_231372_(SearchRegistry.f_119942_); -+ searchtree = this.f_96541_.m_231372_(net.minecraftforge.client.CreativeModeTabSearchRegistry.getTagSearchKey(f_98507_)); - this.m_98619_(s); +- searchtree = this.minecraft.getSearchTree(SearchRegistry.CREATIVE_TAGS); ++ searchtree = this.minecraft.getSearchTree(net.minecraftforge.client.CreativeModeTabSearchRegistry.getTagSearchKey(selectedTab)); + this.updateVisibleTags(s); } else { -- searchtree = this.f_96541_.m_231372_(SearchRegistry.f_119941_); -+ searchtree = this.f_96541_.m_231372_(net.minecraftforge.client.CreativeModeTabSearchRegistry.getNameSearchKey(f_98507_)); +- searchtree = this.minecraft.getSearchTree(SearchRegistry.CREATIVE_NAMES); ++ searchtree = this.minecraft.getSearchTree(net.minecraftforge.client.CreativeModeTabSearchRegistry.getNameSearchKey(selectedTab)); } - (this.f_97732_).f_98639_.addAll(searchtree.m_6293_(s.toLowerCase(Locale.ROOT))); + (this.menu).items.addAll(searchtree.search(s.toLowerCase(Locale.ROOT))); @@ -408,7 +_,8 @@ - protected void m_280003_(GuiGraphics p_283168_, int p_281774_, int p_281466_) { - if (f_98507_.m_40789_()) { -- p_283168_.m_280614_(this.f_96547_, f_98507_.m_40786_(), 8, 6, 4210752, false); + protected void renderLabels(GuiGraphics p_283168_, int p_281774_, int p_281466_) { + if (selectedTab.showTitle()) { +- p_283168_.drawString(this.font, selectedTab.getDisplayName(), 8, 6, 4210752, false); + com.mojang.blaze3d.systems.RenderSystem.disableBlend(); -+ p_283168_.m_280614_(this.f_96547_, f_98507_.m_40786_(), 8, 6, f_98507_.getLabelColor(), false); ++ p_283168_.drawString(this.font, selectedTab.getDisplayName(), 8, 6, selectedTab.getLabelColor(), false); } } @@ -418,7 +_,7 @@ - double d0 = p_98531_ - (double)this.f_97735_; - double d1 = p_98532_ - (double)this.f_97736_; + double d0 = p_98531_ - (double)this.leftPos; + double d1 = p_98532_ - (double)this.topPos; -- for(CreativeModeTab creativemodetab : CreativeModeTabs.m_257388_()) { +- for(CreativeModeTab creativemodetab : CreativeModeTabs.tabs()) { + for(CreativeModeTab creativemodetab : currentPage.getVisibleTabs()) { - if (this.m_98562_(creativemodetab, d0, d1)) { + if (this.checkTabClicked(creativemodetab, d0, d1)) { return true; } @@ -439,7 +_,7 @@ - double d1 = p_98623_ - (double)this.f_97736_; - this.f_98509_ = false; + double d1 = p_98623_ - (double)this.topPos; + this.scrolling = false; -- for(CreativeModeTab creativemodetab : CreativeModeTabs.m_257388_()) { +- for(CreativeModeTab creativemodetab : CreativeModeTabs.tabs()) { + for(CreativeModeTab creativemodetab : currentPage.getVisibleTabs()) { - if (this.m_98562_(creativemodetab, d0, d1)) { - this.m_98560_(creativemodetab); + if (this.checkTabClicked(creativemodetab, d0, d1)) { + this.selectTab(creativemodetab); return true; @@ -457,6 +_,7 @@ - private void m_98560_(CreativeModeTab p_98561_) { - CreativeModeTab creativemodetab = f_98507_; - f_98507_ = p_98561_; + private void selectTab(CreativeModeTab p_98561_) { + CreativeModeTab creativemodetab = selectedTab; + selectedTab = p_98561_; + slotColor = p_98561_.getSlotColor(); - this.f_97737_.clear(); - (this.f_97732_).f_98639_.clear(); - this.m_238391_(); + this.quickCraftSlots.clear(); + (this.menu).items.clear(); + this.clearDraggingState(); @@ -533,13 +_,15 @@ - this.f_98511_ = null; + this.originalSlots = null; } -- if (f_98507_.m_257962_() == CreativeModeTab.Type.SEARCH) { -+ if (f_98507_.hasSearchBar()) { - this.f_98510_.m_94194_(true); - this.f_98510_.m_94190_(false); - this.f_98510_.m_93692_(true); +- if (selectedTab.getType() == CreativeModeTab.Type.SEARCH) { ++ if (selectedTab.hasSearchBar()) { + this.searchBox.setVisible(true); + this.searchBox.setCanLoseFocus(false); + this.searchBox.setFocused(true); if (creativemodetab != p_98561_) { - this.f_98510_.m_94144_(""); + this.searchBox.setValue(""); } -+ this.f_98510_.m_93674_(f_98507_.getSearchBarWidth()); -+ this.f_98510_.m_252865_(this.f_97735_ + (82 /*default left*/ + 89 /*default width*/) - this.f_98510_.m_5711_()); ++ this.searchBox.setWidth(selectedTab.getSearchBarWidth()); ++ this.searchBox.setX(this.leftPos + (82 /*default left*/ + 89 /*default width*/) - this.searchBox.getWidth()); - this.m_98630_(); + this.refreshSearchResults(); } else { @@ -595,7 +_,7 @@ - public void m_88315_(GuiGraphics p_283000_, int p_281317_, int p_282770_, float p_281295_) { - super.m_88315_(p_283000_, p_281317_, p_282770_, p_281295_); + public void render(GuiGraphics p_283000_, int p_281317_, int p_282770_, float p_281295_) { + super.render(p_283000_, p_281317_, p_282770_, p_281295_); -- for(CreativeModeTab creativemodetab : CreativeModeTabs.m_257388_()) { +- for(CreativeModeTab creativemodetab : CreativeModeTabs.tabs()) { + for(CreativeModeTab creativemodetab : currentPage.getVisibleTabs()) { - if (this.m_280537_(p_283000_, creativemodetab, p_281317_, p_282770_)) { + if (this.checkTabHovering(p_283000_, creativemodetab, p_281317_, p_282770_)) { break; } @@ -605,13 +_,22 @@ - p_283000_.m_280557_(this.f_96547_, f_98506_, p_281317_, p_282770_); + p_283000_.renderTooltip(this.font, TRASH_SLOT_TOOLTIP, p_281317_, p_282770_); } + if (this.pages.size() != 1) { -+ Component page = Component.m_237113_(String.format("%d / %d", this.pages.indexOf(this.currentPage) + 1, this.pages.size())); -+ p_283000_.m_280168_().m_85836_(); -+ p_283000_.m_280168_().m_252880_(0F, 0F, 300F); -+ p_283000_.m_280648_(f_96547_, page.m_7532_(), f_97735_ + (f_97726_ / 2) - (f_96547_.m_92852_(page) / 2), f_97736_ - 44, -1); -+ p_283000_.m_280168_().m_85849_(); ++ Component page = Component.literal(String.format("%d / %d", this.pages.indexOf(this.currentPage) + 1, this.pages.size())); ++ p_283000_.pose().pushPose(); ++ p_283000_.pose().translate(0F, 0F, 300F); ++ p_283000_.drawString(font, page.getVisualOrderText(), leftPos + (imageWidth / 2) - (font.width(page) / 2), topPos - 44, -1); ++ p_283000_.pose().popPose(); + } + + com.mojang.blaze3d.systems.RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, 1.0F); - this.m_280072_(p_283000_, p_281317_, p_282770_); + this.renderTooltip(p_283000_, p_281317_, p_282770_); } - public List m_280553_(ItemStack p_281769_) { - boolean flag = this.f_97734_ != null && this.f_97734_ instanceof CreativeModeInventoryScreen.CustomCreativeSlot; - boolean flag1 = f_98507_.m_257962_() == CreativeModeTab.Type.CATEGORY; -- boolean flag2 = f_98507_.m_257962_() == CreativeModeTab.Type.SEARCH; -+ boolean flag2 = f_98507_.hasSearchBar(); - TooltipFlag.Default tooltipflag$default = this.f_96541_.f_91066_.f_92125_ ? TooltipFlag.Default.f_256730_ : TooltipFlag.Default.f_256752_; - TooltipFlag tooltipflag = flag ? tooltipflag$default.m_257777_() : tooltipflag$default; - List list = p_281769_.m_41651_(this.f_96541_.f_91074_, tooltipflag); + public List getTooltipFromContainerItem(ItemStack p_281769_) { + boolean flag = this.hoveredSlot != null && this.hoveredSlot instanceof CreativeModeInventoryScreen.CustomCreativeSlot; + boolean flag1 = selectedTab.getType() == CreativeModeTab.Type.CATEGORY; +- boolean flag2 = selectedTab.getType() == CreativeModeTab.Type.SEARCH; ++ boolean flag2 = selectedTab.hasSearchBar(); + TooltipFlag.Default tooltipflag$default = this.minecraft.options.advancedItemTooltips ? TooltipFlag.Default.ADVANCED : TooltipFlag.Default.NORMAL; + TooltipFlag tooltipflag = flag ? tooltipflag$default.asCreative() : tooltipflag$default; + List list = p_281769_.getTooltipLines(this.minecraft.player, tooltipflag); @@ -631,7 +_,7 @@ int i = 1; - for(CreativeModeTab creativemodetab : CreativeModeTabs.m_257388_()) { -- if (creativemodetab.m_257962_() != CreativeModeTab.Type.SEARCH && creativemodetab.m_257694_(p_281769_)) { -+ if (!creativemodetab.hasSearchBar() && creativemodetab.m_257694_(p_281769_)) { - list1.add(i++, creativemodetab.m_40786_().m_6881_().m_130940_(ChatFormatting.BLUE)); + for(CreativeModeTab creativemodetab : CreativeModeTabs.tabs()) { +- if (creativemodetab.getType() != CreativeModeTab.Type.SEARCH && creativemodetab.contains(p_281769_)) { ++ if (!creativemodetab.hasSearchBar() && creativemodetab.contains(p_281769_)) { + list1.add(i++, creativemodetab.getDisplayName().copy().withStyle(ChatFormatting.BLUE)); } } @@ -641,13 +_,13 @@ } - protected void m_7286_(GuiGraphics p_282663_, float p_282504_, int p_282089_, int p_282249_) { -- for(CreativeModeTab creativemodetab : CreativeModeTabs.m_257388_()) { + protected void renderBg(GuiGraphics p_282663_, float p_282504_, int p_282089_, int p_282249_) { +- for(CreativeModeTab creativemodetab : CreativeModeTabs.tabs()) { + for(CreativeModeTab creativemodetab : currentPage.getVisibleTabs()) { - if (creativemodetab != f_98507_) { - this.m_280560_(p_282663_, creativemodetab); + if (creativemodetab != selectedTab) { + this.renderTabButton(p_282663_, creativemodetab); } } -- p_282663_.m_280218_(new ResourceLocation("textures/gui/container/creative_inventory/tab_" + f_98507_.m_40788_()), this.f_97735_, this.f_97736_, 0, 0, this.f_97726_, this.f_97727_); -+ p_282663_.m_280218_(f_98507_.getBackgroundLocation(), this.f_97735_, this.f_97736_, 0, 0, this.f_97726_, this.f_97727_); - this.f_98510_.m_88315_(p_282663_, p_282089_, p_282249_, p_282504_); - int j = this.f_97735_ + 175; - int k = this.f_97736_ + 18; +- p_282663_.blit(new ResourceLocation("textures/gui/container/creative_inventory/tab_" + selectedTab.getBackgroundSuffix()), this.leftPos, this.topPos, 0, 0, this.imageWidth, this.imageHeight); ++ p_282663_.blit(selectedTab.getBackgroundLocation(), this.leftPos, this.topPos, 0, 0, this.imageWidth, this.imageHeight); + this.searchBox.render(p_282663_, p_282089_, p_282249_, p_282504_); + int j = this.leftPos + 175; + int k = this.topPos + 18; @@ -657,6 +_,7 @@ - p_282663_.m_292816_(resourcelocation, j, k + (int)((float)(i - k - 17) * this.f_98508_), 12, 15); + p_282663_.blitSprite(resourcelocation, j, k + (int)((float)(i - k - 17) * this.scrollOffs), 12, 15); } -+ if (currentPage.getVisibleTabs().contains(f_98507_)) //Forge: only display tab selection when the selected tab is on the current page - this.m_280560_(p_282663_, f_98507_); - if (f_98507_.m_257962_() == CreativeModeTab.Type.INVENTORY) { - InventoryScreen.m_274545_(p_282663_, this.f_97735_ + 73, this.f_97736_ + 6, this.f_97735_ + 105, this.f_97736_ + 49, 20, 0.0625F, (float)p_282089_, (float)p_282249_, this.f_96541_.f_91074_); ++ if (currentPage.getVisibleTabs().contains(selectedTab)) //Forge: only display tab selection when the selected tab is on the current page + this.renderTabButton(p_282663_, selectedTab); + if (selectedTab.getType() == CreativeModeTab.Type.INVENTORY) { + InventoryScreen.renderEntityInInventoryFollowsMouse(p_282663_, this.leftPos + 73, this.topPos + 6, this.leftPos + 105, this.topPos + 49, 20, 0.0625F, (float)p_282089_, (float)p_282249_, this.minecraft.player); @@ -665,7 +_,7 @@ } - private int m_258094_(CreativeModeTab p_260136_) { -- int i = p_260136_.m_257903_(); + private int getTabX(CreativeModeTab p_260136_) { +- int i = p_260136_.column(); + int i = currentPage.getColumn(p_260136_); int j = 27; int k = 27 * i; - if (p_260136_.m_6563_()) { + if (p_260136_.isAlignedRight()) { @@ -677,7 +_,7 @@ - private int m_257995_(CreativeModeTab p_260181_) { + private int getTabY(CreativeModeTab p_260181_) { int i = 0; -- if (p_260181_.m_258064_() == CreativeModeTab.Row.TOP) { +- if (p_260181_.row() == CreativeModeTab.Row.TOP) { + if (currentPage.isTop(p_260181_)) { i -= 32; } else { - i += this.f_97727_; + i += this.imageHeight; @@ -705,8 +_,8 @@ - protected void m_280560_(GuiGraphics p_283590_, CreativeModeTab p_283489_) { - boolean flag = p_283489_ == f_98507_; -- boolean flag1 = p_283489_.m_258064_() == CreativeModeTab.Row.TOP; -- int i = p_283489_.m_257903_(); + protected void renderTabButton(GuiGraphics p_283590_, CreativeModeTab p_283489_) { + boolean flag = p_283489_ == selectedTab; +- boolean flag1 = p_283489_.row() == CreativeModeTab.Row.TOP; +- int i = p_283489_.column(); + boolean flag1 = currentPage.isTop(p_283489_); + int i = currentPage.getColumn(p_283489_); - int j = this.f_97735_ + this.m_258094_(p_283489_); - int k = this.f_97736_ - (flag1 ? 28 : -(this.f_97727_ - 4)); + int j = this.leftPos + this.getTabX(p_283489_); + int k = this.topPos - (flag1 ? 28 : -(this.imageHeight - 4)); ResourceLocation[] aresourcelocation; @@ -716,6 +_,7 @@ - aresourcelocation = flag ? f_291557_ : f_291303_; + aresourcelocation = flag ? SELECTED_BOTTOM_TABS : UNSELECTED_BOTTOM_TABS; } + com.mojang.blaze3d.systems.RenderSystem.enableBlend(); //Forge: Make sure blend is enabled else tabs show a white border. - p_283590_.m_292816_(aresourcelocation[Mth.m_14045_(i, 0, aresourcelocation.length)], j, k, 26, 32); - p_283590_.m_280168_().m_85836_(); - p_283590_.m_280168_().m_252880_(0.0F, 0.0F, 100.0F); + p_283590_.blitSprite(aresourcelocation[Mth.clamp(i, 0, aresourcelocation.length)], j, k, 26, 32); + p_283590_.pose().pushPose(); + p_283590_.pose().translate(0.0F, 0.0F, 100.0F); @@ -759,6 +_,14 @@ } @@ -265,23 +265,23 @@ public CustomCreativeSlot(Container p_98633_, int p_98634_, int p_98635_, int p_98636_) { @@ -926,6 +_,22 @@ - public boolean m_8010_(Player p_98665_) { - return this.f_98655_.m_8010_(p_98665_); + public boolean mayPickup(Player p_98665_) { + return this.target.mayPickup(p_98665_); + } + + @Override + public int getSlotIndex() { -+ return this.f_98655_.getSlotIndex(); ++ return this.target.getSlotIndex(); + } + + @Override + public boolean isSameInventory(Slot other) { -+ return this.f_98655_.isSameInventory(other); ++ return this.target.isSameInventory(other); + } + + @Override + public Slot setBackground(ResourceLocation atlas, ResourceLocation sprite) { -+ this.f_98655_.setBackground(atlas, sprite); ++ this.target.setBackground(atlas, sprite); + return this; } } diff --git a/patches/minecraft/net/minecraft/client/gui/screens/inventory/EffectRenderingInventoryScreen.java.patch b/patches/minecraft/net/minecraft/client/gui/screens/inventory/EffectRenderingInventoryScreen.java.patch index da1c8e4b80..00b0ecdc8d 100644 --- a/patches/minecraft/net/minecraft/client/gui/screens/inventory/EffectRenderingInventoryScreen.java.patch +++ b/patches/minecraft/net/minecraft/client/gui/screens/inventory/EffectRenderingInventoryScreen.java.patch @@ -1,7 +1,7 @@ --- a/net/minecraft/client/gui/screens/inventory/EffectRenderingInventoryScreen.java +++ b/net/minecraft/client/gui/screens/inventory/EffectRenderingInventoryScreen.java @@ -45,12 +_,17 @@ - Collection collection = this.f_96541_.f_91074_.m_21220_(); + Collection collection = this.minecraft.player.getActiveEffects(); if (!collection.isEmpty() && j >= 32) { boolean flag = j >= 120; + var event = net.minecraftforge.client.ForgeHooksClient.onScreenPotionSize(this, j, !flag, i); @@ -16,11 +16,11 @@ - Iterable iterable = Ordering.natural().sortedCopy(collection); + + Iterable iterable = collection.stream().filter(net.minecraftforge.client.ForgeHooksClient::shouldRenderEffect).sorted().collect(java.util.stream.Collectors.toList()); - this.m_280172_(p_281945_, i, k, iterable, flag); - this.m_280301_(p_281945_, i, k, iterable, flag); + this.renderBackgrounds(p_281945_, i, k, iterable, flag); + this.renderIcons(p_281945_, i, k, iterable, flag); if (flag) { @@ -96,6 +_,11 @@ - int i = this.f_97736_; + int i = this.topPos; for(MobEffectInstance mobeffectinstance : p_282642_) { + var renderer = net.minecraftforge.client.extensions.common.IClientMobEffectExtensions.of(mobeffectinstance); @@ -28,11 +28,11 @@ + i += p_282291_; + continue; + } - MobEffect mobeffect = mobeffectinstance.m_19544_(); - TextureAtlasSprite textureatlassprite = mobeffecttexturemanager.m_118732_(mobeffect); - p_282745_.m_280159_(p_282521_ + (p_281536_ ? 6 : 7), i + 7, 0, 18, 18, textureatlassprite); + MobEffect mobeffect = mobeffectinstance.getEffect(); + TextureAtlasSprite textureatlassprite = mobeffecttexturemanager.get(mobeffect); + p_282745_.blit(p_282521_ + (p_281536_ ? 6 : 7), i + 7, 0, 18, 18, textureatlassprite); @@ -108,6 +_,11 @@ - int i = this.f_97736_; + int i = this.topPos; for(MobEffectInstance mobeffectinstance : p_281986_) { + var renderer = net.minecraftforge.client.extensions.common.IClientMobEffectExtensions.of(mobeffectinstance); @@ -40,6 +40,6 @@ + i += p_282057_; + continue; + } - Component component = this.m_194000_(mobeffectinstance); - p_281462_.m_280430_(this.f_96547_, component, p_283484_ + 10 + 18, i + 6, 16777215); - Component component1 = MobEffectUtil.m_267641_(mobeffectinstance, 1.0F); + Component component = this.getEffectName(mobeffectinstance); + p_281462_.drawString(this.font, component, p_283484_ + 10 + 18, i + 6, 16777215); + Component component1 = MobEffectUtil.formatDuration(mobeffectinstance, 1.0F); diff --git a/patches/minecraft/net/minecraft/client/gui/screens/inventory/EnchantmentScreen.java.patch b/patches/minecraft/net/minecraft/client/gui/screens/inventory/EnchantmentScreen.java.patch index 85d050bd71..2310764408 100644 --- a/patches/minecraft/net/minecraft/client/gui/screens/inventory/EnchantmentScreen.java.patch +++ b/patches/minecraft/net/minecraft/client/gui/screens/inventory/EnchantmentScreen.java.patch @@ -1,28 +1,28 @@ --- a/net/minecraft/client/gui/screens/inventory/EnchantmentScreen.java +++ b/net/minecraft/client/gui/screens/inventory/EnchantmentScreen.java @@ -93,7 +_,7 @@ - int l1 = 86 - this.f_96547_.m_92895_(s); - FormattedText formattedtext = EnchantmentNames.m_98734_().m_98737_(this.f_96547_, l1); + int l1 = 86 - this.font.width(s); + FormattedText formattedtext = EnchantmentNames.getInstance().getRandomName(this.font, l1); int i2 = 6839882; -- if ((k < l + 1 || this.f_96541_.f_91074_.f_36078_ < k1) && !this.f_96541_.f_91074_.m_150110_().f_35937_) { -+ if (((k < l + 1 || this.f_96541_.f_91074_.f_36078_ < k1) && !this.f_96541_.f_91074_.m_150110_().f_35937_) || this.f_97732_.f_39447_[l] == -1) { // Forge: render buttons as disabled when enchantable but enchantability not met on lower levels - p_282430_.m_292816_(f_291504_, i1, j + 14 + 19 * l, 108, 19); - p_282430_.m_292816_(f_291094_[l], i1 + 1, j + 15 + 19 * l, 16, 16); - p_282430_.m_280554_(this.f_96547_, formattedtext, j1, j + 16 + 19 * l, l1, (i2 & 16711422) >> 1); +- if ((k < l + 1 || this.minecraft.player.experienceLevel < k1) && !this.minecraft.player.getAbilities().instabuild) { ++ if (((k < l + 1 || this.minecraft.player.experienceLevel < k1) && !this.minecraft.player.getAbilities().instabuild) || this.menu.enchantClue[l] == -1) { // Forge: render buttons as disabled when enchantable but enchantability not met on lower levels + p_282430_.blitSprite(ENCHANTMENT_SLOT_DISABLED_SPRITE, i1, j + 14 + 19 * l, 108, 19); + p_282430_.blitSprite(DISABLED_LEVEL_SPRITES[l], i1 + 1, j + 15 + 19 * l, 16, 16); + p_282430_.drawWordWrap(this.font, formattedtext, j1, j + 16 + 19 * l, l1, (i2 & 16711422) >> 1); @@ -154,10 +_,13 @@ - Enchantment enchantment = Enchantment.m_44697_((this.f_97732_).f_39447_[j]); - int l = (this.f_97732_).f_39448_[j]; + Enchantment enchantment = Enchantment.byId((this.menu).enchantClue[j]); + int l = (this.menu).levelClue[j]; int i1 = j + 1; -- if (this.m_6774_(60, 14 + 19 * j, 108, 17, (double)p_282491_, (double)p_281953_) && k > 0 && l >= 0 && enchantment != null) { -+ if (this.m_6774_(60, 14 + 19 * j, 108, 17, (double)p_282491_, (double)p_281953_) && k > 0) { +- if (this.isHovering(60, 14 + 19 * j, 108, 17, (double)p_282491_, (double)p_281953_) && k > 0 && l >= 0 && enchantment != null) { ++ if (this.isHovering(60, 14 + 19 * j, 108, 17, (double)p_282491_, (double)p_281953_) && k > 0) { List list = Lists.newArrayList(); -- list.add(Component.m_237110_("container.enchant.clue", enchantment.m_44700_(l)).m_130940_(ChatFormatting.WHITE)); +- list.add(Component.translatable("container.enchant.clue", enchantment.getFullname(l)).withStyle(ChatFormatting.WHITE)); - if (!flag) { -+ list.add((Component.m_237110_("container.enchant.clue", enchantment == null ? "" : enchantment.m_44700_(l))).m_130940_(ChatFormatting.WHITE)); ++ list.add((Component.translatable("container.enchant.clue", enchantment == null ? "" : enchantment.getFullname(l))).withStyle(ChatFormatting.WHITE)); + if (enchantment == null) { -+ list.add(Component.m_237113_("")); -+ list.add(Component.m_237115_("forge.container.enchant.limitedEnchantability").m_130940_(ChatFormatting.RED)); ++ list.add(Component.literal("")); ++ list.add(Component.translatable("forge.container.enchant.limitedEnchantability").withStyle(ChatFormatting.RED)); + } else if (!flag) { - list.add(CommonComponents.f_237098_); - if (this.f_96541_.f_91074_.f_36078_ < k) { - list.add(Component.m_237110_("container.enchant.level.requirement", (this.f_97732_).f_39446_[j]).m_130940_(ChatFormatting.RED)); + list.add(CommonComponents.EMPTY); + if (this.minecraft.player.experienceLevel < k) { + list.add(Component.translatable("container.enchant.level.requirement", (this.menu).costs[j]).withStyle(ChatFormatting.RED)); diff --git a/patches/minecraft/net/minecraft/client/gui/screens/inventory/HangingSignEditScreen.java.patch b/patches/minecraft/net/minecraft/client/gui/screens/inventory/HangingSignEditScreen.java.patch index 005cc1a11d..b2da8c7254 100644 --- a/patches/minecraft/net/minecraft/client/gui/screens/inventory/HangingSignEditScreen.java.patch +++ b/patches/minecraft/net/minecraft/client/gui/screens/inventory/HangingSignEditScreen.java.patch @@ -1,11 +1,11 @@ --- a/net/minecraft/client/gui/screens/inventory/HangingSignEditScreen.java +++ b/net/minecraft/client/gui/screens/inventory/HangingSignEditScreen.java @@ -15,7 +_,7 @@ - private static final Vector3f f_243728_ = new Vector3f(1.0F, 1.0F, 1.0F); - private static final int f_244604_ = 16; - private static final int f_244207_ = 16; -- private final ResourceLocation f_243720_ = new ResourceLocation("textures/gui/hanging_signs/" + this.f_244069_.f_61839_() + ".png"); -+ private final ResourceLocation f_243720_ = new ResourceLocation(this.f_244069_.f_61839_() + ".png").m_246208_("textures/gui/hanging_signs/"); + private static final Vector3f TEXT_SCALE = new Vector3f(1.0F, 1.0F, 1.0F); + private static final int TEXTURE_WIDTH = 16; + private static final int TEXTURE_HEIGHT = 16; +- private final ResourceLocation texture = new ResourceLocation("textures/gui/hanging_signs/" + this.woodType.name() + ".png"); ++ private final ResourceLocation texture = new ResourceLocation(this.woodType.name() + ".png").withPrefix("textures/gui/hanging_signs/"); public HangingSignEditScreen(SignBlockEntity p_278017_, boolean p_277942_, boolean p_277778_) { - super(p_278017_, p_277942_, p_277778_, Component.m_237115_("hanging_sign.edit")); + super(p_278017_, p_277942_, p_277778_, Component.translatable("hanging_sign.edit")); diff --git a/patches/minecraft/net/minecraft/client/gui/screens/inventory/MerchantScreen.java.patch b/patches/minecraft/net/minecraft/client/gui/screens/inventory/MerchantScreen.java.patch index 0e7ccba1fe..3e44b2f0fa 100644 --- a/patches/minecraft/net/minecraft/client/gui/screens/inventory/MerchantScreen.java.patch +++ b/patches/minecraft/net/minecraft/client/gui/screens/inventory/MerchantScreen.java.patch @@ -1,16 +1,16 @@ --- a/net/minecraft/client/gui/screens/inventory/MerchantScreen.java +++ b/net/minecraft/client/gui/screens/inventory/MerchantScreen.java @@ -236,7 +_,12 @@ - p_281357_.m_280370_(this.f_96547_, p_283466_, p_282403_, p_283601_); + p_281357_.renderItemDecorations(this.font, p_283466_, p_282403_, p_283601_); } else { - p_281357_.m_280302_(this.f_96547_, p_282046_, p_282403_, p_283601_, p_282046_.m_41613_() == 1 ? "1" : null); -- p_281357_.m_280302_(this.f_96547_, p_283466_, p_282403_ + 14, p_283601_, p_283466_.m_41613_() == 1 ? "1" : null); + p_281357_.renderItemDecorations(this.font, p_282046_, p_282403_, p_283601_, p_282046_.getCount() == 1 ? "1" : null); +- p_281357_.renderItemDecorations(this.font, p_283466_, p_282403_ + 14, p_283601_, p_283466_.getCount() == 1 ? "1" : null); + // Forge: fixes Forge-8806, code for count rendering taken from GuiGraphics#renderGuiItemDecorations -+ p_281357_.m_280168_().m_85836_(); -+ p_281357_.m_280168_().m_252880_(0.0F, 0.0F, 200.0F); -+ String count = p_283466_.m_41613_() == 1 ? "1" : String.valueOf(p_283466_.m_41613_()); -+ f_96547_.m_272078_(count, (float) (p_282403_ + 14) + 19 - 2 - f_96547_.m_92895_(count), (float)p_283601_ + 6 + 3, 0xFFFFFF, true, p_281357_.m_280168_().m_85850_().m_252922_(), p_281357_.m_280091_(), net.minecraft.client.gui.Font.DisplayMode.NORMAL, 0, 15728880, false); -+ p_281357_.m_280168_().m_85849_(); - p_281357_.m_280168_().m_85836_(); - p_281357_.m_280168_().m_252880_(0.0F, 0.0F, 300.0F); - p_281357_.m_295520_(f_291695_, p_282403_ + 7, p_283601_ + 12, 0, 9, 2); ++ p_281357_.pose().pushPose(); ++ p_281357_.pose().translate(0.0F, 0.0F, 200.0F); ++ String count = p_283466_.getCount() == 1 ? "1" : String.valueOf(p_283466_.getCount()); ++ font.drawInBatch(count, (float) (p_282403_ + 14) + 19 - 2 - font.width(count), (float)p_283601_ + 6 + 3, 0xFFFFFF, true, p_281357_.pose().last().pose(), p_281357_.bufferSource(), net.minecraft.client.gui.Font.DisplayMode.NORMAL, 0, 15728880, false); ++ p_281357_.pose().popPose(); + p_281357_.pose().pushPose(); + p_281357_.pose().translate(0.0F, 0.0F, 300.0F); + p_281357_.blitSprite(DISCOUNT_STRIKETHRUOGH_SPRITE, p_282403_ + 7, p_283601_ + 12, 0, 9, 2); diff --git a/patches/minecraft/net/minecraft/client/gui/screens/inventory/tooltip/TooltipRenderUtil.java.patch b/patches/minecraft/net/minecraft/client/gui/screens/inventory/tooltip/TooltipRenderUtil.java.patch index b52cecb27e..27e7ae25c0 100644 --- a/patches/minecraft/net/minecraft/client/gui/screens/inventory/tooltip/TooltipRenderUtil.java.patch +++ b/patches/minecraft/net/minecraft/client/gui/screens/inventory/tooltip/TooltipRenderUtil.java.patch @@ -1,10 +1,10 @@ --- a/net/minecraft/client/gui/screens/inventory/tooltip/TooltipRenderUtil.java +++ b/net/minecraft/client/gui/screens/inventory/tooltip/TooltipRenderUtil.java @@ -17,16 +_,22 @@ - private static final int f_262743_ = 1344798847; + private static final int BORDER_COLOR_BOTTOM = 1344798847; - public static void m_280205_(GuiGraphics p_282666_, int p_281901_, int p_281846_, int p_281559_, int p_283336_, int p_283422_) { -+ renderTooltipBackground(p_282666_, p_281901_, p_281846_, p_281559_, p_283336_, p_283422_, f_262744_, f_262744_, f_262725_, f_262743_); + public static void renderTooltipBackground(GuiGraphics p_282666_, int p_281901_, int p_281846_, int p_281559_, int p_283336_, int p_283422_) { ++ renderTooltipBackground(p_282666_, p_281901_, p_281846_, p_281559_, p_283336_, p_283422_, BACKGROUND_COLOR, BACKGROUND_COLOR, BORDER_COLOR_TOP, BORDER_COLOR_BOTTOM); + } + + // Forge: Allow specifying colors for the inner border gradient and a gradient instead of a single color for the background and outer border @@ -14,36 +14,36 @@ int j = p_281846_ - 3; int k = p_281559_ + 3 + 3; int l = p_283336_ + 3 + 3; -- m_280217_(p_282666_, i, j - 1, k, p_283422_, -267386864); -- m_280217_(p_282666_, i, j + l, k, p_283422_, -267386864); -- m_280538_(p_282666_, i, j, k, l, p_283422_, -267386864); -- m_280387_(p_282666_, i - 1, j, l, p_283422_, -267386864); -- m_280387_(p_282666_, i + k, j, l, p_283422_, -267386864); -- m_280115_(p_282666_, i, j + 1, k, l, p_283422_, 1347420415, 1344798847); -+ m_280217_(p_282666_, i, j - 1, k, p_283422_, backgroundTop); -+ m_280217_(p_282666_, i, j + l, k, p_283422_, backgroundBottom); +- renderHorizontalLine(p_282666_, i, j - 1, k, p_283422_, -267386864); +- renderHorizontalLine(p_282666_, i, j + l, k, p_283422_, -267386864); +- renderRectangle(p_282666_, i, j, k, l, p_283422_, -267386864); +- renderVerticalLine(p_282666_, i - 1, j, l, p_283422_, -267386864); +- renderVerticalLine(p_282666_, i + k, j, l, p_283422_, -267386864); +- renderFrameGradient(p_282666_, i, j + 1, k, l, p_283422_, 1347420415, 1344798847); ++ renderHorizontalLine(p_282666_, i, j - 1, k, p_283422_, backgroundTop); ++ renderHorizontalLine(p_282666_, i, j + l, k, p_283422_, backgroundBottom); + renderRectangle(p_282666_, i, j, k, l, p_283422_, backgroundTop, backgroundBottom); -+ m_280556_(p_282666_, i - 1, j, l, p_283422_, backgroundTop, backgroundBottom); -+ m_280556_(p_282666_, i + k, j, l, p_283422_, backgroundTop, backgroundBottom); -+ m_280115_(p_282666_, i, j + 1, k, l, p_283422_, borderTop, borderBottom); ++ renderVerticalLineGradient(p_282666_, i - 1, j, l, p_283422_, backgroundTop, backgroundBottom); ++ renderVerticalLineGradient(p_282666_, i + k, j, l, p_283422_, backgroundTop, backgroundBottom); ++ renderFrameGradient(p_282666_, i, j + 1, k, l, p_283422_, borderTop, borderBottom); } - private static void m_280115_(GuiGraphics p_282000_, int p_282055_, int p_281580_, int p_283284_, int p_282599_, int p_283432_, int p_282907_, int p_283153_) { + private static void renderFrameGradient(GuiGraphics p_282000_, int p_282055_, int p_281580_, int p_283284_, int p_282599_, int p_283432_, int p_282907_, int p_283153_) { @@ -48,7 +_,16 @@ - p_282981_.m_280046_(p_282028_, p_282141_, p_282028_ + p_281771_, p_282141_ + 1, p_282734_, p_281979_); + p_282981_.fill(p_282028_, p_282141_, p_282028_ + p_281771_, p_282141_ + 1, p_282734_, p_281979_); } + /** + * @deprecated Forge: Use gradient overload instead + */ + @Deprecated - private static void m_280538_(GuiGraphics p_281392_, int p_282294_, int p_283353_, int p_282640_, int p_281964_, int p_283211_, int p_282349_) { -- p_281392_.m_280046_(p_282294_, p_283353_, p_282294_ + p_282640_, p_283353_ + p_281964_, p_283211_, p_282349_); + private static void renderRectangle(GuiGraphics p_281392_, int p_282294_, int p_283353_, int p_282640_, int p_281964_, int p_283211_, int p_282349_) { +- p_281392_.fill(p_282294_, p_283353_, p_282294_ + p_282640_, p_283353_ + p_281964_, p_283211_, p_282349_); + renderRectangle(p_281392_, p_282294_, p_283353_, p_282640_, p_281964_, p_283211_, p_282349_, p_282349_); + } + + // Forge: Allow specifying a gradient instead of a single color for the background + private static void renderRectangle(GuiGraphics p_281392_, int p_282294_, int p_283353_, int p_282640_, int p_281964_, int p_283211_, int p_282349_, int colorTo) { -+ p_281392_.m_280120_(p_282294_, p_283353_, p_282294_ + p_282640_, p_283353_ + p_281964_, p_283211_, p_282349_, colorTo); ++ p_281392_.fillGradient(p_282294_, p_283353_, p_282294_ + p_282640_, p_283353_ + p_281964_, p_283211_, p_282349_, colorTo); } } diff --git a/patches/minecraft/net/minecraft/client/gui/screens/multiplayer/JoinMultiplayerScreen.java.patch b/patches/minecraft/net/minecraft/client/gui/screens/multiplayer/JoinMultiplayerScreen.java.patch index f9042d2063..16368a93f0 100644 --- a/patches/minecraft/net/minecraft/client/gui/screens/multiplayer/JoinMultiplayerScreen.java.patch +++ b/patches/minecraft/net/minecraft/client/gui/screens/multiplayer/JoinMultiplayerScreen.java.patch @@ -5,10 +5,10 @@ } + @Override -+ public void m_7379_() { -+ this.f_96541_.m_91152_(this.f_99676_); ++ public void onClose() { ++ this.minecraft.setScreen(this.lastScreen); + } + - public ServerStatusPinger m_99731_() { - return this.f_99675_; + public ServerStatusPinger getPinger() { + return this.pinger; } diff --git a/patches/minecraft/net/minecraft/client/gui/screens/multiplayer/ServerSelectionList.java.patch b/patches/minecraft/net/minecraft/client/gui/screens/multiplayer/ServerSelectionList.java.patch index e3e40ad2f1..f9b8a1d8c2 100644 --- a/patches/minecraft/net/minecraft/client/gui/screens/multiplayer/ServerSelectionList.java.patch +++ b/patches/minecraft/net/minecraft/client/gui/screens/multiplayer/ServerSelectionList.java.patch @@ -1,11 +1,11 @@ --- a/net/minecraft/client/gui/screens/multiplayer/ServerSelectionList.java +++ b/net/minecraft/client/gui/screens/multiplayer/ServerSelectionList.java @@ -346,6 +_,8 @@ - this.f_99855_.m_99707_(list1); + this.screen.setToolTip(list1); } -+ net.minecraftforge.client.ForgeHooksClient.drawForgePingInfo(this.f_99855_, f_99857_, p_281406_, p_281363_, p_282921_, p_283596_, l, i1); ++ net.minecraftforge.client.ForgeHooksClient.drawForgePingInfo(this.screen, serverData, p_281406_, p_281363_, p_282921_, p_283596_, l, i1); + - if (this.f_99856_.f_91066_.m_231828_().m_231551_() || p_282999_) { - p_281406_.m_280509_(p_281363_, p_282921_, p_281363_ + 32, p_282921_ + 32, -1601138544); + if (this.minecraft.options.touchscreen().get() || p_282999_) { + p_281406_.fill(p_281363_, p_282921_, p_281363_ + 32, p_282921_ + 32, -1601138544); int j1 = p_283567_ - p_281363_; diff --git a/patches/minecraft/net/minecraft/client/gui/screens/packs/PackSelectionModel.java.patch b/patches/minecraft/net/minecraft/client/gui/screens/packs/PackSelectionModel.java.patch index 6d006d71b6..c63246ce22 100644 --- a/patches/minecraft/net/minecraft/client/gui/screens/packs/PackSelectionModel.java.patch +++ b/patches/minecraft/net/minecraft/client/gui/screens/packs/PackSelectionModel.java.patch @@ -1,9 +1,9 @@ --- a/net/minecraft/client/gui/screens/packs/PackSelectionModel.java +++ b/net/minecraft/client/gui/screens/packs/PackSelectionModel.java @@ -110,6 +_,8 @@ - boolean m_7802_(); + boolean canMoveUp(); - boolean m_7803_(); + boolean canMoveDown(); + + default boolean notHidden() { return true; } } @@ -11,13 +11,13 @@ @OnlyIn(Dist.CLIENT) @@ -198,6 +_,11 @@ - public void m_7845_() { - this.m_99938_(1); + public void moveDown() { + this.move(1); + } + + @Override + public boolean notHidden() { -+ return !f_99933_.isHidden(); ++ return !pack.isHidden(); } } diff --git a/patches/minecraft/net/minecraft/client/gui/screens/packs/PackSelectionScreen.java.patch b/patches/minecraft/net/minecraft/client/gui/screens/packs/PackSelectionScreen.java.patch index a2daf44f72..9d393293d4 100644 --- a/patches/minecraft/net/minecraft/client/gui/screens/packs/PackSelectionScreen.java.patch +++ b/patches/minecraft/net/minecraft/client/gui/screens/packs/PackSelectionScreen.java.patch @@ -1,16 +1,16 @@ --- a/net/minecraft/client/gui/screens/packs/PackSelectionScreen.java +++ b/net/minecraft/client/gui/screens/packs/PackSelectionScreen.java @@ -138,10 +_,10 @@ - TransferableSelectionList.PackEntry transferableselectionlist$packentry = p_100014_.m_93511_(); - String s = transferableselectionlist$packentry == null ? "" : transferableselectionlist$packentry.m_264411_(); - p_100014_.m_6987_((TransferableSelectionList.PackEntry)null); + TransferableSelectionList.PackEntry transferableselectionlist$packentry = p_100014_.getSelected(); + String s = transferableselectionlist$packentry == null ? "" : transferableselectionlist$packentry.getPackId(); + p_100014_.setSelected((TransferableSelectionList.PackEntry)null); - p_100015_.forEach((p_280875_) -> { -- TransferableSelectionList.PackEntry transferableselectionlist$packentry1 = new TransferableSelectionList.PackEntry(this.f_96541_, p_100014_, p_280875_); +- TransferableSelectionList.PackEntry transferableselectionlist$packentry1 = new TransferableSelectionList.PackEntry(this.minecraft, p_100014_, p_280875_); + p_100015_.filter(PackSelectionModel.Entry::notHidden).forEach((p_264692_) -> { -+ TransferableSelectionList.PackEntry transferableselectionlist$packentry1 = new TransferableSelectionList.PackEntry(this.f_96541_, p_100014_, p_264692_); - p_100014_.m_6702_().add(transferableselectionlist$packentry1); -- if (p_280875_.m_264249_().equals(s)) { -+ if (p_264692_.m_264249_().equals(s)) { - p_100014_.m_6987_(transferableselectionlist$packentry1); ++ TransferableSelectionList.PackEntry transferableselectionlist$packentry1 = new TransferableSelectionList.PackEntry(this.minecraft, p_100014_, p_264692_); + p_100014_.children().add(transferableselectionlist$packentry1); +- if (p_280875_.getId().equals(s)) { ++ if (p_264692_.getId().equals(s)) { + p_100014_.setSelected(transferableselectionlist$packentry1); } diff --git a/patches/minecraft/net/minecraft/client/gui/screens/recipebook/RecipeBookComponent.java.patch b/patches/minecraft/net/minecraft/client/gui/screens/recipebook/RecipeBookComponent.java.patch index 7c51c05aa0..2bec5f81c6 100644 --- a/patches/minecraft/net/minecraft/client/gui/screens/recipebook/RecipeBookComponent.java.patch +++ b/patches/minecraft/net/minecraft/client/gui/screens/recipebook/RecipeBookComponent.java.patch @@ -1,20 +1,20 @@ --- a/net/minecraft/client/gui/screens/recipebook/RecipeBookComponent.java +++ b/net/minecraft/client/gui/screens/recipebook/RecipeBookComponent.java @@ -107,7 +_,7 @@ - this.m_5674_(); - this.f_100279_.clear(); + this.initFilterButtonTextures(); + this.tabButtons.clear(); -- for(RecipeBookCategories recipebookcategories : RecipeBookCategories.m_92269_(this.f_100271_.m_5867_())) { -+ for(RecipeBookCategories recipebookcategories : this.f_100271_.getRecipeBookCategories()) { - this.f_100279_.add(new RecipeBookTabButton(recipebookcategories)); +- for(RecipeBookCategories recipebookcategories : RecipeBookCategories.getCategories(this.menu.getRecipeBookType())) { ++ for(RecipeBookCategories recipebookcategories : this.menu.getRecipeBookCategories()) { + this.tabButtons.add(new RecipeBookTabButton(recipebookcategories)); } @@ -296,7 +_,7 @@ } - if (itemstack != null && this.f_100272_.f_91080_ != null) { -- p_282776_.m_280666_(this.f_100272_.f_91062_, Screen.m_280152_(this.f_100272_, itemstack), p_282948_, p_283050_); -+ p_282776_.renderComponentTooltip(this.f_100272_.f_91062_, Screen.m_280152_(this.f_100272_, itemstack), p_282948_, p_283050_, itemstack); + if (itemstack != null && this.minecraft.screen != null) { +- p_282776_.renderComponentTooltip(this.minecraft.font, Screen.getTooltipFromItem(this.minecraft, itemstack), p_282948_, p_283050_); ++ p_282776_.renderComponentTooltip(this.minecraft.font, Screen.getTooltipFromItem(this.minecraft, itemstack), p_282948_, p_283050_, itemstack); } } diff --git a/patches/minecraft/net/minecraft/client/gui/screens/worldselection/CreateWorldScreen.java.patch b/patches/minecraft/net/minecraft/client/gui/screens/worldselection/CreateWorldScreen.java.patch index 3a554c498b..d2445ef544 100644 --- a/patches/minecraft/net/minecraft/client/gui/screens/worldselection/CreateWorldScreen.java.patch +++ b/patches/minecraft/net/minecraft/client/gui/screens/worldselection/CreateWorldScreen.java.patch @@ -1,27 +1,27 @@ --- a/net/minecraft/client/gui/screens/worldselection/CreateWorldScreen.java +++ b/net/minecraft/client/gui/screens/worldselection/CreateWorldScreen.java @@ -121,6 +_,7 @@ - public static void m_232896_(Minecraft p_232897_, @Nullable Screen p_232898_) { - m_232899_(p_232897_, f_232866_); - PackRepository packrepository = new PackRepository(new ServerPacksSource(p_232897_.m_294312_())); + public static void openFresh(Minecraft p_232897_, @Nullable Screen p_232898_) { + queueLoadScreen(p_232897_, PREPARING_WORLD_DATA); + PackRepository packrepository = new PackRepository(new ServerPacksSource(p_232897_.directoryValidator())); + net.minecraftforge.fml.ModLoader.get().postEvent(new net.minecraftforge.event.AddPackFindersEvent(net.minecraft.server.packs.PackType.SERVER_DATA, packrepository::addPackFinder)); - WorldLoader.InitConfig worldloader$initconfig = m_245574_(packrepository, WorldDataConfiguration.f_244649_); - CompletableFuture completablefuture = WorldLoader.m_214362_(worldloader$initconfig, (p_247792_) -> { - return new WorldLoader.DataLoadOutput<>(new CreateWorldScreen.DataPackReloadCookie(new WorldGenSettings(WorldOptions.m_247394_(), WorldPresets.m_246552_(p_247792_.f_244104_())), p_247792_.f_244127_()), p_247792_.f_243759_()); + WorldLoader.InitConfig worldloader$initconfig = createDefaultLoadConfig(packrepository, WorldDataConfiguration.DEFAULT); + CompletableFuture completablefuture = WorldLoader.load(worldloader$initconfig, (p_247792_) -> { + return new WorldLoader.DataLoadOutput<>(new CreateWorldScreen.DataPackReloadCookie(new WorldGenSettings(WorldOptions.defaultWithRandomSeed(), WorldPresets.createNormalWorldDimensions(p_247792_.datapackWorldgen())), p_247792_.dataConfiguration()), p_247792_.datapackDimensions()); @@ -364,7 +_,7 @@ if (p_269627_) { - p_270552_.accept(this.f_267389_.m_267573_().f_243842_()); + p_270552_.accept(this.uiState.getSettings().dataConfiguration()); } else { -- p_270552_.accept(WorldDataConfiguration.f_244649_); -+ p_270552_.accept(new WorldDataConfiguration(new DataPackConfig(ImmutableList.of("vanilla"), ImmutableList.of()), FeatureFlags.f_244332_)); // FORGE: Revert to *actual* vanilla data +- p_270552_.accept(WorldDataConfiguration.DEFAULT); ++ p_270552_.accept(new WorldDataConfiguration(new DataPackConfig(ImmutableList.of("vanilla"), ImmutableList.of()), FeatureFlags.DEFAULT_FLAGS)); // FORGE: Revert to *actual* vanilla data } - }, Component.m_237115_("dataPack.validation.failed"), CommonComponents.f_237098_, Component.m_237115_("dataPack.validation.back"), Component.m_237115_("dataPack.validation.reset"))); + }, Component.translatable("dataPack.validation.failed"), CommonComponents.EMPTY, Component.translatable("dataPack.validation.back"), Component.translatable("dataPack.validation.reset"))); @@ -478,6 +_,7 @@ if (path != null) { - if (this.f_100832_ == null) { - this.f_100832_ = ServerPacksSource.m_245786_(path, this.f_291518_); -+ net.minecraftforge.resource.ResourcePackLoader.loadResourcePacks(this.f_100832_, net.minecraftforge.server.ServerLifecycleHooks::buildPackFinder); - this.f_100832_.m_10506_(); + if (this.tempDataPackRepository == null) { + this.tempDataPackRepository = ServerPacksSource.createPackRepository(path, this.packValidator); ++ net.minecraftforge.resource.ResourcePackLoader.loadResourcePacks(this.tempDataPackRepository, net.minecraftforge.server.ServerLifecycleHooks::buildPackFinder); + this.tempDataPackRepository.reload(); } diff --git a/patches/minecraft/net/minecraft/client/gui/screens/worldselection/PresetEditor.java.patch b/patches/minecraft/net/minecraft/client/gui/screens/worldselection/PresetEditor.java.patch index 5cd0b65641..99720ea42b 100644 --- a/patches/minecraft/net/minecraft/client/gui/screens/worldselection/PresetEditor.java.patch +++ b/patches/minecraft/net/minecraft/client/gui/screens/worldselection/PresetEditor.java.patch @@ -8,6 +8,6 @@ + * @deprecated Forge: Use {@link net.minecraftforge.client.PresetEditorManager#get(ResourceKey)} instead. + */ + @Deprecated - Map>, PresetEditor> f_232950_ = Map.of(Optional.of(WorldPresets.f_226438_), (p_232974_, p_232975_) -> { - ChunkGenerator chunkgenerator = p_232975_.f_243796_().m_246737_(); - RegistryAccess registryaccess = p_232975_.m_246480_(); + Map>, PresetEditor> EDITORS = Map.of(Optional.of(WorldPresets.FLAT), (p_232974_, p_232975_) -> { + ChunkGenerator chunkgenerator = p_232975_.selectedDimensions().overworld(); + RegistryAccess registryaccess = p_232975_.worldgenLoadContext(); diff --git a/patches/minecraft/net/minecraft/client/gui/screens/worldselection/WorldCreationContext.java.patch b/patches/minecraft/net/minecraft/client/gui/screens/worldselection/WorldCreationContext.java.patch index 231523eeb1..0f6f66edf8 100644 --- a/patches/minecraft/net/minecraft/client/gui/screens/worldselection/WorldCreationContext.java.patch +++ b/patches/minecraft/net/minecraft/client/gui/screens/worldselection/WorldCreationContext.java.patch @@ -1,13 +1,13 @@ --- a/net/minecraft/client/gui/screens/worldselection/WorldCreationContext.java +++ b/net/minecraft/client/gui/screens/worldselection/WorldCreationContext.java @@ -38,6 +_,10 @@ - return new WorldCreationContext(this.f_244272_, this.f_244375_, p_250676_.apply(this.m_246480_(), this.f_243796_), this.f_243708_, this.f_232990_, this.f_243842_); + return new WorldCreationContext(this.options, this.datapackDimensions, p_250676_.apply(this.worldgenLoadContext(), this.selectedDimensions), this.worldgenRegistries, this.dataPackResources, this.dataConfiguration); } + public WorldCreationContext withDataConfiguration(WorldDataConfiguration dataConfiguration) { -+ return new WorldCreationContext(this.f_244272_, this.f_244375_, this.f_243796_, this.f_243708_, this.f_232990_, dataConfiguration); ++ return new WorldCreationContext(this.options, this.datapackDimensions, this.selectedDimensions, this.worldgenRegistries, this.dataPackResources, dataConfiguration); + } + - public RegistryAccess.Frozen m_246480_() { - return this.f_243708_.m_247579_(); + public RegistryAccess.Frozen worldgenLoadContext() { + return this.worldgenRegistries.compositeAccess(); } diff --git a/patches/minecraft/net/minecraft/client/gui/screens/worldselection/WorldCreationUiState.java.patch b/patches/minecraft/net/minecraft/client/gui/screens/worldselection/WorldCreationUiState.java.patch index 5c8b2a09c2..40161f4a70 100644 --- a/patches/minecraft/net/minecraft/client/gui/screens/worldselection/WorldCreationUiState.java.patch +++ b/patches/minecraft/net/minecraft/client/gui/screens/worldselection/WorldCreationUiState.java.patch @@ -2,10 +2,10 @@ +++ b/net/minecraft/client/gui/screens/worldselection/WorldCreationUiState.java @@ -226,7 +_,7 @@ @Nullable - public PresetEditor m_267744_() { - Holder holder = this.m_267828_().f_267398_(); -- return holder != null ? PresetEditor.f_232950_.get(holder.m_203543_()) : null; -+ return holder != null ? holder.m_203543_().map(net.minecraftforge.client.PresetEditorManager::get).orElse(null) : null; // FORGE: redirect lookup to expanded map + public PresetEditor getPresetEditor() { + Holder holder = this.getWorldType().preset(); +- return holder != null ? PresetEditor.EDITORS.get(holder.unwrapKey()) : null; ++ return holder != null ? holder.unwrapKey().map(net.minecraftforge.client.PresetEditorManager::get).orElse(null) : null; // FORGE: redirect lookup to expanded map } - public List m_267815_() { + public List getNormalPresetList() { diff --git a/patches/minecraft/net/minecraft/client/gui/screens/worldselection/WorldOpenFlows.java.patch b/patches/minecraft/net/minecraft/client/gui/screens/worldselection/WorldOpenFlows.java.patch index 461e2febb5..a2f335503e 100644 --- a/patches/minecraft/net/minecraft/client/gui/screens/worldselection/WorldOpenFlows.java.patch +++ b/patches/minecraft/net/minecraft/client/gui/screens/worldselection/WorldOpenFlows.java.patch @@ -3,36 +3,36 @@ @@ -165,13 +_,23 @@ } - private void m_233145_(Screen p_233146_, String p_233147_, boolean p_233148_, boolean p_233149_) { + private void doLoadLevel(Screen p_233146_, String p_233147_, boolean p_233148_, boolean p_233149_) { + // FORGE: Patch in overload to reduce further patching + this.doLoadLevel(p_233146_, p_233147_, p_233148_, p_233149_, false); + } + + // FORGE: Patch in confirmExperimentalWarning which confirms the experimental warning when true + private void doLoadLevel(Screen p_233146_, String p_233147_, boolean p_233148_, boolean p_233149_, boolean confirmExperimentalWarning) { - LevelStorageSource.LevelStorageAccess levelstoragesource$levelstorageaccess = this.m_233155_(p_233147_); + LevelStorageSource.LevelStorageAccess levelstoragesource$levelstorageaccess = this.createWorldAccess(p_233147_); if (levelstoragesource$levelstorageaccess != null) { - PackRepository packrepository = ServerPacksSource.m_247728_(levelstoragesource$levelstorageaccess); + PackRepository packrepository = ServerPacksSource.createPackRepository(levelstoragesource$levelstorageaccess); WorldStem worldstem; try { + levelstoragesource$levelstorageaccess.readAdditionalLevelSaveData(); // Read extra (e.g. modded) data from the world before creating it - worldstem = this.m_233122_(levelstoragesource$levelstorageaccess, p_233148_, packrepository); -+ if (confirmExperimentalWarning && worldstem.f_206895_() instanceof PrimaryLevelData pld) { + worldstem = this.loadWorldStem(levelstoragesource$levelstorageaccess, p_233148_, packrepository); ++ if (confirmExperimentalWarning && worldstem.worldData() instanceof PrimaryLevelData pld) { + pld.withConfirmedWarning(true); + } } catch (Exception exception) { - f_233088_.warn("Failed to load level data or datapacks, can't proceed with server load", (Throwable)exception); + LOGGER.warn("Failed to load level data or datapacks, can't proceed with server load", (Throwable)exception); if (!p_233148_) { @@ -191,7 +_,9 @@ - WorldData worlddata = worldstem.f_206895_(); - boolean flag = worlddata.m_246337_().m_247070_(); - boolean flag1 = worlddata.m_5754_() != Lifecycle.stable(); + WorldData worlddata = worldstem.worldData(); + boolean flag = worlddata.worldGenOptions().isOldCustomizedWorld(); + boolean flag1 = worlddata.worldGenSettingsLifecycle() != Lifecycle.stable(); - if (!p_233149_ || !flag && !flag1) { + // Forge: Skip confirmation if it has been done already for this world + boolean skipConfirmation = worlddata instanceof PrimaryLevelData pld && pld.hasConfirmedExperimentalWarning(); + if (skipConfirmation || !p_233149_ || !flag && !flag1) { - this.f_233089_.m_247489_().m_247400_(levelstoragesource$levelstorageaccess).thenApply((p_233177_) -> { + this.minecraft.getDownloadedPackSource().loadBundledResourcePack(levelstoragesource$levelstorageaccess).thenApply((p_233177_) -> { return true; }).exceptionallyComposeAsync((p_233183_) -> { @@ -213,9 +_,11 @@ @@ -40,10 +40,10 @@ }); } else { + if (flag) // Forge: For legacy world options, let vanilla handle it. - this.m_233140_(p_233146_, p_233147_, flag, () -> { - this.m_233145_(p_233146_, p_233147_, p_233148_, false); + this.askForBackup(p_233146_, p_233147_, flag, () -> { + this.doLoadLevel(p_233146_, p_233147_, p_233148_, false); }); + else net.minecraftforge.client.ForgeHooksClient.createWorldConfirmationScreen(() -> this.doLoadLevel(p_233146_, p_233147_, p_233148_, false, true)); worldstem.close(); - m_233116_(levelstoragesource$levelstorageaccess, p_233147_); + safeCloseAccess(levelstoragesource$levelstorageaccess, p_233147_); } diff --git a/patches/minecraft/net/minecraft/client/gui/screens/worldselection/WorldSelectionList.java.patch b/patches/minecraft/net/minecraft/client/gui/screens/worldselection/WorldSelectionList.java.patch index f346aabec9..42c59b6749 100644 --- a/patches/minecraft/net/minecraft/client/gui/screens/worldselection/WorldSelectionList.java.patch +++ b/patches/minecraft/net/minecraft/client/gui/screens/worldselection/WorldSelectionList.java.patch @@ -1,36 +1,36 @@ --- a/net/minecraft/client/gui/screens/worldselection/WorldSelectionList.java +++ b/net/minecraft/client/gui/screens/worldselection/WorldSelectionList.java @@ -74,6 +_,7 @@ - static final Logger f_101645_ = LogUtils.getLogger(); - static final DateFormat f_101646_ = new SimpleDateFormat(); - private static final ResourceLocation f_101647_ = new ResourceLocation("textures/misc/unknown_server.png"); + static final Logger LOGGER = LogUtils.getLogger(); + static final DateFormat DATE_FORMAT = new SimpleDateFormat(); + private static final ResourceLocation ICON_MISSING = new ResourceLocation("textures/misc/unknown_server.png"); + private static final ResourceLocation FORGE_EXPERIMENTAL_WARNING_ICON = new ResourceLocation("forge","textures/gui/experimental_warning.png"); - static final Component f_101649_ = Component.m_237115_("selectWorld.tooltip.fromNewerVersion1").m_130940_(ChatFormatting.RED); - static final Component f_101650_ = Component.m_237115_("selectWorld.tooltip.fromNewerVersion2").m_130940_(ChatFormatting.RED); - static final Component f_101651_ = Component.m_237115_("selectWorld.tooltip.snapshot1").m_130940_(ChatFormatting.GOLD); + static final Component FROM_NEWER_TOOLTIP_1 = Component.translatable("selectWorld.tooltip.fromNewerVersion1").withStyle(ChatFormatting.RED); + static final Component FROM_NEWER_TOOLTIP_2 = Component.translatable("selectWorld.tooltip.fromNewerVersion2").withStyle(ChatFormatting.RED); + static final Component SNAPSHOT_TOOLTIP_1 = Component.translatable("selectWorld.tooltip.snapshot1").withStyle(ChatFormatting.GOLD); @@ -362,6 +_,7 @@ RenderSystem.enableBlend(); - p_281612_.m_280163_(this.f_101698_.m_289196_(), p_282820_, p_283181_, 0.0F, 0.0F, 32, 32, 32, 32); + p_281612_.blit(this.icon.textureLocation(), p_282820_, p_283181_, 0.0F, 0.0F, 32, 32, 32, 32); RenderSystem.disableBlend(); + renderExperimentalWarning(p_281612_, p_283204_, p_283025_, p_283181_, p_282820_); - if (this.f_101693_.f_91066_.m_231828_().m_231551_() || p_283396_) { - p_281612_.m_280509_(p_282820_, p_283181_, p_282820_ + 32, p_283181_ + 32, -1601138544); + if (this.minecraft.options.touchscreen().get() || p_283396_) { + p_281612_.fill(p_282820_, p_283181_, p_282820_ + 32, p_283181_ + 32, -1601138544); int j = p_283204_ - p_282820_; @@ -608,6 +_,19 @@ - public boolean m_214209_() { - return !this.f_101695_.m_164916_(); + public boolean isSelectable() { + return !this.summary.isDisabled(); + } + + // FORGE: Patch in experimental warning icon for worlds in the world selection screen + private void renderExperimentalWarning(GuiGraphics guiGraphics, int mouseX, int mouseY, int top, int left) { -+ if (this.f_101695_.isLifecycleExperimental()) { -+ int leftStart = left + WorldSelectionList.this.m_5759_(); -+ guiGraphics.m_280163_(WorldSelectionList.FORGE_EXPERIMENTAL_WARNING_ICON, leftStart - 36, top, 0.0F, 0.0F, 32, 32, 32, 32); -+ if (WorldSelectionList.this.m_93412_(mouseX, mouseY) == this && mouseX > leftStart - 36 && mouseX < leftStart) { -+ var font = Minecraft.m_91087_().f_91062_; -+ List tooltip = font.m_92923_(Component.m_237115_("forge.experimentalsettings.tooltip"), 200); -+ guiGraphics.m_280245_(font, tooltip, mouseX, mouseY); ++ if (this.summary.isLifecycleExperimental()) { ++ int leftStart = left + WorldSelectionList.this.getRowWidth(); ++ guiGraphics.blit(WorldSelectionList.FORGE_EXPERIMENTAL_WARNING_ICON, leftStart - 36, top, 0.0F, 0.0F, 32, 32, 32, 32); ++ if (WorldSelectionList.this.getEntryAtPosition(mouseX, mouseY) == this && mouseX > leftStart - 36 && mouseX < leftStart) { ++ var font = Minecraft.getInstance().font; ++ List tooltip = font.split(Component.translatable("forge.experimentalsettings.tooltip"), 200); ++ guiGraphics.renderTooltip(font, tooltip, mouseX, mouseY); + } + } } diff --git a/patches/minecraft/net/minecraft/client/main/Main.java.patch b/patches/minecraft/net/minecraft/client/main/Main.java.patch index c1495a4354..f69bbb9d8c 100644 --- a/patches/minecraft/net/minecraft/client/main/Main.java.patch +++ b/patches/minecraft/net/minecraft/client/main/Main.java.patch @@ -3,10 +3,10 @@ @@ -150,8 +_,8 @@ } - CrashReport.m_127529_(); -- Bootstrap.m_135870_(); - GameLoadTimesEvent.f_285635_.m_286069_(Bootstrap.f_285608_.get()); -+ net.minecraftforge.fml.loading.BackgroundWaiter.runAndTick(()->Bootstrap.m_135870_(), net.minecraftforge.fml.loading.FMLLoader.progressWindowTick); - Bootstrap.m_135889_(); - Util.m_137584_(); + CrashReport.preload(); +- Bootstrap.bootStrap(); + GameLoadTimesEvent.INSTANCE.setBootstrapTime(Bootstrap.bootstrapDuration.get()); ++ net.minecraftforge.fml.loading.BackgroundWaiter.runAndTick(()->Bootstrap.bootStrap(), net.minecraftforge.fml.loading.FMLLoader.progressWindowTick); + Bootstrap.validate(); + Util.startTimerHackThread(); String s12 = optionspec25.value(optionset); diff --git a/patches/minecraft/net/minecraft/client/model/HumanoidModel.java.patch b/patches/minecraft/net/minecraft/client/model/HumanoidModel.java.patch index 7f0754cf99..9546a115fd 100644 --- a/patches/minecraft/net/minecraft/client/model/HumanoidModel.java.patch +++ b/patches/minecraft/net/minecraft/client/model/HumanoidModel.java.patch @@ -2,19 +2,19 @@ +++ b/net/minecraft/client/model/HumanoidModel.java @@ -270,6 +_,8 @@ case TOOT_HORN: - this.f_102811_.f_104203_ = Mth.m_14036_(this.f_102808_.f_104203_, -1.2F, 1.2F) - 1.4835298F; - this.f_102811_.f_104204_ = this.f_102808_.f_104204_ - ((float)Math.PI / 6F); + this.rightArm.xRot = Mth.clamp(this.head.xRot, -1.2F, 1.2F) - 1.4835298F; + this.rightArm.yRot = this.head.yRot - ((float)Math.PI / 6F); + default: -+ this.f_102816_.applyTransform(this, p_102876_, net.minecraft.world.entity.HumanoidArm.RIGHT); ++ this.rightArmPose.applyTransform(this, p_102876_, net.minecraft.world.entity.HumanoidArm.RIGHT); } } @@ -314,6 +_,8 @@ case TOOT_HORN: - this.f_102812_.f_104203_ = Mth.m_14036_(this.f_102808_.f_104203_, -1.2F, 1.2F) - 1.4835298F; - this.f_102812_.f_104204_ = this.f_102808_.f_104204_ + ((float)Math.PI / 6F); + this.leftArm.xRot = Mth.clamp(this.head.xRot, -1.2F, 1.2F) - 1.4835298F; + this.leftArm.yRot = this.head.yRot + ((float)Math.PI / 6F); + default: -+ this.f_102815_.applyTransform(this, p_102879_, net.minecraft.world.entity.HumanoidArm.LEFT); ++ this.leftArmPose.applyTransform(this, p_102879_, net.minecraft.world.entity.HumanoidArm.LEFT); } } @@ -30,19 +30,19 @@ @@ -422,10 +_,29 @@ private ArmPose(boolean p_102896_) { - this.f_102890_ = p_102896_; + this.twoHanded = p_102896_; + this.forgeArmPose = null; } - public boolean m_102897_() { - return this.f_102890_; + public boolean isTwoHanded() { + return this.twoHanded; } + // FORGE START + @javax.annotation.Nullable + private final net.minecraftforge.client.IArmPoseTransformer forgeArmPose; + + private ArmPose(boolean twoHanded, @javax.annotation.Nonnull net.minecraftforge.client.IArmPoseTransformer forgeArmPose) { -+ this.f_102890_ = twoHanded; ++ this.twoHanded = twoHanded; + com.google.common.base.Preconditions.checkNotNull(forgeArmPose, "Cannot create new ArmPose with null transformer!"); + this.forgeArmPose = forgeArmPose; + } diff --git a/patches/minecraft/net/minecraft/client/model/geom/LayerDefinitions.java.patch b/patches/minecraft/net/minecraft/client/model/geom/LayerDefinitions.java.patch index ab4e24cbeb..51deab4fe9 100644 --- a/patches/minecraft/net/minecraft/client/model/geom/LayerDefinitions.java.patch +++ b/patches/minecraft/net/minecraft/client/model/geom/LayerDefinitions.java.patch @@ -1,10 +1,10 @@ --- a/net/minecraft/client/model/geom/LayerDefinitions.java +++ b/net/minecraft/client/model/geom/LayerDefinitions.java @@ -319,6 +_,7 @@ - WoodType.m_61843_().forEach((p_247864_) -> { - builder.put(ModelLayers.m_247439_(p_247864_), layerdefinition24); + WoodType.values().forEach((p_247864_) -> { + builder.put(ModelLayers.createHangingSignModelName(p_247864_), layerdefinition24); }); + net.minecraftforge.client.ForgeHooksClient.loadLayerDefinitions(builder); ImmutableMap immutablemap = builder.build(); - List list = ModelLayers.m_171288_().filter((p_171117_) -> { + List list = ModelLayers.getKnownLocations().filter((p_171117_) -> { return !immutablemap.containsKey(p_171117_); diff --git a/patches/minecraft/net/minecraft/client/model/geom/ModelLayers.java.patch b/patches/minecraft/net/minecraft/client/model/geom/ModelLayers.java.patch index 4b2cd06100..ca4e224b71 100644 --- a/patches/minecraft/net/minecraft/client/model/geom/ModelLayers.java.patch +++ b/patches/minecraft/net/minecraft/client/model/geom/ModelLayers.java.patch @@ -3,16 +3,16 @@ @@ -220,11 +_,13 @@ } - public static ModelLayerLocation m_171291_(WoodType p_171292_) { -- return m_171300_("sign/" + p_171292_.f_61839_(), "main"); -+ ResourceLocation location = new ResourceLocation(p_171292_.f_61839_()); -+ return new ModelLayerLocation(new ResourceLocation(location.m_135827_(), "sign/" + location.m_135815_()), "main"); + public static ModelLayerLocation createSignModelName(WoodType p_171292_) { +- return createLocation("sign/" + p_171292_.name(), "main"); ++ ResourceLocation location = new ResourceLocation(p_171292_.name()); ++ return new ModelLayerLocation(new ResourceLocation(location.getNamespace(), "sign/" + location.getPath()), "main"); } - public static ModelLayerLocation m_247439_(WoodType p_252225_) { -- return m_171300_("hanging_sign/" + p_252225_.f_61839_(), "main"); -+ ResourceLocation location = new ResourceLocation(p_252225_.f_61839_()); -+ return new ModelLayerLocation(new ResourceLocation(location.m_135827_(), "hanging_sign/" + location.m_135815_()), "main"); + public static ModelLayerLocation createHangingSignModelName(WoodType p_252225_) { +- return createLocation("hanging_sign/" + p_252225_.name(), "main"); ++ ResourceLocation location = new ResourceLocation(p_252225_.name()); ++ return new ModelLayerLocation(new ResourceLocation(location.getNamespace(), "hanging_sign/" + location.getPath()), "main"); } - public static Stream m_171288_() { + public static Stream getKnownLocations() { diff --git a/patches/minecraft/net/minecraft/client/multiplayer/AccountProfileKeyPairManager.java.patch b/patches/minecraft/net/minecraft/client/multiplayer/AccountProfileKeyPairManager.java.patch index f749da454b..01ea9afdbe 100644 --- a/patches/minecraft/net/minecraft/client/multiplayer/AccountProfileKeyPairManager.java.patch +++ b/patches/minecraft/net/minecraft/client/multiplayer/AccountProfileKeyPairManager.java.patch @@ -1,11 +1,11 @@ --- a/net/minecraft/client/multiplayer/AccountProfileKeyPairManager.java +++ b/net/minecraft/client/multiplayer/AccountProfileKeyPairManager.java @@ -75,6 +_,8 @@ - this.m_253216_(profilekeypair); + this.writeProfileKeyPair(profilekeypair); return Optional.of(profilekeypair); } catch (CryptException | MinecraftClientException | IOException ioexception) { + // Forge: The offline user api service always returns a null profile key pair, so let's hide this useless exception if in dev -+ if (net.minecraftforge.fml.loading.FMLLoader.isProduction() || this.f_252526_ != UserApiService.OFFLINE) - f_252448_.error("Failed to retrieve profile key pair", (Throwable)ioexception); - this.m_253216_((ProfileKeyPair)null); ++ if (net.minecraftforge.fml.loading.FMLLoader.isProduction() || this.userApiService != UserApiService.OFFLINE) + LOGGER.error("Failed to retrieve profile key pair", (Throwable)ioexception); + this.writeProfileKeyPair((ProfileKeyPair)null); return p_254074_; diff --git a/patches/minecraft/net/minecraft/client/multiplayer/ClientChunkCache.java.patch b/patches/minecraft/net/minecraft/client/multiplayer/ClientChunkCache.java.patch index 971a62968e..3fe7968a48 100644 --- a/patches/minecraft/net/minecraft/client/multiplayer/ClientChunkCache.java.patch +++ b/patches/minecraft/net/minecraft/client/multiplayer/ClientChunkCache.java.patch @@ -1,17 +1,17 @@ --- a/net/minecraft/client/multiplayer/ClientChunkCache.java +++ b/net/minecraft/client/multiplayer/ClientChunkCache.java @@ -60,6 +_,7 @@ - int i = this.f_104410_.m_104481_(p_298665_.f_45578_, p_298665_.f_45579_); - LevelChunk levelchunk = this.f_104410_.m_104479_(i); - if (m_104438_(levelchunk, p_298665_.f_45578_, p_298665_.f_45579_)) { + int i = this.storage.getIndex(p_298665_.x, p_298665_.z); + LevelChunk levelchunk = this.storage.getChunk(i); + if (isValidChunk(levelchunk, p_298665_.x, p_298665_.z)) { + net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.event.level.ChunkEvent.Unload(levelchunk)); - this.f_104410_.m_104487_(i, levelchunk, (LevelChunk)null); + this.storage.replace(i, levelchunk, (LevelChunk)null); } @@ -115,6 +_,7 @@ } - this.f_104411_.m_171649_(chunkpos); + this.level.onChunkLoaded(chunkpos); + net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.event.level.ChunkEvent.Load(levelchunk, false)); return levelchunk; } diff --git a/patches/minecraft/net/minecraft/client/multiplayer/ClientCommonPacketListenerImpl.java.patch b/patches/minecraft/net/minecraft/client/multiplayer/ClientCommonPacketListenerImpl.java.patch index 501766c4d4..9170740808 100644 --- a/patches/minecraft/net/minecraft/client/multiplayer/ClientCommonPacketListenerImpl.java.patch +++ b/patches/minecraft/net/minecraft/client/multiplayer/ClientCommonPacketListenerImpl.java.patch @@ -3,8 +3,8 @@ @@ -89,6 +_,7 @@ } - public void m_293213_(ClientboundCustomPayloadPacket p_298103_) { -+ if (net.minecraftforge.common.ForgeHooks.onCustomPayload(p_298103_, this.f_290549_)) return; - CustomPacketPayload custompacketpayload = p_298103_.f_291001_(); + public void handleCustomPayload(ClientboundCustomPayloadPacket p_298103_) { ++ if (net.minecraftforge.common.ForgeHooks.onCustomPayload(p_298103_, this.connection)) return; + CustomPacketPayload custompacketpayload = p_298103_.payload(); if (!(custompacketpayload instanceof DiscardedPayload)) { - PacketUtils.m_131363_(p_298103_, this, this.f_291812_); + PacketUtils.ensureRunningOnSameThread(p_298103_, this, this.minecraft); diff --git a/patches/minecraft/net/minecraft/client/multiplayer/ClientConfigurationPacketListenerImpl.java.patch b/patches/minecraft/net/minecraft/client/multiplayer/ClientConfigurationPacketListenerImpl.java.patch index 3b662c3eb3..01a35e8986 100644 --- a/patches/minecraft/net/minecraft/client/multiplayer/ClientConfigurationPacketListenerImpl.java.patch +++ b/patches/minecraft/net/minecraft/client/multiplayer/ClientConfigurationPacketListenerImpl.java.patch @@ -1,10 +1,10 @@ --- a/net/minecraft/client/multiplayer/ClientConfigurationPacketListenerImpl.java +++ b/net/minecraft/client/multiplayer/ClientConfigurationPacketListenerImpl.java @@ -71,6 +_,7 @@ - this.f_290549_.m_129505_(new ClientPacketListener(this.f_291812_, this.f_290549_, new CommonListenerCookie(this.f_290697_, this.f_291019_, this.f_291454_, this.f_291167_, this.f_291180_, this.f_291024_, this.f_291028_))); - this.f_290549_.m_294304_(); - this.f_290549_.m_129512_(new ServerboundFinishConfigurationPacket()); -+ net.minecraftforge.common.ForgeHooks.handleClientConfigurationComplete(this.f_290549_); + this.connection.setListener(new ClientPacketListener(this.minecraft, this.connection, new CommonListenerCookie(this.localGameProfile, this.telemetryManager, this.receivedRegistries, this.enabledFeatures, this.serverBrand, this.serverData, this.postDisconnectScreen))); + this.connection.resumeInboundAfterProtocolChange(); + this.connection.send(new ServerboundFinishConfigurationPacket()); ++ net.minecraftforge.common.ForgeHooks.handleClientConfigurationComplete(this.connection); } - public void m_9933_() { + public void tick() { diff --git a/patches/minecraft/net/minecraft/client/multiplayer/ClientHandshakePacketListenerImpl.java.patch b/patches/minecraft/net/minecraft/client/multiplayer/ClientHandshakePacketListenerImpl.java.patch index 545a969ac8..513e217b1b 100644 --- a/patches/minecraft/net/minecraft/client/multiplayer/ClientHandshakePacketListenerImpl.java.patch +++ b/patches/minecraft/net/minecraft/client/multiplayer/ClientHandshakePacketListenerImpl.java.patch @@ -1,18 +1,18 @@ --- a/net/minecraft/client/multiplayer/ClientHandshakePacketListenerImpl.java +++ b/net/minecraft/client/multiplayer/ClientHandshakePacketListenerImpl.java @@ -156,6 +_,7 @@ - public void m_7026_(Component p_104543_) { - if (this.f_243717_ != null && this.f_243717_.m_295074_()) { - this.f_104519_.m_91152_(new DisconnectedRealmsScreen(this.f_104520_, CommonComponents.f_130661_, p_104543_)); -+ } else if (net.minecraftforge.client.ForgeHooksClient.onClientDisconnect(this.f_104522_, this.f_104519_, this.f_104520_, p_104543_)) { + public void onDisconnect(Component p_104543_) { + if (this.serverData != null && this.serverData.isRealm()) { + this.minecraft.setScreen(new DisconnectedRealmsScreen(this.parent, CommonComponents.CONNECT_FAILED, p_104543_)); ++ } else if (net.minecraftforge.client.ForgeHooksClient.onClientDisconnect(this.connection, this.minecraft, this.parent, p_104543_)) { } else { - this.f_104519_.m_91152_(new DisconnectedScreen(this.f_104520_, CommonComponents.f_130661_, p_104543_)); + this.minecraft.setScreen(new DisconnectedScreen(this.parent, CommonComponents.CONNECT_FAILED, p_104543_)); } @@ -178,6 +_,7 @@ } - public void m_7254_(ClientboundCustomQueryPacket p_104545_) { -+ if (net.minecraftforge.common.ForgeHooks.onCustomPayload(p_104545_, this.f_104522_)) return; - this.f_104521_.accept(Component.m_237115_("connect.negotiating")); - this.f_104522_.m_129512_(new ServerboundCustomQueryAnswerPacket(p_104545_.f_134745_(), (CustomQueryAnswerPayload)null)); + public void handleCustomQuery(ClientboundCustomQueryPacket p_104545_) { ++ if (net.minecraftforge.common.ForgeHooks.onCustomPayload(p_104545_, this.connection)) return; + this.updateStatus.accept(Component.translatable("connect.negotiating")); + this.connection.send(new ServerboundCustomQueryAnswerPacket(p_104545_.transactionId(), (CustomQueryAnswerPayload)null)); } diff --git a/patches/minecraft/net/minecraft/client/multiplayer/ClientLevel.java.patch b/patches/minecraft/net/minecraft/client/multiplayer/ClientLevel.java.patch index 09c4c0e33e..34a30d1a1d 100644 --- a/patches/minecraft/net/minecraft/client/multiplayer/ClientLevel.java.patch +++ b/patches/minecraft/net/minecraft/client/multiplayer/ClientLevel.java.patch @@ -1,109 +1,109 @@ --- a/net/minecraft/client/multiplayer/ClientLevel.java +++ b/net/minecraft/client/multiplayer/ClientLevel.java @@ -116,12 +_,15 @@ - p_194170_.put(BiomeColors.f_108791_, new BlockTintCache((p_194168_) -> { - return this.m_104762_(p_194168_, BiomeColors.f_108791_); + p_194170_.put(BiomeColors.WATER_COLOR_RESOLVER, new BlockTintCache((p_194168_) -> { + return this.calculateBlockTint(p_194168_, BiomeColors.WATER_COLOR_RESOLVER); })); + net.minecraftforge.client.ColorResolverManager.registerBlockTintCaches(ClientLevel.this, p_194170_); }); - private final ClientChunkCache f_104559_; - private final Deque f_194122_ = Queues.newArrayDeque(); - private int f_194123_; - private final BlockStatePredictionHandler f_233599_ = new BlockStatePredictionHandler(); - private static final Set f_194124_ = Set.of(Items.f_42127_, Items.f_151033_); + private final ClientChunkCache chunkSource; + private final Deque lightUpdateQueue = Queues.newArrayDeque(); + private int serverSimulationDistance; + private final BlockStatePredictionHandler blockStatePredictionHandler = new BlockStatePredictionHandler(); + private static final Set MARKER_PARTICLE_ITEMS = Set.of(Items.BARRIER, Items.LIGHT); + private final it.unimi.dsi.fastutil.ints.Int2ObjectMap> partEntities = new it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap<>(); + private final net.minecraftforge.client.model.data.ModelDataManager modelDataManager = new net.minecraftforge.client.model.data.ModelDataManager(this); - public void m_233651_(int p_233652_) { - this.f_233599_.m_233856_(p_233652_, this); + public void handleBlockChangedAck(int p_233652_) { + this.blockStatePredictionHandler.endPredictionsUpTo(p_233652_, this); @@ -175,6 +_,8 @@ - this.f_194123_ = p_205510_; - this.m_46465_(); - this.m_46466_(); + this.serverSimulationDistance = p_205510_; + this.updateSkyBrightness(); + this.prepareWeather(); + this.gatherCapabilities(); + net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.event.level.LevelEvent.Load(this)); } - public void m_194171_(Runnable p_194172_) { + public void queueLightUpdate(Runnable p_194172_) { @@ -265,6 +_,7 @@ - this.m_46473_().m_6521_(() -> { - return BuiltInRegistries.f_256780_.m_7981_(p_104640_.m_6095_()).toString(); + this.getProfiler().push(() -> { + return BuiltInRegistries.ENTITY_TYPE.getKey(p_104640_.getType()).toString(); }); + if (p_104640_.canUpdate()) - p_104640_.m_8119_(); - this.m_46473_().m_7238_(); + p_104640_.tick(); + this.getProfiler().pop(); @@ -320,8 +_,10 @@ } - public void m_104739_(Entity p_104741_) { + public void addEntity(Entity p_104741_) { + if (net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.event.entity.EntityJoinLevelEvent(p_104741_, this))) return; - this.m_171642_(p_104741_.m_19879_(), Entity.RemovalReason.DISCARDED); - this.f_171631_.m_157653_(p_104741_); + this.removeEntity(p_104741_.getId(), Entity.RemovalReason.DISCARDED); + this.entityStorage.addEntity(p_104741_); + p_104741_.onAddedToWorld(); } - public void m_171642_(int p_171643_, Entity.RemovalReason p_171644_) { + public void removeEntity(int p_171643_, Entity.RemovalReason p_171644_) { @@ -448,6 +_,12 @@ } - public void m_262808_(@Nullable Player p_263381_, double p_263372_, double p_263404_, double p_263365_, Holder p_263335_, SoundSource p_263417_, float p_263416_, float p_263349_, long p_263408_) { + public void playSeededSound(@Nullable Player p_263381_, double p_263372_, double p_263404_, double p_263365_, Holder p_263335_, SoundSource p_263417_, float p_263416_, float p_263349_, long p_263408_) { + net.minecraftforge.event.PlayLevelSoundEvent.AtPosition event = net.minecraftforge.event.ForgeEventFactory.onPlaySoundAtPosition(this, p_263372_, p_263404_, p_263365_, p_263335_, p_263417_, p_263416_, p_263349_); + if (event.isCanceled() || event.getSound() == null) return; + p_263335_ = event.getSound(); + p_263417_ = event.getSource(); + p_263416_ = event.getNewVolume(); + p_263349_ = event.getNewPitch(); - if (p_263381_ == this.f_104565_.f_91074_) { - this.m_233602_(p_263372_, p_263404_, p_263365_, p_263335_.m_203334_(), p_263417_, p_263416_, p_263349_, false, p_263408_); + if (p_263381_ == this.minecraft.player) { + this.playSound(p_263372_, p_263404_, p_263365_, p_263335_.value(), p_263417_, p_263416_, p_263349_, false, p_263408_); } @@ -455,6 +_,12 @@ } - public void m_213890_(@Nullable Player p_263514_, Entity p_263536_, Holder p_263518_, SoundSource p_263487_, float p_263538_, float p_263524_, long p_263509_) { + public void playSeededSound(@Nullable Player p_263514_, Entity p_263536_, Holder p_263518_, SoundSource p_263487_, float p_263538_, float p_263524_, long p_263509_) { + net.minecraftforge.event.PlayLevelSoundEvent.AtEntity event = net.minecraftforge.event.ForgeEventFactory.onPlaySoundAtEntity(p_263536_, p_263518_, p_263487_, p_263538_, p_263524_); + if (event.isCanceled() || event.getSound() == null) return; + p_263518_ = event.getSound(); + p_263487_ = event.getSource(); + p_263538_ = event.getNewVolume(); + p_263524_ = event.getNewPitch(); - if (p_263514_ == this.f_104565_.f_91074_) { - this.f_104565_.m_91106_().m_120367_(new EntityBoundSoundInstance(p_263518_.m_203334_(), p_263487_, p_263538_, p_263524_, p_263536_, p_263509_)); + if (p_263514_ == this.minecraft.player) { + this.minecraft.getSoundManager().play(new EntityBoundSoundInstance(p_263518_.value(), p_263487_, p_263538_, p_263524_, p_263536_, p_263509_)); } @@ -892,6 +_,7 @@ } - public void m_104851_(Difficulty p_104852_) { -+ net.minecraftforge.common.ForgeHooks.onDifficultyChange(p_104852_, this.f_104840_); - this.f_104840_ = p_104852_; + public void setDifficulty(Difficulty p_104852_) { ++ net.minecraftforge.common.ForgeHooks.onDifficultyChange(p_104852_, this.difficulty); + this.difficulty = p_104852_; } @@ -929,14 +_,46 @@ - ClientLevel.this.f_104566_.add((AbstractClientPlayer)p_171712_); + ClientLevel.this.players.add((AbstractClientPlayer)p_171712_); } + if (p_171712_.isMultipartEntity()) { + for (net.minecraftforge.entity.PartEntity part : p_171712_.getParts()) { -+ ClientLevel.this.partEntities.put(part.m_19879_(), part); ++ ClientLevel.this.partEntities.put(part.getId(), part); + } + } } - public void m_141981_(Entity p_171716_) { - p_171716_.m_19877_(); - ClientLevel.this.f_104566_.remove(p_171716_); + public void onTrackingEnd(Entity p_171716_) { + p_171716_.unRide(); + ClientLevel.this.players.remove(p_171716_); + + p_171716_.onRemovedFromWorld(); + net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.event.entity.EntityLeaveLevelEvent(p_171716_, ClientLevel.this)); + + if (p_171716_.isMultipartEntity()) { + for (net.minecraftforge.entity.PartEntity part : p_171716_.getParts()) { -+ ClientLevel.this.partEntities.remove(part.m_19879_()); ++ ClientLevel.this.partEntities.remove(part.getId()); + } + } } - public void m_214006_(Entity p_233660_) { + public void onSectionChange(Entity p_233660_) { } + } + @@ -119,7 +119,7 @@ + + @Override + public float getShade(float normalX, float normalY, float normalZ, boolean shade) { -+ boolean constantAmbientLight = this.m_104583_().m_108885_(); ++ boolean constantAmbientLight = this.effects().constantAmbientLight(); + if (!shade) + return constantAmbientLight ? 0.9F : 1.0F; + return net.minecraftforge.client.model.lighting.QuadLighter.calculateShade(normalX, normalY, normalZ, constantAmbientLight); diff --git a/patches/minecraft/net/minecraft/client/multiplayer/ClientPacketListener.java.patch b/patches/minecraft/net/minecraft/client/multiplayer/ClientPacketListener.java.patch index 2ea40bade0..dc38b82d6a 100644 --- a/patches/minecraft/net/minecraft/client/multiplayer/ClientPacketListener.java.patch +++ b/patches/minecraft/net/minecraft/client/multiplayer/ClientPacketListener.java.patch @@ -2,77 +2,77 @@ +++ b/net/minecraft/client/multiplayer/ClientPacketListener.java @@ -386,6 +_,7 @@ - this.f_291812_.f_91064_.m_113434_(); - this.f_291812_.f_91074_.m_172530_(); -+ net.minecraftforge.client.ForgeHooksClient.firePlayerLogin(this.f_291812_.f_91072_, this.f_291812_.f_91074_, this.f_291812_.m_91403_().f_290549_); - this.f_291812_.f_91074_.m_20234_(p_105030_.f_132360_()); - this.f_104889_.m_104739_(this.f_291812_.f_91074_); - this.f_291812_.f_91074_.f_108618_ = new KeyboardInput(this.f_291812_.f_91066_); + this.minecraft.debugRenderer.clear(); + this.minecraft.player.resetPos(); ++ net.minecraftforge.client.ForgeHooksClient.firePlayerLogin(this.minecraft.gameMode, this.minecraft.player, this.minecraft.getConnection().connection); + this.minecraft.player.setId(p_105030_.playerId()); + this.level.addEntity(this.minecraft.player); + this.minecraft.player.input = new KeyboardInput(this.minecraft.options); @@ -1017,7 +_,9 @@ - localplayer1.m_21204_().m_22159_(localplayer.m_21204_()); + localplayer1.getAttributes().assignValues(localplayer.getAttributes()); } + localplayer1.updateSyncFields(localplayer); // Forge: fix MC-10657 - localplayer1.m_172530_(); -+ net.minecraftforge.client.ForgeHooksClient.firePlayerRespawn(this.f_291812_.f_91072_, localplayer, localplayer1, localplayer1.f_108617_.f_290549_); - this.f_104889_.m_104739_(localplayer1); - localplayer1.m_146922_(-180.0F); - localplayer1.f_108618_ = new KeyboardInput(this.f_291812_.f_91066_); + localplayer1.resetPos(); ++ net.minecraftforge.client.ForgeHooksClient.firePlayerRespawn(this.minecraft.gameMode, localplayer, localplayer1, localplayer1.connection.connection); + this.level.addEntity(localplayer1); + localplayer1.setYRot(-180.0F); + localplayer1.input = new KeyboardInput(this.minecraft.options); @@ -1126,10 +_,7 @@ - PacketUtils.m_131363_(p_104976_, this, this.f_291812_); - BlockPos blockpos = p_104976_.m_131704_(); - this.f_291812_.f_91073_.m_141902_(blockpos, p_104976_.m_195645_()).ifPresent((p_205557_) -> { -- CompoundTag compoundtag = p_104976_.m_131708_(); + PacketUtils.ensureRunningOnSameThread(p_104976_, this, this.minecraft); + BlockPos blockpos = p_104976_.getPos(); + this.minecraft.level.getBlockEntity(blockpos, p_104976_.getType()).ifPresent((p_205557_) -> { +- CompoundTag compoundtag = p_104976_.getTag(); - if (compoundtag != null) { -- p_205557_.m_142466_(compoundtag); +- p_205557_.load(compoundtag); - } -+ p_205557_.onDataPacket(f_290549_, p_104976_); ++ p_205557_.onDataPacket(connection, p_104976_); - if (p_205557_ instanceof CommandBlockEntity && this.f_291812_.f_91080_ instanceof CommandBlockEditScreen) { - ((CommandBlockEditScreen)this.f_291812_.f_91080_).m_98398_(); + if (p_205557_ instanceof CommandBlockEntity && this.minecraft.screen instanceof CommandBlockEditScreen) { + ((CommandBlockEditScreen)this.minecraft.screen).updateGui(); @@ -1277,7 +_,9 @@ - public void m_7443_(ClientboundCommandsPacket p_104990_) { - PacketUtils.m_131363_(p_104990_, this, this.f_291812_); -- this.f_104899_ = new CommandDispatcher<>(p_104990_.m_237624_(CommandBuildContext.m_255418_(this.f_104903_, this.f_244039_))); -+ var context = CommandBuildContext.m_255418_(this.f_104903_, this.f_244039_); -+ this.f_104899_ = new CommandDispatcher<>(p_104990_.m_237624_(context)); -+ this.f_104899_ = net.minecraftforge.client.ClientCommandHandler.mergeServerCommands(this.f_104899_, context); + public void handleCommands(ClientboundCommandsPacket p_104990_) { + PacketUtils.ensureRunningOnSameThread(p_104990_, this, this.minecraft); +- this.commands = new CommandDispatcher<>(p_104990_.getRoot(CommandBuildContext.simple(this.registryAccess, this.enabledFeatures))); ++ var context = CommandBuildContext.simple(this.registryAccess, this.enabledFeatures); ++ this.commands = new CommandDispatcher<>(p_104990_.getRoot(context)); ++ this.commands = net.minecraftforge.client.ClientCommandHandler.mergeServerCommands(this.commands, context); } - public void m_7183_(ClientboundStopSoundPacket p_105116_) { + public void handleStopSoundEvent(ClientboundStopSoundPacket p_105116_) { @@ -1296,6 +_,7 @@ - ClientRecipeBook clientrecipebook = this.f_291812_.f_91074_.m_108631_(); - clientrecipebook.m_266394_(this.f_104900_.m_44051_(), this.f_291812_.f_91073_.m_9598_()); - this.f_291812_.m_231374_(SearchRegistry.f_301428_, clientrecipebook.m_90639_()); -+ net.minecraftforge.client.ForgeHooksClient.onRecipesUpdated(this.f_104900_); + ClientRecipeBook clientrecipebook = this.minecraft.player.getRecipeBook(); + clientrecipebook.setupCollections(this.recipeManager.getRecipes(), this.minecraft.level.registryAccess()); + this.minecraft.populateSearchTree(SearchRegistry.RECIPE_COLLECTIONS, clientrecipebook.getCollections()); ++ net.minecraftforge.client.ForgeHooksClient.onRecipesUpdated(this.recipeManager); } - public void m_7244_(ClientboundPlayerLookAtPacket p_105054_) { + public void handleLookAt(ClientboundPlayerLookAtPacket p_105054_) { @@ -1394,7 +_,8 @@ - Blocks.m_50758_(); + Blocks.rebuildCache(); } -- CreativeModeTabs.m_258007_().m_257466_(); -+ CreativeModeTabs.m_257478_().stream().filter(net.minecraft.world.item.CreativeModeTab::hasSearchBar).forEach(net.minecraft.world.item.CreativeModeTab::m_257466_); -+ net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.event.TagsUpdatedEvent(this.f_104903_, true, f_290549_.m_129531_())); +- CreativeModeTabs.searchTab().rebuildSearchTree(); ++ CreativeModeTabs.allTabs().stream().filter(net.minecraft.world.item.CreativeModeTab::hasSearchBar).forEach(net.minecraft.world.item.CreativeModeTab::rebuildSearchTree); ++ net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.event.TagsUpdatedEvent(this.registryAccess, true, connection.isMemoryConnection())); } - public void m_142234_(ClientboundPlayerCombatEndPacket p_171771_) { + public void handlePlayerCombatEnd(ClientboundPlayerCombatEndPacket p_171771_) { @@ -2087,6 +_,8 @@ } - public void m_246175_(String p_249888_) { + public void sendChat(String p_249888_) { + p_249888_ = net.minecraftforge.client.ForgeHooksClient.onClientSendMessage(p_249888_); + if (p_249888_.isEmpty()) return; Instant instant = Instant.now(); - long i = Crypt.SaltSupplier.m_216113_(); - LastSeenMessagesTracker.Update lastseenmessagestracker$update = this.f_244346_.m_246442_(); + long i = Crypt.SaltSupplier.getLong(); + LastSeenMessagesTracker.Update lastseenmessagestracker$update = this.lastSeenMessages.generateAndApplyUpdate(); @@ -2095,6 +_,7 @@ } - public void m_246623_(String p_250092_) { + public void sendCommand(String p_250092_) { + if (net.minecraftforge.client.ClientCommandHandler.runCommand(p_250092_)) return; Instant instant = Instant.now(); - long i = Crypt.SaltSupplier.m_216113_(); - LastSeenMessagesTracker.Update lastseenmessagestracker$update = this.f_244346_.m_246442_(); + long i = Crypt.SaltSupplier.getLong(); + LastSeenMessagesTracker.Update lastseenmessagestracker$update = this.lastSeenMessages.generateAndApplyUpdate(); diff --git a/patches/minecraft/net/minecraft/client/multiplayer/MultiPlayerGameMode.java.patch b/patches/minecraft/net/minecraft/client/multiplayer/MultiPlayerGameMode.java.patch index bef2a37632..77847c043e 100644 --- a/patches/minecraft/net/minecraft/client/multiplayer/MultiPlayerGameMode.java.patch +++ b/patches/minecraft/net/minecraft/client/multiplayer/MultiPlayerGameMode.java.patch @@ -3,52 +3,52 @@ @@ -104,6 +_,7 @@ } - public boolean m_105267_(BlockPos p_105268_) { -+ if (f_105189_.f_91074_.m_21205_().onBlockStartBreak(p_105268_, f_105189_.f_91074_)) return false; - if (this.f_105189_.f_91074_.m_36187_(this.f_105189_.f_91073_, p_105268_, this.f_105197_)) { + public boolean destroyBlock(BlockPos p_105268_) { ++ if (minecraft.player.getMainHandItem().onBlockStartBreak(p_105268_, minecraft.player)) return false; + if (this.minecraft.player.blockActionRestricted(this.minecraft.level, p_105268_, this.localPlayerMode)) { return false; } else { @@ -118,9 +_,8 @@ - } else if (blockstate.m_60795_()) { + } else if (blockstate.isAir()) { return false; } else { -- block.m_5707_(level, p_105268_, blockstate, this.f_105189_.f_91074_); - FluidState fluidstate = level.m_6425_(p_105268_); -- boolean flag = level.m_7731_(p_105268_, fluidstate.m_76188_(), 11); -+ boolean flag = blockstate.onDestroyedByPlayer(level, p_105268_, f_105189_.f_91074_, false, fluidstate); +- block.playerWillDestroy(level, p_105268_, blockstate, this.minecraft.player); + FluidState fluidstate = level.getFluidState(p_105268_); +- boolean flag = level.setBlock(p_105268_, fluidstate.createLegacyBlock(), 11); ++ boolean flag = blockstate.onDestroyedByPlayer(level, p_105268_, minecraft.player, false, fluidstate); if (flag) { - block.m_6786_(level, p_105268_, blockstate); + block.destroy(level, p_105268_, blockstate); } @@ -141,6 +_,7 @@ - BlockState blockstate = this.f_105189_.f_91073_.m_8055_(p_105270_); - this.f_105189_.m_91301_().m_120581_(this.f_105189_.f_91073_, p_105270_, blockstate, 1.0F); - this.m_233729_(this.f_105189_.f_91073_, (p_233757_) -> { -+ if (!net.minecraftforge.common.ForgeHooks.onLeftClickBlock(this.f_105189_.f_91074_, p_105270_, p_105271_, ServerboundPlayerActionPacket.Action.START_DESTROY_BLOCK).isCanceled()) - this.m_105267_(p_105270_); + BlockState blockstate = this.minecraft.level.getBlockState(p_105270_); + this.minecraft.getTutorial().onDestroyBlock(this.minecraft.level, p_105270_, blockstate, 1.0F); + this.startPrediction(this.minecraft.level, (p_233757_) -> { ++ if (!net.minecraftforge.common.ForgeHooks.onLeftClickBlock(this.minecraft.player, p_105270_, p_105271_, ServerboundPlayerActionPacket.Action.START_DESTROY_BLOCK).isCanceled()) + this.destroyBlock(p_105270_); return new ServerboundPlayerActionPacket(ServerboundPlayerActionPacket.Action.START_DESTROY_BLOCK, p_105270_, p_105271_, p_233757_); }); @@ -149,15 +_,19 @@ - if (this.f_105196_) { - this.f_105190_.m_295327_(new ServerboundPlayerActionPacket(ServerboundPlayerActionPacket.Action.ABORT_DESTROY_BLOCK, this.f_105191_, p_105271_)); + if (this.isDestroying) { + this.connection.send(new ServerboundPlayerActionPacket(ServerboundPlayerActionPacket.Action.ABORT_DESTROY_BLOCK, this.destroyBlockPos, p_105271_)); } -+ net.minecraftforge.event.entity.player.PlayerInteractEvent.LeftClickBlock event = net.minecraftforge.common.ForgeHooks.onLeftClickBlock(this.f_105189_.f_91074_, p_105270_, p_105271_, ServerboundPlayerActionPacket.Action.START_DESTROY_BLOCK); ++ net.minecraftforge.event.entity.player.PlayerInteractEvent.LeftClickBlock event = net.minecraftforge.common.ForgeHooks.onLeftClickBlock(this.minecraft.player, p_105270_, p_105271_, ServerboundPlayerActionPacket.Action.START_DESTROY_BLOCK); - BlockState blockstate1 = this.f_105189_.f_91073_.m_8055_(p_105270_); - this.f_105189_.m_91301_().m_120581_(this.f_105189_.f_91073_, p_105270_, blockstate1, 0.0F); - this.m_233729_(this.f_105189_.f_91073_, (p_233728_) -> { - boolean flag = !blockstate1.m_60795_(); - if (flag && this.f_105193_ == 0.0F) { + BlockState blockstate1 = this.minecraft.level.getBlockState(p_105270_); + this.minecraft.getTutorial().onDestroyBlock(this.minecraft.level, p_105270_, blockstate1, 0.0F); + this.startPrediction(this.minecraft.level, (p_233728_) -> { + boolean flag = !blockstate1.isAir(); + if (flag && this.destroyProgress == 0.0F) { + if (event.getUseBlock() != net.minecraftforge.eventbus.api.Event.Result.DENY) - blockstate1.m_60686_(this.f_105189_.f_91073_, p_105270_, this.f_105189_.f_91074_); + blockstate1.attack(this.minecraft.level, p_105270_, this.minecraft.player); } + ServerboundPlayerActionPacket packet = new ServerboundPlayerActionPacket(ServerboundPlayerActionPacket.Action.START_DESTROY_BLOCK, p_105270_, p_105271_, p_233728_); + if (event.getUseItem() == net.minecraftforge.eventbus.api.Event.Result.DENY) return packet; - if (flag && blockstate1.m_60625_(this.f_105189_.f_91074_, this.f_105189_.f_91074_.m_9236_(), p_105270_) >= 1.0F) { - this.m_105267_(p_105270_); + if (flag && blockstate1.getDestroyProgress(this.minecraft.player, this.minecraft.player.level(), p_105270_) >= 1.0F) { + this.destroyBlock(p_105270_); } else { @@ -169,7 +_,7 @@ - this.f_105189_.f_91073_.m_6801_(this.f_105189_.f_91074_.m_19879_(), this.f_105191_, this.m_287167_()); + this.minecraft.level.destroyBlockProgress(this.minecraft.player.getId(), this.destroyBlockPos, this.getDestroyStage()); } - return new ServerboundPlayerActionPacket(ServerboundPlayerActionPacket.Action.START_DESTROY_BLOCK, p_105270_, p_105271_, p_233728_); @@ -57,58 +57,58 @@ } @@ -200,6 +_,7 @@ - BlockState blockstate1 = this.f_105189_.f_91073_.m_8055_(p_105284_); - this.f_105189_.m_91301_().m_120581_(this.f_105189_.f_91073_, p_105284_, blockstate1, 1.0F); - this.m_233729_(this.f_105189_.f_91073_, (p_233753_) -> { -+ if (!net.minecraftforge.common.ForgeHooks.onLeftClickBlock(this.f_105189_.f_91074_, p_105284_, p_105285_, ServerboundPlayerActionPacket.Action.START_DESTROY_BLOCK).isCanceled()) - this.m_105267_(p_105284_); + BlockState blockstate1 = this.minecraft.level.getBlockState(p_105284_); + this.minecraft.getTutorial().onDestroyBlock(this.minecraft.level, p_105284_, blockstate1, 1.0F); + this.startPrediction(this.minecraft.level, (p_233753_) -> { ++ if (!net.minecraftforge.common.ForgeHooks.onLeftClickBlock(this.minecraft.player, p_105284_, p_105285_, ServerboundPlayerActionPacket.Action.START_DESTROY_BLOCK).isCanceled()) + this.destroyBlock(p_105284_); return new ServerboundPlayerActionPacket(ServerboundPlayerActionPacket.Action.START_DESTROY_BLOCK, p_105284_, p_105285_, p_233753_); }); @@ -212,12 +_,13 @@ } else { - this.f_105193_ += blockstate.m_60625_(this.f_105189_.f_91074_, this.f_105189_.f_91074_.m_9236_(), p_105284_); - if (this.f_105194_ % 4.0F == 0.0F) { -- SoundType soundtype = blockstate.m_60827_(); -+ SoundType soundtype = blockstate.getSoundType(this.f_105189_.f_91073_, p_105284_, this.f_105189_.f_91074_); - this.f_105189_.m_91106_().m_120367_(new SimpleSoundInstance(soundtype.m_56778_(), SoundSource.BLOCKS, (soundtype.m_56773_() + 1.0F) / 8.0F, soundtype.m_56774_() * 0.5F, SoundInstance.m_235150_(), p_105284_)); + this.destroyProgress += blockstate.getDestroyProgress(this.minecraft.player, this.minecraft.player.level(), p_105284_); + if (this.destroyTicks % 4.0F == 0.0F) { +- SoundType soundtype = blockstate.getSoundType(); ++ SoundType soundtype = blockstate.getSoundType(this.minecraft.level, p_105284_, this.minecraft.player); + this.minecraft.getSoundManager().play(new SimpleSoundInstance(soundtype.getHitSound(), SoundSource.BLOCKS, (soundtype.getVolume() + 1.0F) / 8.0F, soundtype.getPitch() * 0.5F, SoundInstance.createUnseededRandom(), p_105284_)); } - ++this.f_105194_; - this.f_105189_.m_91301_().m_120581_(this.f_105189_.f_91073_, p_105284_, blockstate, Mth.m_14036_(this.f_105193_, 0.0F, 1.0F)); -+ if (net.minecraftforge.common.ForgeHooks.onClientMineHold(this.f_105189_.f_91074_, p_105284_, p_105285_).getUseItem() == net.minecraftforge.eventbus.api.Event.Result.DENY) return true; - if (this.f_105193_ >= 1.0F) { - this.f_105196_ = false; - this.m_233729_(this.f_105189_.f_91073_, (p_233739_) -> { + ++this.destroyTicks; + this.minecraft.getTutorial().onDestroyBlock(this.minecraft.level, p_105284_, blockstate, Mth.clamp(this.destroyProgress, 0.0F, 1.0F)); ++ if (net.minecraftforge.common.ForgeHooks.onClientMineHold(this.minecraft.player, p_105284_, p_105285_).getUseItem() == net.minecraftforge.eventbus.api.Event.Result.DENY) return true; + if (this.destroyProgress >= 1.0F) { + this.isDestroying = false; + this.startPrediction(this.minecraft.level, (p_233739_) -> { @@ -247,7 +_,7 @@ } - public float m_105286_() { -- return this.f_105197_.m_46408_() ? 5.0F : 4.5F; -+ return (float) this.f_105189_.f_91074_.getBlockReach(); + public float getPickRange() { +- return this.localPlayerMode.isCreative() ? 5.0F : 4.5F; ++ return (float) this.minecraft.player.getBlockReach(); } - public void m_105287_() { + public void tick() { @@ -262,7 +_,7 @@ - private boolean m_105281_(BlockPos p_105282_) { - ItemStack itemstack = this.f_105189_.f_91074_.m_21205_(); -- return p_105282_.equals(this.f_105191_) && ItemStack.m_150942_(itemstack, this.f_105192_); -+ return p_105282_.equals(this.f_105191_) && ItemStack.m_150942_(itemstack, this.f_105192_) && !f_105192_.shouldCauseBlockBreakReset(itemstack); + private boolean sameDestroyTarget(BlockPos p_105282_) { + ItemStack itemstack = this.minecraft.player.getMainHandItem(); +- return p_105282_.equals(this.destroyBlockPos) && ItemStack.isSameItemSameTags(itemstack, this.destroyingItem); ++ return p_105282_.equals(this.destroyBlockPos) && ItemStack.isSameItemSameTags(itemstack, this.destroyingItem) && !destroyingItem.shouldCauseBlockBreakReset(itemstack); } - private void m_105297_() { + private void ensureHasSentCarriedItem() { @@ -291,25 +_,38 @@ - private InteractionResult m_233746_(LocalPlayer p_233747_, InteractionHand p_233748_, BlockHitResult p_233749_) { - BlockPos blockpos = p_233749_.m_82425_(); - ItemStack itemstack = p_233747_.m_21120_(p_233748_); + private InteractionResult performUseItemOn(LocalPlayer p_233747_, InteractionHand p_233748_, BlockHitResult p_233749_) { + BlockPos blockpos = p_233749_.getBlockPos(); + ItemStack itemstack = p_233747_.getItemInHand(p_233748_); + net.minecraftforge.event.entity.player.PlayerInteractEvent.RightClickBlock event = net.minecraftforge.common.ForgeHooks.onRightClickBlock(p_233747_, p_233748_, blockpos, p_233749_); + if (event.isCanceled()) { + return event.getCancellationResult(); + } - if (this.f_105197_ == GameType.SPECTATOR) { + if (this.localPlayerMode == GameType.SPECTATOR) { return InteractionResult.SUCCESS; } else { -- boolean flag = !p_233747_.m_21205_().m_41619_() || !p_233747_.m_21206_().m_41619_(); +- boolean flag = !p_233747_.getMainHandItem().isEmpty() || !p_233747_.getOffhandItem().isEmpty(); + UseOnContext useoncontext = new UseOnContext(p_233747_, p_233748_, p_233749_); + if (event.getUseItem() != net.minecraftforge.eventbus.api.Event.Result.DENY) { + InteractionResult result = itemstack.onItemUseFirst(useoncontext); @@ -116,30 +116,30 @@ + return result; + } + } -+ boolean flag = !p_233747_.m_21205_().doesSneakBypassUse(p_233747_.m_9236_(), blockpos, p_233747_) || !p_233747_.m_21206_().doesSneakBypassUse(p_233747_.m_9236_(), blockpos, p_233747_); - boolean flag1 = p_233747_.m_36341_() && flag; ++ boolean flag = !p_233747_.getMainHandItem().doesSneakBypassUse(p_233747_.level(), blockpos, p_233747_) || !p_233747_.getOffhandItem().doesSneakBypassUse(p_233747_.level(), blockpos, p_233747_); + boolean flag1 = p_233747_.isSecondaryUseActive() && flag; - if (!flag1) { - BlockState blockstate = this.f_105189_.f_91073_.m_8055_(blockpos); - if (!this.f_105190_.m_246351_(blockstate.m_60734_().m_245183_())) { + BlockState blockstate = this.minecraft.level.getBlockState(blockpos); + if (!this.connection.isFeatureEnabled(blockstate.getBlock().requiredFeatures())) { return InteractionResult.FAIL; } + if (event.getUseBlock() == net.minecraftforge.eventbus.api.Event.Result.ALLOW || (event.getUseBlock() != net.minecraftforge.eventbus.api.Event.Result.DENY && !flag1)) { - InteractionResult interactionresult = blockstate.m_60664_(this.f_105189_.f_91073_, p_233747_, p_233748_, p_233749_); - if (interactionresult.m_19077_()) { + InteractionResult interactionresult = blockstate.use(this.minecraft.level, p_233747_, p_233748_, p_233749_); + if (interactionresult.consumesAction()) { return interactionresult; } } -- if (!itemstack.m_41619_() && !p_233747_.m_36335_().m_41519_(itemstack.m_41720_())) { +- if (!itemstack.isEmpty() && !p_233747_.getCooldowns().isOnCooldown(itemstack.getItem())) { - UseOnContext useoncontext = new UseOnContext(p_233747_, p_233748_, p_233749_); + if (event.getUseItem() == net.minecraftforge.eventbus.api.Event.Result.DENY) { + return InteractionResult.PASS; + } -+ if (event.getUseItem() == net.minecraftforge.eventbus.api.Event.Result.ALLOW || (!itemstack.m_41619_() && !p_233747_.m_36335_().m_41519_(itemstack.m_41720_()))) { ++ if (event.getUseItem() == net.minecraftforge.eventbus.api.Event.Result.ALLOW || (!itemstack.isEmpty() && !p_233747_.getCooldowns().isOnCooldown(itemstack.getItem()))) { InteractionResult interactionresult1; - if (this.f_105197_.m_46408_()) { - int i = itemstack.m_41613_(); + if (this.localPlayerMode.isCreative()) { + int i = itemstack.getCount(); @@ -340,10 +_,17 @@ mutableobject.setValue(InteractionResult.PASS); return serverbounduseitempacket; @@ -149,22 +149,22 @@ + mutableobject.setValue(cancelResult); + return serverbounduseitempacket; + } - InteractionResultHolder interactionresultholder = itemstack.m_41682_(this.f_105189_.f_91073_, p_233722_, p_233723_); - ItemStack itemstack1 = interactionresultholder.m_19095_(); + InteractionResultHolder interactionresultholder = itemstack.use(this.minecraft.level, p_233722_, p_233723_); + ItemStack itemstack1 = interactionresultholder.getObject(); if (itemstack1 != itemstack) { - p_233722_.m_21008_(p_233723_, itemstack1); -+ if (itemstack1.m_41619_()) + p_233722_.setItemInHand(p_233723_, itemstack1); ++ if (itemstack1.isEmpty()) + net.minecraftforge.event.ForgeEventFactory.onPlayerDestroyItem(p_233722_, itemstack, p_233723_); } - mutableobject.setValue(interactionresultholder.m_19089_()); + mutableobject.setValue(interactionresultholder.getResult()); @@ -382,6 +_,9 @@ - this.m_105297_(); - Vec3 vec3 = p_105233_.m_82450_().m_82492_(p_105232_.m_20185_(), p_105232_.m_20186_(), p_105232_.m_20189_()); - this.f_105190_.m_295327_(ServerboundInteractPacket.m_179612_(p_105232_, p_105231_.m_6144_(), p_105234_, vec3)); -+ if (this.f_105197_ == GameType.SPECTATOR) return InteractionResult.PASS; // don't fire for spectators to match non-specific EntityInteract + this.ensureHasSentCarriedItem(); + Vec3 vec3 = p_105233_.getLocation().subtract(p_105232_.getX(), p_105232_.getY(), p_105232_.getZ()); + this.connection.send(ServerboundInteractPacket.createInteractionPacket(p_105232_, p_105231_.isShiftKeyDown(), p_105234_, vec3)); ++ if (this.localPlayerMode == GameType.SPECTATOR) return InteractionResult.PASS; // don't fire for spectators to match non-specific EntityInteract + InteractionResult cancelResult = net.minecraftforge.common.ForgeHooks.onInteractEntityAt(p_105231_, p_105232_, p_105233_, p_105234_); + if(cancelResult != null) return cancelResult; - return this.f_105197_ == GameType.SPECTATOR ? InteractionResult.PASS : p_105232_.m_7111_(p_105231_, vec3, p_105234_); + return this.localPlayerMode == GameType.SPECTATOR ? InteractionResult.PASS : p_105232_.interactAt(p_105231_, vec3, p_105234_); } diff --git a/patches/minecraft/net/minecraft/client/multiplayer/PlayerInfo.java.patch b/patches/minecraft/net/minecraft/client/multiplayer/PlayerInfo.java.patch index 0e06890919..ff5a3676bf 100644 --- a/patches/minecraft/net/minecraft/client/multiplayer/PlayerInfo.java.patch +++ b/patches/minecraft/net/minecraft/client/multiplayer/PlayerInfo.java.patch @@ -3,8 +3,8 @@ @@ -89,6 +_,7 @@ } - protected void m_105317_(GameType p_105318_) { -+ net.minecraftforge.client.ForgeHooksClient.onClientChangeGameType(this, this.f_105300_, p_105318_); - this.f_105300_ = p_105318_; + protected void setGameMode(GameType p_105318_) { ++ net.minecraftforge.client.ForgeHooksClient.onClientChangeGameType(this, this.gameMode, p_105318_); + this.gameMode = p_105318_; } diff --git a/patches/minecraft/net/minecraft/client/multiplayer/ServerData.java.patch b/patches/minecraft/net/minecraft/client/multiplayer/ServerData.java.patch index b489830aee..c8610770e5 100644 --- a/patches/minecraft/net/minecraft/client/multiplayer/ServerData.java.patch +++ b/patches/minecraft/net/minecraft/client/multiplayer/ServerData.java.patch @@ -1,10 +1,10 @@ --- a/net/minecraft/client/multiplayer/ServerData.java +++ b/net/minecraft/client/multiplayer/ServerData.java @@ -32,6 +_,7 @@ - private byte[] f_271511_; - private ServerData.Type f_291831_; - private boolean f_242950_; + private byte[] iconBytes; + private ServerData.Type type; + private boolean enforcesSecureChat; + public net.minecraftforge.client.ExtendedServerListData forgeData = null; public ServerData(String p_105375_, String p_105376_, ServerData.Type p_297678_) { - this.f_105362_ = p_105375_; + this.name = p_105375_; diff --git a/patches/minecraft/net/minecraft/client/multiplayer/ServerStatusPinger.java.patch b/patches/minecraft/net/minecraft/client/multiplayer/ServerStatusPinger.java.patch index 54171431c1..f944a3ecd5 100644 --- a/patches/minecraft/net/minecraft/client/multiplayer/ServerStatusPinger.java.patch +++ b/patches/minecraft/net/minecraft/client/multiplayer/ServerStatusPinger.java.patch @@ -5,6 +5,6 @@ }); + net.minecraftforge.client.ForgeHooksClient.processForgeListPingData(serverstatus, p_105460_); - this.f_105477_ = Util.m_137550_(); - connection.m_129512_(new ServerboundPingRequestPacket(this.f_105477_)); - this.f_105475_ = true; + this.pingStart = Util.getMillis(); + connection.send(new ServerboundPingRequestPacket(this.pingStart)); + this.success = true; diff --git a/patches/minecraft/net/minecraft/client/multiplayer/chat/ChatListener.java.patch b/patches/minecraft/net/minecraft/client/multiplayer/chat/ChatListener.java.patch index fc3ccac956..ccf0c86b17 100644 --- a/patches/minecraft/net/minecraft/client/multiplayer/chat/ChatListener.java.patch +++ b/patches/minecraft/net/minecraft/client/multiplayer/chat/ChatListener.java.patch @@ -2,40 +2,40 @@ +++ b/net/minecraft/client/multiplayer/chat/ChatListener.java @@ -119,7 +_,9 @@ Instant instant = Instant.now(); - this.m_246163_((MessageSignature)null, () -> { - Component component = p_251256_.m_240977_(p_250375_); -- this.f_240348_.f_91065_.m_93076_().m_93785_(component); -+ Component forgeComponent = net.minecraftforge.client.ForgeHooksClient.onClientChat(p_251256_, component, Util.f_137441_); + this.handleMessage((MessageSignature)null, () -> { + Component component = p_251256_.decorate(p_250375_); +- this.minecraft.gui.getChat().addMessage(component); ++ Component forgeComponent = net.minecraftforge.client.ForgeHooksClient.onClientChat(p_251256_, component, Util.NIL_UUID); + if (forgeComponent == null) return false; -+ this.f_240348_.f_91065_.m_93076_().m_93785_(forgeComponent); - this.m_241119_(p_251256_, p_250375_); - this.m_240498_(component, instant); - this.f_240659_ = Util.m_137550_(); ++ this.minecraft.gui.getChat().addMessage(forgeComponent); + this.narrateChatMessage(p_251256_, p_250375_); + this.logSystemMessage(component, instant); + this.previousMessageTime = Util.getMillis(); @@ -136,12 +_,16 @@ - MessageSignature messagesignature = p_249430_.f_244279_(); - FilterMask filtermask = p_249430_.f_242992_(); - if (filtermask.m_243095_()) { -- this.f_240348_.f_91065_.m_93076_().m_240964_(p_249231_, messagesignature, guimessagetag); -+ Component forgeComponent = net.minecraftforge.client.ForgeHooksClient.onClientPlayerChat(p_251766_, p_249231_, p_249430_, p_249430_.m_245167_()); + MessageSignature messagesignature = p_249430_.signature(); + FilterMask filtermask = p_249430_.filterMask(); + if (filtermask.isEmpty()) { +- this.minecraft.gui.getChat().addMessage(p_249231_, messagesignature, guimessagetag); ++ Component forgeComponent = net.minecraftforge.client.ForgeHooksClient.onClientPlayerChat(p_251766_, p_249231_, p_249430_, p_249430_.sender()); + if (forgeComponent == null) return false; -+ this.f_240348_.f_91065_.m_93076_().m_240964_(forgeComponent, messagesignature, guimessagetag); - this.m_241119_(p_251766_, p_249430_.m_245692_()); ++ this.minecraft.gui.getChat().addMessage(forgeComponent, messagesignature, guimessagetag); + this.narrateChatMessage(p_251766_, p_249430_.decoratedContent()); } else { - Component component = filtermask.m_246134_(p_249430_.m_245728_()); + Component component = filtermask.applyWithFormatting(p_249430_.signedContent()); if (component != null) { -- this.f_240348_.f_91065_.m_93076_().m_240964_(p_251766_.m_240977_(component), messagesignature, guimessagetag); -+ Component forgeComponent = net.minecraftforge.client.ForgeHooksClient.onClientPlayerChat(p_251766_, p_251766_.m_240977_(component), p_249430_, p_249430_.m_245167_()); +- this.minecraft.gui.getChat().addMessage(p_251766_.decorate(component), messagesignature, guimessagetag); ++ Component forgeComponent = net.minecraftforge.client.ForgeHooksClient.onClientPlayerChat(p_251766_, p_251766_.decorate(component), p_249430_, p_249430_.sender()); + if (forgeComponent == null) return false; -+ this.f_240348_.f_91065_.m_93076_().m_240964_(forgeComponent, messagesignature, guimessagetag); - this.m_241119_(p_251766_, component); ++ this.minecraft.gui.getChat().addMessage(forgeComponent, messagesignature, guimessagetag); + this.narrateChatMessage(p_251766_, component); } } @@ -174,6 +_,8 @@ - public void m_240494_(Component p_240522_, boolean p_240642_) { - if (!this.f_240348_.f_91066_.m_231833_().m_231551_() || !this.f_240348_.m_91246_(this.m_240473_(p_240522_))) { + public void handleSystemMessage(Component p_240522_, boolean p_240642_) { + if (!this.minecraft.options.hideMatchedNames().get() || !this.minecraft.isBlocked(this.guessChatUUID(p_240522_))) { + p_240522_ = net.minecraftforge.client.ForgeHooksClient.onClientSystemChat(p_240522_, p_240642_); + if (p_240522_ == null) return; if (p_240642_) { - this.f_240348_.f_91065_.m_93063_(p_240522_, false); + this.minecraft.gui.setOverlayMessage(p_240522_, false); } else { diff --git a/patches/minecraft/net/minecraft/client/multiplayer/resolver/AddressCheck.java.patch b/patches/minecraft/net/minecraft/client/multiplayer/resolver/AddressCheck.java.patch index 9e8650204c..4071d19c54 100644 --- a/patches/minecraft/net/minecraft/client/multiplayer/resolver/AddressCheck.java.patch +++ b/patches/minecraft/net/minecraft/client/multiplayer/resolver/AddressCheck.java.patch @@ -1,11 +1,11 @@ --- a/net/minecraft/client/multiplayer/resolver/AddressCheck.java +++ b/net/minecraft/client/multiplayer/resolver/AddressCheck.java @@ -16,7 +_,7 @@ - boolean m_142408_(ServerAddress p_171830_); + boolean isAllowed(ServerAddress p_171830_); - static AddressCheck m_171828_() { + static AddressCheck createFromService() { - final ImmutableList> immutablelist = Streams.stream(ServiceLoader.load(BlockListSupplier.class)).map(BlockListSupplier::createBlockList).filter(Objects::nonNull).collect(ImmutableList.toImmutableList()); + final ImmutableList> immutablelist = Streams.stream(ServiceLoader.load(BlockListSupplier.class, net.minecraftforge.fml.loading.FMLLoader.class.getClassLoader())).map(BlockListSupplier::createBlockList).filter(Objects::nonNull).collect(ImmutableList.toImmutableList()); return new AddressCheck() { - public boolean m_142649_(ResolvedServerAddress p_171835_) { - String s = p_171835_.m_142727_(); + public boolean isAllowed(ResolvedServerAddress p_171835_) { + String s = p_171835_.getHostName(); diff --git a/patches/minecraft/net/minecraft/client/particle/BreakingItemParticle.java.patch b/patches/minecraft/net/minecraft/client/particle/BreakingItemParticle.java.patch index 38322a0173..bf9bb99bb0 100644 --- a/patches/minecraft/net/minecraft/client/particle/BreakingItemParticle.java.patch +++ b/patches/minecraft/net/minecraft/client/particle/BreakingItemParticle.java.patch @@ -4,9 +4,9 @@ protected BreakingItemParticle(ClientLevel p_105665_, double p_105666_, double p_105667_, double p_105668_, ItemStack p_105669_) { super(p_105665_, p_105666_, p_105667_, p_105668_, 0.0D, 0.0D, 0.0D); -- this.m_108337_(Minecraft.m_91087_().m_91291_().m_174264_(p_105669_, p_105665_, (LivingEntity)null, 0).m_6160_()); -+ var model = Minecraft.m_91087_().m_91291_().m_174264_(p_105669_, p_105665_, (LivingEntity)null, 0); -+ this.m_108337_(model.m_7343_().m_173464_(model, p_105669_, p_105665_, null, 0).getParticleIcon(net.minecraftforge.client.model.data.ModelData.EMPTY)); - this.f_107226_ = 1.0F; - this.f_107663_ /= 2.0F; - this.f_105643_ = this.f_107223_.m_188501_() * 3.0F; +- this.setSprite(Minecraft.getInstance().getItemRenderer().getModel(p_105669_, p_105665_, (LivingEntity)null, 0).getParticleIcon()); ++ var model = Minecraft.getInstance().getItemRenderer().getModel(p_105669_, p_105665_, (LivingEntity)null, 0); ++ this.setSprite(model.getOverrides().resolve(model, p_105669_, p_105665_, null, 0).getParticleIcon(net.minecraftforge.client.model.data.ModelData.EMPTY)); + this.gravity = 1.0F; + this.quadSize /= 2.0F; + this.uo = this.random.nextFloat() * 3.0F; diff --git a/patches/minecraft/net/minecraft/client/particle/EnchantmentTableParticle.java.patch b/patches/minecraft/net/minecraft/client/particle/EnchantmentTableParticle.java.patch index 4411a6cfd6..3b544f4de4 100644 --- a/patches/minecraft/net/minecraft/client/particle/EnchantmentTableParticle.java.patch +++ b/patches/minecraft/net/minecraft/client/particle/EnchantmentTableParticle.java.patch @@ -1,10 +1,10 @@ --- a/net/minecraft/client/particle/EnchantmentTableParticle.java +++ b/net/minecraft/client/particle/EnchantmentTableParticle.java @@ -73,6 +_,7 @@ - this.f_107212_ = this.f_106461_ + this.f_107215_ * (double)f; - this.f_107213_ = this.f_106462_ + this.f_107216_ * (double)f - (double)(f1 * 1.2F); - this.f_107214_ = this.f_106460_ + this.f_107217_ * (double)f; -+ this.m_107264_(this.f_107212_, this.f_107213_, this.f_107214_); // FORGE: update the particle's bounding box + this.x = this.xStart + this.xd * (double)f; + this.y = this.yStart + this.yd * (double)f - (double)(f1 * 1.2F); + this.z = this.zStart + this.zd * (double)f; ++ this.setPos(this.x, this.y, this.z); // FORGE: update the particle's bounding box } } diff --git a/patches/minecraft/net/minecraft/client/particle/FireworkParticles.java.patch b/patches/minecraft/net/minecraft/client/particle/FireworkParticles.java.patch index d74527cb50..ab8e661bec 100644 --- a/patches/minecraft/net/minecraft/client/particle/FireworkParticles.java.patch +++ b/patches/minecraft/net/minecraft/client/particle/FireworkParticles.java.patch @@ -2,24 +2,24 @@ +++ b/net/minecraft/client/particle/FireworkParticles.java @@ -172,7 +_,7 @@ } else { - for(int i = 0; i < this.f_106752_.size(); ++i) { - CompoundTag compoundtag = this.f_106752_.m_128728_(i); -- if (FireworkRocketItem.Shape.m_41237_(compoundtag.m_128445_("Type")) == FireworkRocketItem.Shape.LARGE_BALL) { + for(int i = 0; i < this.explosions.size(); ++i) { + CompoundTag compoundtag = this.explosions.getCompound(i); +- if (FireworkRocketItem.Shape.byId(compoundtag.getByte("Type")) == FireworkRocketItem.Shape.LARGE_BALL) { + if (FireworkRocketItem.Shape.getShape(compoundtag) == FireworkRocketItem.Shape.LARGE_BALL) { flag1 = true; break; } @@ -192,7 +_,7 @@ - if (this.f_106754_ % 2 == 0 && this.f_106752_ != null && this.f_106754_ / 2 < this.f_106752_.size()) { - int k = this.f_106754_ / 2; - CompoundTag compoundtag1 = this.f_106752_.m_128728_(k); -- FireworkRocketItem.Shape fireworkrocketitem$shape = FireworkRocketItem.Shape.m_41237_(compoundtag1.m_128445_("Type")); + if (this.life % 2 == 0 && this.explosions != null && this.life / 2 < this.explosions.size()) { + int k = this.life / 2; + CompoundTag compoundtag1 = this.explosions.getCompound(k); +- FireworkRocketItem.Shape fireworkrocketitem$shape = FireworkRocketItem.Shape.byId(compoundtag1.getByte("Type")); + FireworkRocketItem.Shape fireworkrocketitem$shape = FireworkRocketItem.Shape.getShape(compoundtag1); - boolean flag4 = compoundtag1.m_128471_("Trail"); - boolean flag2 = compoundtag1.m_128471_("Flicker"); - int[] aint = compoundtag1.m_128465_("Colors"); + boolean flag4 = compoundtag1.getBoolean("Trail"); + boolean flag2 = compoundtag1.getBoolean("Flicker"); + int[] aint = compoundtag1.getIntArray("Colors"); @@ -201,6 +_,10 @@ - aint = new int[]{DyeColor.BLACK.m_41070_()}; + aint = new int[]{DyeColor.BLACK.getFireworkColor()}; } + var factory = net.minecraftforge.client.FireworkShapeFactoryRegistry.get(fireworkrocketitem$shape); diff --git a/patches/minecraft/net/minecraft/client/particle/Particle.java.patch b/patches/minecraft/net/minecraft/client/particle/Particle.java.patch index d6c7b2c8cb..14ac803347 100644 --- a/patches/minecraft/net/minecraft/client/particle/Particle.java.patch +++ b/patches/minecraft/net/minecraft/client/particle/Particle.java.patch @@ -1,7 +1,7 @@ --- a/net/minecraft/client/particle/Particle.java +++ b/net/minecraft/client/particle/Particle.java @@ -226,4 +_,16 @@ - public Optional m_142654_() { + public Optional getParticleGroup() { return Optional.empty(); } + @@ -14,6 +14,6 @@ + } + + public net.minecraft.world.phys.Vec3 getPos() { -+ return new net.minecraft.world.phys.Vec3(this.f_107212_, this.f_107213_, this.f_107214_); ++ return new net.minecraft.world.phys.Vec3(this.x, this.y, this.z); + } } diff --git a/patches/minecraft/net/minecraft/client/particle/ParticleEngine.java.patch b/patches/minecraft/net/minecraft/client/particle/ParticleEngine.java.patch index a4fa28939b..85611273d1 100644 --- a/patches/minecraft/net/minecraft/client/particle/ParticleEngine.java.patch +++ b/patches/minecraft/net/minecraft/client/particle/ParticleEngine.java.patch @@ -1,34 +1,34 @@ --- a/net/minecraft/client/particle/ParticleEngine.java +++ b/net/minecraft/client/particle/ParticleEngine.java @@ -74,11 +_,11 @@ - private static final int f_172264_ = 16384; - private static final List f_107288_ = ImmutableList.of(ParticleRenderType.f_107429_, ParticleRenderType.f_107430_, ParticleRenderType.f_107432_, ParticleRenderType.f_107431_, ParticleRenderType.f_107433_); - protected ClientLevel f_107287_; -- private final Map> f_107289_ = Maps.newIdentityHashMap(); -+ private final Map> f_107289_ = Maps.newTreeMap(net.minecraftforge.client.ForgeHooksClient.makeParticleRenderTypeComparator(f_107288_)); - private final Queue f_107290_ = Queues.newArrayDeque(); - private final TextureManager f_107291_; - private final RandomSource f_107292_ = RandomSource.m_216327_(); -- private final Int2ObjectMap> f_107293_ = new Int2ObjectOpenHashMap<>(); -+ private final Map> f_107293_ = new java.util.HashMap<>(); - private final Queue f_107294_ = Queues.newArrayDeque(); - private final Map f_107295_ = Maps.newHashMap(); - private final TextureAtlas f_107296_; + private static final int MAX_PARTICLES_PER_LAYER = 16384; + private static final List RENDER_ORDER = ImmutableList.of(ParticleRenderType.TERRAIN_SHEET, ParticleRenderType.PARTICLE_SHEET_OPAQUE, ParticleRenderType.PARTICLE_SHEET_LIT, ParticleRenderType.PARTICLE_SHEET_TRANSLUCENT, ParticleRenderType.CUSTOM); + protected ClientLevel level; +- private final Map> particles = Maps.newIdentityHashMap(); ++ private final Map> particles = Maps.newTreeMap(net.minecraftforge.client.ForgeHooksClient.makeParticleRenderTypeComparator(RENDER_ORDER)); + private final Queue trackingEmitters = Queues.newArrayDeque(); + private final TextureManager textureManager; + private final RandomSource random = RandomSource.create(); +- private final Int2ObjectMap> providers = new Int2ObjectOpenHashMap<>(); ++ private final Map> providers = new java.util.HashMap<>(); + private final Queue particlesToAdd = Queues.newArrayDeque(); + private final Map spriteSets = Maps.newHashMap(); + private final TextureAtlas textureAtlas; @@ -194,10 +_,14 @@ - this.m_107378_(ParticleTypes.f_276512_, SuspendedTownParticle.EggCrackProvider::new); + this.register(ParticleTypes.EGG_CRACK, SuspendedTownParticle.EggCrackProvider::new); } + /** @deprecated Register via {@link net.minecraftforge.client.event.RegisterParticleProvidersEvent} */ + @Deprecated - public void m_107381_(ParticleType p_107382_, ParticleProvider p_107383_) { -- this.f_107293_.put(BuiltInRegistries.f_257034_.m_7447_(p_107382_), p_107383_); -+ this.f_107293_.put(BuiltInRegistries.f_257034_.m_7981_(p_107382_), p_107383_); + public void register(ParticleType p_107382_, ParticleProvider p_107383_) { +- this.providers.put(BuiltInRegistries.PARTICLE_TYPE.getId(p_107382_), p_107383_); ++ this.providers.put(BuiltInRegistries.PARTICLE_TYPE.getKey(p_107382_), p_107383_); } + /** @deprecated Register via {@link net.minecraftforge.client.event.RegisterParticleProvidersEvent} */ + @Deprecated - public void m_272137_(ParticleType p_273423_, ParticleProvider.Sprite p_273134_) { - this.m_107378_(p_273423_, (p_272320_) -> { + public void register(ParticleType p_273423_, ParticleProvider.Sprite p_273134_) { + this.register(p_273423_, (p_272320_) -> { return (p_272323_, p_272324_, p_272325_, p_272326_, p_272327_, p_272328_, p_272329_, p_272330_) -> { @@ -211,10 +_,12 @@ }); @@ -36,21 +36,21 @@ + /** @deprecated Register via {@link net.minecraftforge.client.event.RegisterParticleProvidersEvent} */ + @Deprecated - public void m_107378_(ParticleType p_107379_, ParticleEngine.SpriteParticleRegistration p_107380_) { + public void register(ParticleType p_107379_, ParticleEngine.SpriteParticleRegistration p_107380_) { ParticleEngine.MutableSpriteSet particleengine$mutablespriteset = new ParticleEngine.MutableSpriteSet(); - this.f_107295_.put(BuiltInRegistries.f_257034_.m_7981_(p_107379_), particleengine$mutablespriteset); -- this.f_107293_.put(BuiltInRegistries.f_257034_.m_7447_(p_107379_), p_107380_.m_107419_(particleengine$mutablespriteset)); -+ this.f_107293_.put(BuiltInRegistries.f_257034_.m_7981_(p_107379_), p_107380_.m_107419_(particleengine$mutablespriteset)); + this.spriteSets.put(BuiltInRegistries.PARTICLE_TYPE.getKey(p_107379_), particleengine$mutablespriteset); +- this.providers.put(BuiltInRegistries.PARTICLE_TYPE.getId(p_107379_), p_107380_.create(particleengine$mutablespriteset)); ++ this.providers.put(BuiltInRegistries.PARTICLE_TYPE.getKey(p_107379_), p_107380_.create(particleengine$mutablespriteset)); } - public CompletableFuture m_5540_(PreparableReloadListener.PreparationBarrier p_107305_, ResourceManager p_107306_, ProfilerFiller p_107307_, ProfilerFiller p_107308_, Executor p_107309_, Executor p_107310_) { + public CompletableFuture reload(PreparableReloadListener.PreparationBarrier p_107305_, ResourceManager p_107306_, ProfilerFiller p_107307_, ProfilerFiller p_107308_, Executor p_107309_, Executor p_107310_) { @@ -313,7 +_,7 @@ @Nullable - private Particle m_107395_(T p_107396_, double p_107397_, double p_107398_, double p_107399_, double p_107400_, double p_107401_, double p_107402_) { -- ParticleProvider particleprovider = (ParticleProvider)this.f_107293_.get(BuiltInRegistries.f_257034_.m_7447_(p_107396_.m_6012_())); -+ ParticleProvider particleprovider = (ParticleProvider)this.f_107293_.get(BuiltInRegistries.f_257034_.m_7981_(p_107396_.m_6012_())); - return particleprovider == null ? null : particleprovider.m_6966_(p_107396_, this.f_107287_, p_107397_, p_107398_, p_107399_, p_107400_, p_107401_, p_107402_); + private Particle makeParticle(T p_107396_, double p_107397_, double p_107398_, double p_107399_, double p_107400_, double p_107401_, double p_107402_) { +- ParticleProvider particleprovider = (ParticleProvider)this.providers.get(BuiltInRegistries.PARTICLE_TYPE.getId(p_107396_.getType())); ++ ParticleProvider particleprovider = (ParticleProvider)this.providers.get(BuiltInRegistries.PARTICLE_TYPE.getKey(p_107396_.getType())); + return particleprovider == null ? null : particleprovider.createParticle(p_107396_, this.level, p_107397_, p_107398_, p_107399_, p_107400_, p_107401_, p_107402_); } @@ -394,15 +_,24 @@ @@ -59,69 +59,69 @@ + /**@deprecated Forge: use {@link #render(PoseStack, MultiBufferSource.BufferSource, LightTexture, Camera, float, net.minecraft.client.renderer.culling.Frustum)} with Frustum as additional parameter*/ + @Deprecated - public void m_107336_(PoseStack p_107337_, MultiBufferSource.BufferSource p_107338_, LightTexture p_107339_, Camera p_107340_, float p_107341_) { + public void render(PoseStack p_107337_, MultiBufferSource.BufferSource p_107338_, LightTexture p_107339_, Camera p_107340_, float p_107341_) { + render(p_107337_, p_107338_, p_107339_, p_107340_, p_107341_, null); + } + + public void render(PoseStack p_107337_, MultiBufferSource.BufferSource p_107338_, LightTexture p_107339_, Camera p_107340_, float p_107341_, @Nullable net.minecraft.client.renderer.culling.Frustum clippingHelper) { - p_107339_.m_109896_(); + p_107339_.turnOnLightLayer(); RenderSystem.enableDepthTest(); + RenderSystem.activeTexture(org.lwjgl.opengl.GL13.GL_TEXTURE2); + RenderSystem.activeTexture(org.lwjgl.opengl.GL13.GL_TEXTURE0); PoseStack posestack = RenderSystem.getModelViewStack(); - posestack.m_85836_(); - posestack.m_252931_(p_107337_.m_85850_().m_252922_()); + posestack.pushPose(); + posestack.mulPoseMatrix(p_107337_.last().pose()); RenderSystem.applyModelViewMatrix(); -- for(ParticleRenderType particlerendertype : f_107288_) { -+ for(ParticleRenderType particlerendertype : this.f_107289_.keySet()) { // Forge: allow custom IParticleRenderType's -+ if (particlerendertype == ParticleRenderType.f_107434_) continue; - Iterable iterable = this.f_107289_.get(particlerendertype); +- for(ParticleRenderType particlerendertype : RENDER_ORDER) { ++ for(ParticleRenderType particlerendertype : this.particles.keySet()) { // Forge: allow custom IParticleRenderType's ++ if (particlerendertype == ParticleRenderType.NO_RENDER) continue; + Iterable iterable = this.particles.get(particlerendertype); if (iterable != null) { - RenderSystem.setShader(GameRenderer::m_172829_); + RenderSystem.setShader(GameRenderer::getParticleShader); @@ -411,6 +_,7 @@ - particlerendertype.m_6505_(bufferbuilder, this.f_107291_); + particlerendertype.begin(bufferbuilder, this.textureManager); for(Particle particle : iterable) { -+ if (clippingHelper != null && particle.shouldCull() && !clippingHelper.m_113029_(particle.m_107277_())) continue; ++ if (clippingHelper != null && particle.shouldCull() && !clippingHelper.isVisible(particle.getBoundingBox())) continue; try { - particle.m_5744_(bufferbuilder, p_107340_, p_107341_); + particle.render(bufferbuilder, p_107340_, p_107341_); } catch (Throwable throwable) { @@ -440,7 +_,7 @@ } - public void m_107355_(BlockPos p_107356_, BlockState p_107357_) { -- if (!p_107357_.m_60795_() && p_107357_.m_295777_()) { -+ if (!p_107357_.m_60795_() && !net.minecraftforge.client.extensions.common.IClientBlockExtensions.of(p_107357_).addDestroyEffects(p_107357_, this.f_107287_, p_107356_, this)) { - VoxelShape voxelshape = p_107357_.m_60808_(this.f_107287_, p_107356_); + public void destroy(BlockPos p_107356_, BlockState p_107357_) { +- if (!p_107357_.isAir() && p_107357_.shouldSpawnTerrainParticles()) { ++ if (!p_107357_.isAir() && !net.minecraftforge.client.extensions.common.IClientBlockExtensions.of(p_107357_).addDestroyEffects(p_107357_, this.level, p_107356_, this)) { + VoxelShape voxelshape = p_107357_.getShape(this.level, p_107356_); double d0 = 0.25D; - voxelshape.m_83286_((p_172273_, p_172274_, p_172275_, p_172276_, p_172277_, p_172278_) -> { + voxelshape.forAllBoxes((p_172273_, p_172274_, p_172275_, p_172276_, p_172277_, p_172278_) -> { @@ -460,7 +_,7 @@ double d7 = d4 * d1 + p_172273_; double d8 = d5 * d2 + p_172274_; double d9 = d6 * d3 + p_172275_; -- this.m_107344_(new TerrainParticle(this.f_107287_, (double)p_107356_.m_123341_() + d7, (double)p_107356_.m_123342_() + d8, (double)p_107356_.m_123343_() + d9, d4 - 0.5D, d5 - 0.5D, d6 - 0.5D, p_107357_, p_107356_)); -+ this.m_107344_(new TerrainParticle(this.f_107287_, (double)p_107356_.m_123341_() + d7, (double)p_107356_.m_123342_() + d8, (double)p_107356_.m_123343_() + d9, d4 - 0.5D, d5 - 0.5D, d6 - 0.5D, p_107357_, p_107356_).updateSprite(p_107357_, p_107356_)); +- this.add(new TerrainParticle(this.level, (double)p_107356_.getX() + d7, (double)p_107356_.getY() + d8, (double)p_107356_.getZ() + d9, d4 - 0.5D, d5 - 0.5D, d6 - 0.5D, p_107357_, p_107356_)); ++ this.add(new TerrainParticle(this.level, (double)p_107356_.getX() + d7, (double)p_107356_.getY() + d8, (double)p_107356_.getZ() + d9, d4 - 0.5D, d5 - 0.5D, d6 - 0.5D, p_107357_, p_107356_).updateSprite(p_107357_, p_107356_)); } } } @@ -504,12 +_,18 @@ - d0 = (double)i + aabb.f_82291_ + (double)0.1F; + d0 = (double)i + aabb.maxX + (double)0.1F; } -- this.m_107344_((new TerrainParticle(this.f_107287_, d0, d1, d2, 0.0D, 0.0D, 0.0D, blockstate, p_107368_)).m_107268_(0.2F).m_6569_(0.6F)); -+ this.m_107344_((new TerrainParticle(this.f_107287_, d0, d1, d2, 0.0D, 0.0D, 0.0D, blockstate, p_107368_).updateSprite(blockstate, p_107368_)).m_107268_(0.2F).m_6569_(0.6F)); +- this.add((new TerrainParticle(this.level, d0, d1, d2, 0.0D, 0.0D, 0.0D, blockstate, p_107368_)).setPower(0.2F).scale(0.6F)); ++ this.add((new TerrainParticle(this.level, d0, d1, d2, 0.0D, 0.0D, 0.0D, blockstate, p_107368_).updateSprite(blockstate, p_107368_)).setPower(0.2F).scale(0.6F)); } } - public String m_107403_() { - return String.valueOf(this.f_107289_.values().stream().mapToInt(Collection::size).sum()); + public String countParticles() { + return String.valueOf(this.particles.values().stream().mapToInt(Collection::size).sum()); + } + + public void addBlockHitEffects(BlockPos pos, net.minecraft.world.phys.BlockHitResult target) { -+ BlockState state = f_107287_.m_8055_(pos); -+ if (!net.minecraftforge.client.extensions.common.IClientBlockExtensions.of(state).addHitEffects(state, f_107287_, target, this)) -+ m_107367_(pos, target.m_82434_()); ++ BlockState state = level.getBlockState(pos); ++ if (!net.minecraftforge.client.extensions.common.IClientBlockExtensions.of(state).addHitEffects(state, level, target, this)) ++ crack(pos, target.getDirection()); } - private boolean m_172279_(ParticleGroup p_172280_) { + private boolean hasSpaceInParticleLimit(ParticleGroup p_172280_) { diff --git a/patches/minecraft/net/minecraft/client/particle/PortalParticle.java.patch b/patches/minecraft/net/minecraft/client/particle/PortalParticle.java.patch index f1777e93d8..54b20e2c35 100644 --- a/patches/minecraft/net/minecraft/client/particle/PortalParticle.java.patch +++ b/patches/minecraft/net/minecraft/client/particle/PortalParticle.java.patch @@ -1,10 +1,10 @@ --- a/net/minecraft/client/particle/PortalParticle.java +++ b/net/minecraft/client/particle/PortalParticle.java @@ -75,6 +_,7 @@ - this.f_107212_ = this.f_107548_ + this.f_107215_ * (double)f2; - this.f_107213_ = this.f_107549_ + this.f_107216_ * (double)f2 + (double)(1.0F - f); - this.f_107214_ = this.f_107547_ + this.f_107217_ * (double)f2; -+ this.m_107264_(this.f_107212_, this.f_107213_, this.f_107214_); // FORGE: update the particle's bounding box + this.x = this.xStart + this.xd * (double)f2; + this.y = this.yStart + this.yd * (double)f2 + (double)(1.0F - f); + this.z = this.zStart + this.zd * (double)f2; ++ this.setPos(this.x, this.y, this.z); // FORGE: update the particle's bounding box } } diff --git a/patches/minecraft/net/minecraft/client/particle/ReversePortalParticle.java.patch b/patches/minecraft/net/minecraft/client/particle/ReversePortalParticle.java.patch index cfb5f32cc0..c40cefa0c2 100644 --- a/patches/minecraft/net/minecraft/client/particle/ReversePortalParticle.java.patch +++ b/patches/minecraft/net/minecraft/client/particle/ReversePortalParticle.java.patch @@ -1,10 +1,10 @@ --- a/net/minecraft/client/particle/ReversePortalParticle.java +++ b/net/minecraft/client/particle/ReversePortalParticle.java @@ -29,6 +_,7 @@ - this.f_107212_ += this.f_107215_ * (double)f; - this.f_107213_ += this.f_107216_ * (double)f; - this.f_107214_ += this.f_107217_ * (double)f; -+ this.m_107264_(this.f_107212_, this.f_107213_, this.f_107214_); // FORGE: update the particle's bounding box + this.x += this.xd * (double)f; + this.y += this.yd * (double)f; + this.z += this.zd * (double)f; ++ this.setPos(this.x, this.y, this.z); // FORGE: update the particle's bounding box } } diff --git a/patches/minecraft/net/minecraft/client/particle/TerrainParticle.java.patch b/patches/minecraft/net/minecraft/client/particle/TerrainParticle.java.patch index 9fb5d39e03..c12e57f805 100644 --- a/patches/minecraft/net/minecraft/client/particle/TerrainParticle.java.patch +++ b/patches/minecraft/net/minecraft/client/particle/TerrainParticle.java.patch @@ -1,26 +1,26 @@ --- a/net/minecraft/client/particle/TerrainParticle.java +++ b/net/minecraft/client/particle/TerrainParticle.java @@ -28,7 +_,7 @@ - this.f_107227_ = 0.6F; - this.f_107228_ = 0.6F; - this.f_107229_ = 0.6F; -- if (!p_172458_.m_60713_(Blocks.f_50440_)) { + this.rCol = 0.6F; + this.gCol = 0.6F; + this.bCol = 0.6F; +- if (!p_172458_.is(Blocks.GRASS_BLOCK)) { + if (net.minecraftforge.client.extensions.common.IClientBlockExtensions.of(p_172458_).areBreakingParticlesTinted(p_172458_, p_172451_, p_172459_)) { - int i = Minecraft.m_91087_().m_91298_().m_92577_(p_172458_, p_172451_, p_172459_, 0); - this.f_107227_ *= (float)(i >> 16 & 255) / 255.0F; - this.f_107228_ *= (float)(i >> 8 & 255) / 255.0F; + int i = Minecraft.getInstance().getBlockColors().getColor(p_172458_, p_172451_, p_172459_, 0); + this.rCol *= (float)(i >> 16 & 255) / 255.0F; + this.gCol *= (float)(i >> 8 & 255) / 255.0F; @@ -69,7 +_,13 @@ public static class Provider implements ParticleProvider { - public Particle m_6966_(BlockParticleOption p_108304_, ClientLevel p_108305_, double p_108306_, double p_108307_, double p_108308_, double p_108309_, double p_108310_, double p_108311_) { - BlockState blockstate = p_108304_.m_123642_(); -- return !blockstate.m_60795_() && !blockstate.m_60713_(Blocks.f_50110_) && blockstate.m_295777_() ? new TerrainParticle(p_108305_, p_108306_, p_108307_, p_108308_, p_108309_, p_108310_, p_108311_, blockstate) : null; -+ return !blockstate.m_60795_() && !blockstate.m_60713_(Blocks.f_50110_) ? (new TerrainParticle(p_108305_, p_108306_, p_108307_, p_108308_, p_108309_, p_108310_, p_108311_, blockstate)).updateSprite(blockstate, p_108304_.getPos()) : null; + public Particle createParticle(BlockParticleOption p_108304_, ClientLevel p_108305_, double p_108306_, double p_108307_, double p_108308_, double p_108309_, double p_108310_, double p_108311_) { + BlockState blockstate = p_108304_.getState(); +- return !blockstate.isAir() && !blockstate.is(Blocks.MOVING_PISTON) && blockstate.shouldSpawnTerrainParticles() ? new TerrainParticle(p_108305_, p_108306_, p_108307_, p_108308_, p_108309_, p_108310_, p_108311_, blockstate) : null; ++ return !blockstate.isAir() && !blockstate.is(Blocks.MOVING_PISTON) ? (new TerrainParticle(p_108305_, p_108306_, p_108307_, p_108308_, p_108309_, p_108310_, p_108311_, blockstate)).updateSprite(blockstate, p_108304_.getPos()) : null; } + } + + public Particle updateSprite(BlockState state, BlockPos pos) { //FORGE: we cannot assume that the x y z of the particles match the block pos of the block. + if (pos != null) // There are cases where we are not able to obtain the correct source pos, and need to fallback to the non-model data version -+ this.m_108337_(Minecraft.m_91087_().m_91289_().m_110907_().getTexture(state, f_107208_, pos)); ++ this.setSprite(Minecraft.getInstance().getBlockRenderer().getBlockModelShaper().getTexture(state, level, pos)); + return this; } } diff --git a/patches/minecraft/net/minecraft/client/particle/VibrationSignalParticle.java.patch b/patches/minecraft/net/minecraft/client/particle/VibrationSignalParticle.java.patch index 817e719650..a40faef8ef 100644 --- a/patches/minecraft/net/minecraft/client/particle/VibrationSignalParticle.java.patch +++ b/patches/minecraft/net/minecraft/client/particle/VibrationSignalParticle.java.patch @@ -1,10 +1,10 @@ --- a/net/minecraft/client/particle/VibrationSignalParticle.java +++ b/net/minecraft/client/particle/VibrationSignalParticle.java @@ -105,6 +_,7 @@ - this.f_107212_ = Mth.m_14139_(d0, this.f_107212_, vec3.m_7096_()); - this.f_107213_ = Mth.m_14139_(d0, this.f_107213_, vec3.m_7098_()); - this.f_107214_ = Mth.m_14139_(d0, this.f_107214_, vec3.m_7094_()); -+ this.m_107264_(this.f_107212_, this.f_107213_, this.f_107214_); // FORGE: Update the particle's bounding box - double d1 = this.f_107212_ - vec3.m_7096_(); - double d2 = this.f_107213_ - vec3.m_7098_(); - double d3 = this.f_107214_ - vec3.m_7094_(); + this.x = Mth.lerp(d0, this.x, vec3.x()); + this.y = Mth.lerp(d0, this.y, vec3.y()); + this.z = Mth.lerp(d0, this.z, vec3.z()); ++ this.setPos(this.x, this.y, this.z); // FORGE: Update the particle's bounding box + double d1 = this.x - vec3.x(); + double d2 = this.y - vec3.y(); + double d3 = this.z - vec3.z(); diff --git a/patches/minecraft/net/minecraft/client/player/AbstractClientPlayer.java.patch b/patches/minecraft/net/minecraft/client/player/AbstractClientPlayer.java.patch index 5951792fdd..69a063848c 100644 --- a/patches/minecraft/net/minecraft/client/player/AbstractClientPlayer.java.patch +++ b/patches/minecraft/net/minecraft/client/player/AbstractClientPlayer.java.patch @@ -4,7 +4,7 @@ } } -- return Mth.m_14179_(Minecraft.m_91087_().f_91066_.m_231925_().m_231551_().floatValue(), 1.0F, f); +- return Mth.lerp(Minecraft.getInstance().options.fovEffectScale().get().floatValue(), 1.0F, f); + return net.minecraftforge.client.ForgeHooksClient.getFieldOfViewModifier(this, f); } } diff --git a/patches/minecraft/net/minecraft/client/player/LocalPlayer.java.patch b/patches/minecraft/net/minecraft/client/player/LocalPlayer.java.patch index 2e83bc2aef..17420a333b 100644 --- a/patches/minecraft/net/minecraft/client/player/LocalPlayer.java.patch +++ b/patches/minecraft/net/minecraft/client/player/LocalPlayer.java.patch @@ -3,114 +3,114 @@ @@ -150,6 +_,7 @@ } - public boolean m_6469_(DamageSource p_108662_, float p_108663_) { + public boolean hurt(DamageSource p_108662_, float p_108663_) { + net.minecraftforge.common.ForgeHooks.onPlayerAttack(this, p_108662_, p_108663_); return false; } @@ -276,6 +_,7 @@ - public boolean m_108700_(boolean p_108701_) { + public boolean drop(boolean p_108701_) { ServerboundPlayerActionPacket.Action serverboundplayeractionpacket$action = p_108701_ ? ServerboundPlayerActionPacket.Action.DROP_ALL_ITEMS : ServerboundPlayerActionPacket.Action.DROP_ITEM; -+ if (m_6117_() && m_7655_() == InteractionHand.MAIN_HAND && (p_108701_ || m_21211_().m_41613_() == 1)) m_5810_(); // Forge: fix MC-231097 on the clientside - ItemStack itemstack = this.m_150109_().m_182403_(p_108701_); - this.f_108617_.m_295327_(new ServerboundPlayerActionPacket(serverboundplayeractionpacket$action, BlockPos.f_121853_, Direction.DOWN)); - return !itemstack.m_41619_(); ++ if (isUsingItem() && getUsedItemHand() == InteractionHand.MAIN_HAND && (p_108701_ || getUseItem().getCount() == 1)) stopUsingItem(); // Forge: fix MC-231097 on the clientside + ItemStack itemstack = this.getInventory().removeFromSelected(p_108701_); + this.connection.send(new ServerboundPlayerActionPacket(serverboundplayeractionpacket$action, BlockPos.ZERO, Direction.DOWN)); + return !itemstack.isEmpty(); @@ -457,7 +_,14 @@ } - public void m_5496_(SoundEvent p_108651_, float p_108652_, float p_108653_) { -- this.m_9236_().m_7785_(this.m_20185_(), this.m_20186_(), this.m_20189_(), p_108651_, this.m_5720_(), p_108652_, p_108653_, false); -+ net.minecraft.core.Holder holder = net.minecraft.core.registries.BuiltInRegistries.f_256894_.m_263177_(p_108651_); -+ net.minecraftforge.event.PlayLevelSoundEvent.AtEntity event = net.minecraftforge.event.ForgeEventFactory.onPlaySoundAtEntity(this, holder, this.m_5720_(), p_108652_, p_108653_); + public void playSound(SoundEvent p_108651_, float p_108652_, float p_108653_) { +- this.level().playLocalSound(this.getX(), this.getY(), this.getZ(), p_108651_, this.getSoundSource(), p_108652_, p_108653_, false); ++ net.minecraft.core.Holder holder = net.minecraft.core.registries.BuiltInRegistries.SOUND_EVENT.wrapAsHolder(p_108651_); ++ net.minecraftforge.event.PlayLevelSoundEvent.AtEntity event = net.minecraftforge.event.ForgeEventFactory.onPlaySoundAtEntity(this, holder, this.getSoundSource(), p_108652_, p_108653_); + if (event.isCanceled() || event.getSound() == null) return; + p_108651_ = event.getSound().get(); + SoundSource source = event.getSource(); + p_108652_ = event.getNewVolume(); + p_108653_ = event.getNewPitch(); -+ this.m_9236_().m_7785_(this.m_20185_(), this.m_20186_(), this.m_20189_(), p_108651_, source, p_108652_, p_108653_, false); ++ this.level().playLocalSound(this.getX(), this.getY(), this.getZ(), p_108651_, source, p_108652_, p_108653_, false); } - public void m_6330_(SoundEvent p_108655_, SoundSource p_108656_, float p_108657_, float p_108658_) { + public void playNotifySound(SoundEvent p_108655_, SoundSource p_108656_, float p_108657_, float p_108658_) { @@ -631,6 +_,7 @@ - this.f_108601_ = !this.m_150110_().f_35935_ && !this.m_6069_() && !this.m_20159_() && this.m_295652_(Pose.CROUCHING) && (this.m_6144_() || !this.m_5803_() && !this.m_295652_(Pose.STANDING)); - float f = Mth.m_14036_(0.3F + EnchantmentHelper.m_220302_(this), 0.0F, 1.0F); - this.f_108618_.m_214106_(this.m_108635_(), f); -+ net.minecraftforge.client.ForgeHooksClient.onMovementInputUpdate(this, this.f_108618_); - this.f_108619_.m_91301_().m_120586_(this.f_108618_); - if (this.m_6117_() && !this.m_20159_()) { - this.f_108618_.f_108566_ *= 0.2F; + this.crouching = !this.getAbilities().flying && !this.isSwimming() && !this.isPassenger() && this.canPlayerFitWithinBlocksAndEntitiesWhen(Pose.CROUCHING) && (this.isShiftKeyDown() || !this.isSleeping() && !this.canPlayerFitWithinBlocksAndEntitiesWhen(Pose.STANDING)); + float f = Mth.clamp(0.3F + EnchantmentHelper.getSneakingSpeedBonus(this), 0.0F, 1.0F); + this.input.tick(this.isMovingSlowly(), f); ++ net.minecraftforge.client.ForgeHooksClient.onMovementInputUpdate(this, this.input); + this.minecraft.getTutorial().onInput(this.input); + if (this.isUsingItem() && !this.isPassenger()) { + this.input.leftImpulse *= 0.2F; @@ -659,7 +_,7 @@ - boolean flag4 = this.m_264082_(); - boolean flag5 = this.m_20159_() ? this.m_20202_().m_20096_() : this.m_20096_(); + boolean flag4 = this.canStartSprinting(); + boolean flag5 = this.isPassenger() ? this.getVehicle().onGround() : this.onGround(); boolean flag6 = !flag1 && !flag2; -- if ((flag5 || this.m_5842_()) && flag6 && flag4) { -+ if ((flag5 || this.m_5842_() || this.canStartSwimming()) && flag6 && flag4) { - if (this.f_108583_ <= 0 && !this.f_108619_.f_91066_.f_92091_.m_90857_()) { - this.f_108583_ = 7; +- if ((flag5 || this.isUnderWater()) && flag6 && flag4) { ++ if ((flag5 || this.isUnderWater() || this.canStartSwimming()) && flag6 && flag4) { + if (this.sprintTriggerTime <= 0 && !this.minecraft.options.keySprint.isDown()) { + this.sprintTriggerTime = 7; } else { @@ -667,15 +_,15 @@ } } -- if ((!this.m_20069_() || this.m_5842_()) && flag4 && this.f_108619_.f_91066_.f_92091_.m_90857_()) { -+ if (!this.m_20142_() && (!(this.m_20069_() || this.isInFluidType((fluidType, height) -> this.canSwimInFluidType(fluidType))) || (this.m_5842_() || this.canStartSwimming())) && this.m_108733_() && flag4 && !this.m_6117_() && !this.m_21023_(MobEffects.f_19610_) && this.f_108619_.f_91066_.f_92091_.m_90857_()) { - this.m_6858_(true); +- if ((!this.isInWater() || this.isUnderWater()) && flag4 && this.minecraft.options.keySprint.isDown()) { ++ if (!this.isSprinting() && (!(this.isInWater() || this.isInFluidType((fluidType, height) -> this.canSwimInFluidType(fluidType))) || (this.isUnderWater() || this.canStartSwimming())) && this.hasEnoughImpulseToStartSprinting() && flag4 && !this.isUsingItem() && !this.hasEffect(MobEffects.BLINDNESS) && this.minecraft.options.keySprint.isDown()) { + this.setSprinting(true); } - if (this.m_20142_()) { - boolean flag7 = !this.f_108618_.m_108577_() || !this.m_255269_(); -- boolean flag8 = flag7 || this.f_19862_ && !this.f_185931_ || this.m_20069_() && !this.m_5842_(); -+ boolean flag8 = flag7 || this.f_19862_ && !this.f_185931_ || this.m_20069_() && !this.m_5842_() || (this.isInFluidType((fluidType, height) -> this.canSwimInFluidType(fluidType)) && !this.canStartSwimming()); - if (this.m_6069_()) { -- if (!this.m_20096_() && !this.f_108618_.f_108573_ && flag7 || !this.m_20069_()) { -+ if (!this.m_20096_() && !this.f_108618_.f_108573_ && flag7 || !(this.m_20069_() || this.isInFluidType((fluidType, height) -> this.canSwimInFluidType(fluidType)))) { - this.m_6858_(false); + if (this.isSprinting()) { + boolean flag7 = !this.input.hasForwardImpulse() || !this.hasEnoughFoodToStartSprinting(); +- boolean flag8 = flag7 || this.horizontalCollision && !this.minorHorizontalCollision || this.isInWater() && !this.isUnderWater(); ++ boolean flag8 = flag7 || this.horizontalCollision && !this.minorHorizontalCollision || this.isInWater() && !this.isUnderWater() || (this.isInFluidType((fluidType, height) -> this.canSwimInFluidType(fluidType)) && !this.canStartSwimming()); + if (this.isSwimming()) { +- if (!this.onGround() && !this.input.shiftKeyDown && flag7 || !this.isInWater()) { ++ if (!this.onGround() && !this.input.shiftKeyDown && flag7 || !(this.isInWater() || this.isInFluidType((fluidType, height) -> this.canSwimInFluidType(fluidType)))) { + this.setSprinting(false); } } else if (flag8) { @@ -705,14 +_,15 @@ - if (this.f_108618_.f_108572_ && !flag9 && !flag && !this.m_150110_().f_35935_ && !this.m_20159_() && !this.m_6147_()) { - ItemStack itemstack = this.m_6844_(EquipmentSlot.CHEST); -- if (itemstack.m_150930_(Items.f_42741_) && ElytraItem.m_41140_(itemstack) && this.m_36319_()) { -+ if (itemstack.canElytraFly(this) && this.m_36319_()) { - this.f_108617_.m_295327_(new ServerboundPlayerCommandPacket(this, ServerboundPlayerCommandPacket.Action.START_FALL_FLYING)); + if (this.input.jumping && !flag9 && !flag && !this.getAbilities().flying && !this.isPassenger() && !this.onClimbable()) { + ItemStack itemstack = this.getItemBySlot(EquipmentSlot.CHEST); +- if (itemstack.is(Items.ELYTRA) && ElytraItem.isFlyEnabled(itemstack) && this.tryToStartFallFlying()) { ++ if (itemstack.canElytraFly(this) && this.tryToStartFallFlying()) { + this.connection.send(new ServerboundPlayerCommandPacket(this, ServerboundPlayerCommandPacket.Action.START_FALL_FLYING)); } } - this.f_108614_ = this.m_21255_(); -- if (this.m_20069_() && this.f_108618_.f_108573_ && this.m_6129_()) { -- this.m_21208_(); + this.wasFallFlying = this.isFallFlying(); +- if (this.isInWater() && this.input.shiftKeyDown && this.isAffectedByFluids()) { +- this.goDownInWater(); + net.minecraftforge.fluids.FluidType fluidType = this.getMaxHeightFluidType(); -+ if ((this.m_20069_() || (!fluidType.isAir() && this.canSwimInFluidType(fluidType))) && this.f_108618_.f_108573_ && this.m_6129_()) { -+ this.sinkInFluid(this.m_20069_() ? net.minecraftforge.common.ForgeMod.WATER_TYPE.get() : fluidType); ++ if ((this.isInWater() || (!fluidType.isAir() && this.canSwimInFluidType(fluidType))) && this.input.shiftKeyDown && this.isAffectedByFluids()) { ++ this.sinkInFluid(this.isInWater() ? net.minecraftforge.common.ForgeMod.WATER_TYPE.get() : fluidType); } - if (this.m_204029_(FluidTags.f_13131_)) { + if (this.isEyeInFluid(FluidTags.WATER)) { @@ -812,6 +_,7 @@ - public void m_6083_() { - super.m_6083_(); -+ if (this.m_36342_() && this.m_20159_()) this.f_108618_.f_108573_ = false; - this.f_108611_ = false; - Entity entity = this.m_275832_(); + public void rideTick() { + super.rideTick(); ++ if (this.wantsToStopRiding() && this.isPassenger()) this.input.shiftKeyDown = false; + this.handsBusy = false; + Entity entity = this.getControlledVehicle(); if (entity instanceof Boat boat) { @@ -1044,6 +_,18 @@ } else { - return super.m_7398_(p_108758_); + return super.getRopeHoldPosition(p_108758_); } + } + + public void updateSyncFields(LocalPlayer old) { -+ this.f_108595_ = old.f_108595_; -+ this.f_108596_ = old.f_108596_; -+ this.f_108597_ = old.f_108597_; -+ this.f_108598_ = old.f_108598_; -+ this.f_108599_ = old.f_108599_; -+ this.f_108600_ = old.f_108600_; -+ this.f_108602_ = old.f_108602_; -+ this.f_108603_ = old.f_108603_; -+ this.f_108604_ = old.f_108604_; ++ this.xLast = old.xLast; ++ this.yLast1 = old.yLast1; ++ this.zLast = old.zLast; ++ this.yRotLast = old.yRotLast; ++ this.xRotLast = old.xRotLast; ++ this.lastOnGround = old.lastOnGround; ++ this.wasShiftKeyDown = old.wasShiftKeyDown; ++ this.wasSprinting = old.wasSprinting; ++ this.positionReminder = old.positionReminder; } - public void m_141945_(ItemStack p_172532_, ItemStack p_172533_, ClickAction p_172534_) { + public void updateTutorialInventoryAction(ItemStack p_172532_, ItemStack p_172533_, ClickAction p_172534_) { diff --git a/patches/minecraft/net/minecraft/client/player/RemotePlayer.java.patch b/patches/minecraft/net/minecraft/client/player/RemotePlayer.java.patch index 96edea9c15..d52904a72f 100644 --- a/patches/minecraft/net/minecraft/client/player/RemotePlayer.java.patch +++ b/patches/minecraft/net/minecraft/client/player/RemotePlayer.java.patch @@ -3,7 +3,7 @@ @@ -32,6 +_,7 @@ } - public boolean m_6469_(DamageSource p_108772_, float p_108773_) { + public boolean hurt(DamageSource p_108772_, float p_108773_) { + net.minecraftforge.common.ForgeHooks.onPlayerAttack(this, p_108772_, p_108773_); return true; } diff --git a/patches/minecraft/net/minecraft/client/renderer/DimensionSpecialEffects.java.patch b/patches/minecraft/net/minecraft/client/renderer/DimensionSpecialEffects.java.patch index a29a670f20..1f27fdd250 100644 --- a/patches/minecraft/net/minecraft/client/renderer/DimensionSpecialEffects.java.patch +++ b/patches/minecraft/net/minecraft/client/renderer/DimensionSpecialEffects.java.patch @@ -6,15 +6,15 @@ @OnlyIn(Dist.CLIENT) -public abstract class DimensionSpecialEffects { +public abstract class DimensionSpecialEffects implements net.minecraftforge.client.extensions.IForgeDimensionSpecialEffects { - private static final Object2ObjectMap f_108857_ = Util.m_137469_(new Object2ObjectArrayMap<>(), (p_108881_) -> { + private static final Object2ObjectMap EFFECTS = Util.make(new Object2ObjectArrayMap<>(), (p_108881_) -> { DimensionSpecialEffects.OverworldEffects dimensionspecialeffects$overworldeffects = new DimensionSpecialEffects.OverworldEffects(); p_108881_.defaultReturnValue(dimensionspecialeffects$overworldeffects); @@ -37,7 +_,7 @@ } - public static DimensionSpecialEffects m_108876_(DimensionType p_108877_) { -- return f_108857_.get(p_108877_.f_63837_()); -+ return net.minecraftforge.client.DimensionSpecialEffectsManager.getForType(p_108877_.f_63837_()); + public static DimensionSpecialEffects forType(DimensionType p_108877_) { +- return EFFECTS.get(p_108877_.effectsLocation()); ++ return net.minecraftforge.client.DimensionSpecialEffectsManager.getForType(p_108877_.effectsLocation()); } @Nullable diff --git a/patches/minecraft/net/minecraft/client/renderer/EffectInstance.java.patch b/patches/minecraft/net/minecraft/client/renderer/EffectInstance.java.patch index c787408fb0..7eceb11dbd 100644 --- a/patches/minecraft/net/minecraft/client/renderer/EffectInstance.java.patch +++ b/patches/minecraft/net/minecraft/client/renderer/EffectInstance.java.patch @@ -1,22 +1,22 @@ --- a/net/minecraft/client/renderer/EffectInstance.java +++ b/net/minecraft/client/renderer/EffectInstance.java @@ -58,7 +_,8 @@ - private final EffectProgram f_108938_; + private final EffectProgram fragmentProgram; public EffectInstance(ResourceManager p_108941_, String p_108942_) throws IOException { - ResourceLocation resourcelocation = new ResourceLocation("shaders/program/" + p_108942_ + ".json"); -+ ResourceLocation rl = ResourceLocation.m_135820_(p_108942_); -+ ResourceLocation resourcelocation = new ResourceLocation(rl.m_135827_(), "shaders/program/" + rl.m_135815_() + ".json"); - this.f_108932_ = p_108942_; - Resource resource = p_108941_.m_215593_(resourcelocation); ++ ResourceLocation rl = ResourceLocation.tryParse(p_108942_); ++ ResourceLocation resourcelocation = new ResourceLocation(rl.getNamespace(), "shaders/program/" + rl.getPath() + ".json"); + this.name = p_108942_; + Resource resource = p_108941_.getResourceOrThrow(resourcelocation); @@ -150,7 +_,8 @@ } else { EffectProgram effectprogram; if (program == null) { -- ResourceLocation resourcelocation = new ResourceLocation("shaders/program/" + p_172569_ + p_172568_.m_85569_()); -+ ResourceLocation rl = ResourceLocation.m_135820_(p_172569_); -+ ResourceLocation resourcelocation = new ResourceLocation(rl.m_135827_(), "shaders/program/" + rl.m_135815_() + p_172568_.m_85569_()); - Resource resource = p_172567_.m_215593_(resourcelocation); +- ResourceLocation resourcelocation = new ResourceLocation("shaders/program/" + p_172569_ + p_172568_.getExtension()); ++ ResourceLocation rl = ResourceLocation.tryParse(p_172569_); ++ ResourceLocation resourcelocation = new ResourceLocation(rl.getNamespace(), "shaders/program/" + rl.getPath() + p_172568_.getExtension()); + Resource resource = p_172567_.getResourceOrThrow(resourcelocation); - try (InputStream inputstream = resource.m_215507_()) { + try (InputStream inputstream = resource.open()) { diff --git a/patches/minecraft/net/minecraft/client/renderer/FogRenderer.java.patch b/patches/minecraft/net/minecraft/client/renderer/FogRenderer.java.patch index 0334c37a85..707e2cc090 100644 --- a/patches/minecraft/net/minecraft/client/renderer/FogRenderer.java.patch +++ b/patches/minecraft/net/minecraft/client/renderer/FogRenderer.java.patch @@ -1,23 +1,23 @@ --- a/net/minecraft/client/renderer/FogRenderer.java +++ b/net/minecraft/client/renderer/FogRenderer.java @@ -190,6 +_,12 @@ - f_109012_ = f_109012_ * (1.0F - f7) + f_109012_ * f9 * f7; + fogBlue = fogBlue * (1.0F - f7) + fogBlue * f9 * f7; } -+ Vector3f fogColor = net.minecraftforge.client.ForgeHooksClient.getFogColor(p_109019_, p_109020_, p_109021_, p_109022_, p_109023_, f_109010_, f_109011_, f_109012_); ++ Vector3f fogColor = net.minecraftforge.client.ForgeHooksClient.getFogColor(p_109019_, p_109020_, p_109021_, p_109022_, p_109023_, fogRed, fogGreen, fogBlue); + -+ f_109010_ = fogColor.x(); -+ f_109011_ = fogColor.y(); -+ f_109012_ = fogColor.z(); ++ fogRed = fogColor.x(); ++ fogGreen = fogColor.y(); ++ fogBlue = fogColor.z(); + - RenderSystem.clearColor(f_109010_, f_109011_, f_109012_, 0.0F); + RenderSystem.clearColor(fogRed, fogGreen, fogBlue, 0.0F); } @@ -271,6 +_,7 @@ - RenderSystem.setShaderFogStart(fogrenderer$fogdata.f_234200_); - RenderSystem.setShaderFogEnd(fogrenderer$fogdata.f_234201_); - RenderSystem.setShaderFogShape(fogrenderer$fogdata.f_234202_); -+ net.minecraftforge.client.ForgeHooksClient.onFogRender(p_234174_, fogtype, p_234173_, p_234177_, p_234175_, fogrenderer$fogdata.f_234200_, fogrenderer$fogdata.f_234201_, fogrenderer$fogdata.f_234202_); + RenderSystem.setShaderFogStart(fogrenderer$fogdata.start); + RenderSystem.setShaderFogEnd(fogrenderer$fogdata.end); + RenderSystem.setShaderFogShape(fogrenderer$fogdata.shape); ++ net.minecraftforge.client.ForgeHooksClient.onFogRender(p_234174_, fogtype, p_234173_, p_234177_, p_234175_, fogrenderer$fogdata.start, fogrenderer$fogdata.end, fogrenderer$fogdata.shape); } - public static void m_109036_() { + public static void levelFogColor() { diff --git a/patches/minecraft/net/minecraft/client/renderer/GameRenderer.java.patch b/patches/minecraft/net/minecraft/client/renderer/GameRenderer.java.patch index 0a07b6837f..5f91987b1a 100644 --- a/patches/minecraft/net/minecraft/client/renderer/GameRenderer.java.patch +++ b/patches/minecraft/net/minecraft/client/renderer/GameRenderer.java.patch @@ -1,38 +1,38 @@ --- a/net/minecraft/client/renderer/GameRenderer.java +++ b/net/minecraft/client/renderer/GameRenderer.java @@ -307,8 +_,11 @@ - this.m_109128_(new ResourceLocation("shaders/post/creeper.json")); + this.loadEffect(new ResourceLocation("shaders/post/creeper.json")); } else if (p_109107_ instanceof Spider) { - this.m_109128_(new ResourceLocation("shaders/post/spider.json")); -+ this.m_109128_(new ResourceLocation("shaders/post/spider.json")); + this.loadEffect(new ResourceLocation("shaders/post/spider.json")); ++ this.loadEffect(new ResourceLocation("shaders/post/spider.json")); } else if (p_109107_ instanceof EnderMan) { - this.m_109128_(new ResourceLocation("shaders/post/invert.json")); + this.loadEffect(new ResourceLocation("shaders/post/invert.json")); + } else { + net.minecraftforge.client.ForgeHooksClient.loadEntityShader(p_109107_, this); } } @@ -610,6 +_,7 @@ - list1.add(Pair.of(new ShaderInstance(p_250719_, "rendertype_gui_ghost_recipe_overlay", DefaultVertexFormat.f_85815_), (p_286147_) -> { - f_285569_ = p_286147_; + list1.add(Pair.of(new ShaderInstance(p_250719_, "rendertype_gui_ghost_recipe_overlay", DefaultVertexFormat.POSITION_COLOR), (p_286147_) -> { + rendertypeGuiGhostRecipeOverlayShader = p_286147_; })); + net.minecraftforge.fml.ModLoader.get().postEvent(new net.minecraftforge.client.event.RegisterShadersEvent(p_250719_, list1)); } catch (IOException ioexception) { list1.forEach((p_172729_) -> { p_172729_.getFirst().close(); @@ -686,12 +_,13 @@ - this.f_109059_.m_91307_().m_6180_("pick"); - this.f_109059_.f_91076_ = null; - double d0 = (double)this.f_109059_.f_91072_.m_105286_(); -- this.f_109059_.f_91077_ = entity.m_19907_(d0, p_109088_, false); -+ double entityReach = this.f_109059_.f_91074_.getEntityReach(); // Note - MC-76493 - We must validate players cannot click-through objects. -+ this.f_109059_.f_91077_ = entity.m_19907_(Math.max(d0, entityReach), p_109088_, false); // Run pick() with the max of the two, so we can prevent click-through. - Vec3 vec3 = entity.m_20299_(p_109088_); + this.minecraft.getProfiler().push("pick"); + this.minecraft.crosshairPickEntity = null; + double d0 = (double)this.minecraft.gameMode.getPickRange(); +- this.minecraft.hitResult = entity.pick(d0, p_109088_, false); ++ double entityReach = this.minecraft.player.getEntityReach(); // Note - MC-76493 - We must validate players cannot click-through objects. ++ this.minecraft.hitResult = entity.pick(Math.max(d0, entityReach), p_109088_, false); // Run pick() with the max of the two, so we can prevent click-through. + Vec3 vec3 = entity.getEyePosition(p_109088_); boolean flag = false; int i = 3; double d1 = d0; -- if (this.f_109059_.f_91072_.m_105291_()) { -+ if (false && this.f_109059_.f_91072_.m_105291_()) { +- if (this.minecraft.gameMode.hasFarPickRange()) { ++ if (false && this.minecraft.gameMode.hasFarPickRange()) { d1 = 6.0D; d0 = d1; } else { @@ -43,31 +43,31 @@ + d0 = d1 = Math.max(d0, entityReach); // Pick entities with the max of both for the same reason. d1 *= d1; -- if (this.f_109059_.f_91077_ != null) { +- if (this.minecraft.hitResult != null) { + // If we picked a block, we need to ignore entities past that block. Added != MISS check to not truncate on failed picks. + // Also fixes MC-250858 -+ if (this.f_109059_.f_91077_ != null && this.f_109059_.f_91077_.m_6662_() != HitResult.Type.MISS) { - d1 = this.f_109059_.f_91077_.m_82450_().m_82557_(vec3); -+ double blockReach = this.f_109059_.f_91074_.getBlockReach(); ++ if (this.minecraft.hitResult != null && this.minecraft.hitResult.getType() != HitResult.Type.MISS) { + d1 = this.minecraft.hitResult.getLocation().distanceToSqr(vec3); ++ double blockReach = this.minecraft.player.getBlockReach(); + // Discard the result as a miss if it is outside the block reach. + if (d1 > blockReach * blockReach) { -+ Vec3 pos = this.f_109059_.f_91077_.m_82450_(); -+ this.f_109059_.f_91077_ = BlockHitResult.m_82426_(pos, Direction.m_122366_(vec3.f_82479_, vec3.f_82480_, vec3.f_82481_), BlockPos.m_274446_(pos)); ++ Vec3 pos = this.minecraft.hitResult.getLocation(); ++ this.minecraft.hitResult = BlockHitResult.miss(pos, Direction.getNearest(vec3.x, vec3.y, vec3.z), BlockPos.containing(pos)); + } } - Vec3 vec31 = entity.m_20252_(1.0F); + Vec3 vec31 = entity.getViewVector(1.0F); @@ -718,7 +_,7 @@ - Entity entity1 = entityhitresult.m_82443_(); - Vec3 vec33 = entityhitresult.m_82450_(); - double d2 = vec3.m_82557_(vec33); + Entity entity1 = entityhitresult.getEntity(); + Vec3 vec33 = entityhitresult.getLocation(); + double d2 = vec3.distanceToSqr(vec33); - if (flag && d2 > 9.0D) { + if (d2 > d1 || d2 > entityReach * entityReach) { // Discard if the result is behind a block, or past the entity reach max. The var "flag" no longer has a use. - this.f_109059_.f_91077_ = BlockHitResult.m_82426_(vec33, Direction.m_122366_(vec31.f_82479_, vec31.f_82480_, vec31.f_82481_), BlockPos.m_274446_(vec33)); - } else if (d2 < d1 || this.f_109059_.f_91077_ == null) { - this.f_109059_.f_91077_ = entityhitresult; + this.minecraft.hitResult = BlockHitResult.miss(vec33, Direction.getNearest(vec31.x, vec31.y, vec31.z), BlockPos.containing(vec33)); + } else if (d2 < d1 || this.minecraft.hitResult == null) { + this.minecraft.hitResult = entityhitresult; @@ -772,7 +_,7 @@ - d0 *= Mth.m_14139_(this.f_109059_.f_91066_.m_231925_().m_231551_(), 1.0D, (double)0.85714287F); + d0 *= Mth.lerp(this.minecraft.options.fovEffectScale().get(), 1.0D, (double)0.85714287F); } - return d0; @@ -77,45 +77,45 @@ @@ -908,12 +_,12 @@ - Window window = this.f_109059_.m_91268_(); - RenderSystem.clear(256, Minecraft.f_91002_); -- Matrix4f matrix4f = (new Matrix4f()).setOrtho(0.0F, (float)((double)window.m_85441_() / window.m_85449_()), (float)((double)window.m_85442_() / window.m_85449_()), 0.0F, 1000.0F, 21000.0F); -+ Matrix4f matrix4f = (new Matrix4f()).setOrtho(0.0F, (float)((double)window.m_85441_() / window.m_85449_()), (float)((double)window.m_85442_() / window.m_85449_()), 0.0F, 1000.0F, net.minecraftforge.client.ForgeHooksClient.getGuiFarPlane()); - RenderSystem.setProjectionMatrix(matrix4f, VertexSorting.f_276633_); + Window window = this.minecraft.getWindow(); + RenderSystem.clear(256, Minecraft.ON_OSX); +- Matrix4f matrix4f = (new Matrix4f()).setOrtho(0.0F, (float)((double)window.getWidth() / window.getGuiScale()), (float)((double)window.getHeight() / window.getGuiScale()), 0.0F, 1000.0F, 21000.0F); ++ Matrix4f matrix4f = (new Matrix4f()).setOrtho(0.0F, (float)((double)window.getWidth() / window.getGuiScale()), (float)((double)window.getHeight() / window.getGuiScale()), 0.0F, 1000.0F, net.minecraftforge.client.ForgeHooksClient.getGuiFarPlane()); + RenderSystem.setProjectionMatrix(matrix4f, VertexSorting.ORTHOGRAPHIC_Z); PoseStack posestack = RenderSystem.getModelViewStack(); - posestack.m_85836_(); - posestack.m_166856_(); -- posestack.m_252880_(0.0F, 0.0F, -11000.0F); -+ posestack.m_85837_(0.0D, 0.0D, 1000F-net.minecraftforge.client.ForgeHooksClient.getGuiFarPlane()); + posestack.pushPose(); + posestack.setIdentity(); +- posestack.translate(0.0F, 0.0F, -11000.0F); ++ posestack.translate(0.0D, 0.0D, 1000F-net.minecraftforge.client.ForgeHooksClient.getGuiFarPlane()); RenderSystem.applyModelViewMatrix(); - Lighting.m_84931_(); - GuiGraphics guigraphics = new GuiGraphics(this.f_109059_, this.f_109064_.m_110104_()); + Lighting.setupFor3DItems(); + GuiGraphics guigraphics = new GuiGraphics(this.minecraft, this.renderBuffers.bufferSource()); @@ -949,7 +_,7 @@ } - } else if (flag && this.f_109059_.f_91080_ != null) { + } else if (flag && this.minecraft.screen != null) { try { -- this.f_109059_.f_91080_.m_280264_(guigraphics, i, j, this.f_109059_.m_91297_()); -+ net.minecraftforge.client.ForgeHooksClient.drawScreen(this.f_109059_.f_91080_, guigraphics, i, j, this.f_109059_.m_91297_()); +- this.minecraft.screen.renderWithTooltip(guigraphics, i, j, this.minecraft.getDeltaFrameTime()); ++ net.minecraftforge.client.ForgeHooksClient.drawScreen(this.minecraft.screen, guigraphics, i, j, this.minecraft.getDeltaFrameTime()); } catch (Throwable throwable1) { - CrashReport crashreport1 = CrashReport.m_127521_(throwable1, "Rendering screen"); - CrashReportCategory crashreportcategory1 = crashreport1.m_127514_("Screen render details"); + CrashReport crashreport1 = CrashReport.forThrowable(throwable1, "Rendering screen"); + CrashReportCategory crashreportcategory1 = crashreport1.addCategory("Screen render details"); @@ -1103,12 +_,19 @@ - Matrix4f matrix4f = posestack.m_85850_().m_252922_(); - this.m_252879_(matrix4f); - camera.m_90575_(this.f_109059_.f_91073_, (Entity)(this.f_109059_.m_91288_() == null ? this.f_109059_.f_91074_ : this.f_109059_.m_91288_()), !this.f_109059_.f_91066_.m_92176_().m_90612_(), this.f_109059_.f_91066_.m_92176_().m_90613_(), p_109090_); + Matrix4f matrix4f = posestack.last().pose(); + this.resetProjectionMatrix(matrix4f); + camera.setup(this.minecraft.level, (Entity)(this.minecraft.getCameraEntity() == null ? this.minecraft.player : this.minecraft.getCameraEntity()), !this.minecraft.options.getCameraType().isFirstPerson(), this.minecraft.options.getCameraType().isMirrored(), p_109090_); + + net.minecraftforge.client.event.ViewportEvent.ComputeCameraAngles cameraSetup = net.minecraftforge.client.ForgeHooksClient.onCameraSetup(this, camera, p_109090_); + camera.setAnglesInternal(cameraSetup.getYaw(), cameraSetup.getPitch()); -+ p_109092_.m_252781_(Axis.f_252403_.m_252977_(cameraSetup.getRoll())); ++ p_109092_.mulPose(Axis.ZP.rotationDegrees(cameraSetup.getRoll())); + - p_109092_.m_252781_(Axis.f_252529_.m_252977_(camera.m_90589_())); - p_109092_.m_252781_(Axis.f_252436_.m_252977_(camera.m_90590_() + 180.0F)); - Matrix3f matrix3f = (new Matrix3f(p_109092_.m_85850_().m_252943_())).invert(); + p_109092_.mulPose(Axis.XP.rotationDegrees(camera.getXRot())); + p_109092_.mulPose(Axis.YP.rotationDegrees(camera.getYRot() + 180.0F)); + Matrix3f matrix3f = (new Matrix3f(p_109092_.last().normal())).invert(); RenderSystem.setInverseViewRotationMatrix(matrix3f); - this.f_109059_.f_91060_.m_253210_(p_109092_, camera.m_90583_(), this.m_253088_(Math.max(d0, (double)this.f_109059_.f_91066_.m_231837_().m_231551_().intValue()))); - this.f_109059_.f_91060_.m_109599_(p_109092_, p_109090_, p_109091_, flag, camera, this, this.f_109074_, matrix4f); -+ this.f_109059_.m_91307_().m_6182_("forge_render_last"); -+ net.minecraftforge.client.event.RenderLevelStageEvent.Stage.AFTER_LEVEL.dispatch(this.f_109059_.f_91060_, posestack, matrix4f, this.f_109059_.f_91060_.getTicks(), camera, this.f_109059_.f_91060_.getFrustum()); - this.f_109059_.m_91307_().m_6182_("hand"); - if (this.f_109070_) { - RenderSystem.clear(256, Minecraft.f_91002_); + this.minecraft.levelRenderer.prepareCullFrustum(p_109092_, camera.getPosition(), this.getProjectionMatrix(Math.max(d0, (double)this.minecraft.options.fov().get().intValue()))); + this.minecraft.levelRenderer.renderLevel(p_109092_, p_109090_, p_109091_, flag, camera, this, this.lightTexture, matrix4f); ++ this.minecraft.getProfiler().popPush("forge_render_last"); ++ net.minecraftforge.client.event.RenderLevelStageEvent.Stage.AFTER_LEVEL.dispatch(this.minecraft.levelRenderer, posestack, matrix4f, this.minecraft.levelRenderer.getTicks(), camera, this.minecraft.levelRenderer.getFrustum()); + this.minecraft.getProfiler().popPush("hand"); + if (this.renderHand) { + RenderSystem.clear(256, Minecraft.ON_OSX); diff --git a/patches/minecraft/net/minecraft/client/renderer/ItemBlockRenderTypes.java.patch b/patches/minecraft/net/minecraft/client/renderer/ItemBlockRenderTypes.java.patch index 0486f8de47..e3a46be9ff 100644 --- a/patches/minecraft/net/minecraft/client/renderer/ItemBlockRenderTypes.java.patch +++ b/patches/minecraft/net/minecraft/client/renderer/ItemBlockRenderTypes.java.patch @@ -5,25 +5,25 @@ @OnlyIn(Dist.CLIENT) public class ItemBlockRenderTypes { + @Deprecated - private static final Map f_109275_ = Util.m_137469_(Maps.newHashMap(), (p_296246_) -> { - RenderType rendertype = RenderType.m_110503_(); - p_296246_.put(Blocks.f_50267_, rendertype); + private static final Map TYPE_BY_BLOCK = Util.make(Maps.newHashMap(), (p_296246_) -> { + RenderType rendertype = RenderType.tripwire(); + p_296246_.put(Blocks.TRIPWIRE, rendertype); @@ -309,6 +_,7 @@ - p_296246_.put(Blocks.f_50628_, rendertype3); - p_296246_.put(Blocks.f_152498_, rendertype3); + p_296246_.put(Blocks.BUBBLE_COLUMN, rendertype3); + p_296246_.put(Blocks.TINTED_GLASS, rendertype3); }); + @Deprecated - private static final Map f_109276_ = Util.m_137469_(Maps.newHashMap(), (p_109290_) -> { - RenderType rendertype = RenderType.m_110466_(); - p_109290_.put(Fluids.f_76192_, rendertype); + private static final Map TYPE_BY_FLUID = Util.make(Maps.newHashMap(), (p_109290_) -> { + RenderType rendertype = RenderType.translucent(); + p_109290_.put(Fluids.FLOWING_WATER, rendertype); @@ -316,6 +_,8 @@ }); - private static boolean f_109277_; + private static boolean renderCutout; + /** @deprecated Forge: Use {@link net.minecraft.client.resources.model.BakedModel#getRenderTypes(BlockState, net.minecraft.util.RandomSource, net.minecraftforge.client.model.data.ModelData)}. */ + @Deprecated // Note: this method does NOT support model-based render types - public static RenderType m_109282_(BlockState p_109283_) { - Block block = p_109283_.m_60734_(); + public static RenderType getChunkRenderType(BlockState p_109283_) { + Block block = p_109283_.getBlock(); if (block instanceof LeavesBlock) { @@ -326,6 +_,8 @@ } @@ -31,8 +31,8 @@ + /** @deprecated Forge: Use {@link net.minecraftforge.client.RenderTypeHelper#getMovingBlockRenderType(RenderType)} while iterating through {@link net.minecraft.client.resources.model.BakedModel#getRenderTypes(BlockState, net.minecraft.util.RandomSource, net.minecraftforge.client.model.data.ModelData)}. */ + @Deprecated // Note: this method does NOT support model-based render types - public static RenderType m_109293_(BlockState p_109294_) { - Block block = p_109294_.m_60734_(); + public static RenderType getMovingBlockRenderType(BlockState p_109294_) { + Block block = p_109294_.getBlock(); if (block instanceof LeavesBlock) { @@ -340,6 +_,8 @@ } @@ -40,40 +40,40 @@ + /** @deprecated Forge: Use {@link net.minecraftforge.client.RenderTypeHelper#getEntityRenderType(RenderType, boolean)} while iterating through {@link net.minecraft.client.resources.model.BakedModel#getRenderTypes(BlockState, net.minecraft.util.RandomSource, net.minecraftforge.client.model.data.ModelData)}. */ + @Deprecated // Note: this method does NOT support model-based render types - public static RenderType m_109284_(BlockState p_109285_, boolean p_109286_) { - RenderType rendertype = m_109282_(p_109285_); - if (rendertype == RenderType.m_110466_()) { + public static RenderType getRenderType(BlockState p_109285_, boolean p_109286_) { + RenderType rendertype = getChunkRenderType(p_109285_); + if (rendertype == RenderType.translucent()) { @@ -353,6 +_,8 @@ } } + /** @deprecated Forge: Use {@link net.minecraft.client.resources.model.BakedModel#getRenderPasses(ItemStack, boolean)} and {@link net.minecraft.client.resources.model.BakedModel#getRenderTypes(ItemStack, boolean)}. */ + @Deprecated // Note: this method does NOT support model-based render types - public static RenderType m_109279_(ItemStack p_109280_, boolean p_109281_) { - Item item = p_109280_.m_41720_(); + public static RenderType getRenderType(ItemStack p_109280_, boolean p_109281_) { + Item item = p_109280_.getItem(); if (item instanceof BlockItem) { @@ -364,8 +_,73 @@ } - public static RenderType m_109287_(FluidState p_109288_) { -- RenderType rendertype = f_109276_.get(p_109288_.m_76152_()); -+ RenderType rendertype = FLUID_RENDER_TYPES.get(net.minecraftforge.registries.ForgeRegistries.FLUIDS.getDelegateOrThrow(p_109288_.m_76152_())); - return rendertype != null ? rendertype : RenderType.m_110451_(); + public static RenderType getRenderLayer(FluidState p_109288_) { +- RenderType rendertype = TYPE_BY_FLUID.get(p_109288_.getType()); ++ RenderType rendertype = FLUID_RENDER_TYPES.get(net.minecraftforge.registries.ForgeRegistries.FLUIDS.getDelegateOrThrow(p_109288_.getType())); + return rendertype != null ? rendertype : RenderType.solid(); + } + + // FORGE START + -+ private static final net.minecraftforge.client.ChunkRenderTypeSet CUTOUT_MIPPED = net.minecraftforge.client.ChunkRenderTypeSet.of(RenderType.m_110457_()); -+ private static final net.minecraftforge.client.ChunkRenderTypeSet SOLID = net.minecraftforge.client.ChunkRenderTypeSet.of(RenderType.m_110451_()); -+ private static final Map, net.minecraftforge.client.ChunkRenderTypeSet> BLOCK_RENDER_TYPES = Util.m_137469_(new it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap<>(f_109275_.size(), 0.5F), map -> { ++ private static final net.minecraftforge.client.ChunkRenderTypeSet CUTOUT_MIPPED = net.minecraftforge.client.ChunkRenderTypeSet.of(RenderType.cutoutMipped()); ++ private static final net.minecraftforge.client.ChunkRenderTypeSet SOLID = net.minecraftforge.client.ChunkRenderTypeSet.of(RenderType.solid()); ++ private static final Map, net.minecraftforge.client.ChunkRenderTypeSet> BLOCK_RENDER_TYPES = Util.make(new it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap<>(TYPE_BY_BLOCK.size(), 0.5F), map -> { + map.defaultReturnValue(SOLID); -+ for(Map.Entry entry : f_109275_.entrySet()) { ++ for(Map.Entry entry : TYPE_BY_BLOCK.entrySet()) { + map.put(net.minecraftforge.registries.ForgeRegistries.BLOCKS.getDelegateOrThrow(entry.getKey()), net.minecraftforge.client.ChunkRenderTypeSet.of(entry.getValue())); + } + }); -+ private static final Map, RenderType> FLUID_RENDER_TYPES = Util.m_137469_(new it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap<>(f_109276_.size(), 0.5F), map -> { -+ map.defaultReturnValue(RenderType.m_110451_()); -+ for(Map.Entry entry : f_109276_.entrySet()) { ++ private static final Map, RenderType> FLUID_RENDER_TYPES = Util.make(new it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap<>(TYPE_BY_FLUID.size(), 0.5F), map -> { ++ map.defaultReturnValue(RenderType.solid()); ++ for(Map.Entry entry : TYPE_BY_FLUID.entrySet()) { + map.put(net.minecraftforge.registries.ForgeRegistries.FLUIDS.getDelegateOrThrow(entry.getKey()), entry.getValue()); + } + }); @@ -81,9 +81,9 @@ + /** @deprecated Use {@link net.minecraft.client.resources.model.BakedModel#getRenderTypes(BlockState, net.minecraft.util.RandomSource, net.minecraftforge.client.model.data.ModelData)}. */ + @Deprecated(since = "1.19") + public static net.minecraftforge.client.ChunkRenderTypeSet getRenderLayers(BlockState state) { -+ Block block = state.m_60734_(); ++ Block block = state.getBlock(); + if (block instanceof LeavesBlock) { -+ return f_109277_ ? CUTOUT_MIPPED : SOLID; ++ return renderCutout ? CUTOUT_MIPPED : SOLID; + } else { + return BLOCK_RENDER_TYPES.get(net.minecraftforge.registries.ForgeRegistries.BLOCKS.getDelegateOrThrow(block)); + } @@ -123,7 +123,7 @@ + } + + private static net.minecraftforge.client.ChunkRenderTypeSet createSetFromPredicate(java.util.function.Predicate predicate) { -+ return net.minecraftforge.client.ChunkRenderTypeSet.of(RenderType.m_110506_().stream().filter(predicate).toArray(RenderType[]::new)); ++ return net.minecraftforge.client.ChunkRenderTypeSet.of(RenderType.chunkBufferLayers().stream().filter(predicate).toArray(RenderType[]::new)); } - public static void m_109291_(boolean p_109292_) { + public static void setFancy(boolean p_109292_) { diff --git a/patches/minecraft/net/minecraft/client/renderer/ItemInHandRenderer.java.patch b/patches/minecraft/net/minecraft/client/renderer/ItemInHandRenderer.java.patch index adfcfa533d..e84100ab56 100644 --- a/patches/minecraft/net/minecraft/client/renderer/ItemInHandRenderer.java.patch +++ b/patches/minecraft/net/minecraft/client/renderer/ItemInHandRenderer.java.patch @@ -1,53 +1,53 @@ --- a/net/minecraft/client/renderer/ItemInHandRenderer.java +++ b/net/minecraft/client/renderer/ItemInHandRenderer.java @@ -310,12 +_,14 @@ - if (iteminhandrenderer$handrenderselection.f_172921_) { + if (iteminhandrenderer$handrenderselection.renderMainHand) { float f4 = interactionhand == InteractionHand.MAIN_HAND ? f : 0.0F; - float f5 = 1.0F - Mth.m_14179_(p_109315_, this.f_109303_, this.f_109302_); -+ if(!net.minecraftforge.client.ForgeHooksClient.renderSpecificFirstPersonHand(InteractionHand.MAIN_HAND, p_109316_, p_109317_, p_109319_, p_109315_, f1, f4, f5, this.f_109300_)) - this.m_109371_(p_109318_, p_109315_, f1, InteractionHand.MAIN_HAND, f4, this.f_109300_, f5, p_109316_, p_109317_, p_109319_); + float f5 = 1.0F - Mth.lerp(p_109315_, this.oMainHandHeight, this.mainHandHeight); ++ if(!net.minecraftforge.client.ForgeHooksClient.renderSpecificFirstPersonHand(InteractionHand.MAIN_HAND, p_109316_, p_109317_, p_109319_, p_109315_, f1, f4, f5, this.mainHandItem)) + this.renderArmWithItem(p_109318_, p_109315_, f1, InteractionHand.MAIN_HAND, f4, this.mainHandItem, f5, p_109316_, p_109317_, p_109319_); } - if (iteminhandrenderer$handrenderselection.f_172922_) { + if (iteminhandrenderer$handrenderselection.renderOffHand) { float f6 = interactionhand == InteractionHand.OFF_HAND ? f : 0.0F; - float f7 = 1.0F - Mth.m_14179_(p_109315_, this.f_109305_, this.f_109304_); -+ if(!net.minecraftforge.client.ForgeHooksClient.renderSpecificFirstPersonHand(InteractionHand.OFF_HAND, p_109316_, p_109317_, p_109319_, p_109315_, f1, f6, f7, this.f_109301_)) - this.m_109371_(p_109318_, p_109315_, f1, InteractionHand.OFF_HAND, f6, this.f_109301_, f7, p_109316_, p_109317_, p_109319_); + float f7 = 1.0F - Mth.lerp(p_109315_, this.oOffHandHeight, this.offHandHeight); ++ if(!net.minecraftforge.client.ForgeHooksClient.renderSpecificFirstPersonHand(InteractionHand.OFF_HAND, p_109316_, p_109317_, p_109319_, p_109315_, f1, f6, f7, this.offHandItem)) + this.renderArmWithItem(p_109318_, p_109315_, f1, InteractionHand.OFF_HAND, f6, this.offHandItem, f7, p_109316_, p_109317_, p_109319_); } @@ -366,7 +_,7 @@ } else { - this.m_109353_(p_109379_, p_109380_, p_109381_, p_109378_, humanoidarm, p_109376_, p_109377_); + this.renderOneHandedMap(p_109379_, p_109380_, p_109381_, p_109378_, humanoidarm, p_109376_, p_109377_); } -- } else if (p_109377_.m_150930_(Items.f_42717_)) { -+ } else if (p_109377_.m_41720_() instanceof CrossbowItem) { - boolean flag1 = CrossbowItem.m_40932_(p_109377_); +- } else if (p_109377_.is(Items.CROSSBOW)) { ++ } else if (p_109377_.getItem() instanceof CrossbowItem) { + boolean flag1 = CrossbowItem.isCharged(p_109377_); boolean flag2 = humanoidarm == HumanoidArm.RIGHT; int i = flag2 ? 1 : -1; @@ -408,6 +_,7 @@ - this.m_269530_(p_109372_, p_109377_, flag2 ? ItemDisplayContext.FIRST_PERSON_RIGHT_HAND : ItemDisplayContext.FIRST_PERSON_LEFT_HAND, !flag2, p_109379_, p_109380_, p_109381_); + this.renderItem(p_109372_, p_109377_, flag2 ? ItemDisplayContext.FIRST_PERSON_RIGHT_HAND : ItemDisplayContext.FIRST_PERSON_LEFT_HAND, !flag2, p_109379_, p_109380_, p_109381_); } else { boolean flag3 = humanoidarm == HumanoidArm.RIGHT; -+ if (!net.minecraftforge.client.extensions.common.IClientItemExtensions.of(p_109377_).applyForgeHandTransform(p_109379_, f_109299_.f_91074_, humanoidarm, p_109377_, p_109373_, p_109378_, p_109376_)) // FORGE: Allow items to define custom arm animation - if (p_109372_.m_6117_() && p_109372_.m_21212_() > 0 && p_109372_.m_7655_() == p_109375_) { ++ if (!net.minecraftforge.client.extensions.common.IClientItemExtensions.of(p_109377_).applyForgeHandTransform(p_109379_, minecraft.player, humanoidarm, p_109377_, p_109373_, p_109378_, p_109376_)) // FORGE: Allow items to define custom arm animation + if (p_109372_.isUsingItem() && p_109372_.getUseItemRemainingTicks() > 0 && p_109372_.getUsedItemHand() == p_109375_) { int k = flag3 ? 1 : -1; - switch (p_109377_.m_41780_()) { + switch (p_109377_.getUseAnimation()) { @@ -514,8 +_,16 @@ - this.f_109304_ = Mth.m_14036_(this.f_109304_ - 0.4F, 0.0F, 1.0F); + this.offHandHeight = Mth.clamp(this.offHandHeight - 0.4F, 0.0F, 1.0F); } else { - float f = localplayer.m_36403_(1.0F); -- this.f_109302_ += Mth.m_14036_((this.f_109300_ == itemstack ? f * f * f : 0.0F) - this.f_109302_, -0.4F, 0.4F); -- this.f_109304_ += Mth.m_14036_((float)(this.f_109301_ == itemstack1 ? 1 : 0) - this.f_109304_, -0.4F, 0.4F); -+ boolean requipM = net.minecraftforge.client.ForgeHooksClient.shouldCauseReequipAnimation(this.f_109300_, itemstack, localplayer.m_150109_().f_35977_); -+ boolean requipO = net.minecraftforge.client.ForgeHooksClient.shouldCauseReequipAnimation(this.f_109301_, itemstack1, -1); + float f = localplayer.getAttackStrengthScale(1.0F); +- this.mainHandHeight += Mth.clamp((this.mainHandItem == itemstack ? f * f * f : 0.0F) - this.mainHandHeight, -0.4F, 0.4F); +- this.offHandHeight += Mth.clamp((float)(this.offHandItem == itemstack1 ? 1 : 0) - this.offHandHeight, -0.4F, 0.4F); ++ boolean requipM = net.minecraftforge.client.ForgeHooksClient.shouldCauseReequipAnimation(this.mainHandItem, itemstack, localplayer.getInventory().selected); ++ boolean requipO = net.minecraftforge.client.ForgeHooksClient.shouldCauseReequipAnimation(this.offHandItem, itemstack1, -1); + -+ if (!requipM && this.f_109300_ != itemstack) -+ this.f_109300_ = itemstack; -+ if (!requipO && this.f_109301_ != itemstack1) -+ this.f_109301_ = itemstack1; ++ if (!requipM && this.mainHandItem != itemstack) ++ this.mainHandItem = itemstack; ++ if (!requipO && this.offHandItem != itemstack1) ++ this.offHandItem = itemstack1; + -+ this.f_109302_ += Mth.m_14036_((!requipM ? f * f * f : 0.0F) - this.f_109302_, -0.4F, 0.4F); -+ this.f_109304_ += Mth.m_14036_((float)(!requipO ? 1 : 0) - this.f_109304_, -0.4F, 0.4F); ++ this.mainHandHeight += Mth.clamp((!requipM ? f * f * f : 0.0F) - this.mainHandHeight, -0.4F, 0.4F); ++ this.offHandHeight += Mth.clamp((float)(!requipO ? 1 : 0) - this.offHandHeight, -0.4F, 0.4F); } - if (this.f_109302_ < 0.1F) { + if (this.mainHandHeight < 0.1F) { diff --git a/patches/minecraft/net/minecraft/client/renderer/ItemModelShaper.java.patch b/patches/minecraft/net/minecraft/client/renderer/ItemModelShaper.java.patch index 7856b9b5a4..34323e4dd0 100644 --- a/patches/minecraft/net/minecraft/client/renderer/ItemModelShaper.java.patch +++ b/patches/minecraft/net/minecraft/client/renderer/ItemModelShaper.java.patch @@ -2,9 +2,9 @@ +++ b/net/minecraft/client/renderer/ItemModelShaper.java @@ -24,6 +_,7 @@ - public BakedModel m_109406_(ItemStack p_109407_) { - BakedModel bakedmodel = this.m_109394_(p_109407_.m_41720_()); + public BakedModel getItemModel(ItemStack p_109407_) { + BakedModel bakedmodel = this.getItemModel(p_109407_.getItem()); + // FORGE: Make sure to call the item overrides - return bakedmodel == null ? this.f_109390_.m_119409_() : bakedmodel; + return bakedmodel == null ? this.modelManager.getMissingModel() : bakedmodel; } diff --git a/patches/minecraft/net/minecraft/client/renderer/LevelRenderer.java.patch b/patches/minecraft/net/minecraft/client/renderer/LevelRenderer.java.patch index feb2ddd4a8..d6c0169a60 100644 --- a/patches/minecraft/net/minecraft/client/renderer/LevelRenderer.java.patch +++ b/patches/minecraft/net/minecraft/client/renderer/LevelRenderer.java.patch @@ -3,262 +3,262 @@ @@ -245,6 +_,8 @@ } - private void m_109703_(LightTexture p_109704_, float p_109705_, double p_109706_, double p_109707_, double p_109708_) { -+ if (f_109465_.m_104583_().renderSnowAndRain(f_109465_, f_109477_, p_109705_, p_109704_, p_109706_, p_109707_, p_109708_)) + private void renderSnowAndRain(LightTexture p_109704_, float p_109705_, double p_109706_, double p_109707_, double p_109708_) { ++ if (level.effects().renderSnowAndRain(level, ticks, p_109705_, p_109704_, p_109706_, p_109707_, p_109708_)) + return; - float f = this.f_109461_.f_91073_.m_46722_(p_109705_); + float f = this.minecraft.level.getRainLevel(p_109705_); if (!(f <= 0.0F)) { - p_109704_.m_109896_(); + p_109704_.turnOnLightLayer(); @@ -364,6 +_,8 @@ } - public void m_109693_(Camera p_109694_) { -+ if (f_109465_.m_104583_().tickRain(f_109465_, f_109477_, p_109694_)) + public void tickRain(Camera p_109694_) { ++ if (level.effects().tickRain(level, ticks, p_109694_)) + return; - float f = this.f_109461_.f_91073_.m_46722_(1.0F) / (Minecraft.m_91405_() ? 1.0F : 2.0F); + float f = this.minecraft.level.getRainLevel(1.0F) / (Minecraft.useFancyGraphics() ? 1.0F : 2.0F); if (!(f <= 0.0F)) { - RandomSource randomsource = RandomSource.m_216335_((long)this.f_109477_ * 312987231L); + RandomSource randomsource = RandomSource.create((long)this.ticks * 312987231L); @@ -888,11 +_,13 @@ - RenderSystem.clear(16640, Minecraft.f_91002_); - float f = p_109605_.m_109152_(); - boolean flag1 = this.f_109461_.f_91073_.m_104583_().m_5781_(Mth.m_14107_(d0), Mth.m_14107_(d1)) || this.f_109461_.f_91065_.m_93090_().m_93715_(); -+ FogRenderer.m_234172_(p_109604_, FogRenderer.FogMode.FOG_SKY, f, flag1, p_109601_); - profilerfiller.m_6182_("sky"); - RenderSystem.setShader(GameRenderer::m_172808_); - this.m_202423_(p_109600_, p_254120_, p_109601_, p_109604_, flag1, () -> { - FogRenderer.m_234172_(p_109604_, FogRenderer.FogMode.FOG_SKY, f, flag1, p_109601_); + RenderSystem.clear(16640, Minecraft.ON_OSX); + float f = p_109605_.getRenderDistance(); + boolean flag1 = this.minecraft.level.effects().isFoggyAt(Mth.floor(d0), Mth.floor(d1)) || this.minecraft.gui.getBossOverlay().shouldCreateWorldFog(); ++ FogRenderer.setupFog(p_109604_, FogRenderer.FogMode.FOG_SKY, f, flag1, p_109601_); + profilerfiller.popPush("sky"); + RenderSystem.setShader(GameRenderer::getPositionShader); + this.renderSky(p_109600_, p_254120_, p_109601_, p_109604_, flag1, () -> { + FogRenderer.setupFog(p_109604_, FogRenderer.FogMode.FOG_SKY, f, flag1, p_109601_); }); -+ net.minecraftforge.client.event.RenderLevelStageEvent.Stage.AFTER_SKY.dispatch(this, p_109600_, p_254120_, this.f_109477_, p_109604_, frustum); - profilerfiller.m_6182_("fog"); - FogRenderer.m_234172_(p_109604_, FogRenderer.FogMode.FOG_TERRAIN, Math.max(f, 32.0F), flag1, p_109601_); - profilerfiller.m_6182_("terrain_setup"); ++ net.minecraftforge.client.event.RenderLevelStageEvent.Stage.AFTER_SKY.dispatch(this, p_109600_, p_254120_, this.ticks, p_109604_, frustum); + profilerfiller.popPush("fog"); + FogRenderer.setupFog(p_109604_, FogRenderer.FogMode.FOG_TERRAIN, Math.max(f, 32.0F), flag1, p_109601_); + profilerfiller.popPush("terrain_setup"); @@ -901,7 +_,9 @@ - this.m_194370_(p_109604_); - profilerfiller.m_6182_("terrain"); - this.m_293111_(RenderType.m_110451_(), p_109600_, d0, d1, d2, p_254120_); -+ this.f_109461_.m_91304_().m_119428_(TextureAtlas.f_118259_).setBlurMipmap(false, this.f_109461_.f_91066_.m_232119_().m_231551_() > 0); // FORGE: fix flickering leaves when mods mess up the blurMipmap settings - this.m_293111_(RenderType.m_110457_(), p_109600_, d0, d1, d2, p_254120_); -+ this.f_109461_.m_91304_().m_119428_(TextureAtlas.f_118259_).restoreLastBlurMipmap(); - this.m_293111_(RenderType.m_110463_(), p_109600_, d0, d1, d2, p_254120_); - if (this.f_109465_.m_104583_().m_108885_()) { - Lighting.m_252995_(p_109600_.m_85850_().m_252922_()); + this.compileSections(p_109604_); + profilerfiller.popPush("terrain"); + this.renderSectionLayer(RenderType.solid(), p_109600_, d0, d1, d2, p_254120_); ++ this.minecraft.getModelManager().getAtlas(TextureAtlas.LOCATION_BLOCKS).setBlurMipmap(false, this.minecraft.options.mipmapLevels().get() > 0); // FORGE: fix flickering leaves when mods mess up the blurMipmap settings + this.renderSectionLayer(RenderType.cutoutMipped(), p_109600_, d0, d1, d2, p_254120_); ++ this.minecraft.getModelManager().getAtlas(TextureAtlas.LOCATION_BLOCKS).restoreLastBlurMipmap(); + this.renderSectionLayer(RenderType.cutout(), p_109600_, d0, d1, d2, p_254120_); + if (this.level.effects().constantAmbientLight()) { + Lighting.setupNetherLevel(p_109600_.last().pose()); @@ -933,7 +_,7 @@ - for(Entity entity : this.f_109465_.m_104735_()) { - if (this.f_109463_.m_114397_(entity, frustum, d0, d1, d2) || entity.m_20367_(this.f_109461_.f_91074_)) { - BlockPos blockpos = entity.m_20183_(); -- if ((this.f_109465_.m_151562_(blockpos.m_123342_()) || this.m_292727_(blockpos)) && (entity != p_109604_.m_90592_() || p_109604_.m_90594_() || p_109604_.m_90592_() instanceof LivingEntity && ((LivingEntity)p_109604_.m_90592_()).m_5803_()) && (!(entity instanceof LocalPlayer) || p_109604_.m_90592_() == entity)) { -+ if ((this.f_109465_.m_151562_(blockpos.m_123342_()) || this.m_292727_(blockpos)) && (entity != p_109604_.m_90592_() || p_109604_.m_90594_() || p_109604_.m_90592_() instanceof LivingEntity && ((LivingEntity)p_109604_.m_90592_()).m_5803_()) && (!(entity instanceof LocalPlayer) || p_109604_.m_90592_() == entity || (entity == f_109461_.f_91074_ && !f_109461_.f_91074_.m_5833_()))) { //FORGE: render local player entity when it is not the renderViewEntity - ++this.f_109439_; - if (entity.f_19797_ == 0) { - entity.f_19790_ = entity.m_20185_(); + for(Entity entity : this.level.entitiesForRendering()) { + if (this.entityRenderDispatcher.shouldRender(entity, frustum, d0, d1, d2) || entity.hasIndirectPassenger(this.minecraft.player)) { + BlockPos blockpos = entity.blockPosition(); +- if ((this.level.isOutsideBuildHeight(blockpos.getY()) || this.isSectionCompiled(blockpos)) && (entity != p_109604_.getEntity() || p_109604_.isDetached() || p_109604_.getEntity() instanceof LivingEntity && ((LivingEntity)p_109604_.getEntity()).isSleeping()) && (!(entity instanceof LocalPlayer) || p_109604_.getEntity() == entity)) { ++ if ((this.level.isOutsideBuildHeight(blockpos.getY()) || this.isSectionCompiled(blockpos)) && (entity != p_109604_.getEntity() || p_109604_.isDetached() || p_109604_.getEntity() instanceof LivingEntity && ((LivingEntity)p_109604_.getEntity()).isSleeping()) && (!(entity instanceof LocalPlayer) || p_109604_.getEntity() == entity || (entity == minecraft.player && !minecraft.player.isSpectator()))) { //FORGE: render local player entity when it is not the renderViewEntity + ++this.renderedEntities; + if (entity.tickCount == 0) { + entity.xOld = entity.getX(); @@ -949,6 +_,9 @@ - int i = entity.m_19876_(); - outlinebuffersource.m_109929_(FastColor.ARGB32.m_13665_(i), FastColor.ARGB32.m_13667_(i), FastColor.ARGB32.m_13669_(i), 255); + int i = entity.getTeamColor(); + outlinebuffersource.setColor(FastColor.ARGB32.red(i), FastColor.ARGB32.green(i), FastColor.ARGB32.blue(i), 255); } else { -+ if (this.m_109817_() && entity.hasCustomOutlineRendering(this.f_109461_.f_91074_)) { // FORGE: allow custom outline rendering ++ if (this.shouldShowEntityOutlines() && entity.hasCustomOutlineRendering(this.minecraft.player)) { // FORGE: allow custom outline rendering + flag2 = true; + } multibuffersource = multibuffersource$buffersource; } @@ -963,12 +_,14 @@ - multibuffersource$buffersource.m_109912_(RenderType.m_110452_(TextureAtlas.f_118259_)); - multibuffersource$buffersource.m_109912_(RenderType.m_110458_(TextureAtlas.f_118259_)); - multibuffersource$buffersource.m_109912_(RenderType.m_110476_(TextureAtlas.f_118259_)); -+ net.minecraftforge.client.event.RenderLevelStageEvent.Stage.AFTER_ENTITIES.dispatch(this, p_109600_, p_254120_, this.f_109477_, p_109604_, frustum); - profilerfiller.m_6182_("blockentities"); + multibuffersource$buffersource.endBatch(RenderType.entityCutout(TextureAtlas.LOCATION_BLOCKS)); + multibuffersource$buffersource.endBatch(RenderType.entityCutoutNoCull(TextureAtlas.LOCATION_BLOCKS)); + multibuffersource$buffersource.endBatch(RenderType.entitySmoothCutout(TextureAtlas.LOCATION_BLOCKS)); ++ net.minecraftforge.client.event.RenderLevelStageEvent.Stage.AFTER_ENTITIES.dispatch(this, p_109600_, p_254120_, this.ticks, p_109604_, frustum); + profilerfiller.popPush("blockentities"); - for(SectionRenderDispatcher.RenderSection sectionrenderdispatcher$rendersection : this.f_290776_) { - List list = sectionrenderdispatcher$rendersection.m_293175_().m_293674_(); + for(SectionRenderDispatcher.RenderSection sectionrenderdispatcher$rendersection : this.visibleSections) { + List list = sectionrenderdispatcher$rendersection.getCompiled().getRenderableBlockEntities(); if (!list.isEmpty()) { for(BlockEntity blockentity1 : list) { -+ if (!frustum.m_113029_(blockentity1.getRenderBoundingBox())) continue; - BlockPos blockpos4 = blockentity1.m_58899_(); ++ if (!frustum.isVisible(blockentity1.getRenderBoundingBox())) continue; + BlockPos blockpos4 = blockentity1.getBlockPos(); MultiBufferSource multibuffersource1 = multibuffersource$buffersource; - p_109600_.m_85836_(); + p_109600_.pushPose(); @@ -985,6 +_,9 @@ }; } } -+ if (this.m_109817_() && blockentity1.hasCustomOutlineRendering(this.f_109461_.f_91074_)) { // FORGE: allow custom outline rendering ++ if (this.shouldShowEntityOutlines() && blockentity1.hasCustomOutlineRendering(this.minecraft.player)) { // FORGE: allow custom outline rendering + flag2 = true; + } - this.f_172946_.m_112267_(blockentity1, p_109601_, p_109600_, multibuffersource1); - p_109600_.m_85849_(); + this.blockEntityRenderDispatcher.render(blockentity1, p_109601_, p_109600_, multibuffersource1); + p_109600_.popPose(); @@ -994,9 +_,13 @@ - synchronized(this.f_109468_) { - for(BlockEntity blockentity : this.f_109468_) { -+ if(!frustum.m_113029_(blockentity.getRenderBoundingBox())) continue; - BlockPos blockpos3 = blockentity.m_58899_(); - p_109600_.m_85836_(); - p_109600_.m_85837_((double)blockpos3.m_123341_() - d0, (double)blockpos3.m_123342_() - d1, (double)blockpos3.m_123343_() - d2); -+ if (this.m_109817_() && blockentity.hasCustomOutlineRendering(this.f_109461_.f_91074_)) { // FORGE: allow custom outline rendering + synchronized(this.globalBlockEntities) { + for(BlockEntity blockentity : this.globalBlockEntities) { ++ if(!frustum.isVisible(blockentity.getRenderBoundingBox())) continue; + BlockPos blockpos3 = blockentity.getBlockPos(); + p_109600_.pushPose(); + p_109600_.translate((double)blockpos3.getX() - d0, (double)blockpos3.getY() - d1, (double)blockpos3.getZ() - d2); ++ if (this.shouldShowEntityOutlines() && blockentity.hasCustomOutlineRendering(this.minecraft.player)) { // FORGE: allow custom outline rendering + flag2 = true; + } - this.f_172946_.m_112267_(blockentity, p_109601_, p_109600_, multibuffersource$buffersource); - p_109600_.m_85849_(); + this.blockEntityRenderDispatcher.render(blockentity, p_109601_, p_109600_, multibuffersource$buffersource); + p_109600_.popPose(); } @@ -1019,6 +_,7 @@ - this.f_109461_.m_91385_().m_83947_(false); + this.minecraft.getMainRenderTarget().bindWrite(false); } -+ net.minecraftforge.client.event.RenderLevelStageEvent.Stage.AFTER_BLOCK_ENTITIES.dispatch(this, p_109600_, p_254120_, this.f_109477_, p_109604_, frustum); - profilerfiller.m_6182_("destroyProgress"); ++ net.minecraftforge.client.event.RenderLevelStageEvent.Stage.AFTER_BLOCK_ENTITIES.dispatch(this, p_109600_, p_254120_, this.ticks, p_109604_, frustum); + profilerfiller.popPush("destroyProgress"); - for(Long2ObjectMap.Entry> entry : this.f_109409_.long2ObjectEntrySet()) { + for(Long2ObjectMap.Entry> entry : this.destructionProgress.long2ObjectEntrySet()) { @@ -1034,7 +_,8 @@ - p_109600_.m_85837_((double)blockpos2.m_123341_() - d0, (double)blockpos2.m_123342_() - d1, (double)blockpos2.m_123343_() - d2); - PoseStack.Pose posestack$pose1 = p_109600_.m_85850_(); - VertexConsumer vertexconsumer1 = new SheetedDecalTextureGenerator(this.f_109464_.m_110108_().m_6299_(ModelBakery.f_119229_.get(k)), posestack$pose1.m_252922_(), posestack$pose1.m_252943_(), 1.0F); -- this.f_109461_.m_91289_().m_110918_(this.f_109465_.m_8055_(blockpos2), blockpos2, this.f_109465_, p_109600_, vertexconsumer1); -+ var modelData = f_109465_.getModelDataManager().getAt(blockpos2); -+ this.f_109461_.m_91289_().renderBreakingTexture(this.f_109465_.m_8055_(blockpos2), blockpos2, this.f_109465_, p_109600_, vertexconsumer1, modelData == null ? net.minecraftforge.client.model.data.ModelData.EMPTY : modelData); - p_109600_.m_85849_(); + p_109600_.translate((double)blockpos2.getX() - d0, (double)blockpos2.getY() - d1, (double)blockpos2.getZ() - d2); + PoseStack.Pose posestack$pose1 = p_109600_.last(); + VertexConsumer vertexconsumer1 = new SheetedDecalTextureGenerator(this.renderBuffers.crumblingBufferSource().getBuffer(ModelBakery.DESTROY_TYPES.get(k)), posestack$pose1.pose(), posestack$pose1.normal(), 1.0F); +- this.minecraft.getBlockRenderer().renderBreakingTexture(this.level.getBlockState(blockpos2), blockpos2, this.level, p_109600_, vertexconsumer1); ++ var modelData = level.getModelDataManager().getAt(blockpos2); ++ this.minecraft.getBlockRenderer().renderBreakingTexture(this.level.getBlockState(blockpos2), blockpos2, this.level, p_109600_, vertexconsumer1, modelData == null ? net.minecraftforge.client.model.data.ModelData.EMPTY : modelData); + p_109600_.popPose(); } } @@ -1046,10 +_,13 @@ - profilerfiller.m_6182_("outline"); - BlockPos blockpos1 = ((BlockHitResult)hitresult).m_82425_(); - BlockState blockstate = this.f_109465_.m_8055_(blockpos1); + profilerfiller.popPush("outline"); + BlockPos blockpos1 = ((BlockHitResult)hitresult).getBlockPos(); + BlockState blockstate = this.level.getBlockState(blockpos1); + if (!net.minecraftforge.client.ForgeHooksClient.onDrawHighlight(this, p_109604_, hitresult, p_109601_, p_109600_, multibuffersource$buffersource)) - if (!blockstate.m_60795_() && this.f_109465_.m_6857_().m_61937_(blockpos1)) { - VertexConsumer vertexconsumer2 = multibuffersource$buffersource.m_6299_(RenderType.m_110504_()); - this.m_109637_(p_109600_, vertexconsumer2, p_109604_.m_90592_(), d0, d1, d2, blockpos1, blockstate); + if (!blockstate.isAir() && this.level.getWorldBorder().isWithinBounds(blockpos1)) { + VertexConsumer vertexconsumer2 = multibuffersource$buffersource.getBuffer(RenderType.lines()); + this.renderHitOutline(p_109600_, vertexconsumer2, p_109604_.getEntity(), d0, d1, d2, blockpos1, blockstate); } -+ } else if (hitresult != null && hitresult.m_6662_() == HitResult.Type.ENTITY) { ++ } else if (hitresult != null && hitresult.getType() == HitResult.Type.ENTITY) { + net.minecraftforge.client.ForgeHooksClient.onDrawHighlight(this, p_109604_, hitresult, p_109601_, p_109600_, multibuffersource$buffersource); } - this.f_109461_.f_91064_.m_113457_(p_109600_, multibuffersource$buffersource, d0, d1, d2); + this.minecraft.debugRenderer.render(p_109600_, multibuffersource$buffersource, d0, d1, d2); @@ -1081,7 +_,8 @@ - this.f_109415_.m_83945_(this.f_109461_.m_91385_()); - RenderStateShard.f_110126_.m_110185_(); - profilerfiller.m_6182_("particles"); -- this.f_109461_.f_91061_.m_107336_(p_109600_, multibuffersource$buffersource, p_109606_, p_109604_, p_109601_); -+ this.f_109461_.f_91061_.render(p_109600_, multibuffersource$buffersource, p_109606_, p_109604_, p_109601_, frustum); -+ net.minecraftforge.client.event.RenderLevelStageEvent.Stage.AFTER_PARTICLES.dispatch(this, p_109600_, p_254120_, this.f_109477_, p_109604_, frustum); - RenderStateShard.f_110126_.m_110188_(); + this.particlesTarget.copyDepthFrom(this.minecraft.getMainRenderTarget()); + RenderStateShard.PARTICLES_TARGET.setupRenderState(); + profilerfiller.popPush("particles"); +- this.minecraft.particleEngine.render(p_109600_, multibuffersource$buffersource, p_109606_, p_109604_, p_109601_); ++ this.minecraft.particleEngine.render(p_109600_, multibuffersource$buffersource, p_109606_, p_109604_, p_109601_, frustum); ++ net.minecraftforge.client.event.RenderLevelStageEvent.Stage.AFTER_PARTICLES.dispatch(this, p_109600_, p_254120_, this.ticks, p_109604_, frustum); + RenderStateShard.PARTICLES_TARGET.clearRenderState(); } else { - profilerfiller.m_6182_("translucent"); + profilerfiller.popPush("translucent"); @@ -1095,7 +_,8 @@ - profilerfiller.m_6182_("string"); - this.m_293111_(RenderType.m_110503_(), p_109600_, d0, d1, d2, p_254120_); - profilerfiller.m_6182_("particles"); -- this.f_109461_.f_91061_.m_107336_(p_109600_, multibuffersource$buffersource, p_109606_, p_109604_, p_109601_); -+ this.f_109461_.f_91061_.render(p_109600_, multibuffersource$buffersource, p_109606_, p_109604_, p_109601_, frustum); -+ net.minecraftforge.client.event.RenderLevelStageEvent.Stage.AFTER_PARTICLES.dispatch(this, p_109600_, p_254120_, this.f_109477_, p_109604_, frustum); + profilerfiller.popPush("string"); + this.renderSectionLayer(RenderType.tripwire(), p_109600_, d0, d1, d2, p_254120_); + profilerfiller.popPush("particles"); +- this.minecraft.particleEngine.render(p_109600_, multibuffersource$buffersource, p_109606_, p_109604_, p_109601_); ++ this.minecraft.particleEngine.render(p_109600_, multibuffersource$buffersource, p_109606_, p_109604_, p_109601_, frustum); ++ net.minecraftforge.client.event.RenderLevelStageEvent.Stage.AFTER_PARTICLES.dispatch(this, p_109600_, p_254120_, this.ticks, p_109604_, frustum); } - posestack.m_85836_(); + posestack.pushPose(); @@ -1119,6 +_,7 @@ - RenderStateShard.f_110127_.m_110185_(); - profilerfiller.m_6182_("weather"); - this.m_109703_(p_109606_, p_109601_, d0, d1, d2); -+ net.minecraftforge.client.event.RenderLevelStageEvent.Stage.AFTER_WEATHER.dispatch(this, p_109600_, p_254120_, this.f_109477_, p_109604_, frustum); - this.m_173012_(p_109604_); - RenderStateShard.f_110127_.m_110188_(); - this.f_109418_.m_110023_(p_109601_); + RenderStateShard.WEATHER_TARGET.setupRenderState(); + profilerfiller.popPush("weather"); + this.renderSnowAndRain(p_109606_, p_109601_, d0, d1, d2); ++ net.minecraftforge.client.event.RenderLevelStageEvent.Stage.AFTER_WEATHER.dispatch(this, p_109600_, p_254120_, this.ticks, p_109604_, frustum); + this.renderWorldBorder(p_109604_); + RenderStateShard.WEATHER_TARGET.clearRenderState(); + this.transparencyChain.process(p_109601_); @@ -1127,6 +_,7 @@ RenderSystem.depthMask(false); - profilerfiller.m_6182_("weather"); - this.m_109703_(p_109606_, p_109601_, d0, d1, d2); -+ net.minecraftforge.client.event.RenderLevelStageEvent.Stage.AFTER_WEATHER.dispatch(this, p_109600_, p_254120_, this.f_109477_, p_109604_, frustum); - this.m_173012_(p_109604_); + profilerfiller.popPush("weather"); + this.renderSnowAndRain(p_109606_, p_109601_, d0, d1, d2); ++ net.minecraftforge.client.event.RenderLevelStageEvent.Stage.AFTER_WEATHER.dispatch(this, p_109600_, p_254120_, this.ticks, p_109604_, frustum); + this.renderWorldBorder(p_109604_); RenderSystem.depthMask(true); } @@ -1269,6 +_,7 @@ - shaderinstance.m_173362_(); - VertexBuffer.m_85931_(); - this.f_109461_.m_91307_().m_7238_(); -+ net.minecraftforge.client.ForgeHooksClient.dispatchRenderStage(p_298012_, this, p_298121_, p_297481_, this.f_109477_, this.f_109461_.f_91063_.m_109153_(), this.getFrustum()); - p_298012_.m_110188_(); + shaderinstance.clear(); + VertexBuffer.unbind(); + this.minecraft.getProfiler().pop(); ++ net.minecraftforge.client.ForgeHooksClient.dispatchRenderStage(p_298012_, this, p_298121_, p_297481_, this.ticks, this.minecraft.gameRenderer.getMainCamera(), this.getFrustum()); + p_298012_.clearRenderState(); } @@ -1485,6 +_,8 @@ } - public void m_202423_(PoseStack p_202424_, Matrix4f p_254034_, float p_202426_, Camera p_202427_, boolean p_202428_, Runnable p_202429_) { -+ if (f_109465_.m_104583_().renderSky(f_109465_, f_109477_, p_202426_, p_202424_, p_202427_, p_254034_, p_202428_, p_202429_)) + public void renderSky(PoseStack p_202424_, Matrix4f p_254034_, float p_202426_, Camera p_202427_, boolean p_202428_, Runnable p_202429_) { ++ if (level.effects().renderSky(level, ticks, p_202426_, p_202424_, p_202427_, p_254034_, p_202428_, p_202429_)) + return; p_202429_.run(); if (!p_202428_) { - FogType fogtype = p_202427_.m_167685_(); + FogType fogtype = p_202427_.getFluidInCamera(); @@ -1606,6 +_,8 @@ } - public void m_253054_(PoseStack p_254145_, Matrix4f p_254537_, float p_254364_, double p_253843_, double p_253663_, double p_253795_) { -+ if (f_109465_.m_104583_().renderClouds(f_109465_, f_109477_, p_254364_, p_254145_, p_253843_, p_253663_, p_253795_, p_254537_)) + public void renderClouds(PoseStack p_254145_, Matrix4f p_254537_, float p_254364_, double p_253843_, double p_253663_, double p_253795_) { ++ if (level.effects().renderClouds(level, ticks, p_254364_, p_254145_, p_253843_, p_253663_, p_253795_, p_254537_)) + return; - float f = this.f_109465_.m_104583_().m_108871_(); + float f = this.level.effects().getCloudHeight(); if (!Float.isNaN(f)) { RenderSystem.disableCull(); @@ -1792,7 +_,7 @@ boolean flag = false; - if (this.f_109461_.f_91066_.m_232080_().m_231551_() == PrioritizeChunkUpdates.NEARBY) { - BlockPos blockpos1 = sectionrenderdispatcher$rendersection.m_295500_().m_7918_(8, 8, 8); -- flag = blockpos1.m_123331_(blockpos) < 768.0D || sectionrenderdispatcher$rendersection.m_295878_(); -+ flag = !net.minecraftforge.common.ForgeConfig.CLIENT.alwaysSetupTerrainOffThread.get() && (blockpos1.m_123331_(blockpos) < 768.0D || sectionrenderdispatcher$rendersection.m_295878_()); // the target is the else block below, so invert the forge addition to get there early - } else if (this.f_109461_.f_91066_.m_232080_().m_231551_() == PrioritizeChunkUpdates.PLAYER_AFFECTED) { - flag = sectionrenderdispatcher$rendersection.m_295878_(); + if (this.minecraft.options.prioritizeChunkUpdates().get() == PrioritizeChunkUpdates.NEARBY) { + BlockPos blockpos1 = sectionrenderdispatcher$rendersection.getOrigin().offset(8, 8, 8); +- flag = blockpos1.distSqr(blockpos) < 768.0D || sectionrenderdispatcher$rendersection.isDirtyFromPlayer(); ++ flag = !net.minecraftforge.common.ForgeConfig.CLIENT.alwaysSetupTerrainOffThread.get() && (blockpos1.distSqr(blockpos) < 768.0D || sectionrenderdispatcher$rendersection.isDirtyFromPlayer()); // the target is the else block below, so invert the forge addition to get there early + } else if (this.minecraft.options.prioritizeChunkUpdates().get() == PrioritizeChunkUpdates.PLAYER_AFFECTED) { + flag = sectionrenderdispatcher$rendersection.isDirtyFromPlayer(); } @@ -2139,7 +_,23 @@ - this.f_109469_.m_110859_(p_109502_, p_109503_, p_109504_, p_109505_); + this.viewArea.setDirty(p_109502_, p_109503_, p_109504_, p_109505_); } + public Frustum getFrustum() { -+ return this.f_109442_ != null ? this.f_109442_ : this.f_172938_; ++ return this.capturedFrustum != null ? this.capturedFrustum : this.cullingFrustum; + } + + public int getTicks() { -+ return this.f_109477_; ++ return this.ticks; + } + + /** + * @deprecated Forge: Use item aware function below + */ + @Deprecated - public void m_109514_(@Nullable SoundEvent p_109515_, BlockPos p_109516_) { -+ this.playStreamingMusic(p_109515_, p_109516_, p_109515_ == null? null : RecordItem.m_43040_(p_109515_)); + public void playStreamingMusic(@Nullable SoundEvent p_109515_, BlockPos p_109516_) { ++ this.playStreamingMusic(p_109515_, p_109516_, p_109515_ == null? null : RecordItem.getBySound(p_109515_)); + } + + public void playStreamingMusic(@Nullable SoundEvent p_109515_, BlockPos p_109516_, @Nullable RecordItem musicDiscItem) { - SoundInstance soundinstance = this.f_109410_.get(p_109516_); + SoundInstance soundinstance = this.playingRecords.get(p_109516_); if (soundinstance != null) { - this.f_109461_.m_91106_().m_120399_(soundinstance); + this.minecraft.getSoundManager().stop(soundinstance); @@ -2147,7 +_,7 @@ } if (p_109515_ != null) { -- RecordItem recorditem = RecordItem.m_43040_(p_109515_); +- RecordItem recorditem = RecordItem.getBySound(p_109515_); + RecordItem recorditem = musicDiscItem; if (recorditem != null) { - this.f_109461_.f_91065_.m_93055_(recorditem.m_43050_()); + this.minecraft.gui.setNowPlaying(recorditem.getDisplayName()); } @@ -2284,7 +_,7 @@ case 1010: - Item item = Item.m_41445_(p_234307_); + Item item = Item.byId(p_234307_); if (item instanceof RecordItem recorditem) { -- this.m_109514_(recorditem.m_43051_(), p_234306_); -+ this.playStreamingMusic(recorditem.m_43051_(), p_234306_, recorditem); +- this.playStreamingMusic(recorditem.getSound(), p_234306_); ++ this.playStreamingMusic(recorditem.getSound(), p_234306_, recorditem); } break; case 1011: @@ -2437,7 +_,7 @@ case 2001: - BlockState blockstate1 = Block.m_49803_(p_234307_); - if (!blockstate1.m_60795_()) { -- SoundType soundtype = blockstate1.m_60827_(); -+ SoundType soundtype = blockstate1.getSoundType(this.f_109465_, p_234306_, null); - this.f_109465_.m_245747_(p_234306_, soundtype.m_56775_(), SoundSource.BLOCKS, (soundtype.m_56773_() + 1.0F) / 2.0F, soundtype.m_56774_() * 0.8F, false); + BlockState blockstate1 = Block.stateById(p_234307_); + if (!blockstate1.isAir()) { +- SoundType soundtype = blockstate1.getSoundType(); ++ SoundType soundtype = blockstate1.getSoundType(this.level, p_234306_, null); + this.level.playLocalSound(p_234306_, soundtype.getBreakSound(), SoundSource.BLOCKS, (soundtype.getVolume() + 1.0F) / 2.0F, soundtype.getPitch() * 0.8F, false); } @@ -2672,7 +_,7 @@ } else { - int i = p_109538_.m_45517_(LightLayer.SKY, p_109540_); - int j = p_109538_.m_45517_(LightLayer.BLOCK, p_109540_); -- int k = p_109539_.m_60791_(); + int i = p_109538_.getBrightness(LightLayer.SKY, p_109540_); + int j = p_109538_.getBrightness(LightLayer.BLOCK, p_109540_); +- int k = p_109539_.getLightEmission(); + int k = p_109539_.getLightEmission(p_109538_, p_109540_); if (j < k) { j = k; diff --git a/patches/minecraft/net/minecraft/client/renderer/LightTexture.java.patch b/patches/minecraft/net/minecraft/client/renderer/LightTexture.java.patch index dae4524bc8..b846c6931a 100644 --- a/patches/minecraft/net/minecraft/client/renderer/LightTexture.java.patch +++ b/patches/minecraft/net/minecraft/client/renderer/LightTexture.java.patch @@ -4,7 +4,7 @@ } } -+ clientlevel.m_104583_().adjustLightmapColors(clientlevel, p_109882_, f, f7, f8, j, i, vector3f1); ++ clientlevel.effects().adjustLightmapColors(clientlevel, p_109882_, f, f7, f8, j, i, vector3f1); + if (f5 > 0.0F) { float f13 = Math.max(vector3f1.x(), Math.max(vector3f1.y(), vector3f1.z())); @@ -12,9 +12,9 @@ @@ -192,7 +_,7 @@ } - public static int m_109883_(int p_109884_) { + public static int block(int p_109884_) { - return p_109884_ >> 4 & '\uffff'; + return (p_109884_ & 0xFFFF) >> 4; // Forge: Fix fullbright quads showing dark artifacts. Reported as MC-169806 } - public static int m_109894_(int p_109895_) { + public static int sky(int p_109895_) { diff --git a/patches/minecraft/net/minecraft/client/renderer/PostChain.java.patch b/patches/minecraft/net/minecraft/client/renderer/PostChain.java.patch index db8fa4adba..892e044096 100644 --- a/patches/minecraft/net/minecraft/client/renderer/PostChain.java.patch +++ b/patches/minecraft/net/minecraft/client/renderer/PostChain.java.patch @@ -5,16 +5,16 @@ } - ResourceLocation resourcelocation = new ResourceLocation("textures/effect/" + s4 + ".png"); -+ ResourceLocation rl = ResourceLocation.m_135820_(s4); -+ ResourceLocation resourcelocation = new ResourceLocation(rl.m_135827_(), "textures/effect/" + rl.m_135815_() + ".png"); - this.f_110007_.m_213713_(resourcelocation).orElseThrow(() -> { ++ ResourceLocation rl = ResourceLocation.tryParse(s4); ++ ResourceLocation resourcelocation = new ResourceLocation(rl.getNamespace(), "textures/effect/" + rl.getPath() + ".png"); + this.resourceManager.getResource(resourcelocation).orElseThrow(() -> { return new ChainedJsonException("Render target or texture '" + s4 + "' does not exist"); }); @@ -260,6 +_,7 @@ - public void m_110038_(String p_110039_, int p_110040_, int p_110041_) { - RenderTarget rendertarget = new TextureTarget(p_110040_, p_110041_, true, Minecraft.f_91002_); - rendertarget.m_83931_(0.0F, 0.0F, 0.0F, 0.0F); -+ if (f_110006_.isStencilEnabled()) { rendertarget.enableStencil(); } - this.f_110010_.put(p_110039_, rendertarget); - if (p_110040_ == this.f_110013_ && p_110041_ == this.f_110014_) { - this.f_110011_.add(rendertarget); + public void addTempTarget(String p_110039_, int p_110040_, int p_110041_) { + RenderTarget rendertarget = new TextureTarget(p_110040_, p_110041_, true, Minecraft.ON_OSX); + rendertarget.setClearColor(0.0F, 0.0F, 0.0F, 0.0F); ++ if (screenTarget.isStencilEnabled()) { rendertarget.enableStencil(); } + this.customRenderTargets.put(p_110039_, rendertarget); + if (p_110040_ == this.screenWidth && p_110041_ == this.screenHeight) { + this.fullSizedTargets.add(rendertarget); diff --git a/patches/minecraft/net/minecraft/client/renderer/RenderType.java.patch b/patches/minecraft/net/minecraft/client/renderer/RenderType.java.patch index 13f64f8008..09c1d12cad 100644 --- a/patches/minecraft/net/minecraft/client/renderer/RenderType.java.patch +++ b/patches/minecraft/net/minecraft/client/renderer/RenderType.java.patch @@ -3,47 +3,47 @@ @@ -322,7 +_,7 @@ } - public static RenderType m_110497_(ResourceLocation p_110498_) { -- return f_173173_.apply(p_110498_); + public static RenderType text(ResourceLocation p_110498_) { +- return TEXT.apply(p_110498_); + return net.minecraftforge.client.ForgeRenderTypes.getText(p_110498_); } - public static RenderType m_269058_() { + public static RenderType textBackground() { @@ -330,19 +_,19 @@ } - public static RenderType m_173237_(ResourceLocation p_173238_) { -- return f_173174_.apply(p_173238_); + public static RenderType textIntensity(ResourceLocation p_173238_) { +- return TEXT_INTENSITY.apply(p_173238_); + return net.minecraftforge.client.ForgeRenderTypes.getTextIntensity(p_173238_); } - public static RenderType m_181444_(ResourceLocation p_181445_) { -- return f_181442_.apply(p_181445_); + public static RenderType textPolygonOffset(ResourceLocation p_181445_) { +- return TEXT_POLYGON_OFFSET.apply(p_181445_); + return net.minecraftforge.client.ForgeRenderTypes.getTextPolygonOffset(p_181445_); } - public static RenderType m_181446_(ResourceLocation p_181447_) { -- return f_181443_.apply(p_181447_); + public static RenderType textIntensityPolygonOffset(ResourceLocation p_181447_) { +- return TEXT_INTENSITY_POLYGON_OFFSET.apply(p_181447_); + return net.minecraftforge.client.ForgeRenderTypes.getTextIntensityPolygonOffset(p_181447_); } - public static RenderType m_110500_(ResourceLocation p_110501_) { -- return f_173175_.apply(p_110501_); + public static RenderType textSeeThrough(ResourceLocation p_110501_) { +- return TEXT_SEE_THROUGH.apply(p_110501_); + return net.minecraftforge.client.ForgeRenderTypes.getTextSeeThrough(p_110501_); } - public static RenderType m_269508_() { + public static RenderType textBackgroundSeeThrough() { @@ -350,7 +_,7 @@ } - public static RenderType m_173240_(ResourceLocation p_173241_) { -- return f_173176_.apply(p_173241_); + public static RenderType textIntensitySeeThrough(ResourceLocation p_173241_) { +- return TEXT_INTENSITY_SEE_THROUGH.apply(p_173241_); + return net.minecraftforge.client.ForgeRenderTypes.getTextIntensitySeeThrough(p_173241_); } - public static RenderType m_110502_() { + public static RenderType lightning() { @@ -677,4 +_,17 @@ - return this.f_110696_; + return this.name; } } + @@ -55,7 +55,7 @@ + } + static { + int i = 0; -+ for (var layer : m_110506_()) ++ for (var layer : chunkBufferLayers()) + layer.chunkLayerId = i++; + } + // FORGE END diff --git a/patches/minecraft/net/minecraft/client/renderer/ScreenEffectRenderer.java.patch b/patches/minecraft/net/minecraft/client/renderer/ScreenEffectRenderer.java.patch index 8e6a0899bd..b087be5853 100644 --- a/patches/minecraft/net/minecraft/client/renderer/ScreenEffectRenderer.java.patch +++ b/patches/minecraft/net/minecraft/client/renderer/ScreenEffectRenderer.java.patch @@ -1,35 +1,35 @@ --- a/net/minecraft/client/renderer/ScreenEffectRenderer.java +++ b/net/minecraft/client/renderer/ScreenEffectRenderer.java @@ -30,18 +_,22 @@ - public static void m_110718_(Minecraft p_110719_, PoseStack p_110720_) { - Player player = p_110719_.f_91074_; - if (!player.f_19794_) { -- BlockState blockstate = m_110716_(player); + public static void renderScreenEffect(Minecraft p_110719_, PoseStack p_110720_) { + Player player = p_110719_.player; + if (!player.noPhysics) { +- BlockState blockstate = getViewBlockingState(player); - if (blockstate != null) { -- m_173296_(p_110719_.m_91289_().m_110907_().m_110882_(blockstate), p_110720_); +- renderTex(p_110719_.getBlockRenderer().getBlockModelShaper().getParticleIcon(blockstate), p_110720_); + org.apache.commons.lang3.tuple.Pair overlay = getOverlayBlock(player); + if (overlay != null) { + if (!net.minecraftforge.client.ForgeHooksClient.renderBlockOverlay(player, p_110720_, net.minecraftforge.client.event.RenderBlockScreenEffectEvent.OverlayType.BLOCK, overlay.getLeft(), overlay.getRight())) -+ m_173296_(p_110719_.m_91289_().m_110907_().getTexture(overlay.getLeft(), p_110719_.f_91073_, overlay.getRight()), p_110720_); ++ renderTex(p_110719_.getBlockRenderer().getBlockModelShaper().getTexture(overlay.getLeft(), p_110719_.level, overlay.getRight()), p_110720_); } } - if (!p_110719_.f_91074_.m_5833_()) { - if (p_110719_.f_91074_.m_204029_(FluidTags.f_13131_)) { + if (!p_110719_.player.isSpectator()) { + if (p_110719_.player.isEyeInFluid(FluidTags.WATER)) { + if (!net.minecraftforge.client.ForgeHooksClient.renderWaterOverlay(player, p_110720_)) - m_110725_(p_110719_, p_110720_); + renderWater(p_110719_, p_110720_); } + else if (!player.getEyeInFluidType().isAir()) net.minecraftforge.client.extensions.common.IClientFluidTypeExtensions.of(player.getEyeInFluidType()).renderOverlay(p_110719_, p_110720_); - if (p_110719_.f_91074_.m_6060_()) { + if (p_110719_.player.isOnFire()) { + if (!net.minecraftforge.client.ForgeHooksClient.renderFireOverlay(player, p_110720_)) - m_110728_(p_110719_, p_110720_); + renderFire(p_110719_, p_110720_); } } @@ -50,6 +_,11 @@ @Nullable - private static BlockState m_110716_(Player p_110717_) { + private static BlockState getViewBlockingState(Player p_110717_) { + return getOverlayBlock(p_110717_).getLeft(); + } + @@ -39,25 +39,25 @@ for(int i = 0; i < 8; ++i) { @@ -59,7 +_,7 @@ - blockpos$mutableblockpos.m_122169_(d0, d1, d2); - BlockState blockstate = p_110717_.m_9236_().m_8055_(blockpos$mutableblockpos); - if (blockstate.m_60799_() != RenderShape.INVISIBLE && blockstate.m_60831_(p_110717_.m_9236_(), blockpos$mutableblockpos)) { + blockpos$mutableblockpos.set(d0, d1, d2); + BlockState blockstate = p_110717_.level().getBlockState(blockpos$mutableblockpos); + if (blockstate.getRenderShape() != RenderShape.INVISIBLE && blockstate.isViewBlocking(p_110717_.level(), blockpos$mutableblockpos)) { - return blockstate; -+ return org.apache.commons.lang3.tuple.Pair.of(blockstate, blockpos$mutableblockpos.m_7949_()); ++ return org.apache.commons.lang3.tuple.Pair.of(blockstate, blockpos$mutableblockpos.immutable()); } } @@ -90,8 +_,12 @@ } - private static void m_110725_(Minecraft p_110726_, PoseStack p_110727_) { -+ renderFluid(p_110726_, p_110727_, f_110714_); + private static void renderWater(Minecraft p_110726_, PoseStack p_110727_) { ++ renderFluid(p_110726_, p_110727_, UNDERWATER_LOCATION); + } + + public static void renderFluid(Minecraft p_110726_, PoseStack p_110727_, ResourceLocation texture) { - RenderSystem.setShader(GameRenderer::m_172817_); -- RenderSystem.setShaderTexture(0, f_110714_); + RenderSystem.setShader(GameRenderer::getPositionTexShader); +- RenderSystem.setShaderTexture(0, UNDERWATER_LOCATION); + RenderSystem.setShaderTexture(0, texture); - BufferBuilder bufferbuilder = Tesselator.m_85913_().m_85915_(); - BlockPos blockpos = BlockPos.m_274561_(p_110726_.f_91074_.m_20185_(), p_110726_.f_91074_.m_20188_(), p_110726_.f_91074_.m_20189_()); - float f = LightTexture.m_234316_(p_110726_.f_91074_.m_9236_().m_6042_(), p_110726_.f_91074_.m_9236_().m_46803_(blockpos)); + BufferBuilder bufferbuilder = Tesselator.getInstance().getBuilder(); + BlockPos blockpos = BlockPos.containing(p_110726_.player.getX(), p_110726_.player.getEyeY(), p_110726_.player.getZ()); + float f = LightTexture.getBrightness(p_110726_.player.level().dimensionType(), p_110726_.player.level().getMaxLocalRawBrightness(blockpos)); diff --git a/patches/minecraft/net/minecraft/client/renderer/ShaderInstance.java.patch b/patches/minecraft/net/minecraft/client/renderer/ShaderInstance.java.patch index e364c6f162..830643f33f 100644 --- a/patches/minecraft/net/minecraft/client/renderer/ShaderInstance.java.patch +++ b/patches/minecraft/net/minecraft/client/renderer/ShaderInstance.java.patch @@ -2,53 +2,53 @@ +++ b/net/minecraft/client/renderer/ShaderInstance.java @@ -98,10 +_,14 @@ @Nullable - public final Uniform f_173320_; + public final Uniform CHUNK_OFFSET; + @Deprecated // FORGE: Use the ResourceLocation variant below public ShaderInstance(ResourceProvider p_173336_, String p_173337_, VertexFormat p_173338_) throws IOException { -- this.f_173300_ = p_173337_; +- this.name = p_173337_; + this(p_173336_, new ResourceLocation(p_173337_), p_173338_); + } + public ShaderInstance(ResourceProvider p_173336_, ResourceLocation shaderLocation, VertexFormat p_173338_) throws IOException { -+ this.f_173300_ = shaderLocation.m_135827_().equals("minecraft") ? shaderLocation.m_135815_() : shaderLocation.toString(); - this.f_173307_ = p_173338_; ++ this.name = shaderLocation.getNamespace().equals("minecraft") ? shaderLocation.getPath() : shaderLocation.toString(); + this.vertexFormat = p_173338_; - ResourceLocation resourcelocation = new ResourceLocation("shaders/core/" + p_173337_ + ".json"); -+ ResourceLocation resourcelocation = new ResourceLocation(shaderLocation.m_135827_(), "shaders/core/" + shaderLocation.m_135815_() + ".json"); ++ ResourceLocation resourcelocation = new ResourceLocation(shaderLocation.getNamespace(), "shaders/core/" + shaderLocation.getPath() + ".json"); - try (Reader reader = p_173336_.m_215597_(resourcelocation)) { - JsonObject jsonobject = GsonHelper.m_13859_(reader); + try (Reader reader = p_173336_.openAsReader(resourcelocation)) { + JsonObject jsonobject = GsonHelper.parse(reader); @@ -208,8 +_,10 @@ - Program program1 = p_173342_.m_85570_().get(p_173343_); + Program program1 = p_173342_.getPrograms().get(p_173343_); Program program; if (program1 == null) { -- String s = "shaders/core/" + p_173343_ + p_173342_.m_85569_(); -- Resource resource = p_173341_.m_215593_(new ResourceLocation(s)); +- String s = "shaders/core/" + p_173343_ + p_173342_.getExtension(); +- Resource resource = p_173341_.getResourceOrThrow(new ResourceLocation(s)); + ResourceLocation loc = new ResourceLocation(p_173343_); -+ String s = "shaders/core/" + loc.m_135815_() + p_173342_.m_85569_(); -+ ResourceLocation resourcelocation = new ResourceLocation(loc.m_135827_(), s); -+ Resource resource = p_173341_.m_215593_(resourcelocation); ++ String s = "shaders/core/" + loc.getPath() + p_173342_.getExtension(); ++ ResourceLocation resourcelocation = new ResourceLocation(loc.getNamespace(), s); ++ Resource resource = p_173341_.getResourceOrThrow(resourcelocation); - try (InputStream inputstream = resource.m_215507_()) { - final String s1 = FileUtil.m_179922_(s); + try (InputStream inputstream = resource.open()) { + final String s1 = FileUtil.getFullResourcePath(s); @@ -217,16 +_,17 @@ - private final Set f_173369_ = Sets.newHashSet(); + private final Set importedPaths = Sets.newHashSet(); - public String m_142138_(boolean p_173374_, String p_173375_) { -- p_173375_ = FileUtil.m_179924_((p_173374_ ? s1 : "shaders/include/") + p_173375_); -- if (!this.f_173369_.add(p_173375_)) { + public String applyImport(boolean p_173374_, String p_173375_) { +- p_173375_ = FileUtil.normalizeResourcePath((p_173374_ ? s1 : "shaders/include/") + p_173375_); +- if (!this.importedPaths.add(p_173375_)) { + // FORGE: use the mod's namespace to look up resources if specified + ResourceLocation resourcelocation = net.minecraftforge.client.ForgeHooksClient.getShaderImportLocation(s1, p_173374_, p_173375_); -+ if (!this.f_173369_.add(resourcelocation.toString())) { ++ if (!this.importedPaths.add(resourcelocation.toString())) { return null; } else { - ResourceLocation resourcelocation = new ResourceLocation(p_173375_); - try (Reader reader = p_173341_.m_215597_(resourcelocation)) { + try (Reader reader = p_173341_.openAsReader(resourcelocation)) { return IOUtils.toString(reader); } catch (IOException ioexception) { -- ShaderInstance.f_173323_.error("Could not open GLSL import {}: {}", p_173375_, ioexception.getMessage()); +- ShaderInstance.LOGGER.error("Could not open GLSL import {}: {}", p_173375_, ioexception.getMessage()); + // FORGE: specify the namespace of the failed import in case of duplicates from multiple mods -+ ShaderInstance.f_173323_.error("Could not open GLSL import {}: {}", resourcelocation, ioexception.getMessage()); ++ ShaderInstance.LOGGER.error("Could not open GLSL import {}: {}", resourcelocation, ioexception.getMessage()); return "#error " + ioexception.getMessage(); } } diff --git a/patches/minecraft/net/minecraft/client/renderer/Sheets.java.patch b/patches/minecraft/net/minecraft/client/renderer/Sheets.java.patch index e21a8cc190..8dd89c6adf 100644 --- a/patches/minecraft/net/minecraft/client/renderer/Sheets.java.patch +++ b/patches/minecraft/net/minecraft/client/renderer/Sheets.java.patch @@ -3,19 +3,19 @@ @@ -146,11 +_,13 @@ } - private static Material m_173385_(WoodType p_173386_) { -- return new Material(f_110739_, new ResourceLocation("entity/signs/" + p_173386_.f_61839_())); -+ ResourceLocation location = new ResourceLocation(p_173386_.f_61839_()); -+ return new Material(f_110739_, new ResourceLocation(location.m_135827_(), "entity/signs/" + location.m_135815_())); + private static Material createSignMaterial(WoodType p_173386_) { +- return new Material(SIGN_SHEET, new ResourceLocation("entity/signs/" + p_173386_.name())); ++ ResourceLocation location = new ResourceLocation(p_173386_.name()); ++ return new Material(SIGN_SHEET, new ResourceLocation(location.getNamespace(), "entity/signs/" + location.getPath())); } - private static Material m_245275_(WoodType p_251735_) { -- return new Material(f_110739_, new ResourceLocation("entity/signs/hanging/" + p_251735_.f_61839_())); -+ ResourceLocation location = new ResourceLocation(p_251735_.f_61839_()); -+ return new Material(f_110739_, new ResourceLocation(location.m_135827_(), "entity/signs/hanging/" + location.m_135815_())); + private static Material createHangingSignMaterial(WoodType p_251735_) { +- return new Material(SIGN_SHEET, new ResourceLocation("entity/signs/hanging/" + p_251735_.name())); ++ ResourceLocation location = new ResourceLocation(p_251735_.name()); ++ return new Material(SIGN_SHEET, new ResourceLocation(location.getNamespace(), "entity/signs/hanging/" + location.getPath())); } - public static Material m_173381_(WoodType p_173382_) { + public static Material getSignMaterial(WoodType p_173382_) { @@ -209,6 +_,23 @@ case SINGLE: default: @@ -27,8 +27,8 @@ + * Not threadsafe. Enqueue it in client setup. + */ + public static void addWoodType(WoodType woodType) { -+ f_110743_.put(woodType, m_173385_(woodType)); -+ f_244291_.put(woodType, m_245275_(woodType)); ++ SIGN_MATERIALS.put(woodType, createSignMaterial(woodType)); ++ HANGING_SIGN_MATERIALS.put(woodType, createHangingSignMaterial(woodType)); + } + + static { diff --git a/patches/minecraft/net/minecraft/client/renderer/SpriteCoordinateExpander.java.patch b/patches/minecraft/net/minecraft/client/renderer/SpriteCoordinateExpander.java.patch index 7607a660d4..f249d04f50 100644 --- a/patches/minecraft/net/minecraft/client/renderer/SpriteCoordinateExpander.java.patch +++ b/patches/minecraft/net/minecraft/client/renderer/SpriteCoordinateExpander.java.patch @@ -3,40 +3,40 @@ @@ -16,27 +_,33 @@ } - public VertexConsumer m_5483_(double p_110801_, double p_110802_, double p_110803_) { -- return this.f_110795_.m_5483_(p_110801_, p_110802_, p_110803_); -+ this.f_110795_.m_5483_(p_110801_, p_110802_, p_110803_); + public VertexConsumer vertex(double p_110801_, double p_110802_, double p_110803_) { +- return this.delegate.vertex(p_110801_, p_110802_, p_110803_); ++ this.delegate.vertex(p_110801_, p_110802_, p_110803_); + return this; //Forge: Fix MC-263524 not working with chained methods } - public VertexConsumer m_6122_(int p_110826_, int p_110827_, int p_110828_, int p_110829_) { -- return this.f_110795_.m_6122_(p_110826_, p_110827_, p_110828_, p_110829_); -+ this.f_110795_.m_6122_(p_110826_, p_110827_, p_110828_, p_110829_); + public VertexConsumer color(int p_110826_, int p_110827_, int p_110828_, int p_110829_) { +- return this.delegate.color(p_110826_, p_110827_, p_110828_, p_110829_); ++ this.delegate.color(p_110826_, p_110827_, p_110828_, p_110829_); + return this; //Forge: Fix MC-263524 not working with chained methods } - public VertexConsumer m_7421_(float p_110805_, float p_110806_) { -- return this.f_110795_.m_7421_(this.f_110796_.m_118367_(p_110805_), this.f_110796_.m_118393_(p_110806_)); -+ this.f_110795_.m_7421_(this.f_110796_.m_118367_(p_110805_), this.f_110796_.m_118393_(p_110806_)); + public VertexConsumer uv(float p_110805_, float p_110806_) { +- return this.delegate.uv(this.sprite.getU(p_110805_), this.sprite.getV(p_110806_)); ++ this.delegate.uv(this.sprite.getU(p_110805_), this.sprite.getV(p_110806_)); + return this; //Forge: Fix MC-263524 not working with chained methods } - public VertexConsumer m_7122_(int p_110823_, int p_110824_) { -- return this.f_110795_.m_7122_(p_110823_, p_110824_); -+ this.f_110795_.m_7122_(p_110823_, p_110824_); + public VertexConsumer overlayCoords(int p_110823_, int p_110824_) { +- return this.delegate.overlayCoords(p_110823_, p_110824_); ++ this.delegate.overlayCoords(p_110823_, p_110824_); + return this; //Forge: Fix MC-263524 not working with chained methods } - public VertexConsumer m_7120_(int p_110835_, int p_110836_) { -- return this.f_110795_.m_7120_(p_110835_, p_110836_); -+ this.f_110795_.m_7120_(p_110835_, p_110836_); + public VertexConsumer uv2(int p_110835_, int p_110836_) { +- return this.delegate.uv2(p_110835_, p_110836_); ++ this.delegate.uv2(p_110835_, p_110836_); + return this; //Forge: Fix MC-263524 not working with chained methods } - public VertexConsumer m_5601_(float p_110831_, float p_110832_, float p_110833_) { -- return this.f_110795_.m_5601_(p_110831_, p_110832_, p_110833_); -+ this.f_110795_.m_5601_(p_110831_, p_110832_, p_110833_); + public VertexConsumer normal(float p_110831_, float p_110832_, float p_110833_) { +- return this.delegate.normal(p_110831_, p_110832_, p_110833_); ++ this.delegate.normal(p_110831_, p_110832_, p_110833_); + return this; //Forge: Fix MC-263524 not working with chained methods } - public void m_5752_() { + public void endVertex() { diff --git a/patches/minecraft/net/minecraft/client/renderer/block/BlockModelShaper.java.patch b/patches/minecraft/net/minecraft/client/renderer/block/BlockModelShaper.java.patch index eaf386db5e..380eca98a3 100644 --- a/patches/minecraft/net/minecraft/client/renderer/block/BlockModelShaper.java.patch +++ b/patches/minecraft/net/minecraft/client/renderer/block/BlockModelShaper.java.patch @@ -1,19 +1,19 @@ --- a/net/minecraft/client/renderer/block/BlockModelShaper.java +++ b/net/minecraft/client/renderer/block/BlockModelShaper.java @@ -21,8 +_,15 @@ - this.f_110878_ = p_110880_; + this.modelManager = p_110880_; } + @Deprecated - public TextureAtlasSprite m_110882_(BlockState p_110883_) { -- return this.m_110893_(p_110883_).m_6160_(); -+ return this.m_110893_(p_110883_).getParticleIcon(net.minecraftforge.client.model.data.ModelData.EMPTY); + public TextureAtlasSprite getParticleIcon(BlockState p_110883_) { +- return this.getBlockModel(p_110883_).getParticleIcon(); ++ return this.getBlockModel(p_110883_).getParticleIcon(net.minecraftforge.client.model.data.ModelData.EMPTY); + } + + public TextureAtlasSprite getTexture(BlockState p_110883_, net.minecraft.world.level.Level level, net.minecraft.core.BlockPos pos) { + var data = level.getModelDataManager().getAt(pos); -+ BakedModel model = this.m_110893_(p_110883_); ++ BakedModel model = this.getBlockModel(p_110883_); + return model.getParticleIcon(model.getModelData(level, pos, p_110883_, data == null ? net.minecraftforge.client.model.data.ModelData.EMPTY : data)); } - public BakedModel m_110893_(BlockState p_110894_) { + public BakedModel getBlockModel(BlockState p_110894_) { diff --git a/patches/minecraft/net/minecraft/client/renderer/block/BlockRenderDispatcher.java.patch b/patches/minecraft/net/minecraft/client/renderer/block/BlockRenderDispatcher.java.patch index 277060bdaa..a01655c93f 100644 --- a/patches/minecraft/net/minecraft/client/renderer/block/BlockRenderDispatcher.java.patch +++ b/patches/minecraft/net/minecraft/client/renderer/block/BlockRenderDispatcher.java.patch @@ -1,68 +1,68 @@ --- a/net/minecraft/client/renderer/block/BlockRenderDispatcher.java +++ b/net/minecraft/client/renderer/block/BlockRenderDispatcher.java @@ -37,7 +_,7 @@ - this.f_110899_ = p_173399_; - this.f_173397_ = p_173400_; - this.f_110903_ = p_173401_; -- this.f_110900_ = new ModelBlockRenderer(this.f_110903_); -+ this.f_110900_ = new net.minecraftforge.client.model.lighting.ForgeModelBlockRenderer(this.f_110903_); - this.f_110901_ = new LiquidBlockRenderer(); + this.blockModelShaper = p_173399_; + this.blockEntityRenderer = p_173400_; + this.blockColors = p_173401_; +- this.modelRenderer = new ModelBlockRenderer(this.blockColors); ++ this.modelRenderer = new net.minecraftforge.client.model.lighting.ForgeModelBlockRenderer(this.blockColors); + this.liquidBlockRenderer = new LiquidBlockRenderer(); } @@ -45,19 +_,27 @@ - return this.f_110899_; + return this.blockModelShaper; } + @Deprecated //Forge: Model data parameter - public void m_110918_(BlockState p_110919_, BlockPos p_110920_, BlockAndTintGetter p_110921_, PoseStack p_110922_, VertexConsumer p_110923_) { + public void renderBreakingTexture(BlockState p_110919_, BlockPos p_110920_, BlockAndTintGetter p_110921_, PoseStack p_110922_, VertexConsumer p_110923_) { + renderBreakingTexture(p_110919_, p_110920_, p_110921_, p_110922_, p_110923_, net.minecraftforge.client.model.data.ModelData.EMPTY); + } + public void renderBreakingTexture(BlockState p_110919_, BlockPos p_110920_, BlockAndTintGetter p_110921_, PoseStack p_110922_, VertexConsumer p_110923_, net.minecraftforge.client.model.data.ModelData modelData) { - if (p_110919_.m_60799_() == RenderShape.MODEL) { - BakedModel bakedmodel = this.f_110899_.m_110893_(p_110919_); - long i = p_110919_.m_60726_(p_110920_); -- this.f_110900_.m_234379_(p_110921_, bakedmodel, p_110919_, p_110920_, p_110922_, p_110923_, true, this.f_110902_, i, OverlayTexture.f_118083_); -+ this.f_110900_.tesselateBlock(p_110921_, bakedmodel, p_110919_, p_110920_, p_110922_, p_110923_, true, this.f_110902_, i, OverlayTexture.f_118083_, modelData, null); + if (p_110919_.getRenderShape() == RenderShape.MODEL) { + BakedModel bakedmodel = this.blockModelShaper.getBlockModel(p_110919_); + long i = p_110919_.getSeed(p_110920_); +- this.modelRenderer.tesselateBlock(p_110921_, bakedmodel, p_110919_, p_110920_, p_110922_, p_110923_, true, this.random, i, OverlayTexture.NO_OVERLAY); ++ this.modelRenderer.tesselateBlock(p_110921_, bakedmodel, p_110919_, p_110920_, p_110922_, p_110923_, true, this.random, i, OverlayTexture.NO_OVERLAY, modelData, null); } } + @Deprecated //Forge: Model data and render type parameter - public void m_234355_(BlockState p_234356_, BlockPos p_234357_, BlockAndTintGetter p_234358_, PoseStack p_234359_, VertexConsumer p_234360_, boolean p_234361_, RandomSource p_234362_) { + public void renderBatched(BlockState p_234356_, BlockPos p_234357_, BlockAndTintGetter p_234358_, PoseStack p_234359_, VertexConsumer p_234360_, boolean p_234361_, RandomSource p_234362_) { + renderBatched(p_234356_, p_234357_, p_234358_, p_234359_, p_234360_, p_234361_, p_234362_, net.minecraftforge.client.model.data.ModelData.EMPTY, null); + } + public void renderBatched(BlockState p_234356_, BlockPos p_234357_, BlockAndTintGetter p_234358_, PoseStack p_234359_, VertexConsumer p_234360_, boolean p_234361_, RandomSource p_234362_, net.minecraftforge.client.model.data.ModelData modelData, net.minecraft.client.renderer.RenderType renderType) { try { - RenderShape rendershape = p_234356_.m_60799_(); + RenderShape rendershape = p_234356_.getRenderShape(); if (rendershape == RenderShape.MODEL) { -- this.f_110900_.m_234379_(p_234358_, this.m_110910_(p_234356_), p_234356_, p_234357_, p_234359_, p_234360_, p_234361_, p_234362_, p_234356_.m_60726_(p_234357_), OverlayTexture.f_118083_); -+ this.f_110900_.tesselateBlock(p_234358_, this.m_110910_(p_234356_), p_234356_, p_234357_, p_234359_, p_234360_, p_234361_, p_234362_, p_234356_.m_60726_(p_234357_), OverlayTexture.f_118083_, modelData, renderType); +- this.modelRenderer.tesselateBlock(p_234358_, this.getBlockModel(p_234356_), p_234356_, p_234357_, p_234359_, p_234360_, p_234361_, p_234362_, p_234356_.getSeed(p_234357_), OverlayTexture.NO_OVERLAY); ++ this.modelRenderer.tesselateBlock(p_234358_, this.getBlockModel(p_234356_), p_234356_, p_234357_, p_234359_, p_234360_, p_234361_, p_234362_, p_234356_.getSeed(p_234357_), OverlayTexture.NO_OVERLAY, modelData, renderType); } } catch (Throwable throwable) { @@ -87,7 +_,11 @@ - return this.f_110899_.m_110893_(p_110911_); + return this.blockModelShaper.getBlockModel(p_110911_); } + @Deprecated //Forge: Model data and render type parameter - public void m_110912_(BlockState p_110913_, PoseStack p_110914_, MultiBufferSource p_110915_, int p_110916_, int p_110917_) { + public void renderSingleBlock(BlockState p_110913_, PoseStack p_110914_, MultiBufferSource p_110915_, int p_110916_, int p_110917_) { + renderSingleBlock(p_110913_, p_110914_, p_110915_, p_110916_, p_110917_, net.minecraftforge.client.model.data.ModelData.EMPTY, null); + } + public void renderSingleBlock(BlockState p_110913_, PoseStack p_110914_, MultiBufferSource p_110915_, int p_110916_, int p_110917_, net.minecraftforge.client.model.data.ModelData modelData, net.minecraft.client.renderer.RenderType renderType) { - RenderShape rendershape = p_110913_.m_60799_(); + RenderShape rendershape = p_110913_.getRenderShape(); if (rendershape != RenderShape.INVISIBLE) { switch (rendershape) { @@ -97,10 +_,12 @@ float f = (float)(i >> 16 & 255) / 255.0F; float f1 = (float)(i >> 8 & 255) / 255.0F; float f2 = (float)(i & 255) / 255.0F; -- this.f_110900_.m_111067_(p_110914_.m_85850_(), p_110915_.m_6299_(ItemBlockRenderTypes.m_109284_(p_110913_, false)), p_110913_, bakedmodel, f, f1, f2, p_110916_, p_110917_); -+ for (net.minecraft.client.renderer.RenderType rt : bakedmodel.getRenderTypes(p_110913_, RandomSource.m_216335_(42), modelData)) -+ this.f_110900_.renderModel(p_110914_.m_85850_(), p_110915_.m_6299_(renderType != null ? renderType : net.minecraftforge.client.RenderTypeHelper.getEntityRenderType(rt, false)), p_110913_, bakedmodel, f, f1, f2, p_110916_, p_110917_, modelData, rt); +- this.modelRenderer.renderModel(p_110914_.last(), p_110915_.getBuffer(ItemBlockRenderTypes.getRenderType(p_110913_, false)), p_110913_, bakedmodel, f, f1, f2, p_110916_, p_110917_); ++ for (net.minecraft.client.renderer.RenderType rt : bakedmodel.getRenderTypes(p_110913_, RandomSource.create(42), modelData)) ++ this.modelRenderer.renderModel(p_110914_.last(), p_110915_.getBuffer(renderType != null ? renderType : net.minecraftforge.client.RenderTypeHelper.getEntityRenderType(rt, false)), p_110913_, bakedmodel, f, f1, f2, p_110916_, p_110917_, modelData, rt); break; case ENTITYBLOCK_ANIMATED: -- this.f_173397_.m_108829_(new ItemStack(p_110913_.m_60734_()), ItemDisplayContext.NONE, p_110914_, p_110915_, p_110916_, p_110917_); -+ ItemStack stack = new ItemStack(p_110913_.m_60734_()); -+ net.minecraftforge.client.extensions.common.IClientItemExtensions.of(stack).getCustomRenderer().m_108829_(stack, ItemDisplayContext.NONE, p_110914_, p_110915_, p_110916_, p_110917_); +- this.blockEntityRenderer.renderByItem(new ItemStack(p_110913_.getBlock()), ItemDisplayContext.NONE, p_110914_, p_110915_, p_110916_, p_110917_); ++ ItemStack stack = new ItemStack(p_110913_.getBlock()); ++ net.minecraftforge.client.extensions.common.IClientItemExtensions.of(stack).getCustomRenderer().renderByItem(stack, ItemDisplayContext.NONE, p_110914_, p_110915_, p_110916_, p_110917_); } } diff --git a/patches/minecraft/net/minecraft/client/renderer/block/LiquidBlockRenderer.java.patch b/patches/minecraft/net/minecraft/client/renderer/block/LiquidBlockRenderer.java.patch index fb3b29a908..b78d0e6870 100644 --- a/patches/minecraft/net/minecraft/client/renderer/block/LiquidBlockRenderer.java.patch +++ b/patches/minecraft/net/minecraft/client/renderer/block/LiquidBlockRenderer.java.patch @@ -2,10 +2,10 @@ +++ b/net/minecraft/client/renderer/block/LiquidBlockRenderer.java @@ -68,8 +_,9 @@ - public void m_234369_(BlockAndTintGetter p_234370_, BlockPos p_234371_, VertexConsumer p_234372_, BlockState p_234373_, FluidState p_234374_) { - boolean flag = p_234374_.m_205070_(FluidTags.f_13132_); -- TextureAtlasSprite[] atextureatlassprite = flag ? this.f_110940_ : this.f_110941_; -- int i = flag ? 16777215 : BiomeColors.m_108811_(p_234370_, p_234371_); + public void tesselate(BlockAndTintGetter p_234370_, BlockPos p_234371_, VertexConsumer p_234372_, BlockState p_234373_, FluidState p_234374_) { + boolean flag = p_234374_.is(FluidTags.LAVA); +- TextureAtlasSprite[] atextureatlassprite = flag ? this.lavaIcons : this.waterIcons; +- int i = flag ? 16777215 : BiomeColors.getAverageWaterColor(p_234370_, p_234371_); + TextureAtlasSprite[] atextureatlassprite = net.minecraftforge.client.ForgeHooksClient.getFluidSprites(p_234370_, p_234371_, p_234374_); + int i = net.minecraftforge.client.extensions.common.IClientFluidTypeExtensions.of(p_234374_).getTintColor(p_234374_, p_234370_, p_234371_); + float alpha = (float)(i >> 24 & 255) / 255.0F; @@ -16,19 +16,19 @@ float f52 = f4 * f; float f30 = f4 * f1; float f31 = f4 * f2; -- this.m_110984_(p_234372_, d1 + 0.0D, d2 + (double)f8, d0 + 0.0D, f52, f30, f31, f18, f22, l); -- this.m_110984_(p_234372_, d1 + 0.0D, d2 + (double)f10, d0 + 1.0D, f52, f30, f31, f19, f23, l); -- this.m_110984_(p_234372_, d1 + 1.0D, d2 + (double)f9, d0 + 1.0D, f52, f30, f31, f20, f24, l); -- this.m_110984_(p_234372_, d1 + 1.0D, d2 + (double)f7, d0 + 0.0D, f52, f30, f31, f21, f25, l); +- this.vertex(p_234372_, d1 + 0.0D, d2 + (double)f8, d0 + 0.0D, f52, f30, f31, f18, f22, l); +- this.vertex(p_234372_, d1 + 0.0D, d2 + (double)f10, d0 + 1.0D, f52, f30, f31, f19, f23, l); +- this.vertex(p_234372_, d1 + 1.0D, d2 + (double)f9, d0 + 1.0D, f52, f30, f31, f20, f24, l); +- this.vertex(p_234372_, d1 + 1.0D, d2 + (double)f7, d0 + 0.0D, f52, f30, f31, f21, f25, l); + this.vertex(p_234372_, d1 + 0.0D, d2 + (double)f8, d0 + 0.0D, f52, f30, f31, alpha, f18, f22, l); + this.vertex(p_234372_, d1 + 0.0D, d2 + (double)f10, d0 + 1.0D, f52, f30, f31, alpha, f19, f23, l); + this.vertex(p_234372_, d1 + 1.0D, d2 + (double)f9, d0 + 1.0D, f52, f30, f31, alpha, f20, f24, l); + this.vertex(p_234372_, d1 + 1.0D, d2 + (double)f7, d0 + 0.0D, f52, f30, f31, alpha, f21, f25, l); - if (p_234374_.m_76171_(p_234370_, p_234371_.m_7494_())) { -- this.m_110984_(p_234372_, d1 + 0.0D, d2 + (double)f8, d0 + 0.0D, f52, f30, f31, f18, f22, l); -- this.m_110984_(p_234372_, d1 + 1.0D, d2 + (double)f7, d0 + 0.0D, f52, f30, f31, f21, f25, l); -- this.m_110984_(p_234372_, d1 + 1.0D, d2 + (double)f9, d0 + 1.0D, f52, f30, f31, f20, f24, l); -- this.m_110984_(p_234372_, d1 + 0.0D, d2 + (double)f10, d0 + 1.0D, f52, f30, f31, f19, f23, l); + if (p_234374_.shouldRenderBackwardUpFace(p_234370_, p_234371_.above())) { +- this.vertex(p_234372_, d1 + 0.0D, d2 + (double)f8, d0 + 0.0D, f52, f30, f31, f18, f22, l); +- this.vertex(p_234372_, d1 + 1.0D, d2 + (double)f7, d0 + 0.0D, f52, f30, f31, f21, f25, l); +- this.vertex(p_234372_, d1 + 1.0D, d2 + (double)f9, d0 + 1.0D, f52, f30, f31, f20, f24, l); +- this.vertex(p_234372_, d1 + 0.0D, d2 + (double)f10, d0 + 1.0D, f52, f30, f31, f19, f23, l); + this.vertex(p_234372_, d1 + 0.0D, d2 + (double)f8, d0 + 0.0D, f52, f30, f31, alpha, f18, f22, l); + this.vertex(p_234372_, d1 + 1.0D, d2 + (double)f7, d0 + 0.0D, f52, f30, f31, alpha, f21, f25, l); + this.vertex(p_234372_, d1 + 1.0D, d2 + (double)f9, d0 + 1.0D, f52, f30, f31, alpha, f20, f24, l); @@ -40,27 +40,27 @@ float f46 = f3 * f; float f47 = f3 * f1; float f48 = f3 * f2; -- this.m_110984_(p_234372_, d1, d2 + (double)f17, d0 + 1.0D, f46, f47, f48, f40, f43, k); -- this.m_110984_(p_234372_, d1, d2 + (double)f17, d0, f46, f47, f48, f40, f42, k); -- this.m_110984_(p_234372_, d1 + 1.0D, d2 + (double)f17, d0, f46, f47, f48, f41, f42, k); -- this.m_110984_(p_234372_, d1 + 1.0D, d2 + (double)f17, d0 + 1.0D, f46, f47, f48, f41, f43, k); +- this.vertex(p_234372_, d1, d2 + (double)f17, d0 + 1.0D, f46, f47, f48, f40, f43, k); +- this.vertex(p_234372_, d1, d2 + (double)f17, d0, f46, f47, f48, f40, f42, k); +- this.vertex(p_234372_, d1 + 1.0D, d2 + (double)f17, d0, f46, f47, f48, f41, f42, k); +- this.vertex(p_234372_, d1 + 1.0D, d2 + (double)f17, d0 + 1.0D, f46, f47, f48, f41, f43, k); + this.vertex(p_234372_, d1, d2 + (double)f17, d0 + 1.0D, f46, f47, f48, alpha, f40, f43, k); + this.vertex(p_234372_, d1, d2 + (double)f17, d0, f46, f47, f48, alpha, f40, f42, k); + this.vertex(p_234372_, d1 + 1.0D, d2 + (double)f17, d0, f46, f47, f48, alpha, f41, f42, k); + this.vertex(p_234372_, d1 + 1.0D, d2 + (double)f17, d0 + 1.0D, f46, f47, f48, alpha, f41, f43, k); } - int j = this.m_110945_(p_234370_, p_234371_); + int j = this.getLightColor(p_234370_, p_234371_); @@ -256,10 +_,9 @@ - if (flag7 && !m_203179_(p_234370_, p_234371_, direction, Math.max(f44, f45), p_234370_.m_8055_(p_234371_.m_121945_(direction)))) { - BlockPos blockpos = p_234371_.m_121945_(direction); + if (flag7 && !isFaceOccludedByNeighbor(p_234370_, p_234371_, direction, Math.max(f44, f45), p_234370_.getBlockState(p_234371_.relative(direction)))) { + BlockPos blockpos = p_234371_.relative(direction); TextureAtlasSprite textureatlassprite2 = atextureatlassprite[1]; - if (!flag) { -- Block block = p_234370_.m_8055_(blockpos).m_60734_(); +- Block block = p_234370_.getBlockState(blockpos).getBlock(); - if (block instanceof HalfTransparentBlock || block instanceof LeavesBlock) { -- textureatlassprite2 = this.f_110942_; +- textureatlassprite2 = this.waterOverlay; + if (atextureatlassprite[2] != null) { -+ if (p_234370_.m_8055_(blockpos).shouldDisplayFluidOverlay(p_234370_, blockpos, p_234374_)) { ++ if (p_234370_.getBlockState(blockpos).shouldDisplayFluidOverlay(p_234370_, blockpos, p_234374_)) { + textureatlassprite2 = atextureatlassprite[2]; } } @@ -69,19 +69,19 @@ float f37 = f4 * f36 * f; float f38 = f4 * f36 * f1; float f39 = f4 * f36 * f2; -- this.m_110984_(p_234372_, d3, d2 + (double)f44, d4, f37, f38, f39, f53, f33, j); -- this.m_110984_(p_234372_, d5, d2 + (double)f45, d6, f37, f38, f39, f32, f34, j); -- this.m_110984_(p_234372_, d5, d2 + (double)f17, d6, f37, f38, f39, f32, f35, j); -- this.m_110984_(p_234372_, d3, d2 + (double)f17, d4, f37, f38, f39, f53, f35, j); +- this.vertex(p_234372_, d3, d2 + (double)f44, d4, f37, f38, f39, f53, f33, j); +- this.vertex(p_234372_, d5, d2 + (double)f45, d6, f37, f38, f39, f32, f34, j); +- this.vertex(p_234372_, d5, d2 + (double)f17, d6, f37, f38, f39, f32, f35, j); +- this.vertex(p_234372_, d3, d2 + (double)f17, d4, f37, f38, f39, f53, f35, j); + this.vertex(p_234372_, d3, d2 + (double)f44, d4, f37, f38, f39, alpha, f53, f33, j); + this.vertex(p_234372_, d5, d2 + (double)f45, d6, f37, f38, f39, alpha, f32, f34, j); + this.vertex(p_234372_, d5, d2 + (double)f17, d6, f37, f38, f39, alpha, f32, f35, j); + this.vertex(p_234372_, d3, d2 + (double)f17, d4, f37, f38, f39, alpha, f53, f35, j); - if (textureatlassprite2 != this.f_110942_) { -- this.m_110984_(p_234372_, d3, d2 + (double)f17, d4, f37, f38, f39, f53, f35, j); -- this.m_110984_(p_234372_, d5, d2 + (double)f17, d6, f37, f38, f39, f32, f35, j); -- this.m_110984_(p_234372_, d5, d2 + (double)f45, d6, f37, f38, f39, f32, f34, j); -- this.m_110984_(p_234372_, d3, d2 + (double)f44, d4, f37, f38, f39, f53, f33, j); + if (textureatlassprite2 != this.waterOverlay) { +- this.vertex(p_234372_, d3, d2 + (double)f17, d4, f37, f38, f39, f53, f35, j); +- this.vertex(p_234372_, d5, d2 + (double)f17, d6, f37, f38, f39, f32, f35, j); +- this.vertex(p_234372_, d5, d2 + (double)f45, d6, f37, f38, f39, f32, f34, j); +- this.vertex(p_234372_, d3, d2 + (double)f44, d4, f37, f38, f39, f53, f33, j); + this.vertex(p_234372_, d3, d2 + (double)f17, d4, f37, f38, f39, alpha, f53, f35, j); + this.vertex(p_234372_, d5, d2 + (double)f17, d6, f37, f38, f39, alpha, f32, f35, j); + this.vertex(p_234372_, d5, d2 + (double)f45, d6, f37, f38, f39, alpha, f32, f34, j); @@ -93,10 +93,10 @@ } } -- private void m_110984_(VertexConsumer p_110985_, double p_110986_, double p_110987_, double p_110988_, float p_110989_, float p_110990_, float p_110991_, float p_110992_, float p_110993_, int p_110994_) { -- p_110985_.m_5483_(p_110986_, p_110987_, p_110988_).m_85950_(p_110989_, p_110990_, p_110991_, 1.0F).m_7421_(p_110992_, p_110993_).m_85969_(p_110994_).m_5601_(0.0F, 1.0F, 0.0F).m_5752_(); +- private void vertex(VertexConsumer p_110985_, double p_110986_, double p_110987_, double p_110988_, float p_110989_, float p_110990_, float p_110991_, float p_110992_, float p_110993_, int p_110994_) { +- p_110985_.vertex(p_110986_, p_110987_, p_110988_).color(p_110989_, p_110990_, p_110991_, 1.0F).uv(p_110992_, p_110993_).uv2(p_110994_).normal(0.0F, 1.0F, 0.0F).endVertex(); + private void vertex(VertexConsumer p_110985_, double p_110986_, double p_110987_, double p_110988_, float p_110989_, float p_110990_, float p_110991_, float alpha, float p_110992_, float p_110993_, int p_110994_) { -+ p_110985_.m_5483_(p_110986_, p_110987_, p_110988_).m_85950_(p_110989_, p_110990_, p_110991_, alpha).m_7421_(p_110992_, p_110993_).m_85969_(p_110994_).m_5601_(0.0F, 1.0F, 0.0F).m_5752_(); ++ p_110985_.vertex(p_110986_, p_110987_, p_110988_).color(p_110989_, p_110990_, p_110991_, alpha).uv(p_110992_, p_110993_).uv2(p_110994_).normal(0.0F, 1.0F, 0.0F).endVertex(); } - private int m_110945_(BlockAndTintGetter p_110946_, BlockPos p_110947_) { + private int getLightColor(BlockAndTintGetter p_110946_, BlockPos p_110947_) { diff --git a/patches/minecraft/net/minecraft/client/renderer/block/ModelBlockRenderer.java.patch b/patches/minecraft/net/minecraft/client/renderer/block/ModelBlockRenderer.java.patch index 1d90c4ade1..e493a7c572 100644 --- a/patches/minecraft/net/minecraft/client/renderer/block/ModelBlockRenderer.java.patch +++ b/patches/minecraft/net/minecraft/client/renderer/block/ModelBlockRenderer.java.patch @@ -1,25 +1,25 @@ --- a/net/minecraft/client/renderer/block/ModelBlockRenderer.java +++ b/net/minecraft/client/renderer/block/ModelBlockRenderer.java @@ -40,16 +_,20 @@ - this.f_110995_ = p_110999_; + this.blockColors = p_110999_; } + @Deprecated //Forge: Model data and render type parameter - public void m_234379_(BlockAndTintGetter p_234380_, BakedModel p_234381_, BlockState p_234382_, BlockPos p_234383_, PoseStack p_234384_, VertexConsumer p_234385_, boolean p_234386_, RandomSource p_234387_, long p_234388_, int p_234389_) { -- boolean flag = Minecraft.m_91086_() && p_234382_.m_60791_() == 0 && p_234381_.m_7541_(); + public void tesselateBlock(BlockAndTintGetter p_234380_, BakedModel p_234381_, BlockState p_234382_, BlockPos p_234383_, PoseStack p_234384_, VertexConsumer p_234385_, boolean p_234386_, RandomSource p_234387_, long p_234388_, int p_234389_) { +- boolean flag = Minecraft.useAmbientOcclusion() && p_234382_.getLightEmission() == 0 && p_234381_.useAmbientOcclusion(); + tesselateBlock(p_234380_, p_234381_, p_234382_, p_234383_, p_234384_, p_234385_, p_234386_, p_234387_, p_234388_, p_234389_, net.minecraftforge.client.model.data.ModelData.EMPTY, null); + } + public void tesselateBlock(BlockAndTintGetter p_234380_, BakedModel p_234381_, BlockState p_234382_, BlockPos p_234383_, PoseStack p_234384_, VertexConsumer p_234385_, boolean p_234386_, RandomSource p_234387_, long p_234388_, int p_234389_, net.minecraftforge.client.model.data.ModelData modelData, net.minecraft.client.renderer.RenderType renderType) { -+ boolean flag = Minecraft.m_91086_() && p_234382_.getLightEmission(p_234380_, p_234383_) == 0 && p_234381_.useAmbientOcclusion(p_234382_, renderType); - Vec3 vec3 = p_234382_.m_60824_(p_234380_, p_234383_); - p_234384_.m_85837_(vec3.f_82479_, vec3.f_82480_, vec3.f_82481_); ++ boolean flag = Minecraft.useAmbientOcclusion() && p_234382_.getLightEmission(p_234380_, p_234383_) == 0 && p_234381_.useAmbientOcclusion(p_234382_, renderType); + Vec3 vec3 = p_234382_.getOffset(p_234380_, p_234383_); + p_234384_.translate(vec3.x, vec3.y, vec3.z); try { if (flag) { -- this.m_234390_(p_234380_, p_234381_, p_234382_, p_234383_, p_234384_, p_234385_, p_234386_, p_234387_, p_234388_, p_234389_); +- this.tesselateWithAO(p_234380_, p_234381_, p_234382_, p_234383_, p_234384_, p_234385_, p_234386_, p_234387_, p_234388_, p_234389_); + this.tesselateWithAO(p_234380_, p_234381_, p_234382_, p_234383_, p_234384_, p_234385_, p_234386_, p_234387_, p_234388_, p_234389_, modelData, renderType); } else { -- this.m_234401_(p_234380_, p_234381_, p_234382_, p_234383_, p_234384_, p_234385_, p_234386_, p_234387_, p_234388_, p_234389_); +- this.tesselateWithoutAO(p_234380_, p_234381_, p_234382_, p_234383_, p_234384_, p_234385_, p_234386_, p_234387_, p_234388_, p_234389_); + this.tesselateWithoutAO(p_234380_, p_234381_, p_234382_, p_234383_, p_234384_, p_234385_, p_234386_, p_234387_, p_234388_, p_234389_, modelData, renderType); } @@ -29,109 +29,109 @@ } + @Deprecated //Forge: Model data and render type parameter - public void m_234390_(BlockAndTintGetter p_234391_, BakedModel p_234392_, BlockState p_234393_, BlockPos p_234394_, PoseStack p_234395_, VertexConsumer p_234396_, boolean p_234397_, RandomSource p_234398_, long p_234399_, int p_234400_) { + public void tesselateWithAO(BlockAndTintGetter p_234391_, BakedModel p_234392_, BlockState p_234393_, BlockPos p_234394_, PoseStack p_234395_, VertexConsumer p_234396_, boolean p_234397_, RandomSource p_234398_, long p_234399_, int p_234400_) { + tesselateWithAO(p_234391_, p_234392_, p_234393_, p_234394_, p_234395_, p_234396_, p_234397_, p_234398_, p_234399_, p_234400_, net.minecraftforge.client.model.data.ModelData.EMPTY, null); + } + public void tesselateWithAO(BlockAndTintGetter p_111079_, BakedModel p_111080_, BlockState p_111081_, BlockPos p_111082_, PoseStack p_111083_, VertexConsumer p_111084_, boolean p_111085_, RandomSource p_111086_, long p_111087_, int p_111088_, net.minecraftforge.client.model.data.ModelData modelData, net.minecraft.client.renderer.RenderType renderType) { - float[] afloat = new float[f_173405_.length * 2]; + float[] afloat = new float[DIRECTIONS.length * 2]; BitSet bitset = new BitSet(3); ModelBlockRenderer.AmbientOcclusionFace modelblockrenderer$ambientocclusionface = new ModelBlockRenderer.AmbientOcclusionFace(); -- BlockPos.MutableBlockPos blockpos$mutableblockpos = p_234394_.m_122032_(); -+ BlockPos.MutableBlockPos blockpos$mutableblockpos = p_111082_.m_122032_(); +- BlockPos.MutableBlockPos blockpos$mutableblockpos = p_234394_.mutable(); ++ BlockPos.MutableBlockPos blockpos$mutableblockpos = p_111082_.mutable(); - for(Direction direction : f_173405_) { -- p_234398_.m_188584_(p_234399_); -- List list = p_234392_.m_213637_(p_234393_, direction, p_234398_); -+ p_111086_.m_188584_(p_111087_); + for(Direction direction : DIRECTIONS) { +- p_234398_.setSeed(p_234399_); +- List list = p_234392_.getQuads(p_234393_, direction, p_234398_); ++ p_111086_.setSeed(p_111087_); + List list = p_111080_.getQuads(p_111081_, direction, p_111086_, modelData, renderType); if (!list.isEmpty()) { -- blockpos$mutableblockpos.m_122159_(p_234394_, direction); -- if (!p_234397_ || Block.m_152444_(p_234393_, p_234391_, p_234394_, direction, blockpos$mutableblockpos)) { -- this.m_111012_(p_234391_, p_234393_, p_234394_, p_234395_, p_234396_, list, afloat, bitset, modelblockrenderer$ambientocclusionface, p_234400_); -+ blockpos$mutableblockpos.m_122159_(p_111082_, direction); -+ if (!p_111085_ || Block.m_152444_(p_111081_, p_111079_, p_111082_, direction, blockpos$mutableblockpos)) { -+ this.m_111012_(p_111079_, p_111081_, p_111082_, p_111083_, p_111084_, list, afloat, bitset, modelblockrenderer$ambientocclusionface, p_111088_); +- blockpos$mutableblockpos.setWithOffset(p_234394_, direction); +- if (!p_234397_ || Block.shouldRenderFace(p_234393_, p_234391_, p_234394_, direction, blockpos$mutableblockpos)) { +- this.renderModelFaceAO(p_234391_, p_234393_, p_234394_, p_234395_, p_234396_, list, afloat, bitset, modelblockrenderer$ambientocclusionface, p_234400_); ++ blockpos$mutableblockpos.setWithOffset(p_111082_, direction); ++ if (!p_111085_ || Block.shouldRenderFace(p_111081_, p_111079_, p_111082_, direction, blockpos$mutableblockpos)) { ++ this.renderModelFaceAO(p_111079_, p_111081_, p_111082_, p_111083_, p_111084_, list, afloat, bitset, modelblockrenderer$ambientocclusionface, p_111088_); } } } -- p_234398_.m_188584_(p_234399_); -- List list1 = p_234392_.m_213637_(p_234393_, (Direction)null, p_234398_); -+ p_111086_.m_188584_(p_111087_); +- p_234398_.setSeed(p_234399_); +- List list1 = p_234392_.getQuads(p_234393_, (Direction)null, p_234398_); ++ p_111086_.setSeed(p_111087_); + List list1 = p_111080_.getQuads(p_111081_, (Direction)null, p_111086_, modelData, renderType); if (!list1.isEmpty()) { -- this.m_111012_(p_234391_, p_234393_, p_234394_, p_234395_, p_234396_, list1, afloat, bitset, modelblockrenderer$ambientocclusionface, p_234400_); -+ this.m_111012_(p_111079_, p_111081_, p_111082_, p_111083_, p_111084_, list1, afloat, bitset, modelblockrenderer$ambientocclusionface, p_111088_); +- this.renderModelFaceAO(p_234391_, p_234393_, p_234394_, p_234395_, p_234396_, list1, afloat, bitset, modelblockrenderer$ambientocclusionface, p_234400_); ++ this.renderModelFaceAO(p_111079_, p_111081_, p_111082_, p_111083_, p_111084_, list1, afloat, bitset, modelblockrenderer$ambientocclusionface, p_111088_); } } + @Deprecated //Forge: Model data and render type parameter - public void m_234401_(BlockAndTintGetter p_234402_, BakedModel p_234403_, BlockState p_234404_, BlockPos p_234405_, PoseStack p_234406_, VertexConsumer p_234407_, boolean p_234408_, RandomSource p_234409_, long p_234410_, int p_234411_) { + public void tesselateWithoutAO(BlockAndTintGetter p_234402_, BakedModel p_234403_, BlockState p_234404_, BlockPos p_234405_, PoseStack p_234406_, VertexConsumer p_234407_, boolean p_234408_, RandomSource p_234409_, long p_234410_, int p_234411_) { + tesselateWithoutAO(p_234402_, p_234403_, p_234404_, p_234405_, p_234406_, p_234407_, p_234408_, p_234409_, p_234410_, p_234411_, net.minecraftforge.client.model.data.ModelData.EMPTY, null); + } + public void tesselateWithoutAO(BlockAndTintGetter p_111091_, BakedModel p_111092_, BlockState p_111093_, BlockPos p_111094_, PoseStack p_111095_, VertexConsumer p_111096_, boolean p_111097_, RandomSource p_111098_, long p_111099_, int p_111100_, net.minecraftforge.client.model.data.ModelData modelData, net.minecraft.client.renderer.RenderType renderType) { BitSet bitset = new BitSet(3); -- BlockPos.MutableBlockPos blockpos$mutableblockpos = p_234405_.m_122032_(); -+ BlockPos.MutableBlockPos blockpos$mutableblockpos = p_111094_.m_122032_(); +- BlockPos.MutableBlockPos blockpos$mutableblockpos = p_234405_.mutable(); ++ BlockPos.MutableBlockPos blockpos$mutableblockpos = p_111094_.mutable(); - for(Direction direction : f_173405_) { -- p_234409_.m_188584_(p_234410_); -- List list = p_234403_.m_213637_(p_234404_, direction, p_234409_); -+ p_111098_.m_188584_(p_111099_); + for(Direction direction : DIRECTIONS) { +- p_234409_.setSeed(p_234410_); +- List list = p_234403_.getQuads(p_234404_, direction, p_234409_); ++ p_111098_.setSeed(p_111099_); + List list = p_111092_.getQuads(p_111093_, direction, p_111098_, modelData, renderType); if (!list.isEmpty()) { -- blockpos$mutableblockpos.m_122159_(p_234405_, direction); -- if (!p_234408_ || Block.m_152444_(p_234404_, p_234402_, p_234405_, direction, blockpos$mutableblockpos)) { -- int i = LevelRenderer.m_109537_(p_234402_, p_234404_, blockpos$mutableblockpos); -- this.m_111001_(p_234402_, p_234404_, p_234405_, i, p_234411_, false, p_234406_, p_234407_, list, bitset); -+ blockpos$mutableblockpos.m_122159_(p_111094_, direction); -+ if (!p_111097_ || Block.m_152444_(p_111093_, p_111091_, p_111094_, direction, blockpos$mutableblockpos)) { -+ int i = LevelRenderer.m_109537_(p_111091_, p_111093_, blockpos$mutableblockpos); -+ this.m_111001_(p_111091_, p_111093_, p_111094_, i, p_111100_, false, p_111095_, p_111096_, list, bitset); +- blockpos$mutableblockpos.setWithOffset(p_234405_, direction); +- if (!p_234408_ || Block.shouldRenderFace(p_234404_, p_234402_, p_234405_, direction, blockpos$mutableblockpos)) { +- int i = LevelRenderer.getLightColor(p_234402_, p_234404_, blockpos$mutableblockpos); +- this.renderModelFaceFlat(p_234402_, p_234404_, p_234405_, i, p_234411_, false, p_234406_, p_234407_, list, bitset); ++ blockpos$mutableblockpos.setWithOffset(p_111094_, direction); ++ if (!p_111097_ || Block.shouldRenderFace(p_111093_, p_111091_, p_111094_, direction, blockpos$mutableblockpos)) { ++ int i = LevelRenderer.getLightColor(p_111091_, p_111093_, blockpos$mutableblockpos); ++ this.renderModelFaceFlat(p_111091_, p_111093_, p_111094_, i, p_111100_, false, p_111095_, p_111096_, list, bitset); } } } -- p_234409_.m_188584_(p_234410_); -- List list1 = p_234403_.m_213637_(p_234404_, (Direction)null, p_234409_); -+ p_111098_.m_188584_(p_111099_); +- p_234409_.setSeed(p_234410_); +- List list1 = p_234403_.getQuads(p_234404_, (Direction)null, p_234409_); ++ p_111098_.setSeed(p_111099_); + List list1 = p_111092_.getQuads(p_111093_, (Direction)null, p_111098_, modelData, renderType); if (!list1.isEmpty()) { -- this.m_111001_(p_234402_, p_234404_, p_234405_, -1, p_234411_, true, p_234406_, p_234407_, list1, bitset); -+ this.m_111001_(p_111091_, p_111093_, p_111094_, -1, p_111100_, true, p_111095_, p_111096_, list1, bitset); +- this.renderModelFaceFlat(p_234402_, p_234404_, p_234405_, -1, p_234411_, true, p_234406_, p_234407_, list1, bitset); ++ this.renderModelFaceFlat(p_111091_, p_111093_, p_111094_, -1, p_111100_, true, p_111095_, p_111096_, list1, bitset); } } @@ -113,6 +_,7 @@ - private void m_111012_(BlockAndTintGetter p_111013_, BlockState p_111014_, BlockPos p_111015_, PoseStack p_111016_, VertexConsumer p_111017_, List p_111018_, float[] p_111019_, BitSet p_111020_, ModelBlockRenderer.AmbientOcclusionFace p_111021_, int p_111022_) { + private void renderModelFaceAO(BlockAndTintGetter p_111013_, BlockState p_111014_, BlockPos p_111015_, PoseStack p_111016_, VertexConsumer p_111017_, List p_111018_, float[] p_111019_, BitSet p_111020_, ModelBlockRenderer.AmbientOcclusionFace p_111021_, int p_111022_) { for(BakedQuad bakedquad : p_111018_) { - this.m_111039_(p_111013_, p_111014_, p_111015_, bakedquad.m_111303_(), bakedquad.m_111306_(), p_111019_, p_111020_); -+ if (!net.minecraftforge.client.ForgeHooksClient.calculateFaceWithoutAO(p_111013_, p_111014_, p_111015_, bakedquad, p_111020_.get(0), p_111021_.f_111149_, p_111021_.f_111150_)) - p_111021_.m_111167_(p_111013_, p_111014_, p_111015_, bakedquad.m_111306_(), p_111019_, p_111020_, bakedquad.m_111307_()); - this.m_111023_(p_111013_, p_111014_, p_111015_, p_111017_, p_111016_.m_85850_(), bakedquad, p_111021_.f_111149_[0], p_111021_.f_111149_[1], p_111021_.f_111149_[2], p_111021_.f_111149_[3], p_111021_.f_111150_[0], p_111021_.f_111150_[1], p_111021_.f_111150_[2], p_111021_.f_111150_[3], p_111022_); + this.calculateShape(p_111013_, p_111014_, p_111015_, bakedquad.getVertices(), bakedquad.getDirection(), p_111019_, p_111020_); ++ if (!net.minecraftforge.client.ForgeHooksClient.calculateFaceWithoutAO(p_111013_, p_111014_, p_111015_, bakedquad, p_111020_.get(0), p_111021_.brightness, p_111021_.lightmap)) + p_111021_.calculate(p_111013_, p_111014_, p_111015_, bakedquad.getDirection(), p_111019_, p_111020_, bakedquad.isShade()); + this.putQuadData(p_111013_, p_111014_, p_111015_, p_111017_, p_111016_.last(), bakedquad, p_111021_.brightness[0], p_111021_.brightness[1], p_111021_.brightness[2], p_111021_.brightness[3], p_111021_.lightmap[0], p_111021_.lightmap[1], p_111021_.lightmap[2], p_111021_.lightmap[3], p_111022_); } @@ -217,17 +_,21 @@ } + @Deprecated //Forge: Model data and render type parameter - public void m_111067_(PoseStack.Pose p_111068_, VertexConsumer p_111069_, @Nullable BlockState p_111070_, BakedModel p_111071_, float p_111072_, float p_111073_, float p_111074_, int p_111075_, int p_111076_) { + public void renderModel(PoseStack.Pose p_111068_, VertexConsumer p_111069_, @Nullable BlockState p_111070_, BakedModel p_111071_, float p_111072_, float p_111073_, float p_111074_, int p_111075_, int p_111076_) { + renderModel(p_111068_, p_111069_, p_111070_, p_111071_, p_111072_, p_111073_, p_111074_, p_111075_, p_111076_, net.minecraftforge.client.model.data.ModelData.EMPTY, null); + } + public void renderModel(PoseStack.Pose p_111068_, VertexConsumer p_111069_, @Nullable BlockState p_111070_, BakedModel p_111071_, float p_111072_, float p_111073_, float p_111074_, int p_111075_, int p_111076_, net.minecraftforge.client.model.data.ModelData modelData, net.minecraft.client.renderer.RenderType renderType) { - RandomSource randomsource = RandomSource.m_216327_(); + RandomSource randomsource = RandomSource.create(); long i = 42L; - for(Direction direction : f_173405_) { - randomsource.m_188584_(42L); -- m_111058_(p_111068_, p_111069_, p_111072_, p_111073_, p_111074_, p_111071_.m_213637_(p_111070_, direction, randomsource), p_111075_, p_111076_); -+ m_111058_(p_111068_, p_111069_, p_111072_, p_111073_, p_111074_, p_111071_.getQuads(p_111070_, direction, randomsource, modelData, renderType), p_111075_, p_111076_); + for(Direction direction : DIRECTIONS) { + randomsource.setSeed(42L); +- renderQuadList(p_111068_, p_111069_, p_111072_, p_111073_, p_111074_, p_111071_.getQuads(p_111070_, direction, randomsource), p_111075_, p_111076_); ++ renderQuadList(p_111068_, p_111069_, p_111072_, p_111073_, p_111074_, p_111071_.getQuads(p_111070_, direction, randomsource, modelData, renderType), p_111075_, p_111076_); } - randomsource.m_188584_(42L); -- m_111058_(p_111068_, p_111069_, p_111072_, p_111073_, p_111074_, p_111071_.m_213637_(p_111070_, (Direction)null, randomsource), p_111075_, p_111076_); -+ m_111058_(p_111068_, p_111069_, p_111072_, p_111073_, p_111074_, p_111071_.getQuads(p_111070_, (Direction)null, randomsource, modelData, renderType), p_111075_, p_111076_); + randomsource.setSeed(42L); +- renderQuadList(p_111068_, p_111069_, p_111072_, p_111073_, p_111074_, p_111071_.getQuads(p_111070_, (Direction)null, randomsource), p_111075_, p_111076_); ++ renderQuadList(p_111068_, p_111069_, p_111072_, p_111073_, p_111074_, p_111071_.getQuads(p_111070_, (Direction)null, randomsource, modelData, renderType), p_111075_, p_111076_); } - private static void m_111058_(PoseStack.Pose p_111059_, VertexConsumer p_111060_, float p_111061_, float p_111062_, float p_111063_, List p_111064_, int p_111065_, int p_111066_) { + private static void renderQuadList(PoseStack.Pose p_111059_, VertexConsumer p_111060_, float p_111061_, float p_111062_, float p_111063_, List p_111064_, int p_111065_, int p_111066_) { diff --git a/patches/minecraft/net/minecraft/client/renderer/block/model/BakedQuad.java.patch b/patches/minecraft/net/minecraft/client/renderer/block/model/BakedQuad.java.patch index 0586d173e7..de77b734fa 100644 --- a/patches/minecraft/net/minecraft/client/renderer/block/model/BakedQuad.java.patch +++ b/patches/minecraft/net/minecraft/client/renderer/block/model/BakedQuad.java.patch @@ -1,9 +1,9 @@ --- a/net/minecraft/client/renderer/block/model/BakedQuad.java +++ b/net/minecraft/client/renderer/block/model/BakedQuad.java @@ -12,13 +_,19 @@ - protected final Direction f_111294_; - protected final TextureAtlasSprite f_111295_; - private final boolean f_111296_; + protected final Direction direction; + protected final TextureAtlasSprite sprite; + private final boolean shade; + private final boolean hasAmbientOcclusion; public BakedQuad(int[] p_111298_, int p_111299_, Direction p_111300_, TextureAtlasSprite p_111301_, boolean p_111302_) { @@ -11,19 +11,19 @@ + } + + public BakedQuad(int[] p_111298_, int p_111299_, Direction p_111300_, TextureAtlasSprite p_111301_, boolean p_111302_, boolean hasAmbientOcclusion) { - this.f_111292_ = p_111298_; - this.f_111293_ = p_111299_; - this.f_111294_ = p_111300_; - this.f_111295_ = p_111301_; - this.f_111296_ = p_111302_; + this.vertices = p_111298_; + this.tintIndex = p_111299_; + this.direction = p_111300_; + this.sprite = p_111301_; + this.shade = p_111302_; + this.hasAmbientOcclusion = hasAmbientOcclusion; } - public TextureAtlasSprite m_173410_() { + public TextureAtlasSprite getSprite() { @@ -43,5 +_,9 @@ - public boolean m_111307_() { - return this.f_111296_; + public boolean isShade() { + return this.shade; + } + + public boolean hasAmbientOcclusion() { diff --git a/patches/minecraft/net/minecraft/client/renderer/block/model/BlockElement.java.patch b/patches/minecraft/net/minecraft/client/renderer/block/model/BlockElement.java.patch index 7057176f2f..c454dc177e 100644 --- a/patches/minecraft/net/minecraft/client/renderer/block/model/BlockElement.java.patch +++ b/patches/minecraft/net/minecraft/client/renderer/block/model/BlockElement.java.patch @@ -1,9 +1,9 @@ --- a/net/minecraft/client/renderer/block/model/BlockElement.java +++ b/net/minecraft/client/renderer/block/model/BlockElement.java @@ -28,14 +_,21 @@ - public final Map f_111310_; - public final BlockElementRotation f_111311_; - public final boolean f_111312_; + public final Map faces; + public final BlockElementRotation rotation; + public final boolean shade; + private net.minecraftforge.client.model.ForgeFaceData faceData; public BlockElement(Vector3f p_253626_, Vector3f p_254426_, Map p_254454_, @Nullable BlockElementRotation p_254229_, boolean p_253661_) { @@ -11,21 +11,21 @@ + } + + public BlockElement(Vector3f p_253626_, Vector3f p_254426_, Map p_254454_, @Nullable BlockElementRotation p_254229_, boolean p_253661_, net.minecraftforge.client.model.ForgeFaceData faceData) { - this.f_111308_ = p_253626_; - this.f_111309_ = p_254426_; - this.f_111310_ = p_254454_; - this.f_111311_ = p_254229_; - this.f_111312_ = p_253661_; - this.m_111319_(); + this.from = p_253626_; + this.to = p_254426_; + this.faces = p_254454_; + this.rotation = p_254229_; + this.shade = p_253661_; + this.fillUvs(); + this.setFaceData(faceData); -+ this.f_111310_.values().forEach(face -> face.parent = this); ++ this.faces.values().forEach(face -> face.parent = this); } - private void m_111319_() { + private void fillUvs() { @@ -78,7 +_,8 @@ throw new JsonParseException("Expected shade to be a Boolean"); } else { - boolean flag = GsonHelper.m_13855_(jsonobject, "shade", true); + boolean flag = GsonHelper.getAsBoolean(jsonobject, "shade", true); - return new BlockElement(vector3f, vector3f1, map, blockelementrotation, flag); + var faceData = net.minecraftforge.client.model.ForgeFaceData.read(jsonobject.get("forge_data"), net.minecraftforge.client.model.ForgeFaceData.DEFAULT); + return new BlockElement(vector3f, vector3f1, map, blockelementrotation, flag, faceData); diff --git a/patches/minecraft/net/minecraft/client/renderer/block/model/BlockElementFace.java.patch b/patches/minecraft/net/minecraft/client/renderer/block/model/BlockElementFace.java.patch index e66e31c594..4159702079 100644 --- a/patches/minecraft/net/minecraft/client/renderer/block/model/BlockElementFace.java.patch +++ b/patches/minecraft/net/minecraft/client/renderer/block/model/BlockElementFace.java.patch @@ -1,9 +1,9 @@ --- a/net/minecraft/client/renderer/block/model/BlockElementFace.java +++ b/net/minecraft/client/renderer/block/model/BlockElementFace.java @@ -19,12 +_,30 @@ - public final int f_111355_; - public final String f_111356_; - public final BlockFaceUV f_111357_; + public final int tintIndex; + public final String texture; + public final BlockFaceUV uv; + @Nullable + private final net.minecraftforge.client.model.ForgeFaceData faceData; // If null, we defer to the parent BlockElement's ForgeFaceData, which is not nullable. + @Nullable @@ -14,10 +14,10 @@ + } + + public BlockElementFace(@Nullable Direction p_111359_, int p_111360_, String p_111361_, BlockFaceUV p_111362_, @Nullable net.minecraftforge.client.model.ForgeFaceData faceData) { - this.f_111354_ = p_111359_; - this.f_111355_ = p_111360_; - this.f_111356_ = p_111361_; - this.f_111357_ = p_111362_; + this.cullForDirection = p_111359_; + this.tintIndex = p_111360_; + this.texture = p_111361_; + this.uv = p_111362_; + this.faceData = faceData; + } + @@ -32,12 +32,12 @@ @OnlyIn(Dist.CLIENT) @@ -37,7 +_,8 @@ - int i = this.m_111368_(jsonobject); - String s = this.m_111370_(jsonobject); + int i = this.getTintIndex(jsonobject); + String s = this.getTexture(jsonobject); BlockFaceUV blockfaceuv = p_111367_.deserialize(jsonobject, BlockFaceUV.class); - return new BlockElementFace(direction, i, s, blockfaceuv); + var faceData = net.minecraftforge.client.model.ForgeFaceData.read(jsonobject.get("forge_data"), null); + return new BlockElementFace(direction, i, s, blockfaceuv, faceData); } - protected int m_111368_(JsonObject p_111369_) { + protected int getTintIndex(JsonObject p_111369_) { diff --git a/patches/minecraft/net/minecraft/client/renderer/block/model/BlockModel.java.patch b/patches/minecraft/net/minecraft/client/renderer/block/model/BlockModel.java.patch index afe309ba55..d4300e68ed 100644 --- a/patches/minecraft/net/minecraft/client/renderer/block/model/BlockModel.java.patch +++ b/patches/minecraft/net/minecraft/client/renderer/block/model/BlockModel.java.patch @@ -1,54 +1,54 @@ --- a/net/minecraft/client/renderer/block/model/BlockModel.java +++ b/net/minecraft/client/renderer/block/model/BlockModel.java @@ -68,9 +_,10 @@ - public BlockModel f_111418_; + public BlockModel parent; @Nullable - protected ResourceLocation f_111419_; + protected ResourceLocation parentLocation; + public final net.minecraftforge.client.model.geometry.BlockGeometryBakingContext customData = new net.minecraftforge.client.model.geometry.BlockGeometryBakingContext(this); - public static BlockModel m_111461_(Reader p_111462_) { -- return GsonHelper.m_13776_(f_111415_, p_111462_, BlockModel.class); -+ return GsonHelper.m_13776_(net.minecraftforge.client.model.ExtendedBlockModelDeserializer.INSTANCE, p_111462_, BlockModel.class); + public static BlockModel fromStream(Reader p_111462_) { +- return GsonHelper.fromJson(GSON, p_111462_, BlockModel.class); ++ return GsonHelper.fromJson(net.minecraftforge.client.model.ExtendedBlockModelDeserializer.INSTANCE, p_111462_, BlockModel.class); } - public static BlockModel m_111463_(String p_111464_) { + public static BlockModel fromString(String p_111464_) { @@ -87,10 +_,15 @@ - this.f_111426_ = p_273099_; + this.overrides = p_273099_; } + @Deprecated - public List m_111436_() { + public List getElements() { + if (customData.hasCustomGeometry()) return java.util.Collections.emptyList(); - return this.f_111422_.isEmpty() && this.f_111418_ != null ? this.f_111418_.m_111436_() : this.f_111422_; + return this.elements.isEmpty() && this.parent != null ? this.parent.getElements() : this.elements; } + @Nullable -+ public ResourceLocation getParentLocation() { return f_111419_; } ++ public ResourceLocation getParentLocation() { return parentLocation; } + - public boolean m_111476_() { - if (this.f_111424_ != null) { - return this.f_111424_; + public boolean hasAmbientOcclusion() { + if (this.hasAmbientOcclusion != null) { + return this.hasAmbientOcclusion; @@ -119,6 +_,10 @@ - return this.f_111426_.isEmpty() ? ItemOverrides.f_111734_ : new ItemOverrides(p_250138_, p_251800_, this.f_111426_); + return this.overrides.isEmpty() ? ItemOverrides.EMPTY : new ItemOverrides(p_250138_, p_251800_, this.overrides); } + public ItemOverrides getOverrides(ModelBaker p_250138_, BlockModel p_251800_, Function spriteGetter) { -+ return this.f_111426_.isEmpty() ? ItemOverrides.f_111734_ : new ItemOverrides(p_250138_, p_251800_, this.f_111426_, spriteGetter); ++ return this.overrides.isEmpty() ? ItemOverrides.EMPTY : new ItemOverrides(p_250138_, p_251800_, this.overrides, spriteGetter); + } + - public Collection m_7970_() { + public Collection getDependencies() { Set set = Sets.newHashSet(); @@ -160,6 +_,10 @@ - blockmodel.f_111418_ = (BlockModel)unbakedmodel; + blockmodel.parent = (BlockModel)unbakedmodel; } + if (customData.hasCustomGeometry()) { + customData.getCustomGeometry().resolveParents(p_249059_, customData); + } + - this.f_111426_.forEach((p_247932_) -> { - UnbakedModel unbakedmodel1 = p_249059_.apply(p_247932_.m_111718_()); + this.overrides.forEach((p_247932_) -> { + UnbakedModel unbakedmodel1 = p_249059_.apply(p_247932_.getModel()); if (!Objects.equals(unbakedmodel1, this)) { @@ -168,11 +_,18 @@ }); @@ -58,28 +58,28 @@ + * @deprecated Forge: Use {@link #bake(ModelBaker, BlockModel, Function, ModelState, ResourceLocation, boolean)}. + */ + @Deprecated - public BakedModel m_7611_(ModelBaker p_252120_, Function p_250023_, ModelState p_251130_, ResourceLocation p_252208_) { - return this.m_111449_(p_252120_, this, p_250023_, p_251130_, p_252208_, true); + public BakedModel bake(ModelBaker p_252120_, Function p_250023_, ModelState p_251130_, ResourceLocation p_252208_) { + return this.bake(p_252120_, this, p_250023_, p_251130_, p_252208_, true); } - public BakedModel m_111449_(ModelBaker p_249720_, BlockModel p_111451_, Function p_111452_, ModelState p_111453_, ResourceLocation p_111454_, boolean p_111455_) { + public BakedModel bake(ModelBaker p_249720_, BlockModel p_111451_, Function p_111452_, ModelState p_111453_, ResourceLocation p_111454_, boolean p_111455_) { + return net.minecraftforge.client.model.geometry.UnbakedGeometryHelper.bake(this, p_249720_, p_111451_, p_111452_, p_111453_, p_111454_, p_111455_); + } + private BakedModel bakeVanilla(ModelBaker p_249720_, BlockModel p_111451_, Function p_111452_, ModelState p_111453_, ResourceLocation p_111454_, boolean p_111455_, net.minecraftforge.client.RenderTypeGroup renderTypes) { - TextureAtlasSprite textureatlassprite = p_111452_.apply(this.m_111480_("particle")); - if (this.m_111490_() == ModelBakery.f_119233_) { - return new BuiltInModel(this.m_111491_(), this.m_246736_(p_249720_, p_111451_), textureatlassprite, this.m_111479_().m_111526_()); + TextureAtlasSprite textureatlassprite = p_111452_.apply(this.getMaterial("particle")); + if (this.getRootModel() == ModelBakery.BLOCK_ENTITY_MARKER) { + return new BuiltInModel(this.getTransforms(), this.getItemOverrides(p_249720_, p_111451_), textureatlassprite, this.getGuiLight().lightLikeBlock()); @@ -255,7 +_,18 @@ - ItemTransform itemtransform5 = this.m_269178_(ItemDisplayContext.GUI); - ItemTransform itemtransform6 = this.m_269178_(ItemDisplayContext.GROUND); - ItemTransform itemtransform7 = this.m_269178_(ItemDisplayContext.FIXED); + ItemTransform itemtransform5 = this.getTransform(ItemDisplayContext.GUI); + ItemTransform itemtransform6 = this.getTransform(ItemDisplayContext.GROUND); + ItemTransform itemtransform7 = this.getTransform(ItemDisplayContext.FIXED); - return new ItemTransforms(itemtransform, itemtransform1, itemtransform2, itemtransform3, itemtransform4, itemtransform5, itemtransform6, itemtransform7); + + var builder = com.google.common.collect.ImmutableMap.builder(); + for(ItemDisplayContext type : ItemDisplayContext.values()) { + if (type.isModded()) { -+ var transform = this.m_269178_(type); -+ if (transform != ItemTransform.f_111754_) { ++ var transform = this.getTransform(type); ++ if (transform != ItemTransform.NO_TRANSFORM) { + builder.put(type, transform); + } + } @@ -88,13 +88,13 @@ + return new ItemTransforms(itemtransform, itemtransform1, itemtransform2, itemtransform3, itemtransform4, itemtransform5, itemtransform6, itemtransform7, builder.build()); } - private ItemTransform m_269178_(ItemDisplayContext p_270662_) { + private ItemTransform getTransform(ItemDisplayContext p_270662_) { @@ -373,6 +_,8 @@ - public boolean m_111526_() { + public boolean lightLikeBlock() { return this == SIDE; } + -+ public String getSerializedName() { return f_111519_; } ++ public String getSerializedName() { return name; } } @OnlyIn(Dist.CLIENT) diff --git a/patches/minecraft/net/minecraft/client/renderer/block/model/FaceBakery.java.patch b/patches/minecraft/net/minecraft/client/renderer/block/model/FaceBakery.java.patch index 9e58b4f394..82f1ed3749 100644 --- a/patches/minecraft/net/minecraft/client/renderer/block/model/FaceBakery.java.patch +++ b/patches/minecraft/net/minecraft/client/renderer/block/model/FaceBakery.java.patch @@ -1,13 +1,13 @@ --- a/net/minecraft/client/renderer/block/model/FaceBakery.java +++ b/net/minecraft/client/renderer/block/model/FaceBakery.java @@ -50,7 +_,14 @@ - this.m_111630_(aint, direction); + this.recalculateWinding(aint, direction); } -- return new BakedQuad(aint, p_111603_.f_111355_, direction, p_111604_, p_111608_); +- return new BakedQuad(aint, p_111603_.tintIndex, direction, p_111604_, p_111608_); + net.minecraftforge.client.ForgeHooksClient.fillNormal(aint, direction, p_111603_.getFaceData().calculateNormals()); + var data = p_111603_.getFaceData(); -+ var quad = new BakedQuad(aint, p_111603_.f_111355_, direction, p_111604_, p_111608_, data.ambientOcclusion()); ++ var quad = new BakedQuad(aint, p_111603_.tintIndex, direction, p_111604_, p_111608_, data.ambientOcclusion()); + if (!net.minecraftforge.client.model.ForgeFaceData.DEFAULT.equals(data)) { + net.minecraftforge.client.model.QuadTransformers.applyingLightmap(data.blockLight(), data.skyLight()).processInPlace(quad); + net.minecraftforge.client.model.QuadTransformers.applyingColor(data.color()).processInPlace(quad); @@ -15,4 +15,4 @@ + return quad; } - public static BlockFaceUV m_111581_(BlockFaceUV p_111582_, Direction p_111583_, Transformation p_111584_, ResourceLocation p_111585_) { + public static BlockFaceUV recomputeUVs(BlockFaceUV p_111582_, Direction p_111583_, Transformation p_111584_, ResourceLocation p_111585_) { diff --git a/patches/minecraft/net/minecraft/client/renderer/block/model/ItemModelGenerator.java.patch b/patches/minecraft/net/minecraft/client/renderer/block/model/ItemModelGenerator.java.patch index 7cfe812df7..801edaf8ca 100644 --- a/patches/minecraft/net/minecraft/client/renderer/block/model/ItemModelGenerator.java.patch +++ b/patches/minecraft/net/minecraft/client/renderer/block/model/ItemModelGenerator.java.patch @@ -1,9 +1,9 @@ --- a/net/minecraft/client/renderer/block/model/ItemModelGenerator.java +++ b/net/minecraft/client/renderer/block/model/ItemModelGenerator.java @@ -40,6 +_,8 @@ - map.put("particle", p_111672_.m_111477_("particle") ? Either.left(p_111672_.m_111480_("particle")) : map.get("layer0")); - BlockModel blockmodel = new BlockModel((ResourceLocation)null, list, map, false, p_111672_.m_111479_(), p_111672_.m_111491_(), p_111672_.m_111484_()); - blockmodel.f_111416_ = p_111672_.f_111416_; + map.put("particle", p_111672_.hasTexture("particle") ? Either.left(p_111672_.getMaterial("particle")) : map.get("layer0")); + BlockModel blockmodel = new BlockModel((ResourceLocation)null, list, map, false, p_111672_.getGuiLight(), p_111672_.getTransforms(), p_111672_.getOverrides()); + blockmodel.name = p_111672_.name; + blockmodel.customData.copyFrom(p_111672_.customData); + blockmodel.customData.setGui3d(false); return blockmodel; diff --git a/patches/minecraft/net/minecraft/client/renderer/block/model/ItemOverrides.java.patch b/patches/minecraft/net/minecraft/client/renderer/block/model/ItemOverrides.java.patch index e75dc89330..bb4d83a4e5 100644 --- a/patches/minecraft/net/minecraft/client/renderer/block/model/ItemOverrides.java.patch +++ b/patches/minecraft/net/minecraft/client/renderer/block/model/ItemOverrides.java.patch @@ -1,7 +1,7 @@ --- a/net/minecraft/client/renderer/block/model/ItemOverrides.java +++ b/net/minecraft/client/renderer/block/model/ItemOverrides.java @@ -32,7 +_,15 @@ - this.f_173461_ = new ResourceLocation[0]; + this.properties = new ResourceLocation[0]; } + /** @@ -13,27 +13,27 @@ + } + + public ItemOverrides(ModelBaker p_251211_, UnbakedModel p_111741_, List p_111743_, java.util.function.Function spriteGetter) { - this.f_173461_ = p_111743_.stream().flatMap(ItemOverride::m_173449_).map(ItemOverride.Predicate::m_173459_).distinct().toArray((p_173479_) -> { + this.properties = p_111743_.stream().flatMap(ItemOverride::getPredicates).map(ItemOverride.Predicate::getProperty).distinct().toArray((p_173479_) -> { return new ResourceLocation[p_173479_]; }); @@ -46,7 +_,7 @@ for(int j = p_111743_.size() - 1; j >= 0; --j) { ItemOverride itemoverride = p_111743_.get(j); -- BakedModel bakedmodel = this.m_246989_(p_251211_, p_111741_, itemoverride); +- BakedModel bakedmodel = this.bakeModel(p_251211_, p_111741_, itemoverride); + BakedModel bakedmodel = this.bakeModel(p_251211_, p_111741_, itemoverride, spriteGetter); - ItemOverrides.PropertyMatcher[] aitemoverrides$propertymatcher = itemoverride.m_173449_().map((p_173477_) -> { - int k = object2intmap.getInt(p_173477_.m_173459_()); - return new ItemOverrides.PropertyMatcher(k, p_173477_.m_173460_()); + ItemOverrides.PropertyMatcher[] aitemoverrides$propertymatcher = itemoverride.getPredicates().map((p_173477_) -> { + int k = object2intmap.getInt(p_173477_.getProperty()); + return new ItemOverrides.PropertyMatcher(k, p_173477_.getValue()); @@ -60,9 +_,9 @@ } @Nullable -- private BakedModel m_246989_(ModelBaker p_249483_, BlockModel p_251965_, ItemOverride p_250816_) { +- private BakedModel bakeModel(ModelBaker p_249483_, BlockModel p_251965_, ItemOverride p_250816_) { + private BakedModel bakeModel(ModelBaker p_249483_, UnbakedModel p_251965_, ItemOverride p_250816_, java.util.function.Function spriteGetter) { - UnbakedModel unbakedmodel = p_249483_.m_245361_(p_250816_.m_111718_()); -- return Objects.equals(unbakedmodel, p_251965_) ? null : p_249483_.m_245240_(p_250816_.m_111718_(), BlockModelRotation.X0_Y0); -+ return Objects.equals(unbakedmodel, p_251965_) ? null : p_249483_.bake(p_250816_.m_111718_(), BlockModelRotation.X0_Y0, spriteGetter); + UnbakedModel unbakedmodel = p_249483_.getModel(p_250816_.getModel()); +- return Objects.equals(unbakedmodel, p_251965_) ? null : p_249483_.bake(p_250816_.getModel(), BlockModelRotation.X0_Y0); ++ return Objects.equals(unbakedmodel, p_251965_) ? null : p_249483_.bake(p_250816_.getModel(), BlockModelRotation.X0_Y0, spriteGetter); } @Nullable @@ -44,7 +44,7 @@ + } + + public com.google.common.collect.ImmutableList getOverrides() { -+ return com.google.common.collect.ImmutableList.copyOf(f_111735_); ++ return com.google.common.collect.ImmutableList.copyOf(overrides); } @OnlyIn(Dist.CLIENT) diff --git a/patches/minecraft/net/minecraft/client/renderer/block/model/ItemTransform.java.patch b/patches/minecraft/net/minecraft/client/renderer/block/model/ItemTransform.java.patch index 9ddf4d9286..c20eb88287 100644 --- a/patches/minecraft/net/minecraft/client/renderer/block/model/ItemTransform.java.patch +++ b/patches/minecraft/net/minecraft/client/renderer/block/model/ItemTransform.java.patch @@ -1,9 +1,9 @@ --- a/net/minecraft/client/renderer/block/model/ItemTransform.java +++ b/net/minecraft/client/renderer/block/model/ItemTransform.java @@ -22,11 +_,17 @@ - public final Vector3f f_111755_; - public final Vector3f f_111756_; - public final Vector3f f_111757_; + public final Vector3f rotation; + public final Vector3f translation; + public final Vector3f scale; + public final Vector3f rightRotation; public ItemTransform(Vector3f p_254427_, Vector3f p_254496_, Vector3f p_254022_) { @@ -11,28 +11,28 @@ + } + + public ItemTransform(Vector3f p_254427_, Vector3f p_254496_, Vector3f p_254022_, Vector3f rightRotation) { - this.f_111755_ = new Vector3f((Vector3fc)p_254427_); - this.f_111756_ = new Vector3f((Vector3fc)p_254496_); - this.f_111757_ = new Vector3f((Vector3fc)p_254022_); + this.rotation = new Vector3f((Vector3fc)p_254427_); + this.translation = new Vector3f((Vector3fc)p_254496_); + this.scale = new Vector3f((Vector3fc)p_254022_); + this.rightRotation = new Vector3f(rightRotation); } - public void m_111763_(boolean p_111764_, PoseStack p_111765_) { + public void apply(boolean p_111764_, PoseStack p_111765_) { @@ -43,6 +_,7 @@ - p_111765_.m_252880_((float)i * this.f_111756_.x(), this.f_111756_.y(), this.f_111756_.z()); - p_111765_.m_252781_((new Quaternionf()).rotationXYZ(f * ((float)Math.PI / 180F), f1 * ((float)Math.PI / 180F), f2 * ((float)Math.PI / 180F))); - p_111765_.m_85841_(this.f_111757_.x(), this.f_111757_.y(), this.f_111757_.z()); -+ p_111765_.m_252781_(net.minecraftforge.common.util.TransformationHelper.quatFromXYZ(rightRotation.x(), rightRotation.y() * (p_111764_ ? -1 : 1), rightRotation.z() * (p_111764_ ? -1 : 1), true)); + p_111765_.translate((float)i * this.translation.x(), this.translation.y(), this.translation.z()); + p_111765_.mulPose((new Quaternionf()).rotationXYZ(f * ((float)Math.PI / 180F), f1 * ((float)Math.PI / 180F), f2 * ((float)Math.PI / 180F))); + p_111765_.scale(this.scale.x(), this.scale.y(), this.scale.z()); ++ p_111765_.mulPose(net.minecraftforge.common.util.TransformationHelper.quatFromXYZ(rightRotation.x(), rightRotation.y() * (p_111764_ ? -1 : 1), rightRotation.z() * (p_111764_ ? -1 : 1), true)); } } @@ -79,7 +_,8 @@ - vector3f1.set(Mth.m_14036_(vector3f1.x, -5.0F, 5.0F), Mth.m_14036_(vector3f1.y, -5.0F, 5.0F), Mth.m_14036_(vector3f1.z, -5.0F, 5.0F)); - Vector3f vector3f2 = this.m_111778_(jsonobject, "scale", f_111771_); - vector3f2.set(Mth.m_14036_(vector3f2.x, -4.0F, 4.0F), Mth.m_14036_(vector3f2.y, -4.0F, 4.0F), Mth.m_14036_(vector3f2.z, -4.0F, 4.0F)); + vector3f1.set(Mth.clamp(vector3f1.x, -5.0F, 5.0F), Mth.clamp(vector3f1.y, -5.0F, 5.0F), Mth.clamp(vector3f1.z, -5.0F, 5.0F)); + Vector3f vector3f2 = this.getVector3f(jsonobject, "scale", DEFAULT_SCALE); + vector3f2.set(Mth.clamp(vector3f2.x, -4.0F, 4.0F), Mth.clamp(vector3f2.y, -4.0F, 4.0F), Mth.clamp(vector3f2.z, -4.0F, 4.0F)); - return new ItemTransform(vector3f, vector3f1, vector3f2); -+ Vector3f rightRotation = this.m_111778_(jsonobject, "right_rotation", f_111769_); ++ Vector3f rightRotation = this.getVector3f(jsonobject, "right_rotation", DEFAULT_ROTATION); + return new ItemTransform(vector3f, vector3f1, vector3f2, rightRotation); } - private Vector3f m_111778_(JsonObject p_111779_, String p_111780_, Vector3f p_253777_) { + private Vector3f getVector3f(JsonObject p_111779_, String p_111780_, Vector3f p_253777_) { diff --git a/patches/minecraft/net/minecraft/client/renderer/block/model/ItemTransforms.java.patch b/patches/minecraft/net/minecraft/client/renderer/block/model/ItemTransforms.java.patch index 92fa476d71..6dfdc749df 100644 --- a/patches/minecraft/net/minecraft/client/renderer/block/model/ItemTransforms.java.patch +++ b/patches/minecraft/net/minecraft/client/renderer/block/model/ItemTransforms.java.patch @@ -1,23 +1,23 @@ --- a/net/minecraft/client/renderer/block/model/ItemTransforms.java +++ b/net/minecraft/client/renderer/block/model/ItemTransforms.java @@ -21,11 +_,13 @@ - public final ItemTransform f_111792_; - public final ItemTransform f_111793_; - public final ItemTransform f_111794_; + public final ItemTransform gui; + public final ItemTransform ground; + public final ItemTransform fixed; + public final com.google.common.collect.ImmutableMap moddedTransforms; private ItemTransforms() { - this(ItemTransform.f_111754_, ItemTransform.f_111754_, ItemTransform.f_111754_, ItemTransform.f_111754_, ItemTransform.f_111754_, ItemTransform.f_111754_, ItemTransform.f_111754_, ItemTransform.f_111754_); + this(ItemTransform.NO_TRANSFORM, ItemTransform.NO_TRANSFORM, ItemTransform.NO_TRANSFORM, ItemTransform.NO_TRANSFORM, ItemTransform.NO_TRANSFORM, ItemTransform.NO_TRANSFORM, ItemTransform.NO_TRANSFORM, ItemTransform.NO_TRANSFORM); } + @Deprecated public ItemTransforms(ItemTransforms p_111807_) { - this.f_111787_ = p_111807_.f_111787_; - this.f_111788_ = p_111807_.f_111788_; + this.thirdPersonLeftHand = p_111807_.thirdPersonLeftHand; + this.thirdPersonRightHand = p_111807_.thirdPersonRightHand; @@ -35,9 +_,16 @@ - this.f_111792_ = p_111807_.f_111792_; - this.f_111793_ = p_111807_.f_111793_; - this.f_111794_ = p_111807_.f_111794_; + this.gui = p_111807_.gui; + this.ground = p_111807_.ground; + this.fixed = p_111807_.fixed; + this.moddedTransforms = p_111807_.moddedTransforms; } @@ -28,42 +28,42 @@ + + public ItemTransforms(ItemTransform p_111798_, ItemTransform p_111799_, ItemTransform p_111800_, ItemTransform p_111801_, ItemTransform p_111802_, ItemTransform p_111803_, ItemTransform p_111804_, ItemTransform p_111805_, + com.google.common.collect.ImmutableMap moddedTransforms) { - this.f_111787_ = p_111798_; - this.f_111788_ = p_111799_; - this.f_111789_ = p_111800_; + this.thirdPersonLeftHand = p_111798_; + this.thirdPersonRightHand = p_111799_; + this.firstPersonLeftHand = p_111800_; @@ -46,6 +_,7 @@ - this.f_111792_ = p_111803_; - this.f_111793_ = p_111804_; - this.f_111794_ = p_111805_; + this.gui = p_111803_; + this.ground = p_111804_; + this.fixed = p_111805_; + this.moddedTransforms = moddedTransforms; } - public ItemTransform m_269404_(ItemDisplayContext p_270619_) { + public ItemTransform getTransform(ItemDisplayContext p_270619_) { @@ -76,7 +_,7 @@ - itemtransform = this.f_111794_; + itemtransform = this.fixed; break; default: -- itemtransform = ItemTransform.f_111754_; -+ return moddedTransforms.getOrDefault(p_270619_, ItemTransform.f_111754_); +- itemtransform = ItemTransform.NO_TRANSFORM; ++ return moddedTransforms.getOrDefault(p_270619_, ItemTransform.NO_TRANSFORM); } return itemtransform; @@ -106,7 +_,23 @@ - ItemTransform itemtransform5 = this.m_269518_(p_111822_, jsonobject, ItemDisplayContext.GUI); - ItemTransform itemtransform6 = this.m_269518_(p_111822_, jsonobject, ItemDisplayContext.GROUND); - ItemTransform itemtransform7 = this.m_269518_(p_111822_, jsonobject, ItemDisplayContext.FIXED); + ItemTransform itemtransform5 = this.getTransform(p_111822_, jsonobject, ItemDisplayContext.GUI); + ItemTransform itemtransform6 = this.getTransform(p_111822_, jsonobject, ItemDisplayContext.GROUND); + ItemTransform itemtransform7 = this.getTransform(p_111822_, jsonobject, ItemDisplayContext.FIXED); - return new ItemTransforms(itemtransform1, itemtransform, itemtransform3, itemtransform2, itemtransform4, itemtransform5, itemtransform6, itemtransform7); + + var builder = com.google.common.collect.ImmutableMap.builder(); + for (ItemDisplayContext type : ItemDisplayContext.values()) { + if (type.isModded()) { -+ var transform = this.m_269518_(p_111822_, jsonobject, type); ++ var transform = this.getTransform(p_111822_, jsonobject, type); + var fallbackType = type; -+ while (transform == ItemTransform.f_111754_ && fallbackType.fallback() != null) { ++ while (transform == ItemTransform.NO_TRANSFORM && fallbackType.fallback() != null) { + fallbackType = fallbackType.fallback(); -+ transform = this.m_269518_(p_111822_, jsonobject, fallbackType); ++ transform = this.getTransform(p_111822_, jsonobject, fallbackType); + } -+ if (transform != ItemTransform.f_111754_){ ++ if (transform != ItemTransform.NO_TRANSFORM){ + builder.put(type, transform); + } + } @@ -72,4 +72,4 @@ + return new ItemTransforms(itemtransform1, itemtransform, itemtransform3, itemtransform2, itemtransform4, itemtransform5, itemtransform6, itemtransform7, builder.build()); } - private ItemTransform m_269518_(JsonDeserializationContext p_270385_, JsonObject p_270436_, ItemDisplayContext p_270100_) { + private ItemTransform getTransform(JsonDeserializationContext p_270385_, JsonObject p_270436_, ItemDisplayContext p_270100_) { diff --git a/patches/minecraft/net/minecraft/client/renderer/block/model/MultiVariant.java.patch b/patches/minecraft/net/minecraft/client/renderer/block/model/MultiVariant.java.patch index aa3add577e..e4add5f59e 100644 --- a/patches/minecraft/net/minecraft/client/renderer/block/model/MultiVariant.java.patch +++ b/patches/minecraft/net/minecraft/client/renderer/block/model/MultiVariant.java.patch @@ -3,9 +3,9 @@ @@ -68,7 +_,7 @@ WeightedBakedModel.Builder weightedbakedmodel$builder = new WeightedBakedModel.Builder(); - for(Variant variant : this.m_111848_()) { -- BakedModel bakedmodel = p_249016_.m_245240_(variant.m_111883_(), variant); -+ BakedModel bakedmodel = p_249016_.bake(variant.m_111883_(), variant, p_111851_); - weightedbakedmodel$builder.m_119559_(bakedmodel, variant.m_111886_()); + for(Variant variant : this.getVariants()) { +- BakedModel bakedmodel = p_249016_.bake(variant.getModelLocation(), variant); ++ BakedModel bakedmodel = p_249016_.bake(variant.getModelLocation(), variant, p_111851_); + weightedbakedmodel$builder.add(bakedmodel, variant.getWeight()); } diff --git a/patches/minecraft/net/minecraft/client/renderer/blockentity/BlockEntityRenderers.java.patch b/patches/minecraft/net/minecraft/client/renderer/blockentity/BlockEntityRenderers.java.patch index f4370faf3d..3dfaef75a5 100644 --- a/patches/minecraft/net/minecraft/client/renderer/blockentity/BlockEntityRenderers.java.patch +++ b/patches/minecraft/net/minecraft/client/renderer/blockentity/BlockEntityRenderers.java.patch @@ -4,8 +4,8 @@ @OnlyIn(Dist.CLIENT) public class BlockEntityRenderers { -- private static final Map, BlockEntityRendererProvider> f_173587_ = Maps.newHashMap(); -+ private static final Map, BlockEntityRendererProvider> f_173587_ = new java.util.concurrent.ConcurrentHashMap<>(); +- private static final Map, BlockEntityRendererProvider> PROVIDERS = Maps.newHashMap(); ++ private static final Map, BlockEntityRendererProvider> PROVIDERS = new java.util.concurrent.ConcurrentHashMap<>(); - public static void m_173590_(BlockEntityType p_173591_, BlockEntityRendererProvider p_173592_) { - f_173587_.put(p_173591_, p_173592_); + public static void register(BlockEntityType p_173591_, BlockEntityRendererProvider p_173592_) { + PROVIDERS.put(p_173591_, p_173592_); diff --git a/patches/minecraft/net/minecraft/client/renderer/blockentity/ChestRenderer.java.patch b/patches/minecraft/net/minecraft/client/renderer/blockentity/ChestRenderer.java.patch index e077aecf77..bba6e81663 100644 --- a/patches/minecraft/net/minecraft/client/renderer/blockentity/ChestRenderer.java.patch +++ b/patches/minecraft/net/minecraft/client/renderer/blockentity/ChestRenderer.java.patch @@ -3,19 +3,19 @@ @@ -117,7 +_,7 @@ f1 = 1.0F - f1; f1 = 1.0F - f1 * f1 * f1; - int i = neighborcombineresult.m_5649_(new BrightnessCombiner<>()).applyAsInt(p_112367_); -- Material material = Sheets.m_110767_(p_112363_, chesttype, this.f_112359_); + int i = neighborcombineresult.apply(new BrightnessCombiner<>()).applyAsInt(p_112367_); +- Material material = Sheets.chooseMaterial(p_112363_, chesttype, this.xmasTextures); + Material material = this.getMaterial(p_112363_, chesttype); - VertexConsumer vertexconsumer = material.m_119194_(p_112366_, RenderType::m_110452_); + VertexConsumer vertexconsumer = material.buffer(p_112366_, RenderType::entityCutout); if (flag1) { if (chesttype == ChestType.LEFT) { @@ -139,5 +_,9 @@ - p_112372_.m_104301_(p_112370_, p_112371_, p_112376_, p_112377_); - p_112373_.m_104301_(p_112370_, p_112371_, p_112376_, p_112377_); - p_112374_.m_104301_(p_112370_, p_112371_, p_112376_, p_112377_); + p_112372_.render(p_112370_, p_112371_, p_112376_, p_112377_); + p_112373_.render(p_112370_, p_112371_, p_112376_, p_112377_); + p_112374_.render(p_112370_, p_112371_, p_112376_, p_112377_); + } + + protected Material getMaterial(T blockEntity, ChestType chestType) { -+ return Sheets.m_110767_(blockEntity, chestType, this.f_112359_); ++ return Sheets.chooseMaterial(blockEntity, chestType, this.xmasTextures); } } diff --git a/patches/minecraft/net/minecraft/client/renderer/blockentity/PistonHeadRenderer.java.patch b/patches/minecraft/net/minecraft/client/renderer/blockentity/PistonHeadRenderer.java.patch index 6fa8f4585d..e32fa126ab 100644 --- a/patches/minecraft/net/minecraft/client/renderer/blockentity/PistonHeadRenderer.java.patch +++ b/patches/minecraft/net/minecraft/client/renderer/blockentity/PistonHeadRenderer.java.patch @@ -3,13 +3,13 @@ @@ -60,9 +_,12 @@ } - private void m_112458_(BlockPos p_112459_, BlockState p_112460_, PoseStack p_112461_, MultiBufferSource p_112462_, Level p_112463_, boolean p_112464_, int p_112465_) { -+ net.minecraftforge.client.ForgeHooksClient.renderPistonMovedBlocks(p_112459_, p_112460_, p_112461_, p_112462_, p_112463_, p_112464_, p_112465_, f_112441_ == null ? f_112441_ = net.minecraft.client.Minecraft.m_91087_().m_91289_() : f_112441_); + private void renderBlock(BlockPos p_112459_, BlockState p_112460_, PoseStack p_112461_, MultiBufferSource p_112462_, Level p_112463_, boolean p_112464_, int p_112465_) { ++ net.minecraftforge.client.ForgeHooksClient.renderPistonMovedBlocks(p_112459_, p_112460_, p_112461_, p_112462_, p_112463_, p_112464_, p_112465_, blockRenderer == null ? blockRenderer = net.minecraft.client.Minecraft.getInstance().getBlockRenderer() : blockRenderer); + if(false) { - RenderType rendertype = ItemBlockRenderTypes.m_109293_(p_112460_); - VertexConsumer vertexconsumer = p_112462_.m_6299_(rendertype); - this.f_112441_.m_110937_().m_234379_(p_112463_, this.f_112441_.m_110910_(p_112460_), p_112460_, p_112459_, p_112461_, vertexconsumer, p_112464_, RandomSource.m_216327_(), p_112460_.m_60726_(p_112459_), p_112465_); + RenderType rendertype = ItemBlockRenderTypes.getMovingBlockRenderType(p_112460_); + VertexConsumer vertexconsumer = p_112462_.getBuffer(rendertype); + this.blockRenderer.getModelRenderer().tesselateBlock(p_112463_, this.blockRenderer.getBlockModel(p_112460_), p_112460_, p_112459_, p_112461_, vertexconsumer, p_112464_, RandomSource.create(), p_112460_.getSeed(p_112459_), p_112465_); + } } - public int m_142163_() { + public int getViewDistance() { diff --git a/patches/minecraft/net/minecraft/client/renderer/blockentity/SkullBlockRenderer.java.patch b/patches/minecraft/net/minecraft/client/renderer/blockentity/SkullBlockRenderer.java.patch index 4beb893aa8..3941ac956c 100644 --- a/patches/minecraft/net/minecraft/client/renderer/blockentity/SkullBlockRenderer.java.patch +++ b/patches/minecraft/net/minecraft/client/renderer/blockentity/SkullBlockRenderer.java.patch @@ -1,9 +1,9 @@ --- a/net/minecraft/client/renderer/blockentity/SkullBlockRenderer.java +++ b/net/minecraft/client/renderer/blockentity/SkullBlockRenderer.java @@ -53,6 +_,7 @@ - builder.put(SkullBlock.Types.CREEPER, new SkullModel(p_173662_.m_171103_(ModelLayers.f_171130_))); - builder.put(SkullBlock.Types.DRAGON, new DragonHeadModel(p_173662_.m_171103_(ModelLayers.f_171135_))); - builder.put(SkullBlock.Types.PIGLIN, new PiglinHeadModel(p_173662_.m_171103_(ModelLayers.f_260668_))); + builder.put(SkullBlock.Types.CREEPER, new SkullModel(p_173662_.bakeLayer(ModelLayers.CREEPER_HEAD))); + builder.put(SkullBlock.Types.DRAGON, new DragonHeadModel(p_173662_.bakeLayer(ModelLayers.DRAGON_SKULL))); + builder.put(SkullBlock.Types.PIGLIN, new PiglinHeadModel(p_173662_.bakeLayer(ModelLayers.PIGLIN_HEAD))); + net.minecraftforge.fml.ModLoader.get().postEvent(new net.minecraftforge.client.event.EntityRenderersEvent.CreateSkullModels(builder, p_173662_)); return builder.build(); } diff --git a/patches/minecraft/net/minecraft/client/renderer/chunk/RenderChunkRegion.java.patch b/patches/minecraft/net/minecraft/client/renderer/chunk/RenderChunkRegion.java.patch index 6cfca21ce4..6d2a835237 100644 --- a/patches/minecraft/net/minecraft/client/renderer/chunk/RenderChunkRegion.java.patch +++ b/patches/minecraft/net/minecraft/client/renderer/chunk/RenderChunkRegion.java.patch @@ -1,17 +1,17 @@ --- a/net/minecraft/client/renderer/chunk/RenderChunkRegion.java +++ b/net/minecraft/client/renderer/chunk/RenderChunkRegion.java @@ -66,4 +_,14 @@ - public int m_141928_() { - return this.f_112908_.m_141928_(); + public int getHeight() { + return this.level.getHeight(); } + + @Override + public float getShade(float normalX, float normalY, float normalZ, boolean shade) { -+ return this.f_112908_.getShade(normalX, normalY, normalZ, shade); ++ return this.level.getShade(normalX, normalY, normalZ, shade); + } + + @Override + public net.minecraftforge.client.model.data.ModelDataManager getModelDataManager() { -+ return f_112908_.getModelDataManager(); ++ return level.getModelDataManager(); + } } diff --git a/patches/minecraft/net/minecraft/client/renderer/chunk/SectionRenderDispatcher.java.patch b/patches/minecraft/net/minecraft/client/renderer/chunk/SectionRenderDispatcher.java.patch index bd6d900566..97360744b0 100644 --- a/patches/minecraft/net/minecraft/client/renderer/chunk/SectionRenderDispatcher.java.patch +++ b/patches/minecraft/net/minecraft/client/renderer/chunk/SectionRenderDispatcher.java.patch @@ -1,45 +1,45 @@ --- a/net/minecraft/client/renderer/chunk/SectionRenderDispatcher.java +++ b/net/minecraft/client/renderer/chunk/SectionRenderDispatcher.java @@ -78,12 +_,16 @@ - private Vec3 f_290602_ = Vec3.f_82478_; + private Vec3 camera = Vec3.ZERO; public SectionRenderDispatcher(ClientLevel p_299878_, LevelRenderer p_299032_, Executor p_298480_, boolean p_298587_, SectionBufferBuilderPack p_299187_) { + this(p_299878_, p_299032_, p_298480_, p_298587_, p_299187_, -1); + } + + public SectionRenderDispatcher(ClientLevel p_299878_, LevelRenderer p_299032_, Executor p_298480_, boolean p_298587_, SectionBufferBuilderPack p_299187_, int countRenderBuilders) { - this.f_291400_ = p_299878_; - this.f_290611_ = p_299032_; - int i = Math.max(1, (int)((double)Runtime.getRuntime().maxMemory() * 0.3D) / (RenderType.m_110506_().stream().mapToInt(RenderType::m_110507_).sum() * 4) - 1); + this.level = p_299878_; + this.renderer = p_299032_; + int i = Math.max(1, (int)((double)Runtime.getRuntime().maxMemory() * 0.3D) / (RenderType.chunkBufferLayers().stream().mapToInt(RenderType::bufferSize).sum() * 4) - 1); int j = Runtime.getRuntime().availableProcessors(); int k = p_298587_ ? j : Math.min(j, 4); - int l = Math.max(1, Math.min(k, i)); + int l = countRenderBuilders < 0 ? Math.max(1, Math.min(k, i)) : countRenderBuilders; - this.f_290794_ = p_299187_; + this.fixedBuffers = p_299187_; List list = Lists.newArrayListWithExpectedSize(l); @@ -413,7 +_,7 @@ - if (!sectionrenderdispatcher$compiledsection.f_290391_.contains(p_301074_)) { + if (!sectionrenderdispatcher$compiledsection.hasBlocks.contains(p_301074_)) { return false; } else { -- this.f_291330_ = new SectionRenderDispatcher.RenderSection.ResortTransparencyTask(this.m_293828_(), sectionrenderdispatcher$compiledsection); -+ this.f_291330_ = new SectionRenderDispatcher.RenderSection.ResortTransparencyTask(new net.minecraft.world.level.ChunkPos(m_295500_()), this.m_293828_(), sectionrenderdispatcher$compiledsection); - p_298196_.m_294204_(this.f_291330_); +- this.lastResortTransparencyTask = new SectionRenderDispatcher.RenderSection.ResortTransparencyTask(this.getDistToPlayerSqr(), sectionrenderdispatcher$compiledsection); ++ this.lastResortTransparencyTask = new SectionRenderDispatcher.RenderSection.ResortTransparencyTask(new net.minecraft.world.level.ChunkPos(getOrigin()), this.getDistToPlayerSqr(), sectionrenderdispatcher$compiledsection); + p_298196_.schedule(this.lastResortTransparencyTask); return true; } @@ -445,7 +_,7 @@ - this.f_291503_.incrementAndGet(); + this.initialCompilationCancelCount.incrementAndGet(); } -- this.f_291315_ = new SectionRenderDispatcher.RenderSection.RebuildTask(this.m_293828_(), renderchunkregion, !flag1 || this.f_291503_.get() > 2); -+ this.f_291315_ = new SectionRenderDispatcher.RenderSection.RebuildTask(new net.minecraft.world.level.ChunkPos(m_295500_()), this.m_293828_(), renderchunkregion, !flag1 || this.f_291503_.get() > 2); - return this.f_291315_; +- this.lastRebuildTask = new SectionRenderDispatcher.RenderSection.RebuildTask(this.getDistToPlayerSqr(), renderchunkregion, !flag1 || this.initialCompilationCancelCount.get() > 2); ++ this.lastRebuildTask = new SectionRenderDispatcher.RenderSection.RebuildTask(new net.minecraft.world.level.ChunkPos(getOrigin()), this.getDistToPlayerSqr(), renderchunkregion, !flag1 || this.initialCompilationCancelCount.get() > 2); + return this.lastRebuildTask; } @@ -483,10 +_,20 @@ - protected final double f_290350_; - protected final AtomicBoolean f_291175_ = new AtomicBoolean(false); - protected final boolean f_290632_; + protected final double distAtCreation; + protected final AtomicBoolean isCancelled = new AtomicBoolean(false); + protected final boolean isHighPriority; + protected java.util.Map modelData; public CompileTask(double p_300617_, boolean p_299251_) { @@ -47,19 +47,19 @@ + } + + public CompileTask(@Nullable net.minecraft.world.level.ChunkPos pos, double p_300617_, boolean p_299251_) { - this.f_290350_ = p_300617_; - this.f_290632_ = p_299251_; + this.distAtCreation = p_300617_; + this.isHighPriority = p_299251_; + if (pos == null) { + this.modelData = java.util.Collections.emptyMap(); + } else { -+ this.modelData = net.minecraft.client.Minecraft.m_91087_().f_91073_.getModelDataManager().getAt(pos); ++ this.modelData = net.minecraft.client.Minecraft.getInstance().level.getModelDataManager().getAt(pos); + } } - public abstract CompletableFuture m_294443_(SectionBufferBuilderPack p_300298_); + public abstract CompletableFuture doTask(SectionBufferBuilderPack p_300298_); @@ -498,6 +_,10 @@ public int compareTo(SectionRenderDispatcher.RenderSection.CompileTask p_298947_) { - return Doubles.compare(this.f_290350_, p_298947_.f_290350_); + return Doubles.compare(this.distAtCreation, p_298947_.distAtCreation); } + + public net.minecraftforge.client.model.data.ModelData getModelData(net.minecraft.core.BlockPos pos) { @@ -70,7 +70,7 @@ @OnlyIn(Dist.CLIENT) @@ -505,8 +_,13 @@ @Nullable - protected RenderChunkRegion f_290484_; + protected RenderChunkRegion region; + @Deprecated public RebuildTask(double p_301300_, @Nullable RenderChunkRegion p_300496_, boolean p_299891_) { @@ -80,47 +80,47 @@ + + public RebuildTask(@Nullable net.minecraft.world.level.ChunkPos pos, double p_301300_, @Nullable RenderChunkRegion p_300496_, boolean p_299891_) { + super(pos, p_301300_, p_299891_); - this.f_290484_ = p_300496_; + this.region = p_300496_; } @@ -602,7 +_,10 @@ } - if (blockstate.m_60799_() != RenderShape.INVISIBLE) { -- RenderType rendertype2 = ItemBlockRenderTypes.m_109282_(blockstate); -+ var model = blockrenderdispatcher.m_110910_(blockstate); + if (blockstate.getRenderShape() != RenderShape.INVISIBLE) { +- RenderType rendertype2 = ItemBlockRenderTypes.getChunkRenderType(blockstate); ++ var model = blockrenderdispatcher.getBlockModel(blockstate); + var modelData = model.getModelData(renderchunkregion, blockpos2, blockstate, getModelData(blockpos2)); -+ randomsource.m_188584_(blockstate.m_60726_(blockpos2)); ++ randomsource.setSeed(blockstate.getSeed(blockpos2)); + for (RenderType rendertype2 : model.getRenderTypes(blockstate, randomsource, modelData)) { - BufferBuilder bufferbuilder2 = p_300020_.m_294384_(rendertype2); + BufferBuilder bufferbuilder2 = p_300020_.builder(rendertype2); if (set.add(rendertype2)) { - RenderSection.this.m_293308_(bufferbuilder2); + RenderSection.this.beginLayer(bufferbuilder2); @@ -610,8 +_,9 @@ - posestack.m_85836_(); - posestack.m_252880_((float)(blockpos2.m_123341_() & 15), (float)(blockpos2.m_123342_() & 15), (float)(blockpos2.m_123343_() & 15)); -- blockrenderdispatcher.m_234355_(blockstate, blockpos2, renderchunkregion, posestack, bufferbuilder2, true, randomsource); + posestack.pushPose(); + posestack.translate((float)(blockpos2.getX() & 15), (float)(blockpos2.getY() & 15), (float)(blockpos2.getZ() & 15)); +- blockrenderdispatcher.renderBatched(blockstate, blockpos2, renderchunkregion, posestack, bufferbuilder2, true, randomsource); + blockrenderdispatcher.renderBatched(blockstate, blockpos2, renderchunkregion, posestack, bufferbuilder2, true, randomsource, modelData, rendertype2); - posestack.m_85849_(); + posestack.popPose(); + } } } @@ -640,10 +_,10 @@ - private void m_293240_(SectionRenderDispatcher.RenderSection.RebuildTask.CompileResults p_297364_, E p_299361_) { - BlockEntityRenderer blockentityrenderer = Minecraft.m_91087_().m_167982_().m_112265_(p_299361_); + private void handleBlockEntity(SectionRenderDispatcher.RenderSection.RebuildTask.CompileResults p_297364_, E p_299361_) { + BlockEntityRenderer blockentityrenderer = Minecraft.getInstance().getBlockEntityRenderDispatcher().getRenderer(p_299361_); if (blockentityrenderer != null) { -- p_297364_.f_290796_.add(p_299361_); - if (blockentityrenderer.m_5932_(p_299361_)) { - p_297364_.f_291894_.add(p_299361_); +- p_297364_.blockEntities.add(p_299361_); + if (blockentityrenderer.shouldRenderOffScreen(p_299361_)) { + p_297364_.globalBlockEntities.add(p_299361_); } -+ else p_297364_.f_290796_.add(p_299361_); //FORGE: Fix MC-112730 ++ else p_297364_.blockEntities.add(p_299361_); //FORGE: Fix MC-112730 } } @@ -671,8 +_,13 @@ class ResortTransparencyTask extends SectionRenderDispatcher.RenderSection.CompileTask { - private final SectionRenderDispatcher.CompiledSection f_291899_; + private final SectionRenderDispatcher.CompiledSection compiledSection; + @Deprecated public ResortTransparencyTask(double p_300619_, SectionRenderDispatcher.CompiledSection p_297742_) { @@ -130,6 +130,6 @@ + + public ResortTransparencyTask(@Nullable net.minecraft.world.level.ChunkPos pos, double p_300619_, SectionRenderDispatcher.CompiledSection p_297742_) { + super(pos, p_300619_, true); - this.f_291899_ = p_297742_; + this.compiledSection = p_297742_; } diff --git a/patches/minecraft/net/minecraft/client/renderer/culling/Frustum.java.patch b/patches/minecraft/net/minecraft/client/renderer/culling/Frustum.java.patch index 070c150b5c..f8b1536645 100644 --- a/patches/minecraft/net/minecraft/client/renderer/culling/Frustum.java.patch +++ b/patches/minecraft/net/minecraft/client/renderer/culling/Frustum.java.patch @@ -3,9 +3,9 @@ @@ -59,6 +_,8 @@ } - public boolean m_113029_(AABB p_113030_) { + public boolean isVisible(AABB p_113030_) { + // FORGE: exit early for infinite bounds, these would otherwise fail in the intersection test at certain camera angles (GH-9321) + if (p_113030_.equals(net.minecraftforge.common.extensions.IForgeBlockEntity.INFINITE_EXTENT_AABB)) return true; - return this.m_113006_(p_113030_.f_82288_, p_113030_.f_82289_, p_113030_.f_82290_, p_113030_.f_82291_, p_113030_.f_82292_, p_113030_.f_82293_); + return this.cubeInFrustum(p_113030_.minX, p_113030_.minY, p_113030_.minZ, p_113030_.maxX, p_113030_.maxY, p_113030_.maxZ); } diff --git a/patches/minecraft/net/minecraft/client/renderer/entity/BoatRenderer.java.patch b/patches/minecraft/net/minecraft/client/renderer/entity/BoatRenderer.java.patch index ffbf39d31d..431fba53ad 100644 --- a/patches/minecraft/net/minecraft/client/renderer/entity/BoatRenderer.java.patch +++ b/patches/minecraft/net/minecraft/client/renderer/entity/BoatRenderer.java.patch @@ -1,23 +1,23 @@ --- a/net/minecraft/client/renderer/entity/BoatRenderer.java +++ b/net/minecraft/client/renderer/entity/BoatRenderer.java @@ -73,7 +_,7 @@ - p_113932_.m_252781_((new Quaternionf()).setAngleAxis(p_113929_.m_38352_(p_113931_) * ((float)Math.PI / 180F), 1.0F, 0.0F, 1.0F)); + p_113932_.mulPose((new Quaternionf()).setAngleAxis(p_113929_.getBubbleAngle(p_113931_) * ((float)Math.PI / 180F), 1.0F, 0.0F, 1.0F)); } -- Pair> pair = this.f_173934_.get(p_113929_.m_28554_()); +- Pair> pair = this.boatResources.get(p_113929_.getVariant()); + Pair> pair = getModelWithLocation(p_113929_); ResourceLocation resourcelocation = pair.getFirst(); ListModel listmodel = pair.getSecond(); - p_113932_.m_85841_(-1.0F, -1.0F, 1.0F); + p_113932_.scale(-1.0F, -1.0F, 1.0F); @@ -93,7 +_,10 @@ - super.m_7392_(p_113929_, p_113930_, p_113931_, p_113932_, p_113933_, p_113934_); + super.render(p_113929_, p_113930_, p_113931_, p_113932_, p_113933_, p_113934_); } + @Deprecated // forge: override getModelWithLocation to change the texture / model - public ResourceLocation m_5478_(Boat p_113927_) { -- return this.f_173934_.get(p_113927_.m_28554_()).getFirst(); + public ResourceLocation getTextureLocation(Boat p_113927_) { +- return this.boatResources.get(p_113927_.getVariant()).getFirst(); + return getModelWithLocation(p_113927_).getFirst(); } + -+ public Pair> getModelWithLocation(Boat boat) { return this.f_173934_.get(boat.m_28554_()); } ++ public Pair> getModelWithLocation(Boat boat) { return this.boatResources.get(boat.getVariant()); } } diff --git a/patches/minecraft/net/minecraft/client/renderer/entity/EntityRenderDispatcher.java.patch b/patches/minecraft/net/minecraft/client/renderer/entity/EntityRenderDispatcher.java.patch index c6a69be1bf..7218e28945 100644 --- a/patches/minecraft/net/minecraft/client/renderer/entity/EntityRenderDispatcher.java.patch +++ b/patches/minecraft/net/minecraft/client/renderer/entity/EntityRenderDispatcher.java.patch @@ -1,32 +1,32 @@ --- a/net/minecraft/client/renderer/entity/EntityRenderDispatcher.java +++ b/net/minecraft/client/renderer/entity/EntityRenderDispatcher.java @@ -173,12 +_,12 @@ - private static void m_114441_(PoseStack p_114442_, VertexConsumer p_114443_, Entity p_114444_, float p_114445_) { - AABB aabb = p_114444_.m_20191_().m_82386_(-p_114444_.m_20185_(), -p_114444_.m_20186_(), -p_114444_.m_20189_()); - LevelRenderer.m_109646_(p_114442_, p_114443_, aabb, 1.0F, 1.0F, 1.0F, 1.0F); + private static void renderHitbox(PoseStack p_114442_, VertexConsumer p_114443_, Entity p_114444_, float p_114445_) { + AABB aabb = p_114444_.getBoundingBox().move(-p_114444_.getX(), -p_114444_.getY(), -p_114444_.getZ()); + LevelRenderer.renderLineBox(p_114442_, p_114443_, aabb, 1.0F, 1.0F, 1.0F, 1.0F); - if (p_114444_ instanceof EnderDragon) { + if (p_114444_.isMultipartEntity()) { - double d0 = -Mth.m_14139_((double)p_114445_, p_114444_.f_19790_, p_114444_.m_20185_()); - double d1 = -Mth.m_14139_((double)p_114445_, p_114444_.f_19791_, p_114444_.m_20186_()); - double d2 = -Mth.m_14139_((double)p_114445_, p_114444_.f_19792_, p_114444_.m_20189_()); + double d0 = -Mth.lerp((double)p_114445_, p_114444_.xOld, p_114444_.getX()); + double d1 = -Mth.lerp((double)p_114445_, p_114444_.yOld, p_114444_.getY()); + double d2 = -Mth.lerp((double)p_114445_, p_114444_.zOld, p_114444_.getZ()); -- for(EnderDragonPart enderdragonpart : ((EnderDragon)p_114444_).m_31156_()) { +- for(EnderDragonPart enderdragonpart : ((EnderDragon)p_114444_).getSubEntities()) { + for(net.minecraftforge.entity.PartEntity enderdragonpart : p_114444_.getParts()) { - p_114442_.m_85836_(); - double d3 = d0 + Mth.m_14139_((double)p_114445_, enderdragonpart.f_19790_, enderdragonpart.m_20185_()); - double d4 = d1 + Mth.m_14139_((double)p_114445_, enderdragonpart.f_19791_, enderdragonpart.m_20186_()); + p_114442_.pushPose(); + double d3 = d0 + Mth.lerp((double)p_114445_, enderdragonpart.xOld, enderdragonpart.getX()); + double d4 = d1 + Mth.lerp((double)p_114445_, enderdragonpart.yOld, enderdragonpart.getY()); @@ -360,9 +_,14 @@ - return this.f_234577_; + return this.itemInHandRenderer; } + public Map> getSkinMap() { -+ return java.util.Collections.unmodifiableMap(f_114363_); ++ return java.util.Collections.unmodifiableMap(playerRenderers); + } + - public void m_6213_(ResourceManager p_174004_) { - EntityRendererProvider.Context entityrendererprovider$context = new EntityRendererProvider.Context(this, this.f_173995_, this.f_234576_, this.f_234577_, p_174004_, this.f_173996_, this.f_114365_); - this.f_114362_ = EntityRenderers.m_174049_(entityrendererprovider$context); - this.f_114363_ = EntityRenderers.m_174051_(entityrendererprovider$context); -+ net.minecraftforge.client.event.ForgeEventFactoryClient.gatherLayers(f_114362_, f_114363_, entityrendererprovider$context); + public void onResourceManagerReload(ResourceManager p_174004_) { + EntityRendererProvider.Context entityrendererprovider$context = new EntityRendererProvider.Context(this, this.itemRenderer, this.blockRenderDispatcher, this.itemInHandRenderer, p_174004_, this.entityModels, this.font); + this.renderers = EntityRenderers.createEntityRenderers(entityrendererprovider$context); + this.playerRenderers = EntityRenderers.createPlayerRenderers(entityrendererprovider$context); ++ net.minecraftforge.client.event.ForgeEventFactoryClient.gatherLayers(renderers, playerRenderers, entityrendererprovider$context); } } diff --git a/patches/minecraft/net/minecraft/client/renderer/entity/EntityRenderer.java.patch b/patches/minecraft/net/minecraft/client/renderer/entity/EntityRenderer.java.patch index 1e8ac1bc30..a0d79963b9 100644 --- a/patches/minecraft/net/minecraft/client/renderer/entity/EntityRenderer.java.patch +++ b/patches/minecraft/net/minecraft/client/renderer/entity/EntityRenderer.java.patch @@ -3,22 +3,22 @@ @@ -63,8 +_,10 @@ } - public void m_7392_(T p_114485_, float p_114486_, float p_114487_, PoseStack p_114488_, MultiBufferSource p_114489_, int p_114490_) { -- if (this.m_6512_(p_114485_)) { -- this.m_7649_(p_114485_, p_114485_.m_5446_(), p_114488_, p_114489_, p_114490_); -+ var renderNameTagEvent = new net.minecraftforge.client.event.RenderNameTagEvent(p_114485_, p_114485_.m_5446_(), this, p_114488_, p_114489_, p_114490_, p_114487_); + public void render(T p_114485_, float p_114486_, float p_114487_, PoseStack p_114488_, MultiBufferSource p_114489_, int p_114490_) { +- if (this.shouldShowName(p_114485_)) { +- this.renderNameTag(p_114485_, p_114485_.getDisplayName(), p_114488_, p_114489_, p_114490_); ++ var renderNameTagEvent = new net.minecraftforge.client.event.RenderNameTagEvent(p_114485_, p_114485_.getDisplayName(), this, p_114488_, p_114489_, p_114490_, p_114487_); + net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(renderNameTagEvent); -+ if (renderNameTagEvent.getResult() != net.minecraftforge.eventbus.api.Event.Result.DENY && (renderNameTagEvent.getResult() == net.minecraftforge.eventbus.api.Event.Result.ALLOW || this.m_6512_(p_114485_))) { -+ this.m_7649_(p_114485_, renderNameTagEvent.getContent(), p_114488_, p_114489_, p_114490_); ++ if (renderNameTagEvent.getResult() != net.minecraftforge.eventbus.api.Event.Result.DENY && (renderNameTagEvent.getResult() == net.minecraftforge.eventbus.api.Event.Result.ALLOW || this.shouldShowName(p_114485_))) { ++ this.renderNameTag(p_114485_, renderNameTagEvent.getContent(), p_114488_, p_114489_, p_114490_); } } @@ -80,7 +_,7 @@ - protected void m_7649_(T p_114498_, Component p_114499_, PoseStack p_114500_, MultiBufferSource p_114501_, int p_114502_) { - double d0 = this.f_114476_.m_114471_(p_114498_); + protected void renderNameTag(T p_114498_, Component p_114499_, PoseStack p_114500_, MultiBufferSource p_114501_, int p_114502_) { + double d0 = this.entityRenderDispatcher.distanceToSqr(p_114498_); - if (!(d0 > 4096.0D)) { + if (net.minecraftforge.client.ForgeHooksClient.isNameplateInRenderDistance(p_114498_, d0)) { - boolean flag = !p_114498_.m_20163_(); - float f = p_114498_.m_278726_(); + boolean flag = !p_114498_.isDiscrete(); + float f = p_114498_.getNameTagOffsetY(); int i = "deadmau5".equals(p_114499_.getString()) ? -10 : 0; diff --git a/patches/minecraft/net/minecraft/client/renderer/entity/FallingBlockRenderer.java.patch b/patches/minecraft/net/minecraft/client/renderer/entity/FallingBlockRenderer.java.patch index ce0373618a..8f796542b8 100644 --- a/patches/minecraft/net/minecraft/client/renderer/entity/FallingBlockRenderer.java.patch +++ b/patches/minecraft/net/minecraft/client/renderer/entity/FallingBlockRenderer.java.patch @@ -1,13 +1,13 @@ --- a/net/minecraft/client/renderer/entity/FallingBlockRenderer.java +++ b/net/minecraft/client/renderer/entity/FallingBlockRenderer.java @@ -34,7 +_,9 @@ - p_114637_.m_85836_(); - BlockPos blockpos = BlockPos.m_274561_(p_114634_.m_20185_(), p_114634_.m_20191_().f_82292_, p_114634_.m_20189_()); - p_114637_.m_85837_(-0.5D, 0.0D, -0.5D); -- this.f_234617_.m_110937_().m_234379_(level, this.f_234617_.m_110910_(blockstate), blockstate, blockpos, p_114637_, p_114638_.m_6299_(ItemBlockRenderTypes.m_109293_(blockstate)), false, RandomSource.m_216327_(), blockstate.m_60726_(p_114634_.m_31978_()), OverlayTexture.f_118083_); -+ var model = this.f_234617_.m_110910_(blockstate); -+ for (var renderType : model.getRenderTypes(blockstate, RandomSource.m_216335_(blockstate.m_60726_(p_114634_.m_31978_())), net.minecraftforge.client.model.data.ModelData.EMPTY)) -+ this.f_234617_.m_110937_().tesselateBlock(level, model, blockstate, blockpos, p_114637_, p_114638_.m_6299_(renderType), false, RandomSource.m_216327_(), blockstate.m_60726_(p_114634_.m_31978_()), OverlayTexture.f_118083_, net.minecraftforge.client.model.data.ModelData.EMPTY, renderType); - p_114637_.m_85849_(); - super.m_7392_(p_114634_, p_114635_, p_114636_, p_114637_, p_114638_, p_114639_); + p_114637_.pushPose(); + BlockPos blockpos = BlockPos.containing(p_114634_.getX(), p_114634_.getBoundingBox().maxY, p_114634_.getZ()); + p_114637_.translate(-0.5D, 0.0D, -0.5D); +- this.dispatcher.getModelRenderer().tesselateBlock(level, this.dispatcher.getBlockModel(blockstate), blockstate, blockpos, p_114637_, p_114638_.getBuffer(ItemBlockRenderTypes.getMovingBlockRenderType(blockstate)), false, RandomSource.create(), blockstate.getSeed(p_114634_.getStartPos()), OverlayTexture.NO_OVERLAY); ++ var model = this.dispatcher.getBlockModel(blockstate); ++ for (var renderType : model.getRenderTypes(blockstate, RandomSource.create(blockstate.getSeed(p_114634_.getStartPos())), net.minecraftforge.client.model.data.ModelData.EMPTY)) ++ this.dispatcher.getModelRenderer().tesselateBlock(level, model, blockstate, blockpos, p_114637_, p_114638_.getBuffer(renderType), false, RandomSource.create(), blockstate.getSeed(p_114634_.getStartPos()), OverlayTexture.NO_OVERLAY, net.minecraftforge.client.model.data.ModelData.EMPTY, renderType); + p_114637_.popPose(); + super.render(p_114634_, p_114635_, p_114636_, p_114637_, p_114638_, p_114639_); } diff --git a/patches/minecraft/net/minecraft/client/renderer/entity/FishingHookRenderer.java.patch b/patches/minecraft/net/minecraft/client/renderer/entity/FishingHookRenderer.java.patch index 0da478ec27..a331f68ac5 100644 --- a/patches/minecraft/net/minecraft/client/renderer/entity/FishingHookRenderer.java.patch +++ b/patches/minecraft/net/minecraft/client/renderer/entity/FishingHookRenderer.java.patch @@ -1,10 +1,10 @@ --- a/net/minecraft/client/renderer/entity/FishingHookRenderer.java +++ b/net/minecraft/client/renderer/entity/FishingHookRenderer.java @@ -49,7 +_,7 @@ - p_114708_.m_85849_(); - int i = player.m_5737_() == HumanoidArm.RIGHT ? 1 : -1; - ItemStack itemstack = player.m_21205_(); -- if (!itemstack.m_150930_(Items.f_42523_)) { + p_114708_.popPose(); + int i = player.getMainArm() == HumanoidArm.RIGHT ? 1 : -1; + ItemStack itemstack = player.getMainHandItem(); +- if (!itemstack.is(Items.FISHING_ROD)) { + if (!itemstack.canPerformAction(net.minecraftforge.common.ToolActions.FISHING_ROD_CAST)) { i = -i; } diff --git a/patches/minecraft/net/minecraft/client/renderer/entity/ItemEntityRenderer.java.patch b/patches/minecraft/net/minecraft/client/renderer/entity/ItemEntityRenderer.java.patch index 349d7cc100..71458b4a07 100644 --- a/patches/minecraft/net/minecraft/client/renderer/entity/ItemEntityRenderer.java.patch +++ b/patches/minecraft/net/minecraft/client/renderer/entity/ItemEntityRenderer.java.patch @@ -1,18 +1,18 @@ --- a/net/minecraft/client/renderer/entity/ItemEntityRenderer.java +++ b/net/minecraft/client/renderer/entity/ItemEntityRenderer.java @@ -61,18 +_,15 @@ - boolean flag = bakedmodel.m_7539_(); - int j = this.m_115042_(itemstack); + boolean flag = bakedmodel.isGui3d(); + int j = this.getRenderAmount(itemstack); float f = 0.25F; -- float f1 = Mth.m_14031_(((float)p_115036_.m_32059_() + p_115038_) / 10.0F + p_115036_.f_31983_) * 0.1F + 0.1F; -+ float f1 = shouldBob() ? Mth.m_14031_(((float)p_115036_.m_32059_() + p_115038_) / 10.0F + p_115036_.f_31983_) * 0.1F + 0.1F : 0; - float f2 = bakedmodel.m_7442_().m_269404_(ItemDisplayContext.GROUND).f_111757_.y(); - p_115039_.m_252880_(0.0F, f1 + 0.25F * f2, 0.0F); - float f3 = p_115036_.m_32008_(p_115038_); - p_115039_.m_252781_(Axis.f_252436_.m_252961_(f3)); -- float f4 = bakedmodel.m_7442_().f_111793_.f_111757_.x(); -- float f5 = bakedmodel.m_7442_().f_111793_.f_111757_.y(); -- float f6 = bakedmodel.m_7442_().f_111793_.f_111757_.z(); +- float f1 = Mth.sin(((float)p_115036_.getAge() + p_115038_) / 10.0F + p_115036_.bobOffs) * 0.1F + 0.1F; ++ float f1 = shouldBob() ? Mth.sin(((float)p_115036_.getAge() + p_115038_) / 10.0F + p_115036_.bobOffs) * 0.1F + 0.1F : 0; + float f2 = bakedmodel.getTransforms().getTransform(ItemDisplayContext.GROUND).scale.y(); + p_115039_.translate(0.0F, f1 + 0.25F * f2, 0.0F); + float f3 = p_115036_.getSpin(p_115038_); + p_115039_.mulPose(Axis.YP.rotation(f3)); +- float f4 = bakedmodel.getTransforms().ground.scale.x(); +- float f5 = bakedmodel.getTransforms().ground.scale.y(); +- float f6 = bakedmodel.getTransforms().ground.scale.z(); if (!flag) { - float f7 = -0.0F * (float)(j - 1) * 0.5F * f4; - float f8 = -0.0F * (float)(j - 1) * 0.5F * f5; @@ -20,34 +20,34 @@ + float f7 = -0.0F * (float)(j - 1) * 0.5F; + float f8 = -0.0F * (float)(j - 1) * 0.5F; + float f9 = -0.09375F * (float)(j - 1) * 0.5F; - p_115039_.m_252880_(f7, f8, f9); + p_115039_.translate(f7, f8, f9); } @@ -83,18 +_,18 @@ - float f11 = (this.f_115020_.m_188501_() * 2.0F - 1.0F) * 0.15F; - float f13 = (this.f_115020_.m_188501_() * 2.0F - 1.0F) * 0.15F; - float f10 = (this.f_115020_.m_188501_() * 2.0F - 1.0F) * 0.15F; -- p_115039_.m_252880_(f11, f13, f10); -+ p_115039_.m_252880_(shouldSpreadItems() ? f11 : 0, shouldSpreadItems() ? f13 : 0, shouldSpreadItems() ? f10 : 0); + float f11 = (this.random.nextFloat() * 2.0F - 1.0F) * 0.15F; + float f13 = (this.random.nextFloat() * 2.0F - 1.0F) * 0.15F; + float f10 = (this.random.nextFloat() * 2.0F - 1.0F) * 0.15F; +- p_115039_.translate(f11, f13, f10); ++ p_115039_.translate(shouldSpreadItems() ? f11 : 0, shouldSpreadItems() ? f13 : 0, shouldSpreadItems() ? f10 : 0); } else { - float f12 = (this.f_115020_.m_188501_() * 2.0F - 1.0F) * 0.15F * 0.5F; - float f14 = (this.f_115020_.m_188501_() * 2.0F - 1.0F) * 0.15F * 0.5F; -- p_115039_.m_252880_(f12, f14, 0.0F); -+ p_115039_.m_85837_(shouldSpreadItems() ? f12 : 0, shouldSpreadItems() ? f14 : 0, 0.0D); + float f12 = (this.random.nextFloat() * 2.0F - 1.0F) * 0.15F * 0.5F; + float f14 = (this.random.nextFloat() * 2.0F - 1.0F) * 0.15F * 0.5F; +- p_115039_.translate(f12, f14, 0.0F); ++ p_115039_.translate(shouldSpreadItems() ? f12 : 0, shouldSpreadItems() ? f14 : 0, 0.0D); } } - this.f_115019_.m_115143_(itemstack, ItemDisplayContext.GROUND, false, p_115039_, p_115040_, p_115041_, OverlayTexture.f_118083_, bakedmodel); - p_115039_.m_85849_(); + this.itemRenderer.render(itemstack, ItemDisplayContext.GROUND, false, p_115039_, p_115040_, p_115041_, OverlayTexture.NO_OVERLAY, bakedmodel); + p_115039_.popPose(); if (!flag) { -- p_115039_.m_252880_(0.0F * f4, 0.0F * f5, 0.09375F * f6); -+ p_115039_.m_85837_(0.0, 0.0, 0.09375F); +- p_115039_.translate(0.0F * f4, 0.0F * f5, 0.09375F * f6); ++ p_115039_.translate(0.0, 0.0, 0.09375F); } } @@ -105,4 +_,21 @@ - public ResourceLocation m_5478_(ItemEntity p_115034_) { - return TextureAtlas.f_118259_; + public ResourceLocation getTextureLocation(ItemEntity p_115034_) { + return TextureAtlas.LOCATION_BLOCKS; } + + /*==================================== FORGE START ===========================================*/ diff --git a/patches/minecraft/net/minecraft/client/renderer/entity/ItemFrameRenderer.java.patch b/patches/minecraft/net/minecraft/client/renderer/entity/ItemFrameRenderer.java.patch index e3abc67c9f..d0fc0fe29a 100644 --- a/patches/minecraft/net/minecraft/client/renderer/entity/ItemFrameRenderer.java.patch +++ b/patches/minecraft/net/minecraft/client/renderer/entity/ItemFrameRenderer.java.patch @@ -3,47 +3,47 @@ @@ -70,31 +_,32 @@ } - if (!itemstack.m_41619_()) { -- OptionalInt optionalint = p_115076_.m_218868_(); -+ MapItemSavedData mapitemsaveddata = MapItem.m_42853_(itemstack, p_115076_.m_9236_()); + if (!itemstack.isEmpty()) { +- OptionalInt optionalint = p_115076_.getFramedMapId(); ++ MapItemSavedData mapitemsaveddata = MapItem.getSavedData(itemstack, p_115076_.level()); if (flag) { - p_115079_.m_252880_(0.0F, 0.0F, 0.5F); + p_115079_.translate(0.0F, 0.0F, 0.5F); } else { - p_115079_.m_252880_(0.0F, 0.0F, 0.4375F); + p_115079_.translate(0.0F, 0.0F, 0.4375F); } -- int j = optionalint.isPresent() ? p_115076_.m_31823_() % 4 * 2 : p_115076_.m_31823_(); -+ int j = mapitemsaveddata != null ? p_115076_.m_31823_() % 4 * 2 : p_115076_.m_31823_(); - p_115079_.m_252781_(Axis.f_252403_.m_252977_((float)j * 360.0F / 8.0F)); +- int j = optionalint.isPresent() ? p_115076_.getRotation() % 4 * 2 : p_115076_.getRotation(); ++ int j = mapitemsaveddata != null ? p_115076_.getRotation() % 4 * 2 : p_115076_.getRotation(); + p_115079_.mulPose(Axis.ZP.rotationDegrees((float)j * 360.0F / 8.0F)); - if (optionalint.isPresent()) { + if (!net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.client.event.RenderItemInFrameEvent(p_115076_, this, p_115079_, p_115080_, p_115081_))) { + if (mapitemsaveddata != null) { - p_115079_.m_252781_(Axis.f_252403_.m_252977_(180.0F)); + p_115079_.mulPose(Axis.ZP.rotationDegrees(180.0F)); float f = 0.0078125F; - p_115079_.m_85841_(0.0078125F, 0.0078125F, 0.0078125F); - p_115079_.m_252880_(-64.0F, -64.0F, 0.0F); -- MapItemSavedData mapitemsaveddata = MapItem.m_151128_(optionalint.getAsInt(), p_115076_.m_9236_()); - p_115079_.m_252880_(0.0F, 0.0F, -1.0F); + p_115079_.scale(0.0078125F, 0.0078125F, 0.0078125F); + p_115079_.translate(-64.0F, -64.0F, 0.0F); +- MapItemSavedData mapitemsaveddata = MapItem.getSavedData(optionalint.getAsInt(), p_115076_.level()); + p_115079_.translate(0.0F, 0.0F, -1.0F); if (mapitemsaveddata != null) { - int i = this.m_174208_(p_115076_, 15728850, p_115081_); -- Minecraft.m_91087_().f_91063_.m_109151_().m_168771_(p_115079_, p_115080_, optionalint.getAsInt(), mapitemsaveddata, true, i); -+ Minecraft.m_91087_().f_91063_.m_109151_().m_168771_(p_115079_, p_115080_, p_115076_.m_218868_().getAsInt(), mapitemsaveddata, true, i); + int i = this.getLightVal(p_115076_, 15728850, p_115081_); +- Minecraft.getInstance().gameRenderer.getMapRenderer().render(p_115079_, p_115080_, optionalint.getAsInt(), mapitemsaveddata, true, i); ++ Minecraft.getInstance().gameRenderer.getMapRenderer().render(p_115079_, p_115080_, p_115076_.getFramedMapId().getAsInt(), mapitemsaveddata, true, i); } } else { - int k = this.m_174208_(p_115076_, 15728880, p_115081_); - p_115079_.m_85841_(0.5F, 0.5F, 0.5F); - this.f_115047_.m_269128_(itemstack, ItemDisplayContext.FIXED, k, OverlayTexture.f_118083_, p_115079_, p_115080_, p_115076_.m_9236_(), p_115076_.m_19879_()); + int k = this.getLightVal(p_115076_, 15728880, p_115081_); + p_115079_.scale(0.5F, 0.5F, 0.5F); + this.itemRenderer.renderStatic(itemstack, ItemDisplayContext.FIXED, k, OverlayTexture.NO_OVERLAY, p_115079_, p_115080_, p_115076_.level(), p_115076_.getId()); } + } } - p_115079_.m_85849_(); + p_115079_.popPose(); @@ -106,7 +_,7 @@ - private ModelResourceLocation m_174212_(T p_174213_, ItemStack p_174214_) { - boolean flag = p_174213_.m_6095_() == EntityType.f_147033_; -- if (p_174214_.m_150930_(Items.f_42573_)) { -+ if (p_174214_.m_41720_() instanceof MapItem) { - return flag ? f_174202_ : f_115045_; + private ModelResourceLocation getFrameModelResourceLoc(T p_174213_, ItemStack p_174214_) { + boolean flag = p_174213_.getType() == EntityType.GLOW_ITEM_FRAME; +- if (p_174214_.is(Items.FILLED_MAP)) { ++ if (p_174214_.getItem() instanceof MapItem) { + return flag ? GLOW_MAP_FRAME_LOCATION : MAP_FRAME_LOCATION; } else { - return flag ? f_174201_ : f_115044_; + return flag ? GLOW_FRAME_LOCATION : FRAME_LOCATION; diff --git a/patches/minecraft/net/minecraft/client/renderer/entity/ItemRenderer.java.patch b/patches/minecraft/net/minecraft/client/renderer/entity/ItemRenderer.java.patch index a8e128ee8e..7ff1fe948e 100644 --- a/patches/minecraft/net/minecraft/client/renderer/entity/ItemRenderer.java.patch +++ b/patches/minecraft/net/minecraft/client/renderer/entity/ItemRenderer.java.patch @@ -2,63 +2,63 @@ +++ b/net/minecraft/client/renderer/entity/ItemRenderer.java @@ -68,7 +_,7 @@ public ItemRenderer(Minecraft p_266926_, TextureManager p_266774_, ModelManager p_266850_, ItemColors p_267016_, BlockEntityWithoutLevelRenderer p_267049_) { - this.f_265848_ = p_266926_; - this.f_115096_ = p_266774_; -- this.f_115095_ = new ItemModelShaper(p_266850_); -+ this.f_115095_ = new net.minecraftforge.client.model.ForgeItemModelShaper(p_266850_); - this.f_174223_ = p_267049_; + this.minecraft = p_266926_; + this.textureManager = p_266774_; +- this.itemModelShaper = new ItemModelShaper(p_266850_); ++ this.itemModelShaper = new net.minecraftforge.client.model.ForgeItemModelShaper(p_266850_); + this.blockEntityRenderer = p_267049_; - for(Item item : BuiltInRegistries.f_257033_) { + for(Item item : BuiltInRegistries.ITEM) { @@ -109,7 +_,7 @@ } } -- p_115151_.m_7442_().m_269404_(p_270188_).m_111763_(p_115146_, p_115147_); +- p_115151_.getTransforms().getTransform(p_270188_).apply(p_115146_, p_115147_); + p_115151_ = net.minecraftforge.client.ForgeHooksClient.handleCameraTransforms(p_115147_, p_115151_, p_270188_, p_115146_); - p_115147_.m_252880_(-0.5F, -0.5F, -0.5F); - if (!p_115151_.m_7521_() && (!p_115144_.m_150930_(Items.f_42713_) || flag)) { + p_115147_.translate(-0.5F, -0.5F, -0.5F); + if (!p_115151_.isCustomRenderer() && (!p_115144_.is(Items.TRIDENT) || flag)) { boolean flag1; @@ -119,8 +_,8 @@ } else { flag1 = true; } - -- RenderType rendertype = ItemBlockRenderTypes.m_109279_(p_115144_, flag1); +- RenderType rendertype = ItemBlockRenderTypes.getRenderType(p_115144_, flag1); + for (var model : p_115151_.getRenderPasses(p_115144_, flag1)) { + for (var rendertype : model.getRenderTypes(p_115144_, flag1)) { VertexConsumer vertexconsumer; - if (m_285827_(p_115144_) && p_115144_.m_41790_()) { - p_115147_.m_85836_(); + if (hasAnimatedTexture(p_115144_) && p_115144_.hasFoil()) { + p_115147_.pushPose(); @@ -144,9 +_,11 @@ - vertexconsumer = m_115211_(p_115148_, rendertype, true, p_115144_.m_41790_()); + vertexconsumer = getFoilBuffer(p_115148_, rendertype, true, p_115144_.hasFoil()); } -- this.m_115189_(p_115151_, p_115144_, p_115149_, p_115150_, p_115147_, vertexconsumer); -+ this.m_115189_(model, p_115144_, p_115149_, p_115150_, p_115147_, vertexconsumer); +- this.renderModelLists(p_115151_, p_115144_, p_115149_, p_115150_, p_115147_, vertexconsumer); ++ this.renderModelLists(model, p_115144_, p_115149_, p_115150_, p_115147_, vertexconsumer); + } + } } else { -- this.f_174223_.m_108829_(p_115144_, p_270188_, p_115147_, p_115148_, p_115149_, p_115150_); -+ net.minecraftforge.client.extensions.common.IClientItemExtensions.of(p_115144_).getCustomRenderer().m_108829_(p_115144_, p_270188_, p_115147_, p_115148_, p_115149_, p_115150_); +- this.blockEntityRenderer.renderByItem(p_115144_, p_270188_, p_115147_, p_115148_, p_115149_, p_115150_); ++ net.minecraftforge.client.extensions.common.IClientItemExtensions.of(p_115144_).getCustomRenderer().renderByItem(p_115144_, p_270188_, p_115147_, p_115148_, p_115149_, p_115150_); } - p_115147_.m_85849_(); + p_115147_.popPose(); @@ -194,7 +_,7 @@ float f = (float)(i >> 16 & 255) / 255.0F; float f1 = (float)(i >> 8 & 255) / 255.0F; float f2 = (float)(i & 255) / 255.0F; -- p_115164_.m_85987_(posestack$pose, bakedquad, f, f1, f2, p_115167_, p_115168_); +- p_115164_.putBulkData(posestack$pose, bakedquad, f, f1, f2, p_115167_, p_115168_); + p_115164_.putBulkData(posestack$pose, bakedquad, f, f1, f2, 1.0F, p_115167_, p_115168_, true); } } @@ -227,5 +_,9 @@ - public void m_6213_(ResourceManager p_115105_) { - this.f_115095_.m_109403_(); + public void onResourceManagerReload(ResourceManager p_115105_) { + this.itemModelShaper.rebuildCache(); + } + + public BlockEntityWithoutLevelRenderer getBlockEntityRenderer() { -+ return f_174223_; ++ return blockEntityRenderer; } } diff --git a/patches/minecraft/net/minecraft/client/renderer/entity/LivingEntityRenderer.java.patch b/patches/minecraft/net/minecraft/client/renderer/entity/LivingEntityRenderer.java.patch index fe3f2879dd..d1b15436e2 100644 --- a/patches/minecraft/net/minecraft/client/renderer/entity/LivingEntityRenderer.java.patch +++ b/patches/minecraft/net/minecraft/client/renderer/entity/LivingEntityRenderer.java.patch @@ -3,36 +3,36 @@ @@ -50,14 +_,17 @@ } - public void m_7392_(T p_115308_, float p_115309_, float p_115310_, PoseStack p_115311_, MultiBufferSource p_115312_, int p_115313_) { + public void render(T p_115308_, float p_115309_, float p_115310_, PoseStack p_115311_, MultiBufferSource p_115312_, int p_115313_) { + if (net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.client.event.RenderLivingEvent.Pre(p_115308_, this, p_115310_, p_115311_, p_115312_, p_115313_))) return; - p_115311_.m_85836_(); - this.f_115290_.f_102608_ = this.m_115342_(p_115308_, p_115310_); -- this.f_115290_.f_102609_ = p_115308_.m_20159_(); + p_115311_.pushPose(); + this.model.attackTime = this.getAttackAnim(p_115308_, p_115310_); +- this.model.riding = p_115308_.isPassenger(); + -+ boolean shouldSit = p_115308_.m_20159_() && (p_115308_.m_20202_() != null && p_115308_.m_20202_().shouldRiderSit()); -+ this.f_115290_.f_102609_ = shouldSit; - this.f_115290_.f_102610_ = p_115308_.m_6162_(); - float f = Mth.m_14189_(p_115310_, p_115308_.f_20884_, p_115308_.f_20883_); - float f1 = Mth.m_14189_(p_115310_, p_115308_.f_20886_, p_115308_.f_20885_); ++ boolean shouldSit = p_115308_.isPassenger() && (p_115308_.getVehicle() != null && p_115308_.getVehicle().shouldRiderSit()); ++ this.model.riding = shouldSit; + this.model.young = p_115308_.isBaby(); + float f = Mth.rotLerp(p_115310_, p_115308_.yBodyRotO, p_115308_.yBodyRot); + float f1 = Mth.rotLerp(p_115310_, p_115308_.yHeadRotO, p_115308_.yHeadRot); float f2 = f1 - f; -- if (p_115308_.m_20159_()) { -+ if (shouldSit && p_115308_.m_20202_() instanceof LivingEntity) { - Entity $$14 = p_115308_.m_20202_(); +- if (p_115308_.isPassenger()) { ++ if (shouldSit && p_115308_.getVehicle() instanceof LivingEntity) { + Entity $$14 = p_115308_.getVehicle(); if ($$14 instanceof LivingEntity) { LivingEntity livingentity = (LivingEntity)$$14; @@ -102,7 +_,7 @@ - p_115311_.m_252880_(0.0F, -1.501F, 0.0F); + p_115311_.translate(0.0F, -1.501F, 0.0F); float f8 = 0.0F; float f4 = 0.0F; -- if (!p_115308_.m_20159_() && p_115308_.m_6084_()) { -+ if (!shouldSit && p_115308_.m_6084_()) { - f8 = p_115308_.f_267362_.m_267711_(p_115310_); - f4 = p_115308_.f_267362_.m_267590_(p_115310_); - if (p_115308_.m_6162_()) { +- if (!p_115308_.isPassenger() && p_115308_.isAlive()) { ++ if (!shouldSit && p_115308_.isAlive()) { + f8 = p_115308_.walkAnimation.speed(p_115310_); + f4 = p_115308_.walkAnimation.position(p_115310_); + if (p_115308_.isBaby()) { @@ -135,6 +_,7 @@ - p_115311_.m_85849_(); - super.m_7392_(p_115308_, p_115309_, p_115310_, p_115311_, p_115312_, p_115313_); + p_115311_.popPose(); + super.render(p_115308_, p_115309_, p_115310_, p_115311_, p_115312_, p_115313_); + net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.client.event.RenderLivingEvent.Post(p_115308_, this, p_115310_, p_115311_, p_115312_, p_115313_)); } diff --git a/patches/minecraft/net/minecraft/client/renderer/entity/layers/ElytraLayer.java.patch b/patches/minecraft/net/minecraft/client/renderer/entity/layers/ElytraLayer.java.patch index ec4fc0e756..0207ddb363 100644 --- a/patches/minecraft/net/minecraft/client/renderer/entity/layers/ElytraLayer.java.patch +++ b/patches/minecraft/net/minecraft/client/renderer/entity/layers/ElytraLayer.java.patch @@ -2,29 +2,29 @@ +++ b/net/minecraft/client/renderer/entity/layers/ElytraLayer.java @@ -34,7 +_,7 @@ - public void m_6494_(PoseStack p_116951_, MultiBufferSource p_116952_, int p_116953_, T p_116954_, float p_116955_, float p_116956_, float p_116957_, float p_116958_, float p_116959_, float p_116960_) { - ItemStack itemstack = p_116954_.m_6844_(EquipmentSlot.CHEST); -- if (itemstack.m_150930_(Items.f_42741_)) { + public void render(PoseStack p_116951_, MultiBufferSource p_116952_, int p_116953_, T p_116954_, float p_116955_, float p_116956_, float p_116957_, float p_116958_, float p_116959_, float p_116960_) { + ItemStack itemstack = p_116954_.getItemBySlot(EquipmentSlot.CHEST); +- if (itemstack.is(Items.ELYTRA)) { + if (shouldRender(itemstack, p_116954_)) { ResourceLocation resourcelocation; if (p_116954_ instanceof AbstractClientPlayer) { AbstractClientPlayer abstractclientplayer = (AbstractClientPlayer)p_116954_; @@ -44,10 +_,10 @@ - } else if (playerskin.f_291348_() != null && abstractclientplayer.m_36170_(PlayerModelPart.CAPE)) { - resourcelocation = playerskin.f_291348_(); + } else if (playerskin.capeTexture() != null && abstractclientplayer.isModelPartShown(PlayerModelPart.CAPE)) { + resourcelocation = playerskin.capeTexture(); } else { -- resourcelocation = f_116934_; +- resourcelocation = WINGS_LOCATION; + resourcelocation = getElytraTexture(itemstack, p_116954_); } } else { -- resourcelocation = f_116934_; +- resourcelocation = WINGS_LOCATION; + resourcelocation = getElytraTexture(itemstack, p_116954_); } - p_116951_.m_85836_(); + p_116951_.pushPose(); @@ -58,5 +_,30 @@ - this.f_116935_.m_7695_(p_116951_, vertexconsumer, p_116953_, OverlayTexture.f_118083_, 1.0F, 1.0F, 1.0F, 1.0F); - p_116951_.m_85849_(); + this.elytraModel.renderToBuffer(p_116951_, vertexconsumer, p_116953_, OverlayTexture.NO_OVERLAY, 1.0F, 1.0F, 1.0F, 1.0F); + p_116951_.popPose(); } + } + @@ -38,7 +38,7 @@ + * @return If the ElytraLayer should render. + */ + public boolean shouldRender(ItemStack stack, T entity) { -+ return stack.m_41720_() == Items.f_42741_; ++ return stack.getItem() == Items.ELYTRA; + } + + /** @@ -50,6 +50,6 @@ + * @return The texture. + */ + public ResourceLocation getElytraTexture(ItemStack stack, T entity) { -+ return f_116934_; ++ return WINGS_LOCATION; } } diff --git a/patches/minecraft/net/minecraft/client/renderer/entity/layers/HumanoidArmorLayer.java.patch b/patches/minecraft/net/minecraft/client/renderer/entity/layers/HumanoidArmorLayer.java.patch index ad385c0409..697defd646 100644 --- a/patches/minecraft/net/minecraft/client/renderer/entity/layers/HumanoidArmorLayer.java.patch +++ b/patches/minecraft/net/minecraft/client/renderer/entity/layers/HumanoidArmorLayer.java.patch @@ -1,34 +1,34 @@ --- a/net/minecraft/client/renderer/entity/layers/HumanoidArmorLayer.java +++ b/net/minecraft/client/renderer/entity/layers/HumanoidArmorLayer.java @@ -54,24 +_,24 @@ - if (armoritem.m_40402_() == p_117122_) { - this.m_117386_().m_102872_(p_117124_); - this.m_117125_(p_117124_, p_117122_); + if (armoritem.getEquipmentSlot() == p_117122_) { + this.getParentModel().copyPropertiesTo(p_117124_); + this.setPartVisibility(p_117124_, p_117122_); + net.minecraft.client.model.Model model = getArmorModelHook(p_117121_, itemstack, p_117122_, p_117124_); - boolean flag = this.m_117128_(p_117122_); + boolean flag = this.usesInnerModel(p_117122_); - if (armoritem instanceof DyeableArmorItem) { - DyeableArmorItem dyeablearmoritem = (DyeableArmorItem)armoritem; -- int i = dyeablearmoritem.m_41121_(itemstack); +- int i = dyeablearmoritem.getColor(itemstack); + if (armoritem instanceof net.minecraft.world.item.DyeableLeatherItem) { -+ int i = ((net.minecraft.world.item.DyeableLeatherItem)armoritem).m_41121_(itemstack); ++ int i = ((net.minecraft.world.item.DyeableLeatherItem)armoritem).getColor(itemstack); float f = (float)(i >> 16 & 255) / 255.0F; float f1 = (float)(i >> 8 & 255) / 255.0F; float f2 = (float)(i & 255) / 255.0F; -- this.m_289609_(p_117119_, p_117120_, p_117123_, armoritem, p_117124_, flag, f, f1, f2, (String)null); -- this.m_289609_(p_117119_, p_117120_, p_117123_, armoritem, p_117124_, flag, 1.0F, 1.0F, 1.0F, "overlay"); +- this.renderModel(p_117119_, p_117120_, p_117123_, armoritem, p_117124_, flag, f, f1, f2, (String)null); +- this.renderModel(p_117119_, p_117120_, p_117123_, armoritem, p_117124_, flag, 1.0F, 1.0F, 1.0F, "overlay"); + this.renderModel(p_117119_, p_117120_, p_117123_, armoritem, model, flag, f, f1, f2, this.getArmorResource(p_117121_, itemstack, p_117122_, null)); + this.renderModel(p_117119_, p_117120_, p_117123_, armoritem, model, flag, 1.0F, 1.0F, 1.0F, this.getArmorResource(p_117121_, itemstack, p_117122_, "overlay")); } else { -- this.m_289609_(p_117119_, p_117120_, p_117123_, armoritem, p_117124_, flag, 1.0F, 1.0F, 1.0F, (String)null); +- this.renderModel(p_117119_, p_117120_, p_117123_, armoritem, p_117124_, flag, 1.0F, 1.0F, 1.0F, (String)null); + this.renderModel(p_117119_, p_117120_, p_117123_, armoritem, model, flag, 1.0F, 1.0F, 1.0F, this.getArmorResource(p_117121_, itemstack, p_117122_, null)); } - ArmorTrim.m_266285_(p_117121_.m_9236_().m_9598_(), itemstack, true).ifPresent((p_289638_) -> { -- this.m_289604_(armoritem.m_40401_(), p_117119_, p_117120_, p_117123_, p_289638_, p_117124_, flag); -+ this.renderTrim(armoritem.m_40401_(), p_117119_, p_117120_, p_117123_, p_289638_, model, flag); + ArmorTrim.getTrim(p_117121_.level().registryAccess(), itemstack, true).ifPresent((p_289638_) -> { +- this.renderTrim(armoritem.getMaterial(), p_117119_, p_117120_, p_117123_, p_289638_, p_117124_, flag); ++ this.renderTrim(armoritem.getMaterial(), p_117119_, p_117120_, p_117123_, p_289638_, model, flag); }); - if (itemstack.m_41790_()) { -- this.m_289597_(p_117119_, p_117120_, p_117123_, p_117124_); + if (itemstack.hasFoil()) { +- this.renderGlint(p_117119_, p_117120_, p_117123_, p_117124_); + this.renderGlint(p_117119_, p_117120_, p_117123_, model); } @@ -36,29 +36,29 @@ @@ -103,17 +_,26 @@ } - private void m_289609_(PoseStack p_289664_, MultiBufferSource p_289689_, int p_289681_, ArmorItem p_289650_, A p_289658_, boolean p_289668_, float p_289678_, float p_289674_, float p_289693_, @Nullable String p_289682_) { -- VertexConsumer vertexconsumer = p_289689_.m_6299_(RenderType.m_110431_(this.m_117080_(p_289650_, p_289668_, p_289682_))); -+ renderModel(p_289664_, p_289689_, p_289681_, p_289650_, p_289658_, p_289668_, p_289678_, p_289674_, p_289693_, this.m_117080_(p_289650_, p_289668_, p_289682_)); + private void renderModel(PoseStack p_289664_, MultiBufferSource p_289689_, int p_289681_, ArmorItem p_289650_, A p_289658_, boolean p_289668_, float p_289678_, float p_289674_, float p_289693_, @Nullable String p_289682_) { +- VertexConsumer vertexconsumer = p_289689_.getBuffer(RenderType.armorCutoutNoCull(this.getArmorLocation(p_289650_, p_289668_, p_289682_))); ++ renderModel(p_289664_, p_289689_, p_289681_, p_289650_, p_289658_, p_289668_, p_289678_, p_289674_, p_289693_, this.getArmorLocation(p_289650_, p_289668_, p_289682_)); + } + private void renderModel(PoseStack p_289664_, MultiBufferSource p_289689_, int p_289681_, ArmorItem p_289650_, net.minecraft.client.model.Model p_289658_, boolean p_289668_, float p_289678_, float p_289674_, float p_289693_, ResourceLocation armorResource) { -+ VertexConsumer vertexconsumer = p_289689_.m_6299_(RenderType.m_110431_(armorResource)); - p_289658_.m_7695_(p_289664_, vertexconsumer, p_289681_, OverlayTexture.f_118083_, p_289678_, p_289674_, p_289693_, 1.0F); ++ VertexConsumer vertexconsumer = p_289689_.getBuffer(RenderType.armorCutoutNoCull(armorResource)); + p_289658_.renderToBuffer(p_289664_, vertexconsumer, p_289681_, OverlayTexture.NO_OVERLAY, p_289678_, p_289674_, p_289693_, 1.0F); } - private void m_289604_(ArmorMaterial p_289690_, PoseStack p_289687_, MultiBufferSource p_289643_, int p_289683_, ArmorTrim p_289692_, A p_289663_, boolean p_289651_) { -+ m_289604_(p_289690_, p_289687_, p_289643_, p_289683_, p_289692_, p_289663_, p_289651_); + private void renderTrim(ArmorMaterial p_289690_, PoseStack p_289687_, MultiBufferSource p_289643_, int p_289683_, ArmorTrim p_289692_, A p_289663_, boolean p_289651_) { ++ renderTrim(p_289690_, p_289687_, p_289643_, p_289683_, p_289692_, p_289663_, p_289651_); + } + private void renderTrim(ArmorMaterial p_289690_, PoseStack p_289687_, MultiBufferSource p_289643_, int p_289683_, ArmorTrim p_289692_, net.minecraft.client.model.Model p_289663_, boolean p_289651_) { - TextureAtlasSprite textureatlassprite = this.f_266073_.m_118316_(p_289651_ ? p_289692_.m_267774_(p_289690_) : p_289692_.m_267606_(p_289690_)); - VertexConsumer vertexconsumer = textureatlassprite.m_118381_(p_289643_.m_6299_(Sheets.m_266442_(p_289692_.m_266429_().m_203334_().f_290976_()))); - p_289663_.m_7695_(p_289687_, vertexconsumer, p_289683_, OverlayTexture.f_118083_, 1.0F, 1.0F, 1.0F, 1.0F); + TextureAtlasSprite textureatlassprite = this.armorTrimAtlas.getSprite(p_289651_ ? p_289692_.innerTexture(p_289690_) : p_289692_.outerTexture(p_289690_)); + VertexConsumer vertexconsumer = textureatlassprite.wrap(p_289643_.getBuffer(Sheets.armorTrimsSheet(p_289692_.pattern().value().decal()))); + p_289663_.renderToBuffer(p_289687_, vertexconsumer, p_289683_, OverlayTexture.NO_OVERLAY, 1.0F, 1.0F, 1.0F, 1.0F); } - private void m_289597_(PoseStack p_289673_, MultiBufferSource p_289654_, int p_289649_, A p_289659_) { -+ m_289597_(p_289673_, p_289654_, p_289649_, p_289659_); + private void renderGlint(PoseStack p_289673_, MultiBufferSource p_289654_, int p_289649_, A p_289659_) { ++ renderGlint(p_289673_, p_289654_, p_289649_, p_289659_); + } + private void renderGlint(PoseStack p_289673_, MultiBufferSource p_289654_, int p_289649_, net.minecraft.client.model.Model p_289659_) { - p_289659_.m_7695_(p_289673_, p_289654_.m_6299_(RenderType.m_110484_()), p_289649_, OverlayTexture.f_118083_, 1.0F, 1.0F, 1.0F, 1.0F); + p_289659_.renderToBuffer(p_289673_, p_289654_.getBuffer(RenderType.armorEntityGlint()), p_289649_, OverlayTexture.NO_OVERLAY, 1.0F, 1.0F, 1.0F, 1.0F); } @@ -125,8 +_,50 @@ @@ -66,9 +66,9 @@ } + @Deprecated //Use the more sensitive version getArmorResource below - private ResourceLocation m_117080_(ArmorItem p_117081_, boolean p_117082_, @Nullable String p_117083_) { - String s = "textures/models/armor/" + p_117081_.m_40401_().m_6082_() + "_layer_" + (p_117082_ ? 2 : 1) + (p_117083_ == null ? "" : "_" + p_117083_) + ".png"; - return f_117070_.computeIfAbsent(s, ResourceLocation::new); + private ResourceLocation getArmorLocation(ArmorItem p_117081_, boolean p_117082_, @Nullable String p_117083_) { + String s = "textures/models/armor/" + p_117081_.getMaterial().getName() + "_layer_" + (p_117082_ ? 2 : 1) + (p_117083_ == null ? "" : "_" + p_117083_) + ".png"; + return ARMOR_LOCATION_CACHE.computeIfAbsent(s, ResourceLocation::new); } + + /*=================================== FORGE START =========================================*/ @@ -90,22 +90,22 @@ + * @return ResourceLocation pointing at the armor's texture + */ + public ResourceLocation getArmorResource(net.minecraft.world.entity.Entity entity, ItemStack stack, EquipmentSlot slot, @Nullable String type) { -+ ArmorItem item = (ArmorItem)stack.m_41720_(); -+ String texture = item.m_40401_().m_6082_(); ++ ArmorItem item = (ArmorItem)stack.getItem(); ++ String texture = item.getMaterial().getName(); + String domain = "minecraft"; + int idx = texture.indexOf(':'); + if (idx != -1) { + domain = texture.substring(0, idx); + texture = texture.substring(idx + 1); + } -+ String s1 = String.format(java.util.Locale.ROOT, "%s:textures/models/armor/%s_layer_%d%s.png", domain, texture, (m_117128_(slot) ? 2 : 1), type == null ? "" : String.format(java.util.Locale.ROOT, "_%s", type)); ++ String s1 = String.format(java.util.Locale.ROOT, "%s:textures/models/armor/%s_layer_%d%s.png", domain, texture, (usesInnerModel(slot) ? 2 : 1), type == null ? "" : String.format(java.util.Locale.ROOT, "_%s", type)); + + s1 = net.minecraftforge.client.ForgeHooksClient.getArmorTexture(entity, stack, s1, slot, type); -+ ResourceLocation resourcelocation = f_117070_.get(s1); ++ ResourceLocation resourcelocation = ARMOR_LOCATION_CACHE.get(s1); + + if (resourcelocation == null) { + resourcelocation = new ResourceLocation(s1); -+ f_117070_.put(s1, resourcelocation); ++ ARMOR_LOCATION_CACHE.put(s1, resourcelocation); + } + + return resourcelocation; diff --git a/patches/minecraft/net/minecraft/client/renderer/entity/player/PlayerRenderer.java.patch b/patches/minecraft/net/minecraft/client/renderer/entity/player/PlayerRenderer.java.patch index b0657a2248..119a42d0a1 100644 --- a/patches/minecraft/net/minecraft/client/renderer/entity/player/PlayerRenderer.java.patch +++ b/patches/minecraft/net/minecraft/client/renderer/entity/player/PlayerRenderer.java.patch @@ -2,20 +2,20 @@ +++ b/net/minecraft/client/renderer/entity/player/PlayerRenderer.java @@ -60,7 +_,9 @@ - public void m_7392_(AbstractClientPlayer p_117788_, float p_117789_, float p_117790_, PoseStack p_117791_, MultiBufferSource p_117792_, int p_117793_) { - this.m_117818_(p_117788_); + public void render(AbstractClientPlayer p_117788_, float p_117789_, float p_117790_, PoseStack p_117791_, MultiBufferSource p_117792_, int p_117793_) { + this.setModelProperties(p_117788_); + if (net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.client.event.RenderPlayerEvent.Pre(p_117788_, this, p_117790_, p_117791_, p_117792_, p_117793_))) return; - super.m_7392_(p_117788_, p_117789_, p_117790_, p_117791_, p_117792_, p_117793_); + super.render(p_117788_, p_117789_, p_117790_, p_117791_, p_117792_, p_117793_); + net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.client.event.RenderPlayerEvent.Post(p_117788_, this, p_117790_, p_117791_, p_117792_, p_117793_)); } - public Vec3 m_7860_(AbstractClientPlayer p_117785_, float p_117786_) { + public Vec3 getRenderOffset(AbstractClientPlayer p_117785_, float p_117786_) { @@ -133,10 +_,13 @@ if (useanim == UseAnim.BRUSH) { return HumanoidModel.ArmPose.BRUSH; } -- } else if (!p_117795_.f_20911_ && itemstack.m_150930_(Items.f_42717_) && CrossbowItem.m_40932_(itemstack)) { -+ } else if (!p_117795_.f_20911_ && itemstack.m_41720_() instanceof CrossbowItem && CrossbowItem.m_40932_(itemstack)) { +- } else if (!p_117795_.swinging && itemstack.is(Items.CROSSBOW) && CrossbowItem.isCharged(itemstack)) { ++ } else if (!p_117795_.swinging && itemstack.getItem() instanceof CrossbowItem && CrossbowItem.isCharged(itemstack)) { return HumanoidModel.ArmPose.CROSSBOW_HOLD; } @@ -28,22 +28,22 @@ @@ -168,10 +_,12 @@ } - public void m_117770_(PoseStack p_117771_, MultiBufferSource p_117772_, int p_117773_, AbstractClientPlayer p_117774_) { + public void renderRightHand(PoseStack p_117771_, MultiBufferSource p_117772_, int p_117773_, AbstractClientPlayer p_117774_) { + if(!net.minecraftforge.client.ForgeHooksClient.renderSpecificFirstPersonArm(p_117771_, p_117772_, p_117773_, p_117774_, HumanoidArm.RIGHT)) - this.m_117775_(p_117771_, p_117772_, p_117773_, p_117774_, (this.f_115290_).f_102811_, (this.f_115290_).f_103375_); + this.renderHand(p_117771_, p_117772_, p_117773_, p_117774_, (this.model).rightArm, (this.model).rightSleeve); } - public void m_117813_(PoseStack p_117814_, MultiBufferSource p_117815_, int p_117816_, AbstractClientPlayer p_117817_) { + public void renderLeftHand(PoseStack p_117814_, MultiBufferSource p_117815_, int p_117816_, AbstractClientPlayer p_117817_) { + if(!net.minecraftforge.client.ForgeHooksClient.renderSpecificFirstPersonArm(p_117814_, p_117815_, p_117816_, p_117817_, HumanoidArm.LEFT)) - this.m_117775_(p_117814_, p_117815_, p_117816_, p_117817_, (this.f_115290_).f_102812_, (this.f_115290_).f_103374_); + this.renderHand(p_117814_, p_117815_, p_117816_, p_117817_, (this.model).leftArm, (this.model).leftSleeve); } @@ -211,7 +_,7 @@ } } else if (f > 0.0F) { - super.m_7523_(p_117802_, p_117803_, p_117804_, p_117805_, p_117806_); -- float f4 = p_117802_.m_20069_() ? -90.0F - f1 : -90.0F; -+ float f4 = p_117802_.m_20069_() || p_117802_.isInFluidType((fluidType, height) -> p_117802_.canSwimInFluidType(fluidType)) ? -90.0F - p_117802_.m_146909_() : -90.0F; - float f5 = Mth.m_14179_(f, 0.0F, f4); - p_117803_.m_252781_(Axis.f_252529_.m_252977_(f5)); - if (p_117802_.m_6067_()) { + super.setupRotations(p_117802_, p_117803_, p_117804_, p_117805_, p_117806_); +- float f4 = p_117802_.isInWater() ? -90.0F - f1 : -90.0F; ++ float f4 = p_117802_.isInWater() || p_117802_.isInFluidType((fluidType, height) -> p_117802_.canSwimInFluidType(fluidType)) ? -90.0F - p_117802_.getXRot() : -90.0F; + float f5 = Mth.lerp(f, 0.0F, f4); + p_117803_.mulPose(Axis.XP.rotationDegrees(f5)); + if (p_117802_.isVisuallySwimming()) { diff --git a/patches/minecraft/net/minecraft/client/renderer/item/ItemProperties.java.patch b/patches/minecraft/net/minecraft/client/renderer/item/ItemProperties.java.patch index f514fd715f..029803054c 100644 --- a/patches/minecraft/net/minecraft/client/renderer/item/ItemProperties.java.patch +++ b/patches/minecraft/net/minecraft/client/renderer/item/ItemProperties.java.patch @@ -1,22 +1,22 @@ --- a/net/minecraft/client/renderer/item/ItemProperties.java +++ b/net/minecraft/client/renderer/item/ItemProperties.java @@ -46,6 +_,9 @@ - private static final Map> f_117825_ = Maps.newHashMap(); + private static final Map> PROPERTIES = Maps.newHashMap(); - private static ClampedItemPropertyFunction m_174581_(ResourceLocation p_174582_, ClampedItemPropertyFunction p_174583_) { + private static ClampedItemPropertyFunction registerGeneric(ResourceLocation p_174582_, ClampedItemPropertyFunction p_174583_) { + return (ClampedItemPropertyFunction) registerGeneric(p_174582_, (ItemPropertyFunction) p_174583_); + } + public static ItemPropertyFunction registerGeneric(ResourceLocation p_174582_, ItemPropertyFunction p_174583_) { - f_117820_.put(p_174582_, p_174583_); + GENERIC_PROPERTIES.put(p_174582_, p_174583_); return p_174583_; } @@ -55,6 +_,9 @@ } - private static void m_174570_(Item p_174571_, ResourceLocation p_174572_, ClampedItemPropertyFunction p_174573_) { + private static void register(Item p_174571_, ResourceLocation p_174572_, ClampedItemPropertyFunction p_174573_) { + register(p_174571_, p_174572_, (ItemPropertyFunction) p_174573_); + } + public static void register(Item p_174571_, ResourceLocation p_174572_, ItemPropertyFunction p_174573_) { - f_117825_.computeIfAbsent(p_174571_, (p_117828_) -> { + PROPERTIES.computeIfAbsent(p_174571_, (p_117828_) -> { return Maps.newHashMap(); }).put(p_174572_, p_174573_); diff --git a/patches/minecraft/net/minecraft/client/renderer/texture/AbstractTexture.java.patch b/patches/minecraft/net/minecraft/client/renderer/texture/AbstractTexture.java.patch index e305127941..1ed17f189d 100644 --- a/patches/minecraft/net/minecraft/client/renderer/texture/AbstractTexture.java.patch +++ b/patches/minecraft/net/minecraft/client/renderer/texture/AbstractTexture.java.patch @@ -9,15 +9,15 @@ + private boolean lastMipmap; + + public void setBlurMipmap(boolean blur, boolean mipmap) { -+ this.lastBlur = this.f_117951_; -+ this.lastMipmap = this.f_117952_; -+ m_117960_(blur, mipmap); ++ this.lastBlur = this.blur; ++ this.lastMipmap = this.mipmap; ++ setFilter(blur, mipmap); + } + + public void restoreLastBlurMipmap() { -+ m_117960_(this.lastBlur, this.lastMipmap); ++ setFilter(this.lastBlur, this.lastMipmap); + } + - public int m_117963_() { + public int getId() { RenderSystem.assertOnRenderThreadOrInit(); - if (this.f_117950_ == -1) { + if (this.id == -1) { diff --git a/patches/minecraft/net/minecraft/client/renderer/texture/MipmapGenerator.java.patch b/patches/minecraft/net/minecraft/client/renderer/texture/MipmapGenerator.java.patch index cd2116f2d5..de04b06562 100644 --- a/patches/minecraft/net/minecraft/client/renderer/texture/MipmapGenerator.java.patch +++ b/patches/minecraft/net/minecraft/client/renderer/texture/MipmapGenerator.java.patch @@ -2,24 +2,24 @@ +++ b/net/minecraft/client/renderer/texture/MipmapGenerator.java @@ -26,12 +_,15 @@ anativeimage[0] = p_251300_[0]; - boolean flag = m_246464_(anativeimage[0]); + boolean flag = hasTransparentPixel(anativeimage[0]); -+ int maxMipmapLevel = net.minecraftforge.client.ForgeHooksClient.getMaxMipmapLevel(anativeimage[0].m_84982_(), anativeimage[0].m_85084_()); ++ int maxMipmapLevel = net.minecraftforge.client.ForgeHooksClient.getMaxMipmapLevel(anativeimage[0].getWidth(), anativeimage[0].getHeight()); for(int i = 1; i <= p_252326_; ++i) { if (i < p_251300_.length) { anativeimage[i] = p_251300_[i]; } else { NativeImage nativeimage = anativeimage[i - 1]; -- NativeImage nativeimage1 = new NativeImage(nativeimage.m_84982_() >> 1, nativeimage.m_85084_() >> 1, false); +- NativeImage nativeimage1 = new NativeImage(nativeimage.getWidth() >> 1, nativeimage.getHeight() >> 1, false); + // Forge: Guard against invalid texture size, because we allow generating mipmaps regardless of texture sizes -+ NativeImage nativeimage1 = new NativeImage(Math.max(1, nativeimage.m_84982_() >> 1), Math.max(1, nativeimage.m_85084_() >> 1), false); ++ NativeImage nativeimage1 = new NativeImage(Math.max(1, nativeimage.getWidth() >> 1), Math.max(1, nativeimage.getHeight() >> 1), false); + if (i <= maxMipmapLevel) { - int j = nativeimage1.m_84982_(); - int k = nativeimage1.m_85084_(); + int j = nativeimage1.getWidth(); + int k = nativeimage1.getHeight(); @@ -39,6 +_,7 @@ for(int i1 = 0; i1 < k; ++i1) { - nativeimage1.m_84988_(l, i1, m_118048_(nativeimage.m_84985_(l * 2 + 0, i1 * 2 + 0), nativeimage.m_84985_(l * 2 + 1, i1 * 2 + 0), nativeimage.m_84985_(l * 2 + 0, i1 * 2 + 1), nativeimage.m_84985_(l * 2 + 1, i1 * 2 + 1), flag)); + nativeimage1.setPixelRGBA(l, i1, alphaBlend(nativeimage.getPixelRGBA(l * 2 + 0, i1 * 2 + 0), nativeimage.getPixelRGBA(l * 2 + 1, i1 * 2 + 0), nativeimage.getPixelRGBA(l * 2 + 0, i1 * 2 + 1), nativeimage.getPixelRGBA(l * 2 + 1, i1 * 2 + 1), flag)); } + } } diff --git a/patches/minecraft/net/minecraft/client/renderer/texture/SpriteContents.java.patch b/patches/minecraft/net/minecraft/client/renderer/texture/SpriteContents.java.patch index 90b40d728e..74aeb2df00 100644 --- a/patches/minecraft/net/minecraft/client/renderer/texture/SpriteContents.java.patch +++ b/patches/minecraft/net/minecraft/client/renderer/texture/SpriteContents.java.patch @@ -2,8 +2,8 @@ +++ b/net/minecraft/client/renderer/texture/SpriteContents.java @@ -34,8 +_,18 @@ @Nullable - final SpriteContents.AnimatedTexture f_244575_; - private final ResourceMetadata f_290652_; + final SpriteContents.AnimatedTexture animatedTexture; + private final ResourceMetadata metadata; + @Nullable + public final net.minecraftforge.client.textures.ForgeTextureMetadata forgeMeta; @@ -16,52 +16,52 @@ + } + + public SpriteContents(ResourceLocation p_249787_, FrameSize p_251031_, NativeImage p_252131_, ResourceMetadata p_299427_, @Nullable net.minecraftforge.client.textures.ForgeTextureMetadata forgeMeta) { - this.f_243877_ = p_249787_; - this.f_244302_ = p_251031_.f_244129_(); - this.f_244600_ = p_251031_.f_244503_(); + this.name = p_249787_; + this.width = p_251031_.width(); + this.height = p_251031_.height(); @@ -44,6 +_,7 @@ - this.f_244575_ = this.m_247391_(p_251031_, p_252131_.m_84982_(), p_252131_.m_85084_(), animationmetadatasection); - this.f_243904_ = p_252131_; - this.f_243731_ = new NativeImage[]{this.f_243904_}; + this.animatedTexture = this.createAnimatedTexture(p_251031_, p_252131_.getWidth(), p_252131_.getHeight(), animationmetadatasection); + this.originalImage = p_252131_; + this.byMipLevel = new NativeImage[]{this.originalImage}; + this.forgeMeta = forgeMeta; } - public void m_246368_(int p_248864_) { + public void increaseMipLevel(int p_248864_) { @@ -128,6 +_,9 @@ - void m_247381_(int p_248895_, int p_250245_, int p_250458_, int p_251337_, NativeImage[] p_248825_) { - for(int i = 0; i < this.f_243731_.length; ++i) { + void upload(int p_248895_, int p_250245_, int p_250458_, int p_251337_, NativeImage[] p_248825_) { + for(int i = 0; i < this.byMipLevel.length; ++i) { + // Forge: Skip uploading if the texture would be made invalid by mip level -+ if ((this.f_244302_ >> i) <= 0 || (this.f_244600_ >> i) <= 0) ++ if ((this.width >> i) <= 0 || (this.height >> i) <= 0) + break; - p_248825_[i].m_85003_(i, p_248895_ >> i, p_250245_ >> i, p_250458_ >> i, p_251337_ >> i, this.f_244302_ >> i, this.f_244600_ >> i, this.f_243731_.length > 1, false); + p_248825_[i].upload(i, p_248895_ >> i, p_250245_ >> i, p_250458_ >> i, p_251337_ >> i, this.width >> i, this.height >> i, this.byMipLevel.length > 1, false); } @@ -145,6 +_,10 @@ - return this.f_243877_; + return this.name; } + public NativeImage getOriginalImage() { -+ return this.f_243904_; ++ return this.originalImage; + } + - public IntStream m_245638_() { - return this.f_244575_ != null ? this.f_244575_.m_246130_() : IntStream.of(1); + public IntStream getUniqueFrames() { + return this.animatedTexture != null ? this.animatedTexture.getUniqueFrames() : IntStream.of(1); } @@ -249,7 +_,8 @@ - for(int i = 0; i < this.f_244527_.length; ++i) { - int j = SpriteContents.this.f_244302_ >> i; - int k = SpriteContents.this.f_244600_ >> i; -- this.f_244527_[i] = new NativeImage(j, k, false); + for(int i = 0; i < this.activeFrame.length; ++i) { + int j = SpriteContents.this.width >> i; + int k = SpriteContents.this.height >> i; +- this.activeFrame[i] = new NativeImage(j, k, false); + // Forge: Guard against invalid texture size, because we allow generating mipmaps regardless of texture sizes -+ this.f_244527_[i] = new NativeImage(Math.max(1, j), Math.max(1, k), false); ++ this.activeFrame[i] = new NativeImage(Math.max(1, j), Math.max(1, k), false); } } @@ -265,6 +_,9 @@ - for(int k = 0; k < this.f_244527_.length; ++k) { - int l = SpriteContents.this.f_244302_ >> k; - int i1 = SpriteContents.this.f_244600_ >> k; + for(int k = 0; k < this.activeFrame.length; ++k) { + int l = SpriteContents.this.width >> k; + int i1 = SpriteContents.this.height >> k; + // Forge: Guard against invalid texture size, because we allow generating mipmaps regardless of texture sizes + if (l < 1 || i1 < 1) + continue; diff --git a/patches/minecraft/net/minecraft/client/renderer/texture/SpriteLoader.java.patch b/patches/minecraft/net/minecraft/client/renderer/texture/SpriteLoader.java.patch index f48f245cb6..506adde125 100644 --- a/patches/minecraft/net/minecraft/client/renderer/texture/SpriteLoader.java.patch +++ b/patches/minecraft/net/minecraft/client/renderer/texture/SpriteLoader.java.patch @@ -2,22 +2,22 @@ +++ b/net/minecraft/client/renderer/texture/SpriteLoader.java @@ -67,7 +_,7 @@ int j1 = Math.min(j, k); - int k1 = Mth.m_14173_(j1); + int k1 = Mth.log2(j1); int l1; - if (k1 < p_261919_) { + if (false) { // Forge: Do not lower the mipmap level - f_244357_.warn("{}: dropping miplevel from {} to {}, because of minimum power of two: {}", this.f_244500_, p_261919_, k1, j1); + LOGGER.warn("{}: dropping miplevel from {} to {}, because of minimum power of two: {}", this.location, p_261919_, k1, j1); l1 = k1; } else { @@ -133,6 +_,11 @@ - private Map m_276091_(Stitcher p_276117_, int p_276111_, int p_276112_) { + private Map getStitchedSprites(Stitcher p_276117_, int p_276111_, int p_276112_) { Map map = new HashMap<>(); - p_276117_.m_118180_((p_251421_, p_250533_, p_251913_) -> { -+ TextureAtlasSprite sprite = net.minecraftforge.client.ForgeHooksClient.loadTextureAtlasSprite(this.f_244500_, p_251421_, p_276111_, p_276112_, p_250533_, p_251913_, p_251421_.f_243731_.length - 1); + p_276117_.gatherSprites((p_251421_, p_250533_, p_251913_) -> { ++ TextureAtlasSprite sprite = net.minecraftforge.client.ForgeHooksClient.loadTextureAtlasSprite(this.location, p_251421_, p_276111_, p_276112_, p_250533_, p_251913_, p_251421_.byMipLevel.length - 1); + if (sprite != null) { -+ map.put(p_251421_.m_246162_(), sprite); ++ map.put(p_251421_.name(), sprite); + return; + } - map.put(p_251421_.m_246162_(), new TextureAtlasSprite(this.f_244500_, p_251421_, p_276111_, p_276112_, p_250533_, p_251913_)); + map.put(p_251421_.name(), new TextureAtlasSprite(this.location, p_251421_, p_276111_, p_276112_, p_250533_, p_251913_)); }); return map; diff --git a/patches/minecraft/net/minecraft/client/renderer/texture/Stitcher.java.patch b/patches/minecraft/net/minecraft/client/renderer/texture/Stitcher.java.patch index baaead7c18..cdf38efea1 100644 --- a/patches/minecraft/net/minecraft/client/renderer/texture/Stitcher.java.patch +++ b/patches/minecraft/net/minecraft/client/renderer/texture/Stitcher.java.patch @@ -6,23 +6,23 @@ public class Stitcher { + private static final org.slf4j.Logger LOGGER = com.mojang.logging.LogUtils.getLogger(); + - private static final Comparator> f_118161_ = Comparator., Integer>comparing((p_118201_) -> { - return -p_118201_.f_118204_; + private static final Comparator> HOLDER_COMPARATOR = Comparator., Integer>comparing((p_118201_) -> { + return -p_118201_.height; }).thenComparing((p_118199_) -> { @@ -52,6 +_,14 @@ for(Stitcher.Holder holder : list) { - if (!this.m_118178_(holder)) { + if (!this.addToStorage(holder)) { + if (LOGGER.isInfoEnabled()) { + StringBuilder sb = new StringBuilder(); -+ sb.append("Unable to fit: ").append(holder.f_244486_().m_246162_()); -+ sb.append(" - size: ").append(holder.f_244486_.m_246492_()).append("x").append(holder.f_244486_.m_245330_()); ++ sb.append("Unable to fit: ").append(holder.entry().name()); ++ sb.append(" - size: ").append(holder.entry.width()).append("x").append(holder.entry.height()); + sb.append(" - Maybe try a lower resolution resourcepack?\n"); + list.forEach(h -> sb.append("\t").append(h).append("\n")); + LOGGER.info(sb.toString()); + } - throw new StitcherException(holder.f_244486_, list.stream().map((p_247946_) -> { - return p_247946_.f_244486_; + throw new StitcherException(holder.entry, list.stream().map((p_247946_) -> { + return p_247946_.entry; }).collect(ImmutableList.toImmutableList())); @@ -95,7 +_,7 @@ boolean flag4 = flag2 && j != l; diff --git a/patches/minecraft/net/minecraft/client/renderer/texture/TextureAtlas.java.patch b/patches/minecraft/net/minecraft/client/renderer/texture/TextureAtlas.java.patch index 0812e45027..bcf70b34b8 100644 --- a/patches/minecraft/net/minecraft/client/renderer/texture/TextureAtlas.java.patch +++ b/patches/minecraft/net/minecraft/client/renderer/texture/TextureAtlas.java.patch @@ -2,23 +2,23 @@ +++ b/net/minecraft/client/renderer/texture/TextureAtlas.java @@ -80,6 +_,8 @@ - this.f_118263_ = List.copyOf(list); - this.f_118262_ = List.copyOf(list1); + this.sprites = List.copyOf(list); + this.animatedTextures = List.copyOf(list1); + + net.minecraftforge.client.ForgeHooksClient.onTextureStitchedPost(this); } - public void m_276079_(ResourceLocation p_276106_, Path p_276127_) throws IOException { + public void dumpContents(ResourceLocation p_276106_, Path p_276127_) throws IOException { @@ -151,5 +_,12 @@ - public void m_247255_(SpriteLoader.Preparations p_251993_) { - this.m_117960_(false, p_251993_.f_244353_() > 0); + public void updateFilter(SpriteLoader.Preparations p_251993_) { + this.setFilter(false, p_251993_.mipLevel() > 0); + } + + /** + * {@return the set of sprites in this atlas.} + */ + public java.util.Set getTextureLocations() { -+ return java.util.Collections.unmodifiableSet(f_118264_.keySet()); ++ return java.util.Collections.unmodifiableSet(texturesByName.keySet()); } } diff --git a/patches/minecraft/net/minecraft/client/renderer/texture/TextureAtlasSprite.java.patch b/patches/minecraft/net/minecraft/client/renderer/texture/TextureAtlasSprite.java.patch index db49b419d5..b14e4b6714 100644 --- a/patches/minecraft/net/minecraft/client/renderer/texture/TextureAtlasSprite.java.patch +++ b/patches/minecraft/net/minecraft/client/renderer/texture/TextureAtlasSprite.java.patch @@ -7,11 +7,11 @@ + + // Forge Start + public int getPixelRGBA(int frameIndex, int x, int y) { -+ if (this.f_244165_.f_244575_ != null) { -+ x += this.f_244165_.f_244575_.m_245080_(frameIndex) * this.f_244165_.f_244302_; -+ y += this.f_244165_.f_244575_.m_246436_(frameIndex) * this.f_244165_.f_244600_; ++ if (this.contents.animatedTexture != null) { ++ x += this.contents.animatedTexture.getFrameX(frameIndex) * this.contents.width; ++ y += this.contents.animatedTexture.getFrameY(frameIndex) * this.contents.height; + } + -+ return this.f_244165_.getOriginalImage().m_84985_(x, y); ++ return this.contents.getOriginalImage().getPixelRGBA(x, y); + } } diff --git a/patches/minecraft/net/minecraft/client/renderer/texture/TextureManager.java.patch b/patches/minecraft/net/minecraft/client/renderer/texture/TextureManager.java.patch index 3626c10c08..98cf725840 100644 --- a/patches/minecraft/net/minecraft/client/renderer/texture/TextureManager.java.patch +++ b/patches/minecraft/net/minecraft/client/renderer/texture/TextureManager.java.patch @@ -1,10 +1,10 @@ --- a/net/minecraft/client/renderer/texture/TextureManager.java +++ b/net/minecraft/client/renderer/texture/TextureManager.java @@ -167,6 +_,7 @@ - public void m_118513_(ResourceLocation p_118514_) { - AbstractTexture abstracttexture = this.f_118468_.remove(p_118514_); + public void release(ResourceLocation p_118514_) { + AbstractTexture abstracttexture = this.byPath.remove(p_118514_); if (abstracttexture != null) { -+ this.f_118468_.remove(p_118514_); // Forge: fix MC-98707 - this.m_118508_(p_118514_, abstracttexture); ++ this.byPath.remove(p_118514_); // Forge: fix MC-98707 + this.safeClose(p_118514_, abstracttexture); } diff --git a/patches/minecraft/net/minecraft/client/renderer/texture/atlas/SpriteResourceLoader.java.patch b/patches/minecraft/net/minecraft/client/renderer/texture/atlas/SpriteResourceLoader.java.patch index 4c5414a4a9..d4545e7be6 100644 --- a/patches/minecraft/net/minecraft/client/renderer/texture/atlas/SpriteResourceLoader.java.patch +++ b/patches/minecraft/net/minecraft/client/renderer/texture/atlas/SpriteResourceLoader.java.patch @@ -1,12 +1,12 @@ --- a/net/minecraft/client/renderer/texture/atlas/SpriteResourceLoader.java +++ b/net/minecraft/client/renderer/texture/atlas/SpriteResourceLoader.java @@ -44,6 +_,9 @@ - AnimationMetadataSection animationmetadatasection = resourcemetadata.m_214059_(AnimationMetadataSection.f_119011_).orElse(AnimationMetadataSection.f_119012_); - FrameSize framesize = animationmetadatasection.m_245821_(nativeimage.m_84982_(), nativeimage.m_85084_()); - if (Mth.m_264612_(nativeimage.m_84982_(), framesize.f_244129_()) && Mth.m_264612_(nativeimage.m_85084_(), framesize.f_244503_())) { + AnimationMetadataSection animationmetadatasection = resourcemetadata.getSection(AnimationMetadataSection.SERIALIZER).orElse(AnimationMetadataSection.EMPTY); + FrameSize framesize = animationmetadatasection.calculateFrameSize(nativeimage.getWidth(), nativeimage.getHeight()); + if (Mth.isMultipleOf(nativeimage.getWidth(), framesize.width()) && Mth.isMultipleOf(nativeimage.getHeight(), framesize.height())) { + SpriteContents contents = net.minecraftforge.client.ForgeHooksClient.loadSpriteContents(p_296303_, p_296304_, framesize, nativeimage, resourcemetadata); + if (contents != null) + return contents; return new SpriteContents(p_296303_, framesize, nativeimage, resourcemetadata); } else { - f_260482_.error("Image {} size {},{} is not multiple of frame size {},{}", p_296303_, nativeimage.m_84982_(), nativeimage.m_85084_(), framesize.f_244129_(), framesize.f_244503_()); + LOGGER.error("Image {} size {},{} is not multiple of frame size {},{}", p_296303_, nativeimage.getWidth(), nativeimage.getHeight(), framesize.width(), framesize.height()); diff --git a/patches/minecraft/net/minecraft/client/resources/language/ClientLanguage.java.patch b/patches/minecraft/net/minecraft/client/resources/language/ClientLanguage.java.patch index 284c72425d..ded3c29e7f 100644 --- a/patches/minecraft/net/minecraft/client/resources/language/ClientLanguage.java.patch +++ b/patches/minecraft/net/minecraft/client/resources/language/ClientLanguage.java.patch @@ -1,12 +1,12 @@ --- a/net/minecraft/client/resources/language/ClientLanguage.java +++ b/net/minecraft/client/resources/language/ClientLanguage.java @@ -74,4 +_,9 @@ - public FormattedCharSequence m_5536_(FormattedText p_118925_) { - return FormattedBidiReorder.m_118931_(p_118925_, this.f_118911_); + public FormattedCharSequence getVisualOrder(FormattedText p_118925_) { + return FormattedBidiReorder.reorder(p_118925_, this.defaultRightToLeft); } + + @Override + public Map getLanguageData() { -+ return f_118910_; ++ return storage; + } } diff --git a/patches/minecraft/net/minecraft/client/resources/language/I18n.java.patch b/patches/minecraft/net/minecraft/client/resources/language/I18n.java.patch index a9dc237579..8e8099441d 100644 --- a/patches/minecraft/net/minecraft/client/resources/language/I18n.java.patch +++ b/patches/minecraft/net/minecraft/client/resources/language/I18n.java.patch @@ -2,9 +2,9 @@ +++ b/net/minecraft/client/resources/language/I18n.java @@ -14,6 +_,7 @@ - static void m_118941_(Language p_118942_) { - f_118934_ = p_118942_; + static void setLanguage(Language p_118942_) { + language = p_118942_; + net.minecraftforge.common.ForgeI18n.loadLanguageData(p_118942_.getLanguageData()); } - public static String m_118938_(String p_118939_, Object... p_118940_) { + public static String get(String p_118939_, Object... p_118940_) { diff --git a/patches/minecraft/net/minecraft/client/resources/language/LanguageManager.java.patch b/patches/minecraft/net/minecraft/client/resources/language/LanguageManager.java.patch index 93334d3c53..3816422d1e 100644 --- a/patches/minecraft/net/minecraft/client/resources/language/LanguageManager.java.patch +++ b/patches/minecraft/net/minecraft/client/resources/language/LanguageManager.java.patch @@ -1,24 +1,24 @@ --- a/net/minecraft/client/resources/language/LanguageManager.java +++ b/net/minecraft/client/resources/language/LanguageManager.java @@ -28,7 +_,7 @@ - private String f_118967_; + private String currentCode; public LanguageManager(String p_118971_) { -- this.f_118967_ = p_118971_; -+ m_264110_(p_118971_); +- this.currentCode = p_118971_; ++ setSelected(p_118971_); } - private static Map m_118981_(Stream p_118982_) { + private static Map extractLanguages(Stream p_118982_) { @@ -65,8 +_,12 @@ - Language.m_128114_(clientlanguage); + Language.inject(clientlanguage); } + private java.util.Locale javaLocale; // Forge: add locale information for modders + public java.util.Locale getJavaLocale() { return javaLocale; } - public void m_264110_(String p_265224_) { - this.f_118967_ = p_265224_; + public void setSelected(String p_265224_) { + this.currentCode = p_265224_; + final String[] langSplit = p_265224_.split("_", 2); + this.javaLocale = langSplit.length == 1 ? new java.util.Locale(langSplit[0]) : new java.util.Locale(langSplit[0], langSplit[1]); } - public String m_264236_() { + public String getSelected() { diff --git a/patches/minecraft/net/minecraft/client/resources/model/BakedModel.java.patch b/patches/minecraft/net/minecraft/client/resources/model/BakedModel.java.patch index aa068367d6..38cc9d9379 100644 --- a/patches/minecraft/net/minecraft/client/resources/model/BakedModel.java.patch +++ b/patches/minecraft/net/minecraft/client/resources/model/BakedModel.java.patch @@ -8,21 +8,21 @@ +public interface BakedModel extends net.minecraftforge.client.extensions.IForgeBakedModel { + /**@deprecated Forge: Use {@link net.minecraftforge.client.extensions.IForgeBakedModel#getQuads(BlockState, Direction, RandomSource, net.minecraftforge.client.model.data.ModelData, net.minecraft.client.renderer.RenderType)}*/ + @Deprecated - List m_213637_(@Nullable BlockState p_235039_, @Nullable Direction p_235040_, RandomSource p_235041_); + List getQuads(@Nullable BlockState p_235039_, @Nullable Direction p_235040_, RandomSource p_235041_); - boolean m_7541_(); + boolean useAmbientOcclusion(); @@ -24,9 +_,13 @@ - boolean m_7521_(); + boolean isCustomRenderer(); + /**@deprecated Forge: Use {@link net.minecraftforge.client.extensions.IForgeBakedModel#getParticleIcon(net.minecraftforge.client.model.data.ModelData)}*/ + @Deprecated - TextureAtlasSprite m_6160_(); + TextureAtlasSprite getParticleIcon(); -- ItemTransforms m_7442_(); +- ItemTransforms getTransforms(); + /**@deprecated Forge: Use {@link net.minecraftforge.client.extensions.IForgeBakedModel#applyTransform(ItemTransforms.TransformType, com.mojang.blaze3d.vertex.PoseStack, boolean)} instead */ + @Deprecated -+ default ItemTransforms m_7442_() { return ItemTransforms.f_111786_; } ++ default ItemTransforms getTransforms() { return ItemTransforms.NO_TRANSFORMS; } - ItemOverrides m_7343_(); + ItemOverrides getOverrides(); } diff --git a/patches/minecraft/net/minecraft/client/resources/model/ModelBaker.java.patch b/patches/minecraft/net/minecraft/client/resources/model/ModelBaker.java.patch index 587418225e..c2883640f8 100644 --- a/patches/minecraft/net/minecraft/client/resources/model/ModelBaker.java.patch +++ b/patches/minecraft/net/minecraft/client/resources/model/ModelBaker.java.patch @@ -6,12 +6,12 @@ @OnlyIn(Dist.CLIENT) -public interface ModelBaker { +public interface ModelBaker extends net.minecraftforge.client.extensions.IForgeModelBaker { - UnbakedModel m_245361_(ResourceLocation p_252194_); + UnbakedModel getModel(ResourceLocation p_252194_); + /** + * @deprecated Forge: Use {@link #bake(ResourceLocation, ModelState, java.util.function.Function)} instead. + */ + @Deprecated @Nullable - BakedModel m_245240_(ResourceLocation p_250776_, ModelState p_251280_); + BakedModel bake(ResourceLocation p_250776_, ModelState p_251280_); } diff --git a/patches/minecraft/net/minecraft/client/resources/model/ModelBakery.java.patch b/patches/minecraft/net/minecraft/client/resources/model/ModelBakery.java.patch index d2851e0808..339f438e69 100644 --- a/patches/minecraft/net/minecraft/client/resources/model/ModelBakery.java.patch +++ b/patches/minecraft/net/minecraft/client/resources/model/ModelBakery.java.patch @@ -1,48 +1,48 @@ --- a/net/minecraft/client/resources/model/ModelBakery.java +++ b/net/minecraft/client/resources/model/ModelBakery.java @@ -153,6 +_,13 @@ - p_252014_.m_6182_("special"); - this.m_119306_(ItemRenderer.f_244055_); - this.m_119306_(ItemRenderer.f_243706_); + p_252014_.popPush("special"); + this.loadTopLevel(ItemRenderer.TRIDENT_IN_HAND_MODEL); + this.loadTopLevel(ItemRenderer.SPYGLASS_IN_HAND_MODEL); + Set additionalModels = Sets.newHashSet(); + net.minecraftforge.client.ForgeHooksClient.onRegisterAdditionalModels(additionalModels); + for (ResourceLocation rl : additionalModels) { -+ UnbakedModel unbakedmodel = this.m_119341_(rl); // loadTopLevel(...), but w/o ModelResourceLocation limitation -+ this.f_119212_.put(rl, unbakedmodel); -+ this.f_119214_.put(rl, unbakedmodel); ++ UnbakedModel unbakedmodel = this.getModel(rl); // loadTopLevel(...), but w/o ModelResourceLocation limitation ++ this.unbakedCache.put(rl, unbakedmodel); ++ this.topLevelModels.put(rl, unbakedmodel); + } - this.f_119214_.values().forEach((p_247954_) -> { - p_247954_.m_5500_(this::m_119341_); + this.topLevelModels.values().forEach((p_247954_) -> { + p_247954_.resolveParents(this::getModel); }); @@ -452,7 +_,17 @@ - return ModelBakery.this.m_119341_(p_248568_); + return ModelBakery.this.getModel(p_248568_); } + @Override + public Function getModelTextureGetter() { -+ return this.f_243920_; ++ return this.modelTextureGetter; + } + - public BakedModel m_245240_(ResourceLocation p_252176_, ModelState p_249765_) { -+ return bake(p_252176_, p_249765_, this.f_243920_); + public BakedModel bake(ResourceLocation p_252176_, ModelState p_249765_) { ++ return bake(p_252176_, p_249765_, this.modelTextureGetter); + } + + @Override + public BakedModel bake(ResourceLocation p_252176_, ModelState p_249765_, Function sprites) { - ModelBakery.BakedCacheKey modelbakery$bakedcachekey = new ModelBakery.BakedCacheKey(p_252176_, p_249765_.m_6189_(), p_249765_.m_7538_()); - BakedModel bakedmodel = ModelBakery.this.f_119213_.get(modelbakery$bakedcachekey); + ModelBakery.BakedCacheKey modelbakery$bakedcachekey = new ModelBakery.BakedCacheKey(p_252176_, p_249765_.getRotation(), p_249765_.isUvLocked()); + BakedModel bakedmodel = ModelBakery.this.bakedCache.get(modelbakery$bakedcachekey); if (bakedmodel != null) { @@ -462,11 +_,11 @@ if (unbakedmodel instanceof BlockModel) { BlockModel blockmodel = (BlockModel)unbakedmodel; - if (blockmodel.m_111490_() == ModelBakery.f_119232_) { -- return ModelBakery.f_119241_.m_111670_(this.f_243920_, blockmodel).m_111449_(this, blockmodel, this.f_243920_, p_249765_, p_252176_, false); -+ return ModelBakery.f_119241_.m_111670_(sprites, blockmodel).m_111449_(this, blockmodel, sprites, p_249765_, p_252176_, false); + if (blockmodel.getRootModel() == ModelBakery.GENERATION_MARKER) { +- return ModelBakery.ITEM_MODEL_GENERATOR.generateBlockModel(this.modelTextureGetter, blockmodel).bake(this, blockmodel, this.modelTextureGetter, p_249765_, p_252176_, false); ++ return ModelBakery.ITEM_MODEL_GENERATOR.generateBlockModel(sprites, blockmodel).bake(this, blockmodel, sprites, p_249765_, p_252176_, false); } } -- BakedModel bakedmodel1 = unbakedmodel.m_7611_(this, this.f_243920_, p_249765_, p_252176_); -+ BakedModel bakedmodel1 = unbakedmodel.m_7611_(this, sprites, p_249765_, p_252176_); - ModelBakery.this.f_119213_.put(modelbakery$bakedcachekey, bakedmodel1); +- BakedModel bakedmodel1 = unbakedmodel.bake(this, this.modelTextureGetter, p_249765_, p_252176_); ++ BakedModel bakedmodel1 = unbakedmodel.bake(this, sprites, p_249765_, p_252176_); + ModelBakery.this.bakedCache.put(modelbakery$bakedcachekey, bakedmodel1); return bakedmodel1; } diff --git a/patches/minecraft/net/minecraft/client/resources/model/ModelManager.java.patch b/patches/minecraft/net/minecraft/client/resources/model/ModelManager.java.patch index 3513236bac..03aa535b18 100644 --- a/patches/minecraft/net/minecraft/client/resources/model/ModelManager.java.patch +++ b/patches/minecraft/net/minecraft/client/resources/model/ModelManager.java.patch @@ -2,69 +2,69 @@ +++ b/net/minecraft/client/resources/model/ModelManager.java @@ -42,13 +_,14 @@ public class ModelManager implements PreparableReloadListener, AutoCloseable { - private static final Logger f_243848_ = LogUtils.getLogger(); - private static final Map f_244614_ = Map.of(Sheets.f_110737_, new ResourceLocation("banner_patterns"), Sheets.f_110736_, new ResourceLocation("beds"), Sheets.f_110740_, new ResourceLocation("chests"), Sheets.f_110738_, new ResourceLocation("shield_patterns"), Sheets.f_110739_, new ResourceLocation("signs"), Sheets.f_110735_, new ResourceLocation("shulker_boxes"), Sheets.f_265912_, new ResourceLocation("armor_trims"), Sheets.f_271463_, new ResourceLocation("decorated_pot"), TextureAtlas.f_118259_, new ResourceLocation("blocks")); -- private Map f_119397_; -+ private Map f_119397_ = new java.util.HashMap<>(); - private final AtlasSet f_119398_; - private final BlockModelShaper f_119399_; - private final BlockColors f_119401_; - private int f_119402_; - private BakedModel f_119403_; - private Object2IntMap f_119404_; + private static final Logger LOGGER = LogUtils.getLogger(); + private static final Map VANILLA_ATLASES = Map.of(Sheets.BANNER_SHEET, new ResourceLocation("banner_patterns"), Sheets.BED_SHEET, new ResourceLocation("beds"), Sheets.CHEST_SHEET, new ResourceLocation("chests"), Sheets.SHIELD_SHEET, new ResourceLocation("shield_patterns"), Sheets.SIGN_SHEET, new ResourceLocation("signs"), Sheets.SHULKER_SHEET, new ResourceLocation("shulker_boxes"), Sheets.ARMOR_TRIMS_SHEET, new ResourceLocation("armor_trims"), Sheets.DECORATED_POT_SHEET, new ResourceLocation("decorated_pot"), TextureAtlas.LOCATION_BLOCKS, new ResourceLocation("blocks")); +- private Map bakedRegistry; ++ private Map bakedRegistry = new java.util.HashMap<>(); + private final AtlasSet atlases; + private final BlockModelShaper blockModelShaper; + private final BlockColors blockColors; + private int maxMipmapLevels; + private BakedModel missingModel; + private Object2IntMap modelGroups; + private ModelBakery modelBakery; public ModelManager(TextureManager p_119406_, BlockColors p_119407_, int p_119408_) { - this.f_119401_ = p_119407_; + this.blockColors = p_119407_; @@ -57,6 +_,10 @@ - this.f_119398_ = new AtlasSet(f_244614_, p_119406_); + this.atlases = new AtlasSet(VANILLA_ATLASES, p_119406_); } + public BakedModel getModel(ResourceLocation modelLocation) { -+ return this.f_119397_.getOrDefault(modelLocation, this.f_119403_); ++ return this.bakedRegistry.getOrDefault(modelLocation, this.missingModel); + } + - public BakedModel m_119422_(ModelResourceLocation p_119423_) { - return this.f_119397_.getOrDefault(p_119423_, this.f_119403_); + public BakedModel getModel(ModelResourceLocation p_119423_) { + return this.bakedRegistry.getOrDefault(p_119423_, this.missingModel); } @@ -71,6 +_,7 @@ - public final CompletableFuture m_5540_(PreparableReloadListener.PreparationBarrier p_249079_, ResourceManager p_251134_, ProfilerFiller p_250336_, ProfilerFiller p_252324_, Executor p_250550_, Executor p_249221_) { - p_250336_.m_7242_(); + public final CompletableFuture reload(PreparableReloadListener.PreparationBarrier p_249079_, ResourceManager p_251134_, ProfilerFiller p_250336_, ProfilerFiller p_252324_, Executor p_250550_, Executor p_249221_) { + p_250336_.startTick(); + net.minecraftforge.client.model.geometry.GeometryLoaderManager.init(); - CompletableFuture> completablefuture = m_246704_(p_251134_, p_250550_); - CompletableFuture>> completablefuture1 = m_246899_(p_251134_, p_250550_); + CompletableFuture> completablefuture = loadBlockModels(p_251134_, p_250550_); + CompletableFuture>> completablefuture1 = loadBlockStates(p_251134_, p_250550_); CompletableFuture completablefuture2 = completablefuture.thenCombineAsync(completablefuture1, (p_251201_, p_251281_) -> { @@ -164,6 +_,8 @@ - return " " + p_248692_.m_119193_() + ":" + p_248692_.m_119203_(); + return " " + p_248692_.atlasLocation() + ":" + p_248692_.texture(); }).collect(Collectors.joining("\n"))); }); -+ p_252136_.m_6182_("forge_modify_baking_result"); -+ net.minecraftforge.client.ForgeHooksClient.onModifyBakingResult(p_248945_.m_119251_(), p_248945_); - p_252136_.m_6182_("dispatch"); - Map map = p_248945_.m_119251_(); - BakedModel bakedmodel = map.get(ModelBakery.f_119230_); ++ p_252136_.popPush("forge_modify_baking_result"); ++ net.minecraftforge.client.ForgeHooksClient.onModifyBakingResult(p_248945_.getBakedTopLevelModels(), p_248945_); + p_252136_.popPush("dispatch"); + Map map = p_248945_.getBakedTopLevelModels(); + BakedModel bakedmodel = map.get(ModelBakery.MISSING_MODEL_LOCATION); @@ -193,6 +_,8 @@ - this.f_119397_ = modelbakery.m_119251_(); - this.f_119404_ = modelbakery.m_119355_(); - this.f_119403_ = p_248996_.f_244619_; + this.bakedRegistry = modelbakery.getBakedTopLevelModels(); + this.modelGroups = modelbakery.getModelGroups(); + this.missingModel = p_248996_.missingModel; + this.modelBakery = modelbakery; -+ net.minecraftforge.client.ForgeHooksClient.onModelBake(this, this.f_119397_, modelbakery); - p_251960_.m_6182_("cache"); - this.f_119399_.m_245515_(p_248996_.f_244561_); - p_251960_.m_7238_(); ++ net.minecraftforge.client.ForgeHooksClient.onModelBake(this, this.bakedRegistry, modelbakery); + p_251960_.popPush("cache"); + this.blockModelShaper.replaceCache(p_248996_.modelCache); + p_251960_.pop(); @@ -218,6 +_,7 @@ } - public TextureAtlas m_119428_(ResourceLocation p_119429_) { -+ if (this.f_119398_ == null) throw new RuntimeException("getAtlasTexture called too early!"); - return this.f_119398_.m_245433_(p_119429_); + public TextureAtlas getAtlas(ResourceLocation p_119429_) { ++ if (this.atlases == null) throw new RuntimeException("getAtlasTexture called too early!"); + return this.atlases.getAtlas(p_119429_); } @@ -227,6 +_,10 @@ - public void m_119410_(int p_119411_) { - this.f_119402_ = p_119411_; + public void updateMaxMipLevel(int p_119411_) { + this.maxMipmapLevels = p_119411_; + } + + public ModelBakery getModelBakery() { diff --git a/patches/minecraft/net/minecraft/client/resources/model/MultiPartBakedModel.java.patch b/patches/minecraft/net/minecraft/client/resources/model/MultiPartBakedModel.java.patch index 87146d200c..fba04c16a8 100644 --- a/patches/minecraft/net/minecraft/client/resources/model/MultiPartBakedModel.java.patch +++ b/patches/minecraft/net/minecraft/client/resources/model/MultiPartBakedModel.java.patch @@ -6,37 +6,37 @@ @OnlyIn(Dist.CLIENT) -public class MultiPartBakedModel implements BakedModel { +public class MultiPartBakedModel implements net.minecraftforge.client.model.IDynamicBakedModel { - private final List, BakedModel>> f_119459_; - protected final boolean f_119453_; - protected final boolean f_119454_; + private final List, BakedModel>> selectors; + protected final boolean hasAmbientOcclusion; + protected final boolean isGui3d; @@ -30,10 +_,12 @@ - protected final ItemTransforms f_119457_; - protected final ItemOverrides f_119458_; - private final Map f_119460_ = new Object2ObjectOpenCustomHashMap<>(Util.m_137583_()); + protected final ItemTransforms transforms; + protected final ItemOverrides overrides; + private final Map selectorCache = new Object2ObjectOpenCustomHashMap<>(Util.identityStrategy()); + private final BakedModel defaultModel; public MultiPartBakedModel(List, BakedModel>> p_119462_) { - this.f_119459_ = p_119462_; + this.selectors = p_119462_; BakedModel bakedmodel = p_119462_.iterator().next().getRight(); + this.defaultModel = bakedmodel; - this.f_119453_ = bakedmodel.m_7541_(); - this.f_119454_ = bakedmodel.m_7539_(); - this.f_119455_ = bakedmodel.m_7547_(); + this.hasAmbientOcclusion = bakedmodel.useAmbientOcclusion(); + this.isGui3d = bakedmodel.isGui3d(); + this.usesBlockLight = bakedmodel.usesBlockLight(); @@ -42,10 +_,7 @@ - this.f_119458_ = bakedmodel.m_7343_(); + this.overrides = bakedmodel.getOverrides(); } -- public List m_213637_(@Nullable BlockState p_235050_, @Nullable Direction p_235051_, RandomSource p_235052_) { +- public List getQuads(@Nullable BlockState p_235050_, @Nullable Direction p_235051_, RandomSource p_235052_) { - if (p_235050_ == null) { - return Collections.emptyList(); - } else { + public BitSet getSelectors(@Nullable BlockState p_235050_) { - BitSet bitset = this.f_119460_.get(p_235050_); + BitSet bitset = this.selectorCache.get(p_235050_); if (bitset == null) { bitset = new BitSet(); @@ -59,17 +_,27 @@ - this.f_119460_.put(p_235050_, bitset); + this.selectorCache.put(p_235050_, bitset); } + return bitset; + } @@ -49,14 +49,14 @@ + } else { + BitSet bitset = getSelectors(p_235050_); + List> list = Lists.newArrayList(); - long k = p_235052_.m_188505_(); + long k = p_235052_.nextLong(); for(int j = 0; j < bitset.length(); ++j) { if (bitset.get(j)) { -- list.addAll(this.f_119459_.get(j).getRight().m_213637_(p_235050_, p_235051_, RandomSource.m_216335_(k))); -+ var model = this.f_119459_.get(j).getRight(); +- list.addAll(this.selectors.get(j).getRight().getQuads(p_235050_, p_235051_, RandomSource.create(k))); ++ var model = this.selectors.get(j).getRight(); + if (renderType == null || model.getRenderTypes(p_235050_, p_235052_, modelData).contains(renderType)) // FORGE: Only put quad data if the model is using the render type passed -+ list.add(model.getQuads(p_235050_, p_235051_, RandomSource.m_216335_(k), net.minecraftforge.client.model.data.MultipartModelData.resolve(modelData, model), renderType)); ++ list.add(model.getQuads(p_235050_, p_235051_, RandomSource.create(k), net.minecraftforge.client.model.data.MultipartModelData.resolve(modelData, model), renderType)); } } @@ -66,7 +66,7 @@ } @@ -77,6 +_,14 @@ - return this.f_119453_; + return this.hasAmbientOcclusion; } + public boolean useAmbientOcclusion(BlockState state) { @@ -77,16 +77,16 @@ + return this.defaultModel.useAmbientOcclusion(state, renderType); + } + - public boolean m_7539_() { - return this.f_119454_; + public boolean isGui3d() { + return this.isGui3d; } @@ -89,12 +_,32 @@ return false; } + @Deprecated - public TextureAtlasSprite m_6160_() { - return this.f_119456_; + public TextureAtlasSprite getParticleIcon() { + return this.particleIcon; } + public TextureAtlasSprite getParticleIcon(net.minecraftforge.client.model.data.ModelData modelData) { @@ -94,8 +94,8 @@ + } + + @Deprecated - public ItemTransforms m_7442_() { - return this.f_119457_; + public ItemTransforms getTransforms() { + return this.transforms; + } + + public BakedModel applyTransform(net.minecraft.world.item.ItemDisplayContext transformType, com.mojang.blaze3d.vertex.PoseStack poseStack, boolean applyLeftHandTransform) { @@ -108,8 +108,8 @@ + var selectors = getSelectors(state); + for (int i = 0; i < selectors.length(); i++) + if (selectors.get(i)) -+ renderTypeSets.add(this.f_119459_.get(i).getRight().getRenderTypes(state, rand, data)); ++ renderTypeSets.add(this.selectors.get(i).getRight().getRenderTypes(state, rand, data)); + return net.minecraftforge.client.ChunkRenderTypeSet.union(renderTypeSets); } - public ItemOverrides m_7343_() { + public ItemOverrides getOverrides() { diff --git a/patches/minecraft/net/minecraft/client/resources/model/SimpleBakedModel.java.patch b/patches/minecraft/net/minecraft/client/resources/model/SimpleBakedModel.java.patch index 98de847244..d8b7c27ab9 100644 --- a/patches/minecraft/net/minecraft/client/resources/model/SimpleBakedModel.java.patch +++ b/patches/minecraft/net/minecraft/client/resources/model/SimpleBakedModel.java.patch @@ -1,9 +1,9 @@ --- a/net/minecraft/client/resources/model/SimpleBakedModel.java +++ b/net/minecraft/client/resources/model/SimpleBakedModel.java @@ -26,8 +_,17 @@ - protected final TextureAtlasSprite f_119485_; - protected final ItemTransforms f_119486_; - protected final ItemOverrides f_119487_; + protected final TextureAtlasSprite particleIcon; + protected final ItemTransforms transforms; + protected final ItemOverrides overrides; + protected final net.minecraftforge.client.ChunkRenderTypeSet blockRenderTypes; + protected final List itemRenderTypes; + protected final List fabulousItemRenderTypes; @@ -15,21 +15,21 @@ + } + + public SimpleBakedModel(List p_119489_, Map> p_119490_, boolean p_119491_, boolean p_119492_, boolean p_119493_, TextureAtlasSprite p_119494_, ItemTransforms p_119495_, ItemOverrides p_119496_, net.minecraftforge.client.RenderTypeGroup renderTypes) { - this.f_119480_ = p_119489_; - this.f_119481_ = p_119490_; - this.f_119482_ = p_119491_; + this.unculledFaces = p_119489_; + this.culledFaces = p_119490_; + this.hasAmbientOcclusion = p_119491_; @@ -36,6 +_,9 @@ - this.f_119485_ = p_119494_; - this.f_119486_ = p_119495_; - this.f_119487_ = p_119496_; + this.particleIcon = p_119494_; + this.transforms = p_119495_; + this.overrides = p_119496_; + this.blockRenderTypes = !renderTypes.isEmpty() ? net.minecraftforge.client.ChunkRenderTypeSet.of(renderTypes.block()) : null; + this.itemRenderTypes = !renderTypes.isEmpty() ? List.of(renderTypes.entity()) : null; + this.fabulousItemRenderTypes = !renderTypes.isEmpty() ? List.of(renderTypes.entityFabulous()) : null; } - public List m_213637_(@Nullable BlockState p_235054_, @Nullable Direction p_235055_, RandomSource p_235056_) { + public List getQuads(@Nullable BlockState p_235054_, @Nullable Direction p_235055_, RandomSource p_235056_) { @@ -70,6 +_,25 @@ - return this.f_119487_; + return this.overrides; } + @Override @@ -53,23 +53,23 @@ + @OnlyIn(Dist.CLIENT) public static class Builder { - private final List f_119508_ = Lists.newArrayList(); + private final List unculledFaces = Lists.newArrayList(); @@ -116,11 +_,17 @@ return this; } + /** @deprecated Forge: Use {@linkplain #build(net.minecraftforge.client.RenderTypeGroup) variant with RenderTypeGroup} **/ + @Deprecated - public BakedModel m_119533_() { + public BakedModel build() { + return build(net.minecraftforge.client.RenderTypeGroup.EMPTY); + } + + public BakedModel build(net.minecraftforge.client.RenderTypeGroup renderTypes) { - if (this.f_119512_ == null) { + if (this.particleIcon == null) { throw new RuntimeException("Missing particle!"); } else { -- return new SimpleBakedModel(this.f_119508_, this.f_119509_, this.f_119511_, this.f_119513_, this.f_119514_, this.f_119512_, this.f_119515_, this.f_119510_); -+ return new SimpleBakedModel(this.f_119508_, this.f_119509_, this.f_119511_, this.f_119513_, this.f_119514_, this.f_119512_, this.f_119515_, this.f_119510_, renderTypes); +- return new SimpleBakedModel(this.unculledFaces, this.culledFaces, this.hasAmbientOcclusion, this.usesBlockLight, this.isGui3d, this.particleIcon, this.transforms, this.overrides); ++ return new SimpleBakedModel(this.unculledFaces, this.culledFaces, this.hasAmbientOcclusion, this.usesBlockLight, this.isGui3d, this.particleIcon, this.transforms, this.overrides, renderTypes); } } } diff --git a/patches/minecraft/net/minecraft/client/resources/model/WeightedBakedModel.java.patch b/patches/minecraft/net/minecraft/client/resources/model/WeightedBakedModel.java.patch index 598074e098..bb1180e473 100644 --- a/patches/minecraft/net/minecraft/client/resources/model/WeightedBakedModel.java.patch +++ b/patches/minecraft/net/minecraft/client/resources/model/WeightedBakedModel.java.patch @@ -6,60 +6,60 @@ @OnlyIn(Dist.CLIENT) -public class WeightedBakedModel implements BakedModel { +public class WeightedBakedModel implements net.minecraftforge.client.model.IDynamicBakedModel { - private final int f_119540_; - private final List> f_119541_; - private final BakedModel f_119542_; + private final int totalWeight; + private final List> list; + private final BakedModel wrapped; @@ -28,9 +_,10 @@ - this.f_119542_ = p_119544_.get(0).m_146310_(); + this.wrapped = p_119544_.get(0).getData(); } -- public List m_213637_(@Nullable BlockState p_235058_, @Nullable Direction p_235059_, RandomSource p_235060_) { +- public List getQuads(@Nullable BlockState p_235058_, @Nullable Direction p_235059_, RandomSource p_235060_) { + // FORGE: Implement our overloads (here and below) so child models can have custom logic + public List getQuads(@Nullable BlockState p_235058_, @Nullable Direction p_235059_, RandomSource p_235060_, net.minecraftforge.client.model.data.ModelData modelData, @org.jetbrains.annotations.Nullable net.minecraft.client.renderer.RenderType renderType) { - return WeightedRandom.m_146314_(this.f_119541_, Math.abs((int)p_235060_.m_188505_()) % this.f_119540_).map((p_235065_) -> { -- return p_235065_.m_146310_().m_213637_(p_235058_, p_235059_, p_235060_); -+ return p_235065_.m_146310_().getQuads(p_235058_, p_235059_, p_235060_, modelData, renderType); + return WeightedRandom.getWeightedItem(this.list, Math.abs((int)p_235060_.nextLong()) % this.totalWeight).map((p_235065_) -> { +- return p_235065_.getData().getQuads(p_235058_, p_235059_, p_235060_); ++ return p_235065_.getData().getQuads(p_235058_, p_235059_, p_235060_, modelData, renderType); }).orElse(Collections.emptyList()); } @@ -38,6 +_,16 @@ - return this.f_119542_.m_7541_(); + return this.wrapped.useAmbientOcclusion(); } + @Override + public boolean useAmbientOcclusion(BlockState state) { -+ return this.f_119542_.useAmbientOcclusion(state); ++ return this.wrapped.useAmbientOcclusion(state); + } + + @Override + public boolean useAmbientOcclusion(BlockState state, net.minecraft.client.renderer.RenderType renderType) { -+ return this.f_119542_.useAmbientOcclusion(state, renderType); ++ return this.wrapped.useAmbientOcclusion(state, renderType); + } + - public boolean m_7539_() { - return this.f_119542_.m_7539_(); + public boolean isGui3d() { + return this.wrapped.isGui3d(); } @@ -54,8 +_,23 @@ - return this.f_119542_.m_6160_(); + return this.wrapped.getParticleIcon(); } + public TextureAtlasSprite getParticleIcon(net.minecraftforge.client.model.data.ModelData modelData) { -+ return this.f_119542_.getParticleIcon(modelData); ++ return this.wrapped.getParticleIcon(modelData); + } + - public ItemTransforms m_7442_() { - return this.f_119542_.m_7442_(); + public ItemTransforms getTransforms() { + return this.wrapped.getTransforms(); + } + + public BakedModel applyTransform(net.minecraft.world.item.ItemDisplayContext transformType, com.mojang.blaze3d.vertex.PoseStack poseStack, boolean applyLeftHandTransform) { -+ return this.f_119542_.applyTransform(transformType, poseStack, applyLeftHandTransform); ++ return this.wrapped.applyTransform(transformType, poseStack, applyLeftHandTransform); + } + + @Override // FORGE: Get render types based on the active weighted model + public net.minecraftforge.client.ChunkRenderTypeSet getRenderTypes(@org.jetbrains.annotations.NotNull BlockState state, @org.jetbrains.annotations.NotNull RandomSource rand, @org.jetbrains.annotations.NotNull net.minecraftforge.client.model.data.ModelData data) { -+ return WeightedRandom.m_146314_(this.f_119541_, Math.abs((int)rand.m_188505_()) % this.f_119540_) -+ .map((p_235065_) -> p_235065_.m_146310_().getRenderTypes(state, rand, data)) ++ return WeightedRandom.getWeightedItem(this.list, Math.abs((int)rand.nextLong()) % this.totalWeight) ++ .map((p_235065_) -> p_235065_.getData().getRenderTypes(state, rand, data)) + .orElse(net.minecraftforge.client.ChunkRenderTypeSet.none()); } - public ItemOverrides m_7343_() { + public ItemOverrides getOverrides() { diff --git a/patches/minecraft/net/minecraft/client/resources/sounds/SoundInstance.java.patch b/patches/minecraft/net/minecraft/client/resources/sounds/SoundInstance.java.patch index 052db1aa18..54c60398b6 100644 --- a/patches/minecraft/net/minecraft/client/resources/sounds/SoundInstance.java.patch +++ b/patches/minecraft/net/minecraft/client/resources/sounds/SoundInstance.java.patch @@ -8,6 +8,6 @@ + /*================================ FORGE START ================================================*/ + + default java.util.concurrent.CompletableFuture getStream(net.minecraft.client.sounds.SoundBufferLibrary soundBuffers, Sound sound, boolean looping) { -+ return soundBuffers.m_120204_(sound.m_119790_(), looping); ++ return soundBuffers.getStream(sound.getPath(), looping); + } } diff --git a/patches/minecraft/net/minecraft/client/server/IntegratedServer.java.patch b/patches/minecraft/net/minecraft/client/server/IntegratedServer.java.patch index b3de135c81..4f136df1c0 100644 --- a/patches/minecraft/net/minecraft/client/server/IntegratedServer.java.patch +++ b/patches/minecraft/net/minecraft/client/server/IntegratedServer.java.patch @@ -1,24 +1,24 @@ --- a/net/minecraft/client/server/IntegratedServer.java +++ b/net/minecraft/client/server/IntegratedServer.java @@ -59,11 +_,12 @@ - this.m_129997_(true); - this.m_129999_(true); - this.m_129793_(); + this.setPvpAllowed(true); + this.setFlightAllowed(true); + this.initializeKeyPair(); + if (!net.minecraftforge.server.ServerLifecycleHooks.handleServerAboutToStart(this)) return false; - this.m_130006_(); - GameProfile gameprofile = this.m_236731_(); - String s = this.m_129910_().m_5462_(); - this.m_129989_(gameprofile != null ? gameprofile.getName() + " - " + s : s); + this.loadLevel(); + GameProfile gameprofile = this.getSingleplayerProfile(); + String s = this.getWorldData().getLevelName(); + this.setMotd(gameprofile != null ? gameprofile.getName() + " - " + s : s); - return true; + return net.minecraftforge.server.ServerLifecycleHooks.handleServerStarting(this); } - public void m_5705_(BooleanSupplier p_120049_) { + public void tickServer(BooleanSupplier p_120049_) { @@ -196,6 +_,7 @@ } - public void m_7570_(boolean p_120053_) { -+ if (m_130010_()) - this.m_18709_(() -> { - for(ServerPlayer serverplayer : Lists.newArrayList(this.m_6846_().m_11314_())) { - if (!serverplayer.m_20148_().equals(this.f_120019_)) { + public void halt(boolean p_120053_) { ++ if (isRunning()) + this.executeBlocking(() -> { + for(ServerPlayer serverplayer : Lists.newArrayList(this.getPlayerList().getPlayers())) { + if (!serverplayer.getUUID().equals(this.uuid)) { diff --git a/patches/minecraft/net/minecraft/client/server/LanServerDetection.java.patch b/patches/minecraft/net/minecraft/client/server/LanServerDetection.java.patch index 8f7b378967..03547e186e 100644 --- a/patches/minecraft/net/minecraft/client/server/LanServerDetection.java.patch +++ b/patches/minecraft/net/minecraft/client/server/LanServerDetection.java.patch @@ -2,16 +2,16 @@ +++ b/net/minecraft/client/server/LanServerDetection.java @@ -33,7 +_,7 @@ this.setDaemon(true); - this.setUncaughtExceptionHandler(new DefaultUncaughtExceptionHandler(LanServerDetection.f_120082_)); - this.f_120088_ = new MulticastSocket(4445); -- this.f_120087_ = InetAddress.getByName("224.0.2.60"); -+ this.f_120087_ = InetAddress.getByName(LanServerPinger.f_174974_); - this.f_120088_.setSoTimeout(5000); - this.f_120088_.joinGroup(this.f_120087_); + this.setUncaughtExceptionHandler(new DefaultUncaughtExceptionHandler(LanServerDetection.LOGGER)); + this.socket = new MulticastSocket(4445); +- this.pingGroup = InetAddress.getByName("224.0.2.60"); ++ this.pingGroup = InetAddress.getByName(LanServerPinger.MULTICAST_GROUP); + this.socket.setSoTimeout(5000); + this.socket.joinGroup(this.pingGroup); } @@ -87,7 +_,11 @@ - String s = LanServerPinger.m_120111_(p_120097_); - String s1 = LanServerPinger.m_120116_(p_120097_); + String s = LanServerPinger.parseMotd(p_120097_); + String s1 = LanServerPinger.parseAddress(p_120097_); if (s1 != null) { - s1 = p_120098_.getHostAddress() + ":" + s1; + if (net.minecraftforge.network.DualStackUtils.checkIPv6(p_120098_)) { @@ -21,4 +21,4 @@ + } boolean flag = false; - for(LanServer lanserver : this.f_120092_) { + for(LanServer lanserver : this.servers) { diff --git a/patches/minecraft/net/minecraft/client/server/LanServerPinger.java.patch b/patches/minecraft/net/minecraft/client/server/LanServerPinger.java.patch index ed1cb082ba..82817b5dab 100644 --- a/patches/minecraft/net/minecraft/client/server/LanServerPinger.java.patch +++ b/patches/minecraft/net/minecraft/client/server/LanServerPinger.java.patch @@ -2,19 +2,19 @@ +++ b/net/minecraft/client/server/LanServerPinger.java @@ -13,7 +_,7 @@ public class LanServerPinger extends Thread { - private static final AtomicInteger f_120101_ = new AtomicInteger(0); - private static final Logger f_120102_ = LogUtils.getLogger(); -- public static final String f_174974_ = "224.0.2.60"; -+ public static final String f_174974_ = net.minecraftforge.network.DualStackUtils.getMulticastGroup(); - public static final int f_174975_ = 4445; - private static final long f_174976_ = 1500L; - private final String f_120103_; + private static final AtomicInteger UNIQUE_THREAD_ID = new AtomicInteger(0); + private static final Logger LOGGER = LogUtils.getLogger(); +- public static final String MULTICAST_GROUP = "224.0.2.60"; ++ public static final String MULTICAST_GROUP = net.minecraftforge.network.DualStackUtils.getMulticastGroup(); + public static final int PING_PORT = 4445; + private static final long PING_INTERVAL = 1500L; + private final String motd; @@ -36,7 +_,7 @@ - while(!this.isInterrupted() && this.f_120105_) { + while(!this.isInterrupted() && this.isRunning) { try { - InetAddress inetaddress = InetAddress.getByName("224.0.2.60"); -+ InetAddress inetaddress = InetAddress.getByName(f_174974_); ++ InetAddress inetaddress = InetAddress.getByName(MULTICAST_GROUP); DatagramPacket datagrampacket = new DatagramPacket(abyte, abyte.length, inetaddress, 4445); - this.f_120104_.send(datagrampacket); + this.socket.send(datagrampacket); } catch (IOException ioexception) { diff --git a/patches/minecraft/net/minecraft/client/sounds/SoundEngine.java.patch b/patches/minecraft/net/minecraft/client/sounds/SoundEngine.java.patch index 097331c275..9030a6f336 100644 --- a/patches/minecraft/net/minecraft/client/sounds/SoundEngine.java.patch +++ b/patches/minecraft/net/minecraft/client/sounds/SoundEngine.java.patch @@ -1,50 +1,50 @@ --- a/net/minecraft/client/sounds/SoundEngine.java +++ b/net/minecraft/client/sounds/SoundEngine.java @@ -76,6 +_,7 @@ - this.f_120217_ = p_120236_; - this.f_120218_ = p_120237_; - this.f_120222_ = new SoundBufferLibrary(p_249332_); + this.soundManager = p_120236_; + this.options = p_120237_; + this.soundBuffers = new SoundBufferLibrary(p_249332_); + net.minecraftforge.fml.ModLoader.get().postEvent(new net.minecraftforge.client.event.sound.SoundEngineLoadEvent(this)); } - public void m_120239_() { + public void reload() { @@ -93,6 +_,7 @@ - this.m_120304_(); - this.m_120323_(); + this.destroy(); + this.loadLibrary(); + net.minecraftforge.fml.ModLoader.get().postEvent(new net.minecraftforge.client.event.sound.SoundEngineLoadEvent(this)); } - private synchronized void m_120323_() { + private synchronized void loadLibrary() { @@ -324,7 +_,8 @@ - public void m_120312_(SoundInstance p_120313_) { - if (this.f_120219_) { -- if (p_120313_.m_7767_()) { + public void play(SoundInstance p_120313_) { + if (this.loaded) { +- if (p_120313_.canPlaySound()) { + p_120313_ = net.minecraftforge.client.ForgeHooksClient.playSound(this, p_120313_); -+ if (p_120313_ != null && p_120313_.m_7767_()) { - WeighedSoundEvents weighedsoundevents = p_120313_.m_6775_(this.f_120217_); - ResourceLocation resourcelocation = p_120313_.m_7904_(); ++ if (p_120313_ != null && p_120313_.canPlaySound()) { + WeighedSoundEvents weighedsoundevents = p_120313_.resolve(this.soundManager); + ResourceLocation resourcelocation = p_120313_.getLocation(); if (weighedsoundevents == null) { @@ -393,18 +_,21 @@ - p_194488_.m_83654_(vec3); - p_194488_.m_83670_(flag); + p_194488_.setSelfPosition(vec3); + p_194488_.setRelative(flag); }); + final SoundInstance soundinstance = p_120313_; if (!flag3) { - this.f_120222_.m_120202_(sound.m_119790_()).thenAccept((p_194501_) -> { - channelaccess$channelhandle.m_120154_((p_194495_) -> { - p_194495_.m_83656_(p_194501_); - p_194495_.m_83672_(); + this.soundBuffers.getCompleteBuffer(sound.getPath()).thenAccept((p_194501_) -> { + channelaccess$channelhandle.execute((p_194495_) -> { + p_194495_.attachStaticBuffer(p_194501_); + p_194495_.play(); + net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.client.event.sound.PlaySoundSourceEvent(this, soundinstance, p_194495_)); }); }); } else { -- this.f_120222_.m_120204_(sound.m_119790_(), flag2).thenAccept((p_194504_) -> { -+ soundinstance.getStream(this.f_120222_, sound, flag2).thenAccept((p_194504_) -> { - channelaccess$channelhandle.m_120154_((p_194498_) -> { - p_194498_.m_83658_(p_194504_); - p_194498_.m_83672_(); +- this.soundBuffers.getStream(sound.getPath(), flag2).thenAccept((p_194504_) -> { ++ soundinstance.getStream(this.soundBuffers, sound, flag2).thenAccept((p_194504_) -> { + channelaccess$channelhandle.execute((p_194498_) -> { + p_194498_.attachBufferStream(p_194504_); + p_194498_.play(); + net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.client.event.sound.PlayStreamingSourceEvent(this, soundinstance, p_194498_)); }); }); diff --git a/patches/minecraft/net/minecraft/commands/CommandSourceStack.java.patch b/patches/minecraft/net/minecraft/commands/CommandSourceStack.java.patch index e22ca2d173..09595d0b0a 100644 --- a/patches/minecraft/net/minecraft/commands/CommandSourceStack.java.patch +++ b/patches/minecraft/net/minecraft/commands/CommandSourceStack.java.patch @@ -6,6 +6,6 @@ -public class CommandSourceStack implements SharedSuggestionProvider { +public class CommandSourceStack implements SharedSuggestionProvider, net.minecraftforge.common.extensions.IForgeCommandSourceStack { - public static final SimpleCommandExceptionType f_81286_ = new SimpleCommandExceptionType(Component.m_237115_("permissions.requires.player")); - public static final SimpleCommandExceptionType f_81287_ = new SimpleCommandExceptionType(Component.m_237115_("permissions.requires.entity")); - public final CommandSource f_81288_; + public static final SimpleCommandExceptionType ERROR_NOT_PLAYER = new SimpleCommandExceptionType(Component.translatable("permissions.requires.player")); + public static final SimpleCommandExceptionType ERROR_NOT_ENTITY = new SimpleCommandExceptionType(Component.translatable("permissions.requires.entity")); + public final CommandSource source; diff --git a/patches/minecraft/net/minecraft/commands/Commands.java.patch b/patches/minecraft/net/minecraft/commands/Commands.java.patch index e02582f029..62a1e029d4 100644 --- a/patches/minecraft/net/minecraft/commands/Commands.java.patch +++ b/patches/minecraft/net/minecraft/commands/Commands.java.patch @@ -1,23 +1,23 @@ --- a/net/minecraft/commands/Commands.java +++ b/net/minecraft/commands/Commands.java @@ -196,7 +_,7 @@ - JfrCommand.m_183645_(this.f_82090_); + JfrCommand.register(this.dispatcher); } -- if (SharedConstants.f_136183_) { +- if (SharedConstants.IS_RUNNING_IN_IDE) { + if (net.minecraftforge.gametest.ForgeGameTestHooks.isGametestEnabled()) { - TestCommand.m_127946_(this.f_82090_); - SpawnArmorTrimsCommand.m_266283_(this.f_82090_); - if (p_230943_.f_82145_) { + TestCommand.register(this.dispatcher); + SpawnArmorTrimsCommand.register(this.dispatcher); + if (p_230943_.includeDedicated) { @@ -224,9 +_,11 @@ - if (p_230943_.f_82144_) { - PublishCommand.m_138184_(this.f_82090_); + if (p_230943_.includeIntegrated) { + PublishCommand.register(this.dispatcher); } -+ net.minecraftforge.event.ForgeEventFactory.onCommandRegister(this.f_82090_, p_230943_, p_230944_); ++ net.minecraftforge.event.ForgeEventFactory.onCommandRegister(this.dispatcher, p_230943_, p_230944_); - this.f_82090_.setConsumer((p_230954_, p_230955_, p_230956_) -> { - p_230954_.getSource().m_81342_(p_230954_, p_230955_, p_230956_); -+ p_230954_.getSource().m_81342_(p_230954_, p_230955_, p_230956_); + this.dispatcher.setConsumer((p_230954_, p_230955_, p_230956_) -> { + p_230954_.getSource().onCommandComplete(p_230954_, p_230955_, p_230956_); ++ p_230954_.getSource().onCommandComplete(p_230954_, p_230955_, p_230956_); }); } @@ -25,7 +25,7 @@ try { try { -- return this.f_82090_.execute(p_242844_); +- return this.dispatcher.execute(p_242844_); + net.minecraftforge.event.CommandEvent event = new net.minecraftforge.event.CommandEvent(p_242844_); + if (net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(event)) { + if (event.getException() instanceof Exception exception) { @@ -35,17 +35,17 @@ + } + return 1; + } -+ return this.f_82090_.execute(event.getParseResults()); ++ return this.dispatcher.execute(event.getParseResults()); } catch (CommandRuntimeException commandruntimeexception) { - commandsourcestack.m_81352_(commandruntimeexception.m_79226_()); + commandsourcestack.sendFailure(commandruntimeexception.getComponent()); return 0; @@ -305,7 +_,8 @@ Map, CommandNode> map = Maps.newHashMap(); RootCommandNode rootcommandnode = new RootCommandNode<>(); - map.put(this.f_82090_.getRoot(), rootcommandnode); -- this.m_82112_(this.f_82090_.getRoot(), rootcommandnode, p_82096_.m_20203_(), map); + map.put(this.dispatcher.getRoot(), rootcommandnode); +- this.fillUsableCommands(this.dispatcher.getRoot(), rootcommandnode, p_82096_.createCommandSourceStack(), map); + // FORGE: Use our own command node merging method to handle redirect nodes properly, see issue #7551 -+ net.minecraftforge.server.command.CommandHelper.mergeCommandNode(this.f_82090_.getRoot(), rootcommandnode, map, p_82096_.m_20203_(), ctx -> 0, suggest -> SuggestionProviders.m_121664_((com.mojang.brigadier.suggestion.SuggestionProvider) (com.mojang.brigadier.suggestion.SuggestionProvider) suggest)); - p_82096_.f_8906_.m_141995_(new ClientboundCommandsPacket(rootcommandnode)); ++ net.minecraftforge.server.command.CommandHelper.mergeCommandNode(this.dispatcher.getRoot(), rootcommandnode, map, p_82096_.createCommandSourceStack(), ctx -> 0, suggest -> SuggestionProviders.safelySwap((com.mojang.brigadier.suggestion.SuggestionProvider) (com.mojang.brigadier.suggestion.SuggestionProvider) suggest)); + p_82096_.connection.send(new ClientboundCommandsPacket(rootcommandnode)); } diff --git a/patches/minecraft/net/minecraft/commands/arguments/EntityArgument.java.patch b/patches/minecraft/net/minecraft/commands/arguments/EntityArgument.java.patch index b06e3596a1..65bd8024d5 100644 --- a/patches/minecraft/net/minecraft/commands/arguments/EntityArgument.java.patch +++ b/patches/minecraft/net/minecraft/commands/arguments/EntityArgument.java.patch @@ -4,8 +4,8 @@ if (s instanceof SharedSuggestionProvider sharedsuggestionprovider) { StringReader stringreader = new StringReader(p_91483_.getInput()); stringreader.setCursor(p_91483_.getStart()); -- EntitySelectorParser entityselectorparser = new EntitySelectorParser(stringreader, sharedsuggestionprovider.m_6761_(2)); +- EntitySelectorParser entityselectorparser = new EntitySelectorParser(stringreader, sharedsuggestionprovider.hasPermission(2)); + EntitySelectorParser entityselectorparser = new EntitySelectorParser(stringreader, net.minecraftforge.common.ForgeHooks.canUseEntitySelectors(sharedsuggestionprovider)); try { - entityselectorparser.m_121377_(); + entityselectorparser.parse(); diff --git a/patches/minecraft/net/minecraft/commands/arguments/MessageArgument.java.patch b/patches/minecraft/net/minecraft/commands/arguments/MessageArgument.java.patch index dad8d9b731..9c839eeb5e 100644 --- a/patches/minecraft/net/minecraft/commands/arguments/MessageArgument.java.patch +++ b/patches/minecraft/net/minecraft/commands/arguments/MessageArgument.java.patch @@ -3,9 +3,9 @@ @@ -97,7 +_,7 @@ } - Component m_232196_(CommandSourceStack p_232197_) throws CommandSyntaxException { -- return this.m_96849_(p_232197_, p_232197_.m_6761_(2)); -+ return this.m_96849_(p_232197_, net.minecraftforge.common.ForgeHooks.canUseEntitySelectors(p_232197_)); + Component resolveComponent(CommandSourceStack p_232197_) throws CommandSyntaxException { +- return this.toComponent(p_232197_, p_232197_.hasPermission(2)); ++ return this.toComponent(p_232197_, net.minecraftforge.common.ForgeHooks.canUseEntitySelectors(p_232197_)); } - public Component m_96849_(CommandSourceStack p_96850_, boolean p_96851_) throws CommandSyntaxException { + public Component toComponent(CommandSourceStack p_96850_, boolean p_96851_) throws CommandSyntaxException { diff --git a/patches/minecraft/net/minecraft/commands/arguments/ObjectiveArgument.java.patch b/patches/minecraft/net/minecraft/commands/arguments/ObjectiveArgument.java.patch index 8b9619eefb..9e9538420b 100644 --- a/patches/minecraft/net/minecraft/commands/arguments/ObjectiveArgument.java.patch +++ b/patches/minecraft/net/minecraft/commands/arguments/ObjectiveArgument.java.patch @@ -2,19 +2,19 @@ +++ b/net/minecraft/commands/arguments/ObjectiveArgument.java @@ -31,7 +_,7 @@ - public static Objective m_101960_(CommandContext p_101961_, String p_101962_) throws CommandSyntaxException { + public static Objective getObjective(CommandContext p_101961_, String p_101962_) throws CommandSyntaxException { String s = p_101961_.getArgument(p_101962_, String.class); -- Scoreboard scoreboard = p_101961_.getSource().m_81377_().m_129896_(); +- Scoreboard scoreboard = p_101961_.getSource().getServer().getScoreboard(); + Scoreboard scoreboard = p_101961_.getSource().getScoreboard(); - Objective objective = scoreboard.m_83477_(s); + Objective objective = scoreboard.getObjective(s); if (objective == null) { - throw f_101953_.create(s); + throw ERROR_OBJECTIVE_NOT_FOUND.create(s); @@ -56,7 +_,7 @@ public CompletableFuture listSuggestions(CommandContext p_101974_, SuggestionsBuilder p_101975_) { S s = p_101974_.getSource(); if (s instanceof CommandSourceStack commandsourcestack) { -- return SharedSuggestionProvider.m_82970_(commandsourcestack.m_81377_().m_129896_().m_83474_(), p_101975_); -+ return SharedSuggestionProvider.m_82970_(commandsourcestack.getScoreboard().m_83474_(), p_101975_); +- return SharedSuggestionProvider.suggest(commandsourcestack.getServer().getScoreboard().getObjectiveNames(), p_101975_); ++ return SharedSuggestionProvider.suggest(commandsourcestack.getScoreboard().getObjectiveNames(), p_101975_); } else if (s instanceof SharedSuggestionProvider sharedsuggestionprovider) { - return sharedsuggestionprovider.m_212155_(p_101974_); + return sharedsuggestionprovider.customSuggestion(p_101974_); } else { diff --git a/patches/minecraft/net/minecraft/commands/arguments/ResourceLocationArgument.java.patch b/patches/minecraft/net/minecraft/commands/arguments/ResourceLocationArgument.java.patch index 76437a6473..aa65fb3098 100644 --- a/patches/minecraft/net/minecraft/commands/arguments/ResourceLocationArgument.java.patch +++ b/patches/minecraft/net/minecraft/commands/arguments/ResourceLocationArgument.java.patch @@ -2,19 +2,19 @@ +++ b/net/minecraft/commands/arguments/ResourceLocationArgument.java @@ -39,7 +_,7 @@ - public static AdvancementHolder m_106987_(CommandContext p_106988_, String p_106989_) throws CommandSyntaxException { - ResourceLocation resourcelocation = m_107011_(p_106988_, p_106989_); -- AdvancementHolder advancementholder = p_106988_.getSource().m_81377_().m_129889_().m_294099_(resourcelocation); + public static AdvancementHolder getAdvancement(CommandContext p_106988_, String p_106989_) throws CommandSyntaxException { + ResourceLocation resourcelocation = getId(p_106988_, p_106989_); +- AdvancementHolder advancementholder = p_106988_.getSource().getServer().getAdvancements().get(resourcelocation); + AdvancementHolder advancementholder = p_106988_.getSource().getAdvancement(resourcelocation); if (advancementholder == null) { - throw f_106978_.create(resourcelocation); + throw ERROR_UNKNOWN_ADVANCEMENT.create(resourcelocation); } else { @@ -48,7 +_,7 @@ } - public static RecipeHolder m_106994_(CommandContext p_106995_, String p_106996_) throws CommandSyntaxException { -- RecipeManager recipemanager = p_106995_.getSource().m_81377_().m_129894_(); + public static RecipeHolder getRecipe(CommandContext p_106995_, String p_106996_) throws CommandSyntaxException { +- RecipeManager recipemanager = p_106995_.getSource().getServer().getRecipeManager(); + RecipeManager recipemanager = p_106995_.getSource().getRecipeManager(); - ResourceLocation resourcelocation = m_107011_(p_106995_, p_106996_); - return recipemanager.m_44043_(resourcelocation).orElseThrow(() -> { - return f_106979_.create(resourcelocation); + ResourceLocation resourcelocation = getId(p_106995_, p_106996_); + return recipemanager.byKey(resourcelocation).orElseThrow(() -> { + return ERROR_UNKNOWN_RECIPE.create(resourcelocation); diff --git a/patches/minecraft/net/minecraft/commands/arguments/TeamArgument.java.patch b/patches/minecraft/net/minecraft/commands/arguments/TeamArgument.java.patch index 175989fd3e..963f524d10 100644 --- a/patches/minecraft/net/minecraft/commands/arguments/TeamArgument.java.patch +++ b/patches/minecraft/net/minecraft/commands/arguments/TeamArgument.java.patch @@ -2,10 +2,10 @@ +++ b/net/minecraft/commands/arguments/TeamArgument.java @@ -28,7 +_,7 @@ - public static PlayerTeam m_112091_(CommandContext p_112092_, String p_112093_) throws CommandSyntaxException { + public static PlayerTeam getTeam(CommandContext p_112092_, String p_112093_) throws CommandSyntaxException { String s = p_112092_.getArgument(p_112093_, String.class); -- Scoreboard scoreboard = p_112092_.getSource().m_81377_().m_129896_(); +- Scoreboard scoreboard = p_112092_.getSource().getServer().getScoreboard(); + Scoreboard scoreboard = p_112092_.getSource().getScoreboard(); - PlayerTeam playerteam = scoreboard.m_83489_(s); + PlayerTeam playerteam = scoreboard.getPlayerTeam(s); if (playerteam == null) { - throw f_112085_.create(s); + throw ERROR_TEAM_NOT_FOUND.create(s); diff --git a/patches/minecraft/net/minecraft/commands/arguments/coordinates/BlockPosArgument.java.patch b/patches/minecraft/net/minecraft/commands/arguments/coordinates/BlockPosArgument.java.patch index 4a018f7730..66ec924de0 100644 --- a/patches/minecraft/net/minecraft/commands/arguments/coordinates/BlockPosArgument.java.patch +++ b/patches/minecraft/net/minecraft/commands/arguments/coordinates/BlockPosArgument.java.patch @@ -2,13 +2,13 @@ +++ b/net/minecraft/commands/arguments/coordinates/BlockPosArgument.java @@ -36,9 +_,9 @@ - public static BlockPos m_264205_(CommandContext p_265283_, ServerLevel p_265219_, String p_265677_) throws CommandSyntaxException { - BlockPos blockpos = m_264582_(p_265283_, p_265677_); -- if (!p_265219_.m_46805_(blockpos)) { -+ if (!p_265283_.getSource().getUnsidedLevel().m_46805_(blockpos)) { - throw f_118234_.create(); -- } else if (!p_265219_.m_46739_(blockpos)) { -+ } else if (!p_265283_.getSource().getUnsidedLevel().m_46739_(blockpos)) { - throw f_118235_.create(); + public static BlockPos getLoadedBlockPos(CommandContext p_265283_, ServerLevel p_265219_, String p_265677_) throws CommandSyntaxException { + BlockPos blockpos = getBlockPos(p_265283_, p_265677_); +- if (!p_265219_.hasChunkAt(blockpos)) { ++ if (!p_265283_.getSource().getUnsidedLevel().hasChunkAt(blockpos)) { + throw ERROR_NOT_LOADED.create(); +- } else if (!p_265219_.isInWorldBounds(blockpos)) { ++ } else if (!p_265283_.getSource().getUnsidedLevel().isInWorldBounds(blockpos)) { + throw ERROR_OUT_OF_WORLD.create(); } else { return blockpos; diff --git a/patches/minecraft/net/minecraft/commands/arguments/selector/EntitySelector.java.patch b/patches/minecraft/net/minecraft/commands/arguments/selector/EntitySelector.java.patch index 0c384d3b7d..382249f135 100644 --- a/patches/minecraft/net/minecraft/commands/arguments/selector/EntitySelector.java.patch +++ b/patches/minecraft/net/minecraft/commands/arguments/selector/EntitySelector.java.patch @@ -3,9 +3,9 @@ @@ -89,7 +_,7 @@ } - private void m_121168_(CommandSourceStack p_121169_) throws CommandSyntaxException { -- if (this.f_121123_ && !p_121169_.m_6761_(2)) { -+ if (this.f_121123_ && !net.minecraftforge.common.ForgeHooks.canUseEntitySelectors(p_121169_)) { - throw EntityArgument.f_91441_.create(); + private void checkPermissions(CommandSourceStack p_121169_) throws CommandSyntaxException { +- if (this.usesSelector && !p_121169_.hasPermission(2)) { ++ if (this.usesSelector && !net.minecraftforge.common.ForgeHooks.canUseEntitySelectors(p_121169_)) { + throw EntityArgument.ERROR_SELECTORS_NOT_ALLOWED.create(); } } diff --git a/patches/minecraft/net/minecraft/commands/arguments/selector/EntitySelectorParser.java.patch b/patches/minecraft/net/minecraft/commands/arguments/selector/EntitySelectorParser.java.patch index 2fedfb6f89..d74ab92e53 100644 --- a/patches/minecraft/net/minecraft/commands/arguments/selector/EntitySelectorParser.java.patch +++ b/patches/minecraft/net/minecraft/commands/arguments/selector/EntitySelectorParser.java.patch @@ -3,18 +3,18 @@ @@ -459,6 +_,9 @@ } - this.f_121201_.skip(); + this.reader.skip(); + EntitySelector forgeSelector = net.minecraftforge.common.command.EntitySelectorManager.parseSelector(this); + if (forgeSelector != null) + return forgeSelector; - this.m_121281_(); + this.parseSelector(); } else { - this.m_121304_(); + this.parseNameOrUUID(); @@ -474,6 +_,7 @@ - p_121248_.suggest("@r", Component.m_237115_("argument.entity.selector.randomPlayer")); - p_121248_.suggest("@s", Component.m_237115_("argument.entity.selector.self")); - p_121248_.suggest("@e", Component.m_237115_("argument.entity.selector.allEntities")); + p_121248_.suggest("@r", Component.translatable("argument.entity.selector.randomPlayer")); + p_121248_.suggest("@s", Component.translatable("argument.entity.selector.self")); + p_121248_.suggest("@e", Component.translatable("argument.entity.selector.allEntities")); + net.minecraftforge.common.command.EntitySelectorManager.fillSelectorSuggestions(p_121248_); } - private CompletableFuture m_121286_(SuggestionsBuilder p_121287_, Consumer p_121288_) { + private CompletableFuture suggestNameOrSelector(SuggestionsBuilder p_121287_, Consumer p_121288_) { diff --git a/patches/minecraft/net/minecraft/commands/synchronization/ArgumentTypeInfos.java.patch b/patches/minecraft/net/minecraft/commands/synchronization/ArgumentTypeInfos.java.patch index e85f4c442c..59c0ea0c47 100644 --- a/patches/minecraft/net/minecraft/commands/synchronization/ArgumentTypeInfos.java.patch +++ b/patches/minecraft/net/minecraft/commands/synchronization/ArgumentTypeInfos.java.patch @@ -2,7 +2,7 @@ +++ b/net/minecraft/commands/synchronization/ArgumentTypeInfos.java @@ -65,6 +_,20 @@ public class ArgumentTypeInfos { - private static final Map, ArgumentTypeInfo> f_235379_ = Maps.newHashMap(); + private static final Map, ArgumentTypeInfo> BY_CLASS = Maps.newHashMap(); + /** + * Forge: Use this in conjunction with a @@ -14,27 +14,27 @@ + * @return the provided argument type info instance for chaining + */ + public static synchronized , T extends ArgumentTypeInfo.Template, I extends ArgumentTypeInfo> I registerByClass(Class infoClass, I argumentTypeInfo) { -+ f_235379_.put(infoClass, argumentTypeInfo); ++ BY_CLASS.put(infoClass, argumentTypeInfo); + return argumentTypeInfo; + } + - private static , T extends ArgumentTypeInfo.Template> ArgumentTypeInfo m_235386_(Registry> p_235387_, String p_235388_, Class p_235389_, ArgumentTypeInfo p_235390_) { - f_235379_.put(p_235389_, p_235390_); - return Registry.m_122961_(p_235387_, p_235388_, p_235390_); + private static , T extends ArgumentTypeInfo.Template> ArgumentTypeInfo register(Registry> p_235387_, String p_235388_, Class p_235389_, ArgumentTypeInfo p_235390_) { + BY_CLASS.put(p_235389_, p_235390_); + return Registry.register(p_235387_, p_235388_, p_235390_); @@ -119,12 +_,14 @@ - m_235386_(p_235385_, "template_mirror", TemplateMirrorArgument.class, SingletonArgumentInfo.m_235451_(TemplateMirrorArgument::m_234343_)); - m_235386_(p_235385_, "template_rotation", TemplateRotationArgument.class, SingletonArgumentInfo.m_235451_(TemplateRotationArgument::m_234414_)); - m_235386_(p_235385_, "heightmap", HeightmapTypeArgument.class, SingletonArgumentInfo.m_235451_(HeightmapTypeArgument::m_274509_)); -- if (SharedConstants.f_136183_) { + register(p_235385_, "template_mirror", TemplateMirrorArgument.class, SingletonArgumentInfo.contextFree(TemplateMirrorArgument::templateMirror)); + register(p_235385_, "template_rotation", TemplateRotationArgument.class, SingletonArgumentInfo.contextFree(TemplateRotationArgument::templateRotation)); + register(p_235385_, "heightmap", HeightmapTypeArgument.class, SingletonArgumentInfo.contextFree(HeightmapTypeArgument::heightmap)); +- if (SharedConstants.IS_RUNNING_IN_IDE) { + // Forge: Register before gametest arguments to provide forge server <-> vanilla client interop and matching int ids -+ var uuidInfo = m_235386_(p_235385_, "uuid", UuidArgument.class, SingletonArgumentInfo.m_235451_(UuidArgument::m_113850_)); ++ var uuidInfo = register(p_235385_, "uuid", UuidArgument.class, SingletonArgumentInfo.contextFree(UuidArgument::uuid)); + if (true) { // Forge: Always register gametest arguments to prevent issues when connecting from gametest-enabled client/server to non-gametest-enabled client/server - m_235386_(p_235385_, "test_argument", TestFunctionArgument.class, SingletonArgumentInfo.m_235451_(TestFunctionArgument::m_128088_)); - m_235386_(p_235385_, "test_class", TestClassNameArgument.class, SingletonArgumentInfo.m_235451_(TestClassNameArgument::m_127917_)); + register(p_235385_, "test_argument", TestFunctionArgument.class, SingletonArgumentInfo.contextFree(TestFunctionArgument::testFunctionArgument)); + register(p_235385_, "test_class", TestClassNameArgument.class, SingletonArgumentInfo.contextFree(TestClassNameArgument::testClassName)); } -- return m_235386_(p_235385_, "uuid", UuidArgument.class, SingletonArgumentInfo.m_235451_(UuidArgument::m_113850_)); +- return register(p_235385_, "uuid", UuidArgument.class, SingletonArgumentInfo.contextFree(UuidArgument::uuid)); + return uuidInfo; } - private static > Class m_235395_(Class p_235396_) { + private static > Class fixClassType(Class p_235396_) { diff --git a/patches/minecraft/net/minecraft/core/Holder.java.patch b/patches/minecraft/net/minecraft/core/Holder.java.patch index 76c518e6fd..2c3d5d9119 100644 --- a/patches/minecraft/net/minecraft/core/Holder.java.patch +++ b/patches/minecraft/net/minecraft/core/Holder.java.patch @@ -8,30 +8,30 @@ +public interface Holder extends java.util.function.Supplier, net.minecraftforge.registries.tags.IReverseTag { + @Override + default boolean containsTag(TagKey key) { -+ return this.m_203656_(key); ++ return this.is(key); + } + + @Override + default Stream> getTagKeys() { -+ return this.m_203616_(); ++ return this.tags(); + } + + @Override + default T get() { -+ return this.m_203334_(); ++ return this.value(); + } + - T m_203334_(); + T value(); - boolean m_203633_(); + boolean isBound(); @@ -193,6 +_,10 @@ - public Stream> m_203616_() { - return this.f_205749_.stream(); + public Stream> tags() { + return this.tags.stream(); + } + + public Type getType() { -+ return this.f_205750_; ++ return this.type; } public String toString() { diff --git a/patches/minecraft/net/minecraft/core/HolderSet.java.patch b/patches/minecraft/net/minecraft/core/HolderSet.java.patch index db65610894..31459c244a 100644 --- a/patches/minecraft/net/minecraft/core/HolderSet.java.patch +++ b/patches/minecraft/net/minecraft/core/HolderSet.java.patch @@ -6,23 +6,23 @@ -public interface HolderSet extends Iterable> { +public interface HolderSet extends Iterable>, net.minecraftforge.common.extensions.IForgeHolderSet { - Stream> m_203614_(); + Stream> stream(); - int m_203632_(); + int size(); @@ -135,6 +_,9 @@ - public void m_205835_(List> p_205836_) { - this.f_205830_ = List.copyOf(p_205836_); + public void bind(List> p_205836_) { + this.contents = List.copyOf(p_205836_); + for (Runnable runnable : this.invalidationCallbacks) { + runnable.run(); // FORGE: invalidate listeners when tags rebind + } } - public TagKey m_205839_() { + public TagKey key() { @@ -163,6 +_,12 @@ - public boolean m_207277_(HolderOwner p_256542_) { - return this.f_254711_.m_254921_(p_256542_); + public boolean canSerializeIn(HolderOwner p_256542_) { + return this.owner.canSerializeIn(p_256542_); + } + + // FORGE: Keep a list of invalidation callbacks so they can be run when tags rebind diff --git a/patches/minecraft/net/minecraft/core/MappedRegistry.java.patch b/patches/minecraft/net/minecraft/core/MappedRegistry.java.patch index b0734d0243..f543ab6066 100644 --- a/patches/minecraft/net/minecraft/core/MappedRegistry.java.patch +++ b/patches/minecraft/net/minecraft/core/MappedRegistry.java.patch @@ -9,49 +9,49 @@ + return java.util.Collections.unmodifiableSet(KNOWN); + } + protected final void markKnown() { -+ KNOWN.add(m_123023_().m_135782_()); ++ KNOWN.add(key().location()); + } + - public Holder.Reference m_255320_(int p_256563_, ResourceKey p_256594_, T p_256374_, Lifecycle p_256469_) { + public Holder.Reference registerMapping(int p_256563_, ResourceKey p_256594_, T p_256374_, Lifecycle p_256469_) { + markKnown(); - this.m_205921_(p_256594_); + this.validateWrite(p_256594_); Validate.notNull(p_256594_); Validate.notNull(p_256374_); @@ -145,6 +_,8 @@ - reference = this.f_205842_.computeIfAbsent(p_256594_, (p_258168_) -> { - return Holder.Reference.m_254896_(this.m_255331_(), p_258168_); + reference = this.byKey.computeIfAbsent(p_256594_, (p_258168_) -> { + return Holder.Reference.createStandAlone(this.holderOwner(), p_258168_); }); + // Forge: Bind the value immediately so it can be queried while the registry is not frozen -+ reference.m_247654_(p_256374_); ++ reference.bindValue(p_256374_); } - this.f_205842_.put(p_256594_, reference); + this.byKey.put(p_256594_, reference); @@ -300,14 +_,17 @@ - return this.f_205842_.containsKey(p_175392_); + return this.byKey.containsKey(p_175392_); } + /** @deprecated Forge: For internal use only. Use the Register events when registering values. */ + @Deprecated + public void unfreeze() { -+ this.f_205845_ = false; ++ this.frozen = false; + } + - public Registry m_203521_() { - if (this.f_205845_) { + public Registry freeze() { + if (this.frozen) { return this; } else { - this.f_205845_ = true; -- this.f_205843_.forEach((p_247989_, p_247990_) -> { -- p_247990_.m_247654_(p_247989_); + this.frozen = true; +- this.byValue.forEach((p_247989_, p_247990_) -> { +- p_247990_.bindValue(p_247989_); - }); - List list = this.f_205842_.entrySet().stream().filter((p_211055_) -> { - return !p_211055_.getValue().m_203633_(); + List list = this.byKey.entrySet().stream().filter((p_211055_) -> { + return !p_211055_.getValue().isBound(); }).map((p_211794_) -> { @@ -321,7 +_,8 @@ - throw new IllegalStateException("Some intrusive holders were not registered: " + this.f_244282_.values()); + throw new IllegalStateException("Some intrusive holders were not registered: " + this.unregisteredIntrusiveHolders.values()); } -- this.f_244282_ = null; +- this.unregisteredIntrusiveHolders = null; + // Forge: We freeze/unfreeze vanilla registries more than once, so we need to keep the unregistered intrusive holders map around. + // this.unregisteredIntrusiveHolders = null; } diff --git a/patches/minecraft/net/minecraft/core/RegistryCodecs.java.patch b/patches/minecraft/net/minecraft/core/RegistryCodecs.java.patch index 13a4199c5f..0eeb35e427 100644 --- a/patches/minecraft/net/minecraft/core/RegistryCodecs.java.patch +++ b/patches/minecraft/net/minecraft/core/RegistryCodecs.java.patch @@ -3,10 +3,10 @@ @@ -40,7 +_,8 @@ } - public static Codec> m_246213_(ResourceKey> p_248884_, Lifecycle p_251810_, Codec p_250169_) { -- Codec, E>> codec = Codec.unboundedMap(ResourceKey.m_195966_(p_248884_), p_250169_); + public static Codec> fullCodec(ResourceKey> p_248884_, Lifecycle p_251810_, Codec p_250169_) { +- Codec, E>> codec = Codec.unboundedMap(ResourceKey.codec(p_248884_), p_250169_); + // FORGE: Fix MC-197860 -+ Codec, E>> codec = new net.minecraftforge.common.LenientUnboundedMapCodec<>(ResourceKey.m_195966_(p_248884_), p_250169_); ++ Codec, E>> codec = new net.minecraftforge.common.LenientUnboundedMapCodec<>(ResourceKey.codec(p_248884_), p_250169_); return codec.xmap((p_258184_) -> { WritableRegistry writableregistry = new MappedRegistry<>(p_248884_, p_251810_); p_258184_.forEach((p_258191_, p_258192_) -> { diff --git a/patches/minecraft/net/minecraft/core/RegistrySetBuilder.java.patch b/patches/minecraft/net/minecraft/core/RegistrySetBuilder.java.patch index 0df1638722..b04e287671 100644 --- a/patches/minecraft/net/minecraft/core/RegistrySetBuilder.java.patch +++ b/patches/minecraft/net/minecraft/core/RegistrySetBuilder.java.patch @@ -1,34 +1,34 @@ --- a/net/minecraft/core/RegistrySetBuilder.java +++ b/net/minecraft/core/RegistrySetBuilder.java @@ -37,6 +_,10 @@ - return this.m_255162_(p_256261_, Lifecycle.stable(), p_256010_); + return this.add(p_256261_, Lifecycle.stable(), p_256010_); } + public List>> getEntryKeys() { -+ return this.f_254732_.stream().map(RegistrySetBuilder.RegistryStub::f_254738_).toList(); ++ return this.entries.stream().map(RegistrySetBuilder.RegistryStub::key).toList(); + } + - private RegistrySetBuilder.BuildState m_254900_(RegistryAccess p_256400_) { - RegistrySetBuilder.BuildState registrysetbuilder$buildstate = RegistrySetBuilder.BuildState.m_255369_(p_256400_, this.f_254732_.stream().map(RegistrySetBuilder.RegistryStub::f_254738_)); - this.f_254732_.forEach((p_255629_) -> { + private RegistrySetBuilder.BuildState createState(RegistryAccess p_256400_) { + RegistrySetBuilder.BuildState registrysetbuilder$buildstate = RegistrySetBuilder.BuildState.create(p_256400_, this.entries.stream().map(RegistrySetBuilder.RegistryStub::key)); + this.entries.forEach((p_255629_) -> { @@ -87,7 +_,7 @@ RegistrySetBuilder.UniversalLookup registrysetbuilder$universallookup = new RegistrySetBuilder.UniversalLookup(registrysetbuilder$compositeowner); ImmutableMap.Builder> builder = ImmutableMap.builder(); - p_255995_.m_206193_().forEach((p_258197_) -> { -- builder.put(p_258197_.f_206233_().m_135782_(), RegistrySetBuilder.m_254882_(p_258197_.f_206234_().m_255303_())); -+ builder.put(p_258197_.f_206233_().m_135782_(), net.minecraftforge.common.ForgeHooks.wrapRegistryLookup(p_258197_.f_206234_().m_255303_())); + p_255995_.registries().forEach((p_258197_) -> { +- builder.put(p_258197_.key().location(), RegistrySetBuilder.wrapContextLookup(p_258197_.value().asLookup())); ++ builder.put(p_258197_.key().location(), net.minecraftforge.common.ForgeHooks.wrapRegistryLookup(p_258197_.value().asLookup())); }); p_256495_.forEach((p_256603_) -> { - builder.put(p_256603_.m_135782_(), registrysetbuilder$universallookup); + builder.put(p_256603_.location(), registrysetbuilder$universallookup); @@ -108,6 +_,11 @@ - public HolderGetter m_255420_(ResourceKey> p_255961_) { - return (HolderGetter) BuildState.this.f_254690_.getOrDefault(p_255961_.m_135782_(), BuildState.this.f_254749_); + public HolderGetter lookup(ResourceKey> p_255961_) { + return (HolderGetter) BuildState.this.registries.getOrDefault(p_255961_.location(), BuildState.this.lookup); + } + + @Override + public Optional> registryLookup(ResourceKey> registry) { -+ return Optional.ofNullable((HolderLookup.RegistryLookup) BuildState.this.f_254690_.get(registry.m_135782_())); ++ return Optional.ofNullable((HolderLookup.RegistryLookup) BuildState.this.registries.get(registry.location())); } }; } diff --git a/patches/minecraft/net/minecraft/core/RegistrySynchronization.java.patch b/patches/minecraft/net/minecraft/core/RegistrySynchronization.java.patch index 2d98d0205d..8c14776a4c 100644 --- a/patches/minecraft/net/minecraft/core/RegistrySynchronization.java.patch +++ b/patches/minecraft/net/minecraft/core/RegistrySynchronization.java.patch @@ -1,11 +1,11 @@ --- a/net/minecraft/core/RegistrySynchronization.java +++ b/net/minecraft/core/RegistrySynchronization.java @@ -29,7 +_,7 @@ - m_245912_(builder, Registries.f_266076_, TrimMaterial.f_266095_); - m_245912_(builder, Registries.f_256787_, DimensionType.f_63843_); - m_245912_(builder, Registries.f_268580_, DamageType.f_268510_); + put(builder, Registries.TRIM_MATERIAL, TrimMaterial.DIRECT_CODEC); + put(builder, Registries.DIMENSION_TYPE, DimensionType.DIRECT_CODEC); + put(builder, Registries.DAMAGE_TYPE, DamageType.CODEC); - return builder.build(); + return net.minecraftforge.registries.DataPackRegistriesHooks.grabNetworkableRegistries(builder); // FORGE: Keep the map so custom registries can be added later }); - public static final Codec f_244380_ = m_247146_(); + public static final Codec NETWORK_CODEC = makeNetworkCodec(); diff --git a/patches/minecraft/net/minecraft/core/dispenser/BoatDispenseItemBehavior.java.patch b/patches/minecraft/net/minecraft/core/dispenser/BoatDispenseItemBehavior.java.patch index 31718aac78..e2d5c18b5e 100644 --- a/patches/minecraft/net/minecraft/core/dispenser/BoatDispenseItemBehavior.java.patch +++ b/patches/minecraft/net/minecraft/core/dispenser/BoatDispenseItemBehavior.java.patch @@ -1,29 +1,29 @@ --- a/net/minecraft/core/dispenser/BoatDispenseItemBehavior.java +++ b/net/minecraft/core/dispenser/BoatDispenseItemBehavior.java @@ -33,20 +_,21 @@ - double d2 = p_123375_.m_7098_() + (double)((float)direction.m_122430_() * 1.125F); - double d3 = p_123375_.m_7094_() + (double)direction.m_122431_() * d0; - BlockPos blockpos = p_123375_.m_7961_().m_121945_(direction); -+ Boat boat = (Boat)(this.f_235889_ ? new ChestBoat(level, d0, d1, d2) : new Boat(level, d0, d1, d2)); -+ boat.m_28464_(this.f_123369_); -+ boat.m_146922_(direction.m_122435_()); + double d2 = p_123375_.y() + (double)((float)direction.getStepY() * 1.125F); + double d3 = p_123375_.z() + (double)direction.getStepZ() * d0; + BlockPos blockpos = p_123375_.getPos().relative(direction); ++ Boat boat = (Boat)(this.isChestBoat ? new ChestBoat(level, d0, d1, d2) : new Boat(level, d0, d1, d2)); ++ boat.setVariant(this.type); ++ boat.setYRot(direction.toYRot()); double d4; -- if (level.m_6425_(blockpos).m_205070_(FluidTags.f_13131_)) { -+ if (boat.canBoatInFluid(level.m_6425_(blockpos))) { +- if (level.getFluidState(blockpos).is(FluidTags.WATER)) { ++ if (boat.canBoatInFluid(level.getFluidState(blockpos))) { d4 = 1.0D; } else { -- if (!level.m_8055_(blockpos).m_60795_() || !level.m_6425_(blockpos.m_7495_()).m_205070_(FluidTags.f_13131_)) { -+ if (!level.m_8055_(blockpos).m_60795_() || !boat.canBoatInFluid(level.m_6425_(blockpos.m_7495_()))) { - return this.f_123368_.m_6115_(p_123375_, p_123376_); +- if (!level.getBlockState(blockpos).isAir() || !level.getFluidState(blockpos.below()).is(FluidTags.WATER)) { ++ if (!level.getBlockState(blockpos).isAir() || !boat.canBoatInFluid(level.getFluidState(blockpos.below()))) { + return this.defaultDispenseItemBehavior.dispense(p_123375_, p_123376_); } d4 = 0.0D; } -- Boat boat = (Boat)(this.f_235889_ ? new ChestBoat(level, d1, d2 + d4, d3) : new Boat(level, d1, d2 + d4, d3)); -- boat.m_28464_(this.f_123369_); -- boat.m_146922_(direction.m_122435_()); -+ boat.m_6034_(d1, d2 + d4, d3); - level.m_7967_(boat); - p_123376_.m_41774_(1); +- Boat boat = (Boat)(this.isChestBoat ? new ChestBoat(level, d1, d2 + d4, d3) : new Boat(level, d1, d2 + d4, d3)); +- boat.setVariant(this.type); +- boat.setYRot(direction.toYRot()); ++ boat.setPos(d1, d2 + d4, d3); + level.addFreshEntity(boat); + p_123376_.shrink(1); return p_123376_; diff --git a/patches/minecraft/net/minecraft/core/dispenser/DispenseItemBehavior.java.patch b/patches/minecraft/net/minecraft/core/dispenser/DispenseItemBehavior.java.patch index 170ce9114d..ac64ecec15 100644 --- a/patches/minecraft/net/minecraft/core/dispenser/DispenseItemBehavior.java.patch +++ b/patches/minecraft/net/minecraft/core/dispenser/DispenseItemBehavior.java.patch @@ -1,25 +1,25 @@ --- a/net/minecraft/core/dispenser/DispenseItemBehavior.java +++ b/net/minecraft/core/dispenser/DispenseItemBehavior.java @@ -352,7 +_,7 @@ - DispensibleContainerItem dispensiblecontaineritem = (DispensibleContainerItem)p_123562_.m_41720_(); - BlockPos blockpos = p_123561_.m_7961_().m_121945_(p_123561_.m_6414_().m_61143_(DispenserBlock.f_52659_)); - Level level = p_123561_.m_7727_(); -- if (dispensiblecontaineritem.m_142073_((Player)null, level, blockpos, (BlockHitResult)null)) { + DispensibleContainerItem dispensiblecontaineritem = (DispensibleContainerItem)p_123562_.getItem(); + BlockPos blockpos = p_123561_.getPos().relative(p_123561_.getBlockState().getValue(DispenserBlock.FACING)); + Level level = p_123561_.getLevel(); +- if (dispensiblecontaineritem.emptyContents((Player)null, level, blockpos, (BlockHitResult)null)) { + if (dispensiblecontaineritem.emptyContents((Player)null, level, blockpos, (BlockHitResult)null, p_123562_)) { - dispensiblecontaineritem.m_142131_((Player)null, level, p_123562_, blockpos); - return new ItemStack(Items.f_42446_); + dispensiblecontaineritem.checkExtraContent((Player)null, level, p_123562_, blockpos); + return new ItemStack(Items.BUCKET); } else { @@ -411,9 +_,10 @@ - level.m_46597_(blockpos, BaseFireBlock.m_49245_(level, blockpos)); - level.m_142346_((Entity)null, GameEvent.f_157797_, blockpos); - } else if (!CampfireBlock.m_51321_(blockstate) && !CandleBlock.m_152845_(blockstate) && !CandleCakeBlock.m_152910_(blockstate)) { -- if (blockstate.m_60734_() instanceof TntBlock) { -- TntBlock.m_57433_(level, blockpos); -- level.m_7471_(blockpos, false); -+ if (blockstate.isFlammable(level, blockpos, p_123412_.m_6414_().m_61143_(DispenserBlock.f_52659_).m_122424_())) { -+ blockstate.onCaughtFire(level, blockpos, p_123412_.m_6414_().m_61143_(DispenserBlock.f_52659_).m_122424_(), null); -+ if (blockstate.m_60734_() instanceof TntBlock) -+ level.m_7471_(blockpos, false); + level.setBlockAndUpdate(blockpos, BaseFireBlock.getState(level, blockpos)); + level.gameEvent((Entity)null, GameEvent.BLOCK_PLACE, blockpos); + } else if (!CampfireBlock.canLight(blockstate) && !CandleBlock.canLight(blockstate) && !CandleCakeBlock.canLight(blockstate)) { +- if (blockstate.getBlock() instanceof TntBlock) { +- TntBlock.explode(level, blockpos); +- level.removeBlock(blockpos, false); ++ if (blockstate.isFlammable(level, blockpos, p_123412_.getBlockState().getValue(DispenserBlock.FACING).getOpposite())) { ++ blockstate.onCaughtFire(level, blockpos, p_123412_.getBlockState().getValue(DispenserBlock.FACING).getOpposite(), null); ++ if (blockstate.getBlock() instanceof TntBlock) ++ level.removeBlock(blockpos, false); } else { - this.m_123573_(false); + this.setSuccess(false); } diff --git a/patches/minecraft/net/minecraft/core/particles/BlockParticleOption.java.patch b/patches/minecraft/net/minecraft/core/particles/BlockParticleOption.java.patch index 8fa603e125..0a4f3c0915 100644 --- a/patches/minecraft/net/minecraft/core/particles/BlockParticleOption.java.patch +++ b/patches/minecraft/net/minecraft/core/particles/BlockParticleOption.java.patch @@ -1,8 +1,8 @@ --- a/net/minecraft/core/particles/BlockParticleOption.java +++ b/net/minecraft/core/particles/BlockParticleOption.java @@ -51,4 +_,15 @@ - public BlockState m_123642_() { - return this.f_123626_; + public BlockState getState() { + return this.state; } + + //FORGE: Add a source pos property, so we can provide models with additional model data diff --git a/patches/minecraft/net/minecraft/core/particles/ItemParticleOption.java.patch b/patches/minecraft/net/minecraft/core/particles/ItemParticleOption.java.patch index 18398e3f78..a35361bb7d 100644 --- a/patches/minecraft/net/minecraft/core/particles/ItemParticleOption.java.patch +++ b/patches/minecraft/net/minecraft/core/particles/ItemParticleOption.java.patch @@ -3,9 +3,9 @@ @@ -35,7 +_,7 @@ public ItemParticleOption(ParticleType p_123705_, ItemStack p_123706_) { - this.f_123701_ = p_123705_; -- this.f_123702_ = p_123706_; -+ this.f_123702_ = p_123706_.m_41777_(); //Forge: Fix stack updating after the fact causing particle changes. + this.type = p_123705_; +- this.itemStack = p_123706_; ++ this.itemStack = p_123706_.copy(); //Forge: Fix stack updating after the fact causing particle changes. } - public void m_7711_(FriendlyByteBuf p_123716_) { + public void writeToNetwork(FriendlyByteBuf p_123716_) { diff --git a/patches/minecraft/net/minecraft/core/registries/BuiltInRegistries.java.patch b/patches/minecraft/net/minecraft/core/registries/BuiltInRegistries.java.patch index 4ca849a102..e39f0025e9 100644 --- a/patches/minecraft/net/minecraft/core/registries/BuiltInRegistries.java.patch +++ b/patches/minecraft/net/minecraft/core/registries/BuiltInRegistries.java.patch @@ -1,310 +1,310 @@ --- a/net/minecraft/core/registries/BuiltInRegistries.java +++ b/net/minecraft/core/registries/BuiltInRegistries.java @@ -114,41 +_,89 @@ - public static final DefaultedRegistry f_256726_ = m_257834_(Registries.f_256827_, "step", (p_260052_) -> { - return GameEvent.f_157785_; + public static final DefaultedRegistry GAME_EVENT = registerDefaultedWithIntrusiveHolders(Registries.GAME_EVENT, "step", (p_260052_) -> { + return GameEvent.STEP; }); -- public static final Registry f_256894_ = m_258002_(Registries.f_256840_, (p_260167_) -> { +- public static final Registry SOUND_EVENT = registerSimple(Registries.SOUND_EVENT, (p_260167_) -> { + /** + * @deprecated Forge: Use {@link net.minecraftforge.registries.ForgeRegistries#SOUND_EVENTS} instead. + */ + @Deprecated -+ public static final Registry f_256894_ = forge(Registries.f_256840_, (p_260167_) -> { - return SoundEvents.f_12019_; ++ public static final Registry SOUND_EVENT = forge(Registries.SOUND_EVENT, (p_260167_) -> { + return SoundEvents.ITEM_PICKUP; }); -- public static final DefaultedRegistry f_257020_ = m_257834_(Registries.f_256808_, "empty", (p_259453_) -> { +- public static final DefaultedRegistry FLUID = registerDefaultedWithIntrusiveHolders(Registries.FLUID, "empty", (p_259453_) -> { + /** + * @deprecated Forge: Use {@link net.minecraftforge.registries.ForgeRegistries#FLUIDS} instead. + */ + @Deprecated -+ public static final DefaultedRegistry f_257020_ = forge(Registries.f_256808_, "empty", (p_259453_) -> { - return Fluids.f_76191_; ++ public static final DefaultedRegistry FLUID = forge(Registries.FLUID, "empty", (p_259453_) -> { + return Fluids.EMPTY; }); -- public static final Registry f_256974_ = m_293167_(Registries.f_256929_, (p_259689_) -> { +- public static final Registry MOB_EFFECT = registerSimpleWithIntrusiveHolders(Registries.MOB_EFFECT, (p_259689_) -> { + /** + * @deprecated Forge: Use {@link net.minecraftforge.registries.ForgeRegistries#MOB_EFFECTS} instead. + */ + @Deprecated -+ public static final Registry f_256974_ = forge(Registries.f_256929_, (p_259689_) -> { - return MobEffects.f_19621_; ++ public static final Registry MOB_EFFECT = forge(Registries.MOB_EFFECT, (p_259689_) -> { + return MobEffects.LUCK; }); -- public static final DefaultedRegistry f_256975_ = m_257834_(Registries.f_256747_, "air", (p_259909_) -> { +- public static final DefaultedRegistry BLOCK = registerDefaultedWithIntrusiveHolders(Registries.BLOCK, "air", (p_259909_) -> { + /** + * @deprecated Forge: Use {@link net.minecraftforge.registries.ForgeRegistries#BLOCKS} instead. + */ + @Deprecated -+ public static final DefaultedRegistry f_256975_ = forge(Registries.f_256747_, "air", (p_259909_) -> { - return Blocks.f_50016_; ++ public static final DefaultedRegistry BLOCK = forge(Registries.BLOCK, "air", (p_259909_) -> { + return Blocks.AIR; }); -- public static final Registry f_256876_ = m_293167_(Registries.f_256762_, (p_259104_) -> { +- public static final Registry ENCHANTMENT = registerSimpleWithIntrusiveHolders(Registries.ENCHANTMENT, (p_259104_) -> { + /** + * @deprecated Forge: Use {@link net.minecraftforge.registries.ForgeRegistries#ENCHANTMENTS} instead. + */ + @Deprecated -+ public static final Registry f_256876_ = forge(Registries.f_256762_, (p_259104_) -> { - return Enchantments.f_44987_; ++ public static final Registry ENCHANTMENT = forge(Registries.ENCHANTMENT, (p_259104_) -> { + return Enchantments.BLOCK_FORTUNE; }); -- public static final DefaultedRegistry> f_256780_ = m_257834_(Registries.f_256939_, "pig", (p_259175_) -> { +- public static final DefaultedRegistry> ENTITY_TYPE = registerDefaultedWithIntrusiveHolders(Registries.ENTITY_TYPE, "pig", (p_259175_) -> { + /** + * @deprecated Forge: Use {@link net.minecraftforge.registries.ForgeRegistries#ENTITY_TYPES} instead. + */ + @Deprecated -+ public static final DefaultedRegistry> f_256780_ = forge(Registries.f_256939_, "pig", (p_259175_) -> { - return EntityType.f_20510_; ++ public static final DefaultedRegistry> ENTITY_TYPE = forge(Registries.ENTITY_TYPE, "pig", (p_259175_) -> { + return EntityType.PIG; }); -- public static final DefaultedRegistry f_257033_ = m_257834_(Registries.f_256913_, "air", (p_260227_) -> { +- public static final DefaultedRegistry ITEM = registerDefaultedWithIntrusiveHolders(Registries.ITEM, "air", (p_260227_) -> { + /** + * @deprecated Forge: Use {@link net.minecraftforge.registries.ForgeRegistries#ITEMS} instead. + */ + @Deprecated -+ public static final DefaultedRegistry f_257033_ = forge(Registries.f_256913_, "air", (p_260227_) -> { - return Items.f_41852_; ++ public static final DefaultedRegistry ITEM = forge(Registries.ITEM, "air", (p_260227_) -> { + return Items.AIR; }); -- public static final DefaultedRegistry f_256980_ = m_257834_(Registries.f_256973_, "empty", (p_259869_) -> { +- public static final DefaultedRegistry POTION = registerDefaultedWithIntrusiveHolders(Registries.POTION, "empty", (p_259869_) -> { + /** + * @deprecated Forge: Use {@link net.minecraftforge.registries.ForgeRegistries#POTIONS} instead. + */ + @Deprecated -+ public static final DefaultedRegistry f_256980_ = forge(Registries.f_256973_, "empty", (p_259869_) -> { - return Potions.f_43598_; ++ public static final DefaultedRegistry POTION = forge(Registries.POTION, "empty", (p_259869_) -> { + return Potions.EMPTY; }); -- public static final Registry> f_257034_ = m_258002_(Registries.f_256890_, (p_260266_) -> { +- public static final Registry> PARTICLE_TYPE = registerSimple(Registries.PARTICLE_TYPE, (p_260266_) -> { + /** + * @deprecated Forge: Use {@link net.minecraftforge.registries.ForgeRegistries#PARTICLE_TYPES} instead. + */ + @Deprecated -+ public static final Registry> f_257034_ = forge(Registries.f_256890_, (p_260266_) -> { - return ParticleTypes.f_123794_; ++ public static final Registry> PARTICLE_TYPE = forge(Registries.PARTICLE_TYPE, (p_260266_) -> { + return ParticleTypes.BLOCK; }); -- public static final Registry> f_257049_ = m_293167_(Registries.f_256922_, (p_259434_) -> { +- public static final Registry> BLOCK_ENTITY_TYPE = registerSimpleWithIntrusiveHolders(Registries.BLOCK_ENTITY_TYPE, (p_259434_) -> { + /** + * @deprecated Forge: Use {@link net.minecraftforge.registries.ForgeRegistries#BLOCK_ENTITY_TYPES} instead. + */ + @Deprecated -+ public static final Registry> f_257049_ = forge(Registries.f_256922_, (p_259434_) -> { - return BlockEntityType.f_58917_; ++ public static final Registry> BLOCK_ENTITY_TYPE = forge(Registries.BLOCK_ENTITY_TYPE, (p_259434_) -> { + return BlockEntityType.FURNACE; }); -- public static final DefaultedRegistry f_257051_ = m_257988_(Registries.f_256836_, "kebab", PaintingVariants::m_218942_); +- public static final DefaultedRegistry PAINTING_VARIANT = registerDefaulted(Registries.PAINTING_VARIANT, "kebab", PaintingVariants::bootstrap); + /** + * @deprecated Forge: Use {@link net.minecraftforge.registries.ForgeRegistries#PAINTING_VARIANTS} instead. + */ + @Deprecated -+ public static final DefaultedRegistry f_257051_ = forge(Registries.f_256836_, "kebab", PaintingVariants::m_218942_); - public static final Registry f_256771_ = m_258002_(Registries.f_256887_, (p_259833_) -> { - return Stats.f_12926_; ++ public static final DefaultedRegistry PAINTING_VARIANT = forge(Registries.PAINTING_VARIANT, "kebab", PaintingVariants::bootstrap); + public static final Registry CUSTOM_STAT = registerSimple(Registries.CUSTOM_STAT, (p_259833_) -> { + return Stats.JUMP; }); -- public static final DefaultedRegistry f_256940_ = m_257988_(Registries.f_256755_, "empty", (p_259971_) -> { +- public static final DefaultedRegistry CHUNK_STATUS = registerDefaulted(Registries.CHUNK_STATUS, "empty", (p_259971_) -> { + /** + * @deprecated Forge: Use {@link net.minecraftforge.registries.ForgeRegistries#CHUNK_STATUS} instead. + */ + @Deprecated -+ public static final DefaultedRegistry f_256940_ = forge(Registries.f_256755_, "empty", (p_259971_) -> { - return ChunkStatus.f_62314_; ++ public static final DefaultedRegistry CHUNK_STATUS = forge(Registries.CHUNK_STATUS, "empty", (p_259971_) -> { + return ChunkStatus.EMPTY; }); - public static final Registry> f_256978_ = m_258002_(Registries.f_256947_, (p_259641_) -> { + public static final Registry> RULE_TEST = registerSimple(Registries.RULE_TEST, (p_259641_) -> { @@ -160,42 +_,90 @@ - public static final Registry> f_256957_ = m_258002_(Registries.f_257009_, (p_259262_) -> { - return PosRuleTestType.f_74205_; + public static final Registry> POS_RULE_TEST = registerSimple(Registries.POS_RULE_TEST, (p_259262_) -> { + return PosRuleTestType.ALWAYS_TRUE_TEST; }); -- public static final Registry> f_256818_ = m_258002_(Registries.f_256798_, (p_259341_) -> { +- public static final Registry> MENU = registerSimple(Registries.MENU, (p_259341_) -> { + /** + * @deprecated Forge: Use {@link net.minecraftforge.registries.ForgeRegistries#MENU_TYPES} instead. + */ + @Deprecated -+ public static final Registry> f_256818_ = forge(Registries.f_256798_, (p_259341_) -> { - return MenuType.f_39964_; ++ public static final Registry> MENU = forge(Registries.MENU, (p_259341_) -> { + return MenuType.ANVIL; }); -- public static final Registry> f_256990_ = m_258002_(Registries.f_256954_, (p_259086_) -> { +- public static final Registry> RECIPE_TYPE = registerSimple(Registries.RECIPE_TYPE, (p_259086_) -> { + /** + * @deprecated Forge: Use {@link net.minecraftforge.registries.ForgeRegistries#RECIPE_TYPES} instead. + */ + @Deprecated -+ public static final Registry> f_256990_ = forge(Registries.f_256954_, (p_259086_) -> { - return RecipeType.f_44107_; ++ public static final Registry> RECIPE_TYPE = forge(Registries.RECIPE_TYPE, (p_259086_) -> { + return RecipeType.CRAFTING; }); -- public static final Registry> f_256769_ = m_258002_(Registries.f_256764_, (p_260230_) -> { +- public static final Registry> RECIPE_SERIALIZER = registerSimple(Registries.RECIPE_SERIALIZER, (p_260230_) -> { + /** + * @deprecated Forge: Use {@link net.minecraftforge.registries.ForgeRegistries#RECIPE_SERIALIZERS} instead. + */ + @Deprecated -+ public static final Registry> f_256769_ = forge(Registries.f_256764_, (p_260230_) -> { - return RecipeSerializer.f_44077_; ++ public static final Registry> RECIPE_SERIALIZER = forge(Registries.RECIPE_SERIALIZER, (p_260230_) -> { + return RecipeSerializer.SHAPELESS_RECIPE; }); -- public static final Registry f_256951_ = m_258002_(Registries.f_256728_, (p_260300_) -> { +- public static final Registry ATTRIBUTE = registerSimple(Registries.ATTRIBUTE, (p_260300_) -> { + /** + * @deprecated Forge: Use {@link net.minecraftforge.registries.ForgeRegistries#ATTRIBUTES} instead. + */ + @Deprecated -+ public static final Registry f_256951_ = forge(Registries.f_256728_, (p_260300_) -> { - return Attributes.f_22286_; ++ public static final Registry ATTRIBUTE = forge(Registries.ATTRIBUTE, (p_260300_) -> { + return Attributes.LUCK; }); - public static final Registry> f_256972_ = m_258002_(Registries.f_256792_, (p_259113_) -> { - return PositionSourceType.f_157871_; + public static final Registry> POSITION_SOURCE_TYPE = registerSimple(Registries.POSITION_SOURCE_TYPE, (p_259113_) -> { + return PositionSourceType.BLOCK; }); -- public static final Registry> f_256979_ = m_258002_(Registries.f_256982_, (RegistryBootstrap)ArgumentTypeInfos::m_235384_); -- public static final Registry> f_256899_ = m_258002_(Registries.f_256849_, (p_259967_) -> { +- public static final Registry> COMMAND_ARGUMENT_TYPE = registerSimple(Registries.COMMAND_ARGUMENT_TYPE, (RegistryBootstrap)ArgumentTypeInfos::bootstrap); +- public static final Registry> STAT_TYPE = registerSimple(Registries.STAT_TYPE, (p_259967_) -> { + /** + * @deprecated Forge: Use {@link net.minecraftforge.registries.ForgeRegistries#COMMAND_ARGUMENT_TYPES} instead. + */ + @Deprecated -+ public static final Registry> f_256979_ = forge(Registries.f_256982_, (RegistryBootstrap)ArgumentTypeInfos::m_235384_); ++ public static final Registry> COMMAND_ARGUMENT_TYPE = forge(Registries.COMMAND_ARGUMENT_TYPE, (RegistryBootstrap)ArgumentTypeInfos::bootstrap); + /** + * @deprecated Forge: Use {@link net.minecraftforge.registries.ForgeRegistries#STAT_TYPES} instead. + */ + @Deprecated -+ public static final Registry> f_256899_ = forge(Registries.f_256849_, (p_259967_) -> { - return Stats.f_12982_; ++ public static final Registry> STAT_TYPE = forge(Registries.STAT_TYPE, (p_259967_) -> { + return Stats.ITEM_USED; }); - public static final DefaultedRegistry f_256934_ = m_257988_(Registries.f_257019_, "plains", (p_259473_) -> { - return VillagerType.f_35821_; + public static final DefaultedRegistry VILLAGER_TYPE = registerDefaulted(Registries.VILLAGER_TYPE, "plains", (p_259473_) -> { + return VillagerType.PLAINS; }); -- public static final DefaultedRegistry f_256735_ = m_257988_(Registries.f_256749_, "none", (p_259037_) -> { +- public static final DefaultedRegistry VILLAGER_PROFESSION = registerDefaulted(Registries.VILLAGER_PROFESSION, "none", (p_259037_) -> { + /** + * @deprecated Forge: Use {@link net.minecraftforge.registries.ForgeRegistries#VILLAGER_PROFESSIONS} instead. + */ + @Deprecated -+ public static final DefaultedRegistry f_256735_ = forge(Registries.f_256749_, "none", (p_259037_) -> { - return VillagerProfession.f_35585_; ++ public static final DefaultedRegistry VILLAGER_PROFESSION = forge(Registries.VILLAGER_PROFESSION, "none", (p_259037_) -> { + return VillagerProfession.NONE; }); -- public static final Registry f_256941_ = m_258002_(Registries.f_256805_, PoiTypes::m_218082_); -- public static final DefaultedRegistry> f_256784_ = m_257988_(Registries.f_257023_, "dummy", (p_259248_) -> { +- public static final Registry POINT_OF_INTEREST_TYPE = registerSimple(Registries.POINT_OF_INTEREST_TYPE, PoiTypes::bootstrap); +- public static final DefaultedRegistry> MEMORY_MODULE_TYPE = registerDefaulted(Registries.MEMORY_MODULE_TYPE, "dummy", (p_259248_) -> { + /** + * @deprecated Forge: Use {@link net.minecraftforge.registries.ForgeRegistries#POI_TYPES} instead. + */ + @Deprecated -+ public static final Registry f_256941_ = forge(Registries.f_256805_, PoiTypes::m_218082_); ++ public static final Registry POINT_OF_INTEREST_TYPE = forge(Registries.POINT_OF_INTEREST_TYPE, PoiTypes::bootstrap); + /** + * @deprecated Forge: Use {@link net.minecraftforge.registries.ForgeRegistries#MEMORY_MODULE_TYPES} instead. + */ + @Deprecated -+ public static final DefaultedRegistry> f_256784_ = forge(Registries.f_257023_, "dummy", (p_259248_) -> { - return MemoryModuleType.f_26349_; ++ public static final DefaultedRegistry> MEMORY_MODULE_TYPE = forge(Registries.MEMORY_MODULE_TYPE, "dummy", (p_259248_) -> { + return MemoryModuleType.DUMMY; }); -- public static final DefaultedRegistry> f_256733_ = m_257988_(Registries.f_256937_, "dummy", (p_259757_) -> { +- public static final DefaultedRegistry> SENSOR_TYPE = registerDefaulted(Registries.SENSOR_TYPE, "dummy", (p_259757_) -> { + /** + * @deprecated Forge: Use {@link net.minecraftforge.registries.ForgeRegistries#SENSOR_TYPES} instead. + */ + @Deprecated -+ public static final DefaultedRegistry> f_256733_ = forge(Registries.f_256937_, "dummy", (p_259757_) -> { - return SensorType.f_26809_; ++ public static final DefaultedRegistry> SENSOR_TYPE = forge(Registries.SENSOR_TYPE, "dummy", (p_259757_) -> { + return SensorType.DUMMY; }); -- public static final Registry f_256962_ = m_258002_(Registries.f_256723_, (p_259540_) -> { +- public static final Registry SCHEDULE = registerSimple(Registries.SCHEDULE, (p_259540_) -> { + /** + * @deprecated Forge: Use {@link net.minecraftforge.registries.ForgeRegistries#SCHEDULES} instead. + */ + @Deprecated -+ public static final Registry f_256962_ = forge(Registries.f_256723_, (p_259540_) -> { - return Schedule.f_38012_; ++ public static final Registry SCHEDULE = forge(Registries.SCHEDULE, (p_259540_) -> { + return Schedule.EMPTY; }); -- public static final Registry f_256785_ = m_258002_(Registries.f_257025_, (p_260197_) -> { +- public static final Registry ACTIVITY = registerSimple(Registries.ACTIVITY, (p_260197_) -> { + /** + * @deprecated Forge: Use {@link net.minecraftforge.registries.ForgeRegistries#ACTIVITIES} instead. + */ + @Deprecated -+ public static final Registry f_256785_ = forge(Registries.f_257025_, (p_260197_) -> { - return Activity.f_37979_; ++ public static final Registry ACTIVITY = forge(Registries.ACTIVITY, (p_260197_) -> { + return Activity.IDLE; }); - public static final Registry f_257035_ = m_258002_(Registries.f_257032_, (p_260042_) -> { + public static final Registry LOOT_POOL_ENTRY_TYPE = registerSimple(Registries.LOOT_POOL_ENTRY_TYPE, (p_260042_) -> { @@ -228,10 +_,18 @@ - public static final Registry> f_256906_ = m_258002_(Registries.f_256774_, (p_260006_) -> { - return BlockPredicateType.f_190444_; + public static final Registry> BLOCK_PREDICATE_TYPE = registerSimple(Registries.BLOCK_PREDICATE_TYPE, (p_260006_) -> { + return BlockPredicateType.NOT; }); -- public static final Registry> f_257001_ = m_258002_(Registries.f_256812_, (p_260200_) -> { +- public static final Registry> CARVER = registerSimple(Registries.CARVER, (p_260200_) -> { + /** + * @deprecated Forge: Use {@link net.minecraftforge.registries.ForgeRegistries#WORLD_CARVERS} instead. + */ + @Deprecated -+ public static final Registry> f_257001_ = forge(Registries.f_256812_, (p_260200_) -> { - return WorldCarver.f_64974_; ++ public static final Registry> CARVER = forge(Registries.CARVER, (p_260200_) -> { + return WorldCarver.CAVE; }); -- public static final Registry> f_256810_ = m_258002_(Registries.f_256833_, (p_259143_) -> { +- public static final Registry> FEATURE = registerSimple(Registries.FEATURE, (p_259143_) -> { + /** + * @deprecated Forge: Use {@link net.minecraftforge.registries.ForgeRegistries#FEATURES} instead. + */ + @Deprecated -+ public static final Registry> f_256810_ = forge(Registries.f_256833_, (p_259143_) -> { - return Feature.f_65731_; ++ public static final Registry> FEATURE = forge(Registries.FEATURE, (p_259143_) -> { + return Feature.ORE; }); - public static final Registry> f_256950_ = m_258002_(Registries.f_256888_, (p_259179_) -> { + public static final Registry> STRUCTURE_PLACEMENT = registerSimple(Registries.STRUCTURE_PLACEMENT, (p_259179_) -> { @@ -246,10 +_,18 @@ - public static final Registry> f_256986_ = m_258002_(Registries.f_256843_, (p_260335_) -> { - return PlacementModifierType.f_191853_; + public static final Registry> PLACEMENT_MODIFIER_TYPE = registerSimple(Registries.PLACEMENT_MODIFIER_TYPE, (p_260335_) -> { + return PlacementModifierType.COUNT; }); -- public static final Registry> f_256760_ = m_258002_(Registries.f_256891_, (p_259345_) -> { +- public static final Registry> BLOCKSTATE_PROVIDER_TYPE = registerSimple(Registries.BLOCK_STATE_PROVIDER_TYPE, (p_259345_) -> { + /** + * @deprecated Forge: Use {@link net.minecraftforge.registries.ForgeRegistries#BLOCK_STATE_PROVIDER_TYPES} instead. + */ + @Deprecated -+ public static final Registry> f_256760_ = forge(Registries.f_256891_, (p_259345_) -> { - return BlockStateProviderType.f_68752_; ++ public static final Registry> BLOCKSTATE_PROVIDER_TYPE = forge(Registries.BLOCK_STATE_PROVIDER_TYPE, (p_259345_) -> { + return BlockStateProviderType.SIMPLE_STATE_PROVIDER; }); -- public static final Registry> f_256861_ = m_258002_(Registries.f_256905_, (p_260329_) -> { +- public static final Registry> FOLIAGE_PLACER_TYPE = registerSimple(Registries.FOLIAGE_PLACER_TYPE, (p_260329_) -> { + /** + * @deprecated Forge: Use {@link net.minecraftforge.registries.ForgeRegistries#FOLIAGE_PLACER_TYPES} instead. + */ + @Deprecated -+ public static final Registry> f_256861_ = forge(Registries.f_256905_, (p_260329_) -> { - return FoliagePlacerType.f_68591_; ++ public static final Registry> FOLIAGE_PLACER_TYPE = forge(Registries.FOLIAGE_PLACER_TYPE, (p_260329_) -> { + return FoliagePlacerType.BLOB_FOLIAGE_PLACER; }); - public static final Registry> f_256920_ = m_258002_(Registries.f_256963_, (p_259690_) -> { + public static final Registry> TRUNK_PLACER_TYPE = registerSimple(Registries.TRUNK_PLACER_TYPE, (p_259690_) -> { @@ -258,7 +_,11 @@ - public static final Registry> f_256742_ = m_258002_(Registries.f_256768_, (p_259493_) -> { - return RootPlacerType.f_225898_; + public static final Registry> ROOT_PLACER_TYPE = registerSimple(Registries.ROOT_PLACER_TYPE, (p_259493_) -> { + return RootPlacerType.MANGROVE_ROOT_PLACER; }); -- public static final Registry> f_256987_ = m_258002_(Registries.f_256845_, (p_259122_) -> { +- public static final Registry> TREE_DECORATOR_TYPE = registerSimple(Registries.TREE_DECORATOR_TYPE, (p_259122_) -> { + /** + * @deprecated Forge: Use {@link net.minecraftforge.registries.ForgeRegistries#TREE_DECORATOR_TYPES} instead. + */ + @Deprecated -+ public static final Registry> f_256987_ = forge(Registries.f_256845_, (p_259122_) -> { - return TreeDecoratorType.f_70043_; ++ public static final Registry> TREE_DECORATOR_TYPE = forge(Registries.TREE_DECORATOR_TYPE, (p_259122_) -> { + return TreeDecoratorType.LEAVE_VINE; }); - public static final Registry> f_256958_ = m_258002_(Registries.f_256720_, (p_259370_) -> { + public static final Registry> FEATURE_SIZE_TYPE = registerSimple(Registries.FEATURE_SIZE_TYPE, (p_259370_) -> { @@ -293,10 +_,18 @@ - return m_257895_(p_297531_, new MappedRegistry<>(p_297531_, Lifecycle.stable(), true), p_298446_, Lifecycle.stable()); + return internalRegister(p_297531_, new MappedRegistry<>(p_297531_, Lifecycle.stable(), true), p_298446_, Lifecycle.stable()); } + private static Registry forge(ResourceKey> key, BuiltInRegistries.RegistryBootstrap def) { + return forge(key, Lifecycle.stable(), def); + } + - private static DefaultedRegistry m_257988_(ResourceKey> p_259887_, String p_259325_, BuiltInRegistries.RegistryBootstrap p_259759_) { - return m_257600_(p_259887_, p_259325_, Lifecycle.stable(), p_259759_); + private static DefaultedRegistry registerDefaulted(ResourceKey> p_259887_, String p_259325_, BuiltInRegistries.RegistryBootstrap p_259759_) { + return registerDefaulted(p_259887_, p_259325_, Lifecycle.stable(), p_259759_); } + private static DefaultedRegistry forge(ResourceKey> key, String defKey, BuiltInRegistries.RegistryBootstrap def) { + return forge(key, defKey, Lifecycle.stable(), def); + } + - private static DefaultedRegistry m_257834_(ResourceKey> p_259296_, String p_259101_, BuiltInRegistries.RegistryBootstrap p_259485_) { - return m_257762_(p_259296_, p_259101_, Lifecycle.stable(), p_259485_); + private static DefaultedRegistry registerDefaultedWithIntrusiveHolders(ResourceKey> p_259296_, String p_259101_, BuiltInRegistries.RegistryBootstrap p_259485_) { + return registerDefaultedWithIntrusiveHolders(p_259296_, p_259101_, Lifecycle.stable(), p_259485_); } @@ -305,10 +_,19 @@ - return m_257895_(p_259121_, new MappedRegistry<>(p_259121_, p_259977_, false), p_259874_, p_259977_); + return internalRegister(p_259121_, new MappedRegistry<>(p_259121_, p_259977_, false), p_259874_, p_259977_); } + private static Registry forge(ResourceKey> key, Lifecycle cycle, BuiltInRegistries.RegistryBootstrap def) { -+ return m_257895_(key, net.minecraftforge.registries.GameData.getWrapper(key, cycle), def, cycle); ++ return internalRegister(key, net.minecraftforge.registries.GameData.getWrapper(key, cycle), def, cycle); + } + - private static DefaultedRegistry m_257600_(ResourceKey> p_259400_, String p_259678_, Lifecycle p_259157_, BuiltInRegistries.RegistryBootstrap p_259806_) { - return m_257895_(p_259400_, new DefaultedMappedRegistry<>(p_259678_, p_259400_, p_259157_, false), p_259806_, p_259157_); + private static DefaultedRegistry registerDefaulted(ResourceKey> p_259400_, String p_259678_, Lifecycle p_259157_, BuiltInRegistries.RegistryBootstrap p_259806_) { + return internalRegister(p_259400_, new DefaultedMappedRegistry<>(p_259678_, p_259400_, p_259157_, false), p_259806_, p_259157_); } + @SuppressWarnings("unchecked") + private static DefaultedRegistry forge(ResourceKey> key, String defKey, Lifecycle cycle, BuiltInRegistries.RegistryBootstrap def) { -+ return (DefaultedRegistry) m_257895_(key, net.minecraftforge.registries.GameData.getWrapper(key, cycle, defKey), def, cycle); ++ return (DefaultedRegistry) internalRegister(key, net.minecraftforge.registries.GameData.getWrapper(key, cycle, defKey), def, cycle); + } + - private static DefaultedRegistry m_257762_(ResourceKey> p_260010_, String p_260220_, Lifecycle p_260139_, BuiltInRegistries.RegistryBootstrap p_260185_) { - return m_257895_(p_260010_, new DefaultedMappedRegistry<>(p_260220_, p_260010_, p_260139_, true), p_260185_, p_260139_); + private static DefaultedRegistry registerDefaultedWithIntrusiveHolders(ResourceKey> p_260010_, String p_260220_, Lifecycle p_260139_, BuiltInRegistries.RegistryBootstrap p_260185_) { + return internalRegister(p_260010_, new DefaultedMappedRegistry<>(p_260220_, p_260010_, p_260139_, true), p_260185_, p_260139_); } @@ -354,7 +_,7 @@ if (p_259410_ instanceof DefaultedRegistry) { - ResourceLocation resourcelocation = ((DefaultedRegistry)p_259410_).m_122315_(); -- Validate.notNull(p_259410_.m_7745_(resourcelocation), "Missing default of DefaultedMappedRegistry: " + resourcelocation); -+ Validate.notNull(p_259410_.m_7745_(resourcelocation), "Missing default of DefaultedMappedRegistry: " + p_260209_.m_123023_() + ", Entry: " + resourcelocation); + ResourceLocation resourcelocation = ((DefaultedRegistry)p_259410_).getDefaultKey(); +- Validate.notNull(p_259410_.get(resourcelocation), "Missing default of DefaultedMappedRegistry: " + resourcelocation); ++ Validate.notNull(p_259410_.get(resourcelocation), "Missing default of DefaultedMappedRegistry: " + p_260209_.key() + ", Entry: " + resourcelocation); } }); diff --git a/patches/minecraft/net/minecraft/data/DataGenerator.java.patch b/patches/minecraft/net/minecraft/data/DataGenerator.java.patch index 2f8dad623d..1753edcb64 100644 --- a/patches/minecraft/net/minecraft/data/DataGenerator.java.patch +++ b/patches/minecraft/net/minecraft/data/DataGenerator.java.patch @@ -1,24 +1,24 @@ --- a/net/minecraft/data/DataGenerator.java +++ b/net/minecraft/data/DataGenerator.java @@ -21,6 +_,7 @@ - final Map f_236026_ = new LinkedHashMap<>(); - private final WorldVersion f_236027_; - private final boolean f_236028_; -+ private final Map providersView = java.util.Collections.unmodifiableMap(this.f_236026_); + final Map providersToRun = new LinkedHashMap<>(); + private final WorldVersion version; + private final boolean alwaysGenerate; ++ private final Map providersView = java.util.Collections.unmodifiableMap(this.providersToRun); public DataGenerator(Path p_251724_, WorldVersion p_250554_, boolean p_251323_) { - this.f_243753_ = p_251724_; + this.rootOutputFolder = p_251724_; @@ -38,6 +_,7 @@ - f_123905_.debug("Generator {} already run for version {}", p_254418_, this.f_236027_.m_132493_()); + LOGGER.debug("Generator {} already run for version {}", p_254418_, this.version.getName()); } else { - f_123905_.info("Starting provider: {}", (Object)p_254418_); + LOGGER.info("Starting provider: {}", (Object)p_254418_); + net.minecraftforge.fml.StartupMessageManager.addModMessage("Generating: " + p_254418_); stopwatch1.start(); - hashcache.m_253116_(hashcache.m_253234_(p_254418_, p_253750_::m_213708_).join()); + hashcache.applyUpdate(hashcache.generateUpdate(p_254418_, p_253750_::run).join()); stopwatch1.stop(); @@ -56,6 +_,34 @@ - public DataGenerator.PackGenerator m_253030_(boolean p_253826_, String p_254134_) { - Path path = this.f_244116_.m_247566_(PackOutput.Target.DATA_PACK).resolve("minecraft").resolve("datapacks").resolve(p_254134_); + public DataGenerator.PackGenerator getBuiltinDatapack(boolean p_253826_, String p_254134_) { + Path path = this.vanillaPackOutput.getOutputFolder(PackOutput.Target.DATA_PACK).resolve("minecraft").resolve("datapacks").resolve(p_254134_); return new DataGenerator.PackGenerator(p_253826_, p_254134_, new PackOutput(path)); + } + @@ -27,25 +27,25 @@ + } + + public PackOutput getPackOutput() { -+ return this.f_244116_; ++ return this.vanillaPackOutput; + } + + public PackOutput getPackOutput(String path) { -+ return new PackOutput(f_243753_.resolve(path)); ++ return new PackOutput(rootOutputFolder.resolve(path)); + } + + public T addProvider(boolean run, DataProvider.Factory factory) { -+ return addProvider(run, factory.m_253034_(this.f_244116_)); ++ return addProvider(run, factory.create(this.vanillaPackOutput)); + } + + public T addProvider(boolean run, T provider) { -+ String id = provider.m_6055_(); ++ String id = provider.getName(); + -+ if (!DataGenerator.this.f_252429_.add(id)) ++ if (!DataGenerator.this.allProviderIds.add(id)) + throw new IllegalStateException("Duplicate provider: " + id); + + if (run) -+ DataGenerator.this.f_236026_.put(id, provider); ++ DataGenerator.this.providersToRun.put(id, provider); + + return provider; } diff --git a/patches/minecraft/net/minecraft/data/HashCache.java.patch b/patches/minecraft/net/minecraft/data/HashCache.java.patch index 1b4de6bf04..cc6307e85e 100644 --- a/patches/minecraft/net/minecraft/data/HashCache.java.patch +++ b/patches/minecraft/net/minecraft/data/HashCache.java.patch @@ -1,37 +1,37 @@ --- a/net/minecraft/data/HashCache.java +++ b/net/minecraft/data/HashCache.java @@ -35,6 +_,7 @@ - private final Path f_236080_; - private final String f_236081_; - private final Map f_252445_; + private final Path cacheDir; + private final String versionId; + private final Map caches; + private final Map originalCaches; - private final Set f_236083_ = new HashSet<>(); - private final Set f_236084_ = new HashSet<>(); - private final int f_236085_; + private final Set cachesToWrite = new HashSet<>(); + private final Set cachePaths = new HashSet<>(); + private final int initialCount; @@ -61,6 +_,7 @@ } - this.f_252445_ = map; -+ this.originalCaches = Map.copyOf(this.f_252445_); - this.f_236085_ = i; + this.caches = map; ++ this.originalCaches = Map.copyOf(this.caches); + this.initialCount = i; } @@ -104,6 +_,8 @@ - this.f_252445_.forEach((p_253378_, p_253379_) -> { - if (this.f_236083_.contains(p_253378_)) { - Path path = this.m_252859_(p_253378_); + this.caches.forEach((p_253378_, p_253379_) -> { + if (this.cachesToWrite.contains(p_253378_)) { + Path path = this.getProviderCachePath(p_253378_); + // Forge: Only rewrite the cache file if it changed or is missing + if (!p_253379_.equals(this.originalCaches.get(p_253378_)) || !Files.exists(path)) - p_253379_.m_236142_(this.f_236079_, path, DateTimeFormatter.ISO_LOCAL_DATE_TIME.format(LocalDateTime.now()) + "\t" + p_253378_); + p_253379_.save(this.rootDir, path, DateTimeFormatter.ISO_LOCAL_DATE_TIME.format(LocalDateTime.now()) + "\t" + p_253378_); } @@ -208,10 +_,11 @@ bufferedwriter.write(p_236145_); bufferedwriter.newLine(); -- for(Map.Entry entry : this.f_236127_.entrySet()) { +- for(Map.Entry entry : this.data.entrySet()) { + // Forge: Standardize order of entries -+ for(Map.Entry entry : this.f_236127_.entrySet().stream().sorted(Map.Entry.comparingByKey()).toList()) { ++ for(Map.Entry entry : this.data.entrySet().stream().sorted(Map.Entry.comparingByKey()).toList()) { bufferedwriter.write(entry.getValue().toString()); bufferedwriter.write(32); - bufferedwriter.write(p_236143_.relativize(entry.getKey()).toString()); diff --git a/patches/minecraft/net/minecraft/data/Main.java.patch b/patches/minecraft/net/minecraft/data/Main.java.patch index 4de8c13874..f7e6879d43 100644 --- a/patches/minecraft/net/minecraft/data/Main.java.patch +++ b/patches/minecraft/net/minecraft/data/Main.java.patch @@ -21,10 +21,10 @@ boolean flag3 = flag || optionset.has(optionspec3); boolean flag4 = flag || optionset.has(optionspec4); boolean flag5 = flag || optionset.has(optionspec5); -- DataGenerator datagenerator = m_236679_(path, optionset.valuesOf(optionspec8).stream().map((p_129659_) -> { +- DataGenerator datagenerator = createStandardGenerator(path, optionset.valuesOf(optionspec8).stream().map((p_129659_) -> { - return Paths.get(p_129659_); -- }).collect(Collectors.toList()), flag1, flag2, flag3, flag4, flag5, SharedConstants.m_183709_(), true); -- datagenerator.m_123917_(); +- }).collect(Collectors.toList()), flag1, flag2, flag3, flag4, flag5, SharedConstants.getCurrentVersion(), true); +- datagenerator.run(); + Collection inputs = optionset.valuesOf(optionspec8).stream().map(Paths::get).collect(Collectors.toList()); + Collection existingPacks = optionset.valuesOf(existing).stream().map(Paths::get).collect(Collectors.toList()); + java.util.Set existingMods = new java.util.HashSet<>(optionset.valuesOf(existingMod)); @@ -32,7 +32,7 @@ + boolean isFlat = mods.isEmpty() || optionset.has(flat); + net.minecraftforge.data.loading.DatagenModLoader.begin(mods, path, inputs, existingPacks, existingMods, flag2, flag1, flag3, flag4, flag5, isFlat, optionset.valueOf(assetIndex), optionset.valueOf(assetsDir)); + if (mods.contains("minecraft") || mods.isEmpty()) -+ m_236679_(isFlat ? path : path.resolve("minecraft"), inputs, flag1, flag2, flag3, flag4, flag5, SharedConstants.m_183709_(), true).m_123917_(); ++ createStandardGenerator(isFlat ? path : path.resolve("minecraft"), inputs, flag1, flag2, flag3, flag4, flag5, SharedConstants.getCurrentVersion(), true).run(); } else { optionparser.printHelpOn(System.out); } diff --git a/patches/minecraft/net/minecraft/data/advancements/AdvancementProvider.java.patch b/patches/minecraft/net/minecraft/data/advancements/AdvancementProvider.java.patch index f3db7712b3..eb48fe7555 100644 --- a/patches/minecraft/net/minecraft/data/advancements/AdvancementProvider.java.patch +++ b/patches/minecraft/net/minecraft/data/advancements/AdvancementProvider.java.patch @@ -10,5 +10,5 @@ + */ +@Deprecated public class AdvancementProvider implements DataProvider { - private final PackOutput.PathProvider f_236156_; - private final List f_244266_; + private final PackOutput.PathProvider pathProvider; + private final List subProviders; diff --git a/patches/minecraft/net/minecraft/data/loot/BlockLootSubProvider.java.patch b/patches/minecraft/net/minecraft/data/loot/BlockLootSubProvider.java.patch index 398bdf0f1e..c9e0d80131 100644 --- a/patches/minecraft/net/minecraft/data/loot/BlockLootSubProvider.java.patch +++ b/patches/minecraft/net/minecraft/data/loot/BlockLootSubProvider.java.patch @@ -2,18 +2,18 @@ +++ b/net/minecraft/data/loot/BlockLootSubProvider.java @@ -265,11 +_,15 @@ - protected abstract void m_245660_(); + protected abstract void generate(); + protected Iterable getKnownBlocks() { -+ return BuiltInRegistries.f_256975_; ++ return BuiltInRegistries.BLOCK; + } + - public void m_245126_(BiConsumer p_249322_) { - this.m_245660_(); + public void generate(BiConsumer p_249322_) { + this.generate(); Set set = new HashSet<>(); -- for(Block block : BuiltInRegistries.f_256975_) { +- for(Block block : BuiltInRegistries.BLOCK) { + for(Block block : getKnownBlocks()) { - if (block.m_245993_(this.f_243739_)) { - ResourceLocation resourcelocation = block.m_60589_(); - if (resourcelocation != BuiltInLootTables.f_78712_ && set.add(resourcelocation)) { + if (block.isEnabled(this.enabledFeatures)) { + ResourceLocation resourcelocation = block.getLootTable(); + if (resourcelocation != BuiltInLootTables.EMPTY && set.add(resourcelocation)) { diff --git a/patches/minecraft/net/minecraft/data/loot/EntityLootSubProvider.java.patch b/patches/minecraft/net/minecraft/data/loot/EntityLootSubProvider.java.patch index 2a480ce2ec..8e9b329245 100644 --- a/patches/minecraft/net/minecraft/data/loot/EntityLootSubProvider.java.patch +++ b/patches/minecraft/net/minecraft/data/loot/EntityLootSubProvider.java.patch @@ -2,42 +2,42 @@ +++ b/net/minecraft/data/loot/EntityLootSubProvider.java @@ -51,23 +_,27 @@ - public abstract void m_246942_(); + public abstract void generate(); + protected java.util.stream.Stream> getKnownEntityTypes() { -+ return BuiltInRegistries.f_256780_.m_123024_(); ++ return BuiltInRegistries.ENTITY_TYPE.stream(); + } + - public void m_245126_(BiConsumer p_251751_) { - this.m_246942_(); + public void generate(BiConsumer p_251751_) { + this.generate(); Set set = Sets.newHashSet(); -- BuiltInRegistries.f_256780_.m_203611_().forEach((p_266624_) -> { -- EntityType entitytype = p_266624_.m_203334_(); -+ this.getKnownEntityTypes().map(EntityType::m_204041_).forEach((p_249003_) -> { -+ EntityType entitytype = p_249003_.m_203334_(); - if (entitytype.m_245993_(this.f_265862_)) { - if (m_245552_(entitytype)) { - Map map = this.f_244213_.remove(entitytype); - ResourceLocation resourcelocation = entitytype.m_20677_(); - if (!resourcelocation.equals(BuiltInLootTables.f_78712_) && entitytype.m_245993_(this.f_266009_) && (map == null || !map.containsKey(resourcelocation))) { -- throw new IllegalStateException(String.format(Locale.ROOT, "Missing loottable '%s' for '%s'", resourcelocation, p_266624_.m_205785_().m_135782_())); -+ throw new IllegalStateException(String.format(Locale.ROOT, "Missing loottable '%s' for '%s'", resourcelocation, p_249003_.m_205785_().m_135782_())); +- BuiltInRegistries.ENTITY_TYPE.holders().forEach((p_266624_) -> { +- EntityType entitytype = p_266624_.value(); ++ this.getKnownEntityTypes().map(EntityType::builtInRegistryHolder).forEach((p_249003_) -> { ++ EntityType entitytype = p_249003_.value(); + if (entitytype.isEnabled(this.allowed)) { + if (canHaveLootTable(entitytype)) { + Map map = this.map.remove(entitytype); + ResourceLocation resourcelocation = entitytype.getDefaultLootTable(); + if (!resourcelocation.equals(BuiltInLootTables.EMPTY) && entitytype.isEnabled(this.required) && (map == null || !map.containsKey(resourcelocation))) { +- throw new IllegalStateException(String.format(Locale.ROOT, "Missing loottable '%s' for '%s'", resourcelocation, p_266624_.key().location())); ++ throw new IllegalStateException(String.format(Locale.ROOT, "Missing loottable '%s' for '%s'", resourcelocation, p_249003_.key().location())); } if (map != null) { map.forEach((p_250376_, p_250972_) -> { if (!set.add(p_250376_)) { -- throw new IllegalStateException(String.format(Locale.ROOT, "Duplicate loottable '%s' for '%s'", p_250376_, p_266624_.m_205785_().m_135782_())); -+ throw new IllegalStateException(String.format(Locale.ROOT, "Duplicate loottable '%s' for '%s'", p_250376_, p_249003_.m_205785_().m_135782_())); +- throw new IllegalStateException(String.format(Locale.ROOT, "Duplicate loottable '%s' for '%s'", p_250376_, p_266624_.key().location())); ++ throw new IllegalStateException(String.format(Locale.ROOT, "Duplicate loottable '%s' for '%s'", p_250376_, p_249003_.key().location())); } else { p_251751_.accept(p_250376_, p_250972_); } @@ -76,7 +_,7 @@ } else { - Map map1 = this.f_244213_.remove(entitytype); + Map map1 = this.map.remove(entitytype); if (map1 != null) { -- throw new IllegalStateException(String.format(Locale.ROOT, "Weird loottables '%s' for '%s', not a LivingEntity so should not have loot", map1.keySet().stream().map(ResourceLocation::toString).collect(Collectors.joining(",")), p_266624_.m_205785_().m_135782_())); -+ throw new IllegalStateException(String.format(Locale.ROOT, "Weird loottables '%s' for '%s', not a LivingEntity so should not have loot", map1.keySet().stream().map(ResourceLocation::toString).collect(Collectors.joining(",")), p_249003_.m_205785_().m_135782_())); +- throw new IllegalStateException(String.format(Locale.ROOT, "Weird loottables '%s' for '%s', not a LivingEntity so should not have loot", map1.keySet().stream().map(ResourceLocation::toString).collect(Collectors.joining(",")), p_266624_.key().location())); ++ throw new IllegalStateException(String.format(Locale.ROOT, "Weird loottables '%s' for '%s', not a LivingEntity so should not have loot", map1.keySet().stream().map(ResourceLocation::toString).collect(Collectors.joining(",")), p_249003_.key().location())); } } @@ -45,8 +45,8 @@ } } -- protected static boolean m_245552_(EntityType p_249029_) { -+ protected boolean m_245552_(EntityType p_249029_) { - return f_244591_.contains(p_249029_) || p_249029_.m_20674_() != MobCategory.MISC; +- protected static boolean canHaveLootTable(EntityType p_249029_) { ++ protected boolean canHaveLootTable(EntityType p_249029_) { + return SPECIAL_LOOT_TABLE_TYPES.contains(p_249029_) || p_249029_.getCategory() != MobCategory.MISC; } diff --git a/patches/minecraft/net/minecraft/data/loot/LootTableProvider.java.patch b/patches/minecraft/net/minecraft/data/loot/LootTableProvider.java.patch index 30ace02c59..65cd425d93 100644 --- a/patches/minecraft/net/minecraft/data/loot/LootTableProvider.java.patch +++ b/patches/minecraft/net/minecraft/data/loot/LootTableProvider.java.patch @@ -1,27 +1,27 @@ --- a/net/minecraft/data/loot/LootTableProvider.java +++ b/net/minecraft/data/loot/LootTableProvider.java @@ -43,7 +_,7 @@ - public CompletableFuture m_213708_(CachedOutput p_254060_) { + public CompletableFuture run(CachedOutput p_254060_) { final Map map = Maps.newHashMap(); Map map1 = new Object2ObjectOpenHashMap<>(); -- this.f_124434_.forEach((p_288263_) -> { +- this.subProviders.forEach((p_288263_) -> { + this.getTables().forEach((p_288263_) -> { - p_288263_.f_243941_().get().m_245126_((p_288259_, p_288260_) -> { - ResourceLocation resourcelocation1 = map1.put(RandomSequence.m_288221_(p_288259_), p_288259_); + p_288263_.provider().get().generate((p_288259_, p_288260_) -> { + ResourceLocation resourcelocation1 = map1.put(RandomSequence.seedForKey(p_288259_), p_288259_); if (resourcelocation1 != null) { @@ -63,13 +_,8 @@ } }); -- for(ResourceLocation resourcelocation : Sets.difference(this.f_243940_, map.keySet())) { -- validationcontext.m_79357_("Missing built-in table: " + resourcelocation); +- for(ResourceLocation resourcelocation : Sets.difference(this.requiredTables, map.keySet())) { +- validationcontext.reportProblem("Missing built-in table: " + resourcelocation); - } + validate(map, validationcontext); - map.forEach((p_278897_, p_278898_) -> { -- p_278898_.m_79136_(validationcontext.m_79355_(p_278898_.m_79122_()).m_278632_("{" + p_278897_ + "}", new LootDataId<>(LootDataType.f_278413_, p_278897_))); +- p_278898_.validate(validationcontext.setParams(p_278898_.getParamSet()).enterElement("{" + p_278897_ + "}", new LootDataId<>(LootDataType.TABLE, p_278897_))); - }); - Multimap multimap = validationcontext.m_79352_(); + Multimap multimap = validationcontext.getProblems(); if (!multimap.isEmpty()) { multimap.forEach((p_124446_, p_124447_) -> { @@ -86,6 +_,20 @@ @@ -31,17 +31,17 @@ + } + + public List getTables() { -+ return this.f_124434_; ++ return this.subProviders; + } + + protected void validate(Map map, ValidationContext validationcontext) { -+ for(ResourceLocation resourcelocation : Sets.difference(this.f_243940_, map.keySet())) { -+ validationcontext.m_79357_("Missing built-in table: " + resourcelocation); ++ for(ResourceLocation resourcelocation : Sets.difference(this.requiredTables, map.keySet())) { ++ validationcontext.reportProblem("Missing built-in table: " + resourcelocation); + } + + map.forEach((p_278897_, p_278898_) -> { -+ p_278898_.m_79136_(validationcontext.m_79355_(p_278898_.m_79122_()).m_278632_("{" + p_278897_ + "}", new LootDataId<>(LootDataType.f_278413_, p_278897_))); ++ p_278898_.validate(validationcontext.setParams(p_278898_.getParamSet()).enterElement("{" + p_278897_ + "}", new LootDataId<>(LootDataType.TABLE, p_278897_))); + }); } - public final String m_6055_() { + public final String getName() { diff --git a/patches/minecraft/net/minecraft/data/recipes/RecipeProvider.java.patch b/patches/minecraft/net/minecraft/data/recipes/RecipeProvider.java.patch index eb756e80c3..8ae361308b 100644 --- a/patches/minecraft/net/minecraft/data/recipes/RecipeProvider.java.patch +++ b/patches/minecraft/net/minecraft/data/recipes/RecipeProvider.java.patch @@ -1,10 +1,10 @@ --- a/net/minecraft/data/recipes/RecipeProvider.java +++ b/net/minecraft/data/recipes/RecipeProvider.java @@ -93,7 +_,9 @@ - AdvancementHolder advancementholder = p_300066_.m_126373_(); + AdvancementHolder advancementholder = p_300066_.advancement(); if (advancementholder != null) { - JsonObject jsonobject = advancementholder.f_290952_().m_294498_(); -- list.add(DataProvider.m_253162_(p_254020_, jsonobject, RecipeProvider.this.f_236356_.m_245731_(advancementholder.f_291758_()))); + JsonObject jsonobject = advancementholder.value().serializeToJson(); +- list.add(DataProvider.saveStable(p_254020_, jsonobject, RecipeProvider.this.advancementPathProvider.json(advancementholder.id()))); + var saveAdvancementFuture = saveAdvancement(p_254020_, jsonobject, advancementholder, p_300066_); + if (saveAdvancementFuture != null) + list.add(saveAdvancementFuture); @@ -24,7 +24,7 @@ + */ + @Nullable + protected CompletableFuture saveAdvancement(CachedOutput output, JsonObject advancementJson, AdvancementHolder holder, FinishedRecipe finishedRecipe) { -+ return DataProvider.m_253162_(output, advancementJson, this.f_236356_.m_245731_(holder.f_291758_())); ++ return DataProvider.saveStable(output, advancementJson, this.advancementPathProvider.json(holder.id())); } - protected CompletableFuture m_253240_(CachedOutput p_253674_, AdvancementHolder p_297687_) { + protected CompletableFuture buildAdvancement(CachedOutput p_253674_, AdvancementHolder p_297687_) { diff --git a/patches/minecraft/net/minecraft/data/registries/RegistriesDatapackGenerator.java.patch b/patches/minecraft/net/minecraft/data/registries/RegistriesDatapackGenerator.java.patch index 6b9c2c0133..82a26a0768 100644 --- a/patches/minecraft/net/minecraft/data/registries/RegistriesDatapackGenerator.java.patch +++ b/patches/minecraft/net/minecraft/data/registries/RegistriesDatapackGenerator.java.patch @@ -9,9 +9,9 @@ + */ +@Deprecated public class RegistriesDatapackGenerator implements DataProvider { - private static final Logger f_254654_ = LogUtils.getLogger(); - private final PackOutput f_254743_; - private final CompletableFuture f_254747_; + private static final Logger LOGGER = LogUtils.getLogger(); + private final PackOutput output; + private final CompletableFuture registries; + private final java.util.function.Predicate namespacePredicate; + @Deprecated @@ -21,31 +21,31 @@ + + public RegistriesDatapackGenerator(PackOutput p_256643_, CompletableFuture p_255780_, @org.jetbrains.annotations.Nullable java.util.Set modIds) { + this.namespacePredicate = modIds == null ? namespace -> true : modIds::contains; - this.f_254747_ = p_255780_; - this.f_254743_ = p_256643_; + this.registries = p_255780_; + this.output = p_256643_; } + /** Forge: Call this to get the registry holder lookup provider that includes elements added via {@link net.minecraftforge.common.data.DatapackBuiltinEntriesProvider} */ + public CompletableFuture getRegistryProvider() { -+ return f_254747_; ++ return registries; + } + - public CompletableFuture m_213708_(CachedOutput p_255785_) { - return this.f_254747_.thenCompose((p_256533_) -> { - DynamicOps dynamicops = RegistryOps.m_255058_(JsonOps.INSTANCE, p_256533_); -- return CompletableFuture.allOf(RegistryDataLoader.f_243803_.stream().flatMap((p_256552_) -> { + public CompletableFuture run(CachedOutput p_255785_) { + return this.registries.thenCompose((p_256533_) -> { + DynamicOps dynamicops = RegistryOps.create(JsonOps.INSTANCE, p_256533_); +- return CompletableFuture.allOf(RegistryDataLoader.WORLDGEN_REGISTRIES.stream().flatMap((p_256552_) -> { + return CompletableFuture.allOf(net.minecraftforge.registries.DataPackRegistriesHooks.getDataPackRegistriesWithDimensions().flatMap((p_256552_) -> { - return this.m_254918_(p_255785_, p_256533_, dynamicops, p_256552_).stream(); + return this.dumpRegistryCap(p_255785_, p_256533_, dynamicops, p_256552_).stream(); }).toArray((p_255809_) -> { return new CompletableFuture[p_255809_]; @@ -42,8 +_,8 @@ - private Optional> m_254918_(CachedOutput p_256502_, HolderLookup.Provider p_256492_, DynamicOps p_256000_, RegistryDataLoader.RegistryData p_256449_) { - ResourceKey> resourcekey = p_256449_.f_243794_(); - return p_256492_.m_254861_(resourcekey).map((p_255847_) -> { -- PackOutput.PathProvider packoutput$pathprovider = this.f_254743_.m_245269_(PackOutput.Target.DATA_PACK, resourcekey.m_135782_().m_135815_()); -- return CompletableFuture.allOf(p_255847_.m_214062_().map((p_256105_) -> { -+ PackOutput.PathProvider packoutput$pathprovider = this.f_254743_.m_245269_(PackOutput.Target.DATA_PACK, net.minecraftforge.common.ForgeHooks.prefixNamespace(resourcekey.m_135782_())); -+ return CompletableFuture.allOf(p_255847_.m_214062_().filter(holder -> this.namespacePredicate.test(holder.m_205785_().m_135782_().m_135827_())).map((p_256105_) -> { - return m_255283_(packoutput$pathprovider.m_245731_(p_256105_.m_205785_().m_135782_()), p_256502_, p_256000_, p_256449_.f_244580_(), p_256105_.m_203334_()); + private Optional> dumpRegistryCap(CachedOutput p_256502_, HolderLookup.Provider p_256492_, DynamicOps p_256000_, RegistryDataLoader.RegistryData p_256449_) { + ResourceKey> resourcekey = p_256449_.key(); + return p_256492_.lookup(resourcekey).map((p_255847_) -> { +- PackOutput.PathProvider packoutput$pathprovider = this.output.createPathProvider(PackOutput.Target.DATA_PACK, resourcekey.location().getPath()); +- return CompletableFuture.allOf(p_255847_.listElements().map((p_256105_) -> { ++ PackOutput.PathProvider packoutput$pathprovider = this.output.createPathProvider(PackOutput.Target.DATA_PACK, net.minecraftforge.common.ForgeHooks.prefixNamespace(resourcekey.location())); ++ return CompletableFuture.allOf(p_255847_.listElements().filter(holder -> this.namespacePredicate.test(holder.key().location().getNamespace())).map((p_256105_) -> { + return dumpValue(packoutput$pathprovider.json(p_256105_.key().location()), p_256502_, p_256000_, p_256449_.elementCodec(), p_256105_.value()); }).toArray((p_256279_) -> { return new CompletableFuture[p_256279_]; diff --git a/patches/minecraft/net/minecraft/data/registries/VanillaRegistries.java.patch b/patches/minecraft/net/minecraft/data/registries/VanillaRegistries.java.patch index db99361b71..58f3cdee90 100644 --- a/patches/minecraft/net/minecraft/data/registries/VanillaRegistries.java.patch +++ b/patches/minecraft/net/minecraft/data/registries/VanillaRegistries.java.patch @@ -3,8 +3,8 @@ @@ -36,6 +_,7 @@ public class VanillaRegistries { - private static final RegistrySetBuilder f_254635_ = (new RegistrySetBuilder()).m_254916_(Registries.f_256787_, DimensionTypes::m_236473_).m_254916_(Registries.f_257003_, (RegistrySetBuilder.RegistryBootstrap)Carvers::m_254873_).m_254916_(Registries.f_256911_, (RegistrySetBuilder.RegistryBootstrap)FeatureUtils::m_254925_).m_254916_(Registries.f_256988_, PlacementUtils::m_255199_).m_254916_(Registries.f_256944_, Structures::m_255324_).m_254916_(Registries.f_256998_, StructureSets::m_255117_).m_254916_(Registries.f_257011_, ProcessorLists::m_254888_).m_254916_(Registries.f_256948_, Pools::m_255181_).m_254916_(Registries.f_256952_, BiomeData::m_272174_).m_254916_(Registries.f_273919_, MultiNoiseBiomeSourceParameterLists::m_274553_).m_254916_(Registries.f_256865_, NoiseData::m_236475_).m_254916_(Registries.f_257040_, NoiseRouterData::m_255288_).m_254916_(Registries.f_256932_, NoiseGeneratorSettings::m_254959_).m_254916_(Registries.f_256729_, WorldPresets::m_254897_).m_254916_(Registries.f_256724_, FlatLevelGeneratorPresets::m_254848_).m_254916_(Registries.f_256873_, ChatType::m_237021_).m_254916_(Registries.f_266063_, TrimPatterns::m_266400_).m_254916_(Registries.f_266076_, TrimMaterials::m_266479_).m_254916_(Registries.f_268580_, DamageTypes::m_269594_); -+ public static final List>> DATAPACK_REGISTRY_KEYS = f_254635_.getEntryKeys(); + private static final RegistrySetBuilder BUILDER = (new RegistrySetBuilder()).add(Registries.DIMENSION_TYPE, DimensionTypes::bootstrap).add(Registries.CONFIGURED_CARVER, (RegistrySetBuilder.RegistryBootstrap)Carvers::bootstrap).add(Registries.CONFIGURED_FEATURE, (RegistrySetBuilder.RegistryBootstrap)FeatureUtils::bootstrap).add(Registries.PLACED_FEATURE, PlacementUtils::bootstrap).add(Registries.STRUCTURE, Structures::bootstrap).add(Registries.STRUCTURE_SET, StructureSets::bootstrap).add(Registries.PROCESSOR_LIST, ProcessorLists::bootstrap).add(Registries.TEMPLATE_POOL, Pools::bootstrap).add(Registries.BIOME, BiomeData::bootstrap).add(Registries.MULTI_NOISE_BIOME_SOURCE_PARAMETER_LIST, MultiNoiseBiomeSourceParameterLists::bootstrap).add(Registries.NOISE, NoiseData::bootstrap).add(Registries.DENSITY_FUNCTION, NoiseRouterData::bootstrap).add(Registries.NOISE_SETTINGS, NoiseGeneratorSettings::bootstrap).add(Registries.WORLD_PRESET, WorldPresets::bootstrap).add(Registries.FLAT_LEVEL_GENERATOR_PRESET, FlatLevelGeneratorPresets::bootstrap).add(Registries.CHAT_TYPE, ChatType::bootstrap).add(Registries.TRIM_PATTERN, TrimPatterns::bootstrap).add(Registries.TRIM_MATERIAL, TrimMaterials::bootstrap).add(Registries.DAMAGE_TYPE, DamageTypes::bootstrap); ++ public static final List>> DATAPACK_REGISTRY_KEYS = BUILDER.getEntryKeys(); - private static void m_255148_(HolderLookup.Provider p_256242_) { - m_271867_(p_256242_.m_255025_(Registries.f_256988_), p_256242_.m_255025_(Registries.f_256952_)); + private static void validateThatAllBiomeFeaturesHaveBiomeFilter(HolderLookup.Provider p_256242_) { + validateThatAllBiomeFeaturesHaveBiomeFilter(p_256242_.lookupOrThrow(Registries.PLACED_FEATURE), p_256242_.lookupOrThrow(Registries.BIOME)); diff --git a/patches/minecraft/net/minecraft/data/tags/BannerPatternTagsProvider.java.patch b/patches/minecraft/net/minecraft/data/tags/BannerPatternTagsProvider.java.patch index 1ec59cd8f1..4e557533f8 100644 --- a/patches/minecraft/net/minecraft/data/tags/BannerPatternTagsProvider.java.patch +++ b/patches/minecraft/net/minecraft/data/tags/BannerPatternTagsProvider.java.patch @@ -7,10 +7,10 @@ + /** @deprecated Forge: Use the {@linkplain #BannerPatternTagsProvider(PackOutput, CompletableFuture, String, net.minecraftforge.common.data.ExistingFileHelper) mod id variant} */ + @Deprecated public BannerPatternTagsProvider(PackOutput p_256451_, CompletableFuture p_256420_) { - super(p_256451_, Registries.f_256969_, p_256420_); + super(p_256451_, Registries.BANNER_PATTERN, p_256420_); + } + public BannerPatternTagsProvider(PackOutput p_256451_, CompletableFuture p_256420_, String modId, @org.jetbrains.annotations.Nullable net.minecraftforge.common.data.ExistingFileHelper existingFileHelper) { -+ super(p_256451_, Registries.f_256969_, p_256420_, modId, existingFileHelper); ++ super(p_256451_, Registries.BANNER_PATTERN, p_256420_, modId, existingFileHelper); } - protected void m_6577_(HolderLookup.Provider p_255819_) { + protected void addTags(HolderLookup.Provider p_255819_) { diff --git a/patches/minecraft/net/minecraft/data/tags/BiomeTagsProvider.java.patch b/patches/minecraft/net/minecraft/data/tags/BiomeTagsProvider.java.patch index 659b734c24..445ddaeaad 100644 --- a/patches/minecraft/net/minecraft/data/tags/BiomeTagsProvider.java.patch +++ b/patches/minecraft/net/minecraft/data/tags/BiomeTagsProvider.java.patch @@ -7,10 +7,10 @@ + /** @deprecated Forge: Use the {@linkplain #BiomeTagsProvider(PackOutput, CompletableFuture, String, net.minecraftforge.common.data.ExistingFileHelper) mod id variant} */ + @Deprecated public BiomeTagsProvider(PackOutput p_255800_, CompletableFuture p_256205_) { - super(p_255800_, Registries.f_256952_, p_256205_); + super(p_255800_, Registries.BIOME, p_256205_); + } + public BiomeTagsProvider(PackOutput p_255800_, CompletableFuture p_256205_, String modId, @org.jetbrains.annotations.Nullable net.minecraftforge.common.data.ExistingFileHelper existingFileHelper) { -+ super(p_255800_, Registries.f_256952_, p_256205_, modId, existingFileHelper); ++ super(p_255800_, Registries.BIOME, p_256205_, modId, existingFileHelper); } - protected void m_6577_(HolderLookup.Provider p_256485_) { + protected void addTags(HolderLookup.Provider p_256485_) { diff --git a/patches/minecraft/net/minecraft/data/tags/CatVariantTagsProvider.java.patch b/patches/minecraft/net/minecraft/data/tags/CatVariantTagsProvider.java.patch index 01bd395e96..71447d76a2 100644 --- a/patches/minecraft/net/minecraft/data/tags/CatVariantTagsProvider.java.patch +++ b/patches/minecraft/net/minecraft/data/tags/CatVariantTagsProvider.java.patch @@ -7,10 +7,10 @@ + /** @deprecated Forge: Use the {@linkplain #CatVariantTagsProvider(PackOutput, CompletableFuture, String, net.minecraftforge.common.data.ExistingFileHelper) mod id variant} */ + @Deprecated public CatVariantTagsProvider(PackOutput p_256547_, CompletableFuture p_256090_) { - super(p_256547_, Registries.f_257006_, p_256090_); + super(p_256547_, Registries.CAT_VARIANT, p_256090_); + } + public CatVariantTagsProvider(PackOutput p_256547_, CompletableFuture p_256090_, String modId, @org.jetbrains.annotations.Nullable net.minecraftforge.common.data.ExistingFileHelper existingFileHelper) { -+ super(p_256547_, Registries.f_257006_, p_256090_, modId, existingFileHelper); ++ super(p_256547_, Registries.CAT_VARIANT, p_256090_, modId, existingFileHelper); } - protected void m_6577_(HolderLookup.Provider p_256078_) { + protected void addTags(HolderLookup.Provider p_256078_) { diff --git a/patches/minecraft/net/minecraft/data/tags/DamageTypeTagsProvider.java.patch b/patches/minecraft/net/minecraft/data/tags/DamageTypeTagsProvider.java.patch index bab9660607..655e071368 100644 --- a/patches/minecraft/net/minecraft/data/tags/DamageTypeTagsProvider.java.patch +++ b/patches/minecraft/net/minecraft/data/tags/DamageTypeTagsProvider.java.patch @@ -7,10 +7,10 @@ + /** @deprecated Forge: Use the {@linkplain #DamageTypeTagsProvider(PackOutput, CompletableFuture, String, net.minecraftforge.common.data.ExistingFileHelper) mod id variant} */ + @Deprecated public DamageTypeTagsProvider(PackOutput p_270719_, CompletableFuture p_270256_) { - super(p_270719_, Registries.f_268580_, p_270256_); + super(p_270719_, Registries.DAMAGE_TYPE, p_270256_); + } + public DamageTypeTagsProvider(PackOutput p_270719_, CompletableFuture p_270256_, String modId, @org.jetbrains.annotations.Nullable net.minecraftforge.common.data.ExistingFileHelper existingFileHelper) { -+ super(p_270719_, Registries.f_268580_, p_270256_, modId, existingFileHelper); ++ super(p_270719_, Registries.DAMAGE_TYPE, p_270256_, modId, existingFileHelper); } - protected void m_6577_(HolderLookup.Provider p_270108_) { + protected void addTags(HolderLookup.Provider p_270108_) { diff --git a/patches/minecraft/net/minecraft/data/tags/EntityTypeTagsProvider.java.patch b/patches/minecraft/net/minecraft/data/tags/EntityTypeTagsProvider.java.patch index 89e98efb3c..4d5ef567d8 100644 --- a/patches/minecraft/net/minecraft/data/tags/EntityTypeTagsProvider.java.patch +++ b/patches/minecraft/net/minecraft/data/tags/EntityTypeTagsProvider.java.patch @@ -10,10 +10,10 @@ + this(p_256095_, p_256572_, "vanilla", null); + } + public EntityTypeTagsProvider(PackOutput p_256095_, CompletableFuture p_256572_, String modId, @org.jetbrains.annotations.Nullable net.minecraftforge.common.data.ExistingFileHelper existingFileHelper) { - super(p_256095_, Registries.f_256939_, p_256572_, (p_256665_) -> { - return p_256665_.m_204041_().m_205785_(); + super(p_256095_, Registries.ENTITY_TYPE, p_256572_, (p_256665_) -> { + return p_256665_.builtInRegistryHolder().key(); - }); + }, modId, existingFileHelper); } - protected void m_6577_(HolderLookup.Provider p_255894_) { + protected void addTags(HolderLookup.Provider p_255894_) { diff --git a/patches/minecraft/net/minecraft/data/tags/FlatLevelGeneratorPresetTagsProvider.java.patch b/patches/minecraft/net/minecraft/data/tags/FlatLevelGeneratorPresetTagsProvider.java.patch index 78e508b444..5c9c2388eb 100644 --- a/patches/minecraft/net/minecraft/data/tags/FlatLevelGeneratorPresetTagsProvider.java.patch +++ b/patches/minecraft/net/minecraft/data/tags/FlatLevelGeneratorPresetTagsProvider.java.patch @@ -7,10 +7,10 @@ + /** @deprecated Forge: Use the {@linkplain #FlatLevelGeneratorPresetTagsProvider(PackOutput, CompletableFuture, String, net.minecraftforge.common.data.ExistingFileHelper) mod id variant} */ + @Deprecated public FlatLevelGeneratorPresetTagsProvider(PackOutput p_256604_, CompletableFuture p_255962_) { - super(p_256604_, Registries.f_256724_, p_255962_); + super(p_256604_, Registries.FLAT_LEVEL_GENERATOR_PRESET, p_255962_); + } + public FlatLevelGeneratorPresetTagsProvider(PackOutput p_256604_, CompletableFuture p_255962_, String modId, @org.jetbrains.annotations.Nullable net.minecraftforge.common.data.ExistingFileHelper existingFileHelper) { -+ super(p_256604_, Registries.f_256724_, p_255962_, modId, existingFileHelper); ++ super(p_256604_, Registries.FLAT_LEVEL_GENERATOR_PRESET, p_255962_, modId, existingFileHelper); } - protected void m_6577_(HolderLookup.Provider p_255741_) { + protected void addTags(HolderLookup.Provider p_255741_) { diff --git a/patches/minecraft/net/minecraft/data/tags/FluidTagsProvider.java.patch b/patches/minecraft/net/minecraft/data/tags/FluidTagsProvider.java.patch index f187d48538..8016283748 100644 --- a/patches/minecraft/net/minecraft/data/tags/FluidTagsProvider.java.patch +++ b/patches/minecraft/net/minecraft/data/tags/FluidTagsProvider.java.patch @@ -10,10 +10,10 @@ + this(p_255941_, p_256600_, "vanilla", null); + } + public FluidTagsProvider(PackOutput p_255941_, CompletableFuture p_256600_, String modId, @org.jetbrains.annotations.Nullable net.minecraftforge.common.data.ExistingFileHelper existingFileHelper) { - super(p_255941_, Registries.f_256808_, p_256600_, (p_256474_) -> { - return p_256474_.m_205069_().m_205785_(); + super(p_255941_, Registries.FLUID, p_256600_, (p_256474_) -> { + return p_256474_.builtInRegistryHolder().key(); - }); + }, modId, existingFileHelper); } - protected void m_6577_(HolderLookup.Provider p_256366_) { + protected void addTags(HolderLookup.Provider p_256366_) { diff --git a/patches/minecraft/net/minecraft/data/tags/GameEventTagsProvider.java.patch b/patches/minecraft/net/minecraft/data/tags/GameEventTagsProvider.java.patch index c778a97ad0..dd939fe11a 100644 --- a/patches/minecraft/net/minecraft/data/tags/GameEventTagsProvider.java.patch +++ b/patches/minecraft/net/minecraft/data/tags/GameEventTagsProvider.java.patch @@ -2,7 +2,7 @@ +++ b/net/minecraft/data/tags/GameEventTagsProvider.java @@ -13,10 +_,15 @@ @VisibleForTesting - static final GameEvent[] f_236425_ = new GameEvent[]{GameEvent.f_157791_, GameEvent.f_157792_, GameEvent.f_157793_, GameEvent.f_157794_, GameEvent.f_157795_, GameEvent.f_157796_, GameEvent.f_157797_, GameEvent.f_223702_, GameEvent.f_223703_, GameEvent.f_157802_, GameEvent.f_157803_, GameEvent.f_223704_, GameEvent.f_157806_, GameEvent.f_223705_, GameEvent.f_223706_, GameEvent.f_223707_, GameEvent.f_268533_, GameEvent.f_223708_, GameEvent.f_268500_, GameEvent.f_157810_, GameEvent.f_290971_, GameEvent.f_157811_, GameEvent.f_157812_, GameEvent.f_157816_, GameEvent.f_157769_, GameEvent.f_157770_, GameEvent.f_223696_, GameEvent.f_223697_, GameEvent.f_157772_, GameEvent.f_223699_, GameEvent.f_157776_, GameEvent.f_157777_, GameEvent.f_157778_, GameEvent.f_157781_, GameEvent.f_157784_, GameEvent.f_157785_, GameEvent.f_157786_, GameEvent.f_238175_, GameEvent.f_291275_}; + static final GameEvent[] VIBRATIONS_EXCEPT_FLAP = new GameEvent[]{GameEvent.BLOCK_ATTACH, GameEvent.BLOCK_CHANGE, GameEvent.BLOCK_CLOSE, GameEvent.BLOCK_DESTROY, GameEvent.BLOCK_DETACH, GameEvent.BLOCK_OPEN, GameEvent.BLOCK_PLACE, GameEvent.BLOCK_ACTIVATE, GameEvent.BLOCK_DEACTIVATE, GameEvent.CONTAINER_CLOSE, GameEvent.CONTAINER_OPEN, GameEvent.DRINK, GameEvent.EAT, GameEvent.ELYTRA_GLIDE, GameEvent.ENTITY_DAMAGE, GameEvent.ENTITY_DIE, GameEvent.ENTITY_DISMOUNT, GameEvent.ENTITY_INTERACT, GameEvent.ENTITY_MOUNT, GameEvent.ENTITY_PLACE, GameEvent.ENTITY_ACTION, GameEvent.EQUIP, GameEvent.EXPLODE, GameEvent.FLUID_PICKUP, GameEvent.FLUID_PLACE, GameEvent.HIT_GROUND, GameEvent.INSTRUMENT_PLAY, GameEvent.ITEM_INTERACT_FINISH, GameEvent.LIGHTNING_STRIKE, GameEvent.NOTE_BLOCK_PLAY, GameEvent.PRIME_FUSE, GameEvent.PROJECTILE_LAND, GameEvent.PROJECTILE_SHOOT, GameEvent.SHEAR, GameEvent.SPLASH, GameEvent.STEP, GameEvent.SWIM, GameEvent.TELEPORT, GameEvent.UNEQUIP}; + /** @deprecated Forge: Use the {@linkplain #GameEventTagsProvider(PackOutput, CompletableFuture, String, net.minecraftforge.common.data.ExistingFileHelper) mod id variant} */ + @Deprecated @@ -10,10 +10,10 @@ + this(p_256060_, p_255621_, "vanilla", null); + } + public GameEventTagsProvider(PackOutput p_256060_, CompletableFuture p_255621_, String modId, @org.jetbrains.annotations.Nullable net.minecraftforge.common.data.ExistingFileHelper existingFileHelper) { - super(p_256060_, Registries.f_256827_, p_255621_, (p_256368_) -> { - return p_256368_.m_204530_().m_205785_(); + super(p_256060_, Registries.GAME_EVENT, p_255621_, (p_256368_) -> { + return p_256368_.builtInRegistryHolder().key(); - }); + }, modId, existingFileHelper); } - protected void m_6577_(HolderLookup.Provider p_255981_) { + protected void addTags(HolderLookup.Provider p_255981_) { diff --git a/patches/minecraft/net/minecraft/data/tags/InstrumentTagsProvider.java.patch b/patches/minecraft/net/minecraft/data/tags/InstrumentTagsProvider.java.patch index 109a86e6f0..be1953cab3 100644 --- a/patches/minecraft/net/minecraft/data/tags/InstrumentTagsProvider.java.patch +++ b/patches/minecraft/net/minecraft/data/tags/InstrumentTagsProvider.java.patch @@ -7,10 +7,10 @@ + /** @deprecated Forge: Use the {@linkplain #InstrumentTagsProvider(PackOutput, CompletableFuture, String, net.minecraftforge.common.data.ExistingFileHelper) mod id variant} */ + @Deprecated public InstrumentTagsProvider(PackOutput p_256418_, CompletableFuture p_256038_) { - super(p_256418_, Registries.f_257010_, p_256038_); + super(p_256418_, Registries.INSTRUMENT, p_256038_); + } + public InstrumentTagsProvider(PackOutput p_256418_, CompletableFuture p_256038_, String modId, @org.jetbrains.annotations.Nullable net.minecraftforge.common.data.ExistingFileHelper existingFileHelper) { -+ super(p_256418_, Registries.f_257010_, p_256038_, modId, existingFileHelper); ++ super(p_256418_, Registries.INSTRUMENT, p_256038_, modId, existingFileHelper); } - protected void m_6577_(HolderLookup.Provider p_256291_) { + protected void addTags(HolderLookup.Provider p_256291_) { diff --git a/patches/minecraft/net/minecraft/data/tags/IntrinsicHolderTagsProvider.java.patch b/patches/minecraft/net/minecraft/data/tags/IntrinsicHolderTagsProvider.java.patch index 4d14bd33d1..4511bc0973 100644 --- a/patches/minecraft/net/minecraft/data/tags/IntrinsicHolderTagsProvider.java.patch +++ b/patches/minecraft/net/minecraft/data/tags/IntrinsicHolderTagsProvider.java.patch @@ -2,7 +2,7 @@ +++ b/net/minecraft/data/tags/IntrinsicHolderTagsProvider.java @@ -13,26 +_,40 @@ public abstract class IntrinsicHolderTagsProvider extends TagsProvider { - private final Function> f_254687_; + private final Function> keyExtractor; + /** + * @deprecated Forge: Use the {@linkplain #IntrinsicHolderTagsProvider(PackOutput, ResourceKey, CompletableFuture, Function, String, net.minecraftforge.common.data.ExistingFileHelper) mod id variant} @@ -14,7 +14,7 @@ + } + public IntrinsicHolderTagsProvider(PackOutput p_256164_, ResourceKey> p_256155_, CompletableFuture p_256488_, Function> p_256168_, String modId, @org.jetbrains.annotations.Nullable net.minecraftforge.common.data.ExistingFileHelper existingFileHelper) { + super(p_256164_, p_256155_, p_256488_, modId, existingFileHelper); - this.f_254687_ = p_256168_; + this.keyExtractor = p_256168_; } + /** @@ -27,35 +27,35 @@ + } + public IntrinsicHolderTagsProvider(PackOutput p_275304_, ResourceKey> p_275709_, CompletableFuture p_275227_, CompletableFuture> p_275311_, Function> p_275566_, String modId, @org.jetbrains.annotations.Nullable net.minecraftforge.common.data.ExistingFileHelper existingFileHelper) { + super(p_275304_, p_275709_, p_275227_, p_275311_, modId, existingFileHelper); - this.f_254687_ = p_275566_; + this.keyExtractor = p_275566_; } - protected IntrinsicHolderTagsProvider.IntrinsicTagAppender m_206424_(TagKey p_255730_) { - TagBuilder tagbuilder = this.m_236451_(p_255730_); -- return new IntrinsicHolderTagsProvider.IntrinsicTagAppender<>(tagbuilder, this.f_254687_); -+ return new IntrinsicHolderTagsProvider.IntrinsicTagAppender<>(tagbuilder, this.f_254687_, this.modId); + protected IntrinsicHolderTagsProvider.IntrinsicTagAppender tag(TagKey p_255730_) { + TagBuilder tagbuilder = this.getOrCreateRawBuilder(p_255730_); +- return new IntrinsicHolderTagsProvider.IntrinsicTagAppender<>(tagbuilder, this.keyExtractor); ++ return new IntrinsicHolderTagsProvider.IntrinsicTagAppender<>(tagbuilder, this.keyExtractor, this.modId); } - public static class IntrinsicTagAppender extends TagsProvider.TagAppender { + public static class IntrinsicTagAppender extends TagsProvider.TagAppender implements net.minecraftforge.common.extensions.IForgeIntrinsicHolderTagAppender { - private final Function> f_254707_; + private final Function> keyExtractor; - IntrinsicTagAppender(TagBuilder p_256108_, Function> p_256433_) { - super(p_256108_); + IntrinsicTagAppender(TagBuilder p_256108_, Function> p_256433_, String modId) { + super(p_256108_, modId); - this.f_254707_ = p_256433_; + this.keyExtractor = p_256433_; } @@ -50,6 +_,11 @@ - public final IntrinsicHolderTagsProvider.IntrinsicTagAppender m_255179_(T... p_255868_) { - Stream.of(p_255868_).map(this.f_254707_).forEach(this::m_255204_); + public final IntrinsicHolderTagsProvider.IntrinsicTagAppender add(T... p_255868_) { + Stream.of(p_255868_).map(this.keyExtractor).forEach(this::add); return this; + } + + @Override + public final ResourceKey getKey(T value) { -+ return this.f_254707_.apply(value); ++ return this.keyExtractor.apply(value); } } } diff --git a/patches/minecraft/net/minecraft/data/tags/ItemTagsProvider.java.patch b/patches/minecraft/net/minecraft/data/tags/ItemTagsProvider.java.patch index 6aa5780655..e96b2dbe0c 100644 --- a/patches/minecraft/net/minecraft/data/tags/ItemTagsProvider.java.patch +++ b/patches/minecraft/net/minecraft/data/tags/ItemTagsProvider.java.patch @@ -1,8 +1,8 @@ --- a/net/minecraft/data/tags/ItemTagsProvider.java +++ b/net/minecraft/data/tags/ItemTagsProvider.java @@ -16,14 +_,28 @@ - private final CompletableFuture> f_126528_; - private final Map, TagKey> f_273814_ = new HashMap<>(); + private final CompletableFuture> blockTags; + private final Map, TagKey> tagsToCopy = new HashMap<>(); + /** + * @deprecated Forge: Use the {@linkplain #ItemTagsProvider(PackOutput, CompletableFuture, CompletableFuture, String, net.minecraftforge.common.data.ExistingFileHelper) mod id variant} @@ -12,11 +12,11 @@ + this(p_275343_, p_275729_, p_275322_, "vanilla", null); + } + public ItemTagsProvider(PackOutput p_275343_, CompletableFuture p_275729_, CompletableFuture> p_275322_, String modId, @org.jetbrains.annotations.Nullable net.minecraftforge.common.data.ExistingFileHelper existingFileHelper) { - super(p_275343_, Registries.f_256913_, p_275729_, (p_255790_) -> { - return p_255790_.m_204114_().m_205785_(); + super(p_275343_, Registries.ITEM, p_275729_, (p_255790_) -> { + return p_255790_.builtInRegistryHolder().key(); - }); + }, modId, existingFileHelper); - this.f_126528_ = p_275322_; + this.blockTags = p_275322_; } + /** @@ -27,6 +27,6 @@ + this(p_275204_, p_275194_, p_275207_, p_275634_, "vanilla", null); + } + public ItemTagsProvider(PackOutput p_275204_, CompletableFuture p_275194_, CompletableFuture> p_275207_, CompletableFuture> p_275634_, String modId, @org.jetbrains.annotations.Nullable net.minecraftforge.common.data.ExistingFileHelper existingFileHelper) { - super(p_275204_, Registries.f_256913_, p_275194_, p_275207_, (p_274765_) -> { - return p_274765_.m_204114_().m_205785_(); + super(p_275204_, Registries.ITEM, p_275194_, p_275207_, (p_274765_) -> { + return p_274765_.builtInRegistryHolder().key(); }); diff --git a/patches/minecraft/net/minecraft/data/tags/PaintingVariantTagsProvider.java.patch b/patches/minecraft/net/minecraft/data/tags/PaintingVariantTagsProvider.java.patch index c46db8f6c6..f940879de1 100644 --- a/patches/minecraft/net/minecraft/data/tags/PaintingVariantTagsProvider.java.patch +++ b/patches/minecraft/net/minecraft/data/tags/PaintingVariantTagsProvider.java.patch @@ -7,10 +7,10 @@ + /** @deprecated Forge: Use the {@linkplain #PaintingVariantTagsProvider(PackOutput, CompletableFuture, String, net.minecraftforge.common.data.ExistingFileHelper) mod id variant} */ + @Deprecated public PaintingVariantTagsProvider(PackOutput p_255750_, CompletableFuture p_256184_) { - super(p_255750_, Registries.f_256836_, p_256184_); + super(p_255750_, Registries.PAINTING_VARIANT, p_256184_); + } + public PaintingVariantTagsProvider(PackOutput p_255750_, CompletableFuture p_256184_, String modId, @org.jetbrains.annotations.Nullable net.minecraftforge.common.data.ExistingFileHelper existingFileHelper) { -+ super(p_255750_, Registries.f_256836_, p_256184_, modId, existingFileHelper); ++ super(p_255750_, Registries.PAINTING_VARIANT, p_256184_, modId, existingFileHelper); } - protected void m_6577_(HolderLookup.Provider p_256017_) { + protected void addTags(HolderLookup.Provider p_256017_) { diff --git a/patches/minecraft/net/minecraft/data/tags/PoiTypeTagsProvider.java.patch b/patches/minecraft/net/minecraft/data/tags/PoiTypeTagsProvider.java.patch index 5567e63d66..229000879f 100644 --- a/patches/minecraft/net/minecraft/data/tags/PoiTypeTagsProvider.java.patch +++ b/patches/minecraft/net/minecraft/data/tags/PoiTypeTagsProvider.java.patch @@ -7,10 +7,10 @@ + /** @deprecated Forge: Use the {@linkplain #PoiTypeTagsProvider(PackOutput, CompletableFuture, String, net.minecraftforge.common.data.ExistingFileHelper) mod id variant} */ + @Deprecated public PoiTypeTagsProvider(PackOutput p_256012_, CompletableFuture p_256617_) { - super(p_256012_, Registries.f_256805_, p_256617_); + super(p_256012_, Registries.POINT_OF_INTEREST_TYPE, p_256617_); + } + public PoiTypeTagsProvider(PackOutput p_256012_, CompletableFuture p_256617_, String modId, @org.jetbrains.annotations.Nullable net.minecraftforge.common.data.ExistingFileHelper existingFileHelper) { -+ super(p_256012_, Registries.f_256805_, p_256617_, modId, existingFileHelper); ++ super(p_256012_, Registries.POINT_OF_INTEREST_TYPE, p_256617_, modId, existingFileHelper); } - protected void m_6577_(HolderLookup.Provider p_256206_) { + protected void addTags(HolderLookup.Provider p_256206_) { diff --git a/patches/minecraft/net/minecraft/data/tags/StructureTagsProvider.java.patch b/patches/minecraft/net/minecraft/data/tags/StructureTagsProvider.java.patch index eb26982c29..0a0b908a99 100644 --- a/patches/minecraft/net/minecraft/data/tags/StructureTagsProvider.java.patch +++ b/patches/minecraft/net/minecraft/data/tags/StructureTagsProvider.java.patch @@ -7,10 +7,10 @@ + /** @deprecated Forge: Use the {@linkplain #StructureTagsProvider(PackOutput, CompletableFuture, String, net.minecraftforge.common.data.ExistingFileHelper) mod id variant} */ + @Deprecated public StructureTagsProvider(PackOutput p_256522_, CompletableFuture p_256661_) { - super(p_256522_, Registries.f_256944_, p_256661_); + super(p_256522_, Registries.STRUCTURE, p_256661_); + } + public StructureTagsProvider(PackOutput p_256522_, CompletableFuture p_256661_, String modId, @org.jetbrains.annotations.Nullable net.minecraftforge.common.data.ExistingFileHelper existingFileHelper) { -+ super(p_256522_, Registries.f_256944_, p_256661_, modId, existingFileHelper); ++ super(p_256522_, Registries.STRUCTURE, p_256661_, modId, existingFileHelper); } - protected void m_6577_(HolderLookup.Provider p_256087_) { + protected void addTags(HolderLookup.Provider p_256087_) { diff --git a/patches/minecraft/net/minecraft/data/tags/TagsProvider.java.patch b/patches/minecraft/net/minecraft/data/tags/TagsProvider.java.patch index 4f5ce5ecd8..207d3ef380 100644 --- a/patches/minecraft/net/minecraft/data/tags/TagsProvider.java.patch +++ b/patches/minecraft/net/minecraft/data/tags/TagsProvider.java.patch @@ -1,9 +1,9 @@ --- a/net/minecraft/data/tags/TagsProvider.java +++ b/net/minecraft/data/tags/TagsProvider.java @@ -36,20 +_,48 @@ - private final CompletableFuture> f_273855_; - protected final ResourceKey> f_254716_; - protected final Map f_126543_ = Maps.newLinkedHashMap(); + private final CompletableFuture> parentProvider; + protected final ResourceKey> registryKey; + protected final Map builders = Maps.newLinkedHashMap(); + protected final String modId; + @org.jetbrains.annotations.Nullable + protected final net.minecraftforge.common.data.ExistingFileHelper existingFileHelper; @@ -14,11 +14,11 @@ + * @deprecated Forge: Use the {@linkplain #TagsProvider(PackOutput, ResourceKey, CompletableFuture, String, net.minecraftforge.common.data.ExistingFileHelper) mod id variant} + */ protected TagsProvider(PackOutput p_256596_, ResourceKey> p_255886_, CompletableFuture p_256513_) { -- this(p_256596_, p_255886_, p_256513_, CompletableFuture.completedFuture(TagsProvider.TagLookup.m_274566_())); +- this(p_256596_, p_255886_, p_256513_, CompletableFuture.completedFuture(TagsProvider.TagLookup.empty())); + this(p_256596_, p_255886_, p_256513_, "vanilla", null); + } + protected TagsProvider(PackOutput p_256596_, ResourceKey> p_255886_, CompletableFuture p_256513_, String modId, @org.jetbrains.annotations.Nullable net.minecraftforge.common.data.ExistingFileHelper existingFileHelper) { -+ this(p_256596_, p_255886_, p_256513_, CompletableFuture.completedFuture(TagsProvider.TagLookup.m_274566_()), modId, existingFileHelper); ++ this(p_256596_, p_255886_, p_256513_, CompletableFuture.completedFuture(TagsProvider.TagLookup.empty()), modId, existingFileHelper); } + /** @@ -29,62 +29,62 @@ + this(p_275432_, p_275476_, p_275222_, p_275565_, "vanilla", null); + } + protected TagsProvider(PackOutput p_275432_, ResourceKey> p_275476_, CompletableFuture p_275222_, CompletableFuture> p_275565_, String modId, @org.jetbrains.annotations.Nullable net.minecraftforge.common.data.ExistingFileHelper existingFileHelper) { - this.f_236439_ = p_275432_.m_245269_(PackOutput.Target.DATA_PACK, TagManager.m_203918_(p_275476_)); - this.f_254716_ = p_275476_; - this.f_273855_ = p_275565_; - this.f_275752_ = p_275222_; + this.pathProvider = p_275432_.createPathProvider(PackOutput.Target.DATA_PACK, TagManager.getTagDir(p_275476_)); + this.registryKey = p_275476_; + this.parentProvider = p_275565_; + this.lookupProvider = p_275222_; + this.modId = modId; + this.existingFileHelper = existingFileHelper; -+ this.resourceType = new net.minecraftforge.common.data.ExistingFileHelper.ResourceType(net.minecraft.server.packs.PackType.SERVER_DATA, ".json", TagManager.m_203918_(p_275476_)); -+ this.elementResourceType = new net.minecraftforge.common.data.ExistingFileHelper.ResourceType(net.minecraft.server.packs.PackType.SERVER_DATA, ".json", net.minecraftforge.common.ForgeHooks.prefixNamespace(p_275476_.m_135782_())); ++ this.resourceType = new net.minecraftforge.common.data.ExistingFileHelper.ResourceType(net.minecraft.server.packs.PackType.SERVER_DATA, ".json", TagManager.getTagDir(p_275476_)); ++ this.elementResourceType = new net.minecraftforge.common.data.ExistingFileHelper.ResourceType(net.minecraft.server.packs.PackType.SERVER_DATA, ".json", net.minecraftforge.common.ForgeHooks.prefixNamespace(p_275476_.location())); + } + + // Forge: Allow customizing the path for a given tag or returning null + @org.jetbrains.annotations.Nullable + protected Path getPath(ResourceLocation id) { -+ return this.f_236439_.m_245731_(id); ++ return this.pathProvider.json(id); } - public String m_6055_() { -- return "Tags for " + this.f_254716_.m_135782_(); -+ return "Tags for " + this.f_254716_.m_135782_() + " mod id " + this.modId; + public String getName() { +- return "Tags for " + this.registryKey.location(); ++ return "Tags for " + this.registryKey.location() + " mod id " + this.modId; } - protected abstract void m_6577_(HolderLookup.Provider p_256380_); + protected abstract void addTags(HolderLookup.Provider p_256380_); @@ -64,7 +_,13 @@ return new CombinedData<>(p_274778_, p_274779_); }).thenCompose((p_274774_) -> { -- HolderLookup.RegistryLookup registrylookup = p_274774_.f_273893_.m_255025_(this.f_254716_); -+ HolderLookup.RegistryLookup registrylookup = p_274774_.f_273893_.m_254861_(this.f_254716_).orElseThrow(() -> { +- HolderLookup.RegistryLookup registrylookup = p_274774_.contents.lookupOrThrow(this.registryKey); ++ HolderLookup.RegistryLookup registrylookup = p_274774_.contents.lookup(this.registryKey).orElseThrow(() -> { + // FORGE: Throw a more descriptive error message if this is a Forge registry without tags enabled -+ if (net.minecraftforge.registries.RegistryManager.ACTIVE.getRegistry(this.f_254716_) != null) { -+ return new IllegalStateException("Forge registry " + this.f_254716_.m_135782_() + " does not have support for tags"); ++ if (net.minecraftforge.registries.RegistryManager.ACTIVE.getRegistry(this.registryKey) != null) { ++ return new IllegalStateException("Forge registry " + this.registryKey.location() + " does not have support for tags"); + } -+ return new IllegalStateException("Registry " + this.f_254716_.m_135782_() + " not found"); ++ return new IllegalStateException("Registry " + this.registryKey.location() + " not found"); + }); Predicate predicate = (p_255496_) -> { - return registrylookup.m_254902_(ResourceKey.m_135785_(this.f_254716_, p_255496_)).isPresent(); + return registrylookup.get(ResourceKey.create(this.registryKey, p_255496_)).isPresent(); }; @@ -75,14 +_,16 @@ ResourceLocation resourcelocation = p_255499_.getKey(); TagBuilder tagbuilder = p_255499_.getValue(); - List list = tagbuilder.m_215904_(); + List list = tagbuilder.build(); - List list1 = list.stream().filter((p_274771_) -> { + List list1 = java.util.stream.Stream.concat(list.stream(), tagbuilder.getRemoveEntries()).filter((p_274771_) -> { - return !p_274771_.m_215940_(predicate, predicate1); + return !p_274771_.verifyIfPresent(predicate, predicate1); - }).toList(); + }).filter(this::missing).toList(); // Forge: Add validation via existing resources if (!list1.isEmpty()) { throw new IllegalArgumentException(String.format(Locale.ROOT, "Couldn't define tag %s as it is missing following references: %s", resourcelocation, list1.stream().map(Objects::toString).collect(Collectors.joining(",")))); } else { -- JsonElement jsonelement = TagFile.f_215958_.encodeStart(JsonOps.INSTANCE, new TagFile(list, false)).getOrThrow(false, f_126541_::error); -- Path path = this.f_236439_.m_245731_(resourcelocation); +- JsonElement jsonelement = TagFile.CODEC.encodeStart(JsonOps.INSTANCE, new TagFile(list, false)).getOrThrow(false, LOGGER::error); +- Path path = this.pathProvider.json(resourcelocation); + var removed = tagbuilder.getRemoveEntries().toList(); -+ JsonElement jsonelement = TagFile.f_215958_.encodeStart(JsonOps.INSTANCE, new TagFile(list, tagbuilder.isReplace(), removed)).getOrThrow(false, f_126541_::error); ++ JsonElement jsonelement = TagFile.CODEC.encodeStart(JsonOps.INSTANCE, new TagFile(list, tagbuilder.isReplace(), removed)).getOrThrow(false, LOGGER::error); + Path path = this.getPath(resourcelocation); + if (path == null) return CompletableFuture.completedFuture(null); // Forge: Allow running this data provider without writing it. Recipe provider needs valid tags. - return DataProvider.m_253162_(p_253684_, jsonelement, path); + return DataProvider.saveStable(p_253684_, jsonelement, path); } }).toArray((p_253442_) -> { @@ -91,13 +_,25 @@ @@ -100,18 +100,18 @@ + return false; + } + - protected TagsProvider.TagAppender m_206424_(TagKey p_206425_) { - TagBuilder tagbuilder = this.m_236451_(p_206425_); + protected TagsProvider.TagAppender tag(TagKey p_206425_) { + TagBuilder tagbuilder = this.getOrCreateRawBuilder(p_206425_); - return new TagsProvider.TagAppender<>(tagbuilder); + return new TagsProvider.TagAppender<>(tagbuilder, modId); } - protected TagBuilder m_236451_(TagKey p_236452_) { - return this.f_126543_.computeIfAbsent(p_236452_.f_203868_(), (p_236442_) -> { + protected TagBuilder getOrCreateRawBuilder(TagKey p_236452_) { + return this.builders.computeIfAbsent(p_236452_.location(), (p_236442_) -> { + if (existingFileHelper != null) { + existingFileHelper.trackGenerated(p_236442_, resourceType); + } - return TagBuilder.m_215899_(); + return TagBuilder.create(); }); } @@ -118,11 +_,13 @@ @@ -120,30 +120,30 @@ - public static class TagAppender { + public static class TagAppender implements net.minecraftforge.common.extensions.IForgeTagAppender { - private final TagBuilder f_126568_; + private final TagBuilder builder; + private final String modId; - protected TagAppender(TagBuilder p_256426_) { -- this.f_126568_ = p_256426_; +- this.builder = p_256426_; + protected TagAppender(TagBuilder p_236454_, String modId) { -+ this.f_126568_ = p_236454_; ++ this.builder = p_236454_; + this.modId = modId; } - public final TagsProvider.TagAppender m_255204_(ResourceKey p_256138_) { + public final TagsProvider.TagAppender add(ResourceKey p_256138_) { @@ -152,6 +_,19 @@ - public TagsProvider.TagAppender m_176841_(ResourceLocation p_176842_) { - this.f_126568_.m_215909_(p_176842_); + public TagsProvider.TagAppender addOptionalTag(ResourceLocation p_176842_) { + this.builder.addOptionalTag(p_176842_); return this; + } + + public TagsProvider.TagAppender add(TagEntry tag) { -+ f_126568_.m_215902_(tag); ++ builder.add(tag); + return this; + } + + public TagBuilder getInternalBuilder() { -+ return f_126568_; ++ return builder; + } + + public String getModID() { diff --git a/patches/minecraft/net/minecraft/data/tags/WorldPresetTagsProvider.java.patch b/patches/minecraft/net/minecraft/data/tags/WorldPresetTagsProvider.java.patch index 30c4f0e41a..aa2aaa4726 100644 --- a/patches/minecraft/net/minecraft/data/tags/WorldPresetTagsProvider.java.patch +++ b/patches/minecraft/net/minecraft/data/tags/WorldPresetTagsProvider.java.patch @@ -7,10 +7,10 @@ + /** @deprecated Forge: Use the {@linkplain #WorldPresetTagsProvider(PackOutput, CompletableFuture, String, net.minecraftforge.common.data.ExistingFileHelper) mod id variant} */ + @Deprecated public WorldPresetTagsProvider(PackOutput p_255701_, CompletableFuture p_255974_) { - super(p_255701_, Registries.f_256729_, p_255974_); + super(p_255701_, Registries.WORLD_PRESET, p_255974_); + } + public WorldPresetTagsProvider(PackOutput p_255701_, CompletableFuture p_255974_, String modId, @org.jetbrains.annotations.Nullable net.minecraftforge.common.data.ExistingFileHelper existingFileHelper) { -+ super(p_255701_, Registries.f_256729_, p_255974_, modId, existingFileHelper); ++ super(p_255701_, Registries.WORLD_PRESET, p_255974_, modId, existingFileHelper); } - protected void m_6577_(HolderLookup.Provider p_255734_) { + protected void addTags(HolderLookup.Provider p_255734_) { diff --git a/patches/minecraft/net/minecraft/data/worldgen/BootstapContext.java.patch b/patches/minecraft/net/minecraft/data/worldgen/BootstapContext.java.patch index 91323556e2..4c3238222a 100644 --- a/patches/minecraft/net/minecraft/data/worldgen/BootstapContext.java.patch +++ b/patches/minecraft/net/minecraft/data/worldgen/BootstapContext.java.patch @@ -3,7 +3,7 @@ @@ -14,4 +_,6 @@ } - HolderGetter m_255420_(ResourceKey> p_256410_); + HolderGetter lookup(ResourceKey> p_256410_); + + default java.util.Optional> registryLookup(ResourceKey> registry) { return java.util.Optional.empty(); } } diff --git a/patches/minecraft/net/minecraft/data/worldgen/biome/OverworldBiomes.java.patch b/patches/minecraft/net/minecraft/data/worldgen/biome/OverworldBiomes.java.patch index 85b7549a5e..d432af16f8 100644 --- a/patches/minecraft/net/minecraft/data/worldgen/biome/OverworldBiomes.java.patch +++ b/patches/minecraft/net/minecraft/data/worldgen/biome/OverworldBiomes.java.patch @@ -6,6 +6,6 @@ public class OverworldBiomes { + // TODO: getAdditionalOverworldBiomes, likely in this class. -C + - protected static final int f_194836_ = 4159204; - protected static final int f_194837_ = 329011; - private static final int f_194838_ = 12638463; + protected static final int NORMAL_WATER_COLOR = 4159204; + protected static final int NORMAL_WATER_FOG_COLOR = 329011; + private static final int OVERWORLD_FOG_COLOR = 12638463; diff --git a/patches/minecraft/net/minecraft/gametest/framework/GameTest.java.patch b/patches/minecraft/net/minecraft/gametest/framework/GameTest.java.patch index f5a2e8e461..930678b0e1 100644 --- a/patches/minecraft/net/minecraft/gametest/framework/GameTest.java.patch +++ b/patches/minecraft/net/minecraft/gametest/framework/GameTest.java.patch @@ -2,13 +2,13 @@ +++ b/net/minecraft/gametest/framework/GameTest.java @@ -16,6 +_,11 @@ - boolean m_177045_() default true; + boolean required() default true; + /** + * The namespace of where to grab the structure from, generally a mod id. + */ + String templateNamespace() default ""; + - String m_177046_() default ""; + String template() default ""; - long m_177047_() default 0L; + long setupTicks() default 0L; diff --git a/patches/minecraft/net/minecraft/gametest/framework/GameTestRegistry.java.patch b/patches/minecraft/net/minecraft/gametest/framework/GameTestRegistry.java.patch index c665054b71..cbb525f184 100644 --- a/patches/minecraft/net/minecraft/gametest/framework/GameTestRegistry.java.patch +++ b/patches/minecraft/net/minecraft/gametest/framework/GameTestRegistry.java.patch @@ -1,18 +1,18 @@ --- a/net/minecraft/gametest/framework/GameTestRegistry.java +++ b/net/minecraft/gametest/framework/GameTestRegistry.java @@ -25,21 +_,33 @@ - private static final Map> f_177498_ = Maps.newHashMap(); - private static final Collection f_177499_ = Sets.newHashSet(); + private static final Map> AFTER_BATCH_FUNCTIONS = Maps.newHashMap(); + private static final Collection LAST_FAILED_TESTS = Sets.newHashSet(); + /** @deprecated Forge: Use {@link net.minecraftforge.event.RegisterGameTestsEvent RegisterGameTestsEvent} to register game tests */ + @Deprecated - public static void m_177501_(Class p_177502_) { - Arrays.stream(p_177502_.getDeclaredMethods()).forEach(GameTestRegistry::m_177503_); + public static void register(Class p_177502_) { + Arrays.stream(p_177502_.getDeclaredMethods()).forEach(GameTestRegistry::register); } + /** @deprecated Forge: Use {@link net.minecraftforge.event.RegisterGameTestsEvent RegisterGameTestsEvent} to register game tests */ + @Deprecated - public static void m_177503_(Method p_177504_) { + public static void register(Method p_177504_) { + register(p_177504_, java.util.Set.of()); + } + /** @deprecated Forge: Use {@link net.minecraftforge.event.RegisterGameTestsEvent RegisterGameTestsEvent} to register game tests */ @@ -22,23 +22,23 @@ GameTest gametest = p_177504_.getAnnotation(GameTest.class); - if (gametest != null) { + if (gametest != null && (allowedNamespaces.isEmpty() || allowedNamespaces.contains(net.minecraftforge.gametest.ForgeGameTestHooks.getTemplateNamespace(p_177504_)))) { - f_177495_.add(m_177515_(p_177504_)); - f_177496_.add(s); + TEST_FUNCTIONS.add(turnMethodIntoTestFunction(p_177504_)); + TEST_CLASS_NAMES.add(s); } GameTestGenerator gametestgenerator = p_177504_.getAnnotation(GameTestGenerator.class); if (gametestgenerator != null) { -- f_177495_.addAll(m_177513_(p_177504_)); -+ Collection testFunctions = new java.util.ArrayList<>(m_177513_(p_177504_)); +- TEST_FUNCTIONS.addAll(useTestGeneratorMethod(p_177504_)); ++ Collection testFunctions = new java.util.ArrayList<>(useTestGeneratorMethod(p_177504_)); + if (!allowedNamespaces.isEmpty()) -+ testFunctions.removeIf(t -> !allowedNamespaces.contains(new net.minecraft.resources.ResourceLocation(t.m_128078_()).m_135827_())); -+ f_177495_.addAll(testFunctions); - f_177496_.add(s); ++ testFunctions.removeIf(t -> !allowedNamespaces.contains(new net.minecraft.resources.ResourceLocation(t.getStructureName()).getNamespace())); ++ TEST_FUNCTIONS.addAll(testFunctions); + TEST_CLASS_NAMES.add(s); } @@ -104,7 +_,9 @@ - private static Collection m_177513_(Method p_177514_) { + private static Collection useTestGeneratorMethod(Method p_177514_) { try { - Object object = p_177514_.getDeclaringClass().newInstance(); + Object object = null; @@ -52,15 +52,15 @@ String s = p_177516_.getDeclaringClass().getSimpleName(); String s1 = s.toLowerCase(); - String s2 = s1 + "." + p_177516_.getName().toLowerCase(); -- String s3 = gametest.m_177046_().isEmpty() ? s2 : s1 + "." + gametest.m_177046_(); +- String s3 = gametest.template().isEmpty() ? s2 : s1 + "." + gametest.template(); + boolean prefixGameTestTemplate = net.minecraftforge.gametest.ForgeGameTestHooks.prefixGameTestTemplate(p_177516_); + String s2 = (prefixGameTestTemplate ? s1 + "." : "") + p_177516_.getName().toLowerCase(); -+ String s3 = net.minecraftforge.gametest.ForgeGameTestHooks.getTemplateNamespace(p_177516_) + ":" + (gametest.m_177046_().isEmpty() ? s2 : (prefixGameTestTemplate ? s1 + "." : "") + gametest.m_177046_()); - String s4 = gametest.m_177043_(); - Rotation rotation = StructureUtils.m_127835_(gametest.m_177044_()); - return new TestFunction(s4, s2, s3, rotation, gametest.m_177042_(), gametest.m_177047_(), gametest.m_177045_(), gametest.m_177049_(), gametest.m_177048_(), (Consumer)m_177519_(p_177516_)); ++ String s3 = net.minecraftforge.gametest.ForgeGameTestHooks.getTemplateNamespace(p_177516_) + ":" + (gametest.template().isEmpty() ? s2 : (prefixGameTestTemplate ? s1 + "." : "") + gametest.template()); + String s4 = gametest.batch(); + Rotation rotation = StructureUtils.getRotationForRotationSteps(gametest.rotationSteps()); + return new TestFunction(s4, s2, s3, rotation, gametest.timeoutTicks(), gametest.setupTicks(), gametest.required(), gametest.requiredSuccesses(), gametest.attempts(), (Consumer)turnMethodIntoConsumer(p_177516_)); @@ -125,7 +_,9 @@ - private static Consumer m_177519_(Method p_177520_) { + private static Consumer turnMethodIntoConsumer(Method p_177520_) { return (p_177512_) -> { try { - Object object = p_177520_.getDeclaringClass().newInstance(); diff --git a/patches/minecraft/net/minecraft/gametest/framework/GameTestServer.java.patch b/patches/minecraft/net/minecraft/gametest/framework/GameTestServer.java.patch index 97aead4c2b..6f2954dad9 100644 --- a/patches/minecraft/net/minecraft/gametest/framework/GameTestServer.java.patch +++ b/patches/minecraft/net/minecraft/gametest/framework/GameTestServer.java.patch @@ -1,18 +1,18 @@ --- a/net/minecraft/gametest/framework/GameTestServer.java +++ b/net/minecraft/gametest/framework/GameTestServer.java @@ -105,13 +_,14 @@ - public boolean m_7038_() { - this.m_129823_(new PlayerList(this, this.m_247573_(), this.f_129745_, 1) { + public boolean initServer() { + this.setPlayerList(new PlayerList(this, this.registries(), this.playerDataStorage, 1) { }); + if (!net.minecraftforge.server.ServerLifecycleHooks.handleServerAboutToStart(this)) return false; - this.m_130006_(); - ServerLevel serverlevel = this.m_129783_(); - serverlevel.m_8733_(this.f_177588_, 0.0F); + this.loadLevel(); + ServerLevel serverlevel = this.overworld(); + serverlevel.setDefaultSpawnPos(this.spawnPos, 0.0F); int i = 20000000; - serverlevel.m_8606_(20000000, 20000000, false, false); - f_177585_.info("Started game test server"); + serverlevel.setWeatherParameters(20000000, 20000000, false, false); + LOGGER.info("Started game test server"); - return true; + return net.minecraftforge.server.ServerLifecycleHooks.handleServerStarting(this); } - public void m_5705_(BooleanSupplier p_177619_) { + public void tickServer(BooleanSupplier p_177619_) { diff --git a/patches/minecraft/net/minecraft/gametest/framework/StructureUtils.java.patch b/patches/minecraft/net/minecraft/gametest/framework/StructureUtils.java.patch index 9a97357bbc..2539ae0a98 100644 --- a/patches/minecraft/net/minecraft/gametest/framework/StructureUtils.java.patch +++ b/patches/minecraft/net/minecraft/gametest/framework/StructureUtils.java.patch @@ -5,7 +5,7 @@ return optional.get(); } else { - String s = p_127881_ + ".snbt"; -+ String s = new ResourceLocation(p_127881_).m_135815_() + ".snbt"; - Path path = Paths.get(f_127833_, s); - CompoundTag compoundtag = m_127902_(path); ++ String s = new ResourceLocation(p_127881_).getPath() + ".snbt"; + Path path = Paths.get(testStructuresDir, s); + CompoundTag compoundtag = tryLoadStructure(path); if (compoundtag == null) { diff --git a/patches/minecraft/net/minecraft/locale/Language.java.patch b/patches/minecraft/net/minecraft/locale/Language.java.patch index fb3658a74f..cc17717e82 100644 --- a/patches/minecraft/net/minecraft/locale/Language.java.patch +++ b/patches/minecraft/net/minecraft/locale/Language.java.patch @@ -3,15 +3,15 @@ @@ -34,7 +_,8 @@ ImmutableMap.Builder builder = ImmutableMap.builder(); BiConsumer biconsumer = builder::put; - m_280428_(biconsumer, "/assets/minecraft/lang/en_us.json"); + parseTranslations(biconsumer, "/assets/minecraft/lang/en_us.json"); - final Map map = builder.build(); + final Map map = new java.util.HashMap<>(builder.build()); + net.minecraftforge.server.LanguageHook.captureLanguageMap(map); return new Language() { - public String m_118919_(String p_128127_, String p_265421_) { + public String getOrDefault(String p_128127_, String p_265421_) { return map.getOrDefault(p_128127_, p_265421_); @@ -55,6 +_,11 @@ - }, Style.f_131099_).isPresent(); + }, Style.EMPTY).isPresent(); }; } + @@ -23,12 +23,12 @@ } @@ -84,6 +_,9 @@ - public static void m_128114_(Language p_128115_) { - f_128104_ = p_128115_; + public static void inject(Language p_128115_) { + instance = p_128115_; } + + // FORGE START + public Map getLanguageData() { return ImmutableMap.of(); } - public String m_6834_(String p_128111_) { - return this.m_118919_(p_128111_, p_128111_); + public String getOrDefault(String p_128111_) { + return this.getOrDefault(p_128111_, p_128111_); diff --git a/patches/minecraft/net/minecraft/nbt/CompoundTag.java.patch b/patches/minecraft/net/minecraft/nbt/CompoundTag.java.patch index edcf429537..20a6b9ade8 100644 --- a/patches/minecraft/net/minecraft/nbt/CompoundTag.java.patch +++ b/patches/minecraft/net/minecraft/nbt/CompoundTag.java.patch @@ -1,32 +1,32 @@ --- a/net/minecraft/nbt/CompoundTag.java +++ b/net/minecraft/nbt/CompoundTag.java @@ -41,6 +_,7 @@ - while((b0 = CompoundTag.m_128420_(p_128485_, p_128487_)) != 0) { - String s = CompoundTag.m_128432_(p_128485_, p_128487_); - p_128487_.m_128926_((long)(28 + 2 * s.length())); -+ p_128487_.m_128926_(4); //Forge: 4 extra bytes for the object allocation. - Tag tag = CompoundTag.m_128413_(TagTypes.m_129397_(b0), s, p_128485_, p_128486_ + 1, p_128487_); + while((b0 = CompoundTag.readNamedTagType(p_128485_, p_128487_)) != 0) { + String s = CompoundTag.readNamedTagName(p_128485_, p_128487_); + p_128487_.accountBytes((long)(28 + 2 * s.length())); ++ p_128487_.accountBytes(4); //Forge: 4 extra bytes for the object allocation. + Tag tag = CompoundTag.readNamedTagData(TagTypes.getType(b0), s, p_128485_, p_128486_ + 1, p_128487_); if (map.put(s, tag) == null) { - p_128487_.m_128926_(36L); + p_128487_.accountBytes(36L); @@ -167,6 +_,7 @@ @Nullable - public Tag m_128365_(String p_128366_, Tag p_128367_) { + public Tag put(String p_128366_, Tag p_128367_) { + if (p_128367_ == null) throw new IllegalArgumentException("Invalid null NBT value with key " + p_128366_); - return this.f_128329_.put(p_128366_, p_128367_); + return this.tags.put(p_128366_, p_128367_); } @@ -459,11 +_,12 @@ } - static byte m_128420_(DataInput p_128421_, NbtAccounter p_128422_) throws IOException { -+ p_128422_.m_128926_(2); + static byte readNamedTagType(DataInput p_128421_, NbtAccounter p_128422_) throws IOException { ++ p_128422_.accountBytes(2); return p_128421_.readByte(); } - static String m_128432_(DataInput p_128433_, NbtAccounter p_128434_) throws IOException { + static String readNamedTagName(DataInput p_128433_, NbtAccounter p_128434_) throws IOException { - return p_128433_.readUTF(); + return p_128434_.readUTF(p_128433_.readUTF()); } - static Tag m_128413_(TagType p_128414_, String p_128415_, DataInput p_128416_, int p_128417_, NbtAccounter p_128418_) { + static Tag readNamedTagData(TagType p_128414_, String p_128415_, DataInput p_128416_, int p_128417_, NbtAccounter p_128418_) { diff --git a/patches/minecraft/net/minecraft/nbt/NbtAccounter.java.patch b/patches/minecraft/net/minecraft/nbt/NbtAccounter.java.patch index 3f2d145e16..4fbf443209 100644 --- a/patches/minecraft/net/minecraft/nbt/NbtAccounter.java.patch +++ b/patches/minecraft/net/minecraft/nbt/NbtAccounter.java.patch @@ -16,7 +16,7 @@ + * This will accurately count the correct byte length to encode this string, plus the 2 bytes for it's length prefix. + */ + public String readUTF(String data) { -+ m_128926_(2); //Header length ++ accountBytes(2); //Header length + if (data == null) + return data; + @@ -29,11 +29,11 @@ + else if (c > 0x07FF) utflen += 3; + else utflen += 2; + } -+ m_128926_(utflen); ++ accountBytes(utflen); + + return data; + } + @VisibleForTesting - public long m_263225_() { - return this.f_128919_; + public long getUsage() { + return this.usage; diff --git a/patches/minecraft/net/minecraft/nbt/NbtIo.java.patch b/patches/minecraft/net/minecraft/nbt/NbtIo.java.patch index 42b4c2e708..8c9aade930 100644 --- a/patches/minecraft/net/minecraft/nbt/NbtIo.java.patch +++ b/patches/minecraft/net/minecraft/nbt/NbtIo.java.patch @@ -2,15 +2,15 @@ +++ b/net/minecraft/nbt/NbtIo.java @@ -154,10 +_,12 @@ - private static Tag m_128930_(DataInput p_128931_, int p_128932_, NbtAccounter p_128933_) throws IOException { + private static Tag readUnnamedTag(DataInput p_128931_, int p_128932_, NbtAccounter p_128933_) throws IOException { byte b0 = p_128931_.readByte(); -+ p_128933_.m_128926_(1); // Forge: Count everything! ++ p_128933_.accountBytes(1); // Forge: Count everything! if (b0 == 0) { - return EndTag.f_128534_; + return EndTag.INSTANCE; } else { -- StringTag.m_197563_(p_128931_); +- StringTag.skipString(p_128931_); + p_128933_.readUTF(p_128931_.readUTF()); //Forge: Count this string. -+ p_128933_.m_128926_(4); //Forge: 4 extra bytes for the object allocation. - return m_292742_(p_128931_, p_128932_, p_128933_, b0); ++ p_128933_.accountBytes(4); //Forge: 4 extra bytes for the object allocation. + return readTagSafe(p_128931_, p_128932_, p_128933_, b0); } } diff --git a/patches/minecraft/net/minecraft/nbt/StringTag.java.patch b/patches/minecraft/net/minecraft/nbt/StringTag.java.patch index 7a76b7cbdd..641218a2c9 100644 --- a/patches/minecraft/net/minecraft/nbt/StringTag.java.patch +++ b/patches/minecraft/net/minecraft/nbt/StringTag.java.patch @@ -1,11 +1,11 @@ --- a/net/minecraft/nbt/StringTag.java +++ b/net/minecraft/nbt/StringTag.java @@ -13,7 +_,7 @@ - public StringTag m_7300_(DataInput p_129315_, int p_129316_, NbtAccounter p_129317_) throws IOException { - p_129317_.m_128926_(36L); + public StringTag load(DataInput p_129315_, int p_129316_, NbtAccounter p_129317_) throws IOException { + p_129317_.accountBytes(36L); String s = p_129315_.readUTF(); -- p_129317_.m_128926_((long)(2 * s.length())); +- p_129317_.accountBytes((long)(2 * s.length())); + p_129317_.readUTF(s); - return StringTag.m_129297_(s); + return StringTag.valueOf(s); } diff --git a/patches/minecraft/net/minecraft/network/CompressionEncoder.java.patch b/patches/minecraft/net/minecraft/network/CompressionEncoder.java.patch index b317b385ce..14238714c4 100644 --- a/patches/minecraft/net/minecraft/network/CompressionEncoder.java.patch +++ b/patches/minecraft/net/minecraft/network/CompressionEncoder.java.patch @@ -1,24 +1,24 @@ --- a/net/minecraft/network/CompressionEncoder.java +++ b/net/minecraft/network/CompressionEncoder.java @@ -9,6 +_,8 @@ - private final byte[] f_129444_ = new byte[8192]; - private final Deflater f_129445_; - private int f_129446_; + private final byte[] encodeBuf = new byte[8192]; + private final Deflater deflater; + private int threshold; + private static final boolean DISABLE_PACKET_DEBUG = Boolean.parseBoolean(System.getProperty("forge.disablePacketCompressionDebug", "false")); + private static final org.apache.logging.log4j.Logger LOGGER = org.apache.logging.log4j.LogManager.getLogger(); public CompressionEncoder(int p_129448_) { - this.f_129446_ = p_129448_; + this.threshold = p_129448_; @@ -21,6 +_,12 @@ - VarInt.m_293803_(p_129454_, 0); + VarInt.write(p_129454_, 0); p_129454_.writeBytes(p_129453_); } else { -+ if (!DISABLE_PACKET_DEBUG && i > net.minecraft.network.CompressionDecoder.f_182672_) { ++ if (!DISABLE_PACKET_DEBUG && i > net.minecraft.network.CompressionDecoder.MAXIMUM_UNCOMPRESSED_LENGTH) { + p_129453_.markReaderIndex(); -+ LOGGER.error("Attempted to send packet over maximum protocol size: {} > {}\nData:\n{}", i, net.minecraft.network.CompressionDecoder.f_182672_, ++ LOGGER.error("Attempted to send packet over maximum protocol size: {} > {}\nData:\n{}", i, net.minecraft.network.CompressionDecoder.MAXIMUM_UNCOMPRESSED_LENGTH, + net.minecraftforge.common.util.HexDumper.dump(p_129453_)); + p_129453_.resetReaderIndex(); + } byte[] abyte = new byte[i]; p_129453_.readBytes(abyte); - VarInt.m_293803_(p_129454_, abyte.length); + VarInt.write(p_129454_, abyte.length); diff --git a/patches/minecraft/net/minecraft/network/Connection.java.patch b/patches/minecraft/net/minecraft/network/Connection.java.patch index d7680f29e4..36ce622918 100644 --- a/patches/minecraft/net/minecraft/network/Connection.java.patch +++ b/patches/minecraft/net/minecraft/network/Connection.java.patch @@ -1,64 +1,64 @@ --- a/net/minecraft/network/Connection.java +++ b/net/minecraft/network/Connection.java @@ -102,15 +_,19 @@ - private volatile Component f_290021_; + private volatile Component delayedDisconnect; @Nullable - BandwidthDebugMonitor f_291520_; + BandwidthDebugMonitor bandwidthDebugMonitor; + private java.util.function.Consumer activationHandler; + private final net.minecraftforge.common.util.PacketLogger packetLogger; public Connection(PacketFlow p_129482_) { - this.f_129466_ = p_129482_; + this.receiving = p_129482_; + this.packetLogger = new net.minecraftforge.common.util.PacketLogger(this); } public void channelActive(ChannelHandlerContext p_129525_) throws Exception { super.channelActive(p_129525_); - this.f_129468_ = p_129525_.channel(); - this.f_129469_ = this.f_129468_.remoteAddress(); + this.channel = p_129525_.channel(); + this.address = this.channel.remoteAddress(); + if (activationHandler != null) activationHandler.accept(this); - if (this.f_290021_ != null) { - this.m_129507_(this.f_290021_); + if (this.delayedDisconnect != null) { + this.disconnect(this.delayedDisconnect); } @@ -169,6 +_,7 @@ } else { - if (packetlistener.m_294638_(p_129488_)) { + if (packetlistener.shouldHandleMessage(p_129488_)) { try { + packetLogger.recv(p_129488_); - m_129517_(p_129488_, packetlistener); + genericsFtw(p_129488_, packetlistener); } catch (RunningOnDifferentThreadException runningondifferentthreadexception) { } catch (RejectedExecutionException rejectedexecutionexception) { @@ -237,7 +_,8 @@ - this.m_295864_((p_296374_) -> { - p_296374_.m_294993_(p_297789_); - this.m_129505_(p_298739_); -- p_296374_.m_129520_(new ClientIntentionPacket(SharedConstants.m_183709_().m_132495_(), p_300730_, p_300598_, p_297789_), (PacketSendListener)null, true); + this.runOnceConnected((p_296374_) -> { + p_296374_.setClientboundProtocolAfterHandshake(p_297789_); + this.setListener(p_298739_); +- p_296374_.sendPacket(new ClientIntentionPacket(SharedConstants.getCurrentVersion().getProtocolVersion(), p_300730_, p_300598_, p_297789_), (PacketSendListener)null, true); + // TODO: Change this to be a immediately sent login custom payload packet? -+ p_296374_.m_129520_(new ClientIntentionPacket(SharedConstants.m_183709_().m_132495_(), net.minecraftforge.network.NetworkContext.enhanceHostName(p_300730_), p_300598_, p_297789_), (PacketSendListener)null, true); ++ p_296374_.sendPacket(new ClientIntentionPacket(SharedConstants.getCurrentVersion().getProtocolVersion(), net.minecraftforge.network.NetworkContext.enhanceHostName(p_300730_), p_300598_, p_297789_), (PacketSendListener)null, true); }); } @@ -289,6 +_,7 @@ - private void m_243087_(Packet p_243260_, @Nullable PacketSendListener p_243290_, boolean p_299937_) { - ChannelFuture channelfuture = p_299937_ ? this.f_129468_.writeAndFlush(p_243260_) : this.f_129468_.write(p_243260_); + private void doSendPacket(Packet p_243260_, @Nullable PacketSendListener p_243290_, boolean p_299937_) { + ChannelFuture channelfuture = p_299937_ ? this.channel.writeAndFlush(p_243260_) : this.channel.write(p_243260_); + channelfuture.addListener(f -> packetLogger.send(p_243260_)); if (p_243290_ != null) { channelfuture.addListener((p_243167_) -> { if (p_243167_.isSuccess()) { @@ -395,7 +_,7 @@ - if (this.f_129469_ == null) { + if (this.address == null) { return "local"; } else { -- return p_298740_ ? this.f_129469_.toString() : "IP hidden"; -+ return p_298740_ ? net.minecraftforge.network.DualStackUtils.getAddressString(this.f_129469_) : "IP hidden"; +- return p_298740_ ? this.address.toString() : "IP hidden"; ++ return p_298740_ ? net.minecraftforge.network.DualStackUtils.getAddressString(this.address) : "IP hidden"; } } @@ -435,6 +_,8 @@ } - public static ChannelFuture m_290025_(InetSocketAddress p_290034_, boolean p_290035_, final Connection p_290031_) { + public static ChannelFuture connect(InetSocketAddress p_290034_, boolean p_290035_, final Connection p_290031_) { + net.minecraftforge.network.DualStackUtils.checkIPv6(p_290034_.getAddress()); + p_290031_.activationHandler = net.minecraftforge.network.NetworkRegistry::onConnectionStart; Class oclass; @@ -66,24 +66,24 @@ if (Epoll.isAvailable() && p_290035_) { @@ -485,6 +_,7 @@ - public static Connection m_129493_(SocketAddress p_129494_) { + public static Connection connectToLocalServer(SocketAddress p_129494_) { final Connection connection = new Connection(PacketFlow.CLIENTBOUND); + connection.activationHandler = net.minecraftforge.network.NetworkRegistry::onConnectionStart; - (new Bootstrap()).group(f_129464_.get()).handler(new ChannelInitializer() { + (new Bootstrap()).group(LOCAL_WORKER_GROUP.get()).handler(new ChannelInitializer() { protected void initChannel(Channel p_129557_) { - Connection.m_294111_(p_129557_); + Connection.setInitialProtocolAttributes(p_129557_); @@ -581,6 +_,14 @@ - public float m_129543_() { - return this.f_129477_; + public float getAverageSentPackets() { + return this.averageSentPackets; + } + + public Channel channel() { -+ return this.f_129468_; ++ return this.channel; + } + + public ConnectionProtocol getProtocol() { -+ return this.f_129468_.attr(m_295397_(m_178314_())).get().m_295191_(); ++ return this.channel.attr(getProtocolKey(getSending())).get().protocol(); } - public void m_292855_(SampleLogger p_300126_) { + public void setBandwidthLogger(SampleLogger p_300126_) { diff --git a/patches/minecraft/net/minecraft/network/ConnectionProtocol.java.patch b/patches/minecraft/net/minecraft/network/ConnectionProtocol.java.patch index a35835d948..ada915a94b 100644 --- a/patches/minecraft/net/minecraft/network/ConnectionProtocol.java.patch +++ b/patches/minecraft/net/minecraft/network/ConnectionProtocol.java.patch @@ -4,236 +4,236 @@ import org.slf4j.Logger; public enum ConnectionProtocol { -- HANDSHAKING("handshake", m_129600_().m_129625_(PacketFlow.CLIENTBOUND, new ConnectionProtocol.PacketSet()).m_129625_(PacketFlow.SERVERBOUND, (new ConnectionProtocol.PacketSet()).m_178330_(ClientIntentionPacket.class, ClientIntentionPacket::new))), -- PLAY("play", m_129600_().m_129625_(PacketFlow.CLIENTBOUND, (new ConnectionProtocol.PacketSet()).m_264543_(ClientboundBundlePacket.class, ClientboundBundlePacket::new).m_178330_(ClientboundAddEntityPacket.class, ClientboundAddEntityPacket::new).m_178330_(ClientboundAddExperienceOrbPacket.class, ClientboundAddExperienceOrbPacket::new).m_178330_(ClientboundAnimatePacket.class, ClientboundAnimatePacket::new).m_178330_(ClientboundAwardStatsPacket.class, ClientboundAwardStatsPacket::new).m_178330_(ClientboundBlockChangedAckPacket.class, ClientboundBlockChangedAckPacket::new).m_178330_(ClientboundBlockDestructionPacket.class, ClientboundBlockDestructionPacket::new).m_178330_(ClientboundBlockEntityDataPacket.class, ClientboundBlockEntityDataPacket::new).m_178330_(ClientboundBlockEventPacket.class, ClientboundBlockEventPacket::new).m_178330_(ClientboundBlockUpdatePacket.class, ClientboundBlockUpdatePacket::new).m_178330_(ClientboundBossEventPacket.class, ClientboundBossEventPacket::new).m_178330_(ClientboundChangeDifficultyPacket.class, ClientboundChangeDifficultyPacket::new).m_178330_(ClientboundChunkBatchFinishedPacket.class, ClientboundChunkBatchFinishedPacket::new).m_178330_(ClientboundChunkBatchStartPacket.class, ClientboundChunkBatchStartPacket::new).m_178330_(ClientboundChunksBiomesPacket.class, ClientboundChunksBiomesPacket::new).m_178330_(ClientboundClearTitlesPacket.class, ClientboundClearTitlesPacket::new).m_178330_(ClientboundCommandSuggestionsPacket.class, ClientboundCommandSuggestionsPacket::new).m_178330_(ClientboundCommandsPacket.class, ClientboundCommandsPacket::new).m_178330_(ClientboundContainerClosePacket.class, ClientboundContainerClosePacket::new).m_178330_(ClientboundContainerSetContentPacket.class, ClientboundContainerSetContentPacket::new).m_178330_(ClientboundContainerSetDataPacket.class, ClientboundContainerSetDataPacket::new).m_178330_(ClientboundContainerSetSlotPacket.class, ClientboundContainerSetSlotPacket::new).m_178330_(ClientboundCooldownPacket.class, ClientboundCooldownPacket::new).m_178330_(ClientboundCustomChatCompletionsPacket.class, ClientboundCustomChatCompletionsPacket::new).m_178330_(ClientboundCustomPayloadPacket.class, ClientboundCustomPayloadPacket::new).m_178330_(ClientboundDamageEventPacket.class, ClientboundDamageEventPacket::new).m_178330_(ClientboundDeleteChatPacket.class, ClientboundDeleteChatPacket::new).m_178330_(ClientboundDisconnectPacket.class, ClientboundDisconnectPacket::new).m_178330_(ClientboundDisguisedChatPacket.class, ClientboundDisguisedChatPacket::new).m_178330_(ClientboundEntityEventPacket.class, ClientboundEntityEventPacket::new).m_178330_(ClientboundExplodePacket.class, ClientboundExplodePacket::new).m_178330_(ClientboundForgetLevelChunkPacket.class, ClientboundForgetLevelChunkPacket::new).m_178330_(ClientboundGameEventPacket.class, ClientboundGameEventPacket::new).m_178330_(ClientboundHorseScreenOpenPacket.class, ClientboundHorseScreenOpenPacket::new).m_178330_(ClientboundHurtAnimationPacket.class, ClientboundHurtAnimationPacket::new).m_178330_(ClientboundInitializeBorderPacket.class, ClientboundInitializeBorderPacket::new).m_178330_(ClientboundKeepAlivePacket.class, ClientboundKeepAlivePacket::new).m_178330_(ClientboundLevelChunkWithLightPacket.class, ClientboundLevelChunkWithLightPacket::new).m_178330_(ClientboundLevelEventPacket.class, ClientboundLevelEventPacket::new).m_178330_(ClientboundLevelParticlesPacket.class, ClientboundLevelParticlesPacket::new).m_178330_(ClientboundLightUpdatePacket.class, ClientboundLightUpdatePacket::new).m_178330_(ClientboundLoginPacket.class, ClientboundLoginPacket::new).m_178330_(ClientboundMapItemDataPacket.class, ClientboundMapItemDataPacket::new).m_178330_(ClientboundMerchantOffersPacket.class, ClientboundMerchantOffersPacket::new).m_178330_(ClientboundMoveEntityPacket.Pos.class, ClientboundMoveEntityPacket.Pos::m_179000_).m_178330_(ClientboundMoveEntityPacket.PosRot.class, ClientboundMoveEntityPacket.PosRot::m_179002_).m_178330_(ClientboundMoveEntityPacket.Rot.class, ClientboundMoveEntityPacket.Rot::m_179004_).m_178330_(ClientboundMoveVehiclePacket.class, ClientboundMoveVehiclePacket::new).m_178330_(ClientboundOpenBookPacket.class, ClientboundOpenBookPacket::new).m_178330_(ClientboundOpenScreenPacket.class, ClientboundOpenScreenPacket::new).m_178330_(ClientboundOpenSignEditorPacket.class, ClientboundOpenSignEditorPacket::new).m_178330_(ClientboundPingPacket.class, ClientboundPingPacket::new).m_178330_(ClientboundPongResponsePacket.class, ClientboundPongResponsePacket::new).m_178330_(ClientboundPlaceGhostRecipePacket.class, ClientboundPlaceGhostRecipePacket::new).m_178330_(ClientboundPlayerAbilitiesPacket.class, ClientboundPlayerAbilitiesPacket::new).m_178330_(ClientboundPlayerChatPacket.class, ClientboundPlayerChatPacket::new).m_178330_(ClientboundPlayerCombatEndPacket.class, ClientboundPlayerCombatEndPacket::new).m_178330_(ClientboundPlayerCombatEnterPacket.class, ClientboundPlayerCombatEnterPacket::new).m_178330_(ClientboundPlayerCombatKillPacket.class, ClientboundPlayerCombatKillPacket::new).m_178330_(ClientboundPlayerInfoRemovePacket.class, ClientboundPlayerInfoRemovePacket::new).m_178330_(ClientboundPlayerInfoUpdatePacket.class, ClientboundPlayerInfoUpdatePacket::new).m_178330_(ClientboundPlayerLookAtPacket.class, ClientboundPlayerLookAtPacket::new).m_178330_(ClientboundPlayerPositionPacket.class, ClientboundPlayerPositionPacket::new).m_178330_(ClientboundRecipePacket.class, ClientboundRecipePacket::new).m_178330_(ClientboundRemoveEntitiesPacket.class, ClientboundRemoveEntitiesPacket::new).m_178330_(ClientboundRemoveMobEffectPacket.class, ClientboundRemoveMobEffectPacket::new).m_178330_(ClientboundResourcePackPacket.class, ClientboundResourcePackPacket::new).m_178330_(ClientboundRespawnPacket.class, ClientboundRespawnPacket::new).m_178330_(ClientboundRotateHeadPacket.class, ClientboundRotateHeadPacket::new).m_178330_(ClientboundSectionBlocksUpdatePacket.class, ClientboundSectionBlocksUpdatePacket::new).m_178330_(ClientboundSelectAdvancementsTabPacket.class, ClientboundSelectAdvancementsTabPacket::new).m_178330_(ClientboundServerDataPacket.class, ClientboundServerDataPacket::new).m_178330_(ClientboundSetActionBarTextPacket.class, ClientboundSetActionBarTextPacket::new).m_178330_(ClientboundSetBorderCenterPacket.class, ClientboundSetBorderCenterPacket::new).m_178330_(ClientboundSetBorderLerpSizePacket.class, ClientboundSetBorderLerpSizePacket::new).m_178330_(ClientboundSetBorderSizePacket.class, ClientboundSetBorderSizePacket::new).m_178330_(ClientboundSetBorderWarningDelayPacket.class, ClientboundSetBorderWarningDelayPacket::new).m_178330_(ClientboundSetBorderWarningDistancePacket.class, ClientboundSetBorderWarningDistancePacket::new).m_178330_(ClientboundSetCameraPacket.class, ClientboundSetCameraPacket::new).m_178330_(ClientboundSetCarriedItemPacket.class, ClientboundSetCarriedItemPacket::new).m_178330_(ClientboundSetChunkCacheCenterPacket.class, ClientboundSetChunkCacheCenterPacket::new).m_178330_(ClientboundSetChunkCacheRadiusPacket.class, ClientboundSetChunkCacheRadiusPacket::new).m_178330_(ClientboundSetDefaultSpawnPositionPacket.class, ClientboundSetDefaultSpawnPositionPacket::new).m_178330_(ClientboundSetDisplayObjectivePacket.class, ClientboundSetDisplayObjectivePacket::new).m_178330_(ClientboundSetEntityDataPacket.class, ClientboundSetEntityDataPacket::new).m_178330_(ClientboundSetEntityLinkPacket.class, ClientboundSetEntityLinkPacket::new).m_178330_(ClientboundSetEntityMotionPacket.class, ClientboundSetEntityMotionPacket::new).m_178330_(ClientboundSetEquipmentPacket.class, ClientboundSetEquipmentPacket::new).m_178330_(ClientboundSetExperiencePacket.class, ClientboundSetExperiencePacket::new).m_178330_(ClientboundSetHealthPacket.class, ClientboundSetHealthPacket::new).m_178330_(ClientboundSetObjectivePacket.class, ClientboundSetObjectivePacket::new).m_178330_(ClientboundSetPassengersPacket.class, ClientboundSetPassengersPacket::new).m_178330_(ClientboundSetPlayerTeamPacket.class, ClientboundSetPlayerTeamPacket::new).m_178330_(ClientboundSetScorePacket.class, ClientboundSetScorePacket::new).m_178330_(ClientboundSetSimulationDistancePacket.class, ClientboundSetSimulationDistancePacket::new).m_178330_(ClientboundSetSubtitleTextPacket.class, ClientboundSetSubtitleTextPacket::new).m_178330_(ClientboundSetTimePacket.class, ClientboundSetTimePacket::new).m_178330_(ClientboundSetTitleTextPacket.class, ClientboundSetTitleTextPacket::new).m_178330_(ClientboundSetTitlesAnimationPacket.class, ClientboundSetTitlesAnimationPacket::new).m_178330_(ClientboundSoundEntityPacket.class, ClientboundSoundEntityPacket::new).m_178330_(ClientboundSoundPacket.class, ClientboundSoundPacket::new).m_178330_(ClientboundStartConfigurationPacket.class, ClientboundStartConfigurationPacket::new).m_178330_(ClientboundStopSoundPacket.class, ClientboundStopSoundPacket::new).m_178330_(ClientboundSystemChatPacket.class, ClientboundSystemChatPacket::new).m_178330_(ClientboundTabListPacket.class, ClientboundTabListPacket::new).m_178330_(ClientboundTagQueryPacket.class, ClientboundTagQueryPacket::new).m_178330_(ClientboundTakeItemEntityPacket.class, ClientboundTakeItemEntityPacket::new).m_178330_(ClientboundTeleportEntityPacket.class, ClientboundTeleportEntityPacket::new).m_178330_(ClientboundUpdateAdvancementsPacket.class, ClientboundUpdateAdvancementsPacket::new).m_178330_(ClientboundUpdateAttributesPacket.class, ClientboundUpdateAttributesPacket::new).m_178330_(ClientboundUpdateMobEffectPacket.class, ClientboundUpdateMobEffectPacket::new).m_178330_(ClientboundUpdateRecipesPacket.class, ClientboundUpdateRecipesPacket::new).m_178330_(ClientboundUpdateTagsPacket.class, ClientboundUpdateTagsPacket::new)).m_129625_(PacketFlow.SERVERBOUND, (new ConnectionProtocol.PacketSet()).m_178330_(ServerboundAcceptTeleportationPacket.class, ServerboundAcceptTeleportationPacket::new).m_178330_(ServerboundBlockEntityTagQuery.class, ServerboundBlockEntityTagQuery::new).m_178330_(ServerboundChangeDifficultyPacket.class, ServerboundChangeDifficultyPacket::new).m_178330_(ServerboundChatAckPacket.class, ServerboundChatAckPacket::new).m_178330_(ServerboundChatCommandPacket.class, ServerboundChatCommandPacket::new).m_178330_(ServerboundChatPacket.class, ServerboundChatPacket::new).m_178330_(ServerboundChatSessionUpdatePacket.class, ServerboundChatSessionUpdatePacket::new).m_178330_(ServerboundChunkBatchReceivedPacket.class, ServerboundChunkBatchReceivedPacket::new).m_178330_(ServerboundClientCommandPacket.class, ServerboundClientCommandPacket::new).m_178330_(ServerboundClientInformationPacket.class, ServerboundClientInformationPacket::new).m_178330_(ServerboundCommandSuggestionPacket.class, ServerboundCommandSuggestionPacket::new).m_178330_(ServerboundConfigurationAcknowledgedPacket.class, ServerboundConfigurationAcknowledgedPacket::new).m_178330_(ServerboundContainerButtonClickPacket.class, ServerboundContainerButtonClickPacket::new).m_178330_(ServerboundContainerClickPacket.class, ServerboundContainerClickPacket::new).m_178330_(ServerboundContainerClosePacket.class, ServerboundContainerClosePacket::new).m_178330_(ServerboundCustomPayloadPacket.class, ServerboundCustomPayloadPacket::new).m_178330_(ServerboundEditBookPacket.class, ServerboundEditBookPacket::new).m_178330_(ServerboundEntityTagQuery.class, ServerboundEntityTagQuery::new).m_178330_(ServerboundInteractPacket.class, ServerboundInteractPacket::new).m_178330_(ServerboundJigsawGeneratePacket.class, ServerboundJigsawGeneratePacket::new).m_178330_(ServerboundKeepAlivePacket.class, ServerboundKeepAlivePacket::new).m_178330_(ServerboundLockDifficultyPacket.class, ServerboundLockDifficultyPacket::new).m_178330_(ServerboundMovePlayerPacket.Pos.class, ServerboundMovePlayerPacket.Pos::m_179685_).m_178330_(ServerboundMovePlayerPacket.PosRot.class, ServerboundMovePlayerPacket.PosRot::m_179687_).m_178330_(ServerboundMovePlayerPacket.Rot.class, ServerboundMovePlayerPacket.Rot::m_179689_).m_178330_(ServerboundMovePlayerPacket.StatusOnly.class, ServerboundMovePlayerPacket.StatusOnly::m_179697_).m_178330_(ServerboundMoveVehiclePacket.class, ServerboundMoveVehiclePacket::new).m_178330_(ServerboundPaddleBoatPacket.class, ServerboundPaddleBoatPacket::new).m_178330_(ServerboundPickItemPacket.class, ServerboundPickItemPacket::new).m_178330_(ServerboundPingRequestPacket.class, ServerboundPingRequestPacket::new).m_178330_(ServerboundPlaceRecipePacket.class, ServerboundPlaceRecipePacket::new).m_178330_(ServerboundPlayerAbilitiesPacket.class, ServerboundPlayerAbilitiesPacket::new).m_178330_(ServerboundPlayerActionPacket.class, ServerboundPlayerActionPacket::new).m_178330_(ServerboundPlayerCommandPacket.class, ServerboundPlayerCommandPacket::new).m_178330_(ServerboundPlayerInputPacket.class, ServerboundPlayerInputPacket::new).m_178330_(ServerboundPongPacket.class, ServerboundPongPacket::new).m_178330_(ServerboundRecipeBookChangeSettingsPacket.class, ServerboundRecipeBookChangeSettingsPacket::new).m_178330_(ServerboundRecipeBookSeenRecipePacket.class, ServerboundRecipeBookSeenRecipePacket::new).m_178330_(ServerboundRenameItemPacket.class, ServerboundRenameItemPacket::new).m_178330_(ServerboundResourcePackPacket.class, ServerboundResourcePackPacket::new).m_178330_(ServerboundSeenAdvancementsPacket.class, ServerboundSeenAdvancementsPacket::new).m_178330_(ServerboundSelectTradePacket.class, ServerboundSelectTradePacket::new).m_178330_(ServerboundSetBeaconPacket.class, ServerboundSetBeaconPacket::new).m_178330_(ServerboundSetCarriedItemPacket.class, ServerboundSetCarriedItemPacket::new).m_178330_(ServerboundSetCommandBlockPacket.class, ServerboundSetCommandBlockPacket::new).m_178330_(ServerboundSetCommandMinecartPacket.class, ServerboundSetCommandMinecartPacket::new).m_178330_(ServerboundSetCreativeModeSlotPacket.class, ServerboundSetCreativeModeSlotPacket::new).m_178330_(ServerboundSetJigsawBlockPacket.class, ServerboundSetJigsawBlockPacket::new).m_178330_(ServerboundSetStructureBlockPacket.class, ServerboundSetStructureBlockPacket::new).m_178330_(ServerboundSignUpdatePacket.class, ServerboundSignUpdatePacket::new).m_178330_(ServerboundSwingPacket.class, ServerboundSwingPacket::new).m_178330_(ServerboundTeleportToEntityPacket.class, ServerboundTeleportToEntityPacket::new).m_178330_(ServerboundUseItemOnPacket.class, ServerboundUseItemOnPacket::new).m_178330_(ServerboundUseItemPacket.class, ServerboundUseItemPacket::new))), -- STATUS("status", m_129600_().m_129625_(PacketFlow.SERVERBOUND, (new ConnectionProtocol.PacketSet()).m_178330_(ServerboundStatusRequestPacket.class, ServerboundStatusRequestPacket::new).m_178330_(ServerboundPingRequestPacket.class, ServerboundPingRequestPacket::new)).m_129625_(PacketFlow.CLIENTBOUND, (new ConnectionProtocol.PacketSet()).m_178330_(ClientboundStatusResponsePacket.class, ClientboundStatusResponsePacket::new).m_178330_(ClientboundPongResponsePacket.class, ClientboundPongResponsePacket::new))), -- LOGIN("login", m_129600_().m_129625_(PacketFlow.CLIENTBOUND, (new ConnectionProtocol.PacketSet()).m_178330_(ClientboundLoginDisconnectPacket.class, ClientboundLoginDisconnectPacket::new).m_178330_(ClientboundHelloPacket.class, ClientboundHelloPacket::new).m_178330_(ClientboundGameProfilePacket.class, ClientboundGameProfilePacket::new).m_178330_(ClientboundLoginCompressionPacket.class, ClientboundLoginCompressionPacket::new).m_178330_(ClientboundCustomQueryPacket.class, ClientboundCustomQueryPacket::new)).m_129625_(PacketFlow.SERVERBOUND, (new ConnectionProtocol.PacketSet()).m_178330_(ServerboundHelloPacket.class, ServerboundHelloPacket::new).m_178330_(ServerboundKeyPacket.class, ServerboundKeyPacket::new).m_178330_(ServerboundCustomQueryAnswerPacket.class, ServerboundCustomQueryAnswerPacket::m_294367_).m_178330_(ServerboundLoginAcknowledgedPacket.class, ServerboundLoginAcknowledgedPacket::new))), -- CONFIGURATION("configuration", m_129600_().m_129625_(PacketFlow.CLIENTBOUND, (new ConnectionProtocol.PacketSet()).m_178330_(ClientboundCustomPayloadPacket.class, ClientboundCustomPayloadPacket::new).m_178330_(ClientboundDisconnectPacket.class, ClientboundDisconnectPacket::new).m_178330_(ClientboundFinishConfigurationPacket.class, ClientboundFinishConfigurationPacket::new).m_178330_(ClientboundKeepAlivePacket.class, ClientboundKeepAlivePacket::new).m_178330_(ClientboundPingPacket.class, ClientboundPingPacket::new).m_178330_(ClientboundRegistryDataPacket.class, ClientboundRegistryDataPacket::new).m_178330_(ClientboundResourcePackPacket.class, ClientboundResourcePackPacket::new).m_178330_(ClientboundUpdateEnabledFeaturesPacket.class, ClientboundUpdateEnabledFeaturesPacket::new).m_178330_(ClientboundUpdateTagsPacket.class, ClientboundUpdateTagsPacket::new)).m_129625_(PacketFlow.SERVERBOUND, (new ConnectionProtocol.PacketSet()).m_178330_(ServerboundClientInformationPacket.class, ServerboundClientInformationPacket::new).m_178330_(ServerboundCustomPayloadPacket.class, ServerboundCustomPayloadPacket::new).m_178330_(ServerboundFinishConfigurationPacket.class, ServerboundFinishConfigurationPacket::new).m_178330_(ServerboundKeepAlivePacket.class, ServerboundKeepAlivePacket::new).m_178330_(ServerboundPongPacket.class, ServerboundPongPacket::new).m_178330_(ServerboundResourcePackPacket.class, ServerboundResourcePackPacket::new))); -+ HANDSHAKING("handshake", m_129600_() -+ .m_129625_(PacketFlow.CLIENTBOUND, new ConnectionProtocol.PacketSet<>()) -+ .m_129625_(PacketFlow.SERVERBOUND, (new ConnectionProtocol.PacketSet()) -+ .m_178330_(ClientIntentionPacket.class, ClientIntentionPacket::new) +- HANDSHAKING("handshake", protocol().addFlow(PacketFlow.CLIENTBOUND, new ConnectionProtocol.PacketSet()).addFlow(PacketFlow.SERVERBOUND, (new ConnectionProtocol.PacketSet()).addPacket(ClientIntentionPacket.class, ClientIntentionPacket::new))), +- PLAY("play", protocol().addFlow(PacketFlow.CLIENTBOUND, (new ConnectionProtocol.PacketSet()).withBundlePacket(ClientboundBundlePacket.class, ClientboundBundlePacket::new).addPacket(ClientboundAddEntityPacket.class, ClientboundAddEntityPacket::new).addPacket(ClientboundAddExperienceOrbPacket.class, ClientboundAddExperienceOrbPacket::new).addPacket(ClientboundAnimatePacket.class, ClientboundAnimatePacket::new).addPacket(ClientboundAwardStatsPacket.class, ClientboundAwardStatsPacket::new).addPacket(ClientboundBlockChangedAckPacket.class, ClientboundBlockChangedAckPacket::new).addPacket(ClientboundBlockDestructionPacket.class, ClientboundBlockDestructionPacket::new).addPacket(ClientboundBlockEntityDataPacket.class, ClientboundBlockEntityDataPacket::new).addPacket(ClientboundBlockEventPacket.class, ClientboundBlockEventPacket::new).addPacket(ClientboundBlockUpdatePacket.class, ClientboundBlockUpdatePacket::new).addPacket(ClientboundBossEventPacket.class, ClientboundBossEventPacket::new).addPacket(ClientboundChangeDifficultyPacket.class, ClientboundChangeDifficultyPacket::new).addPacket(ClientboundChunkBatchFinishedPacket.class, ClientboundChunkBatchFinishedPacket::new).addPacket(ClientboundChunkBatchStartPacket.class, ClientboundChunkBatchStartPacket::new).addPacket(ClientboundChunksBiomesPacket.class, ClientboundChunksBiomesPacket::new).addPacket(ClientboundClearTitlesPacket.class, ClientboundClearTitlesPacket::new).addPacket(ClientboundCommandSuggestionsPacket.class, ClientboundCommandSuggestionsPacket::new).addPacket(ClientboundCommandsPacket.class, ClientboundCommandsPacket::new).addPacket(ClientboundContainerClosePacket.class, ClientboundContainerClosePacket::new).addPacket(ClientboundContainerSetContentPacket.class, ClientboundContainerSetContentPacket::new).addPacket(ClientboundContainerSetDataPacket.class, ClientboundContainerSetDataPacket::new).addPacket(ClientboundContainerSetSlotPacket.class, ClientboundContainerSetSlotPacket::new).addPacket(ClientboundCooldownPacket.class, ClientboundCooldownPacket::new).addPacket(ClientboundCustomChatCompletionsPacket.class, ClientboundCustomChatCompletionsPacket::new).addPacket(ClientboundCustomPayloadPacket.class, ClientboundCustomPayloadPacket::new).addPacket(ClientboundDamageEventPacket.class, ClientboundDamageEventPacket::new).addPacket(ClientboundDeleteChatPacket.class, ClientboundDeleteChatPacket::new).addPacket(ClientboundDisconnectPacket.class, ClientboundDisconnectPacket::new).addPacket(ClientboundDisguisedChatPacket.class, ClientboundDisguisedChatPacket::new).addPacket(ClientboundEntityEventPacket.class, ClientboundEntityEventPacket::new).addPacket(ClientboundExplodePacket.class, ClientboundExplodePacket::new).addPacket(ClientboundForgetLevelChunkPacket.class, ClientboundForgetLevelChunkPacket::new).addPacket(ClientboundGameEventPacket.class, ClientboundGameEventPacket::new).addPacket(ClientboundHorseScreenOpenPacket.class, ClientboundHorseScreenOpenPacket::new).addPacket(ClientboundHurtAnimationPacket.class, ClientboundHurtAnimationPacket::new).addPacket(ClientboundInitializeBorderPacket.class, ClientboundInitializeBorderPacket::new).addPacket(ClientboundKeepAlivePacket.class, ClientboundKeepAlivePacket::new).addPacket(ClientboundLevelChunkWithLightPacket.class, ClientboundLevelChunkWithLightPacket::new).addPacket(ClientboundLevelEventPacket.class, ClientboundLevelEventPacket::new).addPacket(ClientboundLevelParticlesPacket.class, ClientboundLevelParticlesPacket::new).addPacket(ClientboundLightUpdatePacket.class, ClientboundLightUpdatePacket::new).addPacket(ClientboundLoginPacket.class, ClientboundLoginPacket::new).addPacket(ClientboundMapItemDataPacket.class, ClientboundMapItemDataPacket::new).addPacket(ClientboundMerchantOffersPacket.class, ClientboundMerchantOffersPacket::new).addPacket(ClientboundMoveEntityPacket.Pos.class, ClientboundMoveEntityPacket.Pos::read).addPacket(ClientboundMoveEntityPacket.PosRot.class, ClientboundMoveEntityPacket.PosRot::read).addPacket(ClientboundMoveEntityPacket.Rot.class, ClientboundMoveEntityPacket.Rot::read).addPacket(ClientboundMoveVehiclePacket.class, ClientboundMoveVehiclePacket::new).addPacket(ClientboundOpenBookPacket.class, ClientboundOpenBookPacket::new).addPacket(ClientboundOpenScreenPacket.class, ClientboundOpenScreenPacket::new).addPacket(ClientboundOpenSignEditorPacket.class, ClientboundOpenSignEditorPacket::new).addPacket(ClientboundPingPacket.class, ClientboundPingPacket::new).addPacket(ClientboundPongResponsePacket.class, ClientboundPongResponsePacket::new).addPacket(ClientboundPlaceGhostRecipePacket.class, ClientboundPlaceGhostRecipePacket::new).addPacket(ClientboundPlayerAbilitiesPacket.class, ClientboundPlayerAbilitiesPacket::new).addPacket(ClientboundPlayerChatPacket.class, ClientboundPlayerChatPacket::new).addPacket(ClientboundPlayerCombatEndPacket.class, ClientboundPlayerCombatEndPacket::new).addPacket(ClientboundPlayerCombatEnterPacket.class, ClientboundPlayerCombatEnterPacket::new).addPacket(ClientboundPlayerCombatKillPacket.class, ClientboundPlayerCombatKillPacket::new).addPacket(ClientboundPlayerInfoRemovePacket.class, ClientboundPlayerInfoRemovePacket::new).addPacket(ClientboundPlayerInfoUpdatePacket.class, ClientboundPlayerInfoUpdatePacket::new).addPacket(ClientboundPlayerLookAtPacket.class, ClientboundPlayerLookAtPacket::new).addPacket(ClientboundPlayerPositionPacket.class, ClientboundPlayerPositionPacket::new).addPacket(ClientboundRecipePacket.class, ClientboundRecipePacket::new).addPacket(ClientboundRemoveEntitiesPacket.class, ClientboundRemoveEntitiesPacket::new).addPacket(ClientboundRemoveMobEffectPacket.class, ClientboundRemoveMobEffectPacket::new).addPacket(ClientboundResourcePackPacket.class, ClientboundResourcePackPacket::new).addPacket(ClientboundRespawnPacket.class, ClientboundRespawnPacket::new).addPacket(ClientboundRotateHeadPacket.class, ClientboundRotateHeadPacket::new).addPacket(ClientboundSectionBlocksUpdatePacket.class, ClientboundSectionBlocksUpdatePacket::new).addPacket(ClientboundSelectAdvancementsTabPacket.class, ClientboundSelectAdvancementsTabPacket::new).addPacket(ClientboundServerDataPacket.class, ClientboundServerDataPacket::new).addPacket(ClientboundSetActionBarTextPacket.class, ClientboundSetActionBarTextPacket::new).addPacket(ClientboundSetBorderCenterPacket.class, ClientboundSetBorderCenterPacket::new).addPacket(ClientboundSetBorderLerpSizePacket.class, ClientboundSetBorderLerpSizePacket::new).addPacket(ClientboundSetBorderSizePacket.class, ClientboundSetBorderSizePacket::new).addPacket(ClientboundSetBorderWarningDelayPacket.class, ClientboundSetBorderWarningDelayPacket::new).addPacket(ClientboundSetBorderWarningDistancePacket.class, ClientboundSetBorderWarningDistancePacket::new).addPacket(ClientboundSetCameraPacket.class, ClientboundSetCameraPacket::new).addPacket(ClientboundSetCarriedItemPacket.class, ClientboundSetCarriedItemPacket::new).addPacket(ClientboundSetChunkCacheCenterPacket.class, ClientboundSetChunkCacheCenterPacket::new).addPacket(ClientboundSetChunkCacheRadiusPacket.class, ClientboundSetChunkCacheRadiusPacket::new).addPacket(ClientboundSetDefaultSpawnPositionPacket.class, ClientboundSetDefaultSpawnPositionPacket::new).addPacket(ClientboundSetDisplayObjectivePacket.class, ClientboundSetDisplayObjectivePacket::new).addPacket(ClientboundSetEntityDataPacket.class, ClientboundSetEntityDataPacket::new).addPacket(ClientboundSetEntityLinkPacket.class, ClientboundSetEntityLinkPacket::new).addPacket(ClientboundSetEntityMotionPacket.class, ClientboundSetEntityMotionPacket::new).addPacket(ClientboundSetEquipmentPacket.class, ClientboundSetEquipmentPacket::new).addPacket(ClientboundSetExperiencePacket.class, ClientboundSetExperiencePacket::new).addPacket(ClientboundSetHealthPacket.class, ClientboundSetHealthPacket::new).addPacket(ClientboundSetObjectivePacket.class, ClientboundSetObjectivePacket::new).addPacket(ClientboundSetPassengersPacket.class, ClientboundSetPassengersPacket::new).addPacket(ClientboundSetPlayerTeamPacket.class, ClientboundSetPlayerTeamPacket::new).addPacket(ClientboundSetScorePacket.class, ClientboundSetScorePacket::new).addPacket(ClientboundSetSimulationDistancePacket.class, ClientboundSetSimulationDistancePacket::new).addPacket(ClientboundSetSubtitleTextPacket.class, ClientboundSetSubtitleTextPacket::new).addPacket(ClientboundSetTimePacket.class, ClientboundSetTimePacket::new).addPacket(ClientboundSetTitleTextPacket.class, ClientboundSetTitleTextPacket::new).addPacket(ClientboundSetTitlesAnimationPacket.class, ClientboundSetTitlesAnimationPacket::new).addPacket(ClientboundSoundEntityPacket.class, ClientboundSoundEntityPacket::new).addPacket(ClientboundSoundPacket.class, ClientboundSoundPacket::new).addPacket(ClientboundStartConfigurationPacket.class, ClientboundStartConfigurationPacket::new).addPacket(ClientboundStopSoundPacket.class, ClientboundStopSoundPacket::new).addPacket(ClientboundSystemChatPacket.class, ClientboundSystemChatPacket::new).addPacket(ClientboundTabListPacket.class, ClientboundTabListPacket::new).addPacket(ClientboundTagQueryPacket.class, ClientboundTagQueryPacket::new).addPacket(ClientboundTakeItemEntityPacket.class, ClientboundTakeItemEntityPacket::new).addPacket(ClientboundTeleportEntityPacket.class, ClientboundTeleportEntityPacket::new).addPacket(ClientboundUpdateAdvancementsPacket.class, ClientboundUpdateAdvancementsPacket::new).addPacket(ClientboundUpdateAttributesPacket.class, ClientboundUpdateAttributesPacket::new).addPacket(ClientboundUpdateMobEffectPacket.class, ClientboundUpdateMobEffectPacket::new).addPacket(ClientboundUpdateRecipesPacket.class, ClientboundUpdateRecipesPacket::new).addPacket(ClientboundUpdateTagsPacket.class, ClientboundUpdateTagsPacket::new)).addFlow(PacketFlow.SERVERBOUND, (new ConnectionProtocol.PacketSet()).addPacket(ServerboundAcceptTeleportationPacket.class, ServerboundAcceptTeleportationPacket::new).addPacket(ServerboundBlockEntityTagQuery.class, ServerboundBlockEntityTagQuery::new).addPacket(ServerboundChangeDifficultyPacket.class, ServerboundChangeDifficultyPacket::new).addPacket(ServerboundChatAckPacket.class, ServerboundChatAckPacket::new).addPacket(ServerboundChatCommandPacket.class, ServerboundChatCommandPacket::new).addPacket(ServerboundChatPacket.class, ServerboundChatPacket::new).addPacket(ServerboundChatSessionUpdatePacket.class, ServerboundChatSessionUpdatePacket::new).addPacket(ServerboundChunkBatchReceivedPacket.class, ServerboundChunkBatchReceivedPacket::new).addPacket(ServerboundClientCommandPacket.class, ServerboundClientCommandPacket::new).addPacket(ServerboundClientInformationPacket.class, ServerboundClientInformationPacket::new).addPacket(ServerboundCommandSuggestionPacket.class, ServerboundCommandSuggestionPacket::new).addPacket(ServerboundConfigurationAcknowledgedPacket.class, ServerboundConfigurationAcknowledgedPacket::new).addPacket(ServerboundContainerButtonClickPacket.class, ServerboundContainerButtonClickPacket::new).addPacket(ServerboundContainerClickPacket.class, ServerboundContainerClickPacket::new).addPacket(ServerboundContainerClosePacket.class, ServerboundContainerClosePacket::new).addPacket(ServerboundCustomPayloadPacket.class, ServerboundCustomPayloadPacket::new).addPacket(ServerboundEditBookPacket.class, ServerboundEditBookPacket::new).addPacket(ServerboundEntityTagQuery.class, ServerboundEntityTagQuery::new).addPacket(ServerboundInteractPacket.class, ServerboundInteractPacket::new).addPacket(ServerboundJigsawGeneratePacket.class, ServerboundJigsawGeneratePacket::new).addPacket(ServerboundKeepAlivePacket.class, ServerboundKeepAlivePacket::new).addPacket(ServerboundLockDifficultyPacket.class, ServerboundLockDifficultyPacket::new).addPacket(ServerboundMovePlayerPacket.Pos.class, ServerboundMovePlayerPacket.Pos::read).addPacket(ServerboundMovePlayerPacket.PosRot.class, ServerboundMovePlayerPacket.PosRot::read).addPacket(ServerboundMovePlayerPacket.Rot.class, ServerboundMovePlayerPacket.Rot::read).addPacket(ServerboundMovePlayerPacket.StatusOnly.class, ServerboundMovePlayerPacket.StatusOnly::read).addPacket(ServerboundMoveVehiclePacket.class, ServerboundMoveVehiclePacket::new).addPacket(ServerboundPaddleBoatPacket.class, ServerboundPaddleBoatPacket::new).addPacket(ServerboundPickItemPacket.class, ServerboundPickItemPacket::new).addPacket(ServerboundPingRequestPacket.class, ServerboundPingRequestPacket::new).addPacket(ServerboundPlaceRecipePacket.class, ServerboundPlaceRecipePacket::new).addPacket(ServerboundPlayerAbilitiesPacket.class, ServerboundPlayerAbilitiesPacket::new).addPacket(ServerboundPlayerActionPacket.class, ServerboundPlayerActionPacket::new).addPacket(ServerboundPlayerCommandPacket.class, ServerboundPlayerCommandPacket::new).addPacket(ServerboundPlayerInputPacket.class, ServerboundPlayerInputPacket::new).addPacket(ServerboundPongPacket.class, ServerboundPongPacket::new).addPacket(ServerboundRecipeBookChangeSettingsPacket.class, ServerboundRecipeBookChangeSettingsPacket::new).addPacket(ServerboundRecipeBookSeenRecipePacket.class, ServerboundRecipeBookSeenRecipePacket::new).addPacket(ServerboundRenameItemPacket.class, ServerboundRenameItemPacket::new).addPacket(ServerboundResourcePackPacket.class, ServerboundResourcePackPacket::new).addPacket(ServerboundSeenAdvancementsPacket.class, ServerboundSeenAdvancementsPacket::new).addPacket(ServerboundSelectTradePacket.class, ServerboundSelectTradePacket::new).addPacket(ServerboundSetBeaconPacket.class, ServerboundSetBeaconPacket::new).addPacket(ServerboundSetCarriedItemPacket.class, ServerboundSetCarriedItemPacket::new).addPacket(ServerboundSetCommandBlockPacket.class, ServerboundSetCommandBlockPacket::new).addPacket(ServerboundSetCommandMinecartPacket.class, ServerboundSetCommandMinecartPacket::new).addPacket(ServerboundSetCreativeModeSlotPacket.class, ServerboundSetCreativeModeSlotPacket::new).addPacket(ServerboundSetJigsawBlockPacket.class, ServerboundSetJigsawBlockPacket::new).addPacket(ServerboundSetStructureBlockPacket.class, ServerboundSetStructureBlockPacket::new).addPacket(ServerboundSignUpdatePacket.class, ServerboundSignUpdatePacket::new).addPacket(ServerboundSwingPacket.class, ServerboundSwingPacket::new).addPacket(ServerboundTeleportToEntityPacket.class, ServerboundTeleportToEntityPacket::new).addPacket(ServerboundUseItemOnPacket.class, ServerboundUseItemOnPacket::new).addPacket(ServerboundUseItemPacket.class, ServerboundUseItemPacket::new))), +- STATUS("status", protocol().addFlow(PacketFlow.SERVERBOUND, (new ConnectionProtocol.PacketSet()).addPacket(ServerboundStatusRequestPacket.class, ServerboundStatusRequestPacket::new).addPacket(ServerboundPingRequestPacket.class, ServerboundPingRequestPacket::new)).addFlow(PacketFlow.CLIENTBOUND, (new ConnectionProtocol.PacketSet()).addPacket(ClientboundStatusResponsePacket.class, ClientboundStatusResponsePacket::new).addPacket(ClientboundPongResponsePacket.class, ClientboundPongResponsePacket::new))), +- LOGIN("login", protocol().addFlow(PacketFlow.CLIENTBOUND, (new ConnectionProtocol.PacketSet()).addPacket(ClientboundLoginDisconnectPacket.class, ClientboundLoginDisconnectPacket::new).addPacket(ClientboundHelloPacket.class, ClientboundHelloPacket::new).addPacket(ClientboundGameProfilePacket.class, ClientboundGameProfilePacket::new).addPacket(ClientboundLoginCompressionPacket.class, ClientboundLoginCompressionPacket::new).addPacket(ClientboundCustomQueryPacket.class, ClientboundCustomQueryPacket::new)).addFlow(PacketFlow.SERVERBOUND, (new ConnectionProtocol.PacketSet()).addPacket(ServerboundHelloPacket.class, ServerboundHelloPacket::new).addPacket(ServerboundKeyPacket.class, ServerboundKeyPacket::new).addPacket(ServerboundCustomQueryAnswerPacket.class, ServerboundCustomQueryAnswerPacket::read).addPacket(ServerboundLoginAcknowledgedPacket.class, ServerboundLoginAcknowledgedPacket::new))), +- CONFIGURATION("configuration", protocol().addFlow(PacketFlow.CLIENTBOUND, (new ConnectionProtocol.PacketSet()).addPacket(ClientboundCustomPayloadPacket.class, ClientboundCustomPayloadPacket::new).addPacket(ClientboundDisconnectPacket.class, ClientboundDisconnectPacket::new).addPacket(ClientboundFinishConfigurationPacket.class, ClientboundFinishConfigurationPacket::new).addPacket(ClientboundKeepAlivePacket.class, ClientboundKeepAlivePacket::new).addPacket(ClientboundPingPacket.class, ClientboundPingPacket::new).addPacket(ClientboundRegistryDataPacket.class, ClientboundRegistryDataPacket::new).addPacket(ClientboundResourcePackPacket.class, ClientboundResourcePackPacket::new).addPacket(ClientboundUpdateEnabledFeaturesPacket.class, ClientboundUpdateEnabledFeaturesPacket::new).addPacket(ClientboundUpdateTagsPacket.class, ClientboundUpdateTagsPacket::new)).addFlow(PacketFlow.SERVERBOUND, (new ConnectionProtocol.PacketSet()).addPacket(ServerboundClientInformationPacket.class, ServerboundClientInformationPacket::new).addPacket(ServerboundCustomPayloadPacket.class, ServerboundCustomPayloadPacket::new).addPacket(ServerboundFinishConfigurationPacket.class, ServerboundFinishConfigurationPacket::new).addPacket(ServerboundKeepAlivePacket.class, ServerboundKeepAlivePacket::new).addPacket(ServerboundPongPacket.class, ServerboundPongPacket::new).addPacket(ServerboundResourcePackPacket.class, ServerboundResourcePackPacket::new))); ++ HANDSHAKING("handshake", protocol() ++ .addFlow(PacketFlow.CLIENTBOUND, new ConnectionProtocol.PacketSet<>()) ++ .addFlow(PacketFlow.SERVERBOUND, (new ConnectionProtocol.PacketSet()) ++ .addPacket(ClientIntentionPacket.class, ClientIntentionPacket::new) + ) + ), -+ PLAY("play", m_129600_() -+ .m_129625_(PacketFlow.CLIENTBOUND, (new ConnectionProtocol.PacketSet()) -+ .m_264543_(ClientboundBundlePacket.class, ClientboundBundlePacket::new) -+ .m_178330_(ClientboundAddEntityPacket.class, ClientboundAddEntityPacket::new) -+ .m_178330_(ClientboundAddExperienceOrbPacket.class, ClientboundAddExperienceOrbPacket::new) -+ .m_178330_(ClientboundAnimatePacket.class, ClientboundAnimatePacket::new) -+ .m_178330_(ClientboundAwardStatsPacket.class, ClientboundAwardStatsPacket::new) -+ .m_178330_(ClientboundBlockChangedAckPacket.class, ClientboundBlockChangedAckPacket::new) -+ .m_178330_(ClientboundBlockDestructionPacket.class, ClientboundBlockDestructionPacket::new) -+ .m_178330_(ClientboundBlockEntityDataPacket.class, ClientboundBlockEntityDataPacket::new) -+ .m_178330_(ClientboundBlockEventPacket.class, ClientboundBlockEventPacket::new) -+ .m_178330_(ClientboundBlockUpdatePacket.class, ClientboundBlockUpdatePacket::new) -+ .m_178330_(ClientboundBossEventPacket.class, ClientboundBossEventPacket::new) -+ .m_178330_(ClientboundChangeDifficultyPacket.class, ClientboundChangeDifficultyPacket::new) -+ .m_178330_(ClientboundChunkBatchFinishedPacket.class, ClientboundChunkBatchFinishedPacket::new) -+ .m_178330_(ClientboundChunkBatchStartPacket.class, ClientboundChunkBatchStartPacket::new) -+ .m_178330_(ClientboundChunksBiomesPacket.class, ClientboundChunksBiomesPacket::new) -+ .m_178330_(ClientboundClearTitlesPacket.class, ClientboundClearTitlesPacket::new) -+ .m_178330_(ClientboundCommandSuggestionsPacket.class, ClientboundCommandSuggestionsPacket::new) -+ .m_178330_(ClientboundCommandsPacket.class, ClientboundCommandsPacket::new) -+ .m_178330_(ClientboundContainerClosePacket.class, ClientboundContainerClosePacket::new) -+ .m_178330_(ClientboundContainerSetContentPacket.class, ClientboundContainerSetContentPacket::new) -+ .m_178330_(ClientboundContainerSetDataPacket.class, ClientboundContainerSetDataPacket::new) -+ .m_178330_(ClientboundContainerSetSlotPacket.class, ClientboundContainerSetSlotPacket::new) -+ .m_178330_(ClientboundCooldownPacket.class, ClientboundCooldownPacket::new) -+ .m_178330_(ClientboundCustomChatCompletionsPacket.class, ClientboundCustomChatCompletionsPacket::new) -+ .m_178330_(ClientboundCustomPayloadPacket.class, ClientboundCustomPayloadPacket::new) -+ .m_178330_(ClientboundDamageEventPacket.class, ClientboundDamageEventPacket::new) -+ .m_178330_(ClientboundDeleteChatPacket.class, ClientboundDeleteChatPacket::new) -+ .m_178330_(ClientboundDisconnectPacket.class, ClientboundDisconnectPacket::new) -+ .m_178330_(ClientboundDisguisedChatPacket.class, ClientboundDisguisedChatPacket::new) -+ .m_178330_(ClientboundEntityEventPacket.class, ClientboundEntityEventPacket::new) -+ .m_178330_(ClientboundExplodePacket.class, ClientboundExplodePacket::new) -+ .m_178330_(ClientboundForgetLevelChunkPacket.class, ClientboundForgetLevelChunkPacket::new) -+ .m_178330_(ClientboundGameEventPacket.class, ClientboundGameEventPacket::new) -+ .m_178330_(ClientboundHorseScreenOpenPacket.class, ClientboundHorseScreenOpenPacket::new) -+ .m_178330_(ClientboundHurtAnimationPacket.class, ClientboundHurtAnimationPacket::new) -+ .m_178330_(ClientboundInitializeBorderPacket.class, ClientboundInitializeBorderPacket::new) -+ .m_178330_(ClientboundKeepAlivePacket.class, ClientboundKeepAlivePacket::new) -+ .m_178330_(ClientboundLevelChunkWithLightPacket.class, ClientboundLevelChunkWithLightPacket::new) -+ .m_178330_(ClientboundLevelEventPacket.class, ClientboundLevelEventPacket::new) -+ .m_178330_(ClientboundLevelParticlesPacket.class, ClientboundLevelParticlesPacket::new) -+ .m_178330_(ClientboundLightUpdatePacket.class, ClientboundLightUpdatePacket::new) -+ .m_178330_(ClientboundLoginPacket.class, ClientboundLoginPacket::new) -+ .m_178330_(ClientboundMapItemDataPacket.class, ClientboundMapItemDataPacket::new) -+ .m_178330_(ClientboundMerchantOffersPacket.class, ClientboundMerchantOffersPacket::new) -+ .m_178330_(ClientboundMoveEntityPacket.Pos.class, ClientboundMoveEntityPacket.Pos::m_179000_) -+ .m_178330_(ClientboundMoveEntityPacket.PosRot.class, ClientboundMoveEntityPacket.PosRot::m_179002_) -+ .m_178330_(ClientboundMoveEntityPacket.Rot.class, ClientboundMoveEntityPacket.Rot::m_179004_) -+ .m_178330_(ClientboundMoveVehiclePacket.class, ClientboundMoveVehiclePacket::new) -+ .m_178330_(ClientboundOpenBookPacket.class, ClientboundOpenBookPacket::new) -+ .m_178330_(ClientboundOpenScreenPacket.class, ClientboundOpenScreenPacket::new) -+ .m_178330_(ClientboundOpenSignEditorPacket.class, ClientboundOpenSignEditorPacket::new) -+ .m_178330_(ClientboundPingPacket.class, ClientboundPingPacket::new) -+ .m_178330_(ClientboundPongResponsePacket.class, ClientboundPongResponsePacket::new) -+ .m_178330_(ClientboundPlaceGhostRecipePacket.class, ClientboundPlaceGhostRecipePacket::new) -+ .m_178330_(ClientboundPlayerAbilitiesPacket.class, ClientboundPlayerAbilitiesPacket::new) -+ .m_178330_(ClientboundPlayerChatPacket.class, ClientboundPlayerChatPacket::new) -+ .m_178330_(ClientboundPlayerCombatEndPacket.class, ClientboundPlayerCombatEndPacket::new) -+ .m_178330_(ClientboundPlayerCombatEnterPacket.class, ClientboundPlayerCombatEnterPacket::new) -+ .m_178330_(ClientboundPlayerCombatKillPacket.class, ClientboundPlayerCombatKillPacket::new) -+ .m_178330_(ClientboundPlayerInfoRemovePacket.class, ClientboundPlayerInfoRemovePacket::new) -+ .m_178330_(ClientboundPlayerInfoUpdatePacket.class, ClientboundPlayerInfoUpdatePacket::new) -+ .m_178330_(ClientboundPlayerLookAtPacket.class, ClientboundPlayerLookAtPacket::new) -+ .m_178330_(ClientboundPlayerPositionPacket.class, ClientboundPlayerPositionPacket::new) -+ .m_178330_(ClientboundRecipePacket.class, ClientboundRecipePacket::new) -+ .m_178330_(ClientboundRemoveEntitiesPacket.class, ClientboundRemoveEntitiesPacket::new) -+ .m_178330_(ClientboundRemoveMobEffectPacket.class, ClientboundRemoveMobEffectPacket::new) -+ .m_178330_(ClientboundResourcePackPacket.class, ClientboundResourcePackPacket::new) -+ .m_178330_(ClientboundRespawnPacket.class, ClientboundRespawnPacket::new) -+ .m_178330_(ClientboundRotateHeadPacket.class, ClientboundRotateHeadPacket::new) -+ .m_178330_(ClientboundSectionBlocksUpdatePacket.class, ClientboundSectionBlocksUpdatePacket::new) -+ .m_178330_(ClientboundSelectAdvancementsTabPacket.class, ClientboundSelectAdvancementsTabPacket::new) -+ .m_178330_(ClientboundServerDataPacket.class, ClientboundServerDataPacket::new) -+ .m_178330_(ClientboundSetActionBarTextPacket.class, ClientboundSetActionBarTextPacket::new) -+ .m_178330_(ClientboundSetBorderCenterPacket.class, ClientboundSetBorderCenterPacket::new) -+ .m_178330_(ClientboundSetBorderLerpSizePacket.class, ClientboundSetBorderLerpSizePacket::new) -+ .m_178330_(ClientboundSetBorderSizePacket.class, ClientboundSetBorderSizePacket::new) -+ .m_178330_(ClientboundSetBorderWarningDelayPacket.class, ClientboundSetBorderWarningDelayPacket::new) -+ .m_178330_(ClientboundSetBorderWarningDistancePacket.class, ClientboundSetBorderWarningDistancePacket::new) -+ .m_178330_(ClientboundSetCameraPacket.class, ClientboundSetCameraPacket::new) -+ .m_178330_(ClientboundSetCarriedItemPacket.class, ClientboundSetCarriedItemPacket::new) -+ .m_178330_(ClientboundSetChunkCacheCenterPacket.class, ClientboundSetChunkCacheCenterPacket::new) -+ .m_178330_(ClientboundSetChunkCacheRadiusPacket.class, ClientboundSetChunkCacheRadiusPacket::new) -+ .m_178330_(ClientboundSetDefaultSpawnPositionPacket.class, ClientboundSetDefaultSpawnPositionPacket::new) -+ .m_178330_(ClientboundSetDisplayObjectivePacket.class, ClientboundSetDisplayObjectivePacket::new) -+ .m_178330_(ClientboundSetEntityDataPacket.class, ClientboundSetEntityDataPacket::new) -+ .m_178330_(ClientboundSetEntityLinkPacket.class, ClientboundSetEntityLinkPacket::new) -+ .m_178330_(ClientboundSetEntityMotionPacket.class, ClientboundSetEntityMotionPacket::new) -+ .m_178330_(ClientboundSetEquipmentPacket.class, ClientboundSetEquipmentPacket::new) -+ .m_178330_(ClientboundSetExperiencePacket.class, ClientboundSetExperiencePacket::new) -+ .m_178330_(ClientboundSetHealthPacket.class, ClientboundSetHealthPacket::new) -+ .m_178330_(ClientboundSetObjectivePacket.class, ClientboundSetObjectivePacket::new) -+ .m_178330_(ClientboundSetPassengersPacket.class, ClientboundSetPassengersPacket::new) -+ .m_178330_(ClientboundSetPlayerTeamPacket.class, ClientboundSetPlayerTeamPacket::new) -+ .m_178330_(ClientboundSetScorePacket.class, ClientboundSetScorePacket::new) -+ .m_178330_(ClientboundSetSimulationDistancePacket.class, ClientboundSetSimulationDistancePacket::new) -+ .m_178330_(ClientboundSetSubtitleTextPacket.class, ClientboundSetSubtitleTextPacket::new) -+ .m_178330_(ClientboundSetTimePacket.class, ClientboundSetTimePacket::new) -+ .m_178330_(ClientboundSetTitleTextPacket.class, ClientboundSetTitleTextPacket::new) -+ .m_178330_(ClientboundSetTitlesAnimationPacket.class, ClientboundSetTitlesAnimationPacket::new) -+ .m_178330_(ClientboundSoundEntityPacket.class, ClientboundSoundEntityPacket::new) -+ .m_178330_(ClientboundSoundPacket.class, ClientboundSoundPacket::new) -+ .m_178330_(ClientboundStartConfigurationPacket.class, ClientboundStartConfigurationPacket::new) -+ .m_178330_(ClientboundStopSoundPacket.class, ClientboundStopSoundPacket::new) -+ .m_178330_(ClientboundSystemChatPacket.class, ClientboundSystemChatPacket::new) -+ .m_178330_(ClientboundTabListPacket.class, ClientboundTabListPacket::new) -+ .m_178330_(ClientboundTagQueryPacket.class, ClientboundTagQueryPacket::new) -+ .m_178330_(ClientboundTakeItemEntityPacket.class, ClientboundTakeItemEntityPacket::new) -+ .m_178330_(ClientboundTeleportEntityPacket.class, ClientboundTeleportEntityPacket::new) -+ .m_178330_(ClientboundUpdateAdvancementsPacket.class, ClientboundUpdateAdvancementsPacket::new) -+ .m_178330_(ClientboundUpdateAttributesPacket.class, ClientboundUpdateAttributesPacket::new) -+ .m_178330_(ClientboundUpdateMobEffectPacket.class, ClientboundUpdateMobEffectPacket::new) -+ .m_178330_(ClientboundUpdateRecipesPacket.class, ClientboundUpdateRecipesPacket::new) -+ .m_178330_(ClientboundUpdateTagsPacket.class, ClientboundUpdateTagsPacket::new) ++ PLAY("play", protocol() ++ .addFlow(PacketFlow.CLIENTBOUND, (new ConnectionProtocol.PacketSet()) ++ .withBundlePacket(ClientboundBundlePacket.class, ClientboundBundlePacket::new) ++ .addPacket(ClientboundAddEntityPacket.class, ClientboundAddEntityPacket::new) ++ .addPacket(ClientboundAddExperienceOrbPacket.class, ClientboundAddExperienceOrbPacket::new) ++ .addPacket(ClientboundAnimatePacket.class, ClientboundAnimatePacket::new) ++ .addPacket(ClientboundAwardStatsPacket.class, ClientboundAwardStatsPacket::new) ++ .addPacket(ClientboundBlockChangedAckPacket.class, ClientboundBlockChangedAckPacket::new) ++ .addPacket(ClientboundBlockDestructionPacket.class, ClientboundBlockDestructionPacket::new) ++ .addPacket(ClientboundBlockEntityDataPacket.class, ClientboundBlockEntityDataPacket::new) ++ .addPacket(ClientboundBlockEventPacket.class, ClientboundBlockEventPacket::new) ++ .addPacket(ClientboundBlockUpdatePacket.class, ClientboundBlockUpdatePacket::new) ++ .addPacket(ClientboundBossEventPacket.class, ClientboundBossEventPacket::new) ++ .addPacket(ClientboundChangeDifficultyPacket.class, ClientboundChangeDifficultyPacket::new) ++ .addPacket(ClientboundChunkBatchFinishedPacket.class, ClientboundChunkBatchFinishedPacket::new) ++ .addPacket(ClientboundChunkBatchStartPacket.class, ClientboundChunkBatchStartPacket::new) ++ .addPacket(ClientboundChunksBiomesPacket.class, ClientboundChunksBiomesPacket::new) ++ .addPacket(ClientboundClearTitlesPacket.class, ClientboundClearTitlesPacket::new) ++ .addPacket(ClientboundCommandSuggestionsPacket.class, ClientboundCommandSuggestionsPacket::new) ++ .addPacket(ClientboundCommandsPacket.class, ClientboundCommandsPacket::new) ++ .addPacket(ClientboundContainerClosePacket.class, ClientboundContainerClosePacket::new) ++ .addPacket(ClientboundContainerSetContentPacket.class, ClientboundContainerSetContentPacket::new) ++ .addPacket(ClientboundContainerSetDataPacket.class, ClientboundContainerSetDataPacket::new) ++ .addPacket(ClientboundContainerSetSlotPacket.class, ClientboundContainerSetSlotPacket::new) ++ .addPacket(ClientboundCooldownPacket.class, ClientboundCooldownPacket::new) ++ .addPacket(ClientboundCustomChatCompletionsPacket.class, ClientboundCustomChatCompletionsPacket::new) ++ .addPacket(ClientboundCustomPayloadPacket.class, ClientboundCustomPayloadPacket::new) ++ .addPacket(ClientboundDamageEventPacket.class, ClientboundDamageEventPacket::new) ++ .addPacket(ClientboundDeleteChatPacket.class, ClientboundDeleteChatPacket::new) ++ .addPacket(ClientboundDisconnectPacket.class, ClientboundDisconnectPacket::new) ++ .addPacket(ClientboundDisguisedChatPacket.class, ClientboundDisguisedChatPacket::new) ++ .addPacket(ClientboundEntityEventPacket.class, ClientboundEntityEventPacket::new) ++ .addPacket(ClientboundExplodePacket.class, ClientboundExplodePacket::new) ++ .addPacket(ClientboundForgetLevelChunkPacket.class, ClientboundForgetLevelChunkPacket::new) ++ .addPacket(ClientboundGameEventPacket.class, ClientboundGameEventPacket::new) ++ .addPacket(ClientboundHorseScreenOpenPacket.class, ClientboundHorseScreenOpenPacket::new) ++ .addPacket(ClientboundHurtAnimationPacket.class, ClientboundHurtAnimationPacket::new) ++ .addPacket(ClientboundInitializeBorderPacket.class, ClientboundInitializeBorderPacket::new) ++ .addPacket(ClientboundKeepAlivePacket.class, ClientboundKeepAlivePacket::new) ++ .addPacket(ClientboundLevelChunkWithLightPacket.class, ClientboundLevelChunkWithLightPacket::new) ++ .addPacket(ClientboundLevelEventPacket.class, ClientboundLevelEventPacket::new) ++ .addPacket(ClientboundLevelParticlesPacket.class, ClientboundLevelParticlesPacket::new) ++ .addPacket(ClientboundLightUpdatePacket.class, ClientboundLightUpdatePacket::new) ++ .addPacket(ClientboundLoginPacket.class, ClientboundLoginPacket::new) ++ .addPacket(ClientboundMapItemDataPacket.class, ClientboundMapItemDataPacket::new) ++ .addPacket(ClientboundMerchantOffersPacket.class, ClientboundMerchantOffersPacket::new) ++ .addPacket(ClientboundMoveEntityPacket.Pos.class, ClientboundMoveEntityPacket.Pos::read) ++ .addPacket(ClientboundMoveEntityPacket.PosRot.class, ClientboundMoveEntityPacket.PosRot::read) ++ .addPacket(ClientboundMoveEntityPacket.Rot.class, ClientboundMoveEntityPacket.Rot::read) ++ .addPacket(ClientboundMoveVehiclePacket.class, ClientboundMoveVehiclePacket::new) ++ .addPacket(ClientboundOpenBookPacket.class, ClientboundOpenBookPacket::new) ++ .addPacket(ClientboundOpenScreenPacket.class, ClientboundOpenScreenPacket::new) ++ .addPacket(ClientboundOpenSignEditorPacket.class, ClientboundOpenSignEditorPacket::new) ++ .addPacket(ClientboundPingPacket.class, ClientboundPingPacket::new) ++ .addPacket(ClientboundPongResponsePacket.class, ClientboundPongResponsePacket::new) ++ .addPacket(ClientboundPlaceGhostRecipePacket.class, ClientboundPlaceGhostRecipePacket::new) ++ .addPacket(ClientboundPlayerAbilitiesPacket.class, ClientboundPlayerAbilitiesPacket::new) ++ .addPacket(ClientboundPlayerChatPacket.class, ClientboundPlayerChatPacket::new) ++ .addPacket(ClientboundPlayerCombatEndPacket.class, ClientboundPlayerCombatEndPacket::new) ++ .addPacket(ClientboundPlayerCombatEnterPacket.class, ClientboundPlayerCombatEnterPacket::new) ++ .addPacket(ClientboundPlayerCombatKillPacket.class, ClientboundPlayerCombatKillPacket::new) ++ .addPacket(ClientboundPlayerInfoRemovePacket.class, ClientboundPlayerInfoRemovePacket::new) ++ .addPacket(ClientboundPlayerInfoUpdatePacket.class, ClientboundPlayerInfoUpdatePacket::new) ++ .addPacket(ClientboundPlayerLookAtPacket.class, ClientboundPlayerLookAtPacket::new) ++ .addPacket(ClientboundPlayerPositionPacket.class, ClientboundPlayerPositionPacket::new) ++ .addPacket(ClientboundRecipePacket.class, ClientboundRecipePacket::new) ++ .addPacket(ClientboundRemoveEntitiesPacket.class, ClientboundRemoveEntitiesPacket::new) ++ .addPacket(ClientboundRemoveMobEffectPacket.class, ClientboundRemoveMobEffectPacket::new) ++ .addPacket(ClientboundResourcePackPacket.class, ClientboundResourcePackPacket::new) ++ .addPacket(ClientboundRespawnPacket.class, ClientboundRespawnPacket::new) ++ .addPacket(ClientboundRotateHeadPacket.class, ClientboundRotateHeadPacket::new) ++ .addPacket(ClientboundSectionBlocksUpdatePacket.class, ClientboundSectionBlocksUpdatePacket::new) ++ .addPacket(ClientboundSelectAdvancementsTabPacket.class, ClientboundSelectAdvancementsTabPacket::new) ++ .addPacket(ClientboundServerDataPacket.class, ClientboundServerDataPacket::new) ++ .addPacket(ClientboundSetActionBarTextPacket.class, ClientboundSetActionBarTextPacket::new) ++ .addPacket(ClientboundSetBorderCenterPacket.class, ClientboundSetBorderCenterPacket::new) ++ .addPacket(ClientboundSetBorderLerpSizePacket.class, ClientboundSetBorderLerpSizePacket::new) ++ .addPacket(ClientboundSetBorderSizePacket.class, ClientboundSetBorderSizePacket::new) ++ .addPacket(ClientboundSetBorderWarningDelayPacket.class, ClientboundSetBorderWarningDelayPacket::new) ++ .addPacket(ClientboundSetBorderWarningDistancePacket.class, ClientboundSetBorderWarningDistancePacket::new) ++ .addPacket(ClientboundSetCameraPacket.class, ClientboundSetCameraPacket::new) ++ .addPacket(ClientboundSetCarriedItemPacket.class, ClientboundSetCarriedItemPacket::new) ++ .addPacket(ClientboundSetChunkCacheCenterPacket.class, ClientboundSetChunkCacheCenterPacket::new) ++ .addPacket(ClientboundSetChunkCacheRadiusPacket.class, ClientboundSetChunkCacheRadiusPacket::new) ++ .addPacket(ClientboundSetDefaultSpawnPositionPacket.class, ClientboundSetDefaultSpawnPositionPacket::new) ++ .addPacket(ClientboundSetDisplayObjectivePacket.class, ClientboundSetDisplayObjectivePacket::new) ++ .addPacket(ClientboundSetEntityDataPacket.class, ClientboundSetEntityDataPacket::new) ++ .addPacket(ClientboundSetEntityLinkPacket.class, ClientboundSetEntityLinkPacket::new) ++ .addPacket(ClientboundSetEntityMotionPacket.class, ClientboundSetEntityMotionPacket::new) ++ .addPacket(ClientboundSetEquipmentPacket.class, ClientboundSetEquipmentPacket::new) ++ .addPacket(ClientboundSetExperiencePacket.class, ClientboundSetExperiencePacket::new) ++ .addPacket(ClientboundSetHealthPacket.class, ClientboundSetHealthPacket::new) ++ .addPacket(ClientboundSetObjectivePacket.class, ClientboundSetObjectivePacket::new) ++ .addPacket(ClientboundSetPassengersPacket.class, ClientboundSetPassengersPacket::new) ++ .addPacket(ClientboundSetPlayerTeamPacket.class, ClientboundSetPlayerTeamPacket::new) ++ .addPacket(ClientboundSetScorePacket.class, ClientboundSetScorePacket::new) ++ .addPacket(ClientboundSetSimulationDistancePacket.class, ClientboundSetSimulationDistancePacket::new) ++ .addPacket(ClientboundSetSubtitleTextPacket.class, ClientboundSetSubtitleTextPacket::new) ++ .addPacket(ClientboundSetTimePacket.class, ClientboundSetTimePacket::new) ++ .addPacket(ClientboundSetTitleTextPacket.class, ClientboundSetTitleTextPacket::new) ++ .addPacket(ClientboundSetTitlesAnimationPacket.class, ClientboundSetTitlesAnimationPacket::new) ++ .addPacket(ClientboundSoundEntityPacket.class, ClientboundSoundEntityPacket::new) ++ .addPacket(ClientboundSoundPacket.class, ClientboundSoundPacket::new) ++ .addPacket(ClientboundStartConfigurationPacket.class, ClientboundStartConfigurationPacket::new) ++ .addPacket(ClientboundStopSoundPacket.class, ClientboundStopSoundPacket::new) ++ .addPacket(ClientboundSystemChatPacket.class, ClientboundSystemChatPacket::new) ++ .addPacket(ClientboundTabListPacket.class, ClientboundTabListPacket::new) ++ .addPacket(ClientboundTagQueryPacket.class, ClientboundTagQueryPacket::new) ++ .addPacket(ClientboundTakeItemEntityPacket.class, ClientboundTakeItemEntityPacket::new) ++ .addPacket(ClientboundTeleportEntityPacket.class, ClientboundTeleportEntityPacket::new) ++ .addPacket(ClientboundUpdateAdvancementsPacket.class, ClientboundUpdateAdvancementsPacket::new) ++ .addPacket(ClientboundUpdateAttributesPacket.class, ClientboundUpdateAttributesPacket::new) ++ .addPacket(ClientboundUpdateMobEffectPacket.class, ClientboundUpdateMobEffectPacket::new) ++ .addPacket(ClientboundUpdateRecipesPacket.class, ClientboundUpdateRecipesPacket::new) ++ .addPacket(ClientboundUpdateTagsPacket.class, ClientboundUpdateTagsPacket::new) + ) -+ .m_129625_(PacketFlow.SERVERBOUND, (new ConnectionProtocol.PacketSet()) -+ .m_178330_(ServerboundAcceptTeleportationPacket.class, ServerboundAcceptTeleportationPacket::new) -+ .m_178330_(ServerboundBlockEntityTagQuery.class, ServerboundBlockEntityTagQuery::new) -+ .m_178330_(ServerboundChangeDifficultyPacket.class, ServerboundChangeDifficultyPacket::new) -+ .m_178330_(ServerboundChatAckPacket.class, ServerboundChatAckPacket::new) -+ .m_178330_(ServerboundChatCommandPacket.class, ServerboundChatCommandPacket::new) -+ .m_178330_(ServerboundChatPacket.class, ServerboundChatPacket::new) -+ .m_178330_(ServerboundChatSessionUpdatePacket.class, ServerboundChatSessionUpdatePacket::new) -+ .m_178330_(ServerboundChunkBatchReceivedPacket.class, ServerboundChunkBatchReceivedPacket::new) -+ .m_178330_(ServerboundClientCommandPacket.class, ServerboundClientCommandPacket::new) -+ .m_178330_(ServerboundClientInformationPacket.class, ServerboundClientInformationPacket::new) -+ .m_178330_(ServerboundCommandSuggestionPacket.class, ServerboundCommandSuggestionPacket::new) -+ .m_178330_(ServerboundConfigurationAcknowledgedPacket.class, ServerboundConfigurationAcknowledgedPacket::new) -+ .m_178330_(ServerboundContainerButtonClickPacket.class, ServerboundContainerButtonClickPacket::new) -+ .m_178330_(ServerboundContainerClickPacket.class, ServerboundContainerClickPacket::new) -+ .m_178330_(ServerboundContainerClosePacket.class, ServerboundContainerClosePacket::new) -+ .m_178330_(ServerboundCustomPayloadPacket.class, ServerboundCustomPayloadPacket::new) -+ .m_178330_(ServerboundEditBookPacket.class, ServerboundEditBookPacket::new) -+ .m_178330_(ServerboundEntityTagQuery.class, ServerboundEntityTagQuery::new) -+ .m_178330_(ServerboundInteractPacket.class, ServerboundInteractPacket::new) -+ .m_178330_(ServerboundJigsawGeneratePacket.class, ServerboundJigsawGeneratePacket::new) -+ .m_178330_(ServerboundKeepAlivePacket.class, ServerboundKeepAlivePacket::new) -+ .m_178330_(ServerboundLockDifficultyPacket.class, ServerboundLockDifficultyPacket::new) -+ .m_178330_(ServerboundMovePlayerPacket.Pos.class, ServerboundMovePlayerPacket.Pos::m_179685_) -+ .m_178330_(ServerboundMovePlayerPacket.PosRot.class, ServerboundMovePlayerPacket.PosRot::m_179687_) -+ .m_178330_(ServerboundMovePlayerPacket.Rot.class, ServerboundMovePlayerPacket.Rot::m_179689_) -+ .m_178330_(ServerboundMovePlayerPacket.StatusOnly.class, ServerboundMovePlayerPacket.StatusOnly::m_179697_) -+ .m_178330_(ServerboundMoveVehiclePacket.class, ServerboundMoveVehiclePacket::new) -+ .m_178330_(ServerboundPaddleBoatPacket.class, ServerboundPaddleBoatPacket::new) -+ .m_178330_(ServerboundPickItemPacket.class, ServerboundPickItemPacket::new) -+ .m_178330_(ServerboundPingRequestPacket.class, ServerboundPingRequestPacket::new) -+ .m_178330_(ServerboundPlaceRecipePacket.class, ServerboundPlaceRecipePacket::new) -+ .m_178330_(ServerboundPlayerAbilitiesPacket.class, ServerboundPlayerAbilitiesPacket::new) -+ .m_178330_(ServerboundPlayerActionPacket.class, ServerboundPlayerActionPacket::new) -+ .m_178330_(ServerboundPlayerCommandPacket.class, ServerboundPlayerCommandPacket::new) -+ .m_178330_(ServerboundPlayerInputPacket.class, ServerboundPlayerInputPacket::new) -+ .m_178330_(ServerboundPongPacket.class, ServerboundPongPacket::new) -+ .m_178330_(ServerboundRecipeBookChangeSettingsPacket.class, ServerboundRecipeBookChangeSettingsPacket::new) -+ .m_178330_(ServerboundRecipeBookSeenRecipePacket.class, ServerboundRecipeBookSeenRecipePacket::new) -+ .m_178330_(ServerboundRenameItemPacket.class, ServerboundRenameItemPacket::new) -+ .m_178330_(ServerboundResourcePackPacket.class, ServerboundResourcePackPacket::new) -+ .m_178330_(ServerboundSeenAdvancementsPacket.class, ServerboundSeenAdvancementsPacket::new) -+ .m_178330_(ServerboundSelectTradePacket.class, ServerboundSelectTradePacket::new) -+ .m_178330_(ServerboundSetBeaconPacket.class, ServerboundSetBeaconPacket::new) -+ .m_178330_(ServerboundSetCarriedItemPacket.class, ServerboundSetCarriedItemPacket::new) -+ .m_178330_(ServerboundSetCommandBlockPacket.class, ServerboundSetCommandBlockPacket::new) -+ .m_178330_(ServerboundSetCommandMinecartPacket.class, ServerboundSetCommandMinecartPacket::new) -+ .m_178330_(ServerboundSetCreativeModeSlotPacket.class, ServerboundSetCreativeModeSlotPacket::new) -+ .m_178330_(ServerboundSetJigsawBlockPacket.class, ServerboundSetJigsawBlockPacket::new) -+ .m_178330_(ServerboundSetStructureBlockPacket.class, ServerboundSetStructureBlockPacket::new) -+ .m_178330_(ServerboundSignUpdatePacket.class, ServerboundSignUpdatePacket::new) -+ .m_178330_(ServerboundSwingPacket.class, ServerboundSwingPacket::new) -+ .m_178330_(ServerboundTeleportToEntityPacket.class, ServerboundTeleportToEntityPacket::new) -+ .m_178330_(ServerboundUseItemOnPacket.class, ServerboundUseItemOnPacket::new) -+ .m_178330_(ServerboundUseItemPacket.class, ServerboundUseItemPacket::new) ++ .addFlow(PacketFlow.SERVERBOUND, (new ConnectionProtocol.PacketSet()) ++ .addPacket(ServerboundAcceptTeleportationPacket.class, ServerboundAcceptTeleportationPacket::new) ++ .addPacket(ServerboundBlockEntityTagQuery.class, ServerboundBlockEntityTagQuery::new) ++ .addPacket(ServerboundChangeDifficultyPacket.class, ServerboundChangeDifficultyPacket::new) ++ .addPacket(ServerboundChatAckPacket.class, ServerboundChatAckPacket::new) ++ .addPacket(ServerboundChatCommandPacket.class, ServerboundChatCommandPacket::new) ++ .addPacket(ServerboundChatPacket.class, ServerboundChatPacket::new) ++ .addPacket(ServerboundChatSessionUpdatePacket.class, ServerboundChatSessionUpdatePacket::new) ++ .addPacket(ServerboundChunkBatchReceivedPacket.class, ServerboundChunkBatchReceivedPacket::new) ++ .addPacket(ServerboundClientCommandPacket.class, ServerboundClientCommandPacket::new) ++ .addPacket(ServerboundClientInformationPacket.class, ServerboundClientInformationPacket::new) ++ .addPacket(ServerboundCommandSuggestionPacket.class, ServerboundCommandSuggestionPacket::new) ++ .addPacket(ServerboundConfigurationAcknowledgedPacket.class, ServerboundConfigurationAcknowledgedPacket::new) ++ .addPacket(ServerboundContainerButtonClickPacket.class, ServerboundContainerButtonClickPacket::new) ++ .addPacket(ServerboundContainerClickPacket.class, ServerboundContainerClickPacket::new) ++ .addPacket(ServerboundContainerClosePacket.class, ServerboundContainerClosePacket::new) ++ .addPacket(ServerboundCustomPayloadPacket.class, ServerboundCustomPayloadPacket::new) ++ .addPacket(ServerboundEditBookPacket.class, ServerboundEditBookPacket::new) ++ .addPacket(ServerboundEntityTagQuery.class, ServerboundEntityTagQuery::new) ++ .addPacket(ServerboundInteractPacket.class, ServerboundInteractPacket::new) ++ .addPacket(ServerboundJigsawGeneratePacket.class, ServerboundJigsawGeneratePacket::new) ++ .addPacket(ServerboundKeepAlivePacket.class, ServerboundKeepAlivePacket::new) ++ .addPacket(ServerboundLockDifficultyPacket.class, ServerboundLockDifficultyPacket::new) ++ .addPacket(ServerboundMovePlayerPacket.Pos.class, ServerboundMovePlayerPacket.Pos::read) ++ .addPacket(ServerboundMovePlayerPacket.PosRot.class, ServerboundMovePlayerPacket.PosRot::read) ++ .addPacket(ServerboundMovePlayerPacket.Rot.class, ServerboundMovePlayerPacket.Rot::read) ++ .addPacket(ServerboundMovePlayerPacket.StatusOnly.class, ServerboundMovePlayerPacket.StatusOnly::read) ++ .addPacket(ServerboundMoveVehiclePacket.class, ServerboundMoveVehiclePacket::new) ++ .addPacket(ServerboundPaddleBoatPacket.class, ServerboundPaddleBoatPacket::new) ++ .addPacket(ServerboundPickItemPacket.class, ServerboundPickItemPacket::new) ++ .addPacket(ServerboundPingRequestPacket.class, ServerboundPingRequestPacket::new) ++ .addPacket(ServerboundPlaceRecipePacket.class, ServerboundPlaceRecipePacket::new) ++ .addPacket(ServerboundPlayerAbilitiesPacket.class, ServerboundPlayerAbilitiesPacket::new) ++ .addPacket(ServerboundPlayerActionPacket.class, ServerboundPlayerActionPacket::new) ++ .addPacket(ServerboundPlayerCommandPacket.class, ServerboundPlayerCommandPacket::new) ++ .addPacket(ServerboundPlayerInputPacket.class, ServerboundPlayerInputPacket::new) ++ .addPacket(ServerboundPongPacket.class, ServerboundPongPacket::new) ++ .addPacket(ServerboundRecipeBookChangeSettingsPacket.class, ServerboundRecipeBookChangeSettingsPacket::new) ++ .addPacket(ServerboundRecipeBookSeenRecipePacket.class, ServerboundRecipeBookSeenRecipePacket::new) ++ .addPacket(ServerboundRenameItemPacket.class, ServerboundRenameItemPacket::new) ++ .addPacket(ServerboundResourcePackPacket.class, ServerboundResourcePackPacket::new) ++ .addPacket(ServerboundSeenAdvancementsPacket.class, ServerboundSeenAdvancementsPacket::new) ++ .addPacket(ServerboundSelectTradePacket.class, ServerboundSelectTradePacket::new) ++ .addPacket(ServerboundSetBeaconPacket.class, ServerboundSetBeaconPacket::new) ++ .addPacket(ServerboundSetCarriedItemPacket.class, ServerboundSetCarriedItemPacket::new) ++ .addPacket(ServerboundSetCommandBlockPacket.class, ServerboundSetCommandBlockPacket::new) ++ .addPacket(ServerboundSetCommandMinecartPacket.class, ServerboundSetCommandMinecartPacket::new) ++ .addPacket(ServerboundSetCreativeModeSlotPacket.class, ServerboundSetCreativeModeSlotPacket::new) ++ .addPacket(ServerboundSetJigsawBlockPacket.class, ServerboundSetJigsawBlockPacket::new) ++ .addPacket(ServerboundSetStructureBlockPacket.class, ServerboundSetStructureBlockPacket::new) ++ .addPacket(ServerboundSignUpdatePacket.class, ServerboundSignUpdatePacket::new) ++ .addPacket(ServerboundSwingPacket.class, ServerboundSwingPacket::new) ++ .addPacket(ServerboundTeleportToEntityPacket.class, ServerboundTeleportToEntityPacket::new) ++ .addPacket(ServerboundUseItemOnPacket.class, ServerboundUseItemOnPacket::new) ++ .addPacket(ServerboundUseItemPacket.class, ServerboundUseItemPacket::new) + ) + ), -+ STATUS("status", m_129600_() -+ .m_129625_(PacketFlow.SERVERBOUND, (new ConnectionProtocol.PacketSet()) -+ .m_178330_(ServerboundStatusRequestPacket.class, ServerboundStatusRequestPacket::new) -+ .m_178330_(ServerboundPingRequestPacket.class, ServerboundPingRequestPacket::new) ++ STATUS("status", protocol() ++ .addFlow(PacketFlow.SERVERBOUND, (new ConnectionProtocol.PacketSet()) ++ .addPacket(ServerboundStatusRequestPacket.class, ServerboundStatusRequestPacket::new) ++ .addPacket(ServerboundPingRequestPacket.class, ServerboundPingRequestPacket::new) + ) -+ .m_129625_(PacketFlow.CLIENTBOUND, (new ConnectionProtocol.PacketSet()) -+ .m_178330_(ClientboundStatusResponsePacket.class, ClientboundStatusResponsePacket::new) -+ .m_178330_(ClientboundPongResponsePacket.class, ClientboundPongResponsePacket::new) ++ .addFlow(PacketFlow.CLIENTBOUND, (new ConnectionProtocol.PacketSet()) ++ .addPacket(ClientboundStatusResponsePacket.class, ClientboundStatusResponsePacket::new) ++ .addPacket(ClientboundPongResponsePacket.class, ClientboundPongResponsePacket::new) + ) + ), -+ LOGIN("login", m_129600_() -+ .m_129625_(PacketFlow.CLIENTBOUND, (new ConnectionProtocol.PacketSet()) -+ .m_178330_(ClientboundLoginDisconnectPacket.class, ClientboundLoginDisconnectPacket::new) -+ .m_178330_(ClientboundHelloPacket.class, ClientboundHelloPacket::new) -+ .m_178330_(ClientboundGameProfilePacket.class, ClientboundGameProfilePacket::new) -+ .m_178330_(ClientboundLoginCompressionPacket.class, ClientboundLoginCompressionPacket::new) -+ .m_178330_(ClientboundCustomQueryPacket.class, ClientboundCustomQueryPacket::new) ++ LOGIN("login", protocol() ++ .addFlow(PacketFlow.CLIENTBOUND, (new ConnectionProtocol.PacketSet()) ++ .addPacket(ClientboundLoginDisconnectPacket.class, ClientboundLoginDisconnectPacket::new) ++ .addPacket(ClientboundHelloPacket.class, ClientboundHelloPacket::new) ++ .addPacket(ClientboundGameProfilePacket.class, ClientboundGameProfilePacket::new) ++ .addPacket(ClientboundLoginCompressionPacket.class, ClientboundLoginCompressionPacket::new) ++ .addPacket(ClientboundCustomQueryPacket.class, ClientboundCustomQueryPacket::new) + ) -+ .m_129625_(PacketFlow.SERVERBOUND, (new ConnectionProtocol.PacketSet()) -+ .m_178330_(ServerboundHelloPacket.class, ServerboundHelloPacket::new) -+ .m_178330_(ServerboundKeyPacket.class, ServerboundKeyPacket::new) -+ .m_178330_(ServerboundCustomQueryAnswerPacket.class, ServerboundCustomQueryAnswerPacket::m_294367_) -+ .m_178330_(ServerboundLoginAcknowledgedPacket.class, ServerboundLoginAcknowledgedPacket::new) ++ .addFlow(PacketFlow.SERVERBOUND, (new ConnectionProtocol.PacketSet()) ++ .addPacket(ServerboundHelloPacket.class, ServerboundHelloPacket::new) ++ .addPacket(ServerboundKeyPacket.class, ServerboundKeyPacket::new) ++ .addPacket(ServerboundCustomQueryAnswerPacket.class, ServerboundCustomQueryAnswerPacket::read) ++ .addPacket(ServerboundLoginAcknowledgedPacket.class, ServerboundLoginAcknowledgedPacket::new) + ) + ), -+ CONFIGURATION("configuration", m_129600_() -+ .m_129625_(PacketFlow.CLIENTBOUND, (new ConnectionProtocol.PacketSet()) -+ .m_178330_(ClientboundCustomPayloadPacket.class, ClientboundCustomPayloadPacket::new) -+ .m_178330_(ClientboundDisconnectPacket.class, ClientboundDisconnectPacket::new) -+ .m_178330_(ClientboundFinishConfigurationPacket.class, ClientboundFinishConfigurationPacket::new) -+ .m_178330_(ClientboundKeepAlivePacket.class, ClientboundKeepAlivePacket::new) -+ .m_178330_(ClientboundPingPacket.class, ClientboundPingPacket::new) -+ .m_178330_(ClientboundRegistryDataPacket.class, ClientboundRegistryDataPacket::new) -+ .m_178330_(ClientboundResourcePackPacket.class, ClientboundResourcePackPacket::new) -+ .m_178330_(ClientboundUpdateEnabledFeaturesPacket.class, ClientboundUpdateEnabledFeaturesPacket::new) -+ .m_178330_(ClientboundUpdateTagsPacket.class, ClientboundUpdateTagsPacket::new) ++ CONFIGURATION("configuration", protocol() ++ .addFlow(PacketFlow.CLIENTBOUND, (new ConnectionProtocol.PacketSet()) ++ .addPacket(ClientboundCustomPayloadPacket.class, ClientboundCustomPayloadPacket::new) ++ .addPacket(ClientboundDisconnectPacket.class, ClientboundDisconnectPacket::new) ++ .addPacket(ClientboundFinishConfigurationPacket.class, ClientboundFinishConfigurationPacket::new) ++ .addPacket(ClientboundKeepAlivePacket.class, ClientboundKeepAlivePacket::new) ++ .addPacket(ClientboundPingPacket.class, ClientboundPingPacket::new) ++ .addPacket(ClientboundRegistryDataPacket.class, ClientboundRegistryDataPacket::new) ++ .addPacket(ClientboundResourcePackPacket.class, ClientboundResourcePackPacket::new) ++ .addPacket(ClientboundUpdateEnabledFeaturesPacket.class, ClientboundUpdateEnabledFeaturesPacket::new) ++ .addPacket(ClientboundUpdateTagsPacket.class, ClientboundUpdateTagsPacket::new) + ) -+ .m_129625_(PacketFlow.SERVERBOUND, (new ConnectionProtocol.PacketSet()) -+ .m_178330_(ServerboundClientInformationPacket.class, ServerboundClientInformationPacket::new) -+ .m_178330_(ServerboundCustomPayloadPacket.class, ServerboundCustomPayloadPacket::new) -+ .m_178330_(ServerboundFinishConfigurationPacket.class, ServerboundFinishConfigurationPacket::new) -+ .m_178330_(ServerboundKeepAlivePacket.class, ServerboundKeepAlivePacket::new) -+ .m_178330_(ServerboundPongPacket.class, ServerboundPongPacket::new) -+ .m_178330_(ServerboundResourcePackPacket.class, ServerboundResourcePackPacket::new) ++ .addFlow(PacketFlow.SERVERBOUND, (new ConnectionProtocol.PacketSet()) ++ .addPacket(ServerboundClientInformationPacket.class, ServerboundClientInformationPacket::new) ++ .addPacket(ServerboundCustomPayloadPacket.class, ServerboundCustomPayloadPacket::new) ++ .addPacket(ServerboundFinishConfigurationPacket.class, ServerboundFinishConfigurationPacket::new) ++ .addPacket(ServerboundKeepAlivePacket.class, ServerboundKeepAlivePacket::new) ++ .addPacket(ServerboundPongPacket.class, ServerboundPongPacket::new) ++ .addPacket(ServerboundResourcePackPacket.class, ServerboundResourcePackPacket::new) + ) + ); - public static final int f_263799_ = -1; - private final String f_129573_; + public static final int NOT_REGISTERED = -1; + private final String id; diff --git a/patches/minecraft/net/minecraft/network/FriendlyByteBuf.java.patch b/patches/minecraft/net/minecraft/network/FriendlyByteBuf.java.patch index 45ea3c9081..43668fb983 100644 --- a/patches/minecraft/net/minecraft/network/FriendlyByteBuf.java.patch +++ b/patches/minecraft/net/minecraft/network/FriendlyByteBuf.java.patch @@ -6,13 +6,13 @@ -public class FriendlyByteBuf extends ByteBuf { +public class FriendlyByteBuf extends ByteBuf implements net.minecraftforge.common.extensions.IForgeFriendlyByteBuf { - public static final int f_178337_ = 2097152; - private final ByteBuf f_130049_; - public static final short f_178333_ = Short.MAX_VALUE; + public static final int DEFAULT_NBT_QUOTA = 2097152; + private final ByteBuf source; + public static final short MAX_STRING_LENGTH = Short.MAX_VALUE; @@ -577,6 +_,15 @@ } - public FriendlyByteBuf m_130055_(ItemStack p_130056_) { + public FriendlyByteBuf writeItem(ItemStack p_130056_) { + return writeItemStack(p_130056_, true); + } + @@ -22,26 +22,26 @@ + * If you want to send the FULL tag set limitedTag to false + */ + public FriendlyByteBuf writeItemStack(ItemStack p_130056_, boolean limitedTag) { - if (p_130056_.m_41619_()) { + if (p_130056_.isEmpty()) { this.writeBoolean(false); } else { @@ -585,8 +_,8 @@ - this.m_236818_(BuiltInRegistries.f_257033_, item); - this.writeByte(p_130056_.m_41613_()); + this.writeId(BuiltInRegistries.ITEM, item); + this.writeByte(p_130056_.getCount()); CompoundTag compoundtag = null; -- if (item.m_41465_() || item.m_41468_()) { -- compoundtag = p_130056_.m_41783_(); -+ if (item.isDamageable(p_130056_) || item.m_41468_()) { -+ compoundtag = limitedTag ? p_130056_.getShareTag() : p_130056_.m_41783_(); +- if (item.canBeDepleted() || item.shouldOverrideMultiplayerNbt()) { +- compoundtag = p_130056_.getTag(); ++ if (item.isDamageable(p_130056_) || item.shouldOverrideMultiplayerNbt()) { ++ compoundtag = limitedTag ? p_130056_.getShareTag() : p_130056_.getTag(); } - this.m_130079_(compoundtag); + this.writeNbt(compoundtag); @@ -602,7 +_,7 @@ - Item item = this.m_236816_(BuiltInRegistries.f_257033_); + Item item = this.readById(BuiltInRegistries.ITEM); int i = this.readByte(); ItemStack itemstack = new ItemStack(item, i); -- itemstack.m_41751_(this.m_130260_()); -+ itemstack.readShareTag(this.m_130260_()); +- itemstack.setTag(this.readNbt()); ++ itemstack.readShareTag(this.readNbt()); return itemstack; } } diff --git a/patches/minecraft/net/minecraft/network/chat/contents/TranslatableContents.java.patch b/patches/minecraft/net/minecraft/network/chat/contents/TranslatableContents.java.patch index d4b8601c09..87e97fb2bf 100644 --- a/patches/minecraft/net/minecraft/network/chat/contents/TranslatableContents.java.patch +++ b/patches/minecraft/net/minecraft/network/chat/contents/TranslatableContents.java.patch @@ -6,7 +6,7 @@ + if (j == 0) { + // Forge has some special formatting handlers defined in ForgeI18n, use those if no %s replacements present. -+ j = net.minecraftforge.internal.TextComponentMessageFormatHandler.handle(this, p_237517_, this.f_237498_, p_237516_); ++ j = net.minecraftforge.internal.TextComponentMessageFormatHandler.handle(this, p_237517_, this.args, p_237516_); + } + if (j < p_237516_.length()) { diff --git a/patches/minecraft/net/minecraft/network/protocol/common/ClientboundCustomPayloadPacket.java.patch b/patches/minecraft/net/minecraft/network/protocol/common/ClientboundCustomPayloadPacket.java.patch index dad0e933a1..c796febac2 100644 --- a/patches/minecraft/net/minecraft/network/protocol/common/ClientboundCustomPayloadPacket.java.patch +++ b/patches/minecraft/net/minecraft/network/protocol/common/ClientboundCustomPayloadPacket.java.patch @@ -4,13 +4,13 @@ import net.minecraft.network.protocol.common.custom.WorldGenAttemptDebugPayload; import net.minecraft.resources.ResourceLocation; --public record ClientboundCustomPayloadPacket(CustomPacketPayload f_291001_) implements Packet { -+public record ClientboundCustomPayloadPacket(CustomPacketPayload f_291001_) implements Packet, net.minecraftforge.network.ICustomPacket { - private static final int f_290501_ = 1048576; - private static final Map> f_290559_ = ImmutableMap.>builder().put(BrandPayload.f_291556_, BrandPayload::new).put(BeeDebugPayload.f_290721_, BeeDebugPayload::new).put(BrainDebugPayload.f_290905_, BrainDebugPayload::new).put(GameEventDebugPayload.f_290615_, GameEventDebugPayload::new).put(GameEventListenerDebugPayload.f_290865_, GameEventListenerDebugPayload::new).put(GameTestAddMarkerDebugPayload.f_291461_, GameTestAddMarkerDebugPayload::new).put(GameTestClearMarkersDebugPayload.f_291366_, GameTestClearMarkersDebugPayload::new).put(GoalDebugPayload.f_290680_, GoalDebugPayload::new).put(HiveDebugPayload.f_291748_, HiveDebugPayload::new).put(NeighborUpdatesDebugPayload.f_291649_, NeighborUpdatesDebugPayload::new).put(PathfindingDebugPayload.f_291536_, PathfindingDebugPayload::new).put(PoiAddedDebugPayload.f_290556_, PoiAddedDebugPayload::new).put(PoiRemovedDebugPayload.f_291534_, PoiRemovedDebugPayload::new).put(PoiTicketCountDebugPayload.f_291088_, PoiTicketCountDebugPayload::new).put(RaidsDebugPayload.f_291341_, RaidsDebugPayload::new).put(StructuresDebugPayload.f_291313_, StructuresDebugPayload::new).put(VillageSectionsDebugPayload.f_291109_, VillageSectionsDebugPayload::new).put(WorldGenAttemptDebugPayload.f_291888_, WorldGenAttemptDebugPayload::new).build(); +-public record ClientboundCustomPayloadPacket(CustomPacketPayload payload) implements Packet { ++public record ClientboundCustomPayloadPacket(CustomPacketPayload payload) implements Packet, net.minecraftforge.network.ICustomPacket { + private static final int MAX_PAYLOAD_SIZE = 1048576; + private static final Map> KNOWN_TYPES = ImmutableMap.>builder().put(BrandPayload.ID, BrandPayload::new).put(BeeDebugPayload.ID, BeeDebugPayload::new).put(BrainDebugPayload.ID, BrainDebugPayload::new).put(GameEventDebugPayload.ID, GameEventDebugPayload::new).put(GameEventListenerDebugPayload.ID, GameEventListenerDebugPayload::new).put(GameTestAddMarkerDebugPayload.ID, GameTestAddMarkerDebugPayload::new).put(GameTestClearMarkersDebugPayload.ID, GameTestClearMarkersDebugPayload::new).put(GoalDebugPayload.ID, GoalDebugPayload::new).put(HiveDebugPayload.ID, HiveDebugPayload::new).put(NeighborUpdatesDebugPayload.ID, NeighborUpdatesDebugPayload::new).put(PathfindingDebugPayload.ID, PathfindingDebugPayload::new).put(PoiAddedDebugPayload.ID, PoiAddedDebugPayload::new).put(PoiRemovedDebugPayload.ID, PoiRemovedDebugPayload::new).put(PoiTicketCountDebugPayload.ID, PoiTicketCountDebugPayload::new).put(RaidsDebugPayload.ID, RaidsDebugPayload::new).put(StructuresDebugPayload.ID, StructuresDebugPayload::new).put(VillageSectionsDebugPayload.ID, VillageSectionsDebugPayload::new).put(WorldGenAttemptDebugPayload.ID, WorldGenAttemptDebugPayload::new).build(); @@ -42,8 +_,7 @@ - private static DiscardedPayload m_294768_(ResourceLocation p_299265_, FriendlyByteBuf p_297545_) { + private static DiscardedPayload readUnknownPayload(ResourceLocation p_299265_, FriendlyByteBuf p_297545_) { int i = p_297545_.readableBytes(); if (i >= 0 && i <= 1048576) { - p_297545_.skipBytes(i); @@ -20,11 +20,11 @@ throw new IllegalArgumentException("Payload may not be larger than 1048576 bytes"); } @@ -57,4 +_,8 @@ - public void m_5797_(ClientCommonPacketListener p_299773_) { - p_299773_.m_293213_(this); + public void handle(ClientCommonPacketListener p_299773_) { + p_299773_.handleCustomPayload(this); } + -+ @Override public @org.jetbrains.annotations.Nullable FriendlyByteBuf getInternalData() { return f_291001_ instanceof DiscardedPayload dc ? dc.data() : null; } -+ @Override public ResourceLocation getName() { return f_291001_.m_292644_(); } ++ @Override public @org.jetbrains.annotations.Nullable FriendlyByteBuf getInternalData() { return payload instanceof DiscardedPayload dc ? dc.data() : null; } ++ @Override public ResourceLocation getName() { return payload.id(); } + @Override public int getIndex() { return 0; } } diff --git a/patches/minecraft/net/minecraft/network/protocol/common/ServerboundCustomPayloadPacket.java.patch b/patches/minecraft/net/minecraft/network/protocol/common/ServerboundCustomPayloadPacket.java.patch index b96e87ccdd..8751605418 100644 --- a/patches/minecraft/net/minecraft/network/protocol/common/ServerboundCustomPayloadPacket.java.patch +++ b/patches/minecraft/net/minecraft/network/protocol/common/ServerboundCustomPayloadPacket.java.patch @@ -4,13 +4,13 @@ import net.minecraft.network.protocol.common.custom.DiscardedPayload; import net.minecraft.resources.ResourceLocation; --public record ServerboundCustomPayloadPacket(CustomPacketPayload f_291328_) implements Packet { -+public record ServerboundCustomPayloadPacket(CustomPacketPayload f_291328_) implements Packet, net.minecraftforge.network.ICustomPacket { - private static final int f_290599_ = 32767; - private static final Map> f_291010_ = ImmutableMap.>builder().put(BrandPayload.f_291556_, BrandPayload::new).build(); +-public record ServerboundCustomPayloadPacket(CustomPacketPayload payload) implements Packet { ++public record ServerboundCustomPayloadPacket(CustomPacketPayload payload) implements Packet, net.minecraftforge.network.ICustomPacket { + private static final int MAX_PAYLOAD_SIZE = 32767; + private static final Map> KNOWN_TYPES = ImmutableMap.>builder().put(BrandPayload.ID, BrandPayload::new).build(); @@ -25,8 +_,7 @@ - private static DiscardedPayload m_295544_(ResourceLocation p_300234_, FriendlyByteBuf p_299925_) { + private static DiscardedPayload readUnknownPayload(ResourceLocation p_300234_, FriendlyByteBuf p_299925_) { int i = p_299925_.readableBytes(); if (i >= 0 && i <= 32767) { - p_299925_.skipBytes(i); @@ -20,11 +20,11 @@ throw new IllegalArgumentException("Payload may not be larger than 32767 bytes"); } @@ -40,4 +_,8 @@ - public void m_5797_(ServerCommonPacketListener p_297991_) { - p_297991_.m_293234_(this); + public void handle(ServerCommonPacketListener p_297991_) { + p_297991_.handleCustomPayload(this); } + -+ @Override public @org.jetbrains.annotations.Nullable FriendlyByteBuf getInternalData() { return f_291328_ instanceof DiscardedPayload dc ? dc.data() : null; } -+ @Override public ResourceLocation getName() { return f_291328_.m_292644_(); } ++ @Override public @org.jetbrains.annotations.Nullable FriendlyByteBuf getInternalData() { return payload instanceof DiscardedPayload dc ? dc.data() : null; } ++ @Override public ResourceLocation getName() { return payload.id(); } + @Override public int getIndex() { return 0; } } diff --git a/patches/minecraft/net/minecraft/network/protocol/common/custom/DiscardedPayload.java.patch b/patches/minecraft/net/minecraft/network/protocol/common/custom/DiscardedPayload.java.patch index 400d0c9f7e..35a5bc9c0d 100644 --- a/patches/minecraft/net/minecraft/network/protocol/common/custom/DiscardedPayload.java.patch +++ b/patches/minecraft/net/minecraft/network/protocol/common/custom/DiscardedPayload.java.patch @@ -4,15 +4,15 @@ import net.minecraft.network.FriendlyByteBuf; import net.minecraft.resources.ResourceLocation; --public record DiscardedPayload(ResourceLocation f_291401_) implements CustomPacketPayload { -+public record DiscardedPayload(ResourceLocation f_291401_, @org.jetbrains.annotations.Nullable FriendlyByteBuf data) implements CustomPacketPayload { -+ public DiscardedPayload(ResourceLocation f_291401_) { -+ this(f_291401_, null); +-public record DiscardedPayload(ResourceLocation id) implements CustomPacketPayload { ++public record DiscardedPayload(ResourceLocation id, @org.jetbrains.annotations.Nullable FriendlyByteBuf data) implements CustomPacketPayload { ++ public DiscardedPayload(ResourceLocation id) { ++ this(id, null); + } + - public void m_293110_(FriendlyByteBuf p_301050_) { + public void write(FriendlyByteBuf p_301050_) { + if (data != null) + p_301050_.writeBytes(data.slice()); } - public ResourceLocation m_292644_() { + public ResourceLocation id() { diff --git a/patches/minecraft/net/minecraft/network/protocol/game/ServerboundContainerClickPacket.java.patch b/patches/minecraft/net/minecraft/network/protocol/game/ServerboundContainerClickPacket.java.patch index 048cadd823..fb7a7cfa5c 100644 --- a/patches/minecraft/net/minecraft/network/protocol/game/ServerboundContainerClickPacket.java.patch +++ b/patches/minecraft/net/minecraft/network/protocol/game/ServerboundContainerClickPacket.java.patch @@ -1,11 +1,11 @@ --- a/net/minecraft/network/protocol/game/ServerboundContainerClickPacket.java +++ b/net/minecraft/network/protocol/game/ServerboundContainerClickPacket.java @@ -49,7 +_,7 @@ - p_133961_.writeByte(this.f_133941_); - p_133961_.m_130068_(this.f_133944_); - p_133961_.m_236831_(this.f_179569_, FriendlyByteBuf::writeShort, FriendlyByteBuf::m_130055_); -- p_133961_.m_130055_(this.f_179568_); -+ p_133961_.writeItemStack(this.f_179568_, false); //Forge: Include full tag for C->S + p_133961_.writeByte(this.buttonNum); + p_133961_.writeEnum(this.clickType); + p_133961_.writeMap(this.changedSlots, FriendlyByteBuf::writeShort, FriendlyByteBuf::writeItem); +- p_133961_.writeItem(this.carriedItem); ++ p_133961_.writeItemStack(this.carriedItem, false); //Forge: Include full tag for C->S } - public void m_5797_(ServerGamePacketListener p_133958_) { + public void handle(ServerGamePacketListener p_133958_) { diff --git a/patches/minecraft/net/minecraft/network/protocol/game/ServerboundSetCreativeModeSlotPacket.java.patch b/patches/minecraft/net/minecraft/network/protocol/game/ServerboundSetCreativeModeSlotPacket.java.patch index 2c33635a14..e43ba89d5a 100644 --- a/patches/minecraft/net/minecraft/network/protocol/game/ServerboundSetCreativeModeSlotPacket.java.patch +++ b/patches/minecraft/net/minecraft/network/protocol/game/ServerboundSetCreativeModeSlotPacket.java.patch @@ -2,10 +2,10 @@ +++ b/net/minecraft/network/protocol/game/ServerboundSetCreativeModeSlotPacket.java @@ -24,7 +_,7 @@ - public void m_5779_(FriendlyByteBuf p_134563_) { - p_134563_.writeShort(this.f_134549_); -- p_134563_.m_130055_(this.f_134550_); -+ p_134563_.writeItemStack(this.f_134550_, false); //Forge: Include full tag for C->S + public void write(FriendlyByteBuf p_134563_) { + p_134563_.writeShort(this.slotNum); +- p_134563_.writeItem(this.itemStack); ++ p_134563_.writeItemStack(this.itemStack, false); //Forge: Include full tag for C->S } - public int m_134561_() { + public int getSlotNum() { diff --git a/patches/minecraft/net/minecraft/network/protocol/login/ClientboundCustomQueryPacket.java.patch b/patches/minecraft/net/minecraft/network/protocol/login/ClientboundCustomQueryPacket.java.patch index 0aa34ba0ed..772ec61e45 100644 --- a/patches/minecraft/net/minecraft/network/protocol/login/ClientboundCustomQueryPacket.java.patch +++ b/patches/minecraft/net/minecraft/network/protocol/login/ClientboundCustomQueryPacket.java.patch @@ -4,13 +4,13 @@ import net.minecraft.network.protocol.login.custom.DiscardedQueryPayload; import net.minecraft.resources.ResourceLocation; --public record ClientboundCustomQueryPacket(int f_134745_, CustomQueryPayload f_291166_) implements Packet { -+public record ClientboundCustomQueryPacket(int f_134745_, CustomQueryPayload f_291166_) implements Packet, net.minecraftforge.network.ICustomPacket { - private static final int f_179804_ = 1048576; +-public record ClientboundCustomQueryPacket(int transactionId, CustomQueryPayload payload) implements Packet { ++public record ClientboundCustomQueryPacket(int transactionId, CustomQueryPayload payload) implements Packet, net.minecraftforge.network.ICustomPacket { + private static final int MAX_PAYLOAD_SIZE = 1048576; public ClientboundCustomQueryPacket(FriendlyByteBuf p_179810_) { @@ -20,8 +_,7 @@ - private static DiscardedQueryPayload m_294633_(ResourceLocation p_299981_, FriendlyByteBuf p_297706_) { + private static DiscardedQueryPayload readUnknownPayload(ResourceLocation p_299981_, FriendlyByteBuf p_297706_) { int i = p_297706_.readableBytes(); if (i >= 0 && i <= 1048576) { - p_297706_.skipBytes(i); @@ -20,11 +20,11 @@ throw new IllegalArgumentException("Payload may not be larger than 1048576 bytes"); } @@ -36,4 +_,8 @@ - public void m_5797_(ClientLoginPacketListener p_134754_) { - p_134754_.m_7254_(this); + public void handle(ClientLoginPacketListener p_134754_) { + p_134754_.handleCustomQuery(this); } + -+ @Override public int getIndex() { return f_134745_(); } -+ @Override public ResourceLocation getName() { return this.f_291166_.m_293131_(); } -+ @org.jetbrains.annotations.Nullable @Override public FriendlyByteBuf getInternalData() { return ((DiscardedQueryPayload)this.f_291166_).data(); } ++ @Override public int getIndex() { return transactionId(); } ++ @Override public ResourceLocation getName() { return this.payload.id(); } ++ @org.jetbrains.annotations.Nullable @Override public FriendlyByteBuf getInternalData() { return ((DiscardedQueryPayload)this.payload).data(); } } diff --git a/patches/minecraft/net/minecraft/network/protocol/login/ServerboundCustomQueryAnswerPacket.java.patch b/patches/minecraft/net/minecraft/network/protocol/login/ServerboundCustomQueryAnswerPacket.java.patch index 911b2352ed..d21e5dd918 100644 --- a/patches/minecraft/net/minecraft/network/protocol/login/ServerboundCustomQueryAnswerPacket.java.patch +++ b/patches/minecraft/net/minecraft/network/protocol/login/ServerboundCustomQueryAnswerPacket.java.patch @@ -4,27 +4,27 @@ import net.minecraft.network.protocol.login.custom.CustomQueryAnswerPayload; import net.minecraft.network.protocol.login.custom.DiscardedQueryAnswerPayload; --public record ServerboundCustomQueryAnswerPacket(int f_290801_, @Nullable CustomQueryAnswerPayload f_290461_) implements Packet { -+public record ServerboundCustomQueryAnswerPacket(int f_290801_, @Nullable CustomQueryAnswerPayload f_290461_) implements Packet, net.minecraftforge.network.ICustomPacket { - private static final int f_290617_ = 1048576; +-public record ServerboundCustomQueryAnswerPacket(int transactionId, @Nullable CustomQueryAnswerPayload payload) implements Packet { ++public record ServerboundCustomQueryAnswerPacket(int transactionId, @Nullable CustomQueryAnswerPayload payload) implements Packet, net.minecraftforge.network.ICustomPacket { + private static final int MAX_PAYLOAD_SIZE = 1048576; - public static ServerboundCustomQueryAnswerPacket m_294367_(FriendlyByteBuf p_300962_) { + public static ServerboundCustomQueryAnswerPacket read(FriendlyByteBuf p_300962_) { @@ -21,8 +_,7 @@ - private static CustomQueryAnswerPayload m_294815_(FriendlyByteBuf p_299934_) { + private static CustomQueryAnswerPayload readUnknownPayload(FriendlyByteBuf p_299934_) { int i = p_299934_.readableBytes(); if (i >= 0 && i <= 1048576) { - p_299934_.skipBytes(i); -- return DiscardedQueryAnswerPayload.f_290582_; +- return DiscardedQueryAnswerPayload.INSTANCE; + return new DiscardedQueryAnswerPayload(new FriendlyByteBuf(p_299934_.readBytes(i))); } else { throw new IllegalArgumentException("Payload may not be larger than 1048576 bytes"); } @@ -38,4 +_,8 @@ - public void m_5797_(ServerLoginPacketListener p_298492_) { - p_298492_.m_10044_(this); + public void handle(ServerLoginPacketListener p_298492_) { + p_298492_.handleCustomQueryPacket(this); } + -+ @Nullable @Override public FriendlyByteBuf getInternalData() { return this.f_290461_ instanceof DiscardedQueryAnswerPayload dc ? dc.data() : null; } ++ @Nullable @Override public FriendlyByteBuf getInternalData() { return this.payload instanceof DiscardedQueryAnswerPayload dc ? dc.data() : null; } + @Override public net.minecraft.resources.ResourceLocation getName() { return net.minecraftforge.network.NetworkInitialization.LOGIN_NAME; } -+ @Override public int getIndex() { return f_290801_(); } ++ @Override public int getIndex() { return transactionId(); } } diff --git a/patches/minecraft/net/minecraft/network/protocol/login/custom/DiscardedQueryAnswerPayload.java.patch b/patches/minecraft/net/minecraft/network/protocol/login/custom/DiscardedQueryAnswerPayload.java.patch index cdd949edc1..d495c1c630 100644 --- a/patches/minecraft/net/minecraft/network/protocol/login/custom/DiscardedQueryAnswerPayload.java.patch +++ b/patches/minecraft/net/minecraft/network/protocol/login/custom/DiscardedQueryAnswerPayload.java.patch @@ -6,13 +6,13 @@ -public record DiscardedQueryAnswerPayload() implements CustomQueryAnswerPayload { +public record DiscardedQueryAnswerPayload(@javax.annotation.Nullable FriendlyByteBuf data) implements CustomQueryAnswerPayload { - public static final DiscardedQueryAnswerPayload f_290582_ = new DiscardedQueryAnswerPayload(); + public static final DiscardedQueryAnswerPayload INSTANCE = new DiscardedQueryAnswerPayload(); + public DiscardedQueryAnswerPayload() { + this(null); + } + - public void m_295630_(FriendlyByteBuf p_299186_) { + public void write(FriendlyByteBuf p_299186_) { + if (this.data != null) + p_299186_.writeBytes(this.data.slice()); } diff --git a/patches/minecraft/net/minecraft/network/protocol/login/custom/DiscardedQueryPayload.java.patch b/patches/minecraft/net/minecraft/network/protocol/login/custom/DiscardedQueryPayload.java.patch index 58fcac5925..25793ba9a5 100644 --- a/patches/minecraft/net/minecraft/network/protocol/login/custom/DiscardedQueryPayload.java.patch +++ b/patches/minecraft/net/minecraft/network/protocol/login/custom/DiscardedQueryPayload.java.patch @@ -4,15 +4,15 @@ import net.minecraft.network.FriendlyByteBuf; import net.minecraft.resources.ResourceLocation; --public record DiscardedQueryPayload(ResourceLocation f_291669_) implements CustomQueryPayload { -+public record DiscardedQueryPayload(ResourceLocation f_291669_, @org.jetbrains.annotations.Nullable FriendlyByteBuf data) implements CustomQueryPayload { -+ public DiscardedQueryPayload(ResourceLocation f_291669_) { -+ this(f_291669_, null); +-public record DiscardedQueryPayload(ResourceLocation id) implements CustomQueryPayload { ++public record DiscardedQueryPayload(ResourceLocation id, @org.jetbrains.annotations.Nullable FriendlyByteBuf data) implements CustomQueryPayload { ++ public DiscardedQueryPayload(ResourceLocation id) { ++ this(id, null); + } + - public void m_294761_(FriendlyByteBuf p_299949_) { + public void write(FriendlyByteBuf p_299949_) { + if (this.data != null) + p_299949_.writeBytes(this.data.slice()); } - public ResourceLocation m_293131_() { + public ResourceLocation id() { diff --git a/patches/minecraft/net/minecraft/network/protocol/status/ClientboundStatusResponsePacket.java.patch b/patches/minecraft/net/minecraft/network/protocol/status/ClientboundStatusResponsePacket.java.patch index ad03db7971..57848fa3db 100644 --- a/patches/minecraft/net/minecraft/network/protocol/status/ClientboundStatusResponsePacket.java.patch +++ b/patches/minecraft/net/minecraft/network/protocol/status/ClientboundStatusResponsePacket.java.patch @@ -4,19 +4,19 @@ import net.minecraft.network.FriendlyByteBuf; import net.minecraft.network.protocol.Packet; --public record ClientboundStatusResponsePacket(ServerStatus f_134886_) implements Packet { -+public record ClientboundStatusResponsePacket(ServerStatus f_134886_, @org.jetbrains.annotations.Nullable String cachedStatus) implements Packet { -+ public ClientboundStatusResponsePacket(ServerStatus f_134886_) { -+ this(f_134886_, null); +-public record ClientboundStatusResponsePacket(ServerStatus status) implements Packet { ++public record ClientboundStatusResponsePacket(ServerStatus status, @org.jetbrains.annotations.Nullable String cachedStatus) implements Packet { ++ public ClientboundStatusResponsePacket(ServerStatus status) { ++ this(status, null); + } + public ClientboundStatusResponsePacket(FriendlyByteBuf p_179834_) { - this(p_179834_.m_271872_(ServerStatus.f_271163_)); + this(p_179834_.readJsonWithCodec(ServerStatus.CODEC)); } - public void m_5779_(FriendlyByteBuf p_134899_) { -+ if (cachedStatus != null) p_134899_.m_130070_(cachedStatus); + public void write(FriendlyByteBuf p_134899_) { ++ if (cachedStatus != null) p_134899_.writeUtf(cachedStatus); + else - p_134899_.m_272073_(ServerStatus.f_271163_, this.f_134886_); + p_134899_.writeJsonWithCodec(ServerStatus.CODEC, this.status); } diff --git a/patches/minecraft/net/minecraft/network/protocol/status/ServerStatus.java.patch b/patches/minecraft/net/minecraft/network/protocol/status/ServerStatus.java.patch index 5a7a7975f1..4bce063d55 100644 --- a/patches/minecraft/net/minecraft/network/protocol/status/ServerStatus.java.patch +++ b/patches/minecraft/net/minecraft/network/protocol/status/ServerStatus.java.patch @@ -4,11 +4,11 @@ import net.minecraft.network.chat.Component; import net.minecraft.util.ExtraCodecs; --public record ServerStatus(Component f_134900_, Optional f_134901_, Optional f_134902_, Optional f_134903_, boolean f_242955_) { -+public record ServerStatus(Component f_134900_, Optional f_134901_, Optional f_134902_, Optional f_134903_, boolean f_242955_, Optional forgeData) { - public static final Codec f_271163_ = RecordCodecBuilder.create((p_273270_) -> { -- return p_273270_.group(ExtraCodecs.f_252442_.optionalFieldOf("description", CommonComponents.f_237098_).forGetter(ServerStatus::f_134900_), ServerStatus.Players.f_271480_.optionalFieldOf("players").forGetter(ServerStatus::f_134901_), ServerStatus.Version.f_271272_.optionalFieldOf("version").forGetter(ServerStatus::f_134902_), ServerStatus.Favicon.f_271281_.optionalFieldOf("favicon").forGetter(ServerStatus::f_134903_), Codec.BOOL.optionalFieldOf("enforcesSecureChat", Boolean.valueOf(false)).forGetter(ServerStatus::f_242955_)).apply(p_273270_, ServerStatus::new); -+ return p_273270_.group(ExtraCodecs.f_252442_.optionalFieldOf("description", CommonComponents.f_237098_).forGetter(ServerStatus::f_134900_), ServerStatus.Players.f_271480_.optionalFieldOf("players").forGetter(ServerStatus::f_134901_), ServerStatus.Version.f_271272_.optionalFieldOf("version").forGetter(ServerStatus::f_134902_), ServerStatus.Favicon.f_271281_.optionalFieldOf("favicon").forGetter(ServerStatus::f_134903_), Codec.BOOL.optionalFieldOf("enforcesSecureChat", Boolean.valueOf(false)).forGetter(ServerStatus::f_242955_), net.minecraftforge.network.ServerStatusPing.CODEC.optionalFieldOf("forgeData").forGetter(ServerStatus::forgeData)).apply(p_273270_, ServerStatus::new); +-public record ServerStatus(Component description, Optional players, Optional version, Optional favicon, boolean enforcesSecureChat) { ++public record ServerStatus(Component description, Optional players, Optional version, Optional favicon, boolean enforcesSecureChat, Optional forgeData) { + public static final Codec CODEC = RecordCodecBuilder.create((p_273270_) -> { +- return p_273270_.group(ExtraCodecs.COMPONENT.optionalFieldOf("description", CommonComponents.EMPTY).forGetter(ServerStatus::description), ServerStatus.Players.CODEC.optionalFieldOf("players").forGetter(ServerStatus::players), ServerStatus.Version.CODEC.optionalFieldOf("version").forGetter(ServerStatus::version), ServerStatus.Favicon.CODEC.optionalFieldOf("favicon").forGetter(ServerStatus::favicon), Codec.BOOL.optionalFieldOf("enforcesSecureChat", Boolean.valueOf(false)).forGetter(ServerStatus::enforcesSecureChat)).apply(p_273270_, ServerStatus::new); ++ return p_273270_.group(ExtraCodecs.COMPONENT.optionalFieldOf("description", CommonComponents.EMPTY).forGetter(ServerStatus::description), ServerStatus.Players.CODEC.optionalFieldOf("players").forGetter(ServerStatus::players), ServerStatus.Version.CODEC.optionalFieldOf("version").forGetter(ServerStatus::version), ServerStatus.Favicon.CODEC.optionalFieldOf("favicon").forGetter(ServerStatus::favicon), Codec.BOOL.optionalFieldOf("enforcesSecureChat", Boolean.valueOf(false)).forGetter(ServerStatus::enforcesSecureChat), net.minecraftforge.network.ServerStatusPing.CODEC.optionalFieldOf("forgeData").forGetter(ServerStatus::forgeData)).apply(p_273270_, ServerStatus::new); }); - public static record Favicon(byte[] f_271462_) { + public static record Favicon(byte[] iconBytes) { diff --git a/patches/minecraft/net/minecraft/network/syncher/EntityDataSerializers.java.patch b/patches/minecraft/net/minecraft/network/syncher/EntityDataSerializers.java.patch index 2d6c628ccb..dc275ca4bd 100644 --- a/patches/minecraft/net/minecraft/network/syncher/EntityDataSerializers.java.patch +++ b/patches/minecraft/net/minecraft/network/syncher/EntityDataSerializers.java.patch @@ -1,22 +1,22 @@ --- a/net/minecraft/network/syncher/EntityDataSerializers.java +++ b/net/minecraft/network/syncher/EntityDataSerializers.java @@ -142,16 +_,16 @@ - public static final EntityDataSerializer f_268624_ = EntityDataSerializer.m_238095_(FriendlyByteBuf::m_269101_, FriendlyByteBuf::m_269131_); + public static final EntityDataSerializer QUATERNION = EntityDataSerializer.simple(FriendlyByteBuf::writeQuaternion, FriendlyByteBuf::readQuaternion); - public static void m_135050_(EntityDataSerializer p_135051_) { -- f_135046_.m_13569_(p_135051_); -+ if (f_135046_.m_13569_(p_135051_) >= 256) throw new RuntimeException("Vanilla DataSerializer ID limit exceeded"); + public static void registerSerializer(EntityDataSerializer p_135051_) { +- SERIALIZERS.add(p_135051_); ++ if (SERIALIZERS.add(p_135051_) >= 256) throw new RuntimeException("Vanilla DataSerializer ID limit exceeded"); } @Nullable - public static EntityDataSerializer m_135048_(int p_135049_) { -- return f_135046_.m_7942_(p_135049_); -+ return net.minecraftforge.common.ForgeHooks.getSerializer(p_135049_, f_135046_); + public static EntityDataSerializer getSerializer(int p_135049_) { +- return SERIALIZERS.byId(p_135049_); ++ return net.minecraftforge.common.ForgeHooks.getSerializer(p_135049_, SERIALIZERS); } - public static int m_135052_(EntityDataSerializer p_135053_) { -- return f_135046_.m_7447_(p_135053_); -+ return net.minecraftforge.common.ForgeHooks.getSerializerId(p_135053_, f_135046_); + public static int getSerializedId(EntityDataSerializer p_135053_) { +- return SERIALIZERS.getId(p_135053_); ++ return net.minecraftforge.common.ForgeHooks.getSerializerId(p_135053_, SERIALIZERS); } private EntityDataSerializers() { diff --git a/patches/minecraft/net/minecraft/network/syncher/SynchedEntityData.java.patch b/patches/minecraft/net/minecraft/network/syncher/SynchedEntityData.java.patch index bb12886083..b13f71afc6 100644 --- a/patches/minecraft/net/minecraft/network/syncher/SynchedEntityData.java.patch +++ b/patches/minecraft/net/minecraft/network/syncher/SynchedEntityData.java.patch @@ -3,16 +3,16 @@ @@ -36,11 +_,13 @@ } - public static EntityDataAccessor m_135353_(Class p_135354_, EntityDataSerializer p_135355_) { -- if (f_135342_.isDebugEnabled()) { -+ if (true || f_135342_.isDebugEnabled()) { // Forge: This is very useful for mods that register keys on classes that are not their own + public static EntityDataAccessor defineId(Class p_135354_, EntityDataSerializer p_135355_) { +- if (LOGGER.isDebugEnabled()) { ++ if (true || LOGGER.isDebugEnabled()) { // Forge: This is very useful for mods that register keys on classes that are not their own try { Class oclass = Class.forName(Thread.currentThread().getStackTrace()[2].getClassName()); if (!oclass.equals(p_135354_)) { -- f_135342_.debug("defineId called for: {} from {}", p_135354_, oclass, new RuntimeException()); +- LOGGER.debug("defineId called for: {} from {}", p_135354_, oclass, new RuntimeException()); + // Forge: log at warn, mods should not add to classes that they don't own, and only add stacktrace when in debug is enabled as it is mostly not needed and consumes time -+ if (f_135342_.isDebugEnabled()) f_135342_.warn("defineId called for: {} from {}", p_135354_, oclass, new RuntimeException()); -+ else f_135342_.warn("defineId called for: {} from {}", p_135354_, oclass); ++ if (LOGGER.isDebugEnabled()) LOGGER.warn("defineId called for: {} from {}", p_135354_, oclass, new RuntimeException()); ++ else LOGGER.warn("defineId called for: {} from {}", p_135354_, oclass); } } catch (ClassNotFoundException classnotfoundexception) { } diff --git a/patches/minecraft/net/minecraft/recipebook/PlaceRecipe.java.patch b/patches/minecraft/net/minecraft/recipebook/PlaceRecipe.java.patch index 4aa5b7eaa3..e0b3d195e0 100644 --- a/patches/minecraft/net/minecraft/recipebook/PlaceRecipe.java.patch +++ b/patches/minecraft/net/minecraft/recipebook/PlaceRecipe.java.patch @@ -3,10 +3,10 @@ @@ -11,9 +_,9 @@ int i = p_135409_; int j = p_135410_; - Recipe recipe = p_298822_.f_291008_(); + Recipe recipe = p_298822_.value(); - if (recipe instanceof ShapedRecipe shapedrecipe) { -- i = shapedrecipe.m_44220_(); -- j = shapedrecipe.m_44221_(); +- i = shapedrecipe.getWidth(); +- j = shapedrecipe.getHeight(); + if (recipe instanceof net.minecraftforge.common.crafting.IShapedRecipe shapedrecipe) { + i = shapedrecipe.getRecipeWidth(); + j = shapedrecipe.getRecipeHeight(); diff --git a/patches/minecraft/net/minecraft/resources/HolderSetCodec.java.patch b/patches/minecraft/net/minecraft/resources/HolderSetCodec.java.patch index 18431a8639..a0c4ec91e1 100644 --- a/patches/minecraft/net/minecraft/resources/HolderSetCodec.java.patch +++ b/patches/minecraft/net/minecraft/resources/HolderSetCodec.java.patch @@ -1,35 +1,35 @@ --- a/net/minecraft/resources/HolderSetCodec.java +++ b/net/minecraft/resources/HolderSetCodec.java @@ -21,6 +_,8 @@ - private final Codec> f_206656_; - private final Codec>> f_206657_; - private final Codec, List>>> f_206658_; + private final Codec> elementCodec; + private final Codec>> homogenousListCodec; + private final Codec, List>>> registryAwareCodec; + private final Codec> forgeDispatchCodec; + private final Codec, Either, List>>>> combinedCodec; - private static Codec>> m_206667_(Codec> p_206668_, boolean p_206669_) { - Codec>> codec = ExtraCodecs.m_264370_(p_206668_.listOf(), ExtraCodecs.m_203984_(Holder::m_203376_)); + private static Codec>> homogenousList(Codec> p_206668_, boolean p_206669_) { + Codec>> codec = ExtraCodecs.validate(p_206668_.listOf(), ExtraCodecs.ensureHomogenous(Holder::kind)); @@ -42,6 +_,10 @@ - this.f_206656_ = p_206661_; - this.f_206657_ = m_206667_(p_206661_, p_206662_); - this.f_206658_ = Codec.either(TagKey.m_203886_(p_206660_), this.f_206657_); + this.elementCodec = p_206661_; + this.homogenousListCodec = homogenousList(p_206661_, p_206662_); + this.registryAwareCodec = Codec.either(TagKey.hashedCodec(p_206660_), this.homogenousListCodec); + // FORGE: make registry-specific dispatch codec and make forge-or-vanilla either codec -+ this.forgeDispatchCodec = ExtraCodecs.m_184415_(() -> net.minecraftforge.registries.ForgeRegistries.HOLDER_SET_TYPES.get().getCodec()) ++ this.forgeDispatchCodec = ExtraCodecs.lazyInitializedCodec(() -> net.minecraftforge.registries.ForgeRegistries.HOLDER_SET_TYPES.get().getCodec()) + .dispatch(net.minecraftforge.registries.holdersets.ICustomHolderSet::type, type -> type.makeCodec(p_206660_, p_206661_, p_206662_)); -+ this.combinedCodec = new ExtraCodecs.EitherCodec<>(this.forgeDispatchCodec, this.f_206658_); ++ this.combinedCodec = new ExtraCodecs.EitherCodec<>(this.forgeDispatchCodec, this.registryAwareCodec); } public DataResult, T>> decode(DynamicOps p_206696_, T p_206697_) { @@ -49,9 +_,10 @@ - Optional> optional = registryops.m_255006_(this.f_206655_); + Optional> optional = registryops.getter(this.registryKey); if (optional.isPresent()) { HolderGetter holdergetter = optional.get(); -- return this.f_206658_.decode(p_206696_, p_206697_).map((p_206682_) -> { +- return this.registryAwareCodec.decode(p_206696_, p_206697_).map((p_206682_) -> { + // FORGE: use the wrapped codec to decode custom/tag/list instead of just tag/list + return this.combinedCodec.decode(p_206696_, p_206697_).map((p_206682_) -> { return p_206682_.mapFirst((p_206679_) -> { -- return p_206679_.map(holdergetter::m_254956_, HolderSet::m_205800_); -+ return p_206679_.map(java.util.function.Function.identity(), tagOrList -> tagOrList.map(holdergetter::m_254956_, HolderSet::m_205800_)); +- return p_206679_.map(holdergetter::getOrThrow, HolderSet::direct); ++ return p_206679_.map(java.util.function.Function.identity(), tagOrList -> tagOrList.map(holdergetter::getOrThrow, HolderSet::direct)); }); }); } @@ -40,6 +40,6 @@ + // FORGE: use the dispatch codec to encode custom holdersets, otherwise fall back to vanilla tag/list + if (p_206674_ instanceof net.minecraftforge.registries.holdersets.ICustomHolderSet customHolderSet) + return this.forgeDispatchCodec.encode(customHolderSet, p_206675_, p_206676_); - return this.f_206658_.encode(p_206674_.m_203440_().mapRight(List::copyOf), p_206675_, p_206676_); + return this.registryAwareCodec.encode(p_206674_.unwrap().mapRight(List::copyOf), p_206675_, p_206676_); } } diff --git a/patches/minecraft/net/minecraft/resources/RegistryDataLoader.java.patch b/patches/minecraft/net/minecraft/resources/RegistryDataLoader.java.patch index 4242e7b376..e4406c5e63 100644 --- a/patches/minecraft/net/minecraft/resources/RegistryDataLoader.java.patch +++ b/patches/minecraft/net/minecraft/resources/RegistryDataLoader.java.patch @@ -3,17 +3,17 @@ @@ -123,7 +_,7 @@ } - private static String m_246502_(ResourceLocation p_252033_) { -- return p_252033_.m_135815_(); + private static String registryDirPath(ResourceLocation p_252033_) { +- return p_252033_.getPath(); + return net.minecraftforge.common.ForgeHooks.prefixNamespace(p_252033_); // FORGE: add non-vanilla registry namespace to loader directory, same format as tag directory (see net.minecraft.tags.TagManager#getTagDir(ResourceKey)) } - static void m_255048_(RegistryOps.RegistryInfoLookup p_256369_, ResourceManager p_256349_, ResourceKey> p_255792_, WritableRegistry p_256211_, Decoder p_256232_, Map, Exception> p_255884_) { + static void loadRegistryContents(RegistryOps.RegistryInfoLookup p_256369_, ResourceManager p_256349_, ResourceKey> p_255792_, WritableRegistry p_256211_, Decoder p_256232_, Map, Exception> p_255884_) { @@ -139,6 +_,7 @@ - try (Reader reader = resource.m_215508_()) { + try (Reader reader = resource.openAsReader()) { JsonElement jsonelement = JsonParser.parseReader(reader); DataResult dataresult = p_256232_.parse(registryops, jsonelement); + if (!net.minecraftforge.common.crafting.conditions.ICondition.shouldRegisterEntry(jsonelement)) continue; E e = dataresult.getOrThrow(false, (p_248715_) -> { }); - p_256211_.m_255290_(resourcekey, e, resource.m_247137_() ? Lifecycle.stable() : dataresult.lifecycle()); + p_256211_.register(resourcekey, e, resource.isBuiltin() ? Lifecycle.stable() : dataresult.lifecycle()); diff --git a/patches/minecraft/net/minecraft/resources/RegistryOps.java.patch b/patches/minecraft/net/minecraft/resources/RegistryOps.java.patch index 791739d1e7..93c5fa962c 100644 --- a/patches/minecraft/net/minecraft/resources/RegistryOps.java.patch +++ b/patches/minecraft/net/minecraft/resources/RegistryOps.java.patch @@ -5,19 +5,19 @@ } + public static com.mojang.serialization.MapCodec> retrieveRegistryLookup(ResourceKey> resourceKey) { -+ return ExtraCodecs.m_203976_(ops -> { ++ return ExtraCodecs.retrieveContext(ops -> { + if (!(ops instanceof RegistryOps registryOps)) + return DataResult.error(() -> "Not a registry ops"); + -+ return registryOps.f_254668_.m_254838_(resourceKey).map(registryInfo -> { -+ if (!(registryInfo.f_254675_() instanceof HolderLookup.RegistryLookup registryLookup)) ++ return registryOps.lookupProvider.lookup(resourceKey).map(registryInfo -> { ++ if (!(registryInfo.owner() instanceof HolderLookup.RegistryLookup registryLookup)) + return DataResult.>error(() -> "Found holder getter but was not a registry lookup for " + resourceKey); + -+ return DataResult.success(registryLookup, registryInfo.f_254751_()); ++ return DataResult.success(registryLookup, registryInfo.elementsLifecycle()); + }).orElseGet(() -> DataResult.error(() -> "Unknown registry: " + resourceKey)); + }); + } + - public static RecordCodecBuilder> m_254866_(ResourceKey p_256347_) { - ResourceKey> resourcekey = ResourceKey.m_135788_(p_256347_.m_211136_()); - return ExtraCodecs.m_203976_((p_274808_) -> { + public static RecordCodecBuilder> retrieveElement(ResourceKey p_256347_) { + ResourceKey> resourcekey = ResourceKey.createRegistryKey(p_256347_.registry()); + return ExtraCodecs.retrieveContext((p_274808_) -> { diff --git a/patches/minecraft/net/minecraft/resources/ResourceKey.java.patch b/patches/minecraft/net/minecraft/resources/ResourceKey.java.patch index 47b8810fb2..3adcc4f06f 100644 --- a/patches/minecraft/net/minecraft/resources/ResourceKey.java.patch +++ b/patches/minecraft/net/minecraft/resources/ResourceKey.java.patch @@ -6,26 +6,26 @@ -public class ResourceKey { +public class ResourceKey implements Comparable> { - private static final ConcurrentMap> f_135775_ = (new MapMaker()).weakValues().makeMap(); - private final ResourceLocation f_135776_; - private final ResourceLocation f_135777_; + private static final ConcurrentMap> VALUES = (new MapMaker()).weakValues().makeMap(); + private final ResourceLocation registryName; + private final ResourceLocation location; @@ -55,6 +_,19 @@ - public ResourceLocation m_211136_() { - return this.f_135776_; + public ResourceLocation registry() { + return this.registryName; + } + + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; -+ return f_135777_.equals(((ResourceKey) o).f_135777_) && f_135776_.equals(((ResourceKey) o).f_135776_); ++ return location.equals(((ResourceKey) o).location) && registryName.equals(((ResourceKey) o).registryName); + } + + @Override + public int compareTo(ResourceKey o) { -+ int ret = this.m_211136_().compareTo(o.m_211136_()); -+ if (ret == 0) ret = this.m_135782_().compareTo(o.m_135782_()); ++ int ret = this.registry().compareTo(o.registry()); ++ if (ret == 0) ret = this.location().compareTo(o.location()); + return ret; } - static record InternKey(ResourceLocation f_256880_, ResourceLocation f_257046_) { + static record InternKey(ResourceLocation registry, ResourceLocation location) { diff --git a/patches/minecraft/net/minecraft/resources/ResourceLocation.java.patch b/patches/minecraft/net/minecraft/resources/ResourceLocation.java.patch index ae5427f962..530947d669 100644 --- a/patches/minecraft/net/minecraft/resources/ResourceLocation.java.patch +++ b/patches/minecraft/net/minecraft/resources/ResourceLocation.java.patch @@ -6,10 +6,10 @@ + // Normal compare sorts by path first, this compares namespace first. + public int compareNamespaced(ResourceLocation o) { -+ int ret = this.f_135804_.compareTo(o.f_135804_); -+ return ret != 0 ? ret : this.f_135805_.compareTo(o.f_135805_); ++ int ret = this.namespace.compareTo(o.namespace); ++ return ret != 0 ? ret : this.path.compareTo(o.path); + } + - public String m_179910_() { + public String toDebugFileName() { return this.toString().replace('/', '_').replace(':', '_'); } diff --git a/patches/minecraft/net/minecraft/server/Bootstrap.java.patch b/patches/minecraft/net/minecraft/server/Bootstrap.java.patch index 4bffea9c10..b660a5e7b4 100644 --- a/patches/minecraft/net/minecraft/server/Bootstrap.java.patch +++ b/patches/minecraft/net/minecraft/server/Bootstrap.java.patch @@ -1,19 +1,19 @@ --- a/net/minecraft/server/Bootstrap.java +++ b/net/minecraft/server/Bootstrap.java @@ -54,6 +_,8 @@ - CauldronInteraction.m_175649_(); - BuiltInRegistries.m_257498_(); - CreativeModeTabs.m_280019_(); + CauldronInteraction.bootStrap(); + BuiltInRegistries.bootStrap(); + CreativeModeTabs.validate(); + net.minecraftforge.registries.GameData.vanillaSnapshot(); + if (false) // skip redirectOutputToLog, Forge already redirects stdout and stderr output to log so that they print with more context - m_135890_(); - f_285608_.set(Duration.between(instant, Instant.now()).toMillis()); + wrapStreams(); + bootstrapDuration.set(Duration.between(instant, Instant.now()).toMillis()); } @@ -127,7 +_,6 @@ - Commands.m_82138_(); + Commands.validate(); } -- DefaultAttributes.m_22296_(); +- DefaultAttributes.validate(); } - private static void m_135890_() { + private static void wrapStreams() { diff --git a/patches/minecraft/net/minecraft/server/Eula.java.patch b/patches/minecraft/net/minecraft/server/Eula.java.patch index f6c6662d8e..0b794be0a3 100644 --- a/patches/minecraft/net/minecraft/server/Eula.java.patch +++ b/patches/minecraft/net/minecraft/server/Eula.java.patch @@ -3,9 +3,9 @@ @@ -16,7 +_,7 @@ public Eula(Path p_135943_) { - this.f_135939_ = p_135943_; -- this.f_135940_ = SharedConstants.f_136183_ || this.m_135945_(); -+ this.f_135940_ = SharedConstants.f_136183_ || net.minecraftforge.gametest.ForgeGameTestHooks.isGametestServer() || this.m_135945_(); // Forge: Automatically agree to EULA for gametest servers to aid CI + this.file = p_135943_; +- this.agreed = SharedConstants.IS_RUNNING_IN_IDE || this.readFile(); ++ this.agreed = SharedConstants.IS_RUNNING_IN_IDE || net.minecraftforge.gametest.ForgeGameTestHooks.isGametestServer() || this.readFile(); // Forge: Automatically agree to EULA for gametest servers to aid CI } - private boolean m_135945_() { + private boolean readFile() { diff --git a/patches/minecraft/net/minecraft/server/Main.java.patch b/patches/minecraft/net/minecraft/server/Main.java.patch index 4b0398323a..633f30d220 100644 --- a/patches/minecraft/net/minecraft/server/Main.java.patch +++ b/patches/minecraft/net/minecraft/server/Main.java.patch @@ -23,78 +23,78 @@ + Path path2 = Paths.get("eula.txt"); + Eula eula = new Eula(path2); + -+ if (!eula.m_135944_()) { -+ f_129670_.info("You need to agree to the EULA in order to run the server. Go to eula.txt for more info."); ++ if (!eula.hasAgreedToEULA()) { ++ LOGGER.info("You need to agree to the EULA in order to run the server. Go to eula.txt for more info."); + return; + } Path path = optionset.valueOf(optionspec13); if (path != null) { @@ -102,25 +_,24 @@ - Bootstrap.m_135889_(); - Util.m_137584_(); + Bootstrap.validate(); + Util.startTimerHackThread(); Path path1 = Paths.get("server.properties"); + if (!optionset.has(optionspec1)) net.minecraftforge.server.loading.ServerModLoader.load(); // Load mods before we load almost anything else anymore. Single spot now. Only loads if they haven't passed the initserver param DedicatedServerSettings dedicatedserversettings = new DedicatedServerSettings(path1); - dedicatedserversettings.m_139780_(); + dedicatedserversettings.forceSave(); - Path path2 = Paths.get("eula.txt"); - Eula eula = new Eula(path2); if (optionset.has(optionspec1)) { - f_129670_.info("Initialized '{}' and '{}'", path1.toAbsolutePath(), path2.toAbsolutePath()); + LOGGER.info("Initialized '{}' and '{}'", path1.toAbsolutePath(), path2.toAbsolutePath()); return; } -- if (!eula.m_135944_()) { -- f_129670_.info("You need to agree to the EULA in order to run the server. Go to eula.txt for more info."); +- if (!eula.hasAgreedToEULA()) { +- LOGGER.info("You need to agree to the EULA in order to run the server. Go to eula.txt for more info."); - return; - } - File file1 = new File(optionset.valueOf(optionspec8)); - Services services = Services.m_214344_(new YggdrasilAuthenticationService(Proxy.NO_PROXY), file1); - String s = Optional.ofNullable(optionset.valueOf(optionspec9)).orElse(dedicatedserversettings.m_139777_().f_139741_); + Services services = Services.create(new YggdrasilAuthenticationService(Proxy.NO_PROXY), file1); + String s = Optional.ofNullable(optionset.valueOf(optionspec9)).orElse(dedicatedserversettings.getProperties().levelName); + if (s == null || s.isEmpty() || new File(file1, s).getAbsolutePath().equals(new File(s).getAbsolutePath())) { -+ f_129670_.error("Invalid world directory specified, must not be null, empty or the same directory as your universe! " + s); ++ LOGGER.error("Invalid world directory specified, must not be null, empty or the same directory as your universe! " + s); + return; + } - LevelStorageSource levelstoragesource = LevelStorageSource.m_78242_(file1.toPath()); - LevelStorageSource.LevelStorageAccess levelstoragesource$levelstorageaccess = levelstoragesource.m_289864_(s); + LevelStorageSource levelstoragesource = LevelStorageSource.createDefault(file1.toPath()); + LevelStorageSource.LevelStorageAccess levelstoragesource$levelstorageaccess = levelstoragesource.validateAndCreateAccess(s); + levelstoragesource$levelstorageaccess.readAdditionalLevelSaveData(); - LevelSummary levelsummary = levelstoragesource$levelstorageaccess.m_78308_(); + LevelSummary levelsummary = levelstoragesource$levelstorageaccess.getSummary(); if (levelsummary != null) { - if (levelsummary.m_193020_()) { + if (levelsummary.requiresManualConversion()) { @@ -166,6 +_,8 @@ - worlddimensions = dedicatedserverproperties.m_246483_(p_248079_.f_244104_()); + worlddimensions = dedicatedserverproperties.createDimensions(p_248079_.datapackWorldgen()); } + //Forge: Do a write-read-cycle to inject modded dimensions on first start of a dedicated server into its generated world dimensions list. -+ worlddimensions = WorldDimensions.f_243810_.encoder().encodeStart(dynamicops, worlddimensions).flatMap((writtenPayloadWithModdedDimensions) -> WorldDimensions.f_243810_.decoder().parse(dynamicops, writtenPayloadWithModdedDimensions)).resultOrPartial(f_129670_::error).orElse(worlddimensions); - WorldDimensions.Complete worlddimensions$complete = worlddimensions.m_245300_(registry); - Lifecycle lifecycle = worlddimensions$complete.m_245945_().add(p_248079_.f_244104_().m_211816_()); - return new WorldLoader.DataLoadOutput<>(new PrimaryLevelData(levelsettings, worldoptions, worlddimensions$complete.f_244634_(), lifecycle), worlddimensions$complete.m_245593_()); ++ worlddimensions = WorldDimensions.CODEC.encoder().encodeStart(dynamicops, worlddimensions).flatMap((writtenPayloadWithModdedDimensions) -> WorldDimensions.CODEC.decoder().parse(dynamicops, writtenPayloadWithModdedDimensions)).resultOrPartial(LOGGER::error).orElse(worlddimensions); + WorldDimensions.Complete worlddimensions$complete = worlddimensions.bake(registry); + Lifecycle lifecycle = worlddimensions$complete.lifecycle().add(p_248079_.datapackWorldgen().allRegistriesLifecycle()); + return new WorldLoader.DataLoadOutput<>(new PrimaryLevelData(levelsettings, worldoptions, worlddimensions$complete.specialWorldProperty(), lifecycle), worlddimensions$complete.dimensionsRegistryAccess()); @@ -186,21 +_,32 @@ - WorldData worlddata = worldstem.f_206895_(); - levelstoragesource$levelstorageaccess.m_78287_(registryaccess$frozen, worlddata); -- final DedicatedServer dedicatedserver = MinecraftServer.m_129872_((p_296433_) -> { -- DedicatedServer dedicatedserver1 = new DedicatedServer(p_296433_, levelstoragesource$levelstorageaccess, packrepository, worldstem, dedicatedserversettings, DataFixers.m_14512_(), services, LoggerChunkProgressListener::new); -+ final MinecraftServer dedicatedserver = MinecraftServer.m_129872_((p_129697_) -> { + WorldData worlddata = worldstem.worldData(); + levelstoragesource$levelstorageaccess.saveDataTag(registryaccess$frozen, worlddata); +- final DedicatedServer dedicatedserver = MinecraftServer.spin((p_296433_) -> { +- DedicatedServer dedicatedserver1 = new DedicatedServer(p_296433_, levelstoragesource$levelstorageaccess, packrepository, worldstem, dedicatedserversettings, DataFixers.getDataFixer(), services, LoggerChunkProgressListener::new); ++ final MinecraftServer dedicatedserver = MinecraftServer.spin((p_129697_) -> { + MinecraftServer dedicatedserver1; + if (gametestEnabled) { + net.minecraftforge.gametest.ForgeGameTestHooks.registerGametests(); -+ java.util.Collection testBatches = net.minecraft.gametest.framework.GameTestRunner.m_127724_(net.minecraft.gametest.framework.GameTestRegistry.m_127658_()); ++ java.util.Collection testBatches = net.minecraft.gametest.framework.GameTestRunner.groupTestsIntoBatches(net.minecraft.gametest.framework.GameTestRegistry.getAllTestFunctions()); + net.minecraft.core.BlockPos spawnPos = optionset.valueOf(spawnPosOpt); + dedicatedserver1 = new net.minecraft.gametest.framework.GameTestServer(p_129697_, levelstoragesource$levelstorageaccess, packrepository, worldstem, testBatches, spawnPos); + } else { -+ dedicatedserver1 = new DedicatedServer(p_129697_, levelstoragesource$levelstorageaccess, packrepository, worldstem, dedicatedserversettings, DataFixers.m_14512_(), services, LoggerChunkProgressListener::new); ++ dedicatedserver1 = new DedicatedServer(p_129697_, levelstoragesource$levelstorageaccess, packrepository, worldstem, dedicatedserversettings, DataFixers.getDataFixer(), services, LoggerChunkProgressListener::new); + } - dedicatedserver1.m_129801_(optionset.valueOf(optionspec10)); - dedicatedserver1.m_129975_(optionset.has(optionspec2)); - dedicatedserver1.m_129948_(optionset.valueOf(optionspec11)); + dedicatedserver1.setPort(optionset.valueOf(optionspec10)); + dedicatedserver1.setDemo(optionset.has(optionspec2)); + dedicatedserver1.setId(optionset.valueOf(optionspec11)); boolean flag1 = !optionset.has(optionspec) && !optionset.valuesOf(optionspec14).contains("nogui"); - if (flag1 && !GraphicsEnvironment.isHeadless()) { -- dedicatedserver1.m_139667_(); +- dedicatedserver1.showGui(); + if (dedicatedserver1 instanceof DedicatedServer dedicatedServer && flag1 && !GraphicsEnvironment.isHeadless()) { -+ dedicatedServer.m_139667_(); ++ dedicatedServer.showGui(); } return dedicatedserver1; @@ -103,8 +103,8 @@ public void run() { + // FORGE: Halting as GameTestServer will cause issues as it always calls System#exit on both crash and normal exit, so skip it + if (!(dedicatedserver instanceof net.minecraft.gametest.framework.GameTestServer)) - dedicatedserver.m_7570_(true); + dedicatedserver.halt(true); + org.apache.logging.log4j.LogManager.shutdown(); // we're manually managing the logging shutdown on the server. Make sure we do it here at the end. } }; - thread.setUncaughtExceptionHandler(new DefaultUncaughtExceptionHandler(f_129670_)); + thread.setUncaughtExceptionHandler(new DefaultUncaughtExceptionHandler(LOGGER)); diff --git a/patches/minecraft/net/minecraft/server/MinecraftServer.java.patch b/patches/minecraft/net/minecraft/server/MinecraftServer.java.patch index 3fe2945cbc..d4ca6d921d 100644 --- a/patches/minecraft/net/minecraft/server/MinecraftServer.java.patch +++ b/patches/minecraft/net/minecraft/server/MinecraftServer.java.patch @@ -2,167 +2,167 @@ +++ b/net/minecraft/server/MinecraftServer.java @@ -245,7 +_,7 @@ - public static S m_129872_(Function p_129873_) { + public static S spin(Function p_129873_) { AtomicReference atomicreference = new AtomicReference<>(); - Thread thread = new Thread(() -> { + Thread thread = new Thread(net.minecraftforge.fml.util.thread.SidedThreadGroups.SERVER, () -> { - atomicreference.get().m_130011_(); + atomicreference.get().runServer(); }, "Server thread"); thread.setUncaughtExceptionHandler((p_177909_, p_177910_) -> { @@ -338,6 +_,7 @@ - this.m_129841_(dimensiondatastorage); - this.f_129732_ = new CommandStorage(dimensiondatastorage); - WorldBorder worldborder = serverlevel.m_6857_(); -+ net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.event.level.LevelEvent.Load(f_129762_.get(Level.f_46428_))); - if (!serverleveldata.m_6535_()) { + this.readScoreboard(dimensiondatastorage); + this.commandStorage = new CommandStorage(dimensiondatastorage); + WorldBorder worldborder = serverlevel.getWorldBorder(); ++ net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.event.level.LevelEvent.Load(levels.get(Level.OVERWORLD))); + if (!serverleveldata.isInitialized()) { try { - m_177896_(serverlevel, serverleveldata, worldoptions.m_245100_(), flag); + setInitialSpawn(serverlevel, serverleveldata, worldoptions.generateBonusChest(), flag); @@ -374,6 +_,7 @@ - ServerLevel serverlevel1 = new ServerLevel(this, this.f_129738_, this.f_129744_, derivedleveldata, resourcekey1, entry.getValue(), p_129816_, flag, j, ImmutableList.of(), false, randomsequences); - worldborder.m_61929_(new BorderChangeListener.DelegateBorderChangeListener(serverlevel1.m_6857_())); - this.f_129762_.put(resourcekey1, serverlevel1); -+ net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.event.level.LevelEvent.Load(f_129762_.get(resourcekey))); + ServerLevel serverlevel1 = new ServerLevel(this, this.executor, this.storageSource, derivedleveldata, resourcekey1, entry.getValue(), p_129816_, flag, j, ImmutableList.of(), false, randomsequences); + worldborder.addListener(new BorderChangeListener.DelegateBorderChangeListener(serverlevel1.getWorldBorder())); + this.levels.put(resourcekey1, serverlevel1); ++ net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.event.level.LevelEvent.Load(levels.get(resourcekey))); } } @@ -385,6 +_,7 @@ - p_177898_.m_7250_(BlockPos.f_121853_.m_6630_(80), 0.0F); + p_177898_.setSpawn(BlockPos.ZERO.above(80), 0.0F); } else { - ServerChunkCache serverchunkcache = p_177897_.m_7726_(); + ServerChunkCache serverchunkcache = p_177897_.getChunkSource(); + if (net.minecraftforge.event.ForgeEventFactory.onCreateWorldSpawn(p_177897_, p_177898_)) return; - ChunkPos chunkpos = new ChunkPos(serverchunkcache.m_214994_().m_224579_().m_183230_()); - int i = serverchunkcache.m_8481_().m_142051_(p_177897_); - if (i < p_177897_.m_141937_()) { + ChunkPos chunkpos = new ChunkPos(serverchunkcache.randomState().sampler().findSpawnPosition()); + int i = serverchunkcache.getGenerator().getSpawnHeight(p_177897_); + if (i < p_177897_.getMinBuildHeight()) { @@ -467,6 +_,7 @@ ChunkPos chunkpos = new ChunkPos(i); - serverlevel1.m_7726_().m_6692_(chunkpos, true); + serverlevel1.getChunkSource().updateChunkForced(chunkpos, true); } + net.minecraftforge.common.world.ForgeChunkManager.reinstatePersistentChunks(serverlevel1, forcedchunkssaveddata); } } @@ -577,6 +_,7 @@ - for(ServerLevel serverlevel2 : this.m_129785_()) { + for(ServerLevel serverlevel2 : this.getAllLevels()) { if (serverlevel2 != null) { try { + net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.event.level.LevelEvent.Unload(serverlevel2)); serverlevel2.close(); } catch (IOException ioexception1) { - f_129750_.error("Exception closing the level", (Throwable)ioexception1); + LOGGER.error("Exception closing the level", (Throwable)ioexception1); @@ -625,9 +_,11 @@ throw new IllegalStateException("Failed to initialize server"); } + net.minecraftforge.server.ServerLifecycleHooks.handleServerStarted(this); - this.f_129726_ = Util.m_137550_(); - this.f_271173_ = this.m_272273_().orElse((ServerStatus.Favicon)null); - this.f_129757_ = this.m_271988_(); -+ resetStatusCache(f_129757_); + this.nextTickTime = Util.getMillis(); + this.statusIcon = this.loadStatusIcon().orElse((ServerStatus.Favicon)null); + this.status = this.buildServerStatus(); ++ resetStatusCache(status); - while(this.f_129764_) { - long i = Util.m_137550_() - this.f_129726_; + while(this.running) { + long i = Util.getMillis() - this.nextTickTime; @@ -656,6 +_,8 @@ - this.f_129717_ = true; - JvmProfiler.f_185340_.m_183597_(this.f_129737_); + this.isReady = true; + JvmProfiler.INSTANCE.onServerTick(this.averageTickTime); } + net.minecraftforge.server.ServerLifecycleHooks.handleServerStopping(this); + net.minecraftforge.server.ServerLifecycleHooks.expectServerStopped(); // Forge: Has to come before MinecraftServer#onServerCrash to avoid race conditions } catch (Throwable throwable1) { - f_129750_.error("Encountered an unexpected exception", throwable1); - CrashReport crashreport = m_206568_(throwable1); + LOGGER.error("Encountered an unexpected exception", throwable1); + CrashReport crashreport = constructOrExtractCrashReport(throwable1); @@ -667,6 +_,7 @@ - f_129750_.error("We were unable to save this crash report to disk."); + LOGGER.error("We were unable to save this crash report to disk."); } + net.minecraftforge.server.ServerLifecycleHooks.expectServerStopped(); // Forge: Has to come before MinecraftServer#onServerCrash to avoid race conditions - this.m_7268_(crashreport); + this.onServerCrash(crashreport); } finally { try { @@ -679,6 +_,7 @@ - this.f_236721_.f_214336_().m_196559_(); + this.services.profileCache().clearExecutor(); } + net.minecraftforge.server.ServerLifecycleHooks.handleServerStopped(this); - this.m_6988_(); + this.onServerExit(); } @@ -793,11 +_,13 @@ - public void m_5705_(BooleanSupplier p_129871_) { - long i = Util.m_137569_(); + public void tickServer(BooleanSupplier p_129871_) { + long i = Util.getNanos(); + net.minecraftforge.event.ForgeEventFactory.onPreServerTick(p_129871_, this); - ++this.f_129766_; - this.m_5703_(p_129871_); - if (i - this.f_129724_ >= 5000000000L) { - this.f_129724_ = i; - this.f_129757_ = this.m_271988_(); -+ resetStatusCache(f_129757_); + ++this.tickCount; + this.tickChildren(p_129871_); + if (i - this.lastServerStatus >= 5000000000L) { + this.lastServerStatus = i; + this.status = this.buildServerStatus(); ++ resetStatusCache(status); } - if (this.f_129766_ % 6000 == 0) { + if (this.tickCount % 6000 == 0) { @@ -814,6 +_,17 @@ - long k = Util.m_137569_(); - this.m_293783_(k - i); - this.f_129754_.m_7238_(); + long k = Util.getNanos(); + this.logTickTime(k - i); + this.profiler.pop(); + net.minecraftforge.event.ForgeEventFactory.onPostServerTick(p_129871_, this); + } + + private static final com.google.gson.Gson GSON = new com.google.gson.Gson(); + private String cachedServerStatus; // FORGE: cache the server status json in case a client spams requests + private void resetStatusCache(ServerStatus status) { -+ this.cachedServerStatus = GSON.toJson(ServerStatus.f_271163_.encodeStart(com.mojang.serialization.JsonOps.INSTANCE, status) ++ this.cachedServerStatus = GSON.toJson(ServerStatus.CODEC.encodeStart(com.mojang.serialization.JsonOps.INSTANCE, status) + .result().orElseThrow()); + } + public String getStatusJson() { + return cachedServerStatus; } - protected void m_293783_(long p_298126_) { + protected void logTickTime(long p_298126_) { @@ -821,7 +_,7 @@ - private ServerStatus m_271988_() { - ServerStatus.Players serverstatus$players = this.m_271961_(); -- return new ServerStatus(Component.m_130674_(this.f_129709_), Optional.of(serverstatus$players), Optional.of(ServerStatus.Version.m_272202_()), Optional.ofNullable(this.f_271173_), this.m_214005_()); -+ return new ServerStatus(Component.m_130674_(this.f_129709_), Optional.of(serverstatus$players), Optional.of(ServerStatus.Version.m_272202_()), Optional.ofNullable(this.f_271173_), this.m_214005_(), Optional.of(new net.minecraftforge.network.ServerStatusPing())); + private ServerStatus buildServerStatus() { + ServerStatus.Players serverstatus$players = this.buildPlayerStatus(); +- return new ServerStatus(Component.nullToEmpty(this.motd), Optional.of(serverstatus$players), Optional.of(ServerStatus.Version.current()), Optional.ofNullable(this.statusIcon), this.enforceSecureProfile()); ++ return new ServerStatus(Component.nullToEmpty(this.motd), Optional.of(serverstatus$players), Optional.of(ServerStatus.Version.current()), Optional.ofNullable(this.statusIcon), this.enforceSecureProfile(), Optional.of(new net.minecraftforge.network.ServerStatusPing())); } - private ServerStatus.Players m_271961_() { + private ServerStatus.Players buildPlayerStatus() { @@ -852,7 +_,8 @@ - this.m_129890_().m_136128_(); - this.f_129754_.m_6182_("levels"); + this.getFunctions().tick(); + this.profiler.popPush("levels"); -- for(ServerLevel serverlevel : this.m_129785_()) { +- for(ServerLevel serverlevel : this.getAllLevels()) { + for(ServerLevel serverlevel : this.getWorldArray()) { -+ long tickStart = Util.m_137569_(); - this.f_129754_.m_6521_(() -> { - return serverlevel + " " + serverlevel.m_46472_().m_135782_(); ++ long tickStart = Util.getNanos(); + this.profiler.push(() -> { + return serverlevel + " " + serverlevel.dimension().location(); }); @@ -863,6 +_,7 @@ } - this.f_129754_.m_6180_("tick"); + this.profiler.push("tick"); + net.minecraftforge.event.ForgeEventFactory.onPreLevelTick(serverlevel, p_129954_); try { - serverlevel.m_8793_(p_129954_); + serverlevel.tick(p_129954_); @@ -871,16 +_,18 @@ - serverlevel.m_6026_(crashreport); + serverlevel.fillReportDetails(crashreport); throw new ReportedException(crashreport); } + net.minecraftforge.event.ForgeEventFactory.onPostLevelTick(serverlevel, p_129954_); - this.f_129754_.m_7238_(); - this.f_129754_.m_7238_(); -+ perWorldTickTimes.computeIfAbsent(serverlevel.m_46472_(), k -> new long[100])[this.f_129766_ % 100] = Util.m_137569_() - tickStart; + this.profiler.pop(); + this.profiler.pop(); ++ perWorldTickTimes.computeIfAbsent(serverlevel.dimension(), k -> new long[100])[this.tickCount % 100] = Util.getNanos() - tickStart; } - this.f_129754_.m_6182_("connection"); - this.m_129919_().m_9721_(); - this.f_129754_.m_6182_("players"); - this.f_129763_.m_11288_(); -- if (SharedConstants.f_136183_) { + this.profiler.popPush("connection"); + this.getConnection().tick(); + this.profiler.popPush("players"); + this.playerList.tick(); +- if (SharedConstants.IS_RUNNING_IN_IDE) { + if (net.minecraftforge.gametest.ForgeGameTestHooks.isGametestEnabled()) { - GameTestTicker.f_177648_.m_127790_(); + GameTestTicker.SINGLETON.tick(); } @@ -969,7 +_,7 @@ @@ -173,34 +173,34 @@ + return net.minecraftforge.internal.BrandingControl.getServerBranding(); } - public SystemReport m_177935_(SystemReport p_177936_) { + public SystemReport fillSystemReport(SystemReport p_177936_) { @@ -1318,6 +_,7 @@ - this.m_6846_().m_11315_(); - this.f_129734_.m_136120_(this.f_129740_.f_206585_.m_206860_()); - this.f_236720_.m_230370_(this.f_129740_.f_206584_); -+ this.m_6846_().m_11314_().forEach(this.m_6846_()::m_11289_); //Forge: Fix newly added/modified commands not being sent to the client when commands reload. + this.getPlayerList().reloadResources(); + this.functionManager.replaceLibrary(this.resources.managers.getFunctionLibrary()); + this.structureTemplateManager.onResourceManagerReload(this.resources.resourceManager); ++ this.getPlayerList().getPlayers().forEach(this.getPlayerList()::sendPlayerPermissionLevel); //Forge: Fix newly added/modified commands not being sent to the client when commands reload. }, this); - if (this.m_18695_()) { - this.m_18701_(completablefuture::isDone); + if (this.isSameThread()) { + this.managedBlock(completablefuture::isDone); @@ -1327,10 +_,13 @@ } - public static WorldDataConfiguration m_246048_(PackRepository p_248681_, DataPackConfig p_248920_, boolean p_249869_, FeatureFlagSet p_251243_) { + public static WorldDataConfiguration configurePackRepository(PackRepository p_248681_, DataPackConfig p_248920_, boolean p_249869_, FeatureFlagSet p_251243_) { + net.minecraftforge.resource.ResourcePackLoader.loadResourcePacks(p_248681_, net.minecraftforge.server.ServerLifecycleHooks::buildPackFinder); - p_248681_.m_10506_(); -+ DataPackConfig.f_45842_.addModPacks(net.minecraftforge.common.ForgeHooks.getModPacks()); + p_248681_.reload(); ++ DataPackConfig.DEFAULT.addModPacks(net.minecraftforge.common.ForgeHooks.getModPacks()); + p_248920_.addModPacks(net.minecraftforge.common.ForgeHooks.getModPacks()); if (p_249869_) { -- p_248681_.m_10509_(Collections.singleton("vanilla")); -- return WorldDataConfiguration.f_244649_; -+ p_248681_.m_10509_(net.minecraftforge.common.ForgeHooks.getModPacksWithVanilla()); -+ return new WorldDataConfiguration(new DataPackConfig(net.minecraftforge.common.ForgeHooks.getModPacksWithVanilla(), ImmutableList.of()), FeatureFlags.f_244332_); +- p_248681_.setSelected(Collections.singleton("vanilla")); +- return WorldDataConfiguration.DEFAULT; ++ p_248681_.setSelected(net.minecraftforge.common.ForgeHooks.getModPacksWithVanilla()); ++ return new WorldDataConfiguration(new DataPackConfig(net.minecraftforge.common.ForgeHooks.getModPacksWithVanilla(), ImmutableList.of()), FeatureFlags.DEFAULT_FLAGS); } else { Set set = Sets.newLinkedHashSet(); @@ -1484,6 +_,31 @@ - public abstract boolean m_7779_(GameProfile p_129840_); + public abstract boolean isSingleplayerOwner(GameProfile p_129840_); + private Map, long[]> perWorldTickTimes = Maps.newIdentityHashMap(); + @Nullable @@ -210,7 +210,7 @@ + + @Deprecated //Forge Internal use Only, You can screw up a lot of things if you mess with this map. + public synchronized Map, ServerLevel> forgeGetWorldMap() { -+ return this.f_129762_; ++ return this.levels; + } + private int worldArrayMarker = 0; + private int worldArrayLast = -1; @@ -222,22 +222,22 @@ + private ServerLevel[] getWorldArray() { + if (worldArrayMarker == worldArrayLast && worldArray != null) + return worldArray; -+ worldArray = this.f_129762_.values().stream().toArray(x -> new ServerLevel[x]); ++ worldArray = this.levels.values().stream().toArray(x -> new ServerLevel[x]); + worldArrayLast = worldArrayMarker; + return worldArray; + } + - public void m_142116_(Path p_177911_) throws IOException { + public void dumpServerProperties(Path p_177911_) throws IOException { } @@ -1647,6 +_,10 @@ - public WorldData m_129910_() { - return this.f_129749_; + public WorldData getWorldData() { + return this.worldData; + } + + public MinecraftServer.ReloadableResources getServerResources() { -+ return f_129740_; ++ return resources; } - public RegistryAccess.Frozen m_206579_() { + public RegistryAccess.Frozen registryAccess() { diff --git a/patches/minecraft/net/minecraft/server/PlayerAdvancements.java.patch b/patches/minecraft/net/minecraft/server/PlayerAdvancements.java.patch index f0a1b0998b..a481c17ff7 100644 --- a/patches/minecraft/net/minecraft/server/PlayerAdvancements.java.patch +++ b/patches/minecraft/net/minecraft/server/PlayerAdvancements.java.patch @@ -3,33 +3,33 @@ @@ -171,6 +_,8 @@ } - public boolean m_135988_(AdvancementHolder p_298135_, String p_135990_) { + public boolean award(AdvancementHolder p_298135_, String p_135990_) { + // Forge: don't grant advancements for fake players -+ if (this.f_135968_ instanceof net.minecraftforge.common.util.FakePlayer) return false; ++ if (this.player instanceof net.minecraftforge.common.util.FakePlayer) return false; boolean flag = false; - AdvancementProgress advancementprogress = this.m_135996_(p_298135_); - boolean flag1 = advancementprogress.m_8193_(); + AdvancementProgress advancementprogress = this.getOrStartProgress(p_298135_); + boolean flag1 = advancementprogress.isDone(); @@ -178,6 +_,7 @@ - this.m_136008_(p_298135_); - this.f_135967_.add(p_298135_); + this.unregisterListeners(p_298135_); + this.progressChanged.add(p_298135_); flag = true; -+ net.minecraftforge.event.ForgeEventFactory.onAdvancementGrant(this.f_135968_, p_298135_, advancementprogress, p_135990_); - if (!flag1 && advancementprogress.m_8193_()) { - p_298135_.f_290952_().f_138300_().m_9989_(this.f_135968_); - p_298135_.f_290952_().f_138299_().ifPresent((p_296444_) -> { ++ net.minecraftforge.event.ForgeEventFactory.onAdvancementGrant(this.player, p_298135_, advancementprogress, p_135990_); + if (!flag1 && advancementprogress.isDone()) { + p_298135_.value().rewards().grant(this.player); + p_298135_.value().display().ifPresent((p_296444_) -> { @@ -186,6 +_,7 @@ } }); -+ net.minecraftforge.event.ForgeEventFactory.onAdvancementEarned(this.f_135968_, p_298135_); ++ net.minecraftforge.event.ForgeEventFactory.onAdvancementEarned(this.player, p_298135_); } } @@ -204,6 +_,7 @@ - this.m_136004_(p_297905_); - this.f_135967_.add(p_297905_); + this.registerListeners(p_297905_); + this.progressChanged.add(p_297905_); flag = true; -+ net.minecraftforge.event.ForgeEventFactory.onAdvancementRevoke(this.f_135968_, p_297905_, advancementprogress, p_136000_); ++ net.minecraftforge.event.ForgeEventFactory.onAdvancementRevoke(this.player, p_297905_, advancementprogress, p_136000_); } - if (flag1 && !advancementprogress.m_8193_()) { + if (flag1 && !advancementprogress.isDone()) { diff --git a/patches/minecraft/net/minecraft/server/ReloadableServerResources.java.patch b/patches/minecraft/net/minecraft/server/ReloadableServerResources.java.patch index f268742df4..cbf47df2f8 100644 --- a/patches/minecraft/net/minecraft/server/ReloadableServerResources.java.patch +++ b/patches/minecraft/net/minecraft/server/ReloadableServerResources.java.patch @@ -1,52 +1,52 @@ --- a/net/minecraft/server/ReloadableServerResources.java +++ b/net/minecraft/server/ReloadableServerResources.java @@ -29,10 +_,10 @@ - private static final CompletableFuture f_206846_ = CompletableFuture.completedFuture(Unit.INSTANCE); - private final CommandBuildContext.Configurable f_214300_; - private final Commands f_206847_; -- private final RecipeManager f_206848_ = new RecipeManager(); -+ private final RecipeManager f_206848_; - private final TagManager f_206849_; - private final LootDataManager f_278467_ = new LootDataManager(); -- private final ServerAdvancementManager f_206853_ = new ServerAdvancementManager(this.f_278467_); -+ private final ServerAdvancementManager f_206853_; - private final ServerFunctionLibrary f_206854_; + private static final CompletableFuture DATA_RELOAD_INITIAL_TASK = CompletableFuture.completedFuture(Unit.INSTANCE); + private final CommandBuildContext.Configurable commandBuildContext; + private final Commands commands; +- private final RecipeManager recipes = new RecipeManager(); ++ private final RecipeManager recipes; + private final TagManager tagManager; + private final LootDataManager lootData = new LootDataManager(); +- private final ServerAdvancementManager advancements = new ServerAdvancementManager(this.lootData); ++ private final ServerAdvancementManager advancements; + private final ServerFunctionLibrary functionLibrary; public ReloadableServerResources(RegistryAccess.Frozen p_206857_, FeatureFlagSet p_250695_, Commands.CommandSelection p_206858_, int p_206859_) { @@ -41,6 +_,10 @@ - this.f_206847_ = new Commands(p_206858_, this.f_214300_); - this.f_214300_.m_254905_(CommandBuildContext.MissingTagAccessPolicy.CREATE_NEW); - this.f_206854_ = new ServerFunctionLibrary(p_206859_, this.f_206847_.m_82094_()); + this.commands = new Commands(p_206858_, this.commandBuildContext); + this.commandBuildContext.missingTagAccessPolicy(CommandBuildContext.MissingTagAccessPolicy.CREATE_NEW); + this.functionLibrary = new ServerFunctionLibrary(p_206859_, this.commands.getDispatcher()); + // Forge: Create context object and pass it to the recipe manager. -+ this.context = new net.minecraftforge.common.crafting.conditions.ConditionContext(this.f_206849_); -+ this.f_206848_ = new RecipeManager(context); -+ this.f_206853_ = new ServerAdvancementManager(this.f_278467_, context); ++ this.context = new net.minecraftforge.common.crafting.conditions.ConditionContext(this.tagManager); ++ this.recipes = new RecipeManager(context); ++ this.advancements = new ServerAdvancementManager(this.lootData, context); } - public ServerFunctionLibrary m_206860_() { + public ServerFunctionLibrary getFunctionLibrary() { @@ -69,7 +_,9 @@ - public static CompletableFuture m_247740_(ResourceManager p_248588_, RegistryAccess.Frozen p_251163_, FeatureFlagSet p_250212_, Commands.CommandSelection p_249301_, int p_251126_, Executor p_249136_, Executor p_249601_) { + public static CompletableFuture loadResources(ResourceManager p_248588_, RegistryAccess.Frozen p_251163_, FeatureFlagSet p_250212_, Commands.CommandSelection p_249301_, int p_251126_, Executor p_249136_, Executor p_249601_) { ReloadableServerResources reloadableserverresources = new ReloadableServerResources(p_251163_, p_250212_, p_249301_, p_251126_); -- return SimpleReloadInstance.m_203834_(p_248588_, reloadableserverresources.m_206890_(), p_249136_, p_249601_, f_206846_, f_206845_.isDebugEnabled()).m_7237_().whenComplete((p_255534_, p_255535_) -> { -+ List listeners = new java.util.ArrayList<>(reloadableserverresources.m_206890_()); +- return SimpleReloadInstance.create(p_248588_, reloadableserverresources.listeners(), p_249136_, p_249601_, DATA_RELOAD_INITIAL_TASK, LOGGER.isDebugEnabled()).done().whenComplete((p_255534_, p_255535_) -> { ++ List listeners = new java.util.ArrayList<>(reloadableserverresources.listeners()); + listeners.addAll(net.minecraftforge.event.ForgeEventFactory.onResourceReload(reloadableserverresources, p_251163_)); -+ return SimpleReloadInstance.m_203834_(p_248588_, listeners, p_249136_, p_249601_, f_206846_, f_206845_.isDebugEnabled()).m_7237_().whenComplete((p_214309_, p_214310_) -> { - reloadableserverresources.f_214300_.m_254905_(CommandBuildContext.MissingTagAccessPolicy.FAIL); ++ return SimpleReloadInstance.create(p_248588_, listeners, p_249136_, p_249601_, DATA_RELOAD_INITIAL_TASK, LOGGER.isDebugEnabled()).done().whenComplete((p_214309_, p_214310_) -> { + reloadableserverresources.commandBuildContext.missingTagAccessPolicy(CommandBuildContext.MissingTagAccessPolicy.FAIL); }).thenApply((p_214306_) -> { return reloadableserverresources; @@ -81,6 +_,7 @@ - m_206870_(p_206869_, p_214315_); + updateRegistryTags(p_206869_, p_214315_); }); - Blocks.m_50758_(); + Blocks.rebuildCache(); + net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.event.TagsUpdatedEvent(p_206869_, false, false)); } - private static void m_206870_(RegistryAccess p_206871_, TagManager.LoadResult p_206872_) { + private static void updateRegistryTags(RegistryAccess p_206871_, TagManager.LoadResult p_206872_) { @@ -91,5 +_,16 @@ return List.copyOf(p_214312_.getValue()); })); - p_206871_.m_175515_(resourcekey).m_203652_(map); + p_206871_.registryOrThrow(resourcekey).bindTags(map); + } + + private final net.minecraftforge.common.crafting.conditions.ICondition.IContext context; diff --git a/patches/minecraft/net/minecraft/server/ServerAdvancementManager.java.patch b/patches/minecraft/net/minecraft/server/ServerAdvancementManager.java.patch index fd8fa1299e..1ea7d7e2b1 100644 --- a/patches/minecraft/net/minecraft/server/ServerAdvancementManager.java.patch +++ b/patches/minecraft/net/minecraft/server/ServerAdvancementManager.java.patch @@ -1,9 +1,9 @@ --- a/net/minecraft/server/ServerAdvancementManager.java +++ b/net/minecraft/server/ServerAdvancementManager.java @@ -29,10 +_,18 @@ - private Map f_136023_ = Map.of(); - private AdvancementTree f_290842_ = new AdvancementTree(); - private final LootDataManager f_278379_; + private Map advancements = Map.of(); + private AdvancementTree tree = new AdvancementTree(); + private final LootDataManager lootData; + private final net.minecraftforge.common.crafting.conditions.ICondition.IContext context; //Forge: add context + /** @deprecated Forge: use {@linkplain ServerAdvancementManager#ServerAdvancementManager(LootDataManager, net.minecraftforge.common.crafting.conditions.ICondition.IContext) constructor with context}. */ @@ -13,22 +13,22 @@ + } + + public ServerAdvancementManager(LootDataManager p_279237_, net.minecraftforge.common.crafting.conditions.ICondition.IContext context) { - super(f_136022_, "advancements"); - this.f_278379_ = p_279237_; + super(GSON, "advancements"); + this.lootData = p_279237_; + this.context = context; } - protected void m_5787_(Map p_136034_, ResourceManager p_136035_, ProfilerFiller p_136036_) { + protected void apply(Map p_136034_, ResourceManager p_136035_, ProfilerFiller p_136036_) { @@ -40,7 +_,11 @@ p_136034_.forEach((p_296449_, p_296450_) -> { try { - JsonObject jsonobject = GsonHelper.m_13918_(p_296450_, "advancement"); -- Advancement advancement = Advancement.m_294730_(jsonobject, new DeserializationContext(p_296449_, this.f_278379_)); -+ Advancement advancement = Advancement.fromJson(jsonobject, new DeserializationContext(p_296449_, this.f_278379_), this.context); + JsonObject jsonobject = GsonHelper.convertToJsonObject(p_296450_, "advancement"); +- Advancement advancement = Advancement.fromJson(jsonobject, new DeserializationContext(p_296449_, this.lootData)); ++ Advancement advancement = Advancement.fromJson(jsonobject, new DeserializationContext(p_296449_, this.lootData), this.context); + if (advancement == null) { -+ f_136021_.debug("Skipping loading advancement {} as its conditions were not met", p_296449_); ++ LOGGER.debug("Skipping loading advancement {} as its conditions were not met", p_296449_); + return; + } builder.put(p_296449_, new AdvancementHolder(p_296449_, advancement)); } catch (Exception exception) { - f_136021_.error("Parsing error loading custom advancement {}: {}", p_296449_, exception.getMessage()); + LOGGER.error("Parsing error loading custom advancement {}: {}", p_296449_, exception.getMessage()); diff --git a/patches/minecraft/net/minecraft/server/WorldLoader.java.patch b/patches/minecraft/net/minecraft/server/WorldLoader.java.patch index 2e6fc239be..b88d6a1ca9 100644 --- a/patches/minecraft/net/minecraft/server/WorldLoader.java.patch +++ b/patches/minecraft/net/minecraft/server/WorldLoader.java.patch @@ -1,11 +1,11 @@ --- a/net/minecraft/server/WorldLoader.java +++ b/net/minecraft/server/WorldLoader.java @@ -28,7 +_,7 @@ - Pair pair = p_214363_.f_214378_.m_214399_(); + Pair pair = p_214363_.packConfig.createResourceManager(); CloseableResourceManager closeableresourcemanager = pair.getSecond(); - LayeredRegistryAccess layeredregistryaccess = RegistryLayer.m_245849_(); -- LayeredRegistryAccess layeredregistryaccess1 = m_245736_(closeableresourcemanager, layeredregistryaccess, RegistryLayer.WORLDGEN, RegistryDataLoader.f_243803_); -+ LayeredRegistryAccess layeredregistryaccess1 = m_245736_(closeableresourcemanager, layeredregistryaccess, RegistryLayer.WORLDGEN, net.minecraftforge.registries.DataPackRegistriesHooks.getDataPackRegistries()); - RegistryAccess.Frozen registryaccess$frozen = layeredregistryaccess1.m_246035_(RegistryLayer.DIMENSIONS); - RegistryAccess.Frozen registryaccess$frozen1 = RegistryDataLoader.m_247207_(closeableresourcemanager, registryaccess$frozen, RegistryDataLoader.f_244547_); + LayeredRegistryAccess layeredregistryaccess = RegistryLayer.createRegistryAccess(); +- LayeredRegistryAccess layeredregistryaccess1 = loadAndReplaceLayer(closeableresourcemanager, layeredregistryaccess, RegistryLayer.WORLDGEN, RegistryDataLoader.WORLDGEN_REGISTRIES); ++ LayeredRegistryAccess layeredregistryaccess1 = loadAndReplaceLayer(closeableresourcemanager, layeredregistryaccess, RegistryLayer.WORLDGEN, net.minecraftforge.registries.DataPackRegistriesHooks.getDataPackRegistries()); + RegistryAccess.Frozen registryaccess$frozen = layeredregistryaccess1.getAccessForLoading(RegistryLayer.DIMENSIONS); + RegistryAccess.Frozen registryaccess$frozen1 = RegistryDataLoader.load(closeableresourcemanager, registryaccess$frozen, RegistryDataLoader.DIMENSION_REGISTRIES); WorldDataConfiguration worlddataconfiguration = pair.getFirst(); diff --git a/patches/minecraft/net/minecraft/server/advancements/AdvancementVisibilityEvaluator.java.patch b/patches/minecraft/net/minecraft/server/advancements/AdvancementVisibilityEvaluator.java.patch index 5be03f9195..4396b9e6fe 100644 --- a/patches/minecraft/net/minecraft/server/advancements/AdvancementVisibilityEvaluator.java.patch +++ b/patches/minecraft/net/minecraft/server/advancements/AdvancementVisibilityEvaluator.java.patch @@ -1,7 +1,7 @@ --- a/net/minecraft/server/advancements/AdvancementVisibilityEvaluator.java +++ b/net/minecraft/server/advancements/AdvancementVisibilityEvaluator.java @@ -64,6 +_,16 @@ - m_264099_(advancementnode, stack, p_265561_, p_265381_); + evaluateVisibility(advancementnode, stack, p_265561_, p_265381_); } + public static boolean isVisible(AdvancementNode advancement, Predicate test) { @@ -11,9 +11,9 @@ + stack.push(AdvancementVisibilityEvaluator.VisibilityRule.NO_CHANGE); + } + -+ return m_264099_(advancement.m_295389_(), stack, test, (node, currentVis) -> {}); ++ return evaluateVisibility(advancement.root(), stack, test, (node, currentVis) -> {}); + } + @FunctionalInterface public interface Output { - void m_264135_(AdvancementNode p_298555_, boolean p_265580_); + void accept(AdvancementNode p_298555_, boolean p_265580_); diff --git a/patches/minecraft/net/minecraft/server/commands/SpreadPlayersCommand.java.patch b/patches/minecraft/net/minecraft/server/commands/SpreadPlayersCommand.java.patch index 98ba203e8b..6acfdc51cd 100644 --- a/patches/minecraft/net/minecraft/server/commands/SpreadPlayersCommand.java.patch +++ b/patches/minecraft/net/minecraft/server/commands/SpreadPlayersCommand.java.patch @@ -4,9 +4,9 @@ spreadplayerscommand$position = p_138732_[i++]; } -- entity.m_264318_(p_138731_, (double)Mth.m_14107_(spreadplayerscommand$position.f_138749_) + 0.5D, (double)spreadplayerscommand$position.m_138758_(p_138731_, p_138733_), (double)Mth.m_14107_(spreadplayerscommand$position.f_138750_) + 0.5D, Set.of(), entity.m_146908_(), entity.m_146909_()); -+ net.minecraftforge.event.entity.EntityTeleportEvent.SpreadPlayersCommand event = net.minecraftforge.event.ForgeEventFactory.onEntityTeleportSpreadPlayersCommand(entity, (double)Mth.m_14107_(spreadplayerscommand$position.f_138749_) + 0.5D, (double)spreadplayerscommand$position.m_138758_(p_138731_, p_138733_), (double)Mth.m_14107_(spreadplayerscommand$position.f_138750_) + 0.5D); -+ if (!event.isCanceled()) entity.m_20324_(event.getTargetX(), event.getTargetY(), event.getTargetZ()); +- entity.teleportTo(p_138731_, (double)Mth.floor(spreadplayerscommand$position.x) + 0.5D, (double)spreadplayerscommand$position.getSpawnY(p_138731_, p_138733_), (double)Mth.floor(spreadplayerscommand$position.z) + 0.5D, Set.of(), entity.getYRot(), entity.getXRot()); ++ net.minecraftforge.event.entity.EntityTeleportEvent.SpreadPlayersCommand event = net.minecraftforge.event.ForgeEventFactory.onEntityTeleportSpreadPlayersCommand(entity, (double)Mth.floor(spreadplayerscommand$position.x) + 0.5D, (double)spreadplayerscommand$position.getSpawnY(p_138731_, p_138733_), (double)Mth.floor(spreadplayerscommand$position.z) + 0.5D); ++ if (!event.isCanceled()) entity.teleportToWithTicket(event.getTargetX(), event.getTargetY(), event.getTargetZ()); double d2 = Double.MAX_VALUE; for(SpreadPlayersCommand.Position spreadplayerscommand$position1 : p_138732_) { diff --git a/patches/minecraft/net/minecraft/server/commands/TeleportCommand.java.patch b/patches/minecraft/net/minecraft/server/commands/TeleportCommand.java.patch index a8bd5f08f7..80afbb919b 100644 --- a/patches/minecraft/net/minecraft/server/commands/TeleportCommand.java.patch +++ b/patches/minecraft/net/minecraft/server/commands/TeleportCommand.java.patch @@ -3,10 +3,10 @@ @@ -132,6 +_,9 @@ } - private static void m_139014_(CommandSourceStack p_139015_, Entity p_139016_, ServerLevel p_139017_, double p_139018_, double p_139019_, double p_139020_, Set p_139021_, float p_139022_, float p_139023_, @Nullable TeleportCommand.LookAt p_139024_) throws CommandSyntaxException { + private static void performTeleport(CommandSourceStack p_139015_, Entity p_139016_, ServerLevel p_139017_, double p_139018_, double p_139019_, double p_139020_, Set p_139021_, float p_139022_, float p_139023_, @Nullable TeleportCommand.LookAt p_139024_) throws CommandSyntaxException { + net.minecraftforge.event.entity.EntityTeleportEvent.TeleportCommand event = net.minecraftforge.event.ForgeEventFactory.onEntityTeleportCommand(p_139016_, p_139018_, p_139019_, p_139020_); + if (event.isCanceled()) return; + p_139018_ = event.getTargetX(); p_139019_ = event.getTargetY(); p_139020_ = event.getTargetZ(); - BlockPos blockpos = BlockPos.m_274561_(p_139018_, p_139019_, p_139020_); - if (!Level.m_46741_(blockpos)) { - throw f_139006_.create(); + BlockPos blockpos = BlockPos.containing(p_139018_, p_139019_, p_139020_); + if (!Level.isInSpawnableBounds(blockpos)) { + throw INVALID_POSITION.create(); diff --git a/patches/minecraft/net/minecraft/server/dedicated/DedicatedServer.java.patch b/patches/minecraft/net/minecraft/server/dedicated/DedicatedServer.java.patch index 127f14c7ea..b4e8d80ac1 100644 --- a/patches/minecraft/net/minecraft/server/dedicated/DedicatedServer.java.patch +++ b/patches/minecraft/net/minecraft/server/dedicated/DedicatedServer.java.patch @@ -1,16 +1,16 @@ --- a/net/minecraft/server/dedicated/DedicatedServer.java +++ b/net/minecraft/server/dedicated/DedicatedServer.java @@ -68,6 +_,8 @@ - private MinecraftServerGui f_139605_; + private MinecraftServerGui gui; @Nullable - private final TextFilterClient f_139606_; + private final TextFilterClient textFilterClient; + @Nullable + private net.minecraft.client.server.LanServerPinger dediLanPinger; public DedicatedServer(Thread p_214789_, LevelStorageSource.LevelStorageAccess p_214790_, PackRepository p_214791_, WorldStem p_214792_, DedicatedServerSettings p_214793_, DataFixer p_214794_, Services p_214795_, ChunkProgressListenerFactory p_214796_) { super(p_214789_, p_214790_, p_214791_, p_214792_, Proxy.NO_PROXY, p_214794_, p_214795_, p_214796_); @@ -79,6 +_,7 @@ - public boolean m_7038_() throws IOException { + public boolean initServer() throws IOException { Thread thread = new Thread("Server console handler") { public void run() { + if (net.minecraftforge.server.console.TerminalHandler.handleCommands(DedicatedServer.this)) return; @@ -18,26 +18,26 @@ String s1; @@ -156,11 +_,13 @@ - long i = Util.m_137569_(); - SkullBlockEntity.m_222885_(this.f_236721_, this); - GameProfileCache.m_11004_(this.m_129797_()); + long i = Util.getNanos(); + SkullBlockEntity.setup(this.services, this); + GameProfileCache.setUsesAuthentication(this.usesAuthentication()); + if (!net.minecraftforge.server.ServerLifecycleHooks.handleServerAboutToStart(this)) return false; - f_139598_.info("Preparing level \"{}\"", (Object)this.m_7123_()); - this.m_130006_(); - long j = Util.m_137569_() - i; + LOGGER.info("Preparing level \"{}\"", (Object)this.getLevelIdName()); + this.loadLevel(); + long j = Util.getNanos() - i; String s = String.format(Locale.ROOT, "%.3fs", (double)j / 1.0E9D); - f_139598_.info("Done ({})! For help, type \"help\"", (Object)s); -+ this.f_129726_ = Util.m_137550_(); //Forge: Update server time to prevent watchdog/spaming during long load. - if (dedicatedserverproperties.f_139744_ != null) { - this.m_129900_().m_46170_(GameRules.f_46153_).m_46246_(dedicatedserverproperties.f_139744_, this); + LOGGER.info("Done ({})! For help, type \"help\"", (Object)s); ++ this.nextTickTime = Util.getMillis(); //Forge: Update server time to prevent watchdog/spaming during long load. + if (dedicatedserverproperties.announcePlayerAchievements != null) { + this.getGameRules().getRule(GameRules.RULE_ANNOUNCE_ADVANCEMENTS).set(dedicatedserverproperties.announcePlayerAchievements, this); } @@ -188,7 +_,12 @@ - f_139598_.info("JMX monitoring enabled"); + LOGGER.info("JMX monitoring enabled"); } - return true; + if (net.minecraftforge.common.ForgeConfig.SERVER.advertiseDedicatedServerToLan.get()) { -+ this.dediLanPinger = new net.minecraft.client.server.LanServerPinger(this.m_129916_(), String.valueOf(this.m_7448_())); ++ this.dediLanPinger = new net.minecraft.client.server.LanServerPinger(this.getMotd(), String.valueOf(this.getServerPort())); + this.dediLanPinger.start(); + } + @@ -46,7 +46,7 @@ } @@ -263,6 +_,10 @@ - this.f_139601_.m_7530_(); + this.queryThreadGs4.stop(); } + if (this.dediLanPinger != null) { @@ -55,17 +55,17 @@ + } } - public void m_5703_(BooleanSupplier p_139661_) { + public void tickChildren(BooleanSupplier p_139661_) { @@ -496,7 +_,12 @@ } - public void m_7041_() { + public void stopServer() { + net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.event.GameShuttingDownEvent()); - super.m_7041_(); + super.stopServer(); + if (this.dediLanPinger != null) { + this.dediLanPinger.interrupt(); + this.dediLanPinger = null; + } - Util.m_137580_(); - SkullBlockEntity.m_196704_(); + Util.shutdownExecutors(); + SkullBlockEntity.clear(); } diff --git a/patches/minecraft/net/minecraft/server/dedicated/ServerWatchdog.java.patch b/patches/minecraft/net/minecraft/server/dedicated/ServerWatchdog.java.patch index 7a28068e71..848ca93c8b 100644 --- a/patches/minecraft/net/minecraft/server/dedicated/ServerWatchdog.java.patch +++ b/patches/minecraft/net/minecraft/server/dedicated/ServerWatchdog.java.patch @@ -8,4 +8,4 @@ + Error error = new Error(String.format(java.util.Locale.ENGLISH, "ServerHangWatchdog detected that a single server tick took %.2f seconds (should be max 0.05)", k / 1000F)); // Forge: don't just make a crash report with a seemingly-inexplicable Error for(ThreadInfo threadinfo : athreadinfo) { - if (threadinfo.getThreadId() == this.f_139782_.m_6304_().getId()) { + if (threadinfo.getThreadId() == this.server.getRunningThread().getId()) { diff --git a/patches/minecraft/net/minecraft/server/dedicated/Settings.java.patch b/patches/minecraft/net/minecraft/server/dedicated/Settings.java.patch index 1c1d9b0ed5..cc9b374659 100644 --- a/patches/minecraft/net/minecraft/server/dedicated/Settings.java.patch +++ b/patches/minecraft/net/minecraft/server/dedicated/Settings.java.patch @@ -2,10 +2,10 @@ +++ b/net/minecraft/server/dedicated/Settings.java @@ -55,7 +_,7 @@ - public void m_139876_(Path p_139877_) { + public void store(Path p_139877_) { try (Writer writer = Files.newBufferedWriter(p_139877_, StandardCharsets.UTF_8)) { -- this.f_139798_.store(writer, "Minecraft server properties"); -+ net.minecraftforge.common.util.SortedProperties.store(this.f_139798_, writer, "Minecraft server properties"); +- this.properties.store(writer, "Minecraft server properties"); ++ net.minecraftforge.common.util.SortedProperties.store(this.properties, writer, "Minecraft server properties"); } catch (IOException ioexception) { - f_139797_.error("Failed to store properties to file: {}", (Object)p_139877_); + LOGGER.error("Failed to store properties to file: {}", (Object)p_139877_); } diff --git a/patches/minecraft/net/minecraft/server/gui/MinecraftServerGui.java.patch b/patches/minecraft/net/minecraft/server/gui/MinecraftServerGui.java.patch index de003cdfa2..ba4022a3ac 100644 --- a/patches/minecraft/net/minecraft/server/gui/MinecraftServerGui.java.patch +++ b/patches/minecraft/net/minecraft/server/gui/MinecraftServerGui.java.patch @@ -5,19 +5,19 @@ } + private java.util.concurrent.CountDownLatch latch = new java.util.concurrent.CountDownLatch(1); - public void m_139908_() { - this.f_139902_.start(); + public void start() { + this.logAppenderThread.start(); + latch.countDown(); } - public void m_139925_() { + public void close() { @@ -155,6 +_,9 @@ } - public void m_139914_(JTextArea p_139915_, JScrollPane p_139916_, String p_139917_) { + public void print(JTextArea p_139915_, JScrollPane p_139916_, String p_139917_) { + try { + latch.await(); + } catch (InterruptedException e){} //Prevent logging until after constructor has ended. if (!SwingUtilities.isEventDispatchThread()) { SwingUtilities.invokeLater(() -> { - this.m_139914_(p_139915_, p_139916_, p_139917_); + this.print(p_139915_, p_139916_, p_139917_); diff --git a/patches/minecraft/net/minecraft/server/level/ChunkHolder.java.patch b/patches/minecraft/net/minecraft/server/level/ChunkHolder.java.patch index 4041345e78..59794e70cb 100644 --- a/patches/minecraft/net/minecraft/server/level/ChunkHolder.java.patch +++ b/patches/minecraft/net/minecraft/server/level/ChunkHolder.java.patch @@ -1,10 +1,10 @@ --- a/net/minecraft/server/level/ChunkHolder.java +++ b/net/minecraft/server/level/ChunkHolder.java @@ -63,6 +_,7 @@ - private final ChunkHolder.LevelChangeListener f_140015_; - private final ChunkHolder.PlayerProvider f_140016_; - private boolean f_140017_; + private final ChunkHolder.LevelChangeListener onLevelChange; + private final ChunkHolder.PlayerProvider playerProvider; + private boolean wasAccessibleSinceLastSave; + LevelChunk currentlyLoading; // Forge: Used to bypass future chain when loading chunks. - private CompletableFuture f_142981_ = CompletableFuture.completedFuture((Void)null); - private CompletableFuture f_290310_ = CompletableFuture.completedFuture((Object)null); + private CompletableFuture pendingFullStateConfirmation = CompletableFuture.completedFuture((Void)null); + private CompletableFuture sendSync = CompletableFuture.completedFuture((Object)null); diff --git a/patches/minecraft/net/minecraft/server/level/ChunkMap.java.patch b/patches/minecraft/net/minecraft/server/level/ChunkMap.java.patch index bb29b447be..f432592eb5 100644 --- a/patches/minecraft/net/minecraft/server/level/ChunkMap.java.patch +++ b/patches/minecraft/net/minecraft/server/level/ChunkMap.java.patch @@ -1,29 +1,29 @@ --- a/net/minecraft/server/level/ChunkMap.java +++ b/net/minecraft/server/level/ChunkMap.java @@ -392,6 +_,7 @@ - this.f_140140_ = true; + this.modified = true; } -+ net.minecraftforge.event.ForgeEventFactory.fireChunkTicketLevelUpdated(this.f_140133_, p_140177_, p_140180_, p_140178_, p_140179_); ++ net.minecraftforge.event.ForgeEventFactory.fireChunkTicketLevelUpdated(this.level, p_140177_, p_140180_, p_140178_, p_140179_); return p_140179_; } } @@ -497,6 +_,7 @@ - if (this.f_140131_.remove(p_140182_, p_140183_) && p_203002_ != null) { + if (this.pendingUnloads.remove(p_140182_, p_140183_) && p_203002_ != null) { if (p_203002_ instanceof LevelChunk) { - ((LevelChunk)p_203002_).m_62913_(false); + ((LevelChunk)p_203002_).setLoaded(false); + net.minecraftforge.event.ForgeEventFactory.onChunkUnload(p_203002_); } - this.m_140258_(p_203002_); + this.save(p_203002_); @@ -707,8 +_,14 @@ - levelchunk.m_62952_(); - if (this.f_140132_.add(chunkpos.m_45588_())) { - levelchunk.m_62913_(true); + levelchunk.runPostLoad(); + if (this.entitiesInLevel.add(chunkpos.toLong())) { + levelchunk.setLoaded(true); + try { + p_140384_.currentlyLoading = levelchunk; // Forge - bypass the future chain when getChunk is called, this prevents deadlocks. - levelchunk.m_156369_(); - levelchunk.m_187958_(this.f_140133_); + levelchunk.registerAllBlockEntitiesAfterLevelLoad(); + levelchunk.registerTickContainerInLevel(this.level); + net.minecraftforge.event.ForgeEventFactory.onChunkLoad(levelchunk, !(protochunk instanceof ImposterProtoChunk)); + } finally { + p_140384_.currentlyLoading = null; // Forge - Stop bypassing the future chain. @@ -32,43 +32,43 @@ return levelchunk; @@ -756,6 +_,7 @@ - for(ServerPlayer serverplayer : this.f_140149_.m_183926_()) { - if (serverplayer.m_292900_().m_293959_(chunkpos)) { - m_296018_(serverplayer, p_299599_); -+ net.minecraftforge.event.ForgeEventFactory.fireChunkWatch(serverplayer, p_299599_, this.f_140133_); + for(ServerPlayer serverplayer : this.playerMap.getAllPlayers()) { + if (serverplayer.getChunkTrackingView().contains(chunkpos)) { + markChunkPendingToSend(serverplayer, p_299599_); ++ net.minecraftforge.event.ForgeEventFactory.fireChunkWatch(serverplayer, p_299599_, this.level); } } @@ -823,6 +_,7 @@ - this.f_140133_.m_46473_().m_6174_("chunkSave"); - CompoundTag compoundtag = ChunkSerializer.m_63454_(this.f_140133_, p_140259_); -+ net.minecraftforge.event.ForgeEventFactory.onChunkDataSave(p_140259_, p_140259_.getWorldForge() != null ? p_140259_.getWorldForge() : this.f_140133_, compoundtag); - this.m_63502_(chunkpos, compoundtag); - this.m_140229_(chunkpos, chunkstatus.m_62494_()); + this.level.getProfiler().incrementCounter("chunkSave"); + CompoundTag compoundtag = ChunkSerializer.write(this.level, p_140259_); ++ net.minecraftforge.event.ForgeEventFactory.onChunkDataSave(p_140259_, p_140259_.getWorldForge() != null ? p_140259_.getWorldForge() : this.level, compoundtag); + this.write(chunkpos, compoundtag); + this.markPosition(chunkpos, chunkstatus.getChunkType()); return true; @@ -877,6 +_,7 @@ - LevelChunk levelchunk = this.m_295187_(p_298062_.m_45588_()); + LevelChunk levelchunk = this.getChunkToSend(p_298062_.toLong()); if (levelchunk != null) { - m_296018_(p_297974_, levelchunk); -+ net.minecraftforge.event.ForgeEventFactory.fireChunkWatch(p_297974_, levelchunk, this.f_140133_); + markChunkPendingToSend(p_297974_, levelchunk); ++ net.minecraftforge.event.ForgeEventFactory.fireChunkWatch(p_297974_, levelchunk, this.level); } } @@ -1099,6 +_,7 @@ - this.m_294841_(p_301380_, p_296566_); + this.markChunkPendingToSend(p_301380_, p_296566_); }, (p_296568_) -> { - m_295122_(p_301380_, p_296568_); -+ net.minecraftforge.event.ForgeEventFactory.fireChunkUnWatch(p_301380_, p_296568_, this.f_140133_); + dropChunk(p_301380_, p_296568_); ++ net.minecraftforge.event.ForgeEventFactory.fireChunkUnWatch(p_301380_, p_296568_, this.level); }); - p_301380_.m_294756_(p_301057_); + p_301380_.setChunkTrackingView(p_301057_); } @@ -1118,7 +_,7 @@ } - protected void m_140199_(Entity p_140200_) { + protected void addEntity(Entity p_140200_) { - if (!(p_140200_ instanceof EnderDragonPart)) { + if (!(p_140200_ instanceof net.minecraftforge.entity.PartEntity)) { - EntityType entitytype = p_140200_.m_6095_(); - int i = entitytype.m_20681_() * 16; + EntityType entitytype = p_140200_.getType(); + int i = entitytype.clientTrackingRange() * 16; if (i != 0) { diff --git a/patches/minecraft/net/minecraft/server/level/DistanceManager.java.patch b/patches/minecraft/net/minecraft/server/level/DistanceManager.java.patch index 22f37acdd6..1d6468f399 100644 --- a/patches/minecraft/net/minecraft/server/level/DistanceManager.java.patch +++ b/patches/minecraft/net/minecraft/server/level/DistanceManager.java.patch @@ -1,29 +1,29 @@ --- a/net/minecraft/server/level/DistanceManager.java +++ b/net/minecraft/server/level/DistanceManager.java @@ -54,6 +_,8 @@ - private long f_140771_; - private int f_183902_ = 10; + private long ticketTickCounter; + private int simulationDistance = 10; + private final Long2ObjectOpenHashMap>> forcedTickets = new Long2ObjectOpenHashMap<>(); + protected DistanceManager(Executor p_140774_, Executor p_140775_) { - ProcessorHandle processorhandle = ProcessorHandle.m_18714_("player ticket throttler", p_140775_::execute); + ProcessorHandle processorhandle = ProcessorHandle.of("player ticket throttler", p_140775_::execute); ChunkTaskPriorityQueueSorter chunktaskpriorityqueuesorter = new ChunkTaskPriorityQueueSorter(ImmutableList.of(processorhandle), p_140774_, 4); @@ -159,6 +_,10 @@ - this.f_140762_.m_140715_(p_140785_, p_140786_.m_9433_(), true); + this.ticketTracker.update(p_140785_, p_140786_.getTicketLevel(), true); } + if (p_140786_.isForceTicks()) { -+ SortedArraySet> tickets = forcedTickets.computeIfAbsent(p_140785_, e -> SortedArraySet.m_14246_(4)); -+ tickets.m_14253_(ticket); ++ SortedArraySet> tickets = forcedTickets.computeIfAbsent(p_140785_, e -> SortedArraySet.create(4)); ++ tickets.addOrGet(ticket); + } } - void m_140818_(long p_140819_, Ticket p_140820_) { + void removeTicket(long p_140819_, Ticket p_140820_) { @@ -171,6 +_,13 @@ } - this.f_140762_.m_140715_(p_140819_, m_140797_(sortedarrayset), false); + this.ticketTracker.update(p_140819_, getTicketLevelAt(sortedarrayset), false); + + if (p_140820_.isForceTicks()) { + SortedArraySet> tickets = forcedTickets.get(p_140819_); @@ -33,34 +33,34 @@ + } } - public void m_140792_(TicketType p_140793_, ChunkPos p_140794_, int p_140795_, T p_140796_) { + public void addTicket(TicketType p_140793_, ChunkPos p_140794_, int p_140795_, T p_140796_) { @@ -183,14 +_,20 @@ } - public void m_140840_(TicketType p_140841_, ChunkPos p_140842_, int p_140843_, T p_140844_) { -- Ticket ticket = new Ticket<>(p_140841_, ChunkLevel.m_287154_(FullChunkStatus.FULL) - p_140843_, p_140844_); + public void addRegionTicket(TicketType p_140841_, ChunkPos p_140842_, int p_140843_, T p_140844_) { +- Ticket ticket = new Ticket<>(p_140841_, ChunkLevel.byStatus(FullChunkStatus.FULL) - p_140843_, p_140844_); + addRegionTicket(p_140841_, p_140842_, p_140843_, p_140844_, false); + } + public void addRegionTicket(TicketType p_140841_, ChunkPos p_140842_, int p_140843_, T p_140844_, boolean forceTicks) { -+ Ticket ticket = new Ticket<>(p_140841_, ChunkLevel.m_287154_(FullChunkStatus.FULL) - p_140843_, p_140844_, forceTicks); - long i = p_140842_.m_45588_(); - this.m_140784_(i, ticket); - this.f_183901_.m_184151_(i, ticket); ++ Ticket ticket = new Ticket<>(p_140841_, ChunkLevel.byStatus(FullChunkStatus.FULL) - p_140843_, p_140844_, forceTicks); + long i = p_140842_.toLong(); + this.addTicket(i, ticket); + this.tickingTicketsTracker.addTicket(i, ticket); } - public void m_140849_(TicketType p_140850_, ChunkPos p_140851_, int p_140852_, T p_140853_) { -- Ticket ticket = new Ticket<>(p_140850_, ChunkLevel.m_287154_(FullChunkStatus.FULL) - p_140852_, p_140853_); + public void removeRegionTicket(TicketType p_140850_, ChunkPos p_140851_, int p_140852_, T p_140853_) { +- Ticket ticket = new Ticket<>(p_140850_, ChunkLevel.byStatus(FullChunkStatus.FULL) - p_140852_, p_140853_); + removeRegionTicket(p_140850_, p_140851_, p_140852_, p_140853_, false); + } + public void removeRegionTicket(TicketType p_140850_, ChunkPos p_140851_, int p_140852_, T p_140853_, boolean forceTicks) { -+ Ticket ticket = new Ticket<>(p_140850_, ChunkLevel.m_287154_(FullChunkStatus.FULL) - p_140852_, p_140853_, forceTicks); - long i = p_140851_.m_45588_(); - this.m_140818_(i, ticket); - this.f_183901_.m_184165_(i, ticket); ++ Ticket ticket = new Ticket<>(p_140850_, ChunkLevel.byStatus(FullChunkStatus.FULL) - p_140852_, p_140853_, forceTicks); + long i = p_140851_.toLong(); + this.removeTicket(i, ticket); + this.tickingTicketsTracker.removeTicket(i, ticket); @@ -281,6 +_,11 @@ - public String m_140837_() { - return this.f_140766_.m_140558_(); + public String getDebugStatus() { + return this.ticketThrottler.getDebugStatus(); + } + + public boolean shouldForceTicks(long chunkPos) { @@ -68,4 +68,4 @@ + return tickets != null && !tickets.isEmpty(); } - private void m_143207_(String p_143208_) { + private void dumpTickets(String p_143208_) { diff --git a/patches/minecraft/net/minecraft/server/level/ServerChunkCache.java.patch b/patches/minecraft/net/minecraft/server/level/ServerChunkCache.java.patch index 778b3ddfbf..4212c7c616 100644 --- a/patches/minecraft/net/minecraft/server/level/ServerChunkCache.java.patch +++ b/patches/minecraft/net/minecraft/server/level/ServerChunkCache.java.patch @@ -5,35 +5,35 @@ return null; } else { + if (chunkholder.currentlyLoading != null) return chunkholder.currentlyLoading; // Forge: If the requested chunk is loading, bypass the future chain to prevent a deadlock. - Either either = chunkholder.m_140080_(ChunkStatus.f_62326_).getNow((Either)null); + Either either = chunkholder.getFutureIfPresent(ChunkStatus.FULL).getNow((Either)null); if (either == null) { return null; @@ -351,7 +_,7 @@ for(ServerChunkCache.ChunkAndHolder serverchunkcache$chunkandholder : list) { - LevelChunk levelchunk1 = serverchunkcache$chunkandholder.f_184028_; - ChunkPos chunkpos = levelchunk1.m_7697_(); -- if (this.f_8329_.m_201916_(chunkpos) && this.f_8325_.m_183879_(chunkpos)) { -+ if ((this.f_8329_.m_201916_(chunkpos) && this.f_8325_.m_183879_(chunkpos)) || this.f_8327_.shouldForceTicks(chunkpos.m_45588_())) { - levelchunk1.m_187632_(j); - if (flag2 && (this.f_8335_ || this.f_8336_) && this.f_8329_.m_6857_().m_61927_(chunkpos)) { - NaturalSpawner.m_47029_(this.f_8329_, levelchunk1, naturalspawner$spawnstate, this.f_8336_, this.f_8335_, flag1); + LevelChunk levelchunk1 = serverchunkcache$chunkandholder.chunk; + ChunkPos chunkpos = levelchunk1.getPos(); +- if (this.level.isNaturalSpawningAllowed(chunkpos) && this.chunkMap.anyPlayerCloseEnoughForSpawning(chunkpos)) { ++ if ((this.level.isNaturalSpawningAllowed(chunkpos) && this.chunkMap.anyPlayerCloseEnoughForSpawning(chunkpos)) || this.distanceManager.shouldForceTicks(chunkpos.toLong())) { + levelchunk1.incrementInhabitedTime(j); + if (flag2 && (this.spawnEnemies || this.spawnFriendlies) && this.level.getWorldBorder().isWithinBounds(chunkpos)) { + NaturalSpawner.spawnForChunk(this.level, levelchunk1, naturalspawner$spawnstate, this.spawnFriendlies, this.spawnEnemies, flag1); @@ -432,11 +_,17 @@ } - public void m_8387_(TicketType p_8388_, ChunkPos p_8389_, int p_8390_, T p_8391_) { -- this.f_8327_.m_140840_(p_8388_, p_8389_, p_8390_, p_8391_); + public void addRegionTicket(TicketType p_8388_, ChunkPos p_8389_, int p_8390_, T p_8391_) { +- this.distanceManager.addRegionTicket(p_8388_, p_8389_, p_8390_, p_8391_); + addRegionTicket(p_8388_, p_8389_, p_8390_, p_8391_, false); + } + public void addRegionTicket(TicketType p_8388_, ChunkPos p_8389_, int p_8390_, T p_8391_, boolean forceTicks) { -+ this.f_8327_.addRegionTicket(p_8388_, p_8389_, p_8390_, p_8391_, forceTicks); ++ this.distanceManager.addRegionTicket(p_8388_, p_8389_, p_8390_, p_8391_, forceTicks); } - public void m_8438_(TicketType p_8439_, ChunkPos p_8440_, int p_8441_, T p_8442_) { -- this.f_8327_.m_140849_(p_8439_, p_8440_, p_8441_, p_8442_); + public void removeRegionTicket(TicketType p_8439_, ChunkPos p_8440_, int p_8441_, T p_8442_) { +- this.distanceManager.removeRegionTicket(p_8439_, p_8440_, p_8441_, p_8442_); + removeRegionTicket(p_8439_, p_8440_, p_8441_, p_8442_, false); + } + public void removeRegionTicket(TicketType p_8439_, ChunkPos p_8440_, int p_8441_, T p_8442_, boolean forceTicks) { -+ this.f_8327_.removeRegionTicket(p_8439_, p_8440_, p_8441_, p_8442_, forceTicks); ++ this.distanceManager.removeRegionTicket(p_8439_, p_8440_, p_8441_, p_8442_, forceTicks); } - public void m_6692_(ChunkPos p_8400_, boolean p_8401_) { + public void updateChunkForced(ChunkPos p_8400_, boolean p_8401_) { diff --git a/patches/minecraft/net/minecraft/server/level/ServerEntity.java.patch b/patches/minecraft/net/minecraft/server/level/ServerEntity.java.patch index 797e2d36e3..249293e94b 100644 --- a/patches/minecraft/net/minecraft/server/level/ServerEntity.java.patch +++ b/patches/minecraft/net/minecraft/server/level/ServerEntity.java.patch @@ -2,45 +2,45 @@ +++ b/net/minecraft/server/level/ServerEntity.java @@ -95,10 +_,9 @@ if ($$11 instanceof ItemFrame itemframe) { - if (this.f_8521_ % 10 == 0) { - ItemStack itemstack = itemframe.m_31822_(); -- if (itemstack.m_41720_() instanceof MapItem) { -- Integer integer = MapItem.m_151131_(itemstack); -- MapItemSavedData mapitemsaveddata = MapItem.m_151128_(integer, this.f_8509_); + if (this.tickCount % 10 == 0) { + ItemStack itemstack = itemframe.getItem(); +- if (itemstack.getItem() instanceof MapItem) { +- Integer integer = MapItem.getMapId(itemstack); +- MapItemSavedData mapitemsaveddata = MapItem.getSavedData(integer, this.level); - if (mapitemsaveddata != null) { -+ Integer integer = MapItem.m_151131_(itemstack); -+ MapItemSavedData mapitemsaveddata = MapItem.m_42853_(itemstack, this.f_8509_); ++ Integer integer = MapItem.getMapId(itemstack); ++ MapItemSavedData mapitemsaveddata = MapItem.getSavedData(itemstack, this.level); + if (mapitemsaveddata != null) { - for(ServerPlayer serverplayer : this.f_8509_.m_6907_()) { - mapitemsaveddata.m_77918_(serverplayer, itemstack); - Packet packet = mapitemsaveddata.m_164796_(integer, serverplayer); + for(ServerPlayer serverplayer : this.level.players()) { + mapitemsaveddata.tickCarriedBy(serverplayer, itemstack); + Packet packet = mapitemsaveddata.getUpdatePacket(integer, serverplayer); @@ -107,11 +_,12 @@ } } } - } - this.m_8543_(); + this.sendDirtyEntityData(); } } + + - if (this.f_8521_ % this.f_8511_ == 0 || this.f_8510_.f_19812_ || this.f_8510_.m_20088_().m_135352_()) { - if (this.f_8510_.m_20159_()) { + if (this.tickCount % this.updateInterval == 0 || this.entity.hasImpulse || this.entity.getEntityData().isDirty()) { + if (this.entity.isPassenger()) { @@ -218,6 +_,7 @@ - public void m_8534_(ServerPlayer p_8535_) { - this.f_8510_.m_6452_(p_8535_); - p_8535_.f_8906_.m_141995_(new ClientboundRemoveEntitiesPacket(this.f_8510_.m_19879_())); -+ net.minecraftforge.event.ForgeEventFactory.onStopEntityTracking(this.f_8510_, p_8535_); + public void removePairing(ServerPlayer p_8535_) { + this.entity.stopSeenByPlayer(p_8535_); + p_8535_.connection.send(new ClientboundRemoveEntitiesPacket(this.entity.getId())); ++ net.minecraftforge.event.ForgeEventFactory.onStopEntityTracking(this.entity, p_8535_); } - public void m_8541_(ServerPlayer p_8542_) { + public void addPairing(ServerPlayer p_8542_) { @@ -225,6 +_,7 @@ - this.m_289200_(p_8542_, list::add); - p_8542_.f_8906_.m_141995_(new ClientboundBundlePacket(list)); - this.f_8510_.m_6457_(p_8542_); -+ net.minecraftforge.event.ForgeEventFactory.onStartEntityTracking(this.f_8510_, p_8542_); + this.sendPairingData(p_8542_, list::add); + p_8542_.connection.send(new ClientboundBundlePacket(list)); + this.entity.startSeenByPlayer(p_8542_); ++ net.minecraftforge.event.ForgeEventFactory.onStartEntityTracking(this.entity, p_8542_); } - public void m_289200_(ServerPlayer p_289562_, Consumer> p_289563_) { + public void sendPairingData(ServerPlayer p_289562_, Consumer> p_289563_) { diff --git a/patches/minecraft/net/minecraft/server/level/ServerLevel.java.patch b/patches/minecraft/net/minecraft/server/level/ServerLevel.java.patch index 79fb20fd65..8ce6828c80 100644 --- a/patches/minecraft/net/minecraft/server/level/ServerLevel.java.patch +++ b/patches/minecraft/net/minecraft/server/level/ServerLevel.java.patch @@ -1,100 +1,100 @@ --- a/net/minecraft/server/level/ServerLevel.java +++ b/net/minecraft/server/level/ServerLevel.java @@ -188,11 +_,12 @@ - private final List f_8558_; + private final List customSpawners; @Nullable - private EndDragonFight f_8559_; -- final Int2ObjectMap f_143247_ = new Int2ObjectOpenHashMap<>(); -+ final Int2ObjectMap> f_143247_ = new Int2ObjectOpenHashMap<>(); - private final StructureManager f_214997_; - private final StructureCheck f_196556_; - private final boolean f_8561_; - private final RandomSequences f_286969_; + private EndDragonFight dragonFight; +- final Int2ObjectMap dragonParts = new Int2ObjectOpenHashMap<>(); ++ final Int2ObjectMap> dragonParts = new Int2ObjectOpenHashMap<>(); + private final StructureManager structureManager; + private final StructureCheck structureCheck; + private final boolean tickTime; + private final RandomSequences randomSequences; + private net.minecraftforge.common.util.LevelCapabilityData capabilityData; public ServerLevel(MinecraftServer p_214999_, Executor p_215000_, LevelStorageSource.LevelStorageAccess p_215001_, ServerLevelData p_215002_, ResourceKey p_215003_, LevelStem p_215004_, ChunkProgressListener p_215005_, boolean p_215006_, long p_215007_, List p_215008_, boolean p_215009_, @Nullable RandomSequences p_288977_) { - super(p_215002_, p_215003_, p_214999_.m_206579_(), p_215004_.f_63975_(), p_214999_::m_129905_, false, p_215006_, p_215007_, p_214999_.m_213994_()); + super(p_215002_, p_215003_, p_214999_.registryAccess(), p_215004_.type(), p_214999_::getProfiler, false, p_215006_, p_215007_, p_214999_.getMaxChainedNeighborUpdates()); @@ -232,6 +_,7 @@ - this.f_286969_ = Objects.requireNonNullElseGet(p_288977_, () -> { - return this.m_8895_().m_164861_(RandomSequences.m_295760_(i), "random_sequences"); + this.randomSequences = Objects.requireNonNullElseGet(p_288977_, () -> { + return this.getDataStorage().computeIfAbsent(RandomSequences.factory(i), "random_sequences"); }); + this.initCapabilities(); } /** @deprecated */ @@ -267,8 +_,8 @@ - int i = this.m_46469_().m_46215_(GameRules.f_151486_); - if (this.f_143245_.m_144002_(i) && this.f_143245_.m_144004_(i, this.f_8546_)) { - if (this.m_46469_().m_46207_(GameRules.f_46140_)) { -- long j = this.f_46442_.m_6792_() + 24000L; -- this.m_8615_(j - j % 24000L); -+ long j = this.m_46468_() + 24000L; -+ this.m_8615_(net.minecraftforge.event.ForgeEventFactory.onSleepFinished(this, j - j % 24000L, this.m_46468_())); + int i = this.getGameRules().getInt(GameRules.RULE_PLAYERS_SLEEPING_PERCENTAGE); + if (this.sleepStatus.areEnoughSleeping(i) && this.sleepStatus.areEnoughDeepSleeping(i, this.players)) { + if (this.getGameRules().getBoolean(GameRules.RULE_DAYLIGHT)) { +- long j = this.levelData.getDayTime() + 24000L; +- this.setDayTime(j - j % 24000L); ++ long j = this.getDayTime() + 24000L; ++ this.setDayTime(net.minecraftforge.event.ForgeEventFactory.onSleepFinished(this, j - j % 24000L, this.getDayTime())); } - this.m_8804_(); + this.wakeUpAllPlayers(); @@ -297,7 +_,7 @@ - this.m_8807_(); - this.f_8557_ = false; - profilerfiller.m_7238_(); -- boolean flag = !this.f_8546_.isEmpty() || !this.m_8902_().isEmpty(); -+ boolean flag = !this.f_8546_.isEmpty() || net.minecraftforge.common.world.ForgeChunkManager.hasForcedChunks(this); //Forge: Replace vanilla's has forced chunk check with forge's that checks both the vanilla and forge added ones + this.runBlockEvents(); + this.handlingTick = false; + profilerfiller.pop(); +- boolean flag = !this.players.isEmpty() || !this.getForcedChunks().isEmpty(); ++ boolean flag = !this.players.isEmpty() || net.minecraftforge.common.world.ForgeChunkManager.hasForcedChunks(this); //Forge: Replace vanilla's has forced chunk check with forge's that checks both the vanilla and forge added ones if (flag) { - this.m_8886_(); + this.resetEmptyTime(); } @@ -329,7 +_,9 @@ } - profilerfiller.m_6180_("tick"); -- this.m_46653_(this::m_8647_, p_184065_); -+ if (!p_184065_.m_213877_() && !(p_184065_ instanceof net.minecraftforge.entity.PartEntity)) { -+ this.m_46653_(this::m_8647_, p_184065_); + profilerfiller.push("tick"); +- this.guardEntityTick(this::tickNonPassenger, p_184065_); ++ if (!p_184065_.isRemoved() && !(p_184065_ instanceof net.minecraftforge.entity.PartEntity)) { ++ this.guardEntityTick(this::tickNonPassenger, p_184065_); + } - profilerfiller.m_7238_(); + profilerfiller.pop(); } } @@ -461,6 +_,7 @@ - BlockPos blockpos = this.m_5452_(Heightmap.Types.MOTION_BLOCKING, p_300602_); - BlockPos blockpos1 = blockpos.m_7495_(); - Biome biome = this.m_204166_(blockpos).m_203334_(); + BlockPos blockpos = this.getHeightmapPos(Heightmap.Types.MOTION_BLOCKING, p_300602_); + BlockPos blockpos1 = blockpos.below(); + Biome biome = this.getBiome(blockpos).value(); + if (this.isAreaLoaded(blockpos1, 1)) // Forge: check area to avoid loading neighbors in unloaded chunks - if (biome.m_47477_(this, blockpos1)) { - this.m_46597_(blockpos1, Blocks.f_50126_.m_49966_()); + if (biome.shouldFreeze(this, blockpos1)) { + this.setBlockAndUpdate(blockpos1, Blocks.ICE.defaultBlockState()); } @@ -633,15 +_,19 @@ - this.f_8548_.m_6846_().m_11270_(new ClientboundGameEventPacket(ClientboundGameEventPacket.f_132161_, this.f_46440_), this.m_46472_()); + this.server.getPlayerList().broadcastAll(new ClientboundGameEventPacket(ClientboundGameEventPacket.THUNDER_LEVEL_CHANGE, this.thunderLevel), this.dimension()); } + /* The function in use here has been replaced in order to only send the weather info to players in the correct dimension, + * rather than to all players on the server. This is what causes the client-side rain, as the + * client believes that it has started raining locally, rather than in another dimension. + */ - if (flag != this.m_46471_()) { + if (flag != this.isRaining()) { if (flag) { -- this.f_8548_.m_6846_().m_11268_(new ClientboundGameEventPacket(ClientboundGameEventPacket.f_132155_, 0.0F)); -+ this.f_8548_.m_6846_().m_11270_(new ClientboundGameEventPacket(ClientboundGameEventPacket.f_132155_, 0.0F), this.m_46472_()); +- this.server.getPlayerList().broadcastAll(new ClientboundGameEventPacket(ClientboundGameEventPacket.STOP_RAINING, 0.0F)); ++ this.server.getPlayerList().broadcastAll(new ClientboundGameEventPacket(ClientboundGameEventPacket.STOP_RAINING, 0.0F), this.dimension()); } else { -- this.f_8548_.m_6846_().m_11268_(new ClientboundGameEventPacket(ClientboundGameEventPacket.f_132154_, 0.0F)); -+ this.f_8548_.m_6846_().m_11270_(new ClientboundGameEventPacket(ClientboundGameEventPacket.f_132154_, 0.0F), this.m_46472_()); +- this.server.getPlayerList().broadcastAll(new ClientboundGameEventPacket(ClientboundGameEventPacket.START_RAINING, 0.0F)); ++ this.server.getPlayerList().broadcastAll(new ClientboundGameEventPacket(ClientboundGameEventPacket.START_RAINING, 0.0F), this.dimension()); } -- this.f_8548_.m_6846_().m_11268_(new ClientboundGameEventPacket(ClientboundGameEventPacket.f_132160_, this.f_46438_)); -- this.f_8548_.m_6846_().m_11268_(new ClientboundGameEventPacket(ClientboundGameEventPacket.f_132161_, this.f_46440_)); -+ this.f_8548_.m_6846_().m_11270_(new ClientboundGameEventPacket(ClientboundGameEventPacket.f_132160_, this.f_46438_), this.m_46472_()); -+ this.f_8548_.m_6846_().m_11270_(new ClientboundGameEventPacket(ClientboundGameEventPacket.f_132161_, this.f_46440_), this.m_46472_()); +- this.server.getPlayerList().broadcastAll(new ClientboundGameEventPacket(ClientboundGameEventPacket.RAIN_LEVEL_CHANGE, this.rainLevel)); +- this.server.getPlayerList().broadcastAll(new ClientboundGameEventPacket(ClientboundGameEventPacket.THUNDER_LEVEL_CHANGE, this.thunderLevel)); ++ this.server.getPlayerList().broadcastAll(new ClientboundGameEventPacket(ClientboundGameEventPacket.RAIN_LEVEL_CHANGE, this.rainLevel), this.dimension()); ++ this.server.getPlayerList().broadcastAll(new ClientboundGameEventPacket(ClientboundGameEventPacket.THUNDER_LEVEL_CHANGE, this.thunderLevel), this.dimension()); } } @@ -700,6 +_,7 @@ - return BuiltInRegistries.f_256780_.m_7981_(p_8664_.m_6095_()).toString(); + return BuiltInRegistries.ENTITY_TYPE.getKey(p_8664_.getType()).toString(); }); - profilerfiller.m_6174_("tickPassenger"); + profilerfiller.incrementCounter("tickPassenger"); + if (p_8664_.canUpdate()) - p_8664_.m_6083_(); - profilerfiller.m_7238_(); + p_8664_.rideTick(); + profilerfiller.pop(); @@ -736,6 +_,7 @@ - this.f_143244_.m_157554_(); + this.entityManager.autoSave(); } + net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.event.level.LevelEvent.Save(this)); @@ -104,27 +104,27 @@ @@ -828,6 +_,7 @@ } - private void m_8853_(ServerPlayer p_8854_) { + private void addPlayer(ServerPlayer p_8854_) { + if (net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.event.entity.EntityJoinLevelEvent(p_8854_, this))) return; - Entity entity = this.m_142646_().m_142694_(p_8854_.m_20148_()); + Entity entity = this.getEntities().get(p_8854_.getUUID()); if (entity != null) { - f_8566_.warn("Force-added player with duplicate UUID {}", (Object)p_8854_.m_20148_()); + LOGGER.warn("Force-added player with duplicate UUID {}", (Object)p_8854_.getUUID()); @@ -835,7 +_,8 @@ - this.m_143261_((ServerPlayer)entity, Entity.RemovalReason.DISCARDED); + this.removePlayerImmediately((ServerPlayer)entity, Entity.RemovalReason.DISCARDED); } -- this.f_143244_.m_157533_(p_8854_); -+ this.f_143244_.addNewEntityWithoutEvent(p_8854_); +- this.entityManager.addNewEntity(p_8854_); ++ this.entityManager.addNewEntityWithoutEvent(p_8854_); + p_8854_.onAddedToWorld(); } - private boolean m_8872_(Entity p_8873_) { + private boolean addEntity(Entity p_8873_) { @@ -843,7 +_,12 @@ - f_8566_.warn("Tried to add entity {} but it was marked as removed already", (Object)EntityType.m_20613_(p_8873_.m_6095_())); + LOGGER.warn("Tried to add entity {} but it was marked as removed already", (Object)EntityType.getKey(p_8873_.getType())); return false; } else { -- return this.f_143244_.m_157533_(p_8873_); -+ if (this.f_143244_.m_157533_(p_8873_)) { +- return this.entityManager.addNewEntity(p_8873_); ++ if (this.entityManager.addNewEntity(p_8873_)) { + p_8873_.onAddedToWorld(); + return true; + } else { @@ -136,48 +136,48 @@ @@ -880,10 +_,22 @@ } - public void m_262808_(@Nullable Player p_263330_, double p_263393_, double p_263369_, double p_263354_, Holder p_263412_, SoundSource p_263338_, float p_263352_, float p_263390_, long p_263403_) { + public void playSeededSound(@Nullable Player p_263330_, double p_263393_, double p_263369_, double p_263354_, Holder p_263412_, SoundSource p_263338_, float p_263352_, float p_263390_, long p_263403_) { + net.minecraftforge.event.PlayLevelSoundEvent.AtPosition event = net.minecraftforge.event.ForgeEventFactory.onPlaySoundAtPosition(this, p_263393_, p_263369_, p_263354_, p_263412_, p_263338_, p_263352_, p_263390_); + if (event.isCanceled() || event.getSound() == null) return; + p_263412_ = event.getSound(); + p_263338_ = event.getSource(); + p_263352_ = event.getNewVolume(); + p_263390_ = event.getNewPitch(); - this.f_8548_.m_6846_().m_11241_(p_263330_, p_263393_, p_263369_, p_263354_, (double)p_263412_.m_203334_().m_215668_(p_263352_), this.m_46472_(), new ClientboundSoundPacket(p_263412_, p_263338_, p_263393_, p_263369_, p_263354_, p_263352_, p_263390_, p_263403_)); + this.server.getPlayerList().broadcast(p_263330_, p_263393_, p_263369_, p_263354_, (double)p_263412_.value().getRange(p_263352_), this.dimension(), new ClientboundSoundPacket(p_263412_, p_263338_, p_263393_, p_263369_, p_263354_, p_263352_, p_263390_, p_263403_)); } - public void m_213890_(@Nullable Player p_263545_, Entity p_263544_, Holder p_263491_, SoundSource p_263542_, float p_263530_, float p_263520_, long p_263490_) { + public void playSeededSound(@Nullable Player p_263545_, Entity p_263544_, Holder p_263491_, SoundSource p_263542_, float p_263530_, float p_263520_, long p_263490_) { + net.minecraftforge.event.PlayLevelSoundEvent.AtEntity event = net.minecraftforge.event.ForgeEventFactory.onPlaySoundAtEntity(p_263544_, p_263491_, p_263542_, p_263530_, p_263520_); + if (event.isCanceled() || event.getSound() == null) return; + p_263491_ = event.getSound(); + p_263542_ = event.getSource(); + p_263530_ = event.getNewVolume(); + p_263520_ = event.getNewPitch(); - this.f_8548_.m_6846_().m_11241_(p_263545_, p_263544_.m_20185_(), p_263544_.m_20186_(), p_263544_.m_20189_(), (double)p_263491_.m_203334_().m_215668_(p_263530_), this.m_46472_(), new ClientboundSoundEntityPacket(p_263491_, p_263542_, p_263544_, p_263530_, p_263520_, p_263490_)); + this.server.getPlayerList().broadcast(p_263545_, p_263544_.getX(), p_263544_.getY(), p_263544_.getZ(), (double)p_263491_.value().getRange(p_263530_), this.dimension(), new ClientboundSoundEntityPacket(p_263491_, p_263542_, p_263544_, p_263530_, p_263520_, p_263490_)); } @@ -905,6 +_,7 @@ } - public void m_214171_(GameEvent p_215041_, Vec3 p_215042_, GameEvent.Context p_215043_) { + public void gameEvent(GameEvent p_215041_, Vec3 p_215042_, GameEvent.Context p_215043_) { + if (!net.minecraftforge.common.ForgeHooks.onVanillaGameEvent(this, p_215041_, p_215042_, p_215043_)) return; - this.f_243695_.m_245905_(p_215041_, p_215042_, p_215043_); + this.gameEventDispatcher.post(p_215041_, p_215042_, p_215043_); } @@ -941,10 +_,15 @@ } - public void m_46672_(BlockPos p_215045_, Block p_215046_) { -+ net.minecraftforge.event.ForgeEventFactory.onNeighborNotify(this, p_215045_, this.m_8055_(p_215045_), java.util.EnumSet.allOf(Direction.class), false).isCanceled(); - this.f_220350_.m_214152_(p_215045_, p_215046_, (Direction)null); + public void updateNeighborsAt(BlockPos p_215045_, Block p_215046_) { ++ net.minecraftforge.event.ForgeEventFactory.onNeighborNotify(this, p_215045_, this.getBlockState(p_215045_), java.util.EnumSet.allOf(Direction.class), false).isCanceled(); + this.neighborUpdater.updateNeighborsAtExceptFromFacing(p_215045_, p_215046_, (Direction)null); } - public void m_46590_(BlockPos p_215052_, Block p_215053_, Direction p_215054_) { + public void updateNeighborsAtExceptFromFacing(BlockPos p_215052_, Block p_215053_, Direction p_215054_) { + java.util.EnumSet directions = java.util.EnumSet.allOf(Direction.class); + directions.remove(p_215054_); -+ if (net.minecraftforge.event.ForgeEventFactory.onNeighborNotify(this, p_215052_, this.m_8055_(p_215052_), directions, false).isCanceled()) ++ if (net.minecraftforge.event.ForgeEventFactory.onNeighborNotify(this, p_215052_, this.getBlockState(p_215052_), directions, false).isCanceled()) + return; - this.f_220350_.m_214152_(p_215052_, p_215053_, p_215054_); + this.neighborUpdater.updateNeighborsAtExceptFromFacing(p_215052_, p_215053_, p_215054_); } @@ -1380,6 +_,11 @@ @@ -186,48 +186,48 @@ + protected void initCapabilities() { + this.gatherCapabilities(); -+ capabilityData = net.minecraftforge.common.util.LevelCapabilityData.compute(this.m_8895_(), getCapabilities()); ++ capabilityData = net.minecraftforge.common.util.LevelCapabilityData.compute(this.getDataStorage(), getCapabilities()); + } + - public LevelEntityGetter m_142646_() { - return this.f_143244_.m_157567_(); + public LevelEntityGetter getEntities() { + return this.entityManager.getEntityGetter(); } @@ -1475,8 +_,8 @@ - ServerLevel.this.f_143246_.add(mob); + ServerLevel.this.navigatingMobs.add(mob); } - if (p_143371_ instanceof EnderDragon enderdragon) { -- for(EnderDragonPart enderdragonpart : enderdragon.m_31156_()) { +- for(EnderDragonPart enderdragonpart : enderdragon.getSubEntities()) { + if (p_143371_.isMultipartEntity()) { + for(net.minecraftforge.entity.PartEntity enderdragonpart : p_143371_.getParts()) { - ServerLevel.this.f_143247_.put(enderdragonpart.m_19879_(), enderdragonpart); + ServerLevel.this.dragonParts.put(enderdragonpart.getId(), enderdragonpart); } } @@ -1500,17 +_,25 @@ - ServerLevel.this.f_143246_.remove(mob); + ServerLevel.this.navigatingMobs.remove(mob); } - if (p_143375_ instanceof EnderDragon enderdragon) { -- for(EnderDragonPart enderdragonpart : enderdragon.m_31156_()) { +- for(EnderDragonPart enderdragonpart : enderdragon.getSubEntities()) { + if (p_143375_.isMultipartEntity()) { + for(net.minecraftforge.entity.PartEntity enderdragonpart : p_143375_.getParts()) { - ServerLevel.this.f_143247_.remove(enderdragonpart.m_19879_()); + ServerLevel.this.dragonParts.remove(enderdragonpart.getId()); } } - p_143375_.m_213651_(DynamicGameEventListener::m_223634_); + p_143375_.updateDynamicGameEventListener(DynamicGameEventListener::remove); + + p_143375_.onRemovedFromWorld(); + net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.event.entity.EntityLeaveLevelEvent(p_143375_, ServerLevel.this)); } - public void m_214006_(Entity p_215086_) { - p_215086_.m_213651_(DynamicGameEventListener::m_223641_); + public void onSectionChange(Entity p_215086_) { + p_215086_.updateDynamicGameEventListener(DynamicGameEventListener::move); } + } + + @Override + public java.util.Collection> getPartEntities() { -+ return this.f_143247_.values(); ++ return this.dragonParts.values(); } } diff --git a/patches/minecraft/net/minecraft/server/level/ServerPlayer.java.patch b/patches/minecraft/net/minecraft/server/level/ServerPlayer.java.patch index 5eaea463cb..c576db5552 100644 --- a/patches/minecraft/net/minecraft/server/level/ServerPlayer.java.patch +++ b/patches/minecraft/net/minecraft/server/level/ServerPlayer.java.patch @@ -6,162 +6,162 @@ -public class ServerPlayer extends Player { +public class ServerPlayer extends Player implements net.minecraftforge.common.extensions.IForgeServerPlayer { - private static final Logger f_8907_ = LogUtils.getLogger(); - private static final int f_143381_ = 32; - private static final int f_143382_ = 10; + private static final Logger LOGGER = LogUtils.getLogger(); + private static final int NEUTRAL_MOB_DEATH_NOTIFICATION_RADII_XZ = 32; + private static final int NEUTRAL_MOB_DEATH_NOTIFICATION_RADII_Y = 10; @@ -569,6 +_,7 @@ - public void m_6667_(DamageSource p_9035_) { - this.m_146850_(GameEvent.f_223707_); + public void die(DamageSource p_9035_) { + this.gameEvent(GameEvent.ENTITY_DIE); + if (net.minecraftforge.common.ForgeHooks.onLivingDeath(this, p_9035_)) return; - boolean flag = this.m_9236_().m_46469_().m_46207_(GameRules.f_46142_); + boolean flag = this.level().getGameRules().getBoolean(GameRules.RULE_SHOWDEATHMESSAGES); if (flag) { - Component component = this.m_21231_().m_19293_(); + Component component = this.getCombatTracker().getDeathMessage(); @@ -715,11 +_,13 @@ } @Nullable -- public Entity m_5489_(ServerLevel p_9180_) { +- public Entity changeDimension(ServerLevel p_9180_) { + public Entity changeDimension(ServerLevel p_9180_, net.minecraftforge.common.util.ITeleporter teleporter) { -+ if (!net.minecraftforge.event.ForgeEventFactory.onTravelToDimension(this, p_9180_.m_46472_())) ++ if (!net.minecraftforge.event.ForgeEventFactory.onTravelToDimension(this, p_9180_.dimension())) + return null; - this.f_8927_ = true; - ServerLevel serverlevel = this.m_284548_(); - ResourceKey resourcekey = serverlevel.m_46472_(); -- if (resourcekey == Level.f_46430_ && p_9180_.m_46472_() == Level.f_46428_) { -+ if (resourcekey == Level.f_46430_ && p_9180_.m_46472_() == Level.f_46428_ && teleporter.isVanilla()) { //Forge: Fix non-vanilla teleporters triggering end credits - this.m_19877_(); - this.m_284548_().m_143261_(this, Entity.RemovalReason.CHANGED_DIMENSION); - if (!this.f_8944_) { + this.isChangingDimension = true; + ServerLevel serverlevel = this.serverLevel(); + ResourceKey resourcekey = serverlevel.dimension(); +- if (resourcekey == Level.END && p_9180_.dimension() == Level.OVERWORLD) { ++ if (resourcekey == Level.END && p_9180_.dimension() == Level.OVERWORLD && teleporter.isVanilla()) { //Forge: Fix non-vanilla teleporters triggering end credits + this.unRide(); + this.serverLevel().removePlayerImmediately(this, Entity.RemovalReason.CHANGED_DIMENSION); + if (!this.wonGame) { @@ -736,13 +_,14 @@ - PlayerList playerlist = this.f_8924_.m_6846_(); - playerlist.m_11289_(this); - serverlevel.m_143261_(this, Entity.RemovalReason.CHANGED_DIMENSION); -- this.m_146912_(); -- PortalInfo portalinfo = this.m_7937_(p_9180_); + PlayerList playerlist = this.server.getPlayerList(); + playerlist.sendPlayerPermissionLevel(this); + serverlevel.removePlayerImmediately(this, Entity.RemovalReason.CHANGED_DIMENSION); +- this.unsetRemoved(); +- PortalInfo portalinfo = this.findDimensionEntryPoint(p_9180_); + this.revive(); -+ PortalInfo portalinfo = teleporter.getPortalInfo(this, p_9180_, this::m_7937_); ++ PortalInfo portalinfo = teleporter.getPortalInfo(this, p_9180_, this::findDimensionEntryPoint); if (portalinfo != null) { -+ Entity e = teleporter.placeEntity(this, serverlevel, p_9180_, this.m_146908_(), spawnPortal -> {//Forge: Start vanilla logic - serverlevel.m_46473_().m_6180_("moving"); - if (resourcekey == Level.f_46428_ && p_9180_.m_46472_() == Level.f_46429_) { - this.f_8933_ = this.m_20182_(); -- } else if (p_9180_.m_46472_() == Level.f_46430_) { -+ } else if (spawnPortal && p_9180_.m_46472_() == Level.f_46430_) { - this.m_9006_(p_9180_, BlockPos.m_274446_(portalinfo.f_77676_)); ++ Entity e = teleporter.placeEntity(this, serverlevel, p_9180_, this.getYRot(), spawnPortal -> {//Forge: Start vanilla logic + serverlevel.getProfiler().push("moving"); + if (resourcekey == Level.OVERWORLD && p_9180_.dimension() == Level.NETHER) { + this.enteredNetherPosition = this.position(); +- } else if (p_9180_.dimension() == Level.END) { ++ } else if (spawnPortal && p_9180_.dimension() == Level.END) { + this.createEndPlatform(p_9180_, BlockPos.containing(portalinfo.pos)); } @@ -754,6 +_,9 @@ - p_9180_.m_8817_(this); - serverlevel.m_46473_().m_7238_(); - this.m_9209_(serverlevel); + p_9180_.addDuringPortalTeleport(this); + serverlevel.getProfiler().pop(); + this.triggerDimensionChangeTriggers(serverlevel); + return this;//forge: this is part of the ITeleporter patch + });//Forge: End vanilla logic + if (e != this) throw new java.lang.IllegalArgumentException(String.format(java.util.Locale.ENGLISH, "Teleporter %s returned not the player entity but instead %s, expected PlayerEntity %s", teleporter, e, this)); - this.f_8906_.m_141995_(new ClientboundPlayerAbilitiesPacket(this.m_150110_())); - playerlist.m_11229_(this, p_9180_); - playerlist.m_11292_(this); + this.connection.send(new ClientboundPlayerAbilitiesPacket(this.getAbilities())); + playerlist.sendLevelInfo(this, p_9180_); + playerlist.sendAllPlayerInfo(this); @@ -762,10 +_,12 @@ - this.f_8906_.m_141995_(new ClientboundUpdateMobEffectPacket(this.m_19879_(), mobeffectinstance)); + this.connection.send(new ClientboundUpdateMobEffectPacket(this.getId(), mobeffectinstance)); } + if (teleporter.playTeleportSound(this, serverlevel, p_9180_)) - this.f_8906_.m_141995_(new ClientboundLevelEventPacket(1032, BlockPos.f_121853_, 0, false)); - this.f_8920_ = -1; - this.f_8917_ = -1.0F; - this.f_8918_ = -1; -+ net.minecraftforge.event.ForgeEventFactory.onPlayerChangedDimension(this, resourcekey, p_9180_.m_46472_()); + this.connection.send(new ClientboundLevelEventPacket(1032, BlockPos.ZERO, 0, false)); + this.lastSentExp = -1; + this.lastSentHealth = -1.0F; + this.lastSentFood = -1; ++ net.minecraftforge.event.ForgeEventFactory.onPlayerChangedDimension(this, resourcekey, p_9180_.dimension()); } return this; @@ -829,6 +_,9 @@ } - public Either m_7720_(BlockPos p_9115_) { + public Either startSleepInBed(BlockPos p_9115_) { + var optAt = java.util.Optional.of(p_9115_); + var ret = net.minecraftforge.event.ForgeEventFactory.onPlayerSleepInBed(this, optAt); + if (ret != null) return Either.left(ret); - Direction direction = this.m_9236_().m_8055_(p_9115_).m_61143_(HorizontalDirectionalBlock.f_54117_); - if (!this.m_5803_() && this.m_6084_()) { - if (!this.m_9236_().m_6042_().f_63858_()) { + Direction direction = this.level().getBlockState(p_9115_).getValue(HorizontalDirectionalBlock.FACING); + if (!this.isSleeping() && this.isAlive()) { + if (!this.level().dimensionType().natural()) { @@ -839,7 +_,7 @@ return Either.left(Player.BedSleepingProblem.OBSTRUCTED); } else { - this.m_9158_(this.m_9236_().m_46472_(), p_9115_, this.m_146908_(), false, true); -- if (this.m_9236_().m_46461_()) { + this.setRespawnPosition(this.level().dimension(), p_9115_, this.getYRot(), false, true); +- if (this.level().isDay()) { + if (!net.minecraftforge.event.ForgeEventFactory.onSleepingTimeCheck(this, optAt)) { return Either.left(Player.BedSleepingProblem.NOT_POSSIBLE_NOW); } else { - if (!this.m_7500_()) { + if (!this.isCreative()) { @@ -877,6 +_,7 @@ } - private boolean m_9116_(BlockPos p_9117_, Direction p_9118_) { + private boolean bedInRange(BlockPos p_9117_, Direction p_9118_) { + if (p_9118_ == null) return false; - return this.m_9222_(p_9117_) || this.m_9222_(p_9117_.m_121945_(p_9118_.m_122424_())); + return this.isReachableBedBlock(p_9117_) || this.isReachableBedBlock(p_9117_.relative(p_9118_.getOpposite())); } @@ -958,6 +_,7 @@ - this.f_8906_.m_141995_(new ClientboundOpenScreenPacket(abstractcontainermenu.f_38840_, abstractcontainermenu.m_6772_(), p_9033_.m_5446_())); - this.m_143399_(abstractcontainermenu); - this.f_36096_ = abstractcontainermenu; -+ net.minecraftforge.event.ForgeEventFactory.onPlayerOpenContainer(this, this.f_36096_); - return OptionalInt.of(this.f_8940_); + this.connection.send(new ClientboundOpenScreenPacket(abstractcontainermenu.containerId, abstractcontainermenu.getType(), p_9033_.getDisplayName())); + this.initMenu(abstractcontainermenu); + this.containerMenu = abstractcontainermenu; ++ net.minecraftforge.event.ForgeEventFactory.onPlayerOpenContainer(this, this.containerMenu); + return OptionalInt.of(this.containerCounter); } } @@ -976,6 +_,7 @@ - this.f_8906_.m_141995_(new ClientboundHorseScreenOpenPacket(this.f_8940_, p_9060_.m_6643_(), p_9059_.m_19879_())); - this.f_36096_ = new HorseInventoryMenu(this.f_8940_, this.m_150109_(), p_9060_, p_9059_); - this.m_143399_(this.f_36096_); -+ net.minecraftforge.event.ForgeEventFactory.onPlayerOpenContainer(this, this.f_36096_); + this.connection.send(new ClientboundHorseScreenOpenPacket(this.containerCounter, p_9060_.getContainerSize(), p_9059_.getId())); + this.containerMenu = new HorseInventoryMenu(this.containerCounter, this.getInventory(), p_9060_, p_9059_); + this.initMenu(this.containerMenu); ++ net.minecraftforge.event.ForgeEventFactory.onPlayerOpenContainer(this, this.containerMenu); } - public void m_6986_(ItemStack p_9082_, InteractionHand p_9083_) { + public void openItemGui(ItemStack p_9082_, InteractionHand p_9083_) { @@ -1001,6 +_,7 @@ - public void m_9230_() { - this.f_36096_.m_6877_(this); - this.f_36095_.m_150414_(this.f_36096_); -+ net.minecraftforge.event.ForgeEventFactory.onPlayerCloseContainer(this, this.f_36096_); - this.f_36096_ = this.f_36095_; + public void doCloseContainer() { + this.containerMenu.removed(this); + this.inventoryMenu.transferState(this.containerMenu); ++ net.minecraftforge.event.ForgeEventFactory.onPlayerCloseContainer(this, this.containerMenu); + this.containerMenu = this.inventoryMenu; } @@ -1134,6 +_,15 @@ - this.m_36362_(p_9016_.m_36331_()); - this.m_36364_(p_9016_.m_36332_()); - this.m_219749_(p_9016_.m_219759_()); + this.setShoulderEntityLeft(p_9016_.getShoulderEntityLeft()); + this.setShoulderEntityRight(p_9016_.getShoulderEntityRight()); + this.setLastDeathLocation(p_9016_.getLastDeathLocation()); + + //Copy over a section of the Entity Data from the old player. + //Allows mods to specify data that persists after players respawn. + CompoundTag old = p_9016_.getPersistentData(); -+ if (old.m_128441_(PERSISTED_NBT_TAG)) -+ getPersistentData().m_128365_(PERSISTED_NBT_TAG, old.m_128423_(PERSISTED_NBT_TAG)); ++ if (old.contains(PERSISTED_NBT_TAG)) ++ getPersistentData().put(PERSISTED_NBT_TAG, old.get(PERSISTED_NBT_TAG)); + net.minecraftforge.event.ForgeEventFactory.onPlayerClone(this, p_9016_, !p_9017_); + this.tabListHeader = p_9016_.tabListHeader; + this.tabListFooter = p_9016_.tabListFooter; } - protected void m_142540_(MobEffectInstance p_143393_, @Nullable Entity p_143394_) { + protected void onEffectAdded(MobEffectInstance p_143393_, @Nullable Entity p_143394_) { @@ -1214,6 +_,7 @@ } - public boolean m_143403_(GameType p_143404_) { -+ p_143404_ = net.minecraftforge.common.ForgeHooks.onChangeGameType(this, this.f_8941_.m_9290_(), p_143404_); - if (!this.f_8941_.m_143473_(p_143404_)) { + public boolean setGameMode(GameType p_143404_) { ++ p_143404_ = net.minecraftforge.common.ForgeHooks.onChangeGameType(this, this.gameMode.getGameModeForPlayer(), p_143404_); + if (!this.gameMode.changeGameModeForPlayer(p_143404_)) { return false; } else { @@ -1348,6 +_,8 @@ - public void m_9213_(@Nullable Entity p_9214_) { - Entity entity = this.m_8954_(); - this.f_8926_ = (Entity)(p_9214_ == null ? this : p_9214_); -+ while (this.f_8926_ instanceof net.minecraftforge.entity.PartEntity partEntity) -+ this.f_8926_ = partEntity.getParent(); // FORGE: fix MC-46486 - if (entity != this.f_8926_) { - Level level = this.f_8926_.m_9236_(); + public void setCamera(@Nullable Entity p_9214_) { + Entity entity = this.getCamera(); + this.camera = (Entity)(p_9214_ == null ? this : p_9214_); ++ while (this.camera instanceof net.minecraftforge.entity.PartEntity partEntity) ++ this.camera = partEntity.getParent(); // FORGE: fix MC-46486 + if (entity != this.camera) { + Level level = this.camera.level(); if (level instanceof ServerLevel) { @@ -1387,7 +_,11 @@ @Nullable - public Component m_8957_() { + public Component getTabListDisplayName() { - return null; + if (!this.hasTabListName) { + this.tabListDisplayName = net.minecraftforge.event.ForgeEventFactory.getPlayerTabListDisplayName(this); @@ -170,41 +170,41 @@ + return this.tabListDisplayName; } - public void m_6674_(InteractionHand p_9031_) { + public void swing(InteractionHand p_9031_) { @@ -1412,21 +_,23 @@ - this.m_8127_(); - if (p_9000_ == this.m_9236_()) { - this.f_8906_.m_9774_(p_9001_, p_9002_, p_9003_, p_9004_, p_9005_); + this.stopRiding(); + if (p_9000_ == this.level()) { + this.connection.teleport(p_9001_, p_9002_, p_9003_, p_9004_, p_9005_); - } else { -+ } else if (!net.minecraftforge.event.ForgeEventFactory.onTravelToDimension(this, p_9000_.m_46472_())) { - ServerLevel serverlevel = this.m_284548_(); - LevelData leveldata = p_9000_.m_6106_(); - this.f_8906_.m_141995_(new ClientboundRespawnPacket(this.m_292591_(p_9000_), (byte)3)); - this.f_8906_.m_141995_(new ClientboundChangeDifficultyPacket(leveldata.m_5472_(), leveldata.m_5474_())); - this.f_8924_.m_6846_().m_11289_(this); - serverlevel.m_143261_(this, Entity.RemovalReason.CHANGED_DIMENSION); -- this.m_146912_(); ++ } else if (!net.minecraftforge.event.ForgeEventFactory.onTravelToDimension(this, p_9000_.dimension())) { + ServerLevel serverlevel = this.serverLevel(); + LevelData leveldata = p_9000_.getLevelData(); + this.connection.send(new ClientboundRespawnPacket(this.createCommonSpawnInfo(p_9000_), (byte)3)); + this.connection.send(new ClientboundChangeDifficultyPacket(leveldata.getDifficulty(), leveldata.isDifficultyLocked())); + this.server.getPlayerList().sendPlayerPermissionLevel(this); + serverlevel.removePlayerImmediately(this, Entity.RemovalReason.CHANGED_DIMENSION); +- this.unsetRemoved(); + this.revive(); - this.m_7678_(p_9001_, p_9002_, p_9003_, p_9004_, p_9005_); - this.m_284127_(p_9000_); - p_9000_.m_8622_(this); - this.m_9209_(serverlevel); - this.f_8906_.m_9774_(p_9001_, p_9002_, p_9003_, p_9004_, p_9005_); -+ this.f_8941_.m_9260_(p_9000_); - this.f_8924_.m_6846_().m_11229_(this, p_9000_); - this.f_8924_.m_6846_().m_11292_(this); -+ net.minecraftforge.event.ForgeEventFactory.onPlayerChangedDimension(this, serverlevel.m_46472_(), p_9000_.m_46472_()); + this.moveTo(p_9001_, p_9002_, p_9003_, p_9004_, p_9005_); + this.setServerLevel(p_9000_); + p_9000_.addDuringCommandTeleport(this); + this.triggerDimensionChangeTriggers(serverlevel); + this.connection.teleport(p_9001_, p_9002_, p_9003_, p_9004_, p_9005_); ++ this.gameMode.setLevel(p_9000_); + this.server.getPlayerList().sendLevelInfo(this, p_9000_); + this.server.getPlayerList().sendAllPlayerInfo(this); ++ net.minecraftforge.event.ForgeEventFactory.onPlayerChangedDimension(this, serverlevel.dimension(), p_9000_.dimension()); } } @@ -1449,6 +_,8 @@ } - public void m_9158_(ResourceKey p_9159_, @Nullable BlockPos p_9160_, float p_9161_, boolean p_9162_, boolean p_9163_) { -+ if (net.minecraftforge.event.ForgeEventFactory.onPlayerSpawnSet(this, p_9160_ == null ? Level.f_46428_ : p_9159_, p_9160_, p_9162_)) + public void setRespawnPosition(ResourceKey p_9159_, @Nullable BlockPos p_9160_, float p_9161_, boolean p_9162_, boolean p_9163_) { ++ if (net.minecraftforge.event.ForgeEventFactory.onPlayerSpawnSet(this, p_9160_ == null ? Level.OVERWORLD : p_9159_, p_9160_, p_9162_)) + return; if (p_9160_ != null) { - boolean flag = p_9160_.equals(this.f_8936_) && p_9159_.equals(this.f_8935_); + boolean flag = p_9160_.equals(this.respawnPosition) && p_9159_.equals(this.respawnDimension); if (p_9163_ && !flag) { @@ -1493,6 +_,9 @@ if (itementity == null) { @@ -213,8 +213,8 @@ + if (captureDrops() != null) + captureDrops().add(itementity); + else - this.m_9236_().m_7967_(itementity); - ItemStack itemstack = itementity.m_32055_(); + this.level().addFreshEntity(itementity); + ItemStack itemstack = itementity.getItem(); if (p_9087_) { @@ -1507,6 +_,75 @@ } @@ -225,11 +225,11 @@ + * Defaults to en_us if the value is unknown. + */ + public String getLanguage() { -+ return this.f_290755_; ++ return this.language; + } + -+ private Component tabListHeader = Component.m_237119_(); -+ private Component tabListFooter = Component.m_237119_(); ++ private Component tabListHeader = Component.empty(); ++ private Component tabListFooter = Component.empty(); + + public Component getTabListHeader() { + return this.tabListHeader; @@ -272,7 +272,7 @@ + this.tabListHeader = java.util.Objects.requireNonNull(header, "header"); + this.tabListFooter = java.util.Objects.requireNonNull(footer, "footer"); + -+ this.f_8906_.m_141995_(new net.minecraft.network.protocol.game.ClientboundTabListPacket(header, footer)); ++ this.connection.send(new net.minecraft.network.protocol.game.ClientboundTabListPacket(header, footer)); + } + + // We need this as tablistDisplayname may be null even if the event was fired. @@ -285,26 +285,26 @@ + Component oldName = this.tabListDisplayName; + this.tabListDisplayName = net.minecraftforge.event.ForgeEventFactory.getPlayerTabListDisplayName(this); + if (!java.util.Objects.equals(oldName, this.tabListDisplayName)) { -+ this.m_20194_().m_6846_().m_11268_(new net.minecraft.network.protocol.game.ClientboundPlayerInfoUpdatePacket(net.minecraft.network.protocol.game.ClientboundPlayerInfoUpdatePacket.Action.UPDATE_DISPLAY_NAME, this)); ++ this.getServer().getPlayerList().broadcastAll(new net.minecraft.network.protocol.game.ClientboundPlayerInfoUpdatePacket(net.minecraft.network.protocol.game.ClientboundPlayerInfoUpdatePacket.Action.UPDATE_DISPLAY_NAME, this)); + } + } + - public TextFilter m_8967_() { - return this.f_8939_; + public TextFilter getTextFilter() { + return this.textFilter; } @@ -1566,11 +_,14 @@ - public boolean m_182294_(boolean p_182295_) { - Inventory inventory = this.m_150109_(); -+ ItemStack selected = inventory.m_36056_(); -+ if (selected.m_41619_() || !selected.onDroppedByPlayer(this)) return false; -+ if (m_6117_() && m_7655_() == InteractionHand.MAIN_HAND && (p_182295_ || selected.m_41613_() == 1)) m_5810_(); // Forge: fix MC-231097 on the serverside - ItemStack itemstack = inventory.m_182403_(p_182295_); - this.f_36096_.m_182417_(inventory, inventory.f_35977_).ifPresent((p_287377_) -> { - this.f_36096_.m_150404_(p_287377_, inventory.m_36056_()); + public boolean drop(boolean p_182295_) { + Inventory inventory = this.getInventory(); ++ ItemStack selected = inventory.getSelected(); ++ if (selected.isEmpty() || !selected.onDroppedByPlayer(this)) return false; ++ if (isUsingItem() && getUsedItemHand() == InteractionHand.MAIN_HAND && (p_182295_ || selected.getCount() == 1)) stopUsingItem(); // Forge: fix MC-231097 on the serverside + ItemStack itemstack = inventory.removeFromSelected(p_182295_); + this.containerMenu.findSlot(inventory, inventory.selected).ifPresent((p_287377_) -> { + this.containerMenu.setRemoteSlot(p_287377_, inventory.getSelected()); }); -- return this.m_7197_(itemstack, false, true) != null; +- return this.drop(itemstack, false, true) != null; + return net.minecraftforge.common.ForgeHooks.onPlayerTossEvent(this, itemstack, true) != null; } - public boolean m_184128_() { + public boolean allowsListing() { diff --git a/patches/minecraft/net/minecraft/server/level/ServerPlayerGameMode.java.patch b/patches/minecraft/net/minecraft/server/level/ServerPlayerGameMode.java.patch index a1d17a959d..a0f0af3903 100644 --- a/patches/minecraft/net/minecraft/server/level/ServerPlayerGameMode.java.patch +++ b/patches/minecraft/net/minecraft/server/level/ServerPlayerGameMode.java.patch @@ -3,68 +3,68 @@ @@ -124,7 +_,11 @@ } - public void m_214168_(BlockPos p_215120_, ServerboundPlayerActionPacket.Action p_215121_, Direction p_215122_, int p_215123_, int p_215124_) { -- if (this.f_9245_.m_146892_().m_82557_(Vec3.m_82512_(p_215120_)) > ServerGamePacketListenerImpl.f_215198_) { -+ net.minecraftforge.event.entity.player.PlayerInteractEvent.LeftClickBlock event = net.minecraftforge.common.ForgeHooks.onLeftClickBlock(f_9245_, p_215120_, p_215122_, p_215121_); -+ if (event.isCanceled() || (!this.m_9295_() && event.getResult() == net.minecraftforge.eventbus.api.Event.Result.DENY)) { + public void handleBlockBreakAction(BlockPos p_215120_, ServerboundPlayerActionPacket.Action p_215121_, Direction p_215122_, int p_215123_, int p_215124_) { +- if (this.player.getEyePosition().distanceToSqr(Vec3.atCenterOf(p_215120_)) > ServerGamePacketListenerImpl.MAX_INTERACTION_DISTANCE) { ++ net.minecraftforge.event.entity.player.PlayerInteractEvent.LeftClickBlock event = net.minecraftforge.common.ForgeHooks.onLeftClickBlock(player, p_215120_, p_215122_, p_215121_); ++ if (event.isCanceled() || (!this.isCreative() && event.getResult() == net.minecraftforge.eventbus.api.Event.Result.DENY)) { + return; + } -+ if (!this.f_9245_.canReach(p_215120_, 1.5)) { // Vanilla check is eye-to-center distance < 6, so padding is 6 - 4.5 = 1.5 - this.m_215125_(p_215120_, false, p_215124_, "too far"); - } else if (p_215120_.m_123342_() >= p_215123_) { - this.f_9245_.f_8906_.m_141995_(new ClientboundBlockUpdatePacket(p_215120_, this.f_9244_.m_8055_(p_215120_))); ++ if (!this.player.canReach(p_215120_, 1.5)) { // Vanilla check is eye-to-center distance < 6, so padding is 6 - 4.5 = 1.5 + this.debugLogging(p_215120_, false, p_215124_, "too far"); + } else if (p_215120_.getY() >= p_215123_) { + this.player.connection.send(new ClientboundBlockUpdatePacket(p_215120_, this.level.getBlockState(p_215120_))); @@ -152,6 +_,7 @@ float f = 1.0F; - BlockState blockstate = this.f_9244_.m_8055_(p_215120_); - if (!blockstate.m_60795_()) { + BlockState blockstate = this.level.getBlockState(p_215120_); + if (!blockstate.isAir()) { + if (event.getUseBlock() != net.minecraftforge.eventbus.api.Event.Result.DENY) - blockstate.m_60686_(this.f_9244_, p_215120_, this.f_9245_); - f = blockstate.m_60625_(this.f_9245_, this.f_9245_.m_9236_(), p_215120_); + blockstate.attack(this.level, p_215120_, this.player); + f = blockstate.getDestroyProgress(this.player, this.player.level(), p_215120_); } @@ -221,7 +_,8 @@ - public boolean m_9280_(BlockPos p_9281_) { - BlockState blockstate = this.f_9244_.m_8055_(p_9281_); -- if (!this.f_9245_.m_21205_().m_41720_().m_6777_(blockstate, this.f_9244_, p_9281_, this.f_9245_)) { -+ int exp = net.minecraftforge.common.ForgeHooks.onBlockBreakEvent(f_9244_, f_9247_, f_9245_, p_9281_); + public boolean destroyBlock(BlockPos p_9281_) { + BlockState blockstate = this.level.getBlockState(p_9281_); +- if (!this.player.getMainHandItem().getItem().canAttackBlock(blockstate, this.level, p_9281_, this.player)) { ++ int exp = net.minecraftforge.common.ForgeHooks.onBlockBreakEvent(level, gameModeForPlayer, player, p_9281_); + if (exp == -1) { return false; } else { - BlockEntity blockentity = this.f_9244_.m_7702_(p_9281_); + BlockEntity blockentity = this.level.getBlockEntity(p_9281_); @@ -229,30 +_,42 @@ - if (block instanceof GameMasterBlock && !this.f_9245_.m_36337_()) { - this.f_9244_.m_7260_(p_9281_, blockstate, blockstate, 3); + if (block instanceof GameMasterBlock && !this.player.canUseGameMasterBlocks()) { + this.level.sendBlockUpdated(p_9281_, blockstate, blockstate, 3); return false; -+ } else if (f_9245_.m_21205_().onBlockStartBreak(p_9281_, f_9245_)) { ++ } else if (player.getMainHandItem().onBlockStartBreak(p_9281_, player)) { + return false; - } else if (this.f_9245_.m_36187_(this.f_9244_, p_9281_, this.f_9247_)) { + } else if (this.player.blockActionRestricted(this.level, p_9281_, this.gameModeForPlayer)) { return false; } else { -- block.m_5707_(this.f_9244_, p_9281_, blockstate, this.f_9245_); -- boolean flag = this.f_9244_.m_7471_(p_9281_, false); +- block.playerWillDestroy(this.level, p_9281_, blockstate, this.player); +- boolean flag = this.level.removeBlock(p_9281_, false); - if (flag) { -- block.m_6786_(this.f_9244_, p_9281_, blockstate); +- block.destroy(this.level, p_9281_, blockstate); - } - - if (this.m_9295_()) { + if (this.isCreative()) { + removeBlock(p_9281_, false); return true; } else { - ItemStack itemstack = this.f_9245_.m_21205_(); - ItemStack itemstack1 = itemstack.m_41777_(); -- boolean flag1 = this.f_9245_.m_36298_(blockstate); -+ boolean flag1 = blockstate.canHarvestBlock(this.f_9244_, p_9281_, this.f_9245_); // previously player.hasCorrectToolForDrops(blockstate) - itemstack.m_41686_(this.f_9244_, blockstate, p_9281_, this.f_9245_); -+ if (itemstack.m_41619_() && !itemstack1.m_41619_()) -+ net.minecraftforge.event.ForgeEventFactory.onPlayerDestroyItem(this.f_9245_, itemstack1, InteractionHand.MAIN_HAND); + ItemStack itemstack = this.player.getMainHandItem(); + ItemStack itemstack1 = itemstack.copy(); +- boolean flag1 = this.player.hasCorrectToolForDrops(blockstate); ++ boolean flag1 = blockstate.canHarvestBlock(this.level, p_9281_, this.player); // previously player.hasCorrectToolForDrops(blockstate) + itemstack.mineBlock(this.level, blockstate, p_9281_, this.player); ++ if (itemstack.isEmpty() && !itemstack1.isEmpty()) ++ net.minecraftforge.event.ForgeEventFactory.onPlayerDestroyItem(this.player, itemstack1, InteractionHand.MAIN_HAND); + boolean flag = removeBlock(p_9281_, flag1); + if (flag && flag1) { - block.m_6240_(this.f_9244_, this.f_9245_, p_9281_, blockstate, blockentity, itemstack1); + block.playerDestroy(this.level, this.player, p_9281_, blockstate, blockentity, itemstack1); } + if (flag && exp > 0) -+ blockstate.m_60734_().m_49805_(f_9244_, p_9281_, exp); ++ blockstate.getBlock().popExperience(level, p_9281_, exp); + return true; } @@ -73,35 +73,35 @@ + } + + private boolean removeBlock(BlockPos p_180235_1_, boolean canHarvest) { -+ BlockState state = this.f_9244_.m_8055_(p_180235_1_); -+ boolean removed = state.onDestroyedByPlayer(this.f_9244_, p_180235_1_, this.f_9245_, canHarvest, this.f_9244_.m_6425_(p_180235_1_)); ++ BlockState state = this.level.getBlockState(p_180235_1_); ++ boolean removed = state.onDestroyedByPlayer(this.level, p_180235_1_, this.player, canHarvest, this.level.getFluidState(p_180235_1_)); + if (removed) -+ state.m_60734_().m_6786_(this.f_9244_, p_180235_1_, state); ++ state.getBlock().destroy(this.level, p_180235_1_, state); + return removed; } - public InteractionResult m_6261_(ServerPlayer p_9262_, Level p_9263_, ItemStack p_9264_, InteractionHand p_9265_) { + public InteractionResult useItem(ServerPlayer p_9262_, Level p_9263_, ItemStack p_9264_, InteractionHand p_9265_) { @@ -261,6 +_,8 @@ - } else if (p_9262_.m_36335_().m_41519_(p_9264_.m_41720_())) { + } else if (p_9262_.getCooldowns().isOnCooldown(p_9264_.getItem())) { return InteractionResult.PASS; } else { + InteractionResult cancelResult = net.minecraftforge.common.ForgeHooks.onItemRightClick(p_9262_, p_9265_); + if (cancelResult != null) return cancelResult; - int i = p_9264_.m_41613_(); - int j = p_9264_.m_41773_(); - InteractionResultHolder interactionresultholder = p_9264_.m_41682_(p_9263_, p_9262_, p_9265_); + int i = p_9264_.getCount(); + int j = p_9264_.getDamageValue(); + InteractionResultHolder interactionresultholder = p_9264_.use(p_9263_, p_9262_, p_9265_); @@ -299,7 +_,10 @@ - BlockState blockstate = p_9267_.m_8055_(blockpos); - if (!blockstate.m_60734_().m_245993_(p_9267_.m_246046_())) { + BlockState blockstate = p_9267_.getBlockState(blockpos); + if (!blockstate.getBlock().isEnabled(p_9267_.enabledFeatures())) { return InteractionResult.FAIL; -- } else if (this.f_9247_ == GameType.SPECTATOR) { +- } else if (this.gameModeForPlayer == GameType.SPECTATOR) { + } + net.minecraftforge.event.entity.player.PlayerInteractEvent.RightClickBlock event = net.minecraftforge.common.ForgeHooks.onRightClickBlock(p_9266_, p_9269_, blockpos, p_9270_); + if (event.isCanceled()) return event.getCancellationResult(); -+ if (this.f_9247_ == GameType.SPECTATOR) { - MenuProvider menuprovider = blockstate.m_60750_(p_9267_, blockpos); ++ if (this.gameModeForPlayer == GameType.SPECTATOR) { + MenuProvider menuprovider = blockstate.getMenuProvider(p_9267_, blockpos); if (menuprovider != null) { - p_9266_.m_5893_(menuprovider); + p_9266_.openMenu(menuprovider); @@ -308,10 +_,15 @@ return InteractionResult.PASS; } @@ -111,23 +111,23 @@ + InteractionResult result = p_9268_.onItemUseFirst(useoncontext); + if (result != InteractionResult.PASS) return result; + } - boolean flag = !p_9266_.m_21205_().m_41619_() || !p_9266_.m_21206_().m_41619_(); -- boolean flag1 = p_9266_.m_36341_() && flag; -+ boolean flag1 = (p_9266_.m_36341_() && flag) && !(p_9266_.m_21205_().doesSneakBypassUse(p_9267_, blockpos, p_9266_) && p_9266_.m_21206_().doesSneakBypassUse(p_9267_, blockpos, p_9266_)); - ItemStack itemstack = p_9268_.m_41777_(); + boolean flag = !p_9266_.getMainHandItem().isEmpty() || !p_9266_.getOffhandItem().isEmpty(); +- boolean flag1 = p_9266_.isSecondaryUseActive() && flag; ++ boolean flag1 = (p_9266_.isSecondaryUseActive() && flag) && !(p_9266_.getMainHandItem().doesSneakBypassUse(p_9267_, blockpos, p_9266_) && p_9266_.getOffhandItem().doesSneakBypassUse(p_9267_, blockpos, p_9266_)); + ItemStack itemstack = p_9268_.copy(); - if (!flag1) { + if (event.getUseBlock() == net.minecraftforge.eventbus.api.Event.Result.ALLOW || (event.getUseBlock() != net.minecraftforge.eventbus.api.Event.Result.DENY && !flag1)) { - InteractionResult interactionresult = blockstate.m_60664_(p_9267_, p_9266_, p_9269_, p_9270_); - if (interactionresult.m_19077_()) { - CriteriaTriggers.f_10562_.m_285767_(p_9266_, blockpos, itemstack); + InteractionResult interactionresult = blockstate.use(p_9267_, p_9266_, p_9269_, p_9270_); + if (interactionresult.consumesAction()) { + CriteriaTriggers.ITEM_USED_ON_BLOCK.trigger(p_9266_, blockpos, itemstack); @@ -319,8 +_,8 @@ } } -- if (!p_9268_.m_41619_() && !p_9266_.m_36335_().m_41519_(p_9268_.m_41720_())) { +- if (!p_9268_.isEmpty() && !p_9266_.getCooldowns().isOnCooldown(p_9268_.getItem())) { - UseOnContext useoncontext = new UseOnContext(p_9266_, p_9269_, p_9270_); -+ if (event.getUseItem() == net.minecraftforge.eventbus.api.Event.Result.ALLOW || (!p_9268_.m_41619_() && !p_9266_.m_36335_().m_41519_(p_9268_.m_41720_()))) { ++ if (event.getUseItem() == net.minecraftforge.eventbus.api.Event.Result.ALLOW || (!p_9268_.isEmpty() && !p_9266_.getCooldowns().isOnCooldown(p_9268_.getItem()))) { + if (event.getUseItem() == net.minecraftforge.eventbus.api.Event.Result.DENY) return InteractionResult.PASS; InteractionResult interactionresult1; - if (this.m_9295_()) { - int i = p_9268_.m_41613_(); + if (this.isCreative()) { + int i = p_9268_.getCount(); diff --git a/patches/minecraft/net/minecraft/server/level/Ticket.java.patch b/patches/minecraft/net/minecraft/server/level/Ticket.java.patch index 375623fc45..56f19329de 100644 --- a/patches/minecraft/net/minecraft/server/level/Ticket.java.patch +++ b/patches/minecraft/net/minecraft/server/level/Ticket.java.patch @@ -1,16 +1,16 @@ --- a/net/minecraft/server/level/Ticket.java +++ b/net/minecraft/server/level/Ticket.java @@ -9,9 +_,14 @@ - private long f_9423_; + private long createdTick; protected Ticket(TicketType p_9425_, int p_9426_, T p_9427_) { + this(p_9425_, p_9426_, p_9427_, false); + } + + public Ticket(TicketType p_9425_, int p_9426_, T p_9427_, boolean forceTicks) { - this.f_9420_ = p_9425_; - this.f_9421_ = p_9426_; - this.f_9422_ = p_9427_; + this.type = p_9425_; + this.ticketLevel = p_9426_; + this.key = p_9427_; + this.forceTicks = forceTicks; } @@ -19,26 +19,26 @@ return false; } else { Ticket ticket = (Ticket)p_9439_; -- return this.f_9421_ == ticket.f_9421_ && Objects.equals(this.f_9420_, ticket.f_9420_) && Objects.equals(this.f_9422_, ticket.f_9422_); -+ return this.f_9421_ == ticket.f_9421_ && Objects.equals(this.f_9420_, ticket.f_9420_) && Objects.equals(this.f_9422_, ticket.f_9422_) && this.forceTicks == ticket.forceTicks; +- return this.ticketLevel == ticket.ticketLevel && Objects.equals(this.type, ticket.type) && Objects.equals(this.key, ticket.key); ++ return this.ticketLevel == ticket.ticketLevel && Objects.equals(this.type, ticket.type) && Objects.equals(this.key, ticket.key) && this.forceTicks == ticket.forceTicks; } } public int hashCode() { -- return Objects.hash(this.f_9420_, this.f_9421_, this.f_9422_); -+ return Objects.hash(this.f_9420_, this.f_9421_, this.f_9422_, forceTicks); +- return Objects.hash(this.type, this.ticketLevel, this.key); ++ return Objects.hash(this.type, this.ticketLevel, this.key, forceTicks); } public String toString() { -- return "Ticket[" + this.f_9420_ + " " + this.f_9421_ + " (" + this.f_9422_ + ")] at " + this.f_9423_; -+ return "Ticket[" + this.f_9420_ + " " + this.f_9421_ + " (" + this.f_9422_ + ")] at " + this.f_9423_ + " force ticks " + forceTicks; +- return "Ticket[" + this.type + " " + this.ticketLevel + " (" + this.key + ")] at " + this.createdTick; ++ return "Ticket[" + this.type + " " + this.ticketLevel + " (" + this.key + ")] at " + this.createdTick + " force ticks " + forceTicks; } - public TicketType m_9428_() { + public TicketType getType() { @@ -58,5 +_,12 @@ - protected boolean m_9434_(long p_9435_) { - long i = this.f_9420_.m_9469_(); - return i != 0L && p_9435_ - this.f_9423_ > i; + protected boolean timedOut(long p_9435_) { + long i = this.type.timeout(); + return i != 0L && p_9435_ - this.createdTick > i; + } + + /* ======================================== FORGE START =====================================*/ diff --git a/patches/minecraft/net/minecraft/server/level/WorldGenRegion.java.patch b/patches/minecraft/net/minecraft/server/level/WorldGenRegion.java.patch index 443b33699c..0623468348 100644 --- a/patches/minecraft/net/minecraft/server/level/WorldGenRegion.java.patch +++ b/patches/minecraft/net/minecraft/server/level/WorldGenRegion.java.patch @@ -3,8 +3,8 @@ @@ -297,6 +_,7 @@ } - public boolean m_7967_(Entity p_9580_) { + public boolean addFreshEntity(Entity p_9580_) { + if (p_9580_ instanceof net.minecraft.world.entity.Mob mob && mob.isSpawnCancelled()) return false; - int i = SectionPos.m_123171_(p_9580_.m_146903_()); - int j = SectionPos.m_123171_(p_9580_.m_146907_()); - this.m_6325_(i, j).m_6286_(p_9580_); + int i = SectionPos.blockToSectionCoord(p_9580_.getBlockX()); + int j = SectionPos.blockToSectionCoord(p_9580_.getBlockZ()); + this.getChunk(i, j).addEntity(p_9580_); diff --git a/patches/minecraft/net/minecraft/server/network/ConfigurationTask.java.patch b/patches/minecraft/net/minecraft/server/network/ConfigurationTask.java.patch index 1b99bb8b9c..542c080a24 100644 --- a/patches/minecraft/net/minecraft/server/network/ConfigurationTask.java.patch +++ b/patches/minecraft/net/minecraft/server/network/ConfigurationTask.java.patch @@ -5,9 +5,9 @@ public interface ConfigurationTask { + default void start(net.minecraftforge.network.config.ConfigurationTaskContext ctx) { -+ m_293075_(ctx::send); ++ start(ctx::send); + } + - void m_293075_(Consumer> p_299398_); + void start(Consumer> p_299398_); - ConfigurationTask.Type m_293172_(); + ConfigurationTask.Type type(); diff --git a/patches/minecraft/net/minecraft/server/network/MemoryServerHandshakePacketListenerImpl.java.patch b/patches/minecraft/net/minecraft/server/network/MemoryServerHandshakePacketListenerImpl.java.patch index defd7a13f8..7b58734727 100644 --- a/patches/minecraft/net/minecraft/server/network/MemoryServerHandshakePacketListenerImpl.java.patch +++ b/patches/minecraft/net/minecraft/server/network/MemoryServerHandshakePacketListenerImpl.java.patch @@ -3,8 +3,8 @@ @@ -17,6 +_,7 @@ } - public void m_7322_(ClientIntentionPacket p_9697_) { -+ if (!net.minecraftforge.server.ServerLifecycleHooks.handleServerLogin(p_9697_, this.f_9689_)) return; - if (p_9697_.f_134723_() != ClientIntent.LOGIN) { - throw new UnsupportedOperationException("Invalid intention " + p_9697_.f_134723_()); + public void handleIntention(ClientIntentionPacket p_9697_) { ++ if (!net.minecraftforge.server.ServerLifecycleHooks.handleServerLogin(p_9697_, this.connection)) return; + if (p_9697_.intention() != ClientIntent.LOGIN) { + throw new UnsupportedOperationException("Invalid intention " + p_9697_.intention()); } else { diff --git a/patches/minecraft/net/minecraft/server/network/ServerCommonPacketListenerImpl.java.patch b/patches/minecraft/net/minecraft/server/network/ServerCommonPacketListenerImpl.java.patch index ccc7398e6a..39f71db9e4 100644 --- a/patches/minecraft/net/minecraft/server/network/ServerCommonPacketListenerImpl.java.patch +++ b/patches/minecraft/net/minecraft/server/network/ServerCommonPacketListenerImpl.java.patch @@ -3,18 +3,18 @@ @@ -66,6 +_,7 @@ } - public void m_293234_(ServerboundCustomPayloadPacket p_300164_) { -+ net.minecraftforge.common.ForgeHooks.onCustomPayload(p_300164_, this.f_291338_); + public void handleCustomPayload(ServerboundCustomPayloadPacket p_300164_) { ++ net.minecraftforge.common.ForgeHooks.onCustomPayload(p_300164_, this.connection); } - public void m_293248_(ServerboundResourcePackPacket p_300656_) { + public void handleResourcePackResponse(ServerboundResourcePackPacket p_300656_) { @@ -147,5 +_,9 @@ - protected CommonListenerCookie m_295477_(ClientInformation p_297318_) { - return new CommonListenerCookie(this.m_293343_(), this.f_291042_, p_297318_); + protected CommonListenerCookie createCookie(ClientInformation p_297318_) { + return new CommonListenerCookie(this.playerProfile(), this.latency, p_297318_); + } + + public Connection getConnection() { -+ return this.f_291338_; ++ return this.connection; } } diff --git a/patches/minecraft/net/minecraft/server/network/ServerConfigurationPacketListenerImpl.java.patch b/patches/minecraft/net/minecraft/server/network/ServerConfigurationPacketListenerImpl.java.patch index 272c9268c4..79ce40bca2 100644 --- a/patches/minecraft/net/minecraft/server/network/ServerConfigurationPacketListenerImpl.java.patch +++ b/patches/minecraft/net/minecraft/server/network/ServerConfigurationPacketListenerImpl.java.patch @@ -2,48 +2,48 @@ +++ b/net/minecraft/server/network/ServerConfigurationPacketListenerImpl.java @@ -36,16 +_,19 @@ public class ServerConfigurationPacketListenerImpl extends ServerCommonPacketListenerImpl implements TickablePacketListener, ServerConfigurationPacketListener { - private static final Logger f_291519_ = LogUtils.getLogger(); - private static final Component f_291657_ = Component.m_237115_("multiplayer.disconnect.invalid_player_data"); + private static final Logger LOGGER = LogUtils.getLogger(); + private static final Component DISCONNECT_REASON_INVALID_DATA = Component.translatable("multiplayer.disconnect.invalid_player_data"); + private static final ConfigurationTask.Type VANILLA_START = new ConfigurationTask.Type("vanilla_start"); - private final GameProfile f_291596_; - private final Queue f_290691_ = new ConcurrentLinkedQueue<>(); + private final GameProfile gameProfile; + private final Queue configurationTasks = new ConcurrentLinkedQueue<>(); @Nullable - private ConfigurationTask f_291862_; - private ClientInformation f_290851_; + private ConfigurationTask currentTask; + private ClientInformation clientInformation; + private final net.minecraftforge.network.config.ConfigurationTaskContext taskContext; public ServerConfigurationPacketListenerImpl(MinecraftServer p_301415_, Connection p_298106_, CommonListenerCookie p_301309_) { super(p_301415_, p_298106_, p_301309_); - this.f_291596_ = p_301309_.f_290628_(); - this.f_290851_ = p_301309_.f_290565_(); -+ this.taskContext = new net.minecraftforge.network.config.ConfigurationTaskContext(p_298106_, this::m_141995_, this::m_293514_); + this.gameProfile = p_301309_.gameProfile(); + this.clientInformation = p_301309_.clientInformation(); ++ this.taskContext = new net.minecraftforge.network.config.ConfigurationTaskContext(p_298106_, this::send, this::finishCurrentTask); } - protected GameProfile m_293343_() { + protected GameProfile playerProfile() { @@ -61,12 +_,17 @@ - return this.f_291338_.m_129536_(); + return this.connection.isConnected(); } -- public void m_294295_() { +- public void startConfiguration() { + private void vanillaStart() { - this.m_141995_(new ClientboundCustomPayloadPacket(new BrandPayload(this.f_291389_.getServerModName()))); - LayeredRegistryAccess layeredregistryaccess = this.f_291389_.m_247573_(); - this.m_141995_(new ClientboundUpdateEnabledFeaturesPacket(FeatureFlags.f_244280_.m_245829_(this.f_291389_.m_129910_().m_247623_()))); - this.m_141995_(new ClientboundRegistryDataPacket((new RegistryAccess.ImmutableRegistryAccess(RegistrySynchronization.m_257599_(layeredregistryaccess))).m_203557_())); - this.m_141995_(new ClientboundUpdateTagsPacket(TagNetworkSerialization.m_245799_(layeredregistryaccess))); + this.send(new ClientboundCustomPayloadPacket(new BrandPayload(this.server.getServerModName()))); + LayeredRegistryAccess layeredregistryaccess = this.server.registries(); + this.send(new ClientboundUpdateEnabledFeaturesPacket(FeatureFlags.REGISTRY.toNames(this.server.getWorldData().enabledFeatures()))); + this.send(new ClientboundRegistryDataPacket((new RegistryAccess.ImmutableRegistryAccess(RegistrySynchronization.networkedRegistries(layeredregistryaccess))).freeze())); + this.send(new ClientboundUpdateTagsPacket(TagNetworkSerialization.serializeTagsToNetwork(layeredregistryaccess))); + } + -+ public void m_294295_() { -+ net.minecraftforge.event.ForgeEventFactory.gatherLoginConfigTasks(this.f_291338_, this.f_290691_::add); -+ this.f_290691_.add(new net.minecraftforge.network.config.SimpleConfigurationTask(VANILLA_START, this::vanillaStart)); - this.m_295612_(); - this.f_290691_.add(new JoinWorldTask()); - this.m_295676_(); ++ public void startConfiguration() { ++ net.minecraftforge.event.ForgeEventFactory.gatherLoginConfigTasks(this.connection, this.configurationTasks::add); ++ this.configurationTasks.add(new net.minecraftforge.network.config.SimpleConfigurationTask(VANILLA_START, this::vanillaStart)); + this.addOptionalTasks(); + this.configurationTasks.add(new JoinWorldTask()); + this.startNextTask(); @@ -135,7 +_,7 @@ - ConfigurationTask configurationtask = this.f_290691_.poll(); + ConfigurationTask configurationtask = this.configurationTasks.poll(); if (configurationtask != null) { - this.f_291862_ = configurationtask; -- configurationtask.m_293075_(this::m_141995_); + this.currentTask = configurationtask; +- configurationtask.start(this::send); + configurationtask.start(this.taskContext); } diff --git a/patches/minecraft/net/minecraft/server/network/ServerConnectionListener.java.patch b/patches/minecraft/net/minecraft/server/network/ServerConnectionListener.java.patch index 1c99db8b9b..b6c01525d9 100644 --- a/patches/minecraft/net/minecraft/server/network/ServerConnectionListener.java.patch +++ b/patches/minecraft/net/minecraft/server/network/ServerConnectionListener.java.patch @@ -3,33 +3,33 @@ @@ -49,11 +_,12 @@ public class ServerConnectionListener { - private static final Logger f_9701_ = LogUtils.getLogger(); + private static final Logger LOGGER = LogUtils.getLogger(); + private static final int READ_TIMEOUT = Integer.parseInt(System.getProperty("forge.readTimeout", "30")); - public static final Supplier f_9698_ = Suppliers.memoize(() -> { + public static final Supplier SERVER_EVENT_GROUP = Suppliers.memoize(() -> { - return new NioEventLoopGroup(0, (new ThreadFactoryBuilder()).setNameFormat("Netty Server IO #%d").setDaemon(true).build()); + return new NioEventLoopGroup(0, (new ThreadFactoryBuilder()).setNameFormat("Netty Server IO #%d").setDaemon(true).setThreadFactory(net.minecraftforge.fml.util.thread.SidedThreadGroups.SERVER).build()); }); - public static final Supplier f_9699_ = Suppliers.memoize(() -> { + public static final Supplier SERVER_EPOLL_EVENT_GROUP = Suppliers.memoize(() -> { - return new EpollEventLoopGroup(0, (new ThreadFactoryBuilder()).setNameFormat("Netty Epoll Server IO #%d").setDaemon(true).build()); + return new EpollEventLoopGroup(0, (new ThreadFactoryBuilder()).setNameFormat("Netty Epoll Server IO #%d").setDaemon(true).setThreadFactory(net.minecraftforge.fml.util.thread.SidedThreadGroups.SERVER).build()); }); - final MinecraftServer f_9702_; - public volatile boolean f_9700_; + final MinecraftServer server; + public volatile boolean running; @@ -66,6 +_,8 @@ } - public void m_9711_(@Nullable InetAddress p_9712_, int p_9713_) throws IOException { + public void startTcpServerListener(@Nullable InetAddress p_9712_, int p_9713_) throws IOException { + if (p_9712_ == null) p_9712_ = new java.net.InetSocketAddress(p_9713_).getAddress(); + net.minecraftforge.network.DualStackUtils.checkIPv6(p_9712_); - synchronized(this.f_9703_) { + synchronized(this.channels) { Class oclass; EventLoopGroup eventloopgroup; @@ -88,7 +_,7 @@ } catch (ChannelException channelexception) { } -- ChannelPipeline channelpipeline = p_9729_.pipeline().addLast("timeout", new ReadTimeoutHandler(30)).addLast("legacy_query", new LegacyQueryHandler(ServerConnectionListener.this.m_9722_())); -+ ChannelPipeline channelpipeline = p_9729_.pipeline().addLast("timeout", new ReadTimeoutHandler(READ_TIMEOUT)).addLast("legacy_query", new LegacyQueryHandler(ServerConnectionListener.this.m_9722_())); - Connection.m_264299_(channelpipeline, PacketFlow.SERVERBOUND, (BandwidthDebugMonitor)null); - int i = ServerConnectionListener.this.f_9702_.m_7032_(); +- ChannelPipeline channelpipeline = p_9729_.pipeline().addLast("timeout", new ReadTimeoutHandler(30)).addLast("legacy_query", new LegacyQueryHandler(ServerConnectionListener.this.getServer())); ++ ChannelPipeline channelpipeline = p_9729_.pipeline().addLast("timeout", new ReadTimeoutHandler(READ_TIMEOUT)).addLast("legacy_query", new LegacyQueryHandler(ServerConnectionListener.this.getServer())); + Connection.configureSerialization(channelpipeline, PacketFlow.SERVERBOUND, (BandwidthDebugMonitor)null); + int i = ServerConnectionListener.this.server.getRateLimitPacketsPerSecond(); Connection connection = (Connection)(i > 0 ? new RateKickingConnection(i) : new Connection(PacketFlow.SERVERBOUND)); diff --git a/patches/minecraft/net/minecraft/server/network/ServerGamePacketListenerImpl.java.patch b/patches/minecraft/net/minecraft/server/network/ServerGamePacketListenerImpl.java.patch index 21525d5104..85a03518a6 100644 --- a/patches/minecraft/net/minecraft/server/network/ServerGamePacketListenerImpl.java.patch +++ b/patches/minecraft/net/minecraft/server/network/ServerGamePacketListenerImpl.java.patch @@ -3,86 +3,86 @@ @@ -179,6 +_,12 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl implements ServerGamePacketListener, ServerPlayerConnection, TickablePacketListener { - static final Logger f_9744_ = LogUtils.getLogger(); + static final Logger LOGGER = LogUtils.getLogger(); + /** + * Forge: Deprecated in favor of range/reach attributes. + * @see net.minecraftforge.common.ForgeMod#BLOCK_REACH + * @see net.minecraftforge.common.ForgeMod#ENTITY_REACH + */ + @Deprecated - public static final double f_215198_ = Mth.m_144952_(6.0D); - private static final int f_215199_ = -1; - private static final int f_244471_ = 4096; + public static final double MAX_INTERACTION_DISTANCE = Mth.square(6.0D); + private static final int NO_BLOCK_UPDATES_TO_ACK = -1; + private static final int TRACKED_MESSAGE_DISCONNECT_THRESHOLD = 4096; @@ -413,9 +_,11 @@ } - entity.m_19890_(d3, d4, d5, f, f1); -+ this.f_9743_.m_19890_(d3, d4, d5, this.f_9743_.m_146908_(), this.f_9743_.m_146909_()); // Forge - Resync player position on vehicle moving - boolean flag3 = serverlevel.m_45756_(entity, entity.m_20191_().m_82406_(0.0625D)); + entity.absMoveTo(d3, d4, d5, f, f1); ++ this.player.absMoveTo(d3, d4, d5, this.player.getYRot(), this.player.getXRot()); // Forge - Resync player position on vehicle moving + boolean flag3 = serverlevel.noCollision(entity, entity.getBoundingBox().deflate(0.0625D)); if (flag && (flag2 || !flag3)) { - entity.m_19890_(d0, d1, d2, f, f1); -+ this.f_9743_.m_19890_(d3, d4, d5, this.f_9743_.m_146908_(), this.f_9743_.m_146909_()); // Forge - Resync player position on vehicle moving - this.m_141995_(new ClientboundMoveVehiclePacket(entity)); + entity.absMoveTo(d0, d1, d2, f, f1); ++ this.player.absMoveTo(d3, d4, d5, this.player.getYRot(), this.player.getXRot()); // Forge - Resync player position on vehicle moving + this.send(new ClientboundMoveVehiclePacket(entity)); return; } @@ -960,8 +_,10 @@ case SWAP_ITEM_WITH_OFFHAND: - if (!this.f_9743_.m_5833_()) { - ItemStack itemstack = this.f_9743_.m_21120_(InteractionHand.OFF_HAND); -- this.f_9743_.m_21008_(InteractionHand.OFF_HAND, this.f_9743_.m_21120_(InteractionHand.MAIN_HAND)); -- this.f_9743_.m_21008_(InteractionHand.MAIN_HAND, itemstack); -+ var event = net.minecraftforge.common.ForgeHooks.onLivingSwapHandItems(this.f_9743_); + if (!this.player.isSpectator()) { + ItemStack itemstack = this.player.getItemInHand(InteractionHand.OFF_HAND); +- this.player.setItemInHand(InteractionHand.OFF_HAND, this.player.getItemInHand(InteractionHand.MAIN_HAND)); +- this.player.setItemInHand(InteractionHand.MAIN_HAND, itemstack); ++ var event = net.minecraftforge.common.ForgeHooks.onLivingSwapHandItems(this.player); + if (event.isCanceled()) return; -+ this.f_9743_.m_21008_(InteractionHand.OFF_HAND, event.getItemSwappedToOffHand()); -+ this.f_9743_.m_21008_(InteractionHand.MAIN_HAND, event.getItemSwappedToMainHand()); - this.f_9743_.m_5810_(); ++ this.player.setItemInHand(InteractionHand.OFF_HAND, event.getItemSwappedToOffHand()); ++ this.player.setItemInHand(InteractionHand.MAIN_HAND, event.getItemSwappedToMainHand()); + this.player.stopUsingItem(); } @@ -1012,7 +_,7 @@ - Vec3 vec3 = blockhitresult.m_82450_(); - BlockPos blockpos = blockhitresult.m_82425_(); - Vec3 vec31 = Vec3.m_82512_(blockpos); -- if (!(this.f_9743_.m_146892_().m_82557_(vec31) > f_215198_)) { -+ if (this.f_9743_.canReach(blockpos, 1.5)) { // Vanilla uses eye-to-center distance < 6, which implies a padding of 1.5 - Vec3 vec32 = vec3.m_82546_(vec31); + Vec3 vec3 = blockhitresult.getLocation(); + BlockPos blockpos = blockhitresult.getBlockPos(); + Vec3 vec31 = Vec3.atCenterOf(blockpos); +- if (!(this.player.getEyePosition().distanceToSqr(vec31) > MAX_INTERACTION_DISTANCE)) { ++ if (this.player.canReach(blockpos, 1.5)) { // Vanilla uses eye-to-center distance < 6, which implies a padding of 1.5 + Vec3 vec32 = vec3.subtract(vec31); double d0 = 1.0000001D; - if (Math.abs(vec32.m_7096_()) < 1.0000001D && Math.abs(vec32.m_7098_()) < 1.0000001D && Math.abs(vec32.m_7094_()) < 1.0000001D) { + if (Math.abs(vec32.x()) < 1.0000001D && Math.abs(vec32.y()) < 1.0000001D && Math.abs(vec32.z()) < 1.0000001D) { @@ -1020,7 +_,7 @@ - this.f_9743_.m_9243_(); - int i = this.f_9743_.m_9236_().m_151558_(); - if (blockpos.m_123342_() < i) { -- if (this.f_9766_ == null && this.f_9743_.m_20275_((double)blockpos.m_123341_() + 0.5D, (double)blockpos.m_123342_() + 0.5D, (double)blockpos.m_123343_() + 0.5D) < 64.0D && serverlevel.m_7966_(this.f_9743_, blockpos)) { -+ if (this.f_9766_ == null && serverlevel.m_7966_(this.f_9743_, blockpos)) { - InteractionResult interactionresult = this.f_9743_.f_8941_.m_7179_(this.f_9743_, serverlevel, itemstack, interactionhand, blockhitresult); - if (direction == Direction.UP && !interactionresult.m_19077_() && blockpos.m_123342_() >= i - 1 && m_9790_(this.f_9743_, itemstack)) { - Component component = Component.m_237110_("build.tooHigh", i - 1).m_130940_(ChatFormatting.RED); + this.player.resetLastActionTime(); + int i = this.player.level().getMaxBuildHeight(); + if (blockpos.getY() < i) { +- if (this.awaitingPositionFromClient == null && this.player.distanceToSqr((double)blockpos.getX() + 0.5D, (double)blockpos.getY() + 0.5D, (double)blockpos.getZ() + 0.5D) < 64.0D && serverlevel.mayInteract(this.player, blockpos)) { ++ if (this.awaitingPositionFromClient == null && serverlevel.mayInteract(this.player, blockpos)) { + InteractionResult interactionresult = this.player.gameMode.useItemOn(this.player, serverlevel, itemstack, interactionhand, blockhitresult); + if (direction == Direction.UP && !interactionresult.consumesAction() && blockpos.getY() >= i - 1 && wasBlockPlacementAttempt(this.player, itemstack)) { + Component component = Component.translatable("build.tooHigh", i - 1).withStyle(ChatFormatting.RED); @@ -1135,9 +_,10 @@ } - CompletableFuture completablefuture = this.m_243132_(playerchatmessage.m_245728_()); -- Component component = this.f_291389_.m_236742_().m_236961_(this.f_9743_, playerchatmessage.m_245692_()); -+ Component component = net.minecraftforge.common.ForgeHooks.onServerChatSubmittedEvent(this.f_9743_, playerchatmessage.m_245692_()); - this.f_241681_.m_241849_((p_296593_) -> { + CompletableFuture completablefuture = this.filterTextPacket(playerchatmessage.signedContent()); +- Component component = this.server.getChatDecorator().decorate(this.player, playerchatmessage.decoratedContent()); ++ Component component = net.minecraftforge.common.ForgeHooks.onServerChatSubmittedEvent(this.player, playerchatmessage.decoratedContent()); + this.chatMessageChain.append((p_296593_) -> { return completablefuture.thenAcceptAsync((p_296589_) -> { + if (component == null) return; - PlayerChatMessage playerchatmessage1 = playerchatmessage.m_241956_(component).m_243072_(p_296589_.f_243010_()); - this.m_243086_(playerchatmessage1); + PlayerChatMessage playerchatmessage1 = playerchatmessage.withUnsignedContent(component).filter(p_296589_.mask()); + this.broadcastChatMessage(playerchatmessage1); }, p_296593_); @@ -1398,7 +_,7 @@ } - AABB aabb = entity.m_20191_(); -- if (aabb.m_272282_(this.f_9743_.m_146892_()) < f_215198_) { -+ if (this.f_9743_.canReach(entity, 3)) { // Vanilla padding is 3.0 (distSq < 6.0 * 6.0) - p_9866_.m_179617_(new ServerboundInteractPacket.Handler() { - private void m_143678_(InteractionHand p_143679_, ServerGamePacketListenerImpl.EntityInteraction p_143680_) { - ItemStack itemstack = ServerGamePacketListenerImpl.this.f_9743_.m_21120_(p_143679_); + AABB aabb = entity.getBoundingBox(); +- if (aabb.distanceToSqr(this.player.getEyePosition()) < MAX_INTERACTION_DISTANCE) { ++ if (this.player.canReach(entity, 3)) { // Vanilla padding is 3.0 (distSq < 6.0 * 6.0) + p_9866_.dispatch(new ServerboundInteractPacket.Handler() { + private void performInteraction(InteractionHand p_143679_, ServerGamePacketListenerImpl.EntityInteraction p_143680_) { + ItemStack itemstack = ServerGamePacketListenerImpl.this.player.getItemInHand(p_143679_); @@ -1421,6 +_,8 @@ - public void m_142143_(InteractionHand p_143682_, Vec3 p_143683_) { - this.m_143678_(p_143682_, (p_143686_, p_143687_, p_143688_) -> { -+ InteractionResult onInteractEntityAtResult = net.minecraftforge.common.ForgeHooks.onInteractEntityAt(f_9743_, entity, p_143683_, p_143682_); + public void onInteraction(InteractionHand p_143682_, Vec3 p_143683_) { + this.performInteraction(p_143682_, (p_143686_, p_143687_, p_143688_) -> { ++ InteractionResult onInteractEntityAtResult = net.minecraftforge.common.ForgeHooks.onInteractEntityAt(player, entity, p_143683_, p_143682_); + if (onInteractEntityAtResult != null) return onInteractEntityAtResult; - return p_143687_.m_7111_(p_143686_, p_143683_, p_143688_); + return p_143687_.interactAt(p_143686_, p_143683_, p_143688_); }); } diff --git a/patches/minecraft/net/minecraft/server/network/ServerHandshakePacketListenerImpl.java.patch b/patches/minecraft/net/minecraft/server/network/ServerHandshakePacketListenerImpl.java.patch index db53a3a968..9bff1ea70d 100644 --- a/patches/minecraft/net/minecraft/server/network/ServerHandshakePacketListenerImpl.java.patch +++ b/patches/minecraft/net/minecraft/server/network/ServerHandshakePacketListenerImpl.java.patch @@ -3,17 +3,17 @@ @@ -21,6 +_,7 @@ } - public void m_7322_(ClientIntentionPacket p_9975_) { -+ if (!net.minecraftforge.server.ServerLifecycleHooks.handleServerLogin(p_9975_, this.f_9966_)) return; - switch (p_9975_.f_134723_()) { + public void handleIntention(ClientIntentionPacket p_9975_) { ++ if (!net.minecraftforge.server.ServerLifecycleHooks.handleServerLogin(p_9975_, this.connection)) return; + switch (p_9975_.intention()) { case LOGIN: - this.f_9966_.m_294993_(ClientIntent.LOGIN); + this.connection.setClientboundProtocolAfterHandshake(ClientIntent.LOGIN); @@ -42,7 +_,7 @@ - ServerStatus serverstatus = this.f_9965_.m_129928_(); - if (this.f_9965_.m_6373_() && serverstatus != null) { - this.f_9966_.m_294993_(ClientIntent.STATUS); -- this.f_9966_.m_129505_(new ServerStatusPacketListenerImpl(serverstatus, this.f_9966_)); -+ this.f_9966_.m_129505_(new ServerStatusPacketListenerImpl(serverstatus, this.f_9966_, this.f_9965_.getStatusJson())); + ServerStatus serverstatus = this.server.getStatus(); + if (this.server.repliesToStatus() && serverstatus != null) { + this.connection.setClientboundProtocolAfterHandshake(ClientIntent.STATUS); +- this.connection.setListener(new ServerStatusPacketListenerImpl(serverstatus, this.connection)); ++ this.connection.setListener(new ServerStatusPacketListenerImpl(serverstatus, this.connection, this.server.getStatusJson())); } else { - this.f_9966_.m_129507_(f_9964_); + this.connection.disconnect(IGNORE_STATUS_REASON); } diff --git a/patches/minecraft/net/minecraft/server/network/ServerLoginPacketListenerImpl.java.patch b/patches/minecraft/net/minecraft/server/network/ServerLoginPacketListenerImpl.java.patch index 822cfadaa5..d8848f419e 100644 --- a/patches/minecraft/net/minecraft/server/network/ServerLoginPacketListenerImpl.java.patch +++ b/patches/minecraft/net/minecraft/server/network/ServerLoginPacketListenerImpl.java.patch @@ -4,28 +4,28 @@ throw new IllegalStateException("Protocol error", cryptexception); } -- Thread thread = new Thread("User Authenticator #" + f_10014_.incrementAndGet()) { -+ Thread thread = new Thread(net.minecraftforge.fml.util.thread.SidedThreadGroups.SERVER, "User Authenticator #" + f_10014_.incrementAndGet()) { +- Thread thread = new Thread("User Authenticator #" + UNIQUE_THREAD_ID.incrementAndGet()) { ++ Thread thread = new Thread(net.minecraftforge.fml.util.thread.SidedThreadGroups.SERVER, "User Authenticator #" + UNIQUE_THREAD_ID.incrementAndGet()) { public void run() { - String s1 = Objects.requireNonNull(ServerLoginPacketListenerImpl.this.f_291165_, "Player name not initialized"); + String s1 = Objects.requireNonNull(ServerLoginPacketListenerImpl.this.requestedUsername, "Player name not initialized"); @@ -220,6 +_,7 @@ } - public void m_10044_(ServerboundCustomQueryAnswerPacket p_297965_) { -+ if (!net.minecraftforge.common.ForgeHooks.onCustomPayload(p_297965_, this.f_10013_)) - this.m_10053_(f_291075_); + public void handleCustomQueryPacket(ServerboundCustomQueryAnswerPacket p_297965_) { ++ if (!net.minecraftforge.common.ForgeHooks.onCustomPayload(p_297965_, this.connection)) + this.disconnect(DISCONNECT_UNEXPECTED_QUERY); } @@ -230,6 +_,11 @@ - this.f_10013_.m_129505_(serverconfigurationpacketlistenerimpl); - serverconfigurationpacketlistenerimpl.m_294295_(); - this.f_10019_ = ServerLoginPacketListenerImpl.State.ACCEPTED; + this.connection.setListener(serverconfigurationpacketlistenerimpl); + serverconfigurationpacketlistenerimpl.startConfiguration(); + this.state = ServerLoginPacketListenerImpl.State.ACCEPTED; + } + + @Nullable + public GameProfile getAuthenticatedProfile() { -+ return this.f_291112_; ++ return this.authenticatedProfile; } - protected static GameProfile m_295545_(String p_297551_) { + protected static GameProfile createOfflineProfile(String p_297551_) { diff --git a/patches/minecraft/net/minecraft/server/network/ServerStatusPacketListenerImpl.java.patch b/patches/minecraft/net/minecraft/server/network/ServerStatusPacketListenerImpl.java.patch index c3cc5992f0..864e794581 100644 --- a/patches/minecraft/net/minecraft/server/network/ServerStatusPacketListenerImpl.java.patch +++ b/patches/minecraft/net/minecraft/server/network/ServerStatusPacketListenerImpl.java.patch @@ -2,28 +2,28 @@ +++ b/net/minecraft/server/network/ServerStatusPacketListenerImpl.java @@ -12,12 +_,17 @@ public class ServerStatusPacketListenerImpl implements ServerStatusPacketListener { - private static final Component f_10081_ = Component.m_237115_("multiplayer.status.request_handled"); - private final ServerStatus f_271204_; + private static final Component DISCONNECT_REASON = Component.translatable("multiplayer.status.request_handled"); + private final ServerStatus status; + private final @org.jetbrains.annotations.Nullable String statusCache; // FORGE: cache status JSON - private final Connection f_10083_; - private boolean f_10084_; + private final Connection connection; + private boolean hasRequestedStatus; public ServerStatusPacketListenerImpl(ServerStatus p_272864_, Connection p_273586_) { + this(p_272864_, p_273586_, null); + } + public ServerStatusPacketListenerImpl(ServerStatus p_272864_, Connection p_273586_, @org.jetbrains.annotations.Nullable String statusCache) { - this.f_271204_ = p_272864_; - this.f_10083_ = p_273586_; + this.status = p_272864_; + this.connection = p_273586_; + this.statusCache = statusCache; } - public void m_7026_(Component p_10091_) { + public void onDisconnect(Component p_10091_) { @@ -32,7 +_,7 @@ - this.f_10083_.m_129507_(f_10081_); + this.connection.disconnect(DISCONNECT_REASON); } else { - this.f_10084_ = true; -- this.f_10083_.m_129512_(new ClientboundStatusResponsePacket(this.f_271204_)); -+ this.f_10083_.m_129512_(new ClientboundStatusResponsePacket(this.f_271204_, this.statusCache)); + this.hasRequestedStatus = true; +- this.connection.send(new ClientboundStatusResponsePacket(this.status)); ++ this.connection.send(new ClientboundStatusResponsePacket(this.status, this.statusCache)); } } diff --git a/patches/minecraft/net/minecraft/server/packs/AbstractPackResources.java.patch b/patches/minecraft/net/minecraft/server/packs/AbstractPackResources.java.patch index 0645550e38..bf027988c7 100644 --- a/patches/minecraft/net/minecraft/server/packs/AbstractPackResources.java.patch +++ b/patches/minecraft/net/minecraft/server/packs/AbstractPackResources.java.patch @@ -1,13 +1,13 @@ --- a/net/minecraft/server/packs/AbstractPackResources.java +++ b/net/minecraft/server/packs/AbstractPackResources.java @@ -64,4 +_,10 @@ - public boolean m_246538_() { - return this.f_254645_; + public boolean isBuiltin() { + return this.isBuiltin; } + + @Override + public String toString() + { -+ return String.format(java.util.Locale.ROOT, "%s: %s", getClass().getName(), this.f_243737_); ++ return String.format(java.util.Locale.ROOT, "%s: %s", getClass().getName(), this.name); + } } diff --git a/patches/minecraft/net/minecraft/server/packs/PackResources.java.patch b/patches/minecraft/net/minecraft/server/packs/PackResources.java.patch index 4a94db64ed..aea4ab3055 100644 --- a/patches/minecraft/net/minecraft/server/packs/PackResources.java.patch +++ b/patches/minecraft/net/minecraft/server/packs/PackResources.java.patch @@ -6,6 +6,6 @@ -public interface PackResources extends AutoCloseable { +public interface PackResources extends AutoCloseable, net.minecraftforge.common.extensions.IForgePackResources { - String f_143748_ = ".mcmeta"; - String f_143749_ = "pack.mcmeta"; + String METADATA_EXTENSION = ".mcmeta"; + String PACK_META = "pack.mcmeta"; diff --git a/patches/minecraft/net/minecraft/server/packs/repository/Pack.java.patch b/patches/minecraft/net/minecraft/server/packs/repository/Pack.java.patch index 68cbca2c1f..03ef637d73 100644 --- a/patches/minecraft/net/minecraft/server/packs/repository/Pack.java.patch +++ b/patches/minecraft/net/minecraft/server/packs/repository/Pack.java.patch @@ -1,32 +1,32 @@ --- a/net/minecraft/server/packs/repository/Pack.java +++ b/net/minecraft/server/packs/repository/Pack.java @@ -28,6 +_,7 @@ - private final Pack.Position f_10406_; - private final boolean f_10407_; - private final boolean f_10408_; + private final Pack.Position defaultPosition; + private final boolean required; + private final boolean fixedPosition; + private final boolean hidden; // Forge: Allow packs to be hidden from the UI entirely - private final PackSource f_10409_; + private final PackSource packSource; @Nullable @@ -50,6 +_,7 @@ - this.f_10406_ = p_251298_; - this.f_10408_ = p_249753_; - this.f_10409_ = p_251608_; + this.defaultPosition = p_251298_; + this.fixedPosition = p_249753_; + this.packSource = p_251608_; + this.hidden = p_250162_.hidden(); } @Nullable @@ -66,7 +_,7 @@ - PackCompatibility packcompatibility = PackCompatibility.m_295204_(inclusiverange, p_299232_); - OverlayMetadataSection overlaymetadatasection = packresources.m_5550_(OverlayMetadataSection.f_290597_); - List list = overlaymetadatasection != null ? overlaymetadatasection.m_293385_(p_299232_) : List.of(); -- return new Pack.Info(packmetadatasection.f_10367_(), packcompatibility, featureflagset, list); -+ return new Pack.Info(packmetadatasection.f_10367_(), packcompatibility, featureflagset, list, packresources.isHidden()); + PackCompatibility packcompatibility = PackCompatibility.forVersion(inclusiverange, p_299232_); + OverlayMetadataSection overlaymetadatasection = packresources.getMetadataSection(OverlayMetadataSection.TYPE); + List list = overlaymetadatasection != null ? overlaymetadatasection.overlaysForVersion(p_299232_) : List.of(); +- return new Pack.Info(packmetadatasection.description(), packcompatibility, featureflagset, list); ++ return new Pack.Info(packmetadatasection.description(), packcompatibility, featureflagset, list, packresources.isHidden()); } } catch (Exception exception) { - f_10399_.warn("Failed to read pack {} metadata", p_250591_, exception); + LOGGER.warn("Failed to read pack {} metadata", p_250591_, exception); @@ -135,6 +_,10 @@ - return this.f_10409_; + return this.packSource; } + public boolean isHidden() { @@ -37,13 +37,13 @@ if (this == p_10448_) { return true; @@ -150,7 +_,10 @@ - return this.f_10401_.hashCode(); + return this.id.hashCode(); } -- public static record Info(Component f_244592_, PackCompatibility f_290856_, FeatureFlagSet f_244041_, List f_291122_) { -+ public static record Info(Component f_244592_, PackCompatibility f_290856_, FeatureFlagSet f_244041_, List f_291122_, boolean hidden) { -+ public Info(Component f_244592_, PackCompatibility f_290856_, FeatureFlagSet f_244041_, List f_291122_) { -+ this(f_244592_, f_290856_, f_244041_, f_291122_, false); +- public static record Info(Component description, PackCompatibility compatibility, FeatureFlagSet requestedFeatures, List overlays) { ++ public static record Info(Component description, PackCompatibility compatibility, FeatureFlagSet requestedFeatures, List overlays, boolean hidden) { ++ public Info(Component description, PackCompatibility compatibility, FeatureFlagSet requestedFeatures, List overlays) { ++ this(description, compatibility, requestedFeatures, overlays, false); + } } diff --git a/patches/minecraft/net/minecraft/server/packs/repository/PackRepository.java.patch b/patches/minecraft/net/minecraft/server/packs/repository/PackRepository.java.patch index b0471c7b91..aef68d709f 100644 --- a/patches/minecraft/net/minecraft/server/packs/repository/PackRepository.java.patch +++ b/patches/minecraft/net/minecraft/server/packs/repository/PackRepository.java.patch @@ -1,22 +1,22 @@ --- a/net/minecraft/server/packs/repository/PackRepository.java +++ b/net/minecraft/server/packs/repository/PackRepository.java @@ -23,7 +_,7 @@ - private List f_10499_ = ImmutableList.of(); + private List selected = ImmutableList.of(); public PackRepository(RepositorySource... p_251886_) { -- this.f_10497_ = ImmutableSet.copyOf(p_251886_); -+ this.f_10497_ = new java.util.LinkedHashSet<>(List.of(p_251886_)); //Forge: This needs to be a mutable set, so that we can add to it later on. +- this.sources = ImmutableSet.copyOf(p_251886_); ++ this.sources = new java.util.LinkedHashSet<>(List.of(p_251886_)); //Forge: This needs to be a mutable set, so that we can add to it later on. } - public void m_10506_() { + public void reload() { @@ -111,6 +_,10 @@ @Nullable - public Pack m_10507_(String p_10508_) { - return this.f_10498_.get(p_10508_); + public Pack getPack(String p_10508_) { + return this.available.get(p_10508_); + } + + public synchronized void addPackFinder(RepositorySource packFinder) { -+ this.f_10497_.add(packFinder); ++ this.sources.add(packFinder); } - public boolean m_10515_(String p_10516_) { + public boolean isAvailable(String p_10516_) { diff --git a/patches/minecraft/net/minecraft/server/packs/repository/ServerPacksSource.java.patch b/patches/minecraft/net/minecraft/server/packs/repository/ServerPacksSource.java.patch index a93bf33890..dfa6855773 100644 --- a/patches/minecraft/net/minecraft/server/packs/repository/ServerPacksSource.java.patch +++ b/patches/minecraft/net/minecraft/server/packs/repository/ServerPacksSource.java.patch @@ -3,11 +3,11 @@ @@ -50,7 +_,9 @@ } - public static PackRepository m_245786_(Path p_251569_, DirectoryValidator p_300268_) { -- return new PackRepository(new ServerPacksSource(p_300268_), new FolderRepositorySource(p_251569_, PackType.SERVER_DATA, PackSource.f_10529_, p_300268_)); -+ var ret = new PackRepository(new ServerPacksSource(p_300268_), new FolderRepositorySource(p_251569_, PackType.SERVER_DATA, PackSource.f_10529_, p_300268_)); + public static PackRepository createPackRepository(Path p_251569_, DirectoryValidator p_300268_) { +- return new PackRepository(new ServerPacksSource(p_300268_), new FolderRepositorySource(p_251569_, PackType.SERVER_DATA, PackSource.WORLD, p_300268_)); ++ var ret = new PackRepository(new ServerPacksSource(p_300268_), new FolderRepositorySource(p_251569_, PackType.SERVER_DATA, PackSource.WORLD, p_300268_)); + net.minecraftforge.fml.ModLoader.get().postEvent(new net.minecraftforge.event.AddPackFindersEvent(PackType.SERVER_DATA, ret::addPackFinder)); + return ret; } - public static PackRepository m_293411_() { + public static PackRepository createVanillaTrustedRepository() { diff --git a/patches/minecraft/net/minecraft/server/packs/resources/FallbackResourceManager.java.patch b/patches/minecraft/net/minecraft/server/packs/resources/FallbackResourceManager.java.patch index b79d0bffd4..180236ecc9 100644 --- a/patches/minecraft/net/minecraft/server/packs/resources/FallbackResourceManager.java.patch +++ b/patches/minecraft/net/minecraft/server/packs/resources/FallbackResourceManager.java.patch @@ -2,16 +2,16 @@ +++ b/net/minecraft/server/packs/resources/FallbackResourceManager.java @@ -98,8 +_,11 @@ - for(int i = this.f_10599_.size() - 1; i >= 0; --i) { - FallbackResourceManager.PackEntry fallbackresourcemanager$packentry = this.f_10599_.get(i); -- PackResources packresources = fallbackresourcemanager$packentry.f_215433_; + for(int i = this.fallbacks.size() - 1; i >= 0; --i) { + FallbackResourceManager.PackEntry fallbackresourcemanager$packentry = this.fallbacks.get(i); +- PackResources packresources = fallbackresourcemanager$packentry.resources; - if (packresources != null) { -+ PackResources pack = fallbackresourcemanager$packentry.f_215433_; ++ PackResources pack = fallbackresourcemanager$packentry.resources; + if (pack != null) { + var children = pack.getChildren(); + var packs = children == null ? List.of(pack) : children; + for (final PackResources packresources : packs) { - IoSupplier iosupplier = packresources.m_214146_(this.f_10601_, p_215367_); + IoSupplier iosupplier = packresources.getResource(this.type, p_215367_); if (iosupplier != null) { IoSupplier iosupplier1; @@ -113,6 +_,7 @@ diff --git a/patches/minecraft/net/minecraft/server/packs/resources/ReloadableResourceManager.java.patch b/patches/minecraft/net/minecraft/server/packs/resources/ReloadableResourceManager.java.patch index 33e6f234fb..489a4f2393 100644 --- a/patches/minecraft/net/minecraft/server/packs/resources/ReloadableResourceManager.java.patch +++ b/patches/minecraft/net/minecraft/server/packs/resources/ReloadableResourceManager.java.patch @@ -1,13 +1,13 @@ --- a/net/minecraft/server/packs/resources/ReloadableResourceManager.java +++ b/net/minecraft/server/packs/resources/ReloadableResourceManager.java @@ -68,4 +_,10 @@ - public Stream m_7536_() { - return this.f_203815_.m_7536_(); + public Stream listPacks() { + return this.resources.listPacks(); } + + public void registerReloadListenerIfNotPresent(PreparableReloadListener listener) { -+ if (!this.f_203816_.contains(listener)) { -+ this.m_7217_(listener); ++ if (!this.listeners.contains(listener)) { ++ this.registerReloadListener(listener); + } + } } diff --git a/patches/minecraft/net/minecraft/server/packs/resources/SimpleJsonResourceReloadListener.java.patch b/patches/minecraft/net/minecraft/server/packs/resources/SimpleJsonResourceReloadListener.java.patch index c452550bf7..31e01928df 100644 --- a/patches/minecraft/net/minecraft/server/packs/resources/SimpleJsonResourceReloadListener.java.patch +++ b/patches/minecraft/net/minecraft/server/packs/resources/SimpleJsonResourceReloadListener.java.patch @@ -6,6 +6,6 @@ } + + protected ResourceLocation getPreparedPath(ResourceLocation rl) { -+ return rl.m_247449_(this.f_10765_ + "/" + rl.m_135815_() + ".json"); ++ return rl.withPath(this.directory + "/" + rl.getPath() + ".json"); + } } diff --git a/patches/minecraft/net/minecraft/server/players/PlayerList.java.patch b/patches/minecraft/net/minecraft/server/players/PlayerList.java.patch index 9bac5c2a30..23b957fd88 100644 --- a/patches/minecraft/net/minecraft/server/players/PlayerList.java.patch +++ b/patches/minecraft/net/minecraft/server/players/PlayerList.java.patch @@ -1,114 +1,114 @@ --- a/net/minecraft/server/players/PlayerList.java +++ b/net/minecraft/server/players/PlayerList.java @@ -126,6 +_,7 @@ - private boolean f_11209_; - private static final boolean f_143988_ = false; - private int f_11210_; -+ private final List playersView = java.util.Collections.unmodifiableList(f_11196_); + private boolean allowCheatsForAllPlayers; + private static final boolean ALLOW_LOGOUTIVATOR = false; + private int sendAllPlayerInfoIn; ++ private final List playersView = java.util.Collections.unmodifiableList(players); public PlayerList(MinecraftServer p_203842_, LayeredRegistryAccess p_251844_, PlayerDataStorage p_203844_, int p_203845_) { - this.f_11195_ = p_203842_; + this.server = p_203842_; @@ -171,6 +_,7 @@ - servergamepacketlistenerimpl.m_141995_(new ClientboundChangeDifficultyPacket(leveldata.m_5472_(), leveldata.m_5474_())); - servergamepacketlistenerimpl.m_141995_(new ClientboundPlayerAbilitiesPacket(p_11263_.m_150110_())); - servergamepacketlistenerimpl.m_141995_(new ClientboundSetCarriedItemPacket(p_11263_.m_150109_().f_35977_)); + servergamepacketlistenerimpl.send(new ClientboundChangeDifficultyPacket(leveldata.getDifficulty(), leveldata.isDifficultyLocked())); + servergamepacketlistenerimpl.send(new ClientboundPlayerAbilitiesPacket(p_11263_.getAbilities())); + servergamepacketlistenerimpl.send(new ClientboundSetCarriedItemPacket(p_11263_.getInventory().selected)); + net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.event.OnDatapackSyncEvent(this, p_11263_)); - servergamepacketlistenerimpl.m_141995_(new ClientboundUpdateRecipesPacket(this.f_11195_.m_129894_().m_44051_())); - this.m_11289_(p_11263_); - p_11263_.m_8951_().m_12850_(); + servergamepacketlistenerimpl.send(new ClientboundUpdateRecipesPacket(this.server.getRecipeManager().getRecipes())); + this.sendPlayerPermissionLevel(p_11263_); + p_11263_.getStats().markAllDirty(); @@ -239,6 +_,7 @@ } - p_11263_.m_143429_(); + p_11263_.initInventoryMenu(); + net.minecraftforge.event.ForgeEventFactory.firePlayerLoggedIn( p_11263_ ); } - protected void m_11273_(ServerScoreboard p_11274_, ServerPlayer p_11275_) { + protected void updateEntireScoreboard(ServerScoreboard p_11274_, ServerPlayer p_11275_) { @@ -299,6 +_,7 @@ compoundtag1 = compoundtag; - p_11225_.m_20258_(compoundtag); - f_11188_.debug("loading single player"); -+ net.minecraftforge.event.ForgeEventFactory.firePlayerLoadingEvent(p_11225_, this.f_11204_, p_11225_.m_20148_().toString()); + p_11225_.load(compoundtag); + LOGGER.debug("loading single player"); ++ net.minecraftforge.event.ForgeEventFactory.firePlayerLoadingEvent(p_11225_, this.playerIo, p_11225_.getUUID().toString()); } else { - compoundtag1 = this.f_11204_.m_78435_(p_11225_); + compoundtag1 = this.playerIo.load(p_11225_); } @@ -307,6 +_,7 @@ } - protected void m_6765_(ServerPlayer p_11277_) { -+ if (p_11277_.f_8906_ == null) return; - this.f_11204_.m_78433_(p_11277_); - ServerStatsCounter serverstatscounter = this.f_11202_.get(p_11277_.m_20148_()); + protected void save(ServerPlayer p_11277_) { ++ if (p_11277_.connection == null) return; + this.playerIo.save(p_11277_); + ServerStatsCounter serverstatscounter = this.stats.get(p_11277_.getUUID()); if (serverstatscounter != null) { @@ -321,6 +_,7 @@ } - public void m_11286_(ServerPlayer p_11287_) { + public void remove(ServerPlayer p_11287_) { + net.minecraftforge.event.ForgeEventFactory.firePlayerLoggedOut(p_11287_); - ServerLevel serverlevel = p_11287_.m_284548_(); - p_11287_.m_36220_(Stats.f_12989_); - this.m_6765_(p_11287_); + ServerLevel serverlevel = p_11287_.serverLevel(); + p_11287_.awardStat(Stats.LEAVE_GAME); + this.save(p_11287_); @@ -466,6 +_,7 @@ - this.f_11197_.put(serverplayer.m_20148_(), serverplayer); - serverplayer.m_143429_(); - serverplayer.m_21153_(serverplayer.m_21223_()); + this.playersByUUID.put(serverplayer.getUUID(), serverplayer); + serverplayer.initInventoryMenu(); + serverplayer.setHealth(serverplayer.getHealth()); + net.minecraftforge.event.ForgeEventFactory.firePlayerRespawnEvent(serverplayer, p_11238_); if (flag2) { - serverplayer.f_8906_.m_141995_(new ClientboundSoundPacket(SoundEvents.f_12377_, SoundSource.BLOCKS, (double)blockpos.m_123341_(), (double)blockpos.m_123342_(), (double)blockpos.m_123343_(), 1.0F, 1.0F, serverlevel1.m_213780_().m_188505_())); + serverplayer.connection.send(new ClientboundSoundPacket(SoundEvents.RESPAWN_ANCHOR_DEPLETE, SoundSource.BLOCKS, (double)blockpos.getX(), (double)blockpos.getY(), (double)blockpos.getZ(), 1.0F, 1.0F, serverlevel1.getRandom().nextLong())); } @@ -550,6 +_,7 @@ } - public void m_5749_(GameProfile p_11254_) { -+ if (net.minecraftforge.event.ForgeEventFactory.onPermissionChanged(p_11254_, this.f_11195_.m_7022_(), this)) return; - this.f_11200_.m_11381_(new ServerOpListEntry(p_11254_, this.f_11195_.m_7022_(), this.f_11200_.m_11351_(p_11254_))); - ServerPlayer serverplayer = this.m_11259_(p_11254_.getId()); + public void op(GameProfile p_11254_) { ++ if (net.minecraftforge.event.ForgeEventFactory.onPermissionChanged(p_11254_, this.server.getOperatorUserPermissionLevel(), this)) return; + this.ops.add(new ServerOpListEntry(p_11254_, this.server.getOperatorUserPermissionLevel(), this.ops.canBypassPlayerLimit(p_11254_))); + ServerPlayer serverplayer = this.getPlayer(p_11254_.getId()); if (serverplayer != null) { @@ -559,6 +_,7 @@ } - public void m_5750_(GameProfile p_11281_) { + public void deop(GameProfile p_11281_) { + if (net.minecraftforge.event.ForgeEventFactory.onPermissionChanged(p_11281_, 0, this)) return; - this.f_11200_.m_11393_(p_11281_); - ServerPlayer serverplayer = this.m_11259_(p_11281_.getId()); + this.ops.remove(p_11281_); + ServerPlayer serverplayer = this.getPlayer(p_11281_.getId()); if (serverplayer != null) { @@ -773,13 +_,6 @@ if (serverstatscounter == null) { - File file1 = this.f_11195_.m_129843_(LevelResource.f_78175_).toFile(); + File file1 = this.server.getWorldPath(LevelResource.PLAYER_STATS_DIR).toFile(); File file2 = new File(file1, uuid + ".json"); - if (!file2.exists()) { -- File file3 = new File(file1, p_11240_.m_7755_().getString() + ".json"); +- File file3 = new File(file1, p_11240_.getName().getString() + ".json"); - Path path = file3.toPath(); -- if (FileUtil.m_133728_(path) && FileUtil.m_133734_(path) && path.startsWith(file1.getPath()) && file3.isFile()) { +- if (FileUtil.isPathNormalized(path) && FileUtil.isPathPortable(path) && path.startsWith(file1.getPath()) && file3.isFile()) { - file3.renameTo(file2); - } - } - serverstatscounter = new ServerStatsCounter(this.f_11195_, file2); - this.f_11202_.put(uuid, serverstatscounter); + serverstatscounter = new ServerStatsCounter(this.server, file2); + this.stats.put(uuid, serverstatscounter); @@ -797,6 +_,8 @@ - this.f_11203_.put(uuid, playeradvancements); + this.advancements.put(uuid, playeradvancements); } + // Forge: don't overwrite active player with a fake one. + if (!(p_11297_ instanceof net.minecraftforge.common.util.FakePlayer)) - playeradvancements.m_135979_(p_11297_); + playeradvancements.setPlayer(p_11297_); return playeradvancements; } @@ -826,7 +_,7 @@ } - public List m_11314_() { -- return this.f_11196_; + public List getPlayers() { +- return this.players; + return this.playersView; //Unmodifiable view, we don't want people removing things without us knowing. } @Nullable @@ -843,6 +_,7 @@ - playeradvancements.m_135981_(this.f_11195_.m_129889_()); + playeradvancements.reload(this.server.getAdvancements()); } + net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.event.OnDatapackSyncEvent(this, null)); - this.m_11268_(new ClientboundUpdateTagsPacket(TagNetworkSerialization.m_245799_(this.f_243858_))); - ClientboundUpdateRecipesPacket clientboundupdaterecipespacket = new ClientboundUpdateRecipesPacket(this.f_11195_.m_129894_().m_44051_()); + this.broadcastAll(new ClientboundUpdateTagsPacket(TagNetworkSerialization.serializeTagsToNetwork(this.registries))); + ClientboundUpdateRecipesPacket clientboundupdaterecipespacket = new ClientboundUpdateRecipesPacket(this.server.getRecipeManager().getRecipes()); diff --git a/patches/minecraft/net/minecraft/server/rcon/RconConsoleSource.java.patch b/patches/minecraft/net/minecraft/server/rcon/RconConsoleSource.java.patch index 5d60e56a16..36c22456ee 100644 --- a/patches/minecraft/net/minecraft/server/rcon/RconConsoleSource.java.patch +++ b/patches/minecraft/net/minecraft/server/rcon/RconConsoleSource.java.patch @@ -3,9 +3,9 @@ @@ -33,7 +_,7 @@ } - public void m_213846_(Component p_215653_) { -- this.f_11501_.append(p_215653_.getString()); -+ this.f_11501_.append(p_215653_.getString()).append("\n"); // FIX MC-7569 - RCON has no newlines in multiline output + public void sendSystemMessage(Component p_215653_) { +- this.buffer.append(p_215653_.getString()); ++ this.buffer.append(p_215653_.getString()).append("\n"); // FIX MC-7569 - RCON has no newlines in multiline output } - public boolean m_6999_() { + public boolean acceptsSuccess() { diff --git a/patches/minecraft/net/minecraft/server/rcon/thread/RconClient.java.patch b/patches/minecraft/net/minecraft/server/rcon/thread/RconClient.java.patch index 02117a1aaa..3f31ef39d1 100644 --- a/patches/minecraft/net/minecraft/server/rcon/thread/RconClient.java.patch +++ b/patches/minecraft/net/minecraft/server/rcon/thread/RconClient.java.patch @@ -3,7 +3,7 @@ @@ -123,13 +_,14 @@ } - private void m_11594_(int p_11595_, String p_11596_) throws IOException { + private void sendCmdResponse(int p_11595_, String p_11596_) throws IOException { - int i = p_11596_.length(); - + byte[] whole = p_11596_.getBytes(StandardCharsets.UTF_8); @@ -11,10 +11,10 @@ + int start = 0; do { int j = 4096 <= i ? 4096 : i; -- this.m_11590_(p_11595_, 0, p_11596_.substring(0, j)); +- this.send(p_11595_, 0, p_11596_.substring(0, j)); - p_11596_ = p_11596_.substring(j); - i = p_11596_.length(); -+ this.m_11590_(p_11595_, 0, new String(java.util.Arrays.copyOfRange(whole, start, j+start), StandardCharsets.UTF_8)); ++ this.send(p_11595_, 0, new String(java.util.Arrays.copyOfRange(whole, start, j+start), StandardCharsets.UTF_8)); + i -= j; + start += j; } while(0 != i); diff --git a/patches/minecraft/net/minecraft/stats/RecipeBookSettings.java.patch b/patches/minecraft/net/minecraft/stats/RecipeBookSettings.java.patch index 6a9d71b0ff..d2062cf62e 100644 --- a/patches/minecraft/net/minecraft/stats/RecipeBookSettings.java.patch +++ b/patches/minecraft/net/minecraft/stats/RecipeBookSettings.java.patch @@ -4,18 +4,18 @@ import net.minecraft.world.inventory.RecipeBookType; public final class RecipeBookSettings { -- private static final Map> f_12725_ = ImmutableMap.of(RecipeBookType.CRAFTING, Pair.of("isGuiOpen", "isFilteringCraftable"), RecipeBookType.FURNACE, Pair.of("isFurnaceGuiOpen", "isFurnaceFilteringCraftable"), RecipeBookType.BLAST_FURNACE, Pair.of("isBlastingFurnaceGuiOpen", "isBlastingFurnaceFilteringCraftable"), RecipeBookType.SMOKER, Pair.of("isSmokerGuiOpen", "isSmokerFilteringCraftable")); -+ private static final Map> f_12725_ = new java.util.HashMap<>(ImmutableMap.of(RecipeBookType.CRAFTING, Pair.of("isGuiOpen", "isFilteringCraftable"), RecipeBookType.FURNACE, Pair.of("isFurnaceGuiOpen", "isFurnaceFilteringCraftable"), RecipeBookType.BLAST_FURNACE, Pair.of("isBlastingFurnaceGuiOpen", "isBlastingFurnaceFilteringCraftable"), RecipeBookType.SMOKER, Pair.of("isSmokerGuiOpen", "isSmokerFilteringCraftable"))); - private final Map f_12726_; +- private static final Map> TAG_FIELDS = ImmutableMap.of(RecipeBookType.CRAFTING, Pair.of("isGuiOpen", "isFilteringCraftable"), RecipeBookType.FURNACE, Pair.of("isFurnaceGuiOpen", "isFurnaceFilteringCraftable"), RecipeBookType.BLAST_FURNACE, Pair.of("isBlastingFurnaceGuiOpen", "isBlastingFurnaceFilteringCraftable"), RecipeBookType.SMOKER, Pair.of("isSmokerGuiOpen", "isSmokerFilteringCraftable")); ++ private static final Map> TAG_FIELDS = new java.util.HashMap<>(ImmutableMap.of(RecipeBookType.CRAFTING, Pair.of("isGuiOpen", "isFilteringCraftable"), RecipeBookType.FURNACE, Pair.of("isFurnaceGuiOpen", "isFurnaceFilteringCraftable"), RecipeBookType.BLAST_FURNACE, Pair.of("isBlastingFurnaceGuiOpen", "isBlastingFurnaceFilteringCraftable"), RecipeBookType.SMOKER, Pair.of("isSmokerGuiOpen", "isSmokerFilteringCraftable"))); + private final Map states; private RecipeBookSettings(Map p_12730_) { @@ -147,5 +_,9 @@ public String toString() { - return "[open=" + this.f_12766_ + ", filtering=" + this.f_12767_ + "]"; + return "[open=" + this.open + ", filtering=" + this.filtering + "]"; } + } + //FORGE -- called automatically on Enum creation - used for serialization + public static void addTagsForType(RecipeBookType type, String openTag, String filteringTag) { -+ f_12725_.put(type, Pair.of(openTag, filteringTag)); ++ TAG_FIELDS.put(type, Pair.of(openTag, filteringTag)); } } diff --git a/patches/minecraft/net/minecraft/tags/BlockTags.java.patch b/patches/minecraft/net/minecraft/tags/BlockTags.java.patch index 82e19ead21..907ac48020 100644 --- a/patches/minecraft/net/minecraft/tags/BlockTags.java.patch +++ b/patches/minecraft/net/minecraft/tags/BlockTags.java.patch @@ -1,11 +1,11 @@ --- a/net/minecraft/tags/BlockTags.java +++ b/net/minecraft/tags/BlockTags.java @@ -184,4 +_,8 @@ - private static TagKey m_203846_(String p_203847_) { - return TagKey.m_203882_(Registries.f_256747_, new ResourceLocation(p_203847_)); + private static TagKey create(String p_203847_) { + return TagKey.create(Registries.BLOCK, new ResourceLocation(p_203847_)); } + + public static TagKey create(ResourceLocation name) { -+ return TagKey.m_203882_(Registries.f_256747_, name); ++ return TagKey.create(Registries.BLOCK, name); + } } diff --git a/patches/minecraft/net/minecraft/tags/FluidTags.java.patch b/patches/minecraft/net/minecraft/tags/FluidTags.java.patch index 1a1439053d..c4064c048e 100644 --- a/patches/minecraft/net/minecraft/tags/FluidTags.java.patch +++ b/patches/minecraft/net/minecraft/tags/FluidTags.java.patch @@ -1,11 +1,11 @@ --- a/net/minecraft/tags/FluidTags.java +++ b/net/minecraft/tags/FluidTags.java @@ -14,4 +_,8 @@ - private static TagKey m_203850_(String p_203851_) { - return TagKey.m_203882_(Registries.f_256808_, new ResourceLocation(p_203851_)); + private static TagKey create(String p_203851_) { + return TagKey.create(Registries.FLUID, new ResourceLocation(p_203851_)); } + + public static TagKey create(ResourceLocation name) { -+ return TagKey.m_203882_(Registries.f_256808_, name); ++ return TagKey.create(Registries.FLUID, name); + } } diff --git a/patches/minecraft/net/minecraft/tags/ItemTags.java.patch b/patches/minecraft/net/minecraft/tags/ItemTags.java.patch index d239c01889..12788d42e2 100644 --- a/patches/minecraft/net/minecraft/tags/ItemTags.java.patch +++ b/patches/minecraft/net/minecraft/tags/ItemTags.java.patch @@ -1,11 +1,11 @@ --- a/net/minecraft/tags/ItemTags.java +++ b/net/minecraft/tags/ItemTags.java @@ -111,4 +_,8 @@ - private static TagKey m_203854_(String p_203855_) { - return TagKey.m_203882_(Registries.f_256913_, new ResourceLocation(p_203855_)); + private static TagKey bind(String p_203855_) { + return TagKey.create(Registries.ITEM, new ResourceLocation(p_203855_)); } + + public static TagKey create(final ResourceLocation name) { -+ return TagKey.m_203882_(Registries.f_256913_, name); ++ return TagKey.create(Registries.ITEM, name); + } } diff --git a/patches/minecraft/net/minecraft/tags/TagBuilder.java.patch b/patches/minecraft/net/minecraft/tags/TagBuilder.java.patch index f15c4d3b4d..1a4a78df5e 100644 --- a/patches/minecraft/net/minecraft/tags/TagBuilder.java.patch +++ b/patches/minecraft/net/minecraft/tags/TagBuilder.java.patch @@ -16,13 +16,13 @@ + } + // FORGE: is this tag set to replace or not? + private boolean replace = false; - private final List f_215897_ = new ArrayList<>(); + private final List entries = new ArrayList<>(); - public static TagBuilder m_215899_() { + public static TagBuilder create() { @@ -34,5 +_,21 @@ - public TagBuilder m_215909_(ResourceLocation p_215910_) { - return this.m_215902_(TagEntry.m_215953_(p_215910_)); + public TagBuilder addOptionalTag(ResourceLocation p_215910_) { + return this.add(TagEntry.optionalTag(p_215910_)); + } + + // FORGE: Set the replace property of this tag. diff --git a/patches/minecraft/net/minecraft/tags/TagEntry.java.patch b/patches/minecraft/net/minecraft/tags/TagEntry.java.patch index 034309e293..f0d1482ea4 100644 --- a/patches/minecraft/net/minecraft/tags/TagEntry.java.patch +++ b/patches/minecraft/net/minecraft/tags/TagEntry.java.patch @@ -5,17 +5,17 @@ } + public ResourceLocation getId() { -+ return f_215913_; ++ return id; + } + + public boolean isRequired() { -+ return f_215915_; ++ return required; + } + + public boolean isTag() { -+ return f_215914_; ++ return tag; + } + public interface Lookup { @Nullable - T m_213619_(ResourceLocation p_215956_); + T element(ResourceLocation p_215956_); diff --git a/patches/minecraft/net/minecraft/tags/TagFile.java.patch b/patches/minecraft/net/minecraft/tags/TagFile.java.patch index fdaf24d1ec..78246ee5a1 100644 --- a/patches/minecraft/net/minecraft/tags/TagFile.java.patch +++ b/patches/minecraft/net/minecraft/tags/TagFile.java.patch @@ -4,14 +4,14 @@ import com.mojang.serialization.codecs.RecordCodecBuilder; import java.util.List; --public record TagFile(List f_215959_, boolean f_215960_) { -+public record TagFile(List f_215959_, boolean f_215960_, List remove) { - public static final Codec f_215958_ = RecordCodecBuilder.create((p_215967_) -> { -- return p_215967_.group(TagEntry.f_215911_.listOf().fieldOf("values").forGetter(TagFile::f_215959_), Codec.BOOL.optionalFieldOf("replace", Boolean.valueOf(false)).forGetter(TagFile::f_215960_)).apply(p_215967_, TagFile::new); -+ return p_215967_.group(TagEntry.f_215911_.listOf().fieldOf("values").forGetter(TagFile::f_215959_), Codec.BOOL.optionalFieldOf("replace", Boolean.valueOf(false)).forGetter(TagFile::f_215960_), TagEntry.f_215911_.listOf().optionalFieldOf("remove", List.of()).forGetter(TagFile::remove)).apply(p_215967_, TagFile::new); +-public record TagFile(List entries, boolean replace) { ++public record TagFile(List entries, boolean replace, List remove) { + public static final Codec CODEC = RecordCodecBuilder.create((p_215967_) -> { +- return p_215967_.group(TagEntry.CODEC.listOf().fieldOf("values").forGetter(TagFile::entries), Codec.BOOL.optionalFieldOf("replace", Boolean.valueOf(false)).forGetter(TagFile::replace)).apply(p_215967_, TagFile::new); ++ return p_215967_.group(TagEntry.CODEC.listOf().fieldOf("values").forGetter(TagFile::entries), Codec.BOOL.optionalFieldOf("replace", Boolean.valueOf(false)).forGetter(TagFile::replace), TagEntry.CODEC.listOf().optionalFieldOf("remove", List.of()).forGetter(TagFile::remove)).apply(p_215967_, TagFile::new); }); + -+ public TagFile(List f_215959_, boolean f_215960_) { -+ this(f_215959_, f_215960_, List.of()); ++ public TagFile(List entries, boolean replace) { ++ this(entries, replace, List.of()); + } } diff --git a/patches/minecraft/net/minecraft/tags/TagLoader.java.patch b/patches/minecraft/net/minecraft/tags/TagLoader.java.patch index 4be770aefc..0618d68d64 100644 --- a/patches/minecraft/net/minecraft/tags/TagLoader.java.patch +++ b/patches/minecraft/net/minecraft/tags/TagLoader.java.patch @@ -1,24 +1,24 @@ --- a/net/minecraft/tags/TagLoader.java +++ b/net/minecraft/tags/TagLoader.java @@ -59,6 +_,7 @@ - tagfile.f_215959_().forEach((p_215997_) -> { + tagfile.entries().forEach((p_215997_) -> { list.add(new TagLoader.EntryWithSource(p_215997_, s)); }); + tagfile.remove().forEach(e -> list.add(new TagLoader.EntryWithSource(e, s, true))); } catch (Exception exception) { - f_13445_.error("Couldn't read tag list {} from {} in data pack {}", resourcelocation1, resourcelocation, resource.m_215506_(), exception); + LOGGER.error("Couldn't read tag list {} from {} in data pack {}", resourcelocation1, resourcelocation, resource.sourcePackId(), exception); } @@ -69,16 +_,17 @@ } - private Either, Collection> m_215978_(TagEntry.Lookup p_215979_, List p_215980_) { + private Either, Collection> build(TagEntry.Lookup p_215979_, List p_215980_) { - ImmutableSet.Builder builder = ImmutableSet.builder(); + var builder = new java.util.HashSet(); List list = new ArrayList<>(); for(TagLoader.EntryWithSource tagloader$entrywithsource : p_215980_) { -- if (!tagloader$entrywithsource.f_216042_().m_215927_(p_215979_, builder::add)) { -+ if (!tagloader$entrywithsource.f_216042_().m_215927_(p_215979_, tagloader$entrywithsource.remove() ? builder::remove : builder::add)) { +- if (!tagloader$entrywithsource.entry().build(p_215979_, builder::add)) { ++ if (!tagloader$entrywithsource.entry().build(p_215979_, tagloader$entrywithsource.remove() ? builder::remove : builder::add)) { + if (!tagloader$entrywithsource.remove()) // Treat all removals as optional at runtime. If it was missing, then it could of never been added. list.add(tagloader$entrywithsource); } @@ -28,23 +28,23 @@ + return list.isEmpty() ? Either.right(List.copyOf(builder)) : Either.left(list); } - public Map> m_203898_(Map> p_203899_) { + public Map> build(Map> p_203899_) { @@ -100,7 +_,7 @@ }); - dependencysorter.m_284430_((p_284682_, p_284683_) -> { - this.m_215978_(lookup, p_284683_.f_283922_).ifLeft((p_215977_) -> { -- f_13445_.error("Couldn't load tag {} as it is missing following references: {}", p_284682_, p_215977_.stream().map(Objects::toString).collect(Collectors.joining(", "))); -+ f_13445_.error("Couldn't load tag {} as it is missing following references: {}", p_215977_, p_215977_.stream().map(Objects::toString).collect(Collectors.joining(", \n\t"))); + dependencysorter.orderByDependencies((p_284682_, p_284683_) -> { + this.build(lookup, p_284683_.entries).ifLeft((p_215977_) -> { +- LOGGER.error("Couldn't load tag {} as it is missing following references: {}", p_284682_, p_215977_.stream().map(Objects::toString).collect(Collectors.joining(", "))); ++ LOGGER.error("Couldn't load tag {} as it is missing following references: {}", p_215977_, p_215977_.stream().map(Objects::toString).collect(Collectors.joining(", \n\t"))); }).ifRight((p_216001_) -> { map.put(p_284682_, p_216001_); }); @@ -112,7 +_,8 @@ - return this.m_203898_(this.m_144495_(p_203901_)); + return this.build(this.load(p_203901_)); } -- public static record EntryWithSource(TagEntry f_216042_, String f_216043_) { -+ public static record EntryWithSource(TagEntry f_216042_, String f_216043_, boolean remove) { -+ public EntryWithSource(TagEntry f_216042_, String f_216043_) { this(f_216042_, f_216043_, false); } +- public static record EntryWithSource(TagEntry entry, String source) { ++ public static record EntryWithSource(TagEntry entry, String source, boolean remove) { ++ public EntryWithSource(TagEntry entry, String source) { this(entry, source, false); } public String toString() { - return this.f_216042_ + " (from " + this.f_216043_ + ")"; + return this.entry + " (from " + this.source + ")"; } diff --git a/patches/minecraft/net/minecraft/tags/TagManager.java.patch b/patches/minecraft/net/minecraft/tags/TagManager.java.patch index 440cf21d53..613b4e1400 100644 --- a/patches/minecraft/net/minecraft/tags/TagManager.java.patch +++ b/patches/minecraft/net/minecraft/tags/TagManager.java.patch @@ -2,10 +2,10 @@ +++ b/net/minecraft/tags/TagManager.java @@ -31,7 +_,7 @@ - public static String m_203918_(ResourceKey> p_203919_) { - String s = f_203902_.get(p_203919_); -- return s != null ? s : "tags/" + p_203919_.m_135782_().m_135815_(); -+ return s != null ? s : "tags/" + net.minecraftforge.common.ForgeHooks.prefixNamespace(p_203919_.m_135782_()); + public static String getTagDir(ResourceKey> p_203919_) { + String s = CUSTOM_REGISTRY_DIRECTORIES.get(p_203919_); +- return s != null ? s : "tags/" + p_203919_.location().getPath(); ++ return s != null ? s : "tags/" + net.minecraftforge.common.ForgeHooks.prefixNamespace(p_203919_.location()); } - public CompletableFuture m_5540_(PreparableReloadListener.PreparationBarrier p_13482_, ResourceManager p_13483_, ProfilerFiller p_13484_, ProfilerFiller p_13485_, Executor p_13486_, Executor p_13487_) { + public CompletableFuture reload(PreparableReloadListener.PreparationBarrier p_13482_, ResourceManager p_13483_, ProfilerFiller p_13484_, ProfilerFiller p_13485_, Executor p_13486_, Executor p_13487_) { diff --git a/patches/minecraft/net/minecraft/util/SpawnUtil.java.patch b/patches/minecraft/net/minecraft/util/SpawnUtil.java.patch index 972dbcf0f7..d3cbacbef8 100644 --- a/patches/minecraft/net/minecraft/util/SpawnUtil.java.patch +++ b/patches/minecraft/net/minecraft/util/SpawnUtil.java.patch @@ -1,11 +1,11 @@ --- a/net/minecraft/util/SpawnUtil.java +++ b/net/minecraft/util/SpawnUtil.java @@ -27,7 +_,7 @@ - if (p_216406_.m_6857_().m_61937_(blockpos$mutableblockpos) && m_216398_(p_216406_, p_216410_, blockpos$mutableblockpos, p_216411_)) { - T t = p_216404_.m_262451_(p_216406_, (CompoundTag)null, (Consumer)null, blockpos$mutableblockpos, p_216405_, false, false); + if (p_216406_.getWorldBorder().isWithinBounds(blockpos$mutableblockpos) && moveToPossibleSpawnPosition(p_216406_, p_216410_, blockpos$mutableblockpos, p_216411_)) { + T t = p_216404_.create(p_216406_, (CompoundTag)null, (Consumer)null, blockpos$mutableblockpos, p_216405_, false, false); if (t != null) { -- if (t.m_5545_(p_216406_, p_216405_) && t.m_6914_(p_216406_)) { +- if (t.checkSpawnRules(p_216406_, p_216405_) && t.checkSpawnObstruction(p_216406_)) { + if (net.minecraftforge.event.ForgeEventFactory.checkSpawnPosition(t, p_216406_, p_216405_)) { - p_216406_.m_47205_(t); + p_216406_.addFreshEntityWithPassengers(t); return Optional.of(t); } diff --git a/patches/minecraft/net/minecraft/util/datafix/fixes/StructuresBecomeConfiguredFix.java.patch b/patches/minecraft/net/minecraft/util/datafix/fixes/StructuresBecomeConfiguredFix.java.patch index 73067803ca..800121934a 100644 --- a/patches/minecraft/net/minecraft/util/datafix/fixes/StructuresBecomeConfiguredFix.java.patch +++ b/patches/minecraft/net/minecraft/util/datafix/fixes/StructuresBecomeConfiguredFix.java.patch @@ -1,9 +1,9 @@ --- a/net/minecraft/util/datafix/fixes/StructuresBecomeConfiguredFix.java +++ b/net/minecraft/util/datafix/fixes/StructuresBecomeConfiguredFix.java @@ -92,7 +_,10 @@ - private Dynamic m_207723_(Pair, Dynamic> p_207724_, Dynamic p_207725_) { + private Dynamic findUpdatedStructureType(Pair, Dynamic> p_207724_, Dynamic p_207725_) { String s = p_207724_.getFirst().asString("UNKNOWN").toLowerCase(Locale.ROOT); - StructuresBecomeConfiguredFix.Conversion structuresbecomeconfiguredfix$conversion = f_207676_.get(s); + StructuresBecomeConfiguredFix.Conversion structuresbecomeconfiguredfix$conversion = CONVERSION_MAP.get(s); + if (structuresbecomeconfiguredfix$conversion == null) structuresbecomeconfiguredfix$conversion = net.minecraftforge.common.ForgeHooks.getStructureConversion(s); // Forge: hook for mods to register conversions through RegisterStructureConversionsEvent if (structuresbecomeconfiguredfix$conversion == null) { + if (net.minecraftforge.common.ForgeHooks.checkStructureNamespace(s)) return p_207724_.getSecond().createString(s); // Forge: pass-through structure IDs which have a non-"minecraft" namespace diff --git a/patches/minecraft/net/minecraft/util/datafix/schemas/V2832.java.patch b/patches/minecraft/net/minecraft/util/datafix/schemas/V2832.java.patch index 3c77694642..11a7d716ed 100644 --- a/patches/minecraft/net/minecraft/util/datafix/schemas/V2832.java.patch +++ b/patches/minecraft/net/minecraft/util/datafix/schemas/V2832.java.patch @@ -1,18 +1,18 @@ --- a/net/minecraft/util/datafix/schemas/V2832.java +++ b/net/minecraft/util/datafix/schemas/V2832.java @@ -22,7 +_,7 @@ - return DSL.constType(m_17310_()); + return DSL.constType(namespacedString()); }); - p_185234_.registerType(false, References.f_16795_, () -> { -- return DSL.fields("dimensions", DSL.compoundList(DSL.constType(m_17310_()), DSL.fields("generator", DSL.taggedChoiceLazy("type", DSL.string(), ImmutableMap.of("minecraft:debug", DSL::remainder, "minecraft:flat", () -> { -+ return DSL.fields("dimensions", DSL.compoundList(DSL.constType(m_17310_()), DSL.fields("generator", DSL.or(DSL.taggedChoiceLazy("type", DSL.string(), ImmutableMap.of("minecraft:debug", DSL::remainder, "minecraft:flat", () -> { - return DSL.optionalFields("settings", DSL.optionalFields("biome", References.f_16794_.in(p_185234_), "layers", DSL.list(DSL.optionalFields("block", References.f_16787_.in(p_185234_))))); + p_185234_.registerType(false, References.WORLD_GEN_SETTINGS, () -> { +- return DSL.fields("dimensions", DSL.compoundList(DSL.constType(namespacedString()), DSL.fields("generator", DSL.taggedChoiceLazy("type", DSL.string(), ImmutableMap.of("minecraft:debug", DSL::remainder, "minecraft:flat", () -> { ++ return DSL.fields("dimensions", DSL.compoundList(DSL.constType(namespacedString()), DSL.fields("generator", DSL.or(DSL.taggedChoiceLazy("type", DSL.string(), ImmutableMap.of("minecraft:debug", DSL::remainder, "minecraft:flat", () -> { + return DSL.optionalFields("settings", DSL.optionalFields("biome", References.BIOME.in(p_185234_), "layers", DSL.list(DSL.optionalFields("block", References.BLOCK_NAME.in(p_185234_))))); }, "minecraft:noise", () -> { return DSL.optionalFields("biome_source", DSL.taggedChoiceLazy("type", DSL.string(), ImmutableMap.of("minecraft:fixed", () -> { @@ -32,7 +_,7 @@ }, "minecraft:checkerboard", () -> { - return DSL.fields("biomes", DSL.list(References.f_16794_.in(p_185234_))); - }, "minecraft:the_end", DSL::remainder)), "settings", DSL.or(DSL.constType(DSL.string()), DSL.optionalFields("default_block", References.f_16787_.in(p_185234_), "default_fluid", References.f_16787_.in(p_185234_)))); + return DSL.fields("biomes", DSL.list(References.BIOME.in(p_185234_))); + }, "minecraft:the_end", DSL::remainder)), "settings", DSL.or(DSL.constType(DSL.string()), DSL.optionalFields("default_block", References.BLOCK_NAME.in(p_185234_), "default_fluid", References.BLOCK_NAME.in(p_185234_)))); - }))))); + })), DSL.remainder())))); }); diff --git a/patches/minecraft/net/minecraft/world/effect/MobEffect.java.patch b/patches/minecraft/net/minecraft/world/effect/MobEffect.java.patch index 63839f15b7..6f45eff1bb 100644 --- a/patches/minecraft/net/minecraft/world/effect/MobEffect.java.patch +++ b/patches/minecraft/net/minecraft/world/effect/MobEffect.java.patch @@ -6,20 +6,20 @@ -public class MobEffect { +public class MobEffect implements net.minecraftforge.common.extensions.IForgeMobEffect { - private final Map f_19446_ = Maps.newHashMap(); - private final MobEffectCategory f_19447_; - private final int f_19448_; + private final Map attributeModifiers = Maps.newHashMap(); + private final MobEffectCategory category; + private final int color; @@ -31,6 +_,7 @@ protected MobEffect(MobEffectCategory p_19451_, int p_19452_) { - this.f_19447_ = p_19451_; - this.f_19448_ = p_19452_; + this.category = p_19451_; + this.color = p_19452_; + initClient(); } - public Optional m_216881_() { + public Optional createFactorData() { @@ -117,6 +_,31 @@ - public boolean m_19486_() { - return this.f_19447_ == MobEffectCategory.BENEFICIAL; + public boolean isBeneficial() { + return this.category == MobEffectCategory.BENEFICIAL; } + + // FORGE START diff --git a/patches/minecraft/net/minecraft/world/effect/MobEffectInstance.java.patch b/patches/minecraft/net/minecraft/world/effect/MobEffectInstance.java.patch index 29a87d6798..0090f9a752 100644 --- a/patches/minecraft/net/minecraft/world/effect/MobEffectInstance.java.patch +++ b/patches/minecraft/net/minecraft/world/effect/MobEffectInstance.java.patch @@ -6,34 +6,34 @@ -public class MobEffectInstance implements Comparable { +public class MobEffectInstance implements Comparable, net.minecraftforge.common.extensions.IForgeMobEffectInstance { - private static final Logger f_19501_ = LogUtils.getLogger(); - public static final int f_267388_ = -1; - private static final String f_290519_ = "id"; + private static final Logger LOGGER = LogUtils.getLogger(); + public static final int INFINITE_DURATION = -1; + private static final String TAG_ID = "id"; @@ -85,6 +_,7 @@ - this.f_19506_ = p_19549_.f_19506_; - this.f_19508_ = p_19549_.f_19508_; - this.f_19509_ = p_19549_.f_19509_; + this.ambient = p_19549_.ambient; + this.visible = p_19549_.visible; + this.showIcon = p_19549_.showIcon; + this.curativeItems = p_19549_.curativeItems == null ? null : new java.util.ArrayList(p_19549_.curativeItems); } - public boolean m_19558_(MobEffectInstance p_19559_) { + public boolean update(MobEffectInstance p_19559_) { @@ -149,7 +_,7 @@ } - public MobEffect m_19544_() { -- return this.f_19502_; -+ return this.f_19502_ == null ? null : net.minecraftforge.registries.ForgeRegistries.MOB_EFFECTS.getDelegateOrThrow(this.f_19502_).get(); + public MobEffect getEffect() { +- return this.effect; ++ return this.effect == null ? null : net.minecraftforge.registries.ForgeRegistries.MOB_EFFECTS.getDelegateOrThrow(this.effect).get(); } - public int m_19557_() { + public int getDuration() { @@ -274,6 +_,7 @@ - this.f_19510_.m_19555_(compoundtag); - p_19568_.m_128365_("hidden_effect", compoundtag); + this.hiddenEffect.save(compoundtag); + p_19568_.put("hidden_effect", compoundtag); } + writeCurativeItems(p_19568_); - this.f_216885_.ifPresent((p_216903_) -> { - MobEffectInstance.FactorData.f_216907_.encodeStart(NbtOps.f_128958_, p_216903_).resultOrPartial(f_19501_::error).ifPresent((p_216906_) -> { + this.factorData.ifPresent((p_216903_) -> { + MobEffectInstance.FactorData.CODEC.encodeStart(NbtOps.INSTANCE, p_216903_).resultOrPartial(LOGGER::error).ifPresent((p_216906_) -> { @@ -315,12 +_,38 @@ optional = Optional.empty(); } @@ -44,8 +44,8 @@ public int compareTo(MobEffectInstance p_19566_) { int i = 32147; -- return (this.m_19557_() <= 32147 || p_19566_.m_19557_() <= 32147) && (!this.m_19571_() || !p_19566_.m_19571_()) ? ComparisonChain.start().compareFalseFirst(this.m_19571_(), p_19566_.m_19571_()).compareFalseFirst(this.m_267577_(), p_19566_.m_267577_()).compare(this.m_19557_(), p_19566_.m_19557_()).compare(this.m_19544_().m_19484_(), p_19566_.m_19544_().m_19484_()).result() : ComparisonChain.start().compare(this.m_19571_(), p_19566_.m_19571_()).compare(this.m_19544_().m_19484_(), p_19566_.m_19544_().m_19484_()).result(); -+ return (this.m_19557_() <= 32147 || p_19566_.m_19557_() <= 32147) && (!this.m_19571_() || !p_19566_.m_19571_()) ? ComparisonChain.start().compareFalseFirst(this.m_19571_(), p_19566_.m_19571_()).compareFalseFirst(this.m_267577_(), p_19566_.m_267577_()).compare(this.m_19557_(), p_19566_.m_19557_()).compare(this.m_19544_().getSortOrder(this), p_19566_.m_19544_().getSortOrder(this)).result() : ComparisonChain.start().compare(this.m_19571_(), p_19566_.m_19571_()).compare(this.m_19544_().getSortOrder(this), p_19566_.m_19544_().getSortOrder(this)).result(); +- return (this.getDuration() <= 32147 || p_19566_.getDuration() <= 32147) && (!this.isAmbient() || !p_19566_.isAmbient()) ? ComparisonChain.start().compareFalseFirst(this.isAmbient(), p_19566_.isAmbient()).compareFalseFirst(this.isInfiniteDuration(), p_19566_.isInfiniteDuration()).compare(this.getDuration(), p_19566_.getDuration()).compare(this.getEffect().getColor(), p_19566_.getEffect().getColor()).result() : ComparisonChain.start().compare(this.isAmbient(), p_19566_.isAmbient()).compare(this.getEffect().getColor(), p_19566_.getEffect().getColor()).result(); ++ return (this.getDuration() <= 32147 || p_19566_.getDuration() <= 32147) && (!this.isAmbient() || !p_19566_.isAmbient()) ? ComparisonChain.start().compareFalseFirst(this.isAmbient(), p_19566_.isAmbient()).compareFalseFirst(this.isInfiniteDuration(), p_19566_.isInfiniteDuration()).compare(this.getDuration(), p_19566_.getDuration()).compare(this.getEffect().getSortOrder(this), p_19566_.getEffect().getSortOrder(this)).result() : ComparisonChain.start().compare(this.isAmbient(), p_19566_.isAmbient()).compare(this.getEffect().getSortOrder(this), p_19566_.getEffect().getSortOrder(this)).result(); + } + + //======================= FORGE START =========================== @@ -54,7 +54,7 @@ + @Override + public java.util.List getCurativeItems() { + if (this.curativeItems == null) //Lazy load this so that we don't create a circular dep on Items. -+ this.curativeItems = m_19544_().getCurativeItems(); ++ this.curativeItems = getEffect().getCurativeItems(); + return this.curativeItems; + } + @Override @@ -62,11 +62,11 @@ + this.curativeItems = curativeItems; + } + private static MobEffectInstance readCurativeItems(MobEffectInstance effect, CompoundTag nbt) { -+ if (nbt.m_128425_("CurativeItems", net.minecraft.nbt.Tag.f_178202_)) { ++ if (nbt.contains("CurativeItems", net.minecraft.nbt.Tag.TAG_LIST)) { + java.util.List items = new java.util.ArrayList(); -+ net.minecraft.nbt.ListTag list = nbt.m_128437_("CurativeItems", net.minecraft.nbt.Tag.f_178203_); ++ net.minecraft.nbt.ListTag list = nbt.getList("CurativeItems", net.minecraft.nbt.Tag.TAG_COMPOUND); + for (int i = 0; i < list.size(); i++) { -+ items.add(net.minecraft.world.item.ItemStack.m_41712_(list.m_128728_(i))); ++ items.add(net.minecraft.world.item.ItemStack.of(list.getCompound(i))); + } + effect.setCurativeItems(items); + } diff --git a/patches/minecraft/net/minecraft/world/entity/Entity.java.patch b/patches/minecraft/net/minecraft/world/entity/Entity.java.patch index f2c8c80e0f..a3ee71160e 100644 --- a/patches/minecraft/net/minecraft/world/entity/Entity.java.patch +++ b/patches/minecraft/net/minecraft/world/entity/Entity.java.patch @@ -6,176 +6,176 @@ -public abstract class Entity implements Nameable, EntityAccess, CommandSource { +public abstract class Entity extends net.minecraftforge.common.capabilities.CapabilityProvider implements Nameable, EntityAccess, CommandSource, net.minecraftforge.common.extensions.IForgeEntity { - private static final Logger f_19849_ = LogUtils.getLogger(); - public static final String f_146815_ = "id"; - public static final String f_146816_ = "Passengers"; + private static final Logger LOGGER = LogUtils.getLogger(); + public static final String ID_TAG = "id"; + public static final String PASSENGERS_TAG = "Passengers"; @@ -143,6 +_,7 @@ - private static final double f_146812_ = 0.0023333333333333335D; - public static final String f_146824_ = "UUID"; - private static double f_19846_ = 1.0D; + private static final double LAVA_SLOW_FLOW_SCALE = 0.0023333333333333335D; + public static final String UUID_TAG = "UUID"; + private static double viewScale = 1.0D; + @Deprecated // Forge: Use the getter to allow overriding in mods - private final EntityType f_19847_; - private int f_19848_ = f_19843_.incrementAndGet(); - public boolean f_19850_; + private final EntityType type; + private int id = ENTITY_COUNTER.incrementAndGet(); + public boolean blocksBuilding; @@ -189,8 +_,10 @@ - public int f_19797_; - private int f_19831_ = -this.m_6101_(); - protected boolean f_19798_; + public int tickCount; + private int remainingFireTicks = -this.getFireImmuneTicks(); + protected boolean wasTouchingWater; + @Deprecated // Forge: Use forgeFluidTypeHeight instead - protected Object2DoubleMap> f_19799_ = new Object2DoubleArrayMap<>(2); - protected boolean f_19800_; + protected Object2DoubleMap> fluidHeight = new Object2DoubleArrayMap<>(2); + protected boolean wasEyeInWater; + @Deprecated // Forge: Use forgeFluidTypeOnEyes instead - private final Set> f_19801_ = new HashSet<>(); - public int f_19802_; - protected boolean f_19803_ = true; + private final Set> fluidOnEyes = new HashSet<>(); + public int invulnerableTime; + protected boolean firstTick = true; @@ -239,6 +_,7 @@ - private BlockState f_185934_ = null; + private BlockState feetBlockState = null; public Entity(EntityType p_19870_, Level p_19871_) { + super(Entity.class); - this.f_19847_ = p_19870_; - this.f_19853_ = p_19871_; - this.f_19815_ = p_19870_.m_20680_(); + this.type = p_19870_; + this.level = p_19871_; + this.dimensions = p_19870_.getDimensions(); @@ -257,6 +_,8 @@ - this.m_8097_(); - this.m_6034_(0.0D, 0.0D, 0.0D); - this.f_19816_ = this.m_6380_(Pose.STANDING, this.f_19815_); + this.defineSynchedData(); + this.setPos(0.0D, 0.0D, 0.0D); + this.eyeHeight = this.getEyeHeight(Pose.STANDING, this.dimensions); + net.minecraftforge.event.ForgeEventFactory.onEntityConstructing(this); + this.gatherCapabilities(); } - public boolean m_20039_(BlockPos p_20040_, BlockState p_20041_) { + public boolean isColliding(BlockPos p_20040_, BlockState p_20041_) { @@ -346,6 +_,7 @@ - public void m_142687_(Entity.RemovalReason p_146834_) { - this.m_142467_(p_146834_); + public void remove(Entity.RemovalReason p_146834_) { + this.setRemoved(p_146834_); + this.invalidateCaps(); } - public void m_142036_() { + public void onClientRemoval() { @@ -463,7 +_,7 @@ - if (this.m_20077_()) { - this.m_20093_(); -- this.f_19789_ *= 0.5F; -+ this.f_19789_ *= this.getFluidFallDistanceModifier(net.minecraftforge.common.ForgeMod.LAVA_TYPE.get()); + if (this.isInLava()) { + this.lavaHurt(); +- this.fallDistance *= 0.5F; ++ this.fallDistance *= this.getFluidFallDistanceModifier(net.minecraftforge.common.ForgeMod.LAVA_TYPE.get()); } - this.m_146871_(); + this.checkBelowWorld(); @@ -674,7 +_,7 @@ - double d1 = vec3.f_82479_; - double d2 = vec3.f_82480_; - double d3 = vec3.f_82481_; -- this.f_146794_ += (float)(vec3.m_82553_() * 0.6D); -+ this.f_146794_ = (float)((double)this.f_146794_ + vec3.m_82553_() * 0.6D); - BlockPos blockpos1 = this.m_20097_(); - BlockState blockstate1 = this.m_9236_().m_8055_(blockpos1); - boolean flag1 = this.m_285776_(blockstate1); + double d1 = vec3.x; + double d2 = vec3.y; + double d3 = vec3.z; +- this.flyDist += (float)(vec3.length() * 0.6D); ++ this.flyDist = (float)((double)this.flyDist + vec3.length() * 0.6D); + BlockPos blockpos1 = this.getOnPos(); + BlockState blockstate1 = this.level().getBlockState(blockpos1); + boolean flag1 = this.isStateClimbable(blockstate1); @@ -718,16 +_,16 @@ - this.m_7311_(-this.m_6101_()); + this.setRemainingFireTicks(-this.getFireImmuneTicks()); } -- if (this.f_146810_ && (this.f_146808_ || this.m_20071_())) { -+ if (this.f_146810_ && (this.f_146808_ || this.m_20071_() || this.isInFluidType((fluidType, height) -> this.canFluidExtinguish(fluidType)))) { - this.m_146873_(); +- if (this.wasOnFire && (this.isInPowderSnow || this.isInWaterRainOrBubble())) { ++ if (this.wasOnFire && (this.isInPowderSnow || this.isInWaterRainOrBubble() || this.isInFluidType((fluidType, height) -> this.canFluidExtinguish(fluidType)))) { + this.playEntityOnFireExtinguishedSound(); } } -- if (this.m_6060_() && (this.f_146808_ || this.m_20071_())) { -+ if (this.m_6060_() && (this.f_146808_ || this.m_20071_() || this.isInFluidType((fluidType, height) -> this.canFluidExtinguish(fluidType)))) { - this.m_7311_(-this.m_6101_()); +- if (this.isOnFire() && (this.isInPowderSnow || this.isInWaterRainOrBubble())) { ++ if (this.isOnFire() && (this.isInPowderSnow || this.isInWaterRainOrBubble() || this.isInFluidType((fluidType, height) -> this.canFluidExtinguish(fluidType)))) { + this.setRemainingFireTicks(-this.getFireImmuneTicks()); } -- this.m_9236_().m_46473_().m_7238_(); -+ this.f_19853_.m_46473_().m_7238_(); +- this.level().getProfiler().pop(); ++ this.level.getProfiler().pop(); } } } @@ -815,7 +_,7 @@ return blockpos; } else { - BlockState blockstate = this.m_9236_().m_8055_(blockpos); -- return (!((double)p_216987_ <= 0.5D) || !blockstate.m_204336_(BlockTags.f_13039_)) && !blockstate.m_204336_(BlockTags.f_13032_) && !(blockstate.m_60734_() instanceof FenceGateBlock) ? blockpos.m_175288_(Mth.m_14107_(this.f_19825_.f_82480_ - (double)p_216987_)) : blockpos; -+ return (!((double)p_216987_ <= 0.5D) || !blockstate.collisionExtendsVertically(this.m_9236_(), blockpos, this)) ? blockpos.m_175288_(Mth.m_14107_(this.f_19825_.f_82480_ - (double)p_216987_)) : blockpos; + BlockState blockstate = this.level().getBlockState(blockpos); +- return (!((double)p_216987_ <= 0.5D) || !blockstate.is(BlockTags.FENCES)) && !blockstate.is(BlockTags.WALLS) && !(blockstate.getBlock() instanceof FenceGateBlock) ? blockpos.atY(Mth.floor(this.position.y - (double)p_216987_)) : blockpos; ++ return (!((double)p_216987_ <= 0.5D) || !blockstate.collisionExtendsVertically(this.level(), blockpos, this)) ? blockpos.atY(Mth.floor(this.position.y - (double)p_216987_)) : blockpos; } } else { - int i = Mth.m_14107_(this.f_19825_.f_82479_); + int i = Mth.floor(this.position.x); @@ -886,10 +_,11 @@ - boolean flag1 = p_20273_.f_82480_ != vec3.f_82480_; - boolean flag2 = p_20273_.f_82481_ != vec3.f_82481_; - boolean flag3 = this.m_20096_() || flag1 && p_20273_.f_82480_ < 0.0D; -- if (this.m_274421_() > 0.0F && flag3 && (flag || flag2)) { -- Vec3 vec31 = m_198894_(this, new Vec3(p_20273_.f_82479_, (double)this.m_274421_(), p_20273_.f_82481_), aabb, this.m_9236_(), list); -- Vec3 vec32 = m_198894_(this, new Vec3(0.0D, (double)this.m_274421_(), 0.0D), aabb.m_82363_(p_20273_.f_82479_, 0.0D, p_20273_.f_82481_), this.m_9236_(), list); -- if (vec32.f_82480_ < (double)this.m_274421_()) { + boolean flag1 = p_20273_.y != vec3.y; + boolean flag2 = p_20273_.z != vec3.z; + boolean flag3 = this.onGround() || flag1 && p_20273_.y < 0.0D; +- if (this.maxUpStep() > 0.0F && flag3 && (flag || flag2)) { +- Vec3 vec31 = collideBoundingBox(this, new Vec3(p_20273_.x, (double)this.maxUpStep(), p_20273_.z), aabb, this.level(), list); +- Vec3 vec32 = collideBoundingBox(this, new Vec3(0.0D, (double)this.maxUpStep(), 0.0D), aabb.expandTowards(p_20273_.x, 0.0D, p_20273_.z), this.level(), list); +- if (vec32.y < (double)this.maxUpStep()) { + float stepHeight = getStepHeight(); + if (stepHeight > 0.0F && flag3 && (flag || flag2)) { -+ Vec3 vec31 = m_198894_(this, new Vec3(p_20273_.f_82479_, (double)stepHeight, p_20273_.f_82481_), aabb, this.f_19853_, list); -+ Vec3 vec32 = m_198894_(this, new Vec3(0.0D, (double)stepHeight, 0.0D), aabb.m_82363_(p_20273_.f_82479_, 0.0D, p_20273_.f_82481_), this.f_19853_, list); -+ if (vec32.f_82480_ < (double)stepHeight) { - Vec3 vec33 = m_198894_(this, new Vec3(p_20273_.f_82479_, 0.0D, p_20273_.f_82481_), aabb.m_82383_(vec32), this.m_9236_(), list).m_82549_(vec32); - if (vec33.m_165925_() > vec31.m_165925_()) { ++ Vec3 vec31 = collideBoundingBox(this, new Vec3(p_20273_.x, (double)stepHeight, p_20273_.z), aabb, this.level, list); ++ Vec3 vec32 = collideBoundingBox(this, new Vec3(0.0D, (double)stepHeight, 0.0D), aabb.expandTowards(p_20273_.x, 0.0D, p_20273_.z), this.level, list); ++ if (vec32.y < (double)stepHeight) { + Vec3 vec33 = collideBoundingBox(this, new Vec3(p_20273_.x, 0.0D, p_20273_.z), aabb.move(vec32), this.level(), list).add(vec32); + if (vec33.horizontalDistanceSqr() > vec31.horizontalDistanceSqr()) { vec31 = vec33; @@ -1039,19 +_,20 @@ - return !blockstate.m_204336_(BlockTags.f_144271_) && !blockstate.m_204336_(BlockTags.f_276549_) ? p_278049_ : blockpos; + return !blockstate.is(BlockTags.INSIDE_STEP_SOUND_BLOCKS) && !blockstate.is(BlockTags.COMBINATION_STEP_SOUND_BLOCKS) ? p_278049_ : blockpos; } -- protected void m_276961_(BlockState p_277472_, BlockState p_277630_) { -- SoundType soundtype = p_277472_.m_60827_(); +- protected void playCombinationStepSounds(BlockState p_277472_, BlockState p_277630_) { +- SoundType soundtype = p_277472_.getSoundType(); + protected void playCombinationStepSounds(BlockState p_277472_, BlockState p_277630_, BlockPos primaryPos, BlockPos secondaryPos) { -+ SoundType soundtype = p_277472_.getSoundType(this.f_19853_, primaryPos, this); -+ SoundType soundtype1 = p_277630_.getSoundType(this.f_19853_, secondaryPos, this); - this.m_5496_(soundtype.m_56776_(), soundtype.m_56773_() * 0.15F, soundtype.m_56774_()); -- this.m_280568_(p_277630_); ++ SoundType soundtype = p_277472_.getSoundType(this.level, primaryPos, this); ++ SoundType soundtype1 = p_277630_.getSoundType(this.level, secondaryPos, this); + this.playSound(soundtype.getStepSound(), soundtype.getVolume() * 0.15F, soundtype.getPitch()); +- this.playMuffledStepSound(p_277630_); + this.playMuffledStepSound(p_277630_, secondaryPos); } -- protected void m_280568_(BlockState p_283110_) { -- SoundType soundtype = p_283110_.m_60827_(); +- protected void playMuffledStepSound(BlockState p_283110_) { +- SoundType soundtype = p_283110_.getSoundType(); + protected void playMuffledStepSound(BlockState p_283110_, BlockPos pos) { -+ SoundType soundtype = p_283110_.getSoundType(this.f_19853_, pos, this); - this.m_5496_(soundtype.m_56776_(), soundtype.m_56773_() * 0.05F, soundtype.m_56774_() * 0.8F); ++ SoundType soundtype = p_283110_.getSoundType(this.level, pos, this); + this.playSound(soundtype.getStepSound(), soundtype.getVolume() * 0.05F, soundtype.getPitch() * 0.8F); } - protected void m_7355_(BlockPos p_20135_, BlockState p_20136_) { -- SoundType soundtype = p_20136_.m_60827_(); -+ SoundType soundtype = p_20136_.getSoundType(this.f_19853_, p_20135_, this); - this.m_5496_(soundtype.m_56776_(), soundtype.m_56773_() * 0.15F, soundtype.m_56774_()); + protected void playStepSound(BlockPos p_20135_, BlockState p_20136_) { +- SoundType soundtype = p_20136_.getSoundType(); ++ SoundType soundtype = p_20136_.getSoundType(this.level, p_20135_, this); + this.playSound(soundtype.getStepSound(), soundtype.getVolume() * 0.15F, soundtype.getPitch()); } @@ -1186,31 +_,38 @@ - public void m_5844_() { - if (this.m_6069_()) { -- this.m_20282_(this.m_20142_() && this.m_20069_() && !this.m_20159_()); -+ this.m_20282_(this.m_20142_() && (this.m_20069_() || this.isInFluidType((fluidType, height) -> this.canSwimInFluidType(fluidType))) && !this.m_20159_()); + public void updateSwimming() { + if (this.isSwimming()) { +- this.setSwimming(this.isSprinting() && this.isInWater() && !this.isPassenger()); ++ this.setSwimming(this.isSprinting() && (this.isInWater() || this.isInFluidType((fluidType, height) -> this.canSwimInFluidType(fluidType))) && !this.isPassenger()); } else { -- this.m_20282_(this.m_20142_() && this.m_5842_() && !this.m_20159_() && this.m_9236_().m_6425_(this.f_19826_).m_205070_(FluidTags.f_13131_)); -+ this.m_20282_(this.m_20142_() && (this.m_5842_() || this.canStartSwimming()) && !this.m_20159_()); +- this.setSwimming(this.isSprinting() && this.isUnderWater() && !this.isPassenger() && this.level().getFluidState(this.blockPosition).is(FluidTags.WATER)); ++ this.setSwimming(this.isSprinting() && (this.isUnderWater() || this.canStartSwimming()) && !this.isPassenger()); } } - protected boolean m_20073_() { - this.f_19799_.clear(); + protected boolean updateInWaterStateAndDoFluidPushing() { + this.fluidHeight.clear(); + this.forgeFluidTypeHeight.clear(); - this.m_20074_(); -- double d0 = this.m_9236_().m_6042_().f_63857_() ? 0.007D : 0.0023333333333333335D; -- boolean flag = this.m_204031_(FluidTags.f_13132_, d0); -- return this.m_20069_() || flag; -+ if (!(this.m_20202_() instanceof Boat)) { -+ this.f_19789_ *= this.forgeFluidTypeHeight.object2DoubleEntrySet().stream().filter(e -> !e.getKey().isAir() && !e.getKey().isVanilla()).map(e -> this.getFluidFallDistanceModifier(e.getKey())).min(Float::compare).orElse(1F); -+ if (this.isInFluidType((fluidType, height) -> !fluidType.isAir() && !fluidType.isVanilla() && this.canFluidExtinguish(fluidType))) this.m_20095_(); + this.updateInWaterStateAndDoWaterCurrentPushing(); +- double d0 = this.level().dimensionType().ultraWarm() ? 0.007D : 0.0023333333333333335D; +- boolean flag = this.updateFluidHeightAndDoFluidPushing(FluidTags.LAVA, d0); +- return this.isInWater() || flag; ++ if (!(this.getVehicle() instanceof Boat)) { ++ this.fallDistance *= this.forgeFluidTypeHeight.object2DoubleEntrySet().stream().filter(e -> !e.getKey().isAir() && !e.getKey().isVanilla()).map(e -> this.getFluidFallDistanceModifier(e.getKey())).min(Float::compare).orElse(1F); ++ if (this.isInFluidType((fluidType, height) -> !fluidType.isAir() && !fluidType.isVanilla() && this.canFluidExtinguish(fluidType))) this.clearFire(); + } + return this.isInFluidType(); } - void m_20074_() { - Entity entity = this.m_20202_(); -+ java.util.function.BooleanSupplier updateFluidHeight = () -> this.m_204031_(FluidTags.f_13131_, 0.014D); + void updateInWaterStateAndDoWaterCurrentPushing() { + Entity entity = this.getVehicle(); ++ java.util.function.BooleanSupplier updateFluidHeight = () -> this.updateFluidHeightAndDoFluidPushing(FluidTags.WATER, 0.014D); if (entity instanceof Boat boat) { - if (!boat.m_5842_()) { - this.f_19798_ = false; + if (!boat.isUnderWater()) { + this.wasTouchingWater = false; - return; + updateFluidHeight = () -> { + this.updateFluidHeightAndDoFluidPushing(state -> this.shouldUpdateFluidWhileBoating(state, boat)); @@ -184,24 +184,24 @@ } } -- if (this.m_204031_(FluidTags.f_13131_, 0.014D)) { +- if (this.updateFluidHeightAndDoFluidPushing(FluidTags.WATER, 0.014D)) { + if (updateFluidHeight.getAsBoolean()) { - if (!this.f_19798_ && !this.f_19803_) { - this.m_5841_(); + if (!this.wasTouchingWater && !this.firstTick) { + this.doWaterSplashEffect(); } @@ -1227,6 +_,7 @@ - private void m_20323_() { - this.f_19800_ = this.m_204029_(FluidTags.f_13131_); - this.f_19801_.clear(); + private void updateFluidOnEyes() { + this.wasEyeInWater = this.isEyeInFluid(FluidTags.WATER); + this.fluidOnEyes.clear(); + this.forgeFluidTypeOnEyes = net.minecraftforge.common.ForgeMod.EMPTY_TYPE.get(); - double d0 = this.m_20188_() - (double)0.11111111F; - Entity entity = this.m_20202_(); + double d0 = this.getEyeY() - (double)0.11111111F; + Entity entity = this.getVehicle(); if (entity instanceof Boat boat) { @@ -1239,7 +_,7 @@ - FluidState fluidstate = this.m_9236_().m_6425_(blockpos); - double d1 = (double)((float)blockpos.m_123342_() + fluidstate.m_76155_(this.m_9236_(), blockpos)); + FluidState fluidstate = this.level().getFluidState(blockpos); + double d1 = (double)((float)blockpos.getY() + fluidstate.getHeight(this.level(), blockpos)); if (d1 > d0) { -- fluidstate.m_205075_().forEach(this.f_19801_::add); +- fluidstate.getTags().forEach(this.fluidOnEyes::add); + this.forgeFluidTypeOnEyes = fluidstate.getFluidType(); } @@ -209,201 +209,201 @@ @@ -1283,12 +_,13 @@ } - public boolean m_5843_() { -- return this.m_20142_() && !this.m_20069_() && !this.m_5833_() && !this.m_6047_() && !this.m_20077_() && this.m_6084_(); -+ return this.m_20142_() && !this.m_20069_() && !this.m_5833_() && !this.m_6047_() && !this.m_20077_() && this.m_6084_() && !this.isInFluidType(); + public boolean canSpawnSprintParticle() { +- return this.isSprinting() && !this.isInWater() && !this.isSpectator() && !this.isCrouching() && !this.isInLava() && this.isAlive(); ++ return this.isSprinting() && !this.isInWater() && !this.isSpectator() && !this.isCrouching() && !this.isInLava() && this.isAlive() && !this.isInFluidType(); } - protected void m_20076_() { - BlockPos blockpos = this.m_216999_(); - BlockState blockstate = this.m_9236_().m_8055_(blockpos); -+ if(!blockstate.addRunningEffects(f_19853_, blockpos, this)) - if (blockstate.m_60799_() != RenderShape.INVISIBLE) { - Vec3 vec3 = this.m_20184_(); - BlockPos blockpos1 = this.m_20183_(); + protected void spawnSprintParticle() { + BlockPos blockpos = this.getOnPosLegacy(); + BlockState blockstate = this.level().getBlockState(blockpos); ++ if(!blockstate.addRunningEffects(level, blockpos, this)) + if (blockstate.getRenderShape() != RenderShape.INVISIBLE) { + Vec3 vec3 = this.getDeltaMovement(); + BlockPos blockpos1 = this.blockPosition(); @@ -1302,17 +_,20 @@ - d1 = Mth.m_14008_(d1, (double)blockpos.m_123343_(), (double)blockpos.m_123343_() + 1.0D); + d1 = Mth.clamp(d1, (double)blockpos.getZ(), (double)blockpos.getZ() + 1.0D); } -- this.m_9236_().m_7106_(new BlockParticleOption(ParticleTypes.f_123794_, blockstate), d0, this.m_20186_() + 0.1D, d1, vec3.f_82479_ * -4.0D, 1.5D, vec3.f_82481_ * -4.0D); -+ this.m_9236_().m_7106_(new BlockParticleOption(ParticleTypes.f_123794_, blockstate).setPos(blockpos), d0, this.m_20186_() + 0.1D, d1, vec3.f_82479_ * -4.0D, 1.5D, vec3.f_82481_ * -4.0D); +- this.level().addParticle(new BlockParticleOption(ParticleTypes.BLOCK, blockstate), d0, this.getY() + 0.1D, d1, vec3.x * -4.0D, 1.5D, vec3.z * -4.0D); ++ this.level().addParticle(new BlockParticleOption(ParticleTypes.BLOCK, blockstate).setPos(blockpos), d0, this.getY() + 0.1D, d1, vec3.x * -4.0D, 1.5D, vec3.z * -4.0D); } } + @Deprecated // Forge: Use isEyeInFluidType instead - public boolean m_204029_(TagKey p_204030_) { -+ if (p_204030_ == FluidTags.f_13131_) return this.isEyeInFluidType(net.minecraftforge.common.ForgeMod.WATER_TYPE.get()); -+ else if (p_204030_ == FluidTags.f_13132_) return this.isEyeInFluidType(net.minecraftforge.common.ForgeMod.LAVA_TYPE.get()); - return this.f_19801_.contains(p_204030_); + public boolean isEyeInFluid(TagKey p_204030_) { ++ if (p_204030_ == FluidTags.WATER) return this.isEyeInFluidType(net.minecraftforge.common.ForgeMod.WATER_TYPE.get()); ++ else if (p_204030_ == FluidTags.LAVA) return this.isEyeInFluidType(net.minecraftforge.common.ForgeMod.LAVA_TYPE.get()); + return this.fluidOnEyes.contains(p_204030_); } - public boolean m_20077_() { -- return !this.f_19803_ && this.f_19799_.getDouble(FluidTags.f_13132_) > 0.0D; -+ return !this.f_19803_ && this.forgeFluidTypeHeight.getDouble(net.minecraftforge.common.ForgeMod.LAVA_TYPE.get()) > 0.0D; + public boolean isInLava() { +- return !this.firstTick && this.fluidHeight.getDouble(FluidTags.LAVA) > 0.0D; ++ return !this.firstTick && this.forgeFluidTypeHeight.getDouble(net.minecraftforge.common.ForgeMod.LAVA_TYPE.get()) > 0.0D; } - public void m_19920_(float p_19921_, Vec3 p_19922_) { + public void moveRelative(float p_19921_, Vec3 p_19922_) { @@ -1630,6 +_,8 @@ - p_20241_.m_128379_("HasVisualFire", this.f_146813_); + p_20241_.putBoolean("HasVisualFire", this.hasVisualFire); } -+ p_20241_.m_128379_("CanUpdate", canUpdate); ++ p_20241_.putBoolean("CanUpdate", canUpdate); + - if (!this.f_19841_.isEmpty()) { + if (!this.tags.isEmpty()) { ListTag listtag = new ListTag(); @@ -1640,6 +_,10 @@ - p_20241_.m_128365_("Tags", listtag); + p_20241_.put("Tags", listtag); } + CompoundTag caps = serializeCaps(); -+ if (caps != null) p_20241_.m_128365_("ForgeCaps", caps); -+ if (persistentData != null) p_20241_.m_128365_("ForgeData", persistentData.m_6426_()); ++ if (caps != null) p_20241_.put("ForgeCaps", caps); ++ if (persistentData != null) p_20241_.put("ForgeData", persistentData.copy()); + - this.m_7380_(p_20241_); - if (this.m_20160_()) { + this.addAdditionalSaveData(p_20241_); + if (this.isVehicle()) { ListTag listtag1 = new ListTag(); @@ -1715,6 +_,9 @@ - this.m_146915_(p_20259_.m_128471_("Glowing")); - this.m_146917_(p_20259_.m_128451_("TicksFrozen")); - this.f_146813_ = p_20259_.m_128471_("HasVisualFire"); -+ if (p_20259_.m_128425_("ForgeData", 10)) persistentData = p_20259_.m_128469_("ForgeData"); -+ if (p_20259_.m_128425_("CanUpdate", 99)) this.canUpdate(p_20259_.m_128471_("CanUpdate")); -+ if (p_20259_.m_128425_("ForgeCaps", 10)) deserializeCaps(p_20259_.m_128469_("ForgeCaps")); - if (p_20259_.m_128425_("Tags", 9)) { - this.f_19841_.clear(); - ListTag listtag3 = p_20259_.m_128437_("Tags", 8); + this.setGlowingTag(p_20259_.getBoolean("Glowing")); + this.setTicksFrozen(p_20259_.getInt("TicksFrozen")); + this.hasVisualFire = p_20259_.getBoolean("HasVisualFire"); ++ if (p_20259_.contains("ForgeData", 10)) persistentData = p_20259_.getCompound("ForgeData"); ++ if (p_20259_.contains("CanUpdate", 99)) this.canUpdate(p_20259_.getBoolean("CanUpdate")); ++ if (p_20259_.contains("ForgeCaps", 10)) deserializeCaps(p_20259_.getCompound("ForgeCaps")); + if (p_20259_.contains("Tags", 9)) { + this.tags.clear(); + ListTag listtag3 = p_20259_.getList("Tags", 8); @@ -1803,6 +_,8 @@ } else { - ItemEntity itementity = new ItemEntity(this.m_9236_(), this.m_20185_(), this.m_20186_() + (double)p_19986_, this.m_20189_(), p_19985_); - itementity.m_32060_(); + ItemEntity itementity = new ItemEntity(this.level(), this.getX(), this.getY() + (double)p_19986_, this.getZ(), p_19985_); + itementity.setDefaultPickUpDelay(); + if (captureDrops() != null) captureDrops().add(itementity); + else - this.m_9236_().m_7967_(itementity); + this.level().addFreshEntity(itementity); return itementity; } @@ -1839,6 +_,7 @@ - public void m_6083_() { - this.m_20256_(Vec3.f_82478_); + public void rideTick() { + this.setDeltaMovement(Vec3.ZERO); + if (canUpdate()) - this.m_8119_(); - if (this.m_20159_()) { - this.m_20202_().m_7332_(this); + this.tick(); + if (this.isPassenger()) { + this.getVehicle().positionRider(this); @@ -1895,6 +_,7 @@ } } + if (!net.minecraftforge.event.ForgeEventFactory.canMountEntity(this, p_19966_, true)) return false; - if (p_19967_ || this.m_7341_(p_19966_) && p_19966_.m_7310_(this)) { - if (this.m_20159_()) { - this.m_8127_(); + if (p_19967_ || this.canRide(p_19966_) && p_19966_.canAddPassenger(this)) { + if (this.isPassenger()) { + this.stopRiding(); @@ -1929,6 +_,7 @@ - public void m_6038_() { - if (this.f_19824_ != null) { - Entity entity = this.f_19824_; + public void removeVehicle() { + if (this.vehicle != null) { + Entity entity = this.vehicle; + if (!net.minecraftforge.event.ForgeEventFactory.canMountEntity(this, entity, false)) return; - this.f_19824_ = null; - entity.m_20351_(this); + this.vehicle = null; + entity.removePassenger(this); } @@ -1981,6 +_,8 @@ - return this.f_19823_.isEmpty(); + return this.passengers.isEmpty(); } + /** @deprecated Forge: Use {@link #canBeRiddenUnderFluidType(net.minecraftforge.fluids.FluidType, Entity) rider sensitive version} */ + @Deprecated - protected boolean m_269011_() { + protected boolean couldAcceptPassenger() { return true; } @@ -2186,7 +_,7 @@ } - public boolean m_20143_() { -- return this.m_6067_() && !this.m_20069_(); -+ return this.m_6067_() && !this.m_20069_() && !this.isInFluidType((fluidType, height) -> this.canSwimInFluidType(fluidType)); + public boolean isVisuallyCrawling() { +- return this.isVisuallySwimming() && !this.isInWater(); ++ return this.isVisuallySwimming() && !this.isInWater() && !this.isInFluidType((fluidType, height) -> this.canSwimInFluidType(fluidType)); } - public void m_20282_(boolean p_20283_) { + public void setSwimming(boolean p_20283_) { @@ -2296,7 +_,7 @@ - this.m_20254_(8); + this.setSecondsOnFire(8); } -- this.m_6469_(this.m_269291_().m_269548_(), 5.0F); -+ this.m_6469_(this.m_269291_().m_269548_(), p_19928_.getDamage()); +- this.hurt(this.damageSources().lightningBolt(), 5.0F); ++ this.hurt(this.damageSources().lightningBolt(), p_19928_.getDamage()); } - public void m_6845_(boolean p_20313_) { + public void onAboveBubbleCol(boolean p_20313_) { @@ -2392,7 +_,7 @@ } - protected Component m_5677_() { -- return this.f_19847_.m_20676_(); -+ return this.m_6095_().m_20676_(); // Forge: Use getter to allow overriding by mods + protected Component getTypeName() { +- return this.type.getDescription(); ++ return this.getType().getDescription(); // Forge: Use getter to allow overriding by mods } - public boolean m_7306_(Entity p_20356_) { + public boolean is(Entity p_20356_) { @@ -2448,14 +_,20 @@ @Nullable - public Entity m_5489_(ServerLevel p_20118_) { -+ return this.changeDimension(p_20118_, p_20118_.m_8871_()); + public Entity changeDimension(ServerLevel p_20118_) { ++ return this.changeDimension(p_20118_, p_20118_.getPortalForcer()); + } + @Nullable + public Entity changeDimension(ServerLevel p_20118_, net.minecraftforge.common.util.ITeleporter teleporter) { -+ if (!net.minecraftforge.event.ForgeEventFactory.onTravelToDimension(this, p_20118_.m_46472_())) return null; - if (this.m_9236_() instanceof ServerLevel && !this.m_213877_()) { - this.m_9236_().m_46473_().m_6180_("changeDimension"); - this.m_19877_(); - this.m_9236_().m_46473_().m_6180_("reposition"); -- PortalInfo portalinfo = this.m_7937_(p_20118_); -+ PortalInfo portalinfo = teleporter.getPortalInfo(this, p_20118_, this::m_7937_); ++ if (!net.minecraftforge.event.ForgeEventFactory.onTravelToDimension(this, p_20118_.dimension())) return null; + if (this.level() instanceof ServerLevel && !this.isRemoved()) { + this.level().getProfiler().push("changeDimension"); + this.unRide(); + this.level().getProfiler().push("reposition"); +- PortalInfo portalinfo = this.findDimensionEntryPoint(p_20118_); ++ PortalInfo portalinfo = teleporter.getPortalInfo(this, p_20118_, this::findDimensionEntryPoint); if (portalinfo == null) { return null; } else { -+ Entity transportedEntity = teleporter.placeEntity(this, (ServerLevel) this.f_19853_, p_20118_, this.f_19857_, spawnPortal -> { //Forge: Start vanilla logic - this.m_9236_().m_46473_().m_6182_("reloading"); - Entity entity = this.m_6095_().m_20615_(p_20118_); ++ Entity transportedEntity = teleporter.placeEntity(this, (ServerLevel) this.level, p_20118_, this.yRot, spawnPortal -> { //Forge: Start vanilla logic + this.level().getProfiler().popPush("reloading"); + Entity entity = this.getType().create(p_20118_); if (entity != null) { @@ -2463,17 +_,19 @@ - entity.m_7678_(portalinfo.f_77676_.f_82479_, portalinfo.f_77676_.f_82480_, portalinfo.f_77676_.f_82481_, portalinfo.f_77678_, entity.m_146909_()); - entity.m_20256_(portalinfo.f_77677_); - p_20118_.m_143334_(entity); -- if (p_20118_.m_46472_() == Level.f_46430_) { -+ if (spawnPortal && p_20118_.m_46472_() == Level.f_46430_) { - ServerLevel.m_8617_(p_20118_); + entity.moveTo(portalinfo.pos.x, portalinfo.pos.y, portalinfo.pos.z, portalinfo.yRot, entity.getXRot()); + entity.setDeltaMovement(portalinfo.speed); + p_20118_.addDuringTeleport(entity); +- if (p_20118_.dimension() == Level.END) { ++ if (spawnPortal && p_20118_.dimension() == Level.END) { + ServerLevel.makeObsidianPlatform(p_20118_); } } + return entity; + }); //Forge: End vanilla logic - this.m_6089_(); - this.m_9236_().m_46473_().m_7238_(); - ((ServerLevel)this.m_9236_()).m_8886_(); - p_20118_.m_8886_(); - this.m_9236_().m_46473_().m_7238_(); + this.removeAfterChangingDimensions(); + this.level().getProfiler().pop(); + ((ServerLevel)this.level()).resetEmptyTime(); + p_20118_.resetEmptyTime(); + this.level().getProfiler().pop(); - return entity; + return transportedEntity; } } else { return null; @@ -2595,6 +_,7 @@ - return this.f_19821_; + return this.stringUUID; } + @Deprecated // Forge: Use FluidType sensitive version - public boolean m_6063_() { + public boolean isPushedByFluid() { return true; } @@ -3010,9 +_,22 @@ - this.f_19859_ = this.m_146908_(); + this.yRotO = this.getYRot(); } + @Deprecated // Forge: Use predicate version instead, only for vanilla Tags - public boolean m_204031_(TagKey p_204032_, double p_204033_) { + public boolean updateFluidHeightAndDoFluidPushing(TagKey p_204032_, double p_204033_) { + this.updateFluidHeightAndDoFluidPushing(); -+ if(p_204032_ == FluidTags.f_13131_) return this.isInFluidType(net.minecraftforge.common.ForgeMod.WATER_TYPE.get()); -+ else if (p_204032_ == FluidTags.f_13132_) return this.isInFluidType(net.minecraftforge.common.ForgeMod.LAVA_TYPE.get()); ++ if(p_204032_ == FluidTags.WATER) return this.isInFluidType(net.minecraftforge.common.ForgeMod.WATER_TYPE.get()); ++ else if (p_204032_ == FluidTags.LAVA) return this.isInFluidType(net.minecraftforge.common.ForgeMod.LAVA_TYPE.get()); + else return false; + } + @@ -413,14 +413,14 @@ + } + + public void updateFluidHeightAndDoFluidPushing(Predicate shouldUpdate) { - if (this.m_146899_()) { + if (this.touchingUnloadedChunk()) { - return false; + return; } else { - AABB aabb = this.m_20191_().m_82406_(0.001D); - int i = Mth.m_14107_(aabb.f_82288_); + AABB aabb = this.getBoundingBox().deflate(0.001D); + int i = Mth.floor(aabb.minX); @@ -3027,25 +_,28 @@ - Vec3 vec3 = Vec3.f_82478_; + Vec3 vec3 = Vec3.ZERO; int k1 = 0; BlockPos.MutableBlockPos blockpos$mutableblockpos = new BlockPos.MutableBlockPos(); + it.unimi.dsi.fastutil.objects.Object2ObjectMap> interimCalcs = new it.unimi.dsi.fastutil.objects.Object2ObjectArrayMap<>(net.minecraftforge.fluids.FluidType.SIZE.get() - 1); @@ -428,29 +428,29 @@ for(int l1 = i; l1 < j; ++l1) { for(int i2 = k; i2 < l; ++i2) { for(int j2 = i1; j2 < j1; ++j2) { - blockpos$mutableblockpos.m_122178_(l1, i2, j2); - FluidState fluidstate = this.m_9236_().m_6425_(blockpos$mutableblockpos); -- if (fluidstate.m_205070_(p_204032_)) { + blockpos$mutableblockpos.set(l1, i2, j2); + FluidState fluidstate = this.level().getFluidState(blockpos$mutableblockpos); +- if (fluidstate.is(p_204032_)) { + net.minecraftforge.fluids.FluidType fluidType = fluidstate.getFluidType(); + if (!fluidType.isAir() && shouldUpdate.test(fluidstate)) { - double d1 = (double)((float)i2 + fluidstate.m_76155_(this.m_9236_(), blockpos$mutableblockpos)); - if (d1 >= aabb.f_82289_) { + double d1 = (double)((float)i2 + fluidstate.getHeight(this.level(), blockpos$mutableblockpos)); + if (d1 >= aabb.minY) { flag1 = true; -- d0 = Math.max(d1 - aabb.f_82289_, d0); +- d0 = Math.max(d1 - aabb.minY, d0); - if (flag) { -+ org.apache.commons.lang3.tuple.MutableTriple interim = interimCalcs.computeIfAbsent(fluidType, t -> org.apache.commons.lang3.tuple.MutableTriple.of(0.0D, Vec3.f_82478_, 0)); -+ interim.setLeft(Math.max(d1 - aabb.f_82289_, interim.getLeft())); ++ org.apache.commons.lang3.tuple.MutableTriple interim = interimCalcs.computeIfAbsent(fluidType, t -> org.apache.commons.lang3.tuple.MutableTriple.of(0.0D, Vec3.ZERO, 0)); ++ interim.setLeft(Math.max(d1 - aabb.minY, interim.getLeft())); + if (this.isPushedByFluid(fluidType)) { - Vec3 vec31 = fluidstate.m_76179_(this.m_9236_(), blockpos$mutableblockpos); + Vec3 vec31 = fluidstate.getFlow(this.level(), blockpos$mutableblockpos); - if (d0 < 0.4D) { -- vec31 = vec31.m_82490_(d0); +- vec31 = vec31.scale(d0); + if (interim.getLeft() < 0.4D) { -+ vec31 = vec31.m_82490_(interim.getLeft()); ++ vec31 = vec31.scale(interim.getLeft()); } -- vec3 = vec3.m_82549_(vec31); +- vec3 = vec3.add(vec31); - ++k1; -+ interim.setMiddle(interim.getMiddle().m_82549_(vec31)); ++ interim.setMiddle(interim.getMiddle().add(vec31)); + interim.setRight(interim.getRight() + 1); } } @@ -459,35 +459,35 @@ } } -- if (vec3.m_82553_() > 0.0D) { +- if (vec3.length() > 0.0D) { - if (k1 > 0) { -- vec3 = vec3.m_82490_(1.0D / (double)k1); +- vec3 = vec3.scale(1.0D / (double)k1); + interimCalcs.forEach((fluidType, interim) -> { -+ if (interim.getMiddle().m_82553_() > 0.0D) { ++ if (interim.getMiddle().length() > 0.0D) { + if (interim.getRight() > 0) { -+ interim.setMiddle(interim.getMiddle().m_82490_(1.0D / (double)interim.getRight())); ++ interim.setMiddle(interim.getMiddle().scale(1.0D / (double)interim.getRight())); } if (!(this instanceof Player)) { -- vec3 = vec3.m_82541_(); -+ interim.setMiddle(interim.getMiddle().m_82541_()); +- vec3 = vec3.normalize(); ++ interim.setMiddle(interim.getMiddle().normalize()); } - Vec3 vec32 = this.m_20184_(); -- vec3 = vec3.m_82490_(p_204033_ * 1.0D); -+ interim.setMiddle(interim.getMiddle().m_82490_(this.getFluidMotionScale(fluidType))); + Vec3 vec32 = this.getDeltaMovement(); +- vec3 = vec3.scale(p_204033_ * 1.0D); ++ interim.setMiddle(interim.getMiddle().scale(this.getFluidMotionScale(fluidType))); double d2 = 0.003D; -- if (Math.abs(vec32.f_82479_) < 0.003D && Math.abs(vec32.f_82481_) < 0.003D && vec3.m_82553_() < 0.0045000000000000005D) { -- vec3 = vec3.m_82541_().m_82490_(0.0045000000000000005D); -+ if (Math.abs(vec32.f_82479_) < 0.003D && Math.abs(vec32.f_82481_) < 0.003D && interim.getMiddle().m_82553_() < 0.0045000000000000005D) { -+ interim.setMiddle(interim.getMiddle().m_82541_().m_82490_(0.0045000000000000005D)); +- if (Math.abs(vec32.x) < 0.003D && Math.abs(vec32.z) < 0.003D && vec3.length() < 0.0045000000000000005D) { +- vec3 = vec3.normalize().scale(0.0045000000000000005D); ++ if (Math.abs(vec32.x) < 0.003D && Math.abs(vec32.z) < 0.003D && interim.getMiddle().length() < 0.0045000000000000005D) { ++ interim.setMiddle(interim.getMiddle().normalize().scale(0.0045000000000000005D)); } -- this.m_20256_(this.m_20184_().m_82549_(vec3)); -+ this.m_20256_(this.m_20184_().m_82549_(interim.getMiddle())); +- this.setDeltaMovement(this.getDeltaMovement().add(vec3)); ++ this.setDeltaMovement(this.getDeltaMovement().add(interim.getMiddle())); } -- this.f_19799_.put(p_204032_, d0); +- this.fluidHeight.put(p_204032_, d0); - return flag1; + this.setFluidTypeHeight(fluidType, interim.getLeft()); + }); @@ -495,21 +495,21 @@ } @@ -3086,7 +_,10 @@ - return !this.m_9236_().m_151572_(i, k, j, l); + return !this.level().hasChunksAt(i, k, j, l); } + @Deprecated // Forge: Use getFluidTypeHeight instead - public double m_204036_(TagKey p_204037_) { -+ if (p_204037_ == FluidTags.f_13131_) return getFluidTypeHeight(net.minecraftforge.common.ForgeMod.WATER_TYPE.get()); -+ else if (p_204037_ == FluidTags.f_13132_) return getFluidTypeHeight(net.minecraftforge.common.ForgeMod.LAVA_TYPE.get()); - return this.f_19799_.getDouble(p_204037_); + public double getFluidHeight(TagKey p_204037_) { ++ if (p_204037_ == FluidTags.WATER) return getFluidTypeHeight(net.minecraftforge.common.ForgeMod.WATER_TYPE.get()); ++ else if (p_204037_ == FluidTags.LAVA) return getFluidTypeHeight(net.minecraftforge.common.ForgeMod.LAVA_TYPE.get()); + return this.fluidHeight.getDouble(p_204037_); } @@ -3222,6 +_,7 @@ - this.f_146801_.m_142044_(); + this.levelCallback.onMove(); } -+ if (this.isAddedToWorld() && !this.f_19853_.f_46443_ && !this.m_213877_()) this.f_19853_.m_6325_((int) Math.floor(p_20344_) >> 4, (int) Math.floor(p_20346_) >> 4); // Forge - ensure target chunk is loaded. ++ if (this.isAddedToWorld() && !this.level.isClientSide && !this.isRemoved()) this.level.getChunk((int) Math.floor(p_20344_) >> 4, (int) Math.floor(p_20346_) >> 4); // Forge - ensure target chunk is loaded. } @@ -518,11 +518,11 @@ } + @Deprecated /** Forge: Use {@link net.minecraftforge.common.extensions.IForgeEntity#getStepHeight()} */ - public float m_274421_() { - return this.f_19793_; + public float maxUpStep() { + return this.maxUpStep; } @@ -3349,6 +_,109 @@ - public boolean m_142265_(Level p_146843_, BlockPos p_146844_) { + public boolean mayInteract(Level p_146843_, BlockPos p_146844_) { return true; } + @@ -557,10 +557,10 @@ + } + @Override + public boolean canTrample(BlockState state, BlockPos pos, float fallDistance) { -+ return f_19853_.f_46441_.m_188501_() < fallDistance - 0.5F ++ return level.random.nextFloat() < fallDistance - 0.5F + && this instanceof LivingEntity -+ && (this instanceof Player || net.minecraftforge.event.ForgeEventFactory.getMobGriefingEvent(f_19853_, this)) -+ && this.m_20205_() * this.m_20205_() * this.m_20206_() > 0.512F; ++ && (this instanceof Player || net.minecraftforge.event.ForgeEventFactory.getMobGriefingEvent(level, this)) ++ && this.getBbWidth() * this.getBbWidth() * this.getBbHeight() > 0.512F; + } + + /** @@ -581,7 +581,7 @@ + + @Override + public void revive() { -+ this.m_146912_(); ++ this.unsetRemoved(); + this.reviveCaps(); + } + @@ -591,7 +591,7 @@ + */ + @Deprecated(forRemoval = true, since = "1.20.1") // Remove Entity Eye/Size hooks, as they need to be redesigned + public float getEyeHeightAccess(Pose pose, EntityDimensions size) { -+ return this.m_6380_(pose, size); ++ return this.getEyeHeight(pose, size); + } + + protected Object2DoubleMap forgeFluidTypeHeight = new Object2DoubleArrayMap<>(net.minecraftforge.fluids.FluidType.SIZE.get()); @@ -623,11 +623,11 @@ + + @Deprecated(forRemoval = true, since = "1.20.1") // Remove Entity Eye/Size hooks, as they need to be redesigned + public EntityDimensions getDimensionsForge(Pose pose) { -+ return m_6972_(pose); ++ return getDimensions(pose); + } + + /* ================================== Forge End =====================================*/ + - public Level m_9236_() { - return this.f_19853_; + public Level level() { + return this.level; diff --git a/patches/minecraft/net/minecraft/world/entity/EntityType.java.patch b/patches/minecraft/net/minecraft/world/entity/EntityType.java.patch index dee3529d78..83129609ec 100644 --- a/patches/minecraft/net/minecraft/world/entity/EntityType.java.patch +++ b/patches/minecraft/net/minecraft/world/entity/EntityType.java.patch @@ -1,46 +1,46 @@ --- a/net/minecraft/world/entity/EntityType.java +++ b/net/minecraft/world/entity/EntityType.java @@ -308,6 +_,11 @@ - private final EntityDimensions f_20547_; - private final FeatureFlagSet f_244139_; + private final EntityDimensions dimensions; + private final FeatureFlagSet requiredFeatures; + private final java.util.function.Predicate> velocityUpdateSupplier; + private final java.util.function.ToIntFunction> trackingRangeSupplier; + private final java.util.function.ToIntFunction> updateIntervalSupplier; + private final java.util.function.BiFunction customClientFactory; + - private static EntityType m_20634_(String p_20635_, EntityType.Builder p_20636_) { - return Registry.m_122961_(BuiltInRegistries.f_256780_, p_20635_, p_20636_.m_20712_(p_20635_)); + private static EntityType register(String p_20635_, EntityType.Builder p_20636_) { + return Registry.register(BuiltInRegistries.ENTITY_TYPE, p_20635_, p_20636_.build(p_20635_)); } @@ -321,17 +_,24 @@ } public EntityType(EntityType.EntityFactory p_273268_, MobCategory p_272918_, boolean p_273417_, boolean p_273389_, boolean p_273556_, boolean p_272654_, ImmutableSet p_273631_, EntityDimensions p_272946_, int p_272895_, int p_273451_, FeatureFlagSet p_273518_) { -- this.f_20535_ = p_273268_; -- this.f_20536_ = p_272918_; -- this.f_20541_ = p_272654_; -- this.f_20538_ = p_273417_; -- this.f_20539_ = p_273389_; -- this.f_20540_ = p_273556_; -- this.f_20537_ = p_273631_; -- this.f_20547_ = p_272946_; -- this.f_20542_ = p_272895_; -- this.f_20543_ = p_273451_; -- this.f_244139_ = p_273518_; +- this.factory = p_273268_; +- this.category = p_272918_; +- this.canSpawnFarFromPlayer = p_272654_; +- this.serialize = p_273417_; +- this.summon = p_273389_; +- this.fireImmune = p_273556_; +- this.immuneTo = p_273631_; +- this.dimensions = p_272946_; +- this.clientTrackingRange = p_272895_; +- this.updateInterval = p_273451_; +- this.requiredFeatures = p_273518_; + this(p_273268_, p_272918_, p_273417_, p_273389_, p_273556_, p_272654_, p_273631_, p_272946_, p_272895_, p_273451_, p_273518_, EntityType::defaultVelocitySupplier, EntityType::defaultTrackingRangeSupplier, EntityType::defaultUpdateIntervalSupplier, null); + } + public EntityType(EntityType.EntityFactory p_251402_, MobCategory p_251431_, boolean p_251439_, boolean p_251973_, boolean p_252007_, boolean p_250908_, ImmutableSet p_250201_, EntityDimensions p_251742_, int p_250479_, int p_249249_, FeatureFlagSet p_250427_, final java.util.function.Predicate> velocityUpdateSupplier, final java.util.function.ToIntFunction> trackingRangeSupplier, final java.util.function.ToIntFunction> updateIntervalSupplier, final java.util.function.BiFunction customClientFactory) { -+ this.f_20535_ = p_251402_; -+ this.f_20536_ = p_251431_; -+ this.f_20541_ = p_250908_; -+ this.f_20538_ = p_251439_; -+ this.f_20539_ = p_251973_; -+ this.f_20540_ = p_252007_; -+ this.f_20537_ = p_250201_; -+ this.f_20547_ = p_251742_; -+ this.f_20542_ = p_250479_; -+ this.f_20543_ = p_249249_; -+ this.f_244139_ = p_250427_; ++ this.factory = p_251402_; ++ this.category = p_251431_; ++ this.canSpawnFarFromPlayer = p_250908_; ++ this.serialize = p_251439_; ++ this.summon = p_251973_; ++ this.fireImmune = p_252007_; ++ this.immuneTo = p_250201_; ++ this.dimensions = p_251742_; ++ this.clientTrackingRange = p_250479_; ++ this.updateInterval = p_249249_; ++ this.requiredFeatures = p_250427_; + this.velocityUpdateSupplier = velocityUpdateSupplier; + this.trackingRangeSupplier = trackingRangeSupplier; + this.updateIntervalSupplier = updateIntervalSupplier; @@ -51,43 +51,43 @@ @@ -601,14 +_,23 @@ } - public int m_20681_() { + public int clientTrackingRange() { + return trackingRangeSupplier.applyAsInt(this); + } + private int defaultTrackingRangeSupplier() { - return this.f_20542_; + return this.clientTrackingRange; } - public int m_20682_() { + public int updateInterval() { + return updateIntervalSupplier.applyAsInt(this); + } + private int defaultUpdateIntervalSupplier() { - return this.f_20543_; + return this.updateInterval; } - public boolean m_20683_() { + public boolean trackDeltas() { + return velocityUpdateSupplier.test(this); + } + private boolean defaultVelocitySupplier() { - return this != f_20532_ && this != f_20467_ && this != f_20496_ && this != f_20549_ && this != f_20462_ && this != f_147033_ && this != f_20464_ && this != f_20506_ && this != f_20564_ && this != f_20569_; + return this != PLAYER && this != LLAMA_SPIT && this != WITHER && this != BAT && this != ITEM_FRAME && this != GLOW_ITEM_FRAME && this != LEASH_KNOT && this != PAINTING && this != END_CRYSTAL && this != EVOKER_FANGS; } @@ -635,6 +_,12 @@ - return this.f_204038_; + return this.builtInRegistryHolder; } + public T customClientSpawn(net.minecraftforge.network.packets.SpawnEntity packet, Level world) { -+ if (customClientFactory == null) return this.m_20615_(world); ++ if (customClientFactory == null) return this.create(world); + return customClientFactory.apply(packet, world); + } -+ public Stream>> getTags() {return this.m_204041_().m_203616_();} ++ public Stream>> getTags() {return this.builtInRegistryHolder().tags();} + public static class Builder { - private final EntityType.EntityFactory f_20685_; - private final MobCategory f_20686_; + private final EntityType.EntityFactory factory; + private final MobCategory category; @@ -648,6 +_,11 @@ - private EntityDimensions f_20694_ = EntityDimensions.m_20395_(0.6F, 1.8F); - private FeatureFlagSet f_244453_ = FeatureFlags.f_244377_; + private EntityDimensions dimensions = EntityDimensions.scalable(0.6F, 1.8F); + private FeatureFlagSet requiredFeatures = FeatureFlags.VANILLA_SET; + private java.util.function.Predicate> velocityUpdateSupplier = EntityType::defaultVelocitySupplier; + private java.util.function.ToIntFunction> trackingRangeSupplier = EntityType::defaultTrackingRangeSupplier; @@ -95,8 +95,8 @@ + private java.util.function.BiFunction customClientFactory; + private Builder(EntityType.EntityFactory p_20696_, MobCategory p_20697_) { - this.f_20685_ = p_20696_; - this.f_20686_ = p_20697_; + this.factory = p_20696_; + this.category = p_20697_; @@ -709,12 +_,36 @@ return this; } @@ -125,13 +125,13 @@ + return this; + } + - public EntityType m_20712_(String p_20713_) { - if (this.f_20688_) { - Util.m_137456_(References.f_16785_, p_20713_); + public EntityType build(String p_20713_) { + if (this.serialize) { + Util.fetchChoiceType(References.ENTITY_TREE, p_20713_); } -- return new EntityType<>(this.f_20685_, this.f_20686_, this.f_20688_, this.f_20689_, this.f_20690_, this.f_20691_, this.f_20687_, this.f_20694_, this.f_20692_, this.f_20693_, this.f_244453_); -+ return new EntityType<>(this.f_20685_, this.f_20686_, this.f_20688_, this.f_20689_, this.f_20690_, this.f_20691_, this.f_20687_, this.f_20694_, this.f_20692_, this.f_20693_, this.f_244453_, velocityUpdateSupplier, trackingRangeSupplier, updateIntervalSupplier, customClientFactory); +- return new EntityType<>(this.factory, this.category, this.serialize, this.summon, this.fireImmune, this.canSpawnFarFromPlayer, this.immuneTo, this.dimensions, this.clientTrackingRange, this.updateInterval, this.requiredFeatures); ++ return new EntityType<>(this.factory, this.category, this.serialize, this.summon, this.fireImmune, this.canSpawnFarFromPlayer, this.immuneTo, this.dimensions, this.clientTrackingRange, this.updateInterval, this.requiredFeatures, velocityUpdateSupplier, trackingRangeSupplier, updateIntervalSupplier, customClientFactory); } } diff --git a/patches/minecraft/net/minecraft/world/entity/ExperienceOrb.java.patch b/patches/minecraft/net/minecraft/world/entity/ExperienceOrb.java.patch index 17179df652..5c6a4677a8 100644 --- a/patches/minecraft/net/minecraft/world/entity/ExperienceOrb.java.patch +++ b/patches/minecraft/net/minecraft/world/entity/ExperienceOrb.java.patch @@ -1,37 +1,37 @@ --- a/net/minecraft/world/entity/ExperienceOrb.java +++ b/net/minecraft/world/entity/ExperienceOrb.java @@ -90,7 +_,8 @@ - this.m_6478_(MoverType.SELF, this.m_20184_()); + this.move(MoverType.SELF, this.getDeltaMovement()); float f = 0.98F; - if (this.m_20096_()) { -- f = this.m_9236_().m_8055_(this.m_20099_()).m_60734_().m_49958_() * 0.98F; -+ BlockPos pos = m_20099_(); -+ f = this.m_9236_().m_8055_(pos).getFriction(this.m_9236_(), pos, this) * 0.98F; + if (this.onGround()) { +- f = this.level().getBlockState(this.getBlockPosBelowThatAffectsMyMovement()).getBlock().getFriction() * 0.98F; ++ BlockPos pos = getBlockPosBelowThatAffectsMyMovement(); ++ f = this.level().getBlockState(pos).getFriction(this.level(), pos, this) * 0.98F; } - this.m_20256_(this.m_20184_().m_82542_((double)f, 0.98D, (double)f)); + this.setDeltaMovement(this.getDeltaMovement().multiply((double)f, 0.98D, (double)f)); @@ -172,6 +_,7 @@ } - public boolean m_6469_(DamageSource p_20785_, float p_20786_) { -+ if (this.m_9236_().f_46443_ || this.m_213877_()) return false; //Forge: Fixes MC-53850 - if (this.m_6673_(p_20785_)) { + public boolean hurt(DamageSource p_20785_, float p_20786_) { ++ if (this.level().isClientSide || this.isRemoved()) return false; //Forge: Fixes MC-53850 + if (this.isInvulnerableTo(p_20785_)) { return false; - } else if (this.m_9236_().f_46443_) { + } else if (this.level().isClientSide) { @@ -204,6 +_,7 @@ - public void m_6123_(Player p_20792_) { - if (!this.m_9236_().f_46443_) { - if (p_20792_.f_36101_ == 0) { + public void playerTouch(Player p_20792_) { + if (!this.level().isClientSide) { + if (p_20792_.takeXpDelay == 0) { + if (net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.event.entity.player.PlayerXpEvent.PickupXp(p_20792_, this))) return; - p_20792_.f_36101_ = 2; - p_20792_.m_7938_(this, 1); - int i = this.m_147092_(p_20792_, this.f_20770_); + p_20792_.takeXpDelay = 2; + p_20792_.take(this, 1); + int i = this.repairPlayerItems(p_20792_, this.value); @@ -224,7 +_,7 @@ - Map.Entry entry = EnchantmentHelper.m_44839_(Enchantments.f_44962_, p_147093_, ItemStack::m_41768_); + Map.Entry entry = EnchantmentHelper.getRandomItemWith(Enchantments.MENDING, p_147093_, ItemStack::isDamaged); if (entry != null) { ItemStack itemstack = entry.getValue(); -- int i = Math.min(this.m_20798_(this.f_20770_), itemstack.m_41773_()); -+ int i = Math.min((int) (this.f_20770_ * itemstack.getXpRepairRatio()), itemstack.m_41773_()); - itemstack.m_41721_(itemstack.m_41773_() - i); - int j = p_147094_ - this.m_20793_(i); - return j > 0 ? this.m_147092_(p_147093_, j) : 0; +- int i = Math.min(this.xpToDurability(this.value), itemstack.getDamageValue()); ++ int i = Math.min((int) (this.value * itemstack.getXpRepairRatio()), itemstack.getDamageValue()); + itemstack.setDamageValue(itemstack.getDamageValue() - i); + int j = p_147094_ - this.durabilityToXp(i); + return j > 0 ? this.repairPlayerItems(p_147093_, j) : 0; diff --git a/patches/minecraft/net/minecraft/world/entity/FlyingMob.java.patch b/patches/minecraft/net/minecraft/world/entity/FlyingMob.java.patch index 71dd06a417..db19c0ff6d 100644 --- a/patches/minecraft/net/minecraft/world/entity/FlyingMob.java.patch +++ b/patches/minecraft/net/minecraft/world/entity/FlyingMob.java.patch @@ -1,21 +1,21 @@ --- a/net/minecraft/world/entity/FlyingMob.java +++ b/net/minecraft/world/entity/FlyingMob.java @@ -24,15 +_,16 @@ - this.m_6478_(MoverType.SELF, this.m_20184_()); - this.m_20256_(this.m_20184_().m_82490_(0.5D)); + this.move(MoverType.SELF, this.getDeltaMovement()); + this.setDeltaMovement(this.getDeltaMovement().scale(0.5D)); } else { -+ BlockPos ground = m_20099_(); ++ BlockPos ground = getBlockPosBelowThatAffectsMyMovement(); float f = 0.91F; - if (this.m_20096_()) { -- f = this.m_9236_().m_8055_(this.m_20099_()).m_60734_().m_49958_() * 0.91F; -+ f = this.m_9236_().m_8055_(ground).getFriction(this.m_9236_(), ground, this) * 0.91F; + if (this.onGround()) { +- f = this.level().getBlockState(this.getBlockPosBelowThatAffectsMyMovement()).getBlock().getFriction() * 0.91F; ++ f = this.level().getBlockState(ground).getFriction(this.level(), ground, this) * 0.91F; } float f1 = 0.16277137F / (f * f * f); f = 0.91F; - if (this.m_20096_()) { -- f = this.m_9236_().m_8055_(this.m_20099_()).m_60734_().m_49958_() * 0.91F; -+ f = this.m_9236_().m_8055_(ground).getFriction(this.m_9236_(), ground, this) * 0.91F; + if (this.onGround()) { +- f = this.level().getBlockState(this.getBlockPosBelowThatAffectsMyMovement()).getBlock().getFriction() * 0.91F; ++ f = this.level().getBlockState(ground).getFriction(this.level(), ground, this) * 0.91F; } - this.m_19920_(this.m_20096_() ? 0.1F * f1 : 0.02F, p_20818_); + this.moveRelative(this.onGround() ? 0.1F * f1 : 0.02F, p_20818_); diff --git a/patches/minecraft/net/minecraft/world/entity/LightningBolt.java.patch b/patches/minecraft/net/minecraft/world/entity/LightningBolt.java.patch index 2811158d08..5e0a51c5ce 100644 --- a/patches/minecraft/net/minecraft/world/entity/LightningBolt.java.patch +++ b/patches/minecraft/net/minecraft/world/entity/LightningBolt.java.patch @@ -1,9 +1,9 @@ --- a/net/minecraft/world/entity/LightningBolt.java +++ b/net/minecraft/world/entity/LightningBolt.java @@ -37,6 +_,7 @@ - private ServerPlayer f_20863_; - private final Set f_147134_ = Sets.newHashSet(); - private int f_147135_; + private ServerPlayer cause; + private final Set hitEntities = Sets.newHashSet(); + private int blocksSetOnFire; + private float damage = 5.0F; public LightningBolt(EntityType p_20865_, Level p_20866_) { @@ -20,14 +20,14 @@ + return this.damage; + } + - public void m_8119_() { - super.m_8119_(); - if (this.f_20860_ == 2) { + public void tick() { + super.tick(); + if (this.life == 2) { @@ -121,6 +_,7 @@ - List list1 = this.m_9236_().m_6249_(this, new AABB(this.m_20185_() - 3.0D, this.m_20186_() - 3.0D, this.m_20189_() - 3.0D, this.m_20185_() + 3.0D, this.m_20186_() + 6.0D + 3.0D, this.m_20189_() + 3.0D), Entity::m_6084_); + List list1 = this.level().getEntities(this, new AABB(this.getX() - 3.0D, this.getY() - 3.0D, this.getZ() - 3.0D, this.getX() + 3.0D, this.getY() + 6.0D + 3.0D, this.getZ() + 3.0D), Entity::isAlive); for(Entity entity : list1) { + if (!net.minecraftforge.event.ForgeEventFactory.onEntityStruckByLightning(entity, this)) - entity.m_8038_((ServerLevel)this.m_9236_(), this); + entity.thunderHit((ServerLevel)this.level(), this); } diff --git a/patches/minecraft/net/minecraft/world/entity/LivingEntity.java.patch b/patches/minecraft/net/minecraft/world/entity/LivingEntity.java.patch index a99083f603..5179826f84 100644 --- a/patches/minecraft/net/minecraft/world/entity/LivingEntity.java.patch +++ b/patches/minecraft/net/minecraft/world/entity/LivingEntity.java.patch @@ -6,102 +6,102 @@ -public abstract class LivingEntity extends Entity implements Attackable { +public abstract class LivingEntity extends Entity implements Attackable, net.minecraftforge.common.extensions.IForgeLivingEntity { - private static final Logger f_201943_ = LogUtils.getLogger(); - private static final String f_290660_ = "active_effects"; - private static final UUID f_20959_ = UUID.fromString("87f46a96-686f-4796-b035-22e16ee9e038"); - private static final UUID f_147184_ = UUID.fromString("1eaf83ff-7207-4596-b37a-d7a07b3ec4ce"); + private static final Logger LOGGER = LogUtils.getLogger(); + private static final String TAG_ACTIVE_EFFECTS = "active_effects"; + private static final UUID SPEED_MODIFIER_SOUL_SPEED_UUID = UUID.fromString("87f46a96-686f-4796-b035-22e16ee9e038"); + private static final UUID SPEED_MODIFIER_POWDER_SNOW_UUID = UUID.fromString("1eaf83ff-7207-4596-b37a-d7a07b3ec4ce"); + private static final UUID SLOW_FALLING_ID = UUID.fromString("A5B6CF2A-2F7C-31EF-9022-7C3E7D5E6ABA"); - private static final AttributeModifier f_20960_ = new AttributeModifier(UUID.fromString("662A6B8D-DA3E-4C1C-8813-96EA6097278D"), "Sprinting speed boost", (double)0.3F, AttributeModifier.Operation.MULTIPLY_TOTAL); + private static final AttributeModifier SPEED_MODIFIER_SPRINTING = new AttributeModifier(UUID.fromString("662A6B8D-DA3E-4C1C-8813-96EA6097278D"), "Sprinting speed boost", (double)0.3F, AttributeModifier.Operation.MULTIPLY_TOTAL); + private static final AttributeModifier SLOW_FALLING = new AttributeModifier(SLOW_FALLING_ID, "Slow falling acceleration reduction", -0.07, AttributeModifier.Operation.ADDITION); // Add -0.07 to 0.08 so we get the vanilla default of 0.01 - public static final int f_147166_ = 2; - public static final int f_147167_ = 4; - public static final int f_147168_ = 98; + public static final int HAND_SLOTS = 2; + public static final int ARMOR_SLOTS = 4; + public static final int EQUIPMENT_SLOT_OFFSET = 98; @@ -239,7 +_,8 @@ - this.f_20885_ = this.m_146908_(); - this.m_274367_(0.6F); - NbtOps nbtops = NbtOps.f_128958_; -- this.f_20939_ = this.m_8075_(new Dynamic<>(nbtops, nbtops.createMap(ImmutableMap.of(nbtops.createString("memories"), nbtops.emptyMap())))); + this.yHeadRot = this.getYRot(); + this.setMaxUpStep(0.6F); + NbtOps nbtops = NbtOps.INSTANCE; +- this.brain = this.makeBrain(new Dynamic<>(nbtops, nbtops.createMap(ImmutableMap.of(nbtops.createString("memories"), nbtops.emptyMap())))); + var dyn = new Dynamic<>(nbtops, nbtops.createMap(ImmutableMap.of(nbtops.createString("memories"), nbtops.emptyMap()))); -+ this.f_20939_ = net.minecraftforge.common.ForgeHooks.onLivingMakeBrain(this, this.m_8075_(dyn), dyn); ++ this.brain = net.minecraftforge.common.ForgeHooks.onLivingMakeBrain(this, this.makeBrain(dyn), dyn); } - public Brain m_6274_() { + public Brain getBrain() { @@ -273,7 +_,7 @@ } - public static AttributeSupplier.Builder m_21183_() { -- return AttributeSupplier.m_22244_().m_22266_(Attributes.f_22276_).m_22266_(Attributes.f_22278_).m_22266_(Attributes.f_22279_).m_22266_(Attributes.f_22284_).m_22266_(Attributes.f_22285_).m_22266_(Attributes.f_290864_); -+ return AttributeSupplier.m_22244_().m_22266_(Attributes.f_22276_).m_22266_(Attributes.f_22278_).m_22266_(Attributes.f_22279_).m_22266_(Attributes.f_22284_).m_22266_(Attributes.f_22285_).m_22266_(Attributes.f_290864_).m_22266_(net.minecraftforge.common.ForgeMod.SWIM_SPEED.get()).m_22266_(net.minecraftforge.common.ForgeMod.NAMETAG_DISTANCE.get()).m_22266_(net.minecraftforge.common.ForgeMod.ENTITY_GRAVITY.get()).m_22266_(net.minecraftforge.common.ForgeMod.STEP_HEIGHT_ADDITION.get()); + public static AttributeSupplier.Builder createLivingAttributes() { +- return AttributeSupplier.builder().add(Attributes.MAX_HEALTH).add(Attributes.KNOCKBACK_RESISTANCE).add(Attributes.MOVEMENT_SPEED).add(Attributes.ARMOR).add(Attributes.ARMOR_TOUGHNESS).add(Attributes.MAX_ABSORPTION); ++ return AttributeSupplier.builder().add(Attributes.MAX_HEALTH).add(Attributes.KNOCKBACK_RESISTANCE).add(Attributes.MOVEMENT_SPEED).add(Attributes.ARMOR).add(Attributes.ARMOR_TOUGHNESS).add(Attributes.MAX_ABSORPTION).add(net.minecraftforge.common.ForgeMod.SWIM_SPEED.get()).add(net.minecraftforge.common.ForgeMod.NAMETAG_DISTANCE.get()).add(net.minecraftforge.common.ForgeMod.ENTITY_GRAVITY.get()).add(net.minecraftforge.common.ForgeMod.STEP_HEIGHT_ADDITION.get()); } - protected void m_7840_(double p_20990_, boolean p_20991_, BlockState p_20992_, BlockPos p_20993_) { + protected void checkFallDamage(double p_20990_, boolean p_20991_, BlockState p_20992_, BlockPos p_20993_) { @@ -302,7 +_,8 @@ - float f = (float)Mth.m_14167_(this.f_19789_ - 3.0F); + float f = (float)Mth.ceil(this.fallDistance - 3.0F); double d4 = Math.min((double)(0.2F + f / 15.0F), 2.5D); int i = (int)(150.0D * d4); -- ((ServerLevel)this.m_9236_()).m_8767_(new BlockParticleOption(ParticleTypes.f_123794_, p_20992_), d0, d1, d2, i, 0.0D, 0.0D, 0.0D, (double)0.15F); -+ if (!p_20992_.addLandingEffects((ServerLevel) this.m_9236_(), p_20993_, p_20992_, this, i)) -+ ((ServerLevel)this.m_9236_()).m_8767_(new BlockParticleOption(ParticleTypes.f_123794_, p_20992_).setPos(p_20993_), d0, d1, d2, i, 0.0D, 0.0D, 0.0D, (double)0.15F); +- ((ServerLevel)this.level()).sendParticles(new BlockParticleOption(ParticleTypes.BLOCK, p_20992_), d0, d1, d2, i, 0.0D, 0.0D, 0.0D, (double)0.15F); ++ if (!p_20992_.addLandingEffects((ServerLevel) this.level(), p_20993_, p_20992_, this, i)) ++ ((ServerLevel)this.level()).sendParticles(new BlockParticleOption(ParticleTypes.BLOCK, p_20992_).setPos(p_20993_), d0, d1, d2, i, 0.0D, 0.0D, 0.0D, (double)0.15F); } - super.m_7840_(p_20990_, p_20991_, p_20992_, p_20993_); + super.checkFallDamage(p_20990_, p_20991_, p_20992_, p_20993_); @@ -312,6 +_,7 @@ } + @Deprecated //FORGE: Use canDrownInFluidType instead - public boolean m_6040_() { - return this.m_6336_() == MobType.f_21641_; + public boolean canBreatheUnderwater() { + return this.getMobType() == MobType.UNDEAD; } @@ -352,6 +_,9 @@ } } -+ int airSupply = this.m_20146_(); -+ net.minecraftforge.common.ForgeHooks.onLivingBreathe(this, airSupply - m_7302_(airSupply), m_7305_(airSupply) - airSupply); ++ int airSupply = this.getAirSupply(); ++ net.minecraftforge.common.ForgeHooks.onLivingBreathe(this, airSupply - decreaseAirSupply(airSupply), increaseAirSupply(airSupply) - airSupply); + if (false) // Forge: Handled in ForgeHooks#onLivingBreathe(LivingEntity, int, int) - if (this.m_204029_(FluidTags.f_13131_) && !this.m_9236_().m_8055_(BlockPos.m_274561_(this.m_20185_(), this.m_20188_(), this.m_20189_())).m_60713_(Blocks.f_50628_)) { - boolean flag1 = !this.m_6040_() && !MobEffectUtil.m_19588_(this) && (!flag || !((Player)this).m_150110_().f_35934_); + if (this.isEyeInFluid(FluidTags.WATER) && !this.level().getBlockState(BlockPos.containing(this.getX(), this.getEyeY(), this.getZ())).is(Blocks.BUBBLE_COLUMN)) { + boolean flag1 = !this.canBreatheUnderwater() && !MobEffectUtil.hasWaterBreathing(this) && (!flag || !((Player)this).getAbilities().invulnerable); if (flag1) { @@ -387,7 +_,7 @@ } } -- if (this.m_6084_() && (this.m_20071_() || this.f_146808_)) { -+ if (this.m_6084_() && (this.m_20071_() || this.f_146808_ || this.isInFluidType((fluidType, height) -> this.canFluidExtinguish(fluidType)))) { - this.m_252836_(); +- if (this.isAlive() && (this.isInWaterRainOrBubble() || this.isInPowderSnow)) { ++ if (this.isAlive() && (this.isInWaterRainOrBubble() || this.isInPowderSnow || this.isInFluidType((fluidType, height) -> this.canFluidExtinguish(fluidType)))) { + this.extinguishFire(); } @@ -734,7 +_,8 @@ } - if (p_21096_.m_128425_("Brain", 10)) { -- this.f_20939_ = this.m_8075_(new Dynamic<>(NbtOps.f_128958_, p_21096_.m_128423_("Brain"))); -+ var dyn = new Dynamic<>(NbtOps.f_128958_, p_21096_.m_128423_("Brain")); -+ this.f_20939_ = net.minecraftforge.common.ForgeHooks.onLivingMakeBrain(this, this.m_8075_(dyn), dyn); + if (p_21096_.contains("Brain", 10)) { +- this.brain = this.makeBrain(new Dynamic<>(NbtOps.INSTANCE, p_21096_.get("Brain"))); ++ var dyn = new Dynamic<>(NbtOps.INSTANCE, p_21096_.get("Brain")); ++ this.brain = net.minecraftforge.common.ForgeHooks.onLivingMakeBrain(this, this.makeBrain(dyn), dyn); } } @@ -749,7 +_,7 @@ - if (!mobeffectinstance.m_19552_(this, () -> { - this.m_141973_(mobeffectinstance, true, (Entity)null); + if (!mobeffectinstance.tick(this, () -> { + this.onEffectUpdated(mobeffectinstance, true, (Entity)null); })) { -- if (!this.m_9236_().f_46443_) { -+ if (!this.m_9236_().f_46443_ && !net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.event.entity.living.MobEffectEvent.Expired(this, mobeffectinstance))) { +- if (!this.level().isClientSide) { ++ if (!this.level().isClientSide && !net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.event.entity.living.MobEffectEvent.Expired(this, mobeffectinstance))) { iterator.remove(); - this.m_7285_(mobeffectinstance); + this.onEffectRemoved(mobeffectinstance); } @@ -799,8 +_,10 @@ - this.m_6842_(false); + this.setInvisible(false); } else { - Collection collection = this.f_20945_.values(); -- this.f_19804_.m_135381_(f_20963_, m_21179_(collection)); -- this.f_19804_.m_135381_(f_20962_, PotionUtils.m_43564_(collection)); -+ net.minecraftforge.event.entity.living.PotionColorCalculationEvent event = new net.minecraftforge.event.entity.living.PotionColorCalculationEvent(this, PotionUtils.m_43564_(collection), m_21179_(collection), collection); + Collection collection = this.activeEffects.values(); +- this.entityData.set(DATA_EFFECT_AMBIENCE_ID, areAllEffectsAmbient(collection)); +- this.entityData.set(DATA_EFFECT_COLOR_ID, PotionUtils.getColor(collection)); ++ net.minecraftforge.event.entity.living.PotionColorCalculationEvent event = new net.minecraftforge.event.entity.living.PotionColorCalculationEvent(this, PotionUtils.getColor(collection), areAllEffectsAmbient(collection), collection); + net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(event); -+ this.f_19804_.m_135381_(f_20963_, event.areParticlesHidden()); -+ this.f_19804_.m_135381_(f_20962_, event.getColor()); - this.m_6842_(this.m_21023_(MobEffects.f_19609_)); ++ this.entityData.set(DATA_EFFECT_AMBIENCE_ID, event.areParticlesHidden()); ++ this.entityData.set(DATA_EFFECT_COLOR_ID, event.getColor()); + this.setInvisible(this.hasEffect(MobEffects.INVISIBILITY)); } @@ -837,6 +_,7 @@ @@ -116,70 +116,70 @@ boolean flag; for(flag = false; iterator.hasNext(); flag = true) { -- this.m_7285_(iterator.next()); +- this.onEffectRemoved(iterator.next()); + MobEffectInstance effect = iterator.next(); + if(net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.event.entity.living.MobEffectEvent.Remove(this, effect))) continue; -+ this.m_7285_(effect); ++ this.onEffectRemoved(effect); iterator.remove(); } @@ -914,6 +_,7 @@ } else { - MobEffectInstance mobeffectinstance = this.f_20945_.get(p_147208_.m_19544_()); + MobEffectInstance mobeffectinstance = this.activeEffects.get(p_147208_.getEffect()); boolean flag = false; + net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.event.entity.living.MobEffectEvent.Added(this, mobeffectinstance, p_147208_, p_147209_)); if (mobeffectinstance == null) { - this.f_20945_.put(p_147208_.m_19544_(), p_147208_); - this.m_142540_(p_147208_, p_147209_); + this.activeEffects.put(p_147208_.getEffect(), p_147208_); + this.onEffectAdded(p_147208_, p_147209_); @@ -929,6 +_,9 @@ } - public boolean m_7301_(MobEffectInstance p_21197_) { + public boolean canBeAffected(MobEffectInstance p_21197_) { + var event = new net.minecraftforge.event.entity.living.MobEffectEvent.Applicable(this, p_21197_); + net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(event); + if (event.getResult() != net.minecraftforge.eventbus.api.Event.Result.DEFAULT) return event.getResult() == net.minecraftforge.eventbus.api.Event.Result.ALLOW; - if (this.m_6336_() == MobType.f_21641_) { - MobEffect mobeffect = p_21197_.m_19544_(); - if (mobeffect == MobEffects.f_19605_ || mobeffect == MobEffects.f_19614_) { + if (this.getMobType() == MobType.UNDEAD) { + MobEffect mobeffect = p_21197_.getEffect(); + if (mobeffect == MobEffects.REGENERATION || mobeffect == MobEffects.POISON) { @@ -961,6 +_,7 @@ } - public boolean m_21195_(MobEffect p_21196_) { + public boolean removeEffect(MobEffect p_21196_) { + if (net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.event.entity.living.MobEffectEvent.Remove(this, p_21196_))) return false; - MobEffectInstance mobeffectinstance = this.m_6234_(p_21196_); + MobEffectInstance mobeffectinstance = this.removeEffectNoUpdate(p_21196_); if (mobeffectinstance != null) { - this.m_7285_(mobeffectinstance); + this.onEffectRemoved(mobeffectinstance); @@ -1042,6 +_,8 @@ } - public void m_5634_(float p_21116_) { + public void heal(float p_21116_) { + p_21116_ = net.minecraftforge.event.ForgeEventFactory.onLivingHeal(this, p_21116_); + if (p_21116_ <= 0) return; - float f = this.m_21223_(); + float f = this.getHealth(); if (f > 0.0F) { - this.m_21153_(f + p_21116_); + this.setHealth(f + p_21116_); @@ -1062,6 +_,7 @@ } - public boolean m_6469_(DamageSource p_21016_, float p_21017_) { + public boolean hurt(DamageSource p_21016_, float p_21017_) { + if (!net.minecraftforge.common.ForgeHooks.onLivingAttack(this, p_21016_, p_21017_)) return false; - if (this.m_6673_(p_21016_)) { + if (this.isInvulnerableTo(p_21016_)) { return false; - } else if (this.m_9236_().f_46443_) { + } else if (this.level().isClientSide) { @@ -1080,9 +_,11 @@ boolean flag = false; float f1 = 0.0F; - if (p_21017_ > 0.0F && this.m_21275_(p_21016_)) { -- this.m_7909_(p_21017_); + if (p_21017_ > 0.0F && this.isDamageSourceBlocked(p_21016_)) { +- this.hurtCurrentlyUsedShield(p_21017_); - f1 = p_21017_; - p_21017_ = 0.0F; + var ev = net.minecraftforge.common.ForgeHooks.onShieldBlock(this, p_21016_, p_21017_); + if(!ev.isCanceled()) { -+ if(ev.shieldTakesDamage()) this.m_7909_(p_21017_); ++ if(ev.shieldTakesDamage()) this.hurtCurrentlyUsedShield(p_21017_); + f1 = ev.getBlockedDamage(); + p_21017_ -= ev.getBlockedDamage(); - if (!p_21016_.m_269533_(DamageTypeTags.f_268524_)) { - Entity entity = p_21016_.m_7640_(); + if (!p_21016_.is(DamageTypeTags.IS_PROJECTILE)) { + Entity entity = p_21016_.getDirectEntity(); if (entity instanceof LivingEntity) { @@ -1091,7 +_,8 @@ } @@ -190,77 +190,77 @@ + } } - if (p_21016_.m_269533_(DamageTypeTags.f_268419_) && this.m_6095_().m_204039_(EntityTypeTags.f_144295_)) { + if (p_21016_.is(DamageTypeTags.IS_FREEZING) && this.getType().is(EntityTypeTags.FREEZE_HURTS_EXTRA_TYPES)) { @@ -1134,11 +_,10 @@ Player player1 = (Player)entity1; - this.f_20889_ = 100; - this.f_20888_ = player1; + this.lastHurtByPlayerTime = 100; + this.lastHurtByPlayer = player1; - } else if (entity1 instanceof Wolf) { - Wolf wolf = (Wolf)entity1; -- if (wolf.m_21824_()) { +- if (wolf.isTame()) { + } else if (entity1 instanceof net.minecraft.world.entity.TamableAnimal tamableEntity) { -+ if (tamableEntity.m_21824_()) { - this.f_20889_ = 100; -- LivingEntity livingentity2 = wolf.m_269323_(); -+ LivingEntity livingentity2 = tamableEntity.m_269323_(); ++ if (tamableEntity.isTame()) { + this.lastHurtByPlayerTime = 100; +- LivingEntity livingentity2 = wolf.getOwner(); ++ LivingEntity livingentity2 = tamableEntity.getOwner(); if (livingentity2 instanceof Player) { Player player = (Player)livingentity2; - this.f_20888_ = player; + this.lastHurtByPlayer = player; @@ -1197,7 +_,7 @@ if (this instanceof ServerPlayer) { - CriteriaTriggers.f_10574_.m_35174_((ServerPlayer)this, p_21016_, f, p_21017_, flag); + CriteriaTriggers.ENTITY_HURT_PLAYER.trigger((ServerPlayer)this, p_21016_, f, p_21017_, flag); if (f1 > 0.0F && f1 < 3.4028235E37F) { -- ((ServerPlayer)this).m_36222_(Stats.f_12932_, Math.round(f1 * 10.0F)); -+ ((ServerPlayer)this).m_6278_(Stats.f_12988_.m_12902_(Stats.f_12932_), Math.round(f1 * 10.0F)); +- ((ServerPlayer)this).awardStat(Stats.DAMAGE_BLOCKED_BY_SHIELD, Math.round(f1 * 10.0F)); ++ ((ServerPlayer)this).awardStat(Stats.CUSTOM.get(Stats.DAMAGE_BLOCKED_BY_SHIELD), Math.round(f1 * 10.0F)); } } @@ -1225,7 +_,7 @@ for(InteractionHand interactionhand : InteractionHand.values()) { - ItemStack itemstack1 = this.m_21120_(interactionhand); -- if (itemstack1.m_150930_(Items.f_42747_)) { -+ if (itemstack1.m_150930_(Items.f_42747_) && net.minecraftforge.common.ForgeHooks.onLivingUseTotem(this, p_21263_, itemstack1, interactionhand)) { - itemstack = itemstack1.m_41777_(); - itemstack1.m_41774_(1); + ItemStack itemstack1 = this.getItemInHand(interactionhand); +- if (itemstack1.is(Items.TOTEM_OF_UNDYING)) { ++ if (itemstack1.is(Items.TOTEM_OF_UNDYING) && net.minecraftforge.common.ForgeHooks.onLivingUseTotem(this, p_21263_, itemstack1, interactionhand)) { + itemstack = itemstack1.copy(); + itemstack1.shrink(1); break; @@ -1235,7 +_,7 @@ if (itemstack != null) { if (this instanceof ServerPlayer) { ServerPlayer serverplayer = (ServerPlayer)this; -- serverplayer.m_36246_(Stats.f_12982_.m_12902_(Items.f_42747_)); -+ serverplayer.m_6278_(Stats.f_12982_.m_12902_(Items.f_42747_), 1); - CriteriaTriggers.f_10551_.m_74431_(serverplayer, itemstack); - this.m_146850_(GameEvent.f_223697_); +- serverplayer.awardStat(Stats.ITEM_USED.get(Items.TOTEM_OF_UNDYING)); ++ serverplayer.awardStat(Stats.ITEM_USED.get(Items.TOTEM_OF_UNDYING), 1); + CriteriaTriggers.USED_TOTEM.trigger(serverplayer, itemstack); + this.gameEvent(GameEvent.ITEM_INTERACT_FINISH); } @@ -1305,6 +_,7 @@ } - public void m_6667_(DamageSource p_21014_) { + public void die(DamageSource p_21014_) { + if (net.minecraftforge.common.ForgeHooks.onLivingDeath(this, p_21014_)) return; - if (!this.m_213877_() && !this.f_20890_) { - Entity entity = p_21014_.m_7639_(); - LivingEntity livingentity = this.m_21232_(); + if (!this.isRemoved() && !this.dead) { + Entity entity = p_21014_.getEntity(); + LivingEntity livingentity = this.getKillCredit(); @@ -1342,10 +_,10 @@ - if (!this.m_9236_().f_46443_) { + if (!this.level().isClientSide) { boolean flag = false; if (p_21269_ instanceof WitherBoss) { -- if (this.m_9236_().m_46469_().m_46207_(GameRules.f_46132_)) { -+ if (net.minecraftforge.event.ForgeEventFactory.getMobGriefingEvent(this.m_9236_(), p_21269_)) { - BlockPos blockpos = this.m_20183_(); - BlockState blockstate = Blocks.f_50070_.m_49966_(); -- if (this.m_9236_().m_8055_(blockpos).m_60795_() && blockstate.m_60710_(this.m_9236_(), blockpos)) { -+ if (this.m_9236_().m_46859_(blockpos) && blockstate.m_60710_(this.m_9236_(), blockpos)) { - this.m_9236_().m_7731_(blockpos, blockstate, 3); +- if (this.level().getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) { ++ if (net.minecraftforge.event.ForgeEventFactory.getMobGriefingEvent(this.level(), p_21269_)) { + BlockPos blockpos = this.blockPosition(); + BlockState blockstate = Blocks.WITHER_ROSE.defaultBlockState(); +- if (this.level().getBlockState(blockpos).isAir() && blockstate.canSurvive(this.level(), blockpos)) { ++ if (this.level().isEmptyBlock(blockpos) && blockstate.canSurvive(this.level(), blockpos)) { + this.level().setBlock(blockpos, blockstate, 3); flag = true; } @@ -1362,12 +_,9 @@ - protected void m_6668_(DamageSource p_21192_) { - Entity entity = p_21192_.m_7639_(); + protected void dropAllDeathLoot(DamageSource p_21192_) { + Entity entity = p_21192_.getEntity(); - int i; - if (entity instanceof Player) { -- i = EnchantmentHelper.m_44930_((LivingEntity)entity); +- i = EnchantmentHelper.getMobLooting((LivingEntity)entity); - } else { - i = 0; - } @@ -268,56 +268,56 @@ + int i = net.minecraftforge.common.ForgeHooks.getLootingLevel(this, entity, p_21192_); + this.captureDrops(new java.util.ArrayList<>()); - boolean flag = this.f_20889_ > 0; - if (this.m_6125_() && this.m_9236_().m_46469_().m_46207_(GameRules.f_46135_)) { + boolean flag = this.lastHurtByPlayerTime > 0; + if (this.shouldDropLoot() && this.level().getGameRules().getBoolean(GameRules.RULE_DOMOBLOOT)) { @@ -1377,6 +_,10 @@ - this.m_5907_(); - this.m_21226_(); + this.dropEquipment(); + this.dropExperience(); + + Collection drops = captureDrops(null); -+ if (!net.minecraftforge.common.ForgeHooks.onLivingDrops(this, p_21192_, drops, i, f_20889_ > 0)) -+ drops.forEach(e -> m_9236_().m_7967_(e)); ++ if (!net.minecraftforge.common.ForgeHooks.onLivingDrops(this, p_21192_, drops, i, lastHurtByPlayerTime > 0)) ++ drops.forEach(e -> level().addFreshEntity(e)); } - protected void m_5907_() { + protected void dropEquipment() { @@ -1384,7 +_,8 @@ - protected void m_21226_() { - if (this.m_9236_() instanceof ServerLevel && !this.m_217046_() && (this.m_6124_() || this.f_20889_ > 0 && this.m_6149_() && this.m_9236_().m_46469_().m_46207_(GameRules.f_46135_))) { -- ExperienceOrb.m_147082_((ServerLevel)this.m_9236_(), this.m_20182_(), this.m_213860_()); -+ int reward = net.minecraftforge.event.ForgeEventFactory.getExperienceDrop(this, this.f_20888_, this.m_213860_()); -+ ExperienceOrb.m_147082_((ServerLevel) this.m_9236_(), this.m_20182_(), reward); + protected void dropExperience() { + if (this.level() instanceof ServerLevel && !this.wasExperienceConsumed() && (this.isAlwaysExperienceDropper() || this.lastHurtByPlayerTime > 0 && this.shouldDropExperience() && this.level().getGameRules().getBoolean(GameRules.RULE_DOMOBLOOT))) { +- ExperienceOrb.award((ServerLevel)this.level(), this.position(), this.getExperienceReward()); ++ int reward = net.minecraftforge.event.ForgeEventFactory.getExperienceDrop(this, this.lastHurtByPlayer, this.getExperienceReward()); ++ ExperienceOrb.award((ServerLevel) this.level(), this.position(), reward); } } @@ -1413,6 +_,11 @@ } - public void m_147240_(double p_147241_, double p_147242_, double p_147243_) { + public void knockback(double p_147241_, double p_147242_, double p_147243_) { + net.minecraftforge.event.entity.living.LivingKnockBackEvent event = net.minecraftforge.common.ForgeHooks.onLivingKnockBack(this, (float) p_147241_, p_147242_, p_147243_); + if(event.isCanceled()) return; + p_147241_ = event.getStrength(); + p_147242_ = event.getRatioX(); + p_147243_ = event.getRatioZ(); - p_147241_ *= 1.0D - this.m_21133_(Attributes.f_22278_); + p_147241_ *= 1.0D - this.getAttributeValue(Attributes.KNOCKBACK_RESISTANCE); if (!(p_147241_ <= 0.0D)) { - this.f_19812_ = true; + this.hasImpulse = true; @@ -1484,15 +_,9 @@ } else { - BlockPos blockpos = this.m_20183_(); - BlockState blockstate = this.m_146900_(); -- if (blockstate.m_204336_(BlockTags.f_13082_)) { -- this.f_20957_ = Optional.of(blockpos); + BlockPos blockpos = this.blockPosition(); + BlockState blockstate = this.getFeetBlockState(); +- if (blockstate.is(BlockTags.CLIMBABLE)) { +- this.lastClimbablePos = Optional.of(blockpos); - return true; -- } else if (blockstate.m_60734_() instanceof TrapDoorBlock && this.m_21176_(blockpos, blockstate)) { -- this.f_20957_ = Optional.of(blockpos); +- } else if (blockstate.getBlock() instanceof TrapDoorBlock && this.trapdoorUsableAsLadder(blockpos, blockstate)) { +- this.lastClimbablePos = Optional.of(blockpos); - return true; - } else { - return false; - } -+ Optional ladderPos = net.minecraftforge.common.ForgeHooks.isLivingOnLadder(blockstate, m_9236_(), blockpos, this); -+ if (ladderPos.isPresent()) this.f_20957_ = ladderPos; ++ Optional ladderPos = net.minecraftforge.common.ForgeHooks.isLivingOnLadder(blockstate, level(), blockpos, this); ++ if (ladderPos.isPresent()) this.lastClimbablePos = ladderPos; + return ladderPos.isPresent(); } } @@ -325,374 +325,374 @@ @@ -1512,6 +_,11 @@ } - public boolean m_142535_(float p_147187_, float p_147188_, DamageSource p_147189_) { + public boolean causeFallDamage(float p_147187_, float p_147188_, DamageSource p_147189_) { + float[] ret = net.minecraftforge.common.ForgeHooks.onLivingFall(this, p_147187_, p_147188_); + if (ret == null) return false; + p_147187_ = ret[0]; + p_147188_ = ret[1]; + - boolean flag = super.m_142535_(p_147187_, p_147188_, p_147189_); - int i = this.m_5639_(p_147187_, p_147188_); + boolean flag = super.causeFallDamage(p_147187_, p_147188_, p_147189_); + int i = this.calculateFallDamage(p_147187_, p_147188_); if (i > 0) { @@ -1539,9 +_,10 @@ - int i = Mth.m_14107_(this.m_20185_()); - int j = Mth.m_14107_(this.m_20186_() - (double)0.2F); - int k = Mth.m_14107_(this.m_20189_()); -- BlockState blockstate = this.m_9236_().m_8055_(new BlockPos(i, j, k)); + int i = Mth.floor(this.getX()); + int j = Mth.floor(this.getY() - (double)0.2F); + int k = Mth.floor(this.getZ()); +- BlockState blockstate = this.level().getBlockState(new BlockPos(i, j, k)); + BlockPos pos = new BlockPos(i, j, k); -+ BlockState blockstate = this.m_9236_().m_8055_(pos); - if (!blockstate.m_60795_()) { -- SoundType soundtype = blockstate.m_60827_(); -+ SoundType soundtype = blockstate.getSoundType(m_9236_(), pos, this); - this.m_5496_(soundtype.m_56779_(), soundtype.m_56773_() * 0.5F, soundtype.m_56774_() * 0.75F); ++ BlockState blockstate = this.level().getBlockState(pos); + if (!blockstate.isAir()) { +- SoundType soundtype = blockstate.getSoundType(); ++ SoundType soundtype = blockstate.getSoundType(level(), pos, this); + this.playSound(soundtype.getFallSound(), soundtype.getVolume() * 0.5F, soundtype.getPitch() * 0.75F); } @@ -1588,9 +_,9 @@ float f2 = f1 - p_21194_; if (f2 > 0.0F && f2 < 3.4028235E37F) { if (this instanceof ServerPlayer) { -- ((ServerPlayer)this).m_36222_(Stats.f_12934_, Math.round(f2 * 10.0F)); -+ ((ServerPlayer)this).m_6278_(Stats.f_12988_.m_12902_(Stats.f_12934_), Math.round(f2 * 10.0F)); - } else if (p_21193_.m_7639_() instanceof ServerPlayer) { -- ((ServerPlayer)p_21193_.m_7639_()).m_36222_(Stats.f_12930_, Math.round(f2 * 10.0F)); -+ ((ServerPlayer)p_21193_.m_7639_()).m_6278_(Stats.f_12988_.m_12902_(Stats.f_12930_), Math.round(f2 * 10.0F)); +- ((ServerPlayer)this).awardStat(Stats.DAMAGE_RESISTED, Math.round(f2 * 10.0F)); ++ ((ServerPlayer)this).awardStat(Stats.CUSTOM.get(Stats.DAMAGE_RESISTED), Math.round(f2 * 10.0F)); + } else if (p_21193_.getEntity() instanceof ServerPlayer) { +- ((ServerPlayer)p_21193_.getEntity()).awardStat(Stats.DAMAGE_DEALT_RESISTED, Math.round(f2 * 10.0F)); ++ ((ServerPlayer)p_21193_.getEntity()).awardStat(Stats.CUSTOM.get(Stats.DAMAGE_DEALT_RESISTED), Math.round(f2 * 10.0F)); } } } @@ -1612,6 +_,8 @@ - protected void m_6475_(DamageSource p_21240_, float p_21241_) { - if (!this.m_6673_(p_21240_)) { + protected void actuallyHurt(DamageSource p_21240_, float p_21241_) { + if (!this.isInvulnerableTo(p_21240_)) { + p_21241_ = net.minecraftforge.common.ForgeHooks.onLivingHurt(this, p_21240_, p_21241_); + if (p_21241_ <= 0) return; - p_21241_ = this.m_21161_(p_21240_, p_21241_); - p_21241_ = this.m_6515_(p_21240_, p_21241_); - float f1 = Math.max(p_21241_ - this.m_6103_(), 0.0F); + p_21241_ = this.getDamageAfterArmorAbsorb(p_21240_, p_21241_); + p_21241_ = this.getDamageAfterMagicAbsorb(p_21240_, p_21241_); + float f1 = Math.max(p_21241_ - this.getAbsorptionAmount(), 0.0F); @@ -1625,6 +_,7 @@ } } + f1 = net.minecraftforge.common.ForgeHooks.onLivingDamage(this, p_21240_, f1); if (f1 != 0.0F) { - this.m_21231_().m_289194_(p_21240_, f1); - this.m_21153_(this.m_21223_() - f1); + this.getCombatTracker().recordDamage(p_21240_, f1); + this.setHealth(this.getHealth() - f1); @@ -1684,6 +_,8 @@ } - public void m_21011_(InteractionHand p_21012_, boolean p_21013_) { -+ ItemStack stack = this.m_21120_(p_21012_); -+ if (!stack.m_41619_() && stack.onEntitySwing(this)) return; - if (!this.f_20911_ || this.f_20913_ >= this.m_21304_() / 2 || this.f_20913_ < 0) { - this.f_20913_ = -1; - this.f_20911_ = true; + public void swing(InteractionHand p_21012_, boolean p_21013_) { ++ ItemStack stack = this.getItemInHand(p_21012_); ++ if (!stack.isEmpty() && stack.onEntitySwing(this)) return; + if (!this.swinging || this.swingTime >= this.getCurrentSwingDuration() / 2 || this.swingTime < 0) { + this.swingTime = -1; + this.swinging = true; @@ -1794,8 +_,10 @@ - private void m_21312_() { - ItemStack itemstack = this.m_6844_(EquipmentSlot.OFFHAND); -- this.m_8061_(EquipmentSlot.OFFHAND, this.m_6844_(EquipmentSlot.MAINHAND)); -- this.m_8061_(EquipmentSlot.MAINHAND, itemstack); + private void swapHandItems() { + ItemStack itemstack = this.getItemBySlot(EquipmentSlot.OFFHAND); +- this.setItemSlot(EquipmentSlot.OFFHAND, this.getItemBySlot(EquipmentSlot.MAINHAND)); +- this.setItemSlot(EquipmentSlot.MAINHAND, itemstack); + var event = net.minecraftforge.common.ForgeHooks.onLivingSwapHandItems(this); + if (event.isCanceled()) return; -+ this.m_8061_(EquipmentSlot.OFFHAND, event.getItemSwappedToOffHand()); -+ this.m_8061_(EquipmentSlot.MAINHAND, event.getItemSwappedToMainHand()); ++ this.setItemSlot(EquipmentSlot.OFFHAND, event.getItemSwappedToOffHand()); ++ this.setItemSlot(EquipmentSlot.MAINHAND, event.getItemSwappedToMainHand()); } - protected void m_6088_() { + protected void onBelowWorld() { @@ -1985,14 +_,17 @@ } - this.f_19812_ = true; + this.hasImpulse = true; + net.minecraftforge.common.ForgeHooks.onLivingJump(this); } + @Deprecated // FORGE: use sinkInFluid instead - protected void m_21208_() { -- this.m_20256_(this.m_20184_().m_82520_(0.0D, (double)-0.04F, 0.0D)); + protected void goDownInWater() { +- this.setDeltaMovement(this.getDeltaMovement().add(0.0D, (double)-0.04F, 0.0D)); + this.sinkInFluid(net.minecraftforge.common.ForgeMod.WATER_TYPE.get()); } + @Deprecated // FORGE: use jumpInFluid instead - protected void m_203347_(TagKey p_204043_) { -- this.m_20256_(this.m_20184_().m_82520_(0.0D, (double)0.04F, 0.0D)); -+ this.m_20256_(this.m_20184_().m_82520_(0.0D, (double)0.04F * this.m_21051_(net.minecraftforge.common.ForgeMod.SWIM_SPEED.get()).m_22135_(), 0.0D)); + protected void jumpInLiquid(TagKey p_204043_) { +- this.setDeltaMovement(this.getDeltaMovement().add(0.0D, (double)0.04F, 0.0D)); ++ this.setDeltaMovement(this.getDeltaMovement().add(0.0D, (double)0.04F * this.getAttribute(net.minecraftforge.common.ForgeMod.SWIM_SPEED.get()).getValue(), 0.0D)); } - protected float m_6108_() { + protected float getWaterSlowDown() { @@ -2006,13 +_,19 @@ - public void m_7023_(Vec3 p_21280_) { - if (this.m_6109_()) { + public void travel(Vec3 p_21280_) { + if (this.isControlledByLocalInstance()) { double d0 = 0.08D; -+ AttributeInstance gravity = this.m_21051_(net.minecraftforge.common.ForgeMod.ENTITY_GRAVITY.get()); - boolean flag = this.m_20184_().f_82480_ <= 0.0D; - if (flag && this.m_21023_(MobEffects.f_19591_)) { ++ AttributeInstance gravity = this.getAttribute(net.minecraftforge.common.ForgeMod.ENTITY_GRAVITY.get()); + boolean flag = this.getDeltaMovement().y <= 0.0D; + if (flag && this.hasEffect(MobEffects.SLOW_FALLING)) { - d0 = 0.01D; -+ if (!gravity.m_22109_(SLOW_FALLING)) -+ gravity.m_22118_(SLOW_FALLING); -+ } else if (gravity.m_22109_(SLOW_FALLING)) { -+ gravity.m_22120_(SLOW_FALLING.m_22209_()); ++ if (!gravity.hasModifier(SLOW_FALLING)) ++ gravity.addTransientModifier(SLOW_FALLING); ++ } else if (gravity.hasModifier(SLOW_FALLING)) { ++ gravity.removeModifier(SLOW_FALLING.getId()); } -+ d0 = gravity.m_22135_(); ++ d0 = gravity.getValue(); - FluidState fluidstate = this.m_9236_().m_6425_(this.m_20183_()); -- if (this.m_20069_() && this.m_6129_() && !this.m_203441_(fluidstate)) { -+ if ((this.m_20069_() || (this.isInFluidType(fluidstate) && fluidstate.getFluidType() != net.minecraftforge.common.ForgeMod.LAVA_TYPE.get())) && this.m_6129_() && !this.m_203441_(fluidstate)) { -+ if (this.m_20069_() || (this.isInFluidType(fluidstate) && !this.moveInFluid(fluidstate, p_21280_, d0))) { - double d9 = this.m_20186_(); - float f4 = this.m_20142_() ? 0.9F : this.m_6108_(); + FluidState fluidstate = this.level().getFluidState(this.blockPosition()); +- if (this.isInWater() && this.isAffectedByFluids() && !this.canStandOnFluid(fluidstate)) { ++ if ((this.isInWater() || (this.isInFluidType(fluidstate) && fluidstate.getFluidType() != net.minecraftforge.common.ForgeMod.LAVA_TYPE.get())) && this.isAffectedByFluids() && !this.canStandOnFluid(fluidstate)) { ++ if (this.isInWater() || (this.isInFluidType(fluidstate) && !this.moveInFluid(fluidstate, p_21280_, d0))) { + double d9 = this.getY(); + float f4 = this.isSprinting() ? 0.9F : this.getWaterSlowDown(); float f5 = 0.02F; @@ -2034,6 +_,7 @@ f4 = 0.96F; } -+ f5 *= (float)this.m_21051_(net.minecraftforge.common.ForgeMod.SWIM_SPEED.get()).m_22135_(); - this.m_19920_(f5, p_21280_); - this.m_6478_(MoverType.SELF, this.m_20184_()); - Vec3 vec36 = this.m_20184_(); ++ f5 *= (float)this.getAttribute(net.minecraftforge.common.ForgeMod.SWIM_SPEED.get()).getValue(); + this.moveRelative(f5, p_21280_); + this.move(MoverType.SELF, this.getDeltaMovement()); + Vec3 vec36 = this.getDeltaMovement(); @@ -2047,6 +_,7 @@ - if (this.f_19862_ && this.m_20229_(vec32.f_82479_, vec32.f_82480_ + (double)0.6F - this.m_20186_() + d9, vec32.f_82481_)) { - this.m_20334_(vec32.f_82479_, (double)0.3F, vec32.f_82481_); + if (this.horizontalCollision && this.isFree(vec32.x, vec32.y + (double)0.6F - this.getY() + d9, vec32.z)) { + this.setDeltaMovement(vec32.x, (double)0.3F, vec32.z); } + } - } else if (this.m_20077_() && this.m_6129_() && !this.m_203441_(fluidstate)) { - double d8 = this.m_20186_(); - this.m_19920_(0.02F, p_21280_); + } else if (this.isInLava() && this.isAffectedByFluids() && !this.canStandOnFluid(fluidstate)) { + double d8 = this.getY(); + this.moveRelative(0.02F, p_21280_); @@ -2109,7 +_,7 @@ } } else { - BlockPos blockpos = this.m_20099_(); -- float f2 = this.m_9236_().m_8055_(blockpos).m_60734_().m_49958_(); -+ float f2 = this.m_9236_().m_8055_(this.m_20099_()).getFriction(m_9236_(), this.m_20099_(), this); - float f3 = this.m_20096_() ? f2 * 0.91F : 0.91F; - Vec3 vec35 = this.m_21074_(p_21280_, f2); - double d2 = vec35.f_82480_; + BlockPos blockpos = this.getBlockPosBelowThatAffectsMyMovement(); +- float f2 = this.level().getBlockState(blockpos).getBlock().getFriction(); ++ float f2 = this.level().getBlockState(this.getBlockPosBelowThatAffectsMyMovement()).getFriction(level(), this.getBlockPosBelowThatAffectsMyMovement(), this); + float f3 = this.onGround() ? f2 * 0.91F : 0.91F; + Vec3 vec35 = this.handleRelativeFrictionAndCalculateMovement(p_21280_, f2); + double d2 = vec35.y; @@ -2205,7 +_,7 @@ - double d0 = Mth.m_14008_(p_21298_.f_82479_, (double)-0.15F, (double)0.15F); - double d1 = Mth.m_14008_(p_21298_.f_82481_, (double)-0.15F, (double)0.15F); - double d2 = Math.max(p_21298_.f_82480_, (double)-0.15F); -- if (d2 < 0.0D && !this.m_146900_().m_60713_(Blocks.f_50616_) && this.m_5791_() && this instanceof Player) { -+ if (d2 < 0.0D && !this.m_146900_().isScaffolding(this) && this.m_5791_() && this instanceof Player) { + double d0 = Mth.clamp(p_21298_.x, (double)-0.15F, (double)0.15F); + double d1 = Mth.clamp(p_21298_.z, (double)-0.15F, (double)0.15F); + double d2 = Math.max(p_21298_.y, (double)-0.15F); +- if (d2 < 0.0D && !this.getFeetBlockState().is(Blocks.SCAFFOLDING) && this.isSuppressingSlidingDownLadder() && this instanceof Player) { ++ if (d2 < 0.0D && !this.getFeetBlockState().isScaffolding(this) && this.isSuppressingSlidingDownLadder() && this instanceof Player) { d2 = 0.0D; } @@ -2237,6 +_,7 @@ } - public void m_8119_() { + public void tick() { + if (net.minecraftforge.common.ForgeHooks.onLivingTick(this)) return; - super.m_8119_(); - this.m_21329_(); - this.m_21333_(); + super.tick(); + this.updatingUsingItem(); + this.updateSwimAmount(); @@ -2389,6 +_,7 @@ - ItemStack itemstack1 = this.m_6844_(equipmentslot); - if (this.m_246525_(itemstack, itemstack1)) { + ItemStack itemstack1 = this.getItemBySlot(equipmentslot); + if (this.equipmentHasChanged(itemstack, itemstack1)) { + net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.event.entity.living.LivingEquipmentChangeEvent(this, equipmentslot, itemstack, itemstack1)); if (map == null) { map = Maps.newEnumMap(EquipmentSlot.class); } @@ -2527,6 +_,10 @@ - this.m_9236_().m_46473_().m_6180_("jump"); - if (this.f_20899_ && this.m_6129_()) { + this.level().getProfiler().push("jump"); + if (this.jumping && this.isAffectedByFluids()) { double d3; + var fluidType = this.getMaxHeightFluidType(); + if (!fluidType.isAir()) + d3 = this.getFluidTypeHeight(fluidType); + else - if (this.m_20077_()) { - d3 = this.m_204036_(FluidTags.f_13132_); + if (this.isInLava()) { + d3 = this.getFluidHeight(FluidTags.LAVA); } else { @@ -2537,15 +_,17 @@ - double d4 = this.m_20204_(); - if (!flag || this.m_20096_() && !(d3 > d4)) { - if (!this.m_20077_() || this.m_20096_() && !(d3 > d4)) { -+ if (fluidType.isAir() || this.m_20096_() && !(d3 > d4)) { - if ((this.m_20096_() || flag && d3 <= d4) && this.f_20954_ == 0) { - this.m_6135_(); - this.f_20954_ = 10; + double d4 = this.getFluidJumpThreshold(); + if (!flag || this.onGround() && !(d3 > d4)) { + if (!this.isInLava() || this.onGround() && !(d3 > d4)) { ++ if (fluidType.isAir() || this.onGround() && !(d3 > d4)) { + if ((this.onGround() || flag && d3 <= d4) && this.noJumpDelay == 0) { + this.jumpFromGround(); + this.noJumpDelay = 10; } + } else this.jumpInFluid(fluidType); } else { -- this.m_203347_(FluidTags.f_13132_); +- this.jumpInLiquid(FluidTags.LAVA); + this.jumpInFluid(net.minecraftforge.common.ForgeMod.LAVA_TYPE.get()); } } else { -- this.m_203347_(FluidTags.f_13131_); +- this.jumpInLiquid(FluidTags.WATER); + this.jumpInFluid(net.minecraftforge.common.ForgeMod.WATER_TYPE.get()); } } else { - this.f_20954_ = 0; + this.noJumpDelay = 0; @@ -2614,6 +_,8 @@ - boolean flag = this.m_20291_(7); - if (flag && !this.m_20096_() && !this.m_20159_() && !this.m_21023_(MobEffects.f_19620_)) { - ItemStack itemstack = this.m_6844_(EquipmentSlot.CHEST); -+ flag = itemstack.canElytraFly(this) && itemstack.elytraFlightTick(this, this.f_20937_); + boolean flag = this.getSharedFlag(7); + if (flag && !this.onGround() && !this.isPassenger() && !this.hasEffect(MobEffects.LEVITATION)) { + ItemStack itemstack = this.getItemBySlot(EquipmentSlot.CHEST); ++ flag = itemstack.canElytraFly(this) && itemstack.elytraFlightTick(this, this.fallFlyTicks); + if (false) //Forge: Moved to ElytraItem - if (itemstack.m_150930_(Items.f_42741_) && ElytraItem.m_41140_(itemstack)) { + if (itemstack.is(Items.ELYTRA) && ElytraItem.isFlyEnabled(itemstack)) { flag = true; - int i = this.f_20937_ + 1; + int i = this.fallFlyTicks + 1; @@ -2863,8 +_,11 @@ - private void m_21329_() { - if (this.m_6117_()) { -- if (ItemStack.m_41656_(this.m_21120_(this.m_7655_()), this.f_20935_)) { -- this.f_20935_ = this.m_21120_(this.m_7655_()); -+ ItemStack itemStack = this.m_21120_(this.m_7655_()); -+ if (net.minecraftforge.common.ForgeHooks.canContinueUsing(this.f_20935_, itemStack)) { -+ this.f_20935_ = itemStack; + private void updatingUsingItem() { + if (this.isUsingItem()) { +- if (ItemStack.isSameItem(this.getItemInHand(this.getUsedItemHand()), this.useItem)) { +- this.useItem = this.getItemInHand(this.getUsedItemHand()); ++ ItemStack itemStack = this.getItemInHand(this.getUsedItemHand()); ++ if (net.minecraftforge.common.ForgeHooks.canContinueUsing(this.useItem, itemStack)) { ++ this.useItem = itemStack; + } -+ if (itemStack == this.f_20935_) { - this.m_142106_(this.f_20935_); ++ if (itemStack == this.useItem) { + this.updateUsingItem(this.useItem); } else { - this.m_5810_(); + this.stopUsingItem(); @@ -2874,12 +_,15 @@ } - protected void m_142106_(ItemStack p_147201_) { -+ if (!p_147201_.m_41619_()) -+ this.f_20936_ = net.minecraftforge.event.ForgeEventFactory.onItemUseTick(this, p_147201_, this.m_21212_()); -+ if (this.m_21212_() > 0) - p_147201_.m_41731_(this.m_9236_(), this, this.m_21212_()); - if (this.m_21332_()) { - this.m_21137_(p_147201_, 5); + protected void updateUsingItem(ItemStack p_147201_) { ++ if (!p_147201_.isEmpty()) ++ this.useItemRemaining = net.minecraftforge.event.ForgeEventFactory.onItemUseTick(this, p_147201_, this.getUseItemRemainingTicks()); ++ if (this.getUseItemRemainingTicks() > 0) + p_147201_.onUseTick(this.level(), this, this.getUseItemRemainingTicks()); + if (this.shouldTriggerItemUseEffects()) { + this.triggerItemUseEffects(p_147201_, 5); } -- if (--this.f_20936_ == 0 && !this.m_9236_().f_46443_ && !p_147201_.m_41781_()) { -+ if (--this.f_20936_ <= 0 && !this.m_9236_().f_46443_ && !p_147201_.m_41781_()) { - this.m_8095_(); +- if (--this.useItemRemaining == 0 && !this.level().isClientSide && !p_147201_.useOnRelease()) { ++ if (--this.useItemRemaining <= 0 && !this.level().isClientSide && !p_147201_.useOnRelease()) { + this.completeUsingItem(); } @@ -2887,7 +_,7 @@ - private boolean m_21332_() { - int i = this.m_21212_(); -- FoodProperties foodproperties = this.f_20935_.m_41720_().m_41473_(); -+ FoodProperties foodproperties = this.f_20935_.getFoodProperties(this); - boolean flag = foodproperties != null && foodproperties.m_38748_(); - flag |= i <= this.f_20935_.m_41779_() - 7; + private boolean shouldTriggerItemUseEffects() { + int i = this.getUseItemRemainingTicks(); +- FoodProperties foodproperties = this.useItem.getItem().getFoodProperties(); ++ FoodProperties foodproperties = this.useItem.getFoodProperties(this); + boolean flag = foodproperties != null && foodproperties.isFastFood(); + flag |= i <= this.useItem.getUseDuration() - 7; return flag && i % 4 == 0; @@ -2917,8 +_,10 @@ - public void m_6672_(InteractionHand p_21159_) { - ItemStack itemstack = this.m_21120_(p_21159_); - if (!itemstack.m_41619_() && !this.m_6117_()) { -+ int duration = net.minecraftforge.event.ForgeEventFactory.onItemUseStart(this, itemstack, itemstack.m_41779_()); + public void startUsingItem(InteractionHand p_21159_) { + ItemStack itemstack = this.getItemInHand(p_21159_); + if (!itemstack.isEmpty() && !this.isUsingItem()) { ++ int duration = net.minecraftforge.event.ForgeEventFactory.onItemUseStart(this, itemstack, itemstack.getUseDuration()); + if (duration <= 0) return; - this.f_20935_ = itemstack; -- this.f_20936_ = itemstack.m_41779_(); -+ this.f_20936_ = duration; - if (!this.m_9236_().f_46443_) { - this.m_21155_(1, true); - this.m_21155_(2, p_21159_ == InteractionHand.OFF_HAND); + this.useItem = itemstack; +- this.useItemRemaining = itemstack.getUseDuration(); ++ this.useItemRemaining = duration; + if (!this.level().isClientSide) { + this.setLivingEntityFlag(1, true); + this.setLivingEntityFlag(2, p_21159_ == InteractionHand.OFF_HAND); @@ -2979,6 +_,9 @@ - vec31 = vec31.m_82496_(-this.m_146909_() * ((float)Math.PI / 180F)); - vec31 = vec31.m_82524_(-this.m_146908_() * ((float)Math.PI / 180F)); - vec31 = vec31.m_82520_(this.m_20185_(), this.m_20188_(), this.m_20189_()); -+ if (this.m_9236_() instanceof ServerLevel) //Forge: Fix MC-2518 spawnParticle is nooped on server, need to use server specific variant -+ ((ServerLevel) this.m_9236_()).m_8767_(new ItemParticleOption(ParticleTypes.f_123752_, p_21061_), vec31.f_82479_, vec31.f_82480_, vec31.f_82481_, 1, vec3.f_82479_, vec3.f_82480_ + 0.05D, vec3.f_82481_, 0.0D); + vec31 = vec31.xRot(-this.getXRot() * ((float)Math.PI / 180F)); + vec31 = vec31.yRot(-this.getYRot() * ((float)Math.PI / 180F)); + vec31 = vec31.add(this.getX(), this.getEyeY(), this.getZ()); ++ if (this.level() instanceof ServerLevel) //Forge: Fix MC-2518 spawnParticle is nooped on server, need to use server specific variant ++ ((ServerLevel) this.level()).sendParticles(new ItemParticleOption(ParticleTypes.ITEM, p_21061_), vec31.x, vec31.y, vec31.z, 1, vec3.x, vec3.y + 0.05D, vec3.z, 0.0D); + else - this.m_9236_().m_7106_(new ItemParticleOption(ParticleTypes.f_123752_, p_21061_), vec31.f_82479_, vec31.f_82480_, vec31.f_82481_, vec3.f_82479_, vec3.f_82480_ + 0.05D, vec3.f_82481_); + this.level().addParticle(new ItemParticleOption(ParticleTypes.ITEM, p_21061_), vec31.x, vec31.y, vec31.z, vec3.x, vec3.y + 0.05D, vec3.z); } @@ -2992,7 +_,8 @@ } else { - if (!this.f_20935_.m_41619_() && this.m_6117_()) { - this.m_21137_(this.f_20935_, 16); -- ItemStack itemstack = this.f_20935_.m_41671_(this.m_9236_(), this); -+ ItemStack copy = this.f_20935_.m_41777_(); -+ ItemStack itemstack = net.minecraftforge.event.ForgeEventFactory.onItemUseFinish(this, copy, m_21212_(), this.f_20935_.m_41671_(this.m_9236_(), this)); - if (itemstack != this.f_20935_) { - this.m_21008_(interactionhand, itemstack); + if (!this.useItem.isEmpty() && this.isUsingItem()) { + this.triggerItemUseEffects(this.useItem, 16); +- ItemStack itemstack = this.useItem.finishUsingItem(this.level(), this); ++ ItemStack copy = this.useItem.copy(); ++ ItemStack itemstack = net.minecraftforge.event.ForgeEventFactory.onItemUseFinish(this, copy, getUseItemRemainingTicks(), this.useItem.finishUsingItem(this.level(), this)); + if (itemstack != this.useItem) { + this.setItemInHand(interactionhand, itemstack); } @@ -3018,7 +_,11 @@ - public void m_21253_() { - if (!this.f_20935_.m_41619_()) { -+ if (!net.minecraftforge.event.ForgeEventFactory.onUseItemStop(this, f_20935_, this.m_21212_())) { -+ ItemStack copy = this instanceof Player ? f_20935_.m_41777_() : null; - this.f_20935_.m_41674_(this.m_9236_(), this, this.m_21212_()); -+ if (copy != null && f_20935_.m_41619_()) net.minecraftforge.event.ForgeEventFactory.onPlayerDestroyItem((Player)this, copy, m_7655_()); + public void releaseUsingItem() { + if (!this.useItem.isEmpty()) { ++ if (!net.minecraftforge.event.ForgeEventFactory.onUseItemStop(this, useItem, this.getUseItemRemainingTicks())) { ++ ItemStack copy = this instanceof Player ? useItem.copy() : null; + this.useItem.releaseUsing(this.level(), this, this.getUseItemRemainingTicks()); ++ if (copy != null && useItem.isEmpty()) net.minecraftforge.event.ForgeEventFactory.onPlayerDestroyItem((Player)this, copy, getUsedItemHand()); + } - if (this.f_20935_.m_41781_()) { - this.m_21329_(); + if (this.useItem.useOnRelease()) { + this.updatingUsingItem(); } @@ -3028,6 +_,7 @@ } - public void m_5810_() { -+ if (this.m_6117_() && !this.f_20935_.m_41619_()) this.f_20935_.onStopUsing(this, f_20936_); - if (!this.m_9236_().f_46443_) { - boolean flag = this.m_6117_(); - this.m_21155_(1, false); + public void stopUsingItem() { ++ if (this.isUsingItem() && !this.useItem.isEmpty()) this.useItem.onStopUsing(this, useItemRemaining); + if (!this.level().isClientSide) { + boolean flag = this.isUsingItem(); + this.setLivingEntityFlag(1, false); @@ -3043,7 +_,7 @@ - public boolean m_21254_() { - if (this.m_6117_() && !this.f_20935_.m_41619_()) { - Item item = this.f_20935_.m_41720_(); -- if (item.m_6164_(this.f_20935_) != UseAnim.BLOCK) { -+ if (!this.f_20935_.canPerformAction(net.minecraftforge.common.ToolActions.SHIELD_BLOCK)) { + public boolean isBlocking() { + if (this.isUsingItem() && !this.useItem.isEmpty()) { + Item item = this.useItem.getItem(); +- if (item.getUseAnimation(this.useItem) != UseAnim.BLOCK) { ++ if (!this.useItem.canPerformAction(net.minecraftforge.common.ToolActions.SHIELD_BLOCK)) { return false; } else { - return item.m_8105_(this.f_20935_) - this.f_20936_ >= 5; + return item.getUseDuration(this.useItem) - this.useItemRemaining >= 5; @@ -3174,8 +_,8 @@ } - BlockState blockstate = this.m_9236_().m_8055_(p_21141_); -- if (blockstate.m_60734_() instanceof BedBlock) { -- this.m_9236_().m_7731_(p_21141_, blockstate.m_61124_(BedBlock.f_49441_, Boolean.valueOf(true)), 3); -+ if (blockstate.isBed(m_9236_(), p_21141_, this)) { -+ blockstate.setBedOccupied(m_9236_(), p_21141_, this, true); + BlockState blockstate = this.level().getBlockState(p_21141_); +- if (blockstate.getBlock() instanceof BedBlock) { +- this.level().setBlock(p_21141_, blockstate.setValue(BedBlock.OCCUPIED, Boolean.valueOf(true)), 3); ++ if (blockstate.isBed(level(), p_21141_, this)) { ++ blockstate.setBedOccupied(level(), p_21141_, this, true); } - this.m_20124_(Pose.SLEEPING); + this.setPose(Pose.SLEEPING); @@ -3191,16 +_,16 @@ - private boolean m_21334_() { - return this.m_21257_().map((p_296657_) -> { -- return this.m_9236_().m_8055_(p_296657_).m_60734_() instanceof BedBlock; + private boolean checkBedExists() { + return this.getSleepingPos().map((p_296657_) -> { +- return this.level().getBlockState(p_296657_).getBlock() instanceof BedBlock; + return net.minecraftforge.event.ForgeEventFactory.fireSleepingLocationCheck(this, p_296657_); }).orElse(false); } - public void m_5796_() { - this.m_21257_().filter(this.m_9236_()::m_46805_).ifPresent((p_261435_) -> { - BlockState blockstate = this.m_9236_().m_8055_(p_261435_); -- if (blockstate.m_60734_() instanceof BedBlock) { -+ if (blockstate.isBed(m_9236_(), p_261435_, this)) { - Direction direction = blockstate.m_61143_(BedBlock.f_54117_); -- this.m_9236_().m_7731_(p_261435_, blockstate.m_61124_(BedBlock.f_49441_, Boolean.valueOf(false)), 3); -+ blockstate.setBedOccupied(m_9236_(), p_261435_, this, false); - Vec3 vec31 = BedBlock.m_260958_(this.m_6095_(), this.m_9236_(), p_261435_, direction, this.m_146908_()).orElseGet(() -> { - BlockPos blockpos = p_261435_.m_7494_(); - return new Vec3((double)blockpos.m_123341_() + 0.5D, (double)blockpos.m_123342_() + 0.1D, (double)blockpos.m_123343_() + 0.5D); + public void stopSleeping() { + this.getSleepingPos().filter(this.level()::hasChunkAt).ifPresent((p_261435_) -> { + BlockState blockstate = this.level().getBlockState(p_261435_); +- if (blockstate.getBlock() instanceof BedBlock) { ++ if (blockstate.isBed(level(), p_261435_, this)) { + Direction direction = blockstate.getValue(BedBlock.FACING); +- this.level().setBlock(p_261435_, blockstate.setValue(BedBlock.OCCUPIED, Boolean.valueOf(false)), 3); ++ blockstate.setBedOccupied(level(), p_261435_, this, false); + Vec3 vec31 = BedBlock.findStandUpPosition(this.getType(), this.level(), p_261435_, direction, this.getYRot()).orElseGet(() -> { + BlockPos blockpos = p_261435_.above(); + return new Vec3((double)blockpos.getX() + 0.5D, (double)blockpos.getY() + 0.1D, (double)blockpos.getZ() + 0.5D); @@ -3222,7 +_,9 @@ @Nullable - public Direction m_21259_() { - BlockPos blockpos = this.m_21257_().orElse((BlockPos)null); -- return blockpos != null ? BedBlock.m_49485_(this.m_9236_(), blockpos) : null; + public Direction getBedOrientation() { + BlockPos blockpos = this.getSleepingPos().orElse((BlockPos)null); +- return blockpos != null ? BedBlock.getBedOrientation(this.level(), blockpos) : null; + if (blockpos == null) return Direction.UP; -+ BlockState state = this.m_9236_().m_8055_(blockpos); -+ return !state.isBed(m_9236_(), blockpos, this) ? Direction.UP : state.getBedDirection(m_9236_(), blockpos); ++ BlockState state = this.level().getBlockState(blockpos); ++ return !state.isBed(level(), blockpos, this) ? Direction.UP : state.getBedDirection(level(), blockpos); } - public boolean m_5830_() { + public boolean isInWall() { @@ -3238,7 +_,7 @@ } - public ItemStack m_6298_(ItemStack p_21272_) { -- return ItemStack.f_41583_; -+ return net.minecraftforge.common.ForgeHooks.getProjectile(this, p_21272_, ItemStack.f_41583_); + public ItemStack getProjectile(ItemStack p_21272_) { +- return ItemStack.EMPTY; ++ return net.minecraftforge.common.ForgeHooks.getProjectile(this, p_21272_, ItemStack.EMPTY); } - public ItemStack m_5584_(Level p_21067_, ItemStack p_21068_) { + public ItemStack eat(Level p_21067_, ItemStack p_21068_) { @@ -3258,7 +_,7 @@ - private void m_21063_(ItemStack p_21064_, Level p_21065_, LivingEntity p_21066_) { - Item item = p_21064_.m_41720_(); - if (item.m_41472_()) { -- for(Pair pair : item.m_41473_().m_38749_()) { -+ for(Pair pair : p_21064_.getFoodProperties(this).m_38749_()) { - if (!p_21065_.f_46443_ && pair.getFirst() != null && p_21065_.f_46441_.m_188501_() < pair.getSecond()) { - p_21066_.m_7292_(new MobEffectInstance(pair.getFirst())); + private void addEatEffect(ItemStack p_21064_, Level p_21065_, LivingEntity p_21066_) { + Item item = p_21064_.getItem(); + if (item.isEdible()) { +- for(Pair pair : item.getFoodProperties().getEffects()) { ++ for(Pair pair : p_21064_.getFoodProperties(this).getEffects()) { + if (!p_21065_.isClientSide && pair.getFirst() != null && p_21065_.random.nextFloat() < pair.getSecond()) { + p_21066_.addEffect(new MobEffectInstance(pair.getFirst())); } @@ -3294,6 +_,64 @@ - this.m_21166_(p_21191_ == InteractionHand.MAIN_HAND ? EquipmentSlot.MAINHAND : EquipmentSlot.OFFHAND); + this.broadcastBreakEvent(p_21191_ == InteractionHand.MAIN_HAND ? EquipmentSlot.MAINHAND : EquipmentSlot.OFFHAND); } + /* ==== FORGE START ==== */ @@ -701,17 +701,17 @@ + * @param curativeItem The itemstack we are using to cure potion effects + */ + public boolean curePotionEffects(ItemStack curativeItem) { -+ if (this.m_9236_().f_46443_) ++ if (this.level().isClientSide) + return false; + boolean ret = false; -+ Iterator itr = this.f_20945_.values().iterator(); ++ Iterator itr = this.activeEffects.values().iterator(); + while (itr.hasNext()) { + MobEffectInstance effect = itr.next(); + if (effect.isCurativeItem(curativeItem) && !net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.event.entity.living.MobEffectEvent.Remove(this, effect))) { -+ this.m_7285_(effect); ++ this.onEffectRemoved(effect); + itr.remove(); + ret = true; -+ this.f_20948_ = true; ++ this.effectsDirty = true; + } + } + return ret; @@ -732,10 +732,10 @@ + + @Override + public net.minecraftforge.common.util.LazyOptional getCapability(net.minecraftforge.common.capabilities.Capability capability, @Nullable Direction facing) { -+ if (this.m_6084_() && capability == net.minecraftforge.common.capabilities.ForgeCapabilities.ITEM_HANDLER) { ++ if (this.isAlive() && capability == net.minecraftforge.common.capabilities.ForgeCapabilities.ITEM_HANDLER) { + if (facing == null) return handlers[2].cast(); -+ else if (facing.m_122434_().m_122478_()) return handlers[0].cast(); -+ else if (facing.m_122434_().m_122479_()) return handlers[1].cast(); ++ else if (facing.getAxis().isVertical()) return handlers[0].cast(); ++ else if (facing.getAxis().isHorizontal()) return handlers[1].cast(); + } + return super.getCapability(capability, facing); + } @@ -753,15 +753,15 @@ + handlers = net.minecraftforge.items.wrapper.EntityEquipmentInvWrapper.create(this); + } + - public AABB m_6921_() { - if (this.m_6844_(EquipmentSlot.HEAD).m_150930_(Items.f_42683_)) { + public AABB getBoundingBoxForCulling() { + if (this.getItemBySlot(EquipmentSlot.HEAD).is(Items.DRAGON_HEAD)) { float f = 0.5F; @@ -3304,6 +_,8 @@ } - public static EquipmentSlot m_147233_(ItemStack p_147234_) { + public static EquipmentSlot getEquipmentSlotForItem(ItemStack p_147234_) { + final EquipmentSlot slot = p_147234_.getEquipmentSlot(); + if (slot != null) return slot; // FORGE: Allow modders to set a non-default equipment slot for a stack; e.g. a non-armor chestplate-slot item - Equipable equipable = Equipable.m_269088_(p_147234_); - return equipable != null ? equipable.m_40402_() : EquipmentSlot.MAINHAND; + Equipable equipable = Equipable.get(p_147234_); + return equipable != null ? equipable.getEquipmentSlot() : EquipmentSlot.MAINHAND; } diff --git a/patches/minecraft/net/minecraft/world/entity/Mob.java.patch b/patches/minecraft/net/minecraft/world/entity/Mob.java.patch index a5b9911b89..57082a37e6 100644 --- a/patches/minecraft/net/minecraft/world/entity/Mob.java.patch +++ b/patches/minecraft/net/minecraft/world/entity/Mob.java.patch @@ -1,9 +1,9 @@ --- a/net/minecraft/world/entity/Mob.java +++ b/net/minecraft/world/entity/Mob.java @@ -117,6 +_,9 @@ - private CompoundTag f_21359_; - private BlockPos f_21360_ = BlockPos.f_121853_; - private float f_21341_ = -1.0F; + private CompoundTag leashInfoTag; + private BlockPos restrictCenter = BlockPos.ZERO; + private float restrictRadius = -1.0F; + @Nullable + private MobSpawnType spawnType; + private boolean spawnCancelled = false; @@ -13,66 +13,66 @@ @@ -231,7 +_,10 @@ } - public void m_6710_(@Nullable LivingEntity p_21544_) { -- this.f_21362_ = p_21544_; + public void setTarget(@Nullable LivingEntity p_21544_) { +- this.target = p_21544_; + net.minecraftforge.event.entity.living.LivingChangeTargetEvent changeTargetEvent = net.minecraftforge.common.ForgeHooks.onLivingChangeTarget(this, p_21544_, net.minecraftforge.event.entity.living.LivingChangeTargetEvent.LivingTargetType.MOB_TARGET); + if(!changeTargetEvent.isCanceled()) { -+ this.f_21362_ = changeTargetEvent.getNewTarget(); ++ this.target = changeTargetEvent.getNewTarget(); + } } - public boolean m_6549_(EntityType p_21399_) { + public boolean canAttackType(EntityType p_21399_) { @@ -429,6 +_,9 @@ - p_21484_.m_128379_("NoAI", this.m_21525_()); + p_21484_.putBoolean("NoAI", this.isNoAi()); } + if (this.spawnType != null) { -+ p_21484_.m_128359_("forge:spawn_type", this.spawnType.name()); ++ p_21484_.putString("forge:spawn_type", this.spawnType.name()); + } } - public void m_7378_(CompoundTag p_21450_) { + public void readAdditionalSaveData(CompoundTag p_21450_) { @@ -481,6 +_,14 @@ } - this.m_21557_(p_21450_.m_128471_("NoAI")); + this.setNoAi(p_21450_.getBoolean("NoAI")); + -+ if (p_21450_.m_128441_("forge:spawn_type")) { ++ if (p_21450_.contains("forge:spawn_type")) { + try { -+ this.spawnType = MobSpawnType.valueOf(p_21450_.m_128461_("forge:spawn_type")); ++ this.spawnType = MobSpawnType.valueOf(p_21450_.getString("forge:spawn_type")); + } catch (Exception ex) { -+ p_21450_.m_128473_("forge:spawn_type"); ++ p_21450_.remove("forge:spawn_type"); + } + } } - protected void m_7625_(DamageSource p_21389_, boolean p_21390_) { + protected void dropFromLootTable(DamageSource p_21389_, boolean p_21390_) { @@ -520,9 +_,9 @@ - public void m_8107_() { - super.m_8107_(); - this.m_9236_().m_46473_().m_6180_("looting"); -- if (!this.m_9236_().f_46443_ && this.m_21531_() && this.m_6084_() && !this.f_20890_ && this.m_9236_().m_46469_().m_46207_(GameRules.f_46132_)) { - Vec3i vec3i = this.m_213552_(); + public void aiStep() { + super.aiStep(); + this.level().getProfiler().push("looting"); +- if (!this.level().isClientSide && this.canPickUpLoot() && this.isAlive() && !this.dead && this.level().getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) { + Vec3i vec3i = this.getPickupReach(); -+ if (!this.m_9236_().f_46443_ && this.m_21531_() && this.m_6084_() && !this.f_20890_ && net.minecraftforge.event.ForgeEventFactory.getMobGriefingEvent(this.m_9236_(), this)) { - for(ItemEntity itementity : this.m_9236_().m_45976_(ItemEntity.class, this.m_20191_().m_82377_((double)vec3i.m_123341_(), (double)vec3i.m_123342_(), (double)vec3i.m_123343_()))) { - if (!itementity.m_213877_() && !itementity.m_32055_().m_41619_() && !itementity.m_32063_() && this.m_7243_(itementity.m_32055_())) { - this.m_7581_(itementity); ++ if (!this.level().isClientSide && this.canPickUpLoot() && this.isAlive() && !this.dead && net.minecraftforge.event.ForgeEventFactory.getMobGriefingEvent(this.level(), this)) { + for(ItemEntity itementity : this.level().getEntitiesOfClass(ItemEntity.class, this.getBoundingBox().inflate((double)vec3i.getX(), (double)vec3i.getY(), (double)vec3i.getZ()))) { + if (!itementity.isRemoved() && !itementity.getItem().isEmpty() && !itementity.hasPickUpDelay() && this.wantsToPickUp(itementity.getItem())) { + this.pickUpItem(itementity); @@ -698,6 +_,14 @@ - this.m_146870_(); - } else if (!this.m_21532_() && !this.m_8023_()) { - Entity entity = this.m_9236_().m_45930_(this, -1.0D); -+ net.minecraftforge.eventbus.api.Event.Result result = net.minecraftforge.event.ForgeEventFactory.canEntityDespawn(this, (ServerLevel) this.m_9236_()); + this.discard(); + } else if (!this.isPersistenceRequired() && !this.requiresCustomPersistence()) { + Entity entity = this.level().getNearestPlayer(this, -1.0D); ++ net.minecraftforge.eventbus.api.Event.Result result = net.minecraftforge.event.ForgeEventFactory.canEntityDespawn(this, (ServerLevel) this.level()); + if (result == net.minecraftforge.eventbus.api.Event.Result.DENY) { -+ f_20891_ = 0; ++ noActionTime = 0; + entity = null; + } else if (result == net.minecraftforge.eventbus.api.Event.Result.ALLOW) { -+ this.m_146870_(); ++ this.discard(); + entity = null; + } if (entity != null) { - double d0 = entity.m_20280_(this); - int i = this.m_6095_().m_20674_().m_21611_(); + double d0 = entity.distanceToSqr(this); + int i = this.getType().getCategory().getDespawnDistance(); @@ -1031,6 +_,16 @@ } @@ -88,10 +88,10 @@ + @Deprecated + @org.jetbrains.annotations.ApiStatus.OverrideOnly @Nullable - public SpawnGroupData m_6518_(ServerLevelAccessor p_21434_, DifficultyInstance p_21435_, MobSpawnType p_21436_, @Nullable SpawnGroupData p_21437_, @Nullable CompoundTag p_21438_) { - RandomSource randomsource = p_21434_.m_213780_(); + public SpawnGroupData finalizeSpawn(ServerLevelAccessor p_21434_, DifficultyInstance p_21435_, MobSpawnType p_21436_, @Nullable SpawnGroupData p_21437_, @Nullable CompoundTag p_21438_) { + RandomSource randomsource = p_21434_.getRandom(); @@ -1041,6 +_,7 @@ - this.m_21559_(false); + this.setLeftHanded(false); } + this.spawnType = p_21436_; @@ -103,16 +103,16 @@ } + @Deprecated // FORGE: use jumpInFluid instead - protected void m_203347_(TagKey p_204045_) { -+ this.jumpInLiquidInternal(() -> super.m_203347_(p_204045_)); + protected void jumpInLiquid(TagKey p_204045_) { ++ this.jumpInLiquidInternal(() -> super.jumpInLiquid(p_204045_)); + } + + private void jumpInLiquidInternal(Runnable onSuper) { - if (this.m_21573_().m_26576_()) { -- super.m_203347_(p_204045_); + if (this.getNavigation().canFloat()) { +- super.jumpInLiquid(p_204045_); + onSuper.run(); } else { - this.m_20256_(this.m_20184_().m_82520_(0.0D, 0.3D, 0.0D)); + this.setDeltaMovement(this.getDeltaMovement().add(0.0D, 0.3D, 0.0D)); } } @@ -122,12 +122,12 @@ + this.jumpInLiquidInternal(() -> super.jumpInFluid(type)); + } + - public void m_147272_() { - this.m_262441_((p_262562_) -> { + public void removeFreeWill() { + this.removeAllGoals((p_262562_) -> { return true; @@ -1460,5 +_,40 @@ - public ItemStack m_142340_() { - SpawnEggItem spawneggitem = SpawnEggItem.m_43213_(this.m_6095_()); + public ItemStack getPickResult() { + SpawnEggItem spawneggitem = SpawnEggItem.byId(this.getType()); return spawneggitem == null ? null : new ItemStack(spawneggitem); + } + diff --git a/patches/minecraft/net/minecraft/world/entity/MobCategory.java.patch b/patches/minecraft/net/minecraft/world/entity/MobCategory.java.patch index ec23422654..889aaebeec 100644 --- a/patches/minecraft/net/minecraft/world/entity/MobCategory.java.patch +++ b/patches/minecraft/net/minecraft/world/entity/MobCategory.java.patch @@ -13,16 +13,16 @@ WATER_AMBIENT("water_ambient", 20, true, false, 64), MISC("misc", -1, true, true, 128); -- public static final Codec f_21584_ = StringRepresentable.m_216439_(MobCategory::values); -+ public static final Codec f_21584_ = net.minecraftforge.common.IExtensibleEnum.createCodecForExtensibleEnum(MobCategory::values, MobCategory::byName); -+ private static final java.util.Map BY_NAME = java.util.Arrays.stream(values()).collect(java.util.stream.Collectors.toMap(MobCategory::m_21607_, mobCategory -> mobCategory)); - private final int f_21586_; - private final boolean f_21587_; - private final boolean f_21588_; +- public static final Codec CODEC = StringRepresentable.fromEnum(MobCategory::values); ++ public static final Codec CODEC = net.minecraftforge.common.IExtensibleEnum.createCodecForExtensibleEnum(MobCategory::values, MobCategory::byName); ++ private static final java.util.Map BY_NAME = java.util.Arrays.stream(values()).collect(java.util.stream.Collectors.toMap(MobCategory::getName, mobCategory -> mobCategory)); + private final int max; + private final boolean isFriendly; + private final boolean isPersistent; @@ -47,6 +_,21 @@ - public boolean m_21610_() { - return this.f_21588_; + public boolean isPersistent() { + return this.isPersistent; + } + + public static MobCategory create(String name, String id, int maxNumberOfCreatureIn, boolean isPeacefulCreatureIn, boolean isAnimalIn, int despawnDistance) { @@ -32,7 +32,7 @@ + @Override + @Deprecated + public void init() { -+ BY_NAME.put(this.m_21607_(), this); ++ BY_NAME.put(this.getName(), this); + } + + // Forge: Access enum members by name @@ -40,4 +40,4 @@ + return BY_NAME.get(name); } - public int m_21611_() { + public int getDespawnDistance() { diff --git a/patches/minecraft/net/minecraft/world/entity/Shearable.java.patch b/patches/minecraft/net/minecraft/world/entity/Shearable.java.patch index b3b180c7a4..45810abc09 100644 --- a/patches/minecraft/net/minecraft/world/entity/Shearable.java.patch +++ b/patches/minecraft/net/minecraft/world/entity/Shearable.java.patch @@ -7,8 +7,8 @@ +@Deprecated // Forge: Use IForgeShearable public interface Shearable { + @Deprecated // Forge: Use IForgeShearable - void m_5851_(SoundSource p_21749_); + void shear(SoundSource p_21749_); + @Deprecated // Forge: Use IForgeShearable - boolean m_6220_(); + boolean readyForShearing(); } diff --git a/patches/minecraft/net/minecraft/world/entity/SpawnPlacements.java.patch b/patches/minecraft/net/minecraft/world/entity/SpawnPlacements.java.patch index adadd074a7..522d993eae 100644 --- a/patches/minecraft/net/minecraft/world/entity/SpawnPlacements.java.patch +++ b/patches/minecraft/net/minecraft/world/entity/SpawnPlacements.java.patch @@ -2,24 +2,24 @@ +++ b/net/minecraft/world/entity/SpawnPlacements.java @@ -42,6 +_,7 @@ public class SpawnPlacements { - private static final Map, SpawnPlacements.Data> f_21750_ = Maps.newHashMap(); + private static final Map, SpawnPlacements.Data> DATA_BY_TYPE = Maps.newHashMap(); + @Deprecated // FORGE: use SpawnPlacementRegisterEvent to register and modify spawn placements - public static void m_21754_(EntityType p_21755_, SpawnPlacements.Type p_21756_, Heightmap.Types p_21757_, SpawnPlacements.SpawnPredicate p_21758_) { - SpawnPlacements.Data spawnplacements$data = f_21750_.put(p_21755_, new SpawnPlacements.Data(p_21757_, p_21756_, p_21758_)); + public static void register(EntityType p_21755_, SpawnPlacements.Type p_21756_, Heightmap.Types p_21757_, SpawnPlacements.SpawnPredicate p_21758_) { + SpawnPlacements.Data spawnplacements$data = DATA_BY_TYPE.put(p_21755_, new SpawnPlacements.Data(p_21757_, p_21756_, p_21758_)); if (spawnplacements$data != null) { @@ -61,7 +_,8 @@ - public static boolean m_217074_(EntityType p_217075_, ServerLevelAccessor p_217076_, MobSpawnType p_217077_, BlockPos p_217078_, RandomSource p_217079_) { - SpawnPlacements.Data spawnplacements$data = f_21750_.get(p_217075_); -- return spawnplacements$data == null || spawnplacements$data.f_21769_.m_217080_((EntityType)p_217075_, p_217076_, p_217077_, p_217078_, p_217079_); -+ boolean vanillaResult = spawnplacements$data == null || spawnplacements$data.f_21769_.m_217080_((EntityType)p_217075_, p_217076_, p_217077_, p_217078_, p_217079_); + public static boolean checkSpawnRules(EntityType p_217075_, ServerLevelAccessor p_217076_, MobSpawnType p_217077_, BlockPos p_217078_, RandomSource p_217079_) { + SpawnPlacements.Data spawnplacements$data = DATA_BY_TYPE.get(p_217075_); +- return spawnplacements$data == null || spawnplacements$data.predicate.test((EntityType)p_217075_, p_217076_, p_217077_, p_217078_, p_217079_); ++ boolean vanillaResult = spawnplacements$data == null || spawnplacements$data.predicate.test((EntityType)p_217075_, p_217076_, p_217077_, p_217078_, p_217079_); + return net.minecraftforge.event.ForgeEventFactory.checkSpawnPlacements(p_217075_, p_217076_, p_217077_, p_217078_, p_217079_, vanillaResult); } static { @@ -156,10 +_,35 @@ - boolean m_217080_(EntityType p_217081_, ServerLevelAccessor p_217082_, MobSpawnType p_217083_, BlockPos p_217084_, RandomSource p_217085_); + boolean test(EntityType p_217081_, ServerLevelAccessor p_217082_, MobSpawnType p_217083_, BlockPos p_217084_, RandomSource p_217085_); } - public static enum Type { @@ -50,8 +50,8 @@ + public static void fireSpawnPlacementEvent() + { + Map, net.minecraftforge.event.entity.SpawnPlacementRegisterEvent.MergedSpawnPredicate> map = Maps.newHashMap(); -+ f_21750_.forEach((type, data) -> map.put(type, new net.minecraftforge.event.entity.SpawnPlacementRegisterEvent.MergedSpawnPredicate<>(data.f_21769_, data.f_21768_, data.f_21767_))); ++ DATA_BY_TYPE.forEach((type, data) -> map.put(type, new net.minecraftforge.event.entity.SpawnPlacementRegisterEvent.MergedSpawnPredicate<>(data.predicate, data.placement, data.heightMap))); + net.minecraftforge.fml.ModLoader.get().postEvent(new net.minecraftforge.event.entity.SpawnPlacementRegisterEvent(map)); -+ map.forEach(((entityType, merged) -> f_21750_.put(entityType, new SpawnPlacements.Data(merged.getHeightmapType(), merged.getSpawnType(), merged.build())))); ++ map.forEach(((entityType, merged) -> DATA_BY_TYPE.put(entityType, new SpawnPlacements.Data(merged.getHeightmapType(), merged.getSpawnType(), merged.build())))); } } diff --git a/patches/minecraft/net/minecraft/world/entity/TamableAnimal.java.patch b/patches/minecraft/net/minecraft/world/entity/TamableAnimal.java.patch index b76396aa5d..981b16e829 100644 --- a/patches/minecraft/net/minecraft/world/entity/TamableAnimal.java.patch +++ b/patches/minecraft/net/minecraft/world/entity/TamableAnimal.java.patch @@ -3,18 +3,18 @@ @@ -186,11 +_,15 @@ } - public void m_6667_(DamageSource p_21809_) { + public void die(DamageSource p_21809_) { + // FORGE: Super moved to top so that death message would be cancelled properly -+ net.minecraft.network.chat.Component deathMessage = this.m_21231_().m_19293_(); -+ super.m_6667_(p_21809_); ++ net.minecraft.network.chat.Component deathMessage = this.getCombatTracker().getDeathMessage(); ++ super.die(p_21809_); + -+ if (this.f_20890_) - if (!this.m_9236_().f_46443_ && this.m_9236_().m_46469_().m_46207_(GameRules.f_46142_) && this.m_269323_() instanceof ServerPlayer) { -- this.m_269323_().m_213846_(this.m_21231_().m_19293_()); -+ this.m_269323_().m_213846_(deathMessage); ++ if (this.dead) + if (!this.level().isClientSide && this.level().getGameRules().getBoolean(GameRules.RULE_SHOWDEATHMESSAGES) && this.getOwner() instanceof ServerPlayer) { +- this.getOwner().sendSystemMessage(this.getCombatTracker().getDeathMessage()); ++ this.getOwner().sendSystemMessage(deathMessage); } -- super.m_6667_(p_21809_); +- super.die(p_21809_); } - public boolean m_21827_() { + public boolean isOrderedToSit() { diff --git a/patches/minecraft/net/minecraft/world/entity/ai/Brain.java.patch b/patches/minecraft/net/minecraft/world/entity/ai/Brain.java.patch index 68bb220fba..009c463db2 100644 --- a/patches/minecraft/net/minecraft/world/entity/ai/Brain.java.patch +++ b/patches/minecraft/net/minecraft/world/entity/ai/Brain.java.patch @@ -6,28 +6,28 @@ + public net.minecraftforge.common.util.BrainBuilder createBuilder(){ + var builder = new net.minecraftforge.common.util.BrainBuilder<>(this); -+ builder.getMemoryTypes().addAll(this.f_21843_.keySet()); -+ builder.getSensorTypes().addAll(this.f_21844_.keySet()); -+ builder.addAvailableBehaviorsByPriorityFrom(this.f_21845_); -+ builder.setSchedule(this.m_21932_()); -+ builder.addActivityRequirementsFrom(this.f_21847_); -+ builder.addActivityMemoriesToEraseWhenStoppedFrom(this.f_21848_); -+ builder.getCoreActivities().addAll(this.f_21849_); -+ builder.setDefaultActivity(this.f_21851_); -+ builder.setActiveActivites(this.f_21850_); ++ builder.getMemoryTypes().addAll(this.memories.keySet()); ++ builder.getSensorTypes().addAll(this.sensors.keySet()); ++ builder.addAvailableBehaviorsByPriorityFrom(this.availableBehaviorsByPriority); ++ builder.setSchedule(this.getSchedule()); ++ builder.addActivityRequirementsFrom(this.activityRequirements); ++ builder.addActivityMemoriesToEraseWhenStoppedFrom(this.activityMemoriesToEraseWhenStopped); ++ builder.getCoreActivities().addAll(this.coreActivities); ++ builder.setDefaultActivity(this.defaultActivity); ++ builder.setActiveActivites(this.activeActivities); + return builder; + } + + public void copyFromBuilder(net.minecraftforge.common.util.BrainBuilder builder){ -+ builder.addAvailableBehaviorsByPriorityTo(this.f_21845_); -+ this.m_21912_(builder.getSchedule()); -+ builder.addActivityRequirementsTo(this.f_21847_); -+ builder.addActivityMemoriesToEraseWhenStoppedTo(this.f_21848_); -+ this.m_21930_(builder.getCoreActivities()); -+ this.m_21944_(builder.getDefaultActivity()); -+ this.f_21850_.addAll(builder.getActiveActivites()); ++ builder.addAvailableBehaviorsByPriorityTo(this.availableBehaviorsByPriority); ++ this.setSchedule(builder.getSchedule()); ++ builder.addActivityRequirementsTo(this.activityRequirements); ++ builder.addActivityMemoriesToEraseWhenStoppedTo(this.activityMemoriesToEraseWhenStopped); ++ this.setCoreActivities(builder.getCoreActivities()); ++ this.setDefaultActivity(builder.getDefaultActivity()); ++ this.activeActivities.addAll(builder.getActiveActivites()); + } + static final class MemoryValue { - private final MemoryModuleType f_22030_; - private final Optional> f_22031_; + private final MemoryModuleType type; + private final Optional> value; diff --git a/patches/minecraft/net/minecraft/world/entity/ai/attributes/AttributeSupplier.java.patch b/patches/minecraft/net/minecraft/world/entity/ai/attributes/AttributeSupplier.java.patch index 26c6b3ec84..57bf648908 100644 --- a/patches/minecraft/net/minecraft/world/entity/ai/attributes/AttributeSupplier.java.patch +++ b/patches/minecraft/net/minecraft/world/entity/ai/attributes/AttributeSupplier.java.patch @@ -2,32 +2,32 @@ +++ b/net/minecraft/world/entity/ai/attributes/AttributeSupplier.java @@ -69,6 +_,22 @@ public static class Builder { - private final Map f_22262_ = Maps.newHashMap(); - private boolean f_22263_; + private final Map builder = Maps.newHashMap(); + private boolean instanceFrozen; + private final java.util.List others = new java.util.ArrayList<>(); + + public Builder() { } + + public Builder(AttributeSupplier attributeMap) { -+ this.f_22262_.putAll(attributeMap.f_22241_); ++ this.builder.putAll(attributeMap.instances); + } + + public void combine(Builder other) { -+ this.f_22262_.putAll(other.f_22262_); ++ this.builder.putAll(other.builder); + others.add(other); + } + + public boolean hasAttribute(Attribute attribute) { -+ return this.f_22262_.containsKey(attribute); ++ return this.builder.containsKey(attribute); + } - private AttributeInstance m_22274_(Attribute p_22275_) { + private AttributeInstance create(Attribute p_22275_) { AttributeInstance attributeinstance = new AttributeInstance(p_22275_, (p_258260_) -> { @@ -93,6 +_,7 @@ - public AttributeSupplier m_22265_() { - this.f_22263_ = true; -+ others.forEach(p_70141_ -> p_70141_.f_22263_ = true); - return new AttributeSupplier(this.f_22262_); + public AttributeSupplier build() { + this.instanceFrozen = true; ++ others.forEach(p_70141_ -> p_70141_.instanceFrozen = true); + return new AttributeSupplier(this.builder); } } diff --git a/patches/minecraft/net/minecraft/world/entity/ai/attributes/DefaultAttributes.java.patch b/patches/minecraft/net/minecraft/world/entity/ai/attributes/DefaultAttributes.java.patch index 03a92cba9a..85fc38809c 100644 --- a/patches/minecraft/net/minecraft/world/entity/ai/attributes/DefaultAttributes.java.patch +++ b/patches/minecraft/net/minecraft/world/entity/ai/attributes/DefaultAttributes.java.patch @@ -1,17 +1,17 @@ --- a/net/minecraft/world/entity/ai/attributes/DefaultAttributes.java +++ b/net/minecraft/world/entity/ai/attributes/DefaultAttributes.java @@ -83,11 +_,12 @@ - private static final Map, AttributeSupplier> f_22294_ = ImmutableMap., AttributeSupplier>builder().put(EntityType.f_217014_, Allay.m_218388_().m_22265_()).put(EntityType.f_20529_, LivingEntity.m_21183_().m_22265_()).put(EntityType.f_147039_, Axolotl.m_149176_().m_22265_()).put(EntityType.f_20549_, Bat.m_27455_().m_22265_()).put(EntityType.f_20550_, Bee.m_27858_().m_22265_()).put(EntityType.f_20551_, Blaze.m_32238_().m_22265_()).put(EntityType.f_20553_, Cat.m_28168_().m_22265_()).put(EntityType.f_243976_, Camel.m_247319_().m_22265_()).put(EntityType.f_20554_, CaveSpider.m_32267_().m_22265_()).put(EntityType.f_20555_, Chicken.m_28263_().m_22265_()).put(EntityType.f_20556_, AbstractFish.m_27495_().m_22265_()).put(EntityType.f_20557_, Cow.m_28307_().m_22265_()).put(EntityType.f_20558_, Creeper.m_32318_().m_22265_()).put(EntityType.f_20559_, Dolphin.m_28379_().m_22265_()).put(EntityType.f_20560_, AbstractChestedHorse.m_30501_().m_22265_()).put(EntityType.f_20562_, Zombie.m_34328_().m_22265_()).put(EntityType.f_20563_, ElderGuardian.m_32471_().m_22265_()).put(EntityType.f_20566_, EnderMan.m_32541_().m_22265_()).put(EntityType.f_20567_, Endermite.m_32619_().m_22265_()).put(EntityType.f_20565_, EnderDragon.m_31167_().m_22265_()).put(EntityType.f_20568_, Evoker.m_32657_().m_22265_()).put(EntityType.f_20452_, Fox.m_28553_().m_22265_()).put(EntityType.f_217012_, Frog.m_218525_().m_22265_()).put(EntityType.f_20453_, Ghast.m_32752_().m_22265_()).put(EntityType.f_20454_, Giant.m_32796_().m_22265_()).put(EntityType.f_147034_, GlowSquid.m_29988_().m_22265_()).put(EntityType.f_147035_, Goat.m_149401_().m_22265_()).put(EntityType.f_20455_, Guardian.m_32853_().m_22265_()).put(EntityType.f_20456_, Hoglin.m_34551_().m_22265_()).put(EntityType.f_20457_, AbstractHorse.m_30627_().m_22265_()).put(EntityType.f_20458_, Zombie.m_34328_().m_22265_()).put(EntityType.f_20459_, Illusioner.m_32931_().m_22265_()).put(EntityType.f_20460_, IronGolem.m_28883_().m_22265_()).put(EntityType.f_20466_, Llama.m_30824_().m_22265_()).put(EntityType.f_20468_, MagmaCube.m_33000_().m_22265_()).put(EntityType.f_20504_, Cow.m_28307_().m_22265_()).put(EntityType.f_20503_, AbstractChestedHorse.m_30501_().m_22265_()).put(EntityType.f_20505_, Ocelot.m_29036_().m_22265_()).put(EntityType.f_20507_, Panda.m_29157_().m_22265_()).put(EntityType.f_20508_, Parrot.m_29438_().m_22265_()).put(EntityType.f_20509_, Monster.m_33035_().m_22265_()).put(EntityType.f_20510_, Pig.m_29503_().m_22265_()).put(EntityType.f_20511_, Piglin.m_34770_().m_22265_()).put(EntityType.f_20512_, PiglinBrute.m_35075_().m_22265_()).put(EntityType.f_20513_, Pillager.m_33307_().m_22265_()).put(EntityType.f_20532_, Player.m_36340_().m_22265_()).put(EntityType.f_20514_, PolarBear.m_29560_().m_22265_()).put(EntityType.f_20516_, AbstractFish.m_27495_().m_22265_()).put(EntityType.f_20517_, Rabbit.m_29717_().m_22265_()).put(EntityType.f_20518_, Ravager.m_33371_().m_22265_()).put(EntityType.f_20519_, AbstractFish.m_27495_().m_22265_()).put(EntityType.f_20520_, Sheep.m_29873_().m_22265_()).put(EntityType.f_20521_, Shulker.m_33477_().m_22265_()).put(EntityType.f_20523_, Silverfish.m_33551_().m_22265_()).put(EntityType.f_20524_, AbstractSkeleton.m_32166_().m_22265_()).put(EntityType.f_20525_, SkeletonHorse.m_30918_().m_22265_()).put(EntityType.f_20526_, Monster.m_33035_().m_22265_()).put(EntityType.f_271264_, Sniffer.m_271876_().m_22265_()).put(EntityType.f_20528_, SnowGolem.m_29934_().m_22265_()).put(EntityType.f_20479_, Spider.m_33815_().m_22265_()).put(EntityType.f_20480_, Squid.m_29988_().m_22265_()).put(EntityType.f_20481_, AbstractSkeleton.m_32166_().m_22265_()).put(EntityType.f_20482_, Strider.m_33937_().m_22265_()).put(EntityType.f_217013_, Tadpole.m_218720_().m_22265_()).put(EntityType.f_20488_, Llama.m_30824_().m_22265_()).put(EntityType.f_20489_, AbstractFish.m_27495_().m_22265_()).put(EntityType.f_20490_, Turtle.m_30207_().m_22265_()).put(EntityType.f_20491_, Vex.m_34040_().m_22265_()).put(EntityType.f_20492_, Villager.m_35503_().m_22265_()).put(EntityType.f_20493_, Vindicator.m_34104_().m_22265_()).put(EntityType.f_217015_, Warden.m_219463_().m_22265_()).put(EntityType.f_20494_, Mob.m_21552_().m_22265_()).put(EntityType.f_20495_, Witch.m_34155_().m_22265_()).put(EntityType.f_20496_, WitherBoss.m_31501_().m_22265_()).put(EntityType.f_20497_, AbstractSkeleton.m_32166_().m_22265_()).put(EntityType.f_20499_, Wolf.m_30425_().m_22265_()).put(EntityType.f_20500_, Zoglin.m_34257_().m_22265_()).put(EntityType.f_20501_, Zombie.m_34328_().m_22265_()).put(EntityType.f_20502_, ZombieHorse.m_31008_().m_22265_()).put(EntityType.f_20530_, Zombie.m_34328_().m_22265_()).put(EntityType.f_20531_, ZombifiedPiglin.m_34470_().m_22265_()).build(); + private static final Map, AttributeSupplier> SUPPLIERS = ImmutableMap., AttributeSupplier>builder().put(EntityType.ALLAY, Allay.createAttributes().build()).put(EntityType.ARMOR_STAND, LivingEntity.createLivingAttributes().build()).put(EntityType.AXOLOTL, Axolotl.createAttributes().build()).put(EntityType.BAT, Bat.createAttributes().build()).put(EntityType.BEE, Bee.createAttributes().build()).put(EntityType.BLAZE, Blaze.createAttributes().build()).put(EntityType.CAT, Cat.createAttributes().build()).put(EntityType.CAMEL, Camel.createAttributes().build()).put(EntityType.CAVE_SPIDER, CaveSpider.createCaveSpider().build()).put(EntityType.CHICKEN, Chicken.createAttributes().build()).put(EntityType.COD, AbstractFish.createAttributes().build()).put(EntityType.COW, Cow.createAttributes().build()).put(EntityType.CREEPER, Creeper.createAttributes().build()).put(EntityType.DOLPHIN, Dolphin.createAttributes().build()).put(EntityType.DONKEY, AbstractChestedHorse.createBaseChestedHorseAttributes().build()).put(EntityType.DROWNED, Zombie.createAttributes().build()).put(EntityType.ELDER_GUARDIAN, ElderGuardian.createAttributes().build()).put(EntityType.ENDERMAN, EnderMan.createAttributes().build()).put(EntityType.ENDERMITE, Endermite.createAttributes().build()).put(EntityType.ENDER_DRAGON, EnderDragon.createAttributes().build()).put(EntityType.EVOKER, Evoker.createAttributes().build()).put(EntityType.FOX, Fox.createAttributes().build()).put(EntityType.FROG, Frog.createAttributes().build()).put(EntityType.GHAST, Ghast.createAttributes().build()).put(EntityType.GIANT, Giant.createAttributes().build()).put(EntityType.GLOW_SQUID, GlowSquid.createAttributes().build()).put(EntityType.GOAT, Goat.createAttributes().build()).put(EntityType.GUARDIAN, Guardian.createAttributes().build()).put(EntityType.HOGLIN, Hoglin.createAttributes().build()).put(EntityType.HORSE, AbstractHorse.createBaseHorseAttributes().build()).put(EntityType.HUSK, Zombie.createAttributes().build()).put(EntityType.ILLUSIONER, Illusioner.createAttributes().build()).put(EntityType.IRON_GOLEM, IronGolem.createAttributes().build()).put(EntityType.LLAMA, Llama.createAttributes().build()).put(EntityType.MAGMA_CUBE, MagmaCube.createAttributes().build()).put(EntityType.MOOSHROOM, Cow.createAttributes().build()).put(EntityType.MULE, AbstractChestedHorse.createBaseChestedHorseAttributes().build()).put(EntityType.OCELOT, Ocelot.createAttributes().build()).put(EntityType.PANDA, Panda.createAttributes().build()).put(EntityType.PARROT, Parrot.createAttributes().build()).put(EntityType.PHANTOM, Monster.createMonsterAttributes().build()).put(EntityType.PIG, Pig.createAttributes().build()).put(EntityType.PIGLIN, Piglin.createAttributes().build()).put(EntityType.PIGLIN_BRUTE, PiglinBrute.createAttributes().build()).put(EntityType.PILLAGER, Pillager.createAttributes().build()).put(EntityType.PLAYER, Player.createAttributes().build()).put(EntityType.POLAR_BEAR, PolarBear.createAttributes().build()).put(EntityType.PUFFERFISH, AbstractFish.createAttributes().build()).put(EntityType.RABBIT, Rabbit.createAttributes().build()).put(EntityType.RAVAGER, Ravager.createAttributes().build()).put(EntityType.SALMON, AbstractFish.createAttributes().build()).put(EntityType.SHEEP, Sheep.createAttributes().build()).put(EntityType.SHULKER, Shulker.createAttributes().build()).put(EntityType.SILVERFISH, Silverfish.createAttributes().build()).put(EntityType.SKELETON, AbstractSkeleton.createAttributes().build()).put(EntityType.SKELETON_HORSE, SkeletonHorse.createAttributes().build()).put(EntityType.SLIME, Monster.createMonsterAttributes().build()).put(EntityType.SNIFFER, Sniffer.createAttributes().build()).put(EntityType.SNOW_GOLEM, SnowGolem.createAttributes().build()).put(EntityType.SPIDER, Spider.createAttributes().build()).put(EntityType.SQUID, Squid.createAttributes().build()).put(EntityType.STRAY, AbstractSkeleton.createAttributes().build()).put(EntityType.STRIDER, Strider.createAttributes().build()).put(EntityType.TADPOLE, Tadpole.createAttributes().build()).put(EntityType.TRADER_LLAMA, Llama.createAttributes().build()).put(EntityType.TROPICAL_FISH, AbstractFish.createAttributes().build()).put(EntityType.TURTLE, Turtle.createAttributes().build()).put(EntityType.VEX, Vex.createAttributes().build()).put(EntityType.VILLAGER, Villager.createAttributes().build()).put(EntityType.VINDICATOR, Vindicator.createAttributes().build()).put(EntityType.WARDEN, Warden.createAttributes().build()).put(EntityType.WANDERING_TRADER, Mob.createMobAttributes().build()).put(EntityType.WITCH, Witch.createAttributes().build()).put(EntityType.WITHER, WitherBoss.createAttributes().build()).put(EntityType.WITHER_SKELETON, AbstractSkeleton.createAttributes().build()).put(EntityType.WOLF, Wolf.createAttributes().build()).put(EntityType.ZOGLIN, Zoglin.createAttributes().build()).put(EntityType.ZOMBIE, Zombie.createAttributes().build()).put(EntityType.ZOMBIE_HORSE, ZombieHorse.createAttributes().build()).put(EntityType.ZOMBIE_VILLAGER, Zombie.createAttributes().build()).put(EntityType.ZOMBIFIED_PIGLIN, ZombifiedPiglin.createAttributes().build()).build(); - public static AttributeSupplier m_22297_(EntityType p_22298_) { -- return f_22294_.get(p_22298_); + public static AttributeSupplier getSupplier(EntityType p_22298_) { +- return SUPPLIERS.get(p_22298_); + AttributeSupplier supplier = net.minecraftforge.common.ForgeHooks.getAttributesView().get(p_22298_); -+ return supplier != null ? supplier : f_22294_.get(p_22298_); ++ return supplier != null ? supplier : SUPPLIERS.get(p_22298_); } - public static boolean m_22301_(EntityType p_22302_) { -- return f_22294_.containsKey(p_22302_); -+ return f_22294_.containsKey(p_22302_) || net.minecraftforge.common.ForgeHooks.getAttributesView().containsKey(p_22302_); + public static boolean hasSupplier(EntityType p_22302_) { +- return SUPPLIERS.containsKey(p_22302_); ++ return SUPPLIERS.containsKey(p_22302_) || net.minecraftforge.common.ForgeHooks.getAttributesView().containsKey(p_22302_); } - public static void m_22296_() { + public static void validate() { diff --git a/patches/minecraft/net/minecraft/world/entity/ai/behavior/CrossbowAttack.java.patch b/patches/minecraft/net/minecraft/world/entity/ai/behavior/CrossbowAttack.java.patch index 689cada2f9..a8955439ac 100644 --- a/patches/minecraft/net/minecraft/world/entity/ai/behavior/CrossbowAttack.java.patch +++ b/patches/minecraft/net/minecraft/world/entity/ai/behavior/CrossbowAttack.java.patch @@ -2,37 +2,37 @@ +++ b/net/minecraft/world/entity/ai/behavior/CrossbowAttack.java @@ -23,7 +_,7 @@ - protected boolean m_6114_(ServerLevel p_22778_, E p_22779_) { - LivingEntity livingentity = m_22784_(p_22779_); -- return p_22779_.m_21055_(Items.f_42717_) && BehaviorUtils.m_22667_(p_22779_, livingentity) && BehaviorUtils.m_22632_(p_22779_, livingentity, 0); -+ return p_22779_.m_21093_(is -> is.m_41720_() instanceof CrossbowItem) && BehaviorUtils.m_22667_(p_22779_, livingentity) && BehaviorUtils.m_22632_(p_22779_, livingentity, 0); + protected boolean checkExtraStartConditions(ServerLevel p_22778_, E p_22779_) { + LivingEntity livingentity = getAttackTarget(p_22779_); +- return p_22779_.isHolding(Items.CROSSBOW) && BehaviorUtils.canSee(p_22779_, livingentity) && BehaviorUtils.isWithinAttackRange(p_22779_, livingentity, 0); ++ return p_22779_.isHolding(is -> is.getItem() instanceof CrossbowItem) && BehaviorUtils.canSee(p_22779_, livingentity) && BehaviorUtils.isWithinAttackRange(p_22779_, livingentity, 0); } - protected boolean m_6737_(ServerLevel p_22781_, E p_22782_, long p_22783_) { + protected boolean canStillUse(ServerLevel p_22781_, E p_22782_, long p_22783_) { @@ -41,7 +_,7 @@ - p_22806_.m_5810_(); + p_22806_.stopUsingItem(); } -- if (p_22806_.m_21055_(Items.f_42717_)) { -+ if (p_22806_.m_21093_(is -> is.m_41720_() instanceof CrossbowItem)) { - p_22806_.m_6136_(false); - CrossbowItem.m_40884_(p_22806_.m_21211_(), false); +- if (p_22806_.isHolding(Items.CROSSBOW)) { ++ if (p_22806_.isHolding(is -> is.getItem() instanceof CrossbowItem)) { + p_22806_.setChargingCrossbow(false); + CrossbowItem.setCharged(p_22806_.getUseItem(), false); } @@ -50,7 +_,7 @@ - private void m_22786_(E p_22787_, LivingEntity p_22788_) { - if (this.f_22772_ == CrossbowAttack.CrossbowState.UNCHARGED) { -- p_22787_.m_6672_(ProjectileUtil.m_37297_(p_22787_, Items.f_42717_)); -+ p_22787_.m_6672_(ProjectileUtil.getWeaponHoldingHand(p_22787_, item -> item instanceof CrossbowItem)); - this.f_22772_ = CrossbowAttack.CrossbowState.CHARGING; - p_22787_.m_6136_(true); - } else if (this.f_22772_ == CrossbowAttack.CrossbowState.CHARGING) { + private void crossbowAttack(E p_22787_, LivingEntity p_22788_) { + if (this.crossbowState == CrossbowAttack.CrossbowState.UNCHARGED) { +- p_22787_.startUsingItem(ProjectileUtil.getWeaponHoldingHand(p_22787_, Items.CROSSBOW)); ++ p_22787_.startUsingItem(ProjectileUtil.getWeaponHoldingHand(p_22787_, item -> item instanceof CrossbowItem)); + this.crossbowState = CrossbowAttack.CrossbowState.CHARGING; + p_22787_.setChargingCrossbow(true); + } else if (this.crossbowState == CrossbowAttack.CrossbowState.CHARGING) { @@ -73,7 +_,7 @@ } - } else if (this.f_22772_ == CrossbowAttack.CrossbowState.READY_TO_ATTACK) { - p_22787_.m_6504_(p_22788_, 1.0F); -- ItemStack itemstack1 = p_22787_.m_21120_(ProjectileUtil.m_37297_(p_22787_, Items.f_42717_)); -+ ItemStack itemstack1 = p_22787_.m_21120_(ProjectileUtil.getWeaponHoldingHand(p_22787_, item -> item instanceof CrossbowItem)); - CrossbowItem.m_40884_(itemstack1, false); - this.f_22772_ = CrossbowAttack.CrossbowState.UNCHARGED; + } else if (this.crossbowState == CrossbowAttack.CrossbowState.READY_TO_ATTACK) { + p_22787_.performRangedAttack(p_22788_, 1.0F); +- ItemStack itemstack1 = p_22787_.getItemInHand(ProjectileUtil.getWeaponHoldingHand(p_22787_, Items.CROSSBOW)); ++ ItemStack itemstack1 = p_22787_.getItemInHand(ProjectileUtil.getWeaponHoldingHand(p_22787_, item -> item instanceof CrossbowItem)); + CrossbowItem.setCharged(itemstack1, false); + this.crossbowState = CrossbowAttack.CrossbowState.UNCHARGED; } diff --git a/patches/minecraft/net/minecraft/world/entity/ai/behavior/HarvestFarmland.java.patch b/patches/minecraft/net/minecraft/world/entity/ai/behavior/HarvestFarmland.java.patch index 7066827da1..574731d0e4 100644 --- a/patches/minecraft/net/minecraft/world/entity/ai/behavior/HarvestFarmland.java.patch +++ b/patches/minecraft/net/minecraft/world/entity/ai/behavior/HarvestFarmland.java.patch @@ -3,19 +3,19 @@ @@ -40,7 +_,7 @@ } - protected boolean m_6114_(ServerLevel p_23174_, Villager p_23175_) { -- if (!p_23174_.m_46469_().m_46207_(GameRules.f_46132_)) { + protected boolean checkExtraStartConditions(ServerLevel p_23174_, Villager p_23175_) { +- if (!p_23174_.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) { + if (!net.minecraftforge.event.ForgeEventFactory.getMobGriefingEvent(p_23174_, p_23175_)) { return false; - } else if (p_23175_.m_7141_().m_35571_() != VillagerProfession.f_35590_) { + } else if (p_23175_.getVillagerData().getProfession() != VillagerProfession.FARMER) { return false; @@ -115,6 +_,11 @@ - p_23196_.m_46597_(this.f_23159_, blockstate1); - p_23196_.m_220407_(GameEvent.f_157797_, this.f_23159_, GameEvent.Context.m_223719_(p_23197_, blockstate1)); + p_23196_.setBlockAndUpdate(this.aboveFarmlandPos, blockstate1); + p_23196_.gameEvent(GameEvent.BLOCK_PLACE, this.aboveFarmlandPos, GameEvent.Context.of(p_23197_, blockstate1)); flag = true; -+ } else if (itemstack.m_41720_() instanceof net.minecraftforge.common.IPlantable) { -+ if (((net.minecraftforge.common.IPlantable)itemstack.m_41720_()).getPlantType(p_23196_, f_23159_) == net.minecraftforge.common.PlantType.CROP) { -+ p_23196_.m_7731_(f_23159_, ((net.minecraftforge.common.IPlantable)itemstack.m_41720_()).getPlant(p_23196_, f_23159_), 3); ++ } else if (itemstack.getItem() instanceof net.minecraftforge.common.IPlantable) { ++ if (((net.minecraftforge.common.IPlantable)itemstack.getItem()).getPlantType(p_23196_, aboveFarmlandPos) == net.minecraftforge.common.PlantType.CROP) { ++ p_23196_.setBlock(aboveFarmlandPos, ((net.minecraftforge.common.IPlantable)itemstack.getItem()).getPlant(p_23196_, aboveFarmlandPos), 3); + flag = true; + } } diff --git a/patches/minecraft/net/minecraft/world/entity/ai/behavior/StartAttacking.java.patch b/patches/minecraft/net/minecraft/world/entity/ai/behavior/StartAttacking.java.patch index 6c17f95f94..56c25b9f2b 100644 --- a/patches/minecraft/net/minecraft/world/entity/ai/behavior/StartAttacking.java.patch +++ b/patches/minecraft/net/minecraft/world/entity/ai/behavior/StartAttacking.java.patch @@ -1,15 +1,15 @@ --- a/net/minecraft/world/entity/ai/behavior/StartAttacking.java +++ b/net/minecraft/world/entity/ai/behavior/StartAttacking.java @@ -30,7 +_,11 @@ - if (!p_258774_.m_6779_(livingentity)) { + if (!p_258774_.canAttack(livingentity)) { return false; } else { -- p_258778_.m_257512_(livingentity); +- p_258778_.set(livingentity); + net.minecraftforge.event.entity.living.LivingChangeTargetEvent changeTargetEvent = net.minecraftforge.common.ForgeHooks.onLivingChangeTarget(p_258774_, livingentity, net.minecraftforge.event.entity.living.LivingChangeTargetEvent.LivingTargetType.BEHAVIOR_TARGET); + if (changeTargetEvent.isCanceled()) + return false; + -+ p_258778_.m_257512_(changeTargetEvent.getNewTarget()); - p_258779_.m_257971_(); ++ p_258778_.set(changeTargetEvent.getNewTarget()); + p_258779_.erase(); return true; } diff --git a/patches/minecraft/net/minecraft/world/entity/ai/behavior/Swim.java.patch b/patches/minecraft/net/minecraft/world/entity/ai/behavior/Swim.java.patch index 5fd5bd89e7..c7acf611a3 100644 --- a/patches/minecraft/net/minecraft/world/entity/ai/behavior/Swim.java.patch +++ b/patches/minecraft/net/minecraft/world/entity/ai/behavior/Swim.java.patch @@ -3,9 +3,9 @@ @@ -14,7 +_,7 @@ } - protected boolean m_6114_(ServerLevel p_24388_, Mob p_24389_) { -- return p_24389_.m_20069_() && p_24389_.m_204036_(FluidTags.f_13131_) > p_24389_.m_20204_() || p_24389_.m_20077_(); -+ return p_24389_.m_20069_() && p_24389_.m_204036_(FluidTags.f_13131_) > p_24389_.m_20204_() || p_24389_.m_20077_() || p_24389_.isInFluidType((fluidType, height) -> p_24389_.canSwimInFluidType(fluidType) && height > p_24389_.m_20204_()); + protected boolean checkExtraStartConditions(ServerLevel p_24388_, Mob p_24389_) { +- return p_24389_.isInWater() && p_24389_.getFluidHeight(FluidTags.WATER) > p_24389_.getFluidJumpThreshold() || p_24389_.isInLava(); ++ return p_24389_.isInWater() && p_24389_.getFluidHeight(FluidTags.WATER) > p_24389_.getFluidJumpThreshold() || p_24389_.isInLava() || p_24389_.isInFluidType((fluidType, height) -> p_24389_.canSwimInFluidType(fluidType) && height > p_24389_.getFluidJumpThreshold()); } - protected boolean m_6737_(ServerLevel p_24391_, Mob p_24392_, long p_24393_) { + protected boolean canStillUse(ServerLevel p_24391_, Mob p_24392_, long p_24393_) { diff --git a/patches/minecraft/net/minecraft/world/entity/ai/control/MoveControl.java.patch b/patches/minecraft/net/minecraft/world/entity/ai/control/MoveControl.java.patch index 54fd414bda..32b7756a85 100644 --- a/patches/minecraft/net/minecraft/world/entity/ai/control/MoveControl.java.patch +++ b/patches/minecraft/net/minecraft/world/entity/ai/control/MoveControl.java.patch @@ -1,11 +1,11 @@ --- a/net/minecraft/world/entity/ai/control/MoveControl.java +++ b/net/minecraft/world/entity/ai/control/MoveControl.java @@ -99,7 +_,7 @@ - BlockPos blockpos = this.f_24974_.m_20183_(); - BlockState blockstate = this.f_24974_.m_9236_().m_8055_(blockpos); - VoxelShape voxelshape = blockstate.m_60812_(this.f_24974_.m_9236_(), blockpos); -- if (d2 > (double)this.f_24974_.m_274421_() && d0 * d0 + d1 * d1 < (double)Math.max(1.0F, this.f_24974_.m_20205_()) || !voxelshape.m_83281_() && this.f_24974_.m_20186_() < voxelshape.m_83297_(Direction.Axis.Y) + (double)blockpos.m_123342_() && !blockstate.m_204336_(BlockTags.f_13103_) && !blockstate.m_204336_(BlockTags.f_13039_)) { -+ if (d2 > (double)this.f_24974_.getStepHeight() && d0 * d0 + d1 * d1 < (double)Math.max(1.0F, this.f_24974_.m_20205_()) || !voxelshape.m_83281_() && this.f_24974_.m_20186_() < voxelshape.m_83297_(Direction.Axis.Y) + (double)blockpos.m_123342_() && !blockstate.m_204336_(BlockTags.f_13103_) && !blockstate.m_204336_(BlockTags.f_13039_)) { - this.f_24974_.m_21569_().m_24901_(); - this.f_24981_ = MoveControl.Operation.JUMPING; + BlockPos blockpos = this.mob.blockPosition(); + BlockState blockstate = this.mob.level().getBlockState(blockpos); + VoxelShape voxelshape = blockstate.getCollisionShape(this.mob.level(), blockpos); +- if (d2 > (double)this.mob.maxUpStep() && d0 * d0 + d1 * d1 < (double)Math.max(1.0F, this.mob.getBbWidth()) || !voxelshape.isEmpty() && this.mob.getY() < voxelshape.max(Direction.Axis.Y) + (double)blockpos.getY() && !blockstate.is(BlockTags.DOORS) && !blockstate.is(BlockTags.FENCES)) { ++ if (d2 > (double)this.mob.getStepHeight() && d0 * d0 + d1 * d1 < (double)Math.max(1.0F, this.mob.getBbWidth()) || !voxelshape.isEmpty() && this.mob.getY() < voxelshape.max(Direction.Axis.Y) + (double)blockpos.getY() && !blockstate.is(BlockTags.DOORS) && !blockstate.is(BlockTags.FENCES)) { + this.mob.getJumpControl().jump(); + this.operation = MoveControl.Operation.JUMPING; } diff --git a/patches/minecraft/net/minecraft/world/entity/ai/goal/BreakDoorGoal.java.patch b/patches/minecraft/net/minecraft/world/entity/ai/goal/BreakDoorGoal.java.patch index 0895ac5c37..ca964e5f3f 100644 --- a/patches/minecraft/net/minecraft/world/entity/ai/goal/BreakDoorGoal.java.patch +++ b/patches/minecraft/net/minecraft/world/entity/ai/goal/BreakDoorGoal.java.patch @@ -1,11 +1,11 @@ --- a/net/minecraft/world/entity/ai/goal/BreakDoorGoal.java +++ b/net/minecraft/world/entity/ai/goal/BreakDoorGoal.java @@ -30,7 +_,7 @@ - public boolean m_8036_() { - if (!super.m_8036_()) { + public boolean canUse() { + if (!super.canUse()) { return false; -- } else if (!this.f_25189_.m_9236_().m_46469_().m_46207_(GameRules.f_46132_)) { -+ } else if (!net.minecraftforge.common.ForgeHooks.canEntityDestroy(this.f_25189_.m_9236_(), this.f_25190_, this.f_25189_)) { +- } else if (!this.mob.level().getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) { ++ } else if (!net.minecraftforge.common.ForgeHooks.canEntityDestroy(this.mob.level(), this.doorPos, this.mob)) { return false; } else { - return this.m_25094_(this.f_25189_.m_9236_().m_46791_()) && !this.m_25200_(); + return this.isValidDifficulty(this.mob.level().getDifficulty()) && !this.isOpen(); diff --git a/patches/minecraft/net/minecraft/world/entity/ai/goal/EatBlockGoal.java.patch b/patches/minecraft/net/minecraft/world/entity/ai/goal/EatBlockGoal.java.patch index 91bcc7b0fc..c6d0d844f2 100644 --- a/patches/minecraft/net/minecraft/world/entity/ai/goal/EatBlockGoal.java.patch +++ b/patches/minecraft/net/minecraft/world/entity/ai/goal/EatBlockGoal.java.patch @@ -1,20 +1,20 @@ --- a/net/minecraft/world/entity/ai/goal/EatBlockGoal.java +++ b/net/minecraft/world/entity/ai/goal/EatBlockGoal.java @@ -60,7 +_,7 @@ - if (this.f_25204_ == this.m_183277_(4)) { - BlockPos blockpos = this.f_25202_.m_20183_(); - if (f_25201_.test(this.f_25203_.m_8055_(blockpos))) { -- if (this.f_25203_.m_46469_().m_46207_(GameRules.f_46132_)) { -+ if (net.minecraftforge.event.ForgeEventFactory.getMobGriefingEvent(this.f_25203_, this.f_25202_)) { - this.f_25203_.m_46961_(blockpos, false); + if (this.eatAnimationTick == this.adjustedTickDelay(4)) { + BlockPos blockpos = this.mob.blockPosition(); + if (IS_TALL_GRASS.test(this.level.getBlockState(blockpos))) { +- if (this.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) { ++ if (net.minecraftforge.event.ForgeEventFactory.getMobGriefingEvent(this.level, this.mob)) { + this.level.destroyBlock(blockpos, false); } @@ -68,7 +_,7 @@ } else { - BlockPos blockpos1 = blockpos.m_7495_(); - if (this.f_25203_.m_8055_(blockpos1).m_60713_(Blocks.f_50440_)) { -- if (this.f_25203_.m_46469_().m_46207_(GameRules.f_46132_)) { -+ if (net.minecraftforge.event.ForgeEventFactory.getMobGriefingEvent(this.f_25203_, this.f_25202_)) { - this.f_25203_.m_46796_(2001, blockpos1, Block.m_49956_(Blocks.f_50440_.m_49966_())); - this.f_25203_.m_7731_(blockpos1, Blocks.f_50493_.m_49966_(), 2); + BlockPos blockpos1 = blockpos.below(); + if (this.level.getBlockState(blockpos1).is(Blocks.GRASS_BLOCK)) { +- if (this.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) { ++ if (net.minecraftforge.event.ForgeEventFactory.getMobGriefingEvent(this.level, this.mob)) { + this.level.levelEvent(2001, blockpos1, Block.getId(Blocks.GRASS_BLOCK.defaultBlockState())); + this.level.setBlock(blockpos1, Blocks.DIRT.defaultBlockState(), 2); } diff --git a/patches/minecraft/net/minecraft/world/entity/ai/goal/FloatGoal.java.patch b/patches/minecraft/net/minecraft/world/entity/ai/goal/FloatGoal.java.patch index 422d6d7cfd..e1becbd84b 100644 --- a/patches/minecraft/net/minecraft/world/entity/ai/goal/FloatGoal.java.patch +++ b/patches/minecraft/net/minecraft/world/entity/ai/goal/FloatGoal.java.patch @@ -3,9 +3,9 @@ @@ -14,7 +_,7 @@ } - public boolean m_8036_() { -- return this.f_25228_.m_20069_() && this.f_25228_.m_204036_(FluidTags.f_13131_) > this.f_25228_.m_20204_() || this.f_25228_.m_20077_(); -+ return this.f_25228_.m_20069_() && this.f_25228_.m_204036_(FluidTags.f_13131_) > this.f_25228_.m_20204_() || this.f_25228_.m_20077_() || this.f_25228_.isInFluidType((fluidType, height) -> this.f_25228_.canSwimInFluidType(fluidType) && height > this.f_25228_.m_20204_()); + public boolean canUse() { +- return this.mob.isInWater() && this.mob.getFluidHeight(FluidTags.WATER) > this.mob.getFluidJumpThreshold() || this.mob.isInLava(); ++ return this.mob.isInWater() && this.mob.getFluidHeight(FluidTags.WATER) > this.mob.getFluidJumpThreshold() || this.mob.isInLava() || this.mob.isInFluidType((fluidType, height) -> this.mob.canSwimInFluidType(fluidType) && height > this.mob.getFluidJumpThreshold()); } - public boolean m_183429_() { + public boolean requiresUpdateEveryTick() { diff --git a/patches/minecraft/net/minecraft/world/entity/ai/goal/MeleeAttackGoal.java.patch b/patches/minecraft/net/minecraft/world/entity/ai/goal/MeleeAttackGoal.java.patch index b22522ad72..4e87dd70ac 100644 --- a/patches/minecraft/net/minecraft/world/entity/ai/goal/MeleeAttackGoal.java.patch +++ b/patches/minecraft/net/minecraft/world/entity/ai/goal/MeleeAttackGoal.java.patch @@ -1,39 +1,39 @@ --- a/net/minecraft/world/entity/ai/goal/MeleeAttackGoal.java +++ b/net/minecraft/world/entity/ai/goal/MeleeAttackGoal.java @@ -21,6 +_,8 @@ - private final int f_25549_ = 20; - private long f_25550_; - private static final long f_148125_ = 20L; + private final int attackInterval = 20; + private long lastCanUseCheck; + private static final long COOLDOWN_BETWEEN_CAN_USE_CHECKS = 20L; + private int failedPathFindingPenalty = 0; + private boolean canPenalize = false; public MeleeAttackGoal(PathfinderMob p_25552_, double p_25553_, boolean p_25554_) { - this.f_25540_ = p_25552_; + this.mob = p_25552_; @@ -41,6 +_,15 @@ - } else if (!livingentity.m_6084_()) { + } else if (!livingentity.isAlive()) { return false; } else { + if (canPenalize) { -+ if (--this.f_25547_ <= 0) { -+ this.f_25543_ = this.f_25540_.m_21573_().m_6570_(livingentity, 0); -+ this.f_25547_ = 4 + this.f_25540_.m_217043_().m_188503_(7); -+ return this.f_25543_ != null; ++ if (--this.ticksUntilNextPathRecalculation <= 0) { ++ this.path = this.mob.getNavigation().createPath(livingentity, 0); ++ this.ticksUntilNextPathRecalculation = 4 + this.mob.getRandom().nextInt(7); ++ return this.path != null; + } else { + return true; + } + } - this.f_25543_ = this.f_25540_.m_21573_().m_6570_(livingentity, 0); - if (this.f_25543_ != null) { + this.path = this.mob.getNavigation().createPath(livingentity, 0); + if (this.path != null) { return true; @@ -98,6 +_,18 @@ - this.f_25546_ = livingentity.m_20189_(); - this.f_25547_ = 4 + this.f_25540_.m_217043_().m_188503_(7); - double d0 = this.f_25540_.m_20280_(livingentity); + this.pathedTargetZ = livingentity.getZ(); + this.ticksUntilNextPathRecalculation = 4 + this.mob.getRandom().nextInt(7); + double d0 = this.mob.distanceToSqr(livingentity); + if (this.canPenalize) { -+ this.f_25547_ += failedPathFindingPenalty; -+ if (this.f_25540_.m_21573_().m_26570_() != null) { -+ net.minecraft.world.level.pathfinder.Node finalPathPoint = this.f_25540_.m_21573_().m_26570_().m_77395_(); -+ if (finalPathPoint != null && livingentity.m_20275_(finalPathPoint.f_77271_, finalPathPoint.f_77272_, finalPathPoint.f_77273_) < 1) ++ this.ticksUntilNextPathRecalculation += failedPathFindingPenalty; ++ if (this.mob.getNavigation().getPath() != null) { ++ net.minecraft.world.level.pathfinder.Node finalPathPoint = this.mob.getNavigation().getPath().getEndNode(); ++ if (finalPathPoint != null && livingentity.distanceToSqr(finalPathPoint.x, finalPathPoint.y, finalPathPoint.z) < 1) + failedPathFindingPenalty = 0; + else + failedPathFindingPenalty += 10; @@ -42,5 +42,5 @@ + } + } if (d0 > 1024.0D) { - this.f_25547_ += 10; + this.ticksUntilNextPathRecalculation += 10; } else if (d0 > 256.0D) { diff --git a/patches/minecraft/net/minecraft/world/entity/ai/goal/RangedBowAttackGoal.java.patch b/patches/minecraft/net/minecraft/world/entity/ai/goal/RangedBowAttackGoal.java.patch index 63a42ab44a..7ab7cc075b 100644 --- a/patches/minecraft/net/minecraft/world/entity/ai/goal/RangedBowAttackGoal.java.patch +++ b/patches/minecraft/net/minecraft/world/entity/ai/goal/RangedBowAttackGoal.java.patch @@ -6,35 +6,35 @@ -public class RangedBowAttackGoal extends Goal { +public class RangedBowAttackGoal extends Goal { - private final T f_25782_; - private final double f_25783_; - private int f_25784_; + private final T mob; + private final double speedModifier; + private int attackIntervalMin; @@ -21,6 +_,10 @@ - private boolean f_25789_; - private int f_25790_ = -1; + private boolean strafingBackwards; + private int strafingTime = -1; + public RangedBowAttackGoal(M p_25792_, double p_25793_, int p_25794_, float p_25795_){ + this((T) p_25792_, p_25793_, p_25794_, p_25795_); + } + public RangedBowAttackGoal(T p_25792_, double p_25793_, int p_25794_, float p_25795_) { - this.f_25782_ = p_25792_; - this.f_25783_ = p_25793_; + this.mob = p_25792_; + this.speedModifier = p_25793_; @@ -38,7 +_,7 @@ } - protected boolean m_25803_() { -- return this.f_25782_.m_21055_(Items.f_42411_); -+ return this.f_25782_.m_21093_(is -> is.m_41720_() instanceof BowItem); + protected boolean isHoldingBow() { +- return this.mob.isHolding(Items.BOW); ++ return this.mob.isHolding(is -> is.getItem() instanceof BowItem); } - public boolean m_8045_() { + public boolean canContinueToUse() { @@ -129,7 +_,7 @@ } } - } else if (--this.f_25786_ <= 0 && this.f_25787_ >= -60) { -- this.f_25782_.m_6672_(ProjectileUtil.m_37297_(this.f_25782_, Items.f_42411_)); -+ this.f_25782_.m_6672_(ProjectileUtil.getWeaponHoldingHand(this.f_25782_, item -> item instanceof BowItem)); + } else if (--this.attackTime <= 0 && this.seeTime >= -60) { +- this.mob.startUsingItem(ProjectileUtil.getWeaponHoldingHand(this.mob, Items.BOW)); ++ this.mob.startUsingItem(ProjectileUtil.getWeaponHoldingHand(this.mob, item -> item instanceof BowItem)); } } diff --git a/patches/minecraft/net/minecraft/world/entity/ai/goal/RangedCrossbowAttackGoal.java.patch b/patches/minecraft/net/minecraft/world/entity/ai/goal/RangedCrossbowAttackGoal.java.patch index f72cfe4732..781ea942e5 100644 --- a/patches/minecraft/net/minecraft/world/entity/ai/goal/RangedCrossbowAttackGoal.java.patch +++ b/patches/minecraft/net/minecraft/world/entity/ai/goal/RangedCrossbowAttackGoal.java.patch @@ -3,27 +3,27 @@ @@ -34,7 +_,7 @@ } - private boolean m_25821_() { -- return this.f_25805_.m_21055_(Items.f_42717_); -+ return this.f_25805_.m_21093_(is -> is.m_41720_() instanceof CrossbowItem); + private boolean isHoldingCrossbow() { +- return this.mob.isHolding(Items.CROSSBOW); ++ return this.mob.isHolding(is -> is.getItem() instanceof CrossbowItem); } - public boolean m_8045_() { + public boolean canContinueToUse() { @@ -93,7 +_,7 @@ - this.f_25805_.m_21563_().m_24960_(livingentity, 30.0F, 30.0F); - if (this.f_25806_ == RangedCrossbowAttackGoal.CrossbowState.UNCHARGED) { + this.mob.getLookControl().setLookAt(livingentity, 30.0F, 30.0F); + if (this.crossbowState == RangedCrossbowAttackGoal.CrossbowState.UNCHARGED) { if (!flag2) { -- this.f_25805_.m_6672_(ProjectileUtil.m_37297_(this.f_25805_, Items.f_42717_)); -+ this.f_25805_.m_6672_(ProjectileUtil.getWeaponHoldingHand(this.f_25805_, item -> item instanceof CrossbowItem)); - this.f_25806_ = RangedCrossbowAttackGoal.CrossbowState.CHARGING; - this.f_25805_.m_6136_(true); +- this.mob.startUsingItem(ProjectileUtil.getWeaponHoldingHand(this.mob, Items.CROSSBOW)); ++ this.mob.startUsingItem(ProjectileUtil.getWeaponHoldingHand(this.mob, item -> item instanceof CrossbowItem)); + this.crossbowState = RangedCrossbowAttackGoal.CrossbowState.CHARGING; + this.mob.setChargingCrossbow(true); } @@ -117,7 +_,7 @@ } - } else if (this.f_25806_ == RangedCrossbowAttackGoal.CrossbowState.READY_TO_ATTACK && flag) { - this.f_25805_.m_6504_(livingentity, 1.0F); -- ItemStack itemstack1 = this.f_25805_.m_21120_(ProjectileUtil.m_37297_(this.f_25805_, Items.f_42717_)); -+ ItemStack itemstack1 = this.f_25805_.m_21120_(ProjectileUtil.getWeaponHoldingHand(this.f_25805_, item -> item instanceof CrossbowItem)); - CrossbowItem.m_40884_(itemstack1, false); - this.f_25806_ = RangedCrossbowAttackGoal.CrossbowState.UNCHARGED; + } else if (this.crossbowState == RangedCrossbowAttackGoal.CrossbowState.READY_TO_ATTACK && flag) { + this.mob.performRangedAttack(livingentity, 1.0F); +- ItemStack itemstack1 = this.mob.getItemInHand(ProjectileUtil.getWeaponHoldingHand(this.mob, Items.CROSSBOW)); ++ ItemStack itemstack1 = this.mob.getItemInHand(ProjectileUtil.getWeaponHoldingHand(this.mob, item -> item instanceof CrossbowItem)); + CrossbowItem.setCharged(itemstack1, false); + this.crossbowState = RangedCrossbowAttackGoal.CrossbowState.UNCHARGED; } diff --git a/patches/minecraft/net/minecraft/world/entity/ai/goal/RemoveBlockGoal.java.patch b/patches/minecraft/net/minecraft/world/entity/ai/goal/RemoveBlockGoal.java.patch index d086d94d13..bfed25eea5 100644 --- a/patches/minecraft/net/minecraft/world/entity/ai/goal/RemoveBlockGoal.java.patch +++ b/patches/minecraft/net/minecraft/world/entity/ai/goal/RemoveBlockGoal.java.patch @@ -3,17 +3,17 @@ @@ -34,7 +_,7 @@ } - public boolean m_8036_() { -- if (!this.f_25837_.m_9236_().m_46469_().m_46207_(GameRules.f_46132_)) { -+ if (!net.minecraftforge.event.ForgeEventFactory.getMobGriefingEvent(this.f_25837_.m_9236_(), this.f_25837_)) { + public boolean canUse() { +- if (!this.removerMob.level().getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) { ++ if (!net.minecraftforge.event.ForgeEventFactory.getMobGriefingEvent(this.removerMob.level(), this.removerMob)) { return false; - } else if (this.f_25600_ > 0) { - --this.f_25600_; + } else if (this.nextStartTick > 0) { + --this.nextStartTick; @@ -129,6 +_,7 @@ if (chunkaccess == null) { return false; } else { -+ if (!chunkaccess.m_8055_(p_25851_).canEntityDestroy(p_25850_, p_25851_, this.f_25837_)) return false; - return chunkaccess.m_8055_(p_25851_).m_60713_(this.f_25836_) && chunkaccess.m_8055_(p_25851_.m_7494_()).m_60795_() && chunkaccess.m_8055_(p_25851_.m_6630_(2)).m_60795_(); ++ if (!chunkaccess.getBlockState(p_25851_).canEntityDestroy(p_25850_, p_25851_, this.removerMob)) return false; + return chunkaccess.getBlockState(p_25851_).is(this.blockToRemove) && chunkaccess.getBlockState(p_25851_.above()).isAir() && chunkaccess.getBlockState(p_25851_.above(2)).isAir(); } } diff --git a/patches/minecraft/net/minecraft/world/entity/ai/goal/RunAroundLikeCrazyGoal.java.patch b/patches/minecraft/net/minecraft/world/entity/ai/goal/RunAroundLikeCrazyGoal.java.patch index 273497e734..aa0494d69b 100644 --- a/patches/minecraft/net/minecraft/world/entity/ai/goal/RunAroundLikeCrazyGoal.java.patch +++ b/patches/minecraft/net/minecraft/world/entity/ai/goal/RunAroundLikeCrazyGoal.java.patch @@ -2,10 +2,10 @@ +++ b/net/minecraft/world/entity/ai/goal/RunAroundLikeCrazyGoal.java @@ -55,7 +_,7 @@ Player player = (Player)entity; - int i = this.f_25884_.m_30624_(); - int j = this.f_25884_.m_7555_(); -- if (j > 0 && this.f_25884_.m_217043_().m_188503_(j) < i) { -+ if (j > 0 && this.f_25884_.m_217043_().m_188503_(j) < i && !net.minecraftforge.event.ForgeEventFactory.onAnimalTame(f_25884_, (Player)entity)) { - this.f_25884_.m_30637_(player); + int i = this.horse.getTemper(); + int j = this.horse.getMaxTemper(); +- if (j > 0 && this.horse.getRandom().nextInt(j) < i) { ++ if (j > 0 && this.horse.getRandom().nextInt(j) < i && !net.minecraftforge.event.ForgeEventFactory.onAnimalTame(horse, (Player)entity)) { + this.horse.tameWithName(player); return; } diff --git a/patches/minecraft/net/minecraft/world/entity/ai/navigation/PathNavigation.java.patch b/patches/minecraft/net/minecraft/world/entity/ai/navigation/PathNavigation.java.patch index 9e61f7ddf8..1d202cfa3d 100644 --- a/patches/minecraft/net/minecraft/world/entity/ai/navigation/PathNavigation.java.patch +++ b/patches/minecraft/net/minecraft/world/entity/ai/navigation/PathNavigation.java.patch @@ -1,16 +1,16 @@ --- a/net/minecraft/world/entity/ai/navigation/PathNavigation.java +++ b/net/minecraft/world/entity/ai/navigation/PathNavigation.java @@ -229,10 +_,10 @@ - Vec3 vec3 = this.m_7475_(); - this.f_26505_ = this.f_26494_.m_20205_() > 0.75F ? this.f_26494_.m_20205_() / 2.0F : 0.75F - this.f_26494_.m_20205_() / 2.0F; - Vec3i vec3i = this.f_26496_.m_77400_(); -- double d0 = Math.abs(this.f_26494_.m_20185_() - ((double)vec3i.m_123341_() + 0.5D)); -+ double d0 = Math.abs(this.f_26494_.m_20185_() - ((double)vec3i.m_123341_() + (this.f_26494_.m_20205_() + 1) / 2D)); //Forge: Fix MC-94054 - double d1 = Math.abs(this.f_26494_.m_20186_() - (double)vec3i.m_123342_()); -- double d2 = Math.abs(this.f_26494_.m_20189_() - ((double)vec3i.m_123343_() + 0.5D)); -- boolean flag = d0 < (double)this.f_26505_ && d2 < (double)this.f_26505_ && d1 < 1.0D; -+ double d2 = Math.abs(this.f_26494_.m_20189_() - ((double)vec3i.m_123343_() + (this.f_26494_.m_20205_() + 1) / 2D)); //Forge: Fix MC-94054 -+ boolean flag = d0 <= (double)this.f_26505_ && d2 <= (double)this.f_26505_ && d1 < 1.0D; //Forge: Fix MC-94054 - if (flag || this.m_264193_(this.f_26496_.m_77401_().f_77282_) && this.m_26559_(vec3)) { - this.f_26496_.m_77374_(); + Vec3 vec3 = this.getTempMobPos(); + this.maxDistanceToWaypoint = this.mob.getBbWidth() > 0.75F ? this.mob.getBbWidth() / 2.0F : 0.75F - this.mob.getBbWidth() / 2.0F; + Vec3i vec3i = this.path.getNextNodePos(); +- double d0 = Math.abs(this.mob.getX() - ((double)vec3i.getX() + 0.5D)); ++ double d0 = Math.abs(this.mob.getX() - ((double)vec3i.getX() + (this.mob.getBbWidth() + 1) / 2D)); //Forge: Fix MC-94054 + double d1 = Math.abs(this.mob.getY() - (double)vec3i.getY()); +- double d2 = Math.abs(this.mob.getZ() - ((double)vec3i.getZ() + 0.5D)); +- boolean flag = d0 < (double)this.maxDistanceToWaypoint && d2 < (double)this.maxDistanceToWaypoint && d1 < 1.0D; ++ double d2 = Math.abs(this.mob.getZ() - ((double)vec3i.getZ() + (this.mob.getBbWidth() + 1) / 2D)); //Forge: Fix MC-94054 ++ boolean flag = d0 <= (double)this.maxDistanceToWaypoint && d2 <= (double)this.maxDistanceToWaypoint && d1 < 1.0D; //Forge: Fix MC-94054 + if (flag || this.canCutCorner(this.path.getNextNode().type) && this.shouldTargetNextNodeInDirection(vec3)) { + this.path.advance(); } diff --git a/patches/minecraft/net/minecraft/world/entity/ai/navigation/WallClimberNavigation.java.patch b/patches/minecraft/net/minecraft/world/entity/ai/navigation/WallClimberNavigation.java.patch index f5e69a692c..1be52c0043 100644 --- a/patches/minecraft/net/minecraft/world/entity/ai/navigation/WallClimberNavigation.java.patch +++ b/patches/minecraft/net/minecraft/world/entity/ai/navigation/WallClimberNavigation.java.patch @@ -1,12 +1,12 @@ --- a/net/minecraft/world/entity/ai/navigation/WallClimberNavigation.java +++ b/net/minecraft/world/entity/ai/navigation/WallClimberNavigation.java @@ -41,7 +_,8 @@ - super.m_7638_(); + super.tick(); } else { - if (this.f_26578_ != null) { -- if (!this.f_26578_.m_203195_(this.f_26494_.m_20182_(), (double)this.f_26494_.m_20205_()) && (!(this.f_26494_.m_20186_() > (double)this.f_26578_.m_123342_()) || !BlockPos.m_274561_((double)this.f_26578_.m_123341_(), this.f_26494_.m_20186_(), (double)this.f_26578_.m_123343_()).m_203195_(this.f_26494_.m_20182_(), (double)this.f_26494_.m_20205_()))) { + if (this.pathToPosition != null) { +- if (!this.pathToPosition.closerToCenterThan(this.mob.position(), (double)this.mob.getBbWidth()) && (!(this.mob.getY() > (double)this.pathToPosition.getY()) || !BlockPos.containing((double)this.pathToPosition.getX(), this.mob.getY(), (double)this.pathToPosition.getZ()).closerToCenterThan(this.mob.position(), (double)this.mob.getBbWidth()))) { + // FORGE: Fix MC-94054 -+ if (!this.f_26578_.m_203195_(this.f_26494_.m_20182_(), Math.max((double)this.f_26494_.m_20205_(), 1.0D)) && (!(this.f_26494_.m_20186_() > (double)this.f_26578_.m_123342_()) || !(BlockPos.m_274561_((double)this.f_26578_.m_123341_(), this.f_26494_.m_20186_(), (double)this.f_26578_.m_123343_())).m_203195_(this.f_26494_.m_20182_(), Math.max((double)this.f_26494_.m_20205_(), 1.0D)))) { - this.f_26494_.m_21566_().m_6849_((double)this.f_26578_.m_123341_(), (double)this.f_26578_.m_123342_(), (double)this.f_26578_.m_123343_(), this.f_26497_); ++ if (!this.pathToPosition.closerToCenterThan(this.mob.position(), Math.max((double)this.mob.getBbWidth(), 1.0D)) && (!(this.mob.getY() > (double)this.pathToPosition.getY()) || !(BlockPos.containing((double)this.pathToPosition.getX(), this.mob.getY(), (double)this.pathToPosition.getZ())).closerToCenterThan(this.mob.position(), Math.max((double)this.mob.getBbWidth(), 1.0D)))) { + this.mob.getMoveControl().setWantedPosition((double)this.pathToPosition.getX(), (double)this.pathToPosition.getY(), (double)this.pathToPosition.getZ(), this.speedModifier); } else { - this.f_26578_ = null; + this.pathToPosition = null; diff --git a/patches/minecraft/net/minecraft/world/entity/ai/village/VillageSiege.java.patch b/patches/minecraft/net/minecraft/world/entity/ai/village/VillageSiege.java.patch index 3c95a94834..0ce6efee72 100644 --- a/patches/minecraft/net/minecraft/world/entity/ai/village/VillageSiege.java.patch +++ b/patches/minecraft/net/minecraft/world/entity/ai/village/VillageSiege.java.patch @@ -1,22 +1,22 @@ --- a/net/minecraft/world/entity/ai/village/VillageSiege.java +++ b/net/minecraft/world/entity/ai/village/VillageSiege.java @@ -78,7 +_,9 @@ - this.f_27002_ = blockpos.m_123341_() + Mth.m_14143_(Mth.m_14089_(f) * 32.0F); - this.f_27003_ = blockpos.m_123342_(); - this.f_27004_ = blockpos.m_123343_() + Mth.m_14143_(Mth.m_14031_(f) * 32.0F); -- if (this.m_27009_(p_27008_, new BlockPos(this.f_27002_, this.f_27003_, this.f_27004_)) != null) { -+ Vec3 siegeLocation = this.m_27009_(p_27008_, new BlockPos(this.f_27002_, this.f_27003_, this.f_27004_)); + this.spawnX = blockpos.getX() + Mth.floor(Mth.cos(f) * 32.0F); + this.spawnY = blockpos.getY(); + this.spawnZ = blockpos.getZ() + Mth.floor(Mth.sin(f) * 32.0F); +- if (this.findRandomSpawnPos(p_27008_, new BlockPos(this.spawnX, this.spawnY, this.spawnZ)) != null) { ++ Vec3 siegeLocation = this.findRandomSpawnPos(p_27008_, new BlockPos(this.spawnX, this.spawnY, this.spawnZ)); + if (siegeLocation != null) { + if (net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.event.village.VillageSiegeEvent(this, p_27008_, player, siegeLocation))) return false; - this.f_27001_ = 0; - this.f_27000_ = 20; + this.nextSpawnTime = 0; + this.zombiesToSpawn = 20; break; @@ -98,7 +_,7 @@ if (vec3 != null) { Zombie zombie; try { - zombie = new Zombie(p_27017_); -+ zombie = EntityType.f_20501_.m_20615_(p_27017_); //Forge: Direct Initialization is deprecated, use EntityType. - zombie.m_6518_(p_27017_, p_27017_.m_6436_(zombie.m_20183_()), MobSpawnType.EVENT, (SpawnGroupData)null, (CompoundTag)null); ++ zombie = EntityType.ZOMBIE.create(p_27017_); //Forge: Direct Initialization is deprecated, use EntityType. + zombie.finalizeSpawn(p_27017_, p_27017_.getCurrentDifficultyAt(zombie.blockPosition()), MobSpawnType.EVENT, (SpawnGroupData)null, (CompoundTag)null); } catch (Exception exception) { - f_26997_.warn("Failed to create zombie for village siege at {}", vec3, exception); + LOGGER.warn("Failed to create zombie for village siege at {}", vec3, exception); diff --git a/patches/minecraft/net/minecraft/world/entity/ai/village/poi/PoiTypes.java.patch b/patches/minecraft/net/minecraft/world/entity/ai/village/poi/PoiTypes.java.patch index 7488c9a561..7937ac5519 100644 --- a/patches/minecraft/net/minecraft/world/entity/ai/village/poi/PoiTypes.java.patch +++ b/patches/minecraft/net/minecraft/world/entity/ai/village/poi/PoiTypes.java.patch @@ -1,31 +1,31 @@ --- a/net/minecraft/world/entity/ai/village/poi/PoiTypes.java +++ b/net/minecraft/world/entity/ai/village/poi/PoiTypes.java @@ -48,7 +_,9 @@ - private static final Set f_218069_ = ImmutableList.of(Blocks.f_50256_, Blocks.f_152477_, Blocks.f_152476_, Blocks.f_152478_).stream().flatMap((p_218093_) -> { - return p_218093_.m_49965_().m_61056_().stream(); + private static final Set CAULDRONS = ImmutableList.of(Blocks.CAULDRON, Blocks.LAVA_CAULDRON, Blocks.WATER_CAULDRON, Blocks.POWDER_SNOW_CAULDRON).stream().flatMap((p_218093_) -> { + return p_218093_.getStateDefinition().getPossibleStates().stream(); }).collect(ImmutableSet.toImmutableSet()); -- private static final Map> f_218070_ = Maps.newHashMap(); +- private static final Map> TYPE_BY_STATE = Maps.newHashMap(); + // Forge: We patch these 2 fields to support modded entries -+ private static final Map f_218070_ = net.minecraftforge.registries.GameData.getBlockStatePointOfInterestTypeMap(); -+ protected static final Set f_218067_ = f_218070_.keySet(); ++ private static final Map TYPE_BY_STATE = net.minecraftforge.registries.GameData.getBlockStatePointOfInterestTypeMap(); ++ protected static final Set f_218067_ = TYPE_BY_STATE.keySet(); - private static Set m_218073_(Block p_218074_) { - return ImmutableSet.copyOf(p_218074_.m_49965_().m_61056_()); + private static Set getBlockStates(Block p_218074_) { + return ImmutableSet.copyOf(p_218074_.getStateDefinition().getPossibleStates()); @@ -66,16 +_,10 @@ } - private static void m_246216_(Holder p_250815_, Set p_250679_) { + private static void registerBlockStates(Holder p_250815_, Set p_250679_) { - p_250679_.forEach((p_218081_) -> { -- Holder holder = f_218070_.put(p_218081_, p_250815_); +- Holder holder = TYPE_BY_STATE.put(p_218081_, p_250815_); - if (holder != null) { -- throw (IllegalStateException)Util.m_137570_(new IllegalStateException(String.format(Locale.ROOT, "%s is defined in more than one PoI type", p_218081_))); +- throw (IllegalStateException)Util.pauseInIde(new IllegalStateException(String.format(Locale.ROOT, "%s is defined in more than one PoI type", p_218081_))); - } - }); } - public static Optional> m_218075_(BlockState p_218076_) { -- return Optional.ofNullable(f_218070_.get(p_218076_)); -+ return Optional.ofNullable(f_218070_.get(p_218076_)).flatMap(net.minecraftforge.registries.ForgeRegistries.POI_TYPES::getHolder); + public static Optional> forState(BlockState p_218076_) { +- return Optional.ofNullable(TYPE_BY_STATE.get(p_218076_)); ++ return Optional.ofNullable(TYPE_BY_STATE.get(p_218076_)).flatMap(net.minecraftforge.registries.ForgeRegistries.POI_TYPES::getHolder); } - public static boolean m_252831_(BlockState p_254440_) { + public static boolean hasPoi(BlockState p_254440_) { diff --git a/patches/minecraft/net/minecraft/world/entity/animal/Animal.java.patch b/patches/minecraft/net/minecraft/world/entity/animal/Animal.java.patch index 3bfcd9ffa8..8300932dc2 100644 --- a/patches/minecraft/net/minecraft/world/entity/animal/Animal.java.patch +++ b/patches/minecraft/net/minecraft/world/entity/animal/Animal.java.patch @@ -2,19 +2,19 @@ +++ b/net/minecraft/world/entity/animal/Animal.java @@ -202,6 +_,17 @@ - public void m_27563_(ServerLevel p_27564_, Animal p_27565_) { - AgeableMob ageablemob = this.m_142606_(p_27564_, p_27565_); + public void spawnChildFromBreeding(ServerLevel p_27564_, Animal p_27565_) { + AgeableMob ageablemob = this.getBreedOffspring(p_27564_, p_27565_); + final net.minecraftforge.event.entity.living.BabyEntitySpawnEvent event = new net.minecraftforge.event.entity.living.BabyEntitySpawnEvent(this, p_27565_, ageablemob); + final boolean cancelled = net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(event); + ageablemob = event.getChild(); + if (cancelled) { + //Reset the "inLove" state for the animals -+ this.m_146762_(6000); -+ p_27565_.m_146762_(6000); -+ this.m_27594_(); -+ p_27565_.m_27594_(); ++ this.setAge(6000); ++ p_27565_.setAge(6000); ++ this.resetLove(); ++ p_27565_.resetLove(); + return; + } if (ageablemob != null) { - ageablemob.m_6863_(true); - ageablemob.m_7678_(this.m_20185_(), this.m_20186_(), this.m_20189_(), 0.0F, 0.0F); + ageablemob.setBaby(true); + ageablemob.moveTo(this.getX(), this.getY(), this.getZ(), 0.0F, 0.0F); diff --git a/patches/minecraft/net/minecraft/world/entity/animal/Bee.java.patch b/patches/minecraft/net/minecraft/world/entity/animal/Bee.java.patch index 1a23d7232d..ef5ee0a259 100644 --- a/patches/minecraft/net/minecraft/world/entity/animal/Bee.java.patch +++ b/patches/minecraft/net/minecraft/world/entity/animal/Bee.java.patch @@ -3,23 +3,23 @@ @@ -473,7 +_,7 @@ return false; } else { - BlockEntity blockentity = this.m_9236_().m_7702_(this.f_27698_); -- return blockentity != null && blockentity.m_58903_() == BlockEntityType.f_58912_; + BlockEntity blockentity = this.level().getBlockEntity(this.hivePos); +- return blockentity != null && blockentity.getType() == BlockEntityType.BEEHIVE; + return blockentity instanceof BeehiveBlockEntity; } } @@ -612,8 +_,18 @@ - return MobType.f_21642_; + return MobType.ARTHROPOD; } + @Deprecated // FORGE: use jumpInFluid instead - protected void m_203347_(TagKey p_204061_) { + protected void jumpInLiquid(TagKey p_204061_) { + this.jumpInLiquidInternal(); + } + + private void jumpInLiquidInternal() { - this.m_20256_(this.m_20184_().m_82520_(0.0D, 0.01D, 0.0D)); + this.setDeltaMovement(this.getDeltaMovement().add(0.0D, 0.01D, 0.0D)); + } + + @Override @@ -27,4 +27,4 @@ + this.jumpInLiquidInternal(); } - public Vec3 m_7939_() { + public Vec3 getLeashOffset() { diff --git a/patches/minecraft/net/minecraft/world/entity/animal/Cat.java.patch b/patches/minecraft/net/minecraft/world/entity/animal/Cat.java.patch index 96d199f6c7..2b3a885a0c 100644 --- a/patches/minecraft/net/minecraft/world/entity/animal/Cat.java.patch +++ b/patches/minecraft/net/minecraft/world/entity/animal/Cat.java.patch @@ -1,21 +1,21 @@ --- a/net/minecraft/world/entity/animal/Cat.java +++ b/net/minecraft/world/entity/animal/Cat.java @@ -366,8 +_,8 @@ - if (this.m_21830_(p_28153_)) { + if (this.isOwnedBy(p_28153_)) { if (!(item instanceof DyeItem)) { - if (item.m_41472_() && this.m_6898_(itemstack) && this.m_21223_() < this.m_21233_()) { -+ this.m_5634_((float)itemstack.getFoodProperties(this).m_38744_()); - this.m_142075_(p_28153_, p_28154_, itemstack); -- this.m_5634_((float)item.m_41473_().m_38744_()); + if (item.isEdible() && this.isFood(itemstack) && this.getHealth() < this.getMaxHealth()) { ++ this.heal((float)itemstack.getFoodProperties(this).getNutrition()); + this.usePlayerItem(p_28153_, p_28154_, itemstack); +- this.heal((float)item.getFoodProperties().getNutrition()); return InteractionResult.CONSUME; } @@ -392,7 +_,7 @@ } - } else if (this.m_6898_(itemstack)) { - this.m_142075_(p_28153_, p_28154_, itemstack); -- if (this.f_19796_.m_188503_(3) == 0) { -+ if (this.f_19796_.m_188503_(3) == 0 && !net.minecraftforge.event.ForgeEventFactory.onAnimalTame(this, p_28153_)) { - this.m_21828_(p_28153_); - this.m_21839_(true); - this.m_9236_().m_7605_(this, (byte)7); + } else if (this.isFood(itemstack)) { + this.usePlayerItem(p_28153_, p_28154_, itemstack); +- if (this.random.nextInt(3) == 0) { ++ if (this.random.nextInt(3) == 0 && !net.minecraftforge.event.ForgeEventFactory.onAnimalTame(this, p_28153_)) { + this.tame(p_28153_); + this.setOrderedToSit(true); + this.level().broadcastEntityEvent(this, (byte)7); diff --git a/patches/minecraft/net/minecraft/world/entity/animal/Fox.java.patch b/patches/minecraft/net/minecraft/world/entity/animal/Fox.java.patch index 7bd88382fe..05d123ad3a 100644 --- a/patches/minecraft/net/minecraft/world/entity/animal/Fox.java.patch +++ b/patches/minecraft/net/minecraft/world/entity/animal/Fox.java.patch @@ -3,54 +3,54 @@ @@ -655,13 +_,16 @@ } - protected void m_6668_(DamageSource p_28536_) { -+ super.m_6668_(p_28536_); + protected void dropAllDeathLoot(DamageSource p_28536_) { ++ super.dropAllDeathLoot(p_28536_); + } -+ protected void m_5907_() { // Forge: move extra drops to dropEquipment to allow them to be captured by LivingDropsEvent -+ super.m_5907_(); - ItemStack itemstack = this.m_6844_(EquipmentSlot.MAINHAND); - if (!itemstack.m_41619_()) { - this.m_19983_(itemstack); - this.m_8061_(EquipmentSlot.MAINHAND, ItemStack.f_41583_); ++ protected void dropEquipment() { // Forge: move extra drops to dropEquipment to allow them to be captured by LivingDropsEvent ++ super.dropEquipment(); + ItemStack itemstack = this.getItemBySlot(EquipmentSlot.MAINHAND); + if (!itemstack.isEmpty()) { + this.spawnAtLocation(itemstack); + this.setItemSlot(EquipmentSlot.MAINHAND, ItemStack.EMPTY); } -- super.m_6668_(p_28536_); +- super.dropAllDeathLoot(p_28536_); } - protected Vector3f m_292594_(Entity p_301360_, EntityDimensions p_299584_, float p_299082_) { + protected Vector3f getPassengerAttachmentPoint(Entity p_301360_, EntityDimensions p_299584_, float p_299082_) { @@ -815,6 +_,17 @@ - protected void m_8026_() { - ServerLevel serverlevel = (ServerLevel)this.f_25114_; - Fox fox = (Fox)this.f_25113_.m_142606_(serverlevel, this.f_25115_); -+ final net.minecraftforge.event.entity.living.BabyEntitySpawnEvent event = new net.minecraftforge.event.entity.living.BabyEntitySpawnEvent(f_25113_, f_25115_, fox); + protected void breed() { + ServerLevel serverlevel = (ServerLevel)this.level; + Fox fox = (Fox)this.animal.getBreedOffspring(serverlevel, this.partner); ++ final net.minecraftforge.event.entity.living.BabyEntitySpawnEvent event = new net.minecraftforge.event.entity.living.BabyEntitySpawnEvent(animal, partner, fox); + final boolean cancelled = net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(event); + fox = (Fox) event.getChild(); + if (cancelled) { + //Reset the "inLove" state for the animals -+ this.f_25113_.m_146762_(6000); -+ this.f_25115_.m_146762_(6000); -+ this.f_25113_.m_27594_(); -+ this.f_25115_.m_27594_(); ++ this.animal.setAge(6000); ++ this.partner.setAge(6000); ++ this.animal.resetLove(); ++ this.partner.resetLove(); + return; + } if (fox != null) { - ServerPlayer serverplayer = this.f_25113_.m_27592_(); - ServerPlayer serverplayer1 = this.f_25115_.m_27592_(); + ServerPlayer serverplayer = this.animal.getLoveCause(); + ServerPlayer serverplayer1 = this.partner.getLoveCause(); @@ -886,7 +_,7 @@ } - protected void m_28686_() { -- if (Fox.this.m_9236_().m_46469_().m_46207_(GameRules.f_46132_)) { -+ if (net.minecraftforge.event.ForgeEventFactory.getMobGriefingEvent(Fox.this.m_9236_(), Fox.this)) { - BlockState blockstate = Fox.this.m_9236_().m_8055_(this.f_25602_); - if (blockstate.m_60713_(Blocks.f_50685_)) { - this.m_148928_(blockstate); + protected void onReachedTarget() { +- if (Fox.this.level().getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) { ++ if (net.minecraftforge.event.ForgeEventFactory.getMobGriefingEvent(Fox.this.level(), Fox.this)) { + BlockState blockstate = Fox.this.level().getBlockState(this.blockPos); + if (blockstate.is(Blocks.SWEET_BERRY_BUSH)) { + this.pickSweetBerries(blockstate); @@ -942,7 +_,7 @@ } - public boolean m_8036_() { -- return Fox.this.m_20069_() && Fox.this.m_204036_(FluidTags.f_13131_) > 0.25D || Fox.this.m_20077_(); -+ return Fox.this.m_20069_() && Fox.this.m_204036_(FluidTags.f_13131_) > 0.25D || Fox.this.m_20077_() || Fox.this.isInFluidType((fluidType, height) -> Fox.this.canSwimInFluidType(fluidType) && height > 0.25D); + public boolean canUse() { +- return Fox.this.isInWater() && Fox.this.getFluidHeight(FluidTags.WATER) > 0.25D || Fox.this.isInLava(); ++ return Fox.this.isInWater() && Fox.this.getFluidHeight(FluidTags.WATER) > 0.25D || Fox.this.isInLava() || Fox.this.isInFluidType((fluidType, height) -> Fox.this.canSwimInFluidType(fluidType) && height > 0.25D); } } diff --git a/patches/minecraft/net/minecraft/world/entity/animal/MushroomCow.java.patch b/patches/minecraft/net/minecraft/world/entity/animal/MushroomCow.java.patch index f65417518d..5b54a61b24 100644 --- a/patches/minecraft/net/minecraft/world/entity/animal/MushroomCow.java.patch +++ b/patches/minecraft/net/minecraft/world/entity/animal/MushroomCow.java.patch @@ -6,44 +6,44 @@ -public class MushroomCow extends Cow implements Shearable, VariantHolder { +public class MushroomCow extends Cow implements Shearable, net.minecraftforge.common.IForgeShearable { - private static final EntityDataAccessor f_28908_ = SynchedEntityData.m_135353_(MushroomCow.class, EntityDataSerializers.f_135030_); - private static final int f_148934_ = 1024; - private static final String f_291553_ = "stew_effects"; + private static final EntityDataAccessor DATA_TYPE = SynchedEntityData.defineId(MushroomCow.class, EntityDataSerializers.STRING); + private static final int MUTATE_CHANCE = 1024; + private static final String TAG_STEW_EFFECTS = "stew_effects"; @@ -102,7 +_,7 @@ - this.m_5496_(soundevent, 1.0F, 1.0F); - return InteractionResult.m_19078_(this.m_9236_().f_46443_); -- } else if (itemstack.m_150930_(Items.f_42574_) && this.m_6220_()) { -+ } else if (false && itemstack.m_41720_() == Items.f_42574_ && this.m_6220_()) { //Forge: Moved to onSheared - this.m_5851_(SoundSource.PLAYERS); - this.m_146852_(GameEvent.f_157781_, p_28941_); - if (!this.m_9236_().f_46443_) { + this.playSound(soundevent, 1.0F, 1.0F); + return InteractionResult.sidedSuccess(this.level().isClientSide); +- } else if (itemstack.is(Items.SHEARS) && this.readyForShearing()) { ++ } else if (false && itemstack.getItem() == Items.SHEARS && this.readyForShearing()) { //Forge: Moved to onSheared + this.shear(SoundSource.PLAYERS); + this.gameEvent(GameEvent.SHEAR, p_28941_); + if (!this.level().isClientSide) { @@ -141,7 +_,17 @@ } } + @Override + public java.util.List onSheared(@org.jetbrains.annotations.Nullable Player player, @org.jetbrains.annotations.NotNull ItemStack item, Level world, BlockPos pos, int fortune) { -+ this.m_146852_(GameEvent.f_157781_, player); ++ this.gameEvent(GameEvent.SHEAR, player); + return shearInternal(player == null ? SoundSource.BLOCKS : SoundSource.PLAYERS); + } + - public void m_5851_(SoundSource p_28924_) { -+ shearInternal(p_28924_).forEach(s -> this.m_9236_().m_7967_(new ItemEntity(this.m_9236_(), this.m_20185_(), this.m_20227_(1.0D), this.m_20189_(), s))); + public void shear(SoundSource p_28924_) { ++ shearInternal(p_28924_).forEach(s -> this.level().addFreshEntity(new ItemEntity(this.level(), this.getX(), this.getY(1.0D), this.getZ(), s))); + } + + private java.util.List shearInternal(SoundSource p_28924_) { - this.m_9236_().m_6269_((Player)null, this, SoundEvents.f_12075_, p_28924_, 1.0F, 1.0F); - if (!this.m_9236_().m_5776_()) { - Cow cow = EntityType.f_20557_.m_20615_(this.m_9236_()); + this.level().playSound((Player)null, this, SoundEvents.MOOSHROOM_SHEAR, p_28924_, 1.0F, 1.0F); + if (!this.level().isClientSide()) { + Cow cow = EntityType.COW.create(this.level()); @@ -163,11 +_,14 @@ - cow.m_20331_(this.m_20147_()); - this.m_9236_().m_7967_(cow); + cow.setInvulnerable(this.isInvulnerable()); + this.level().addFreshEntity(cow); + java.util.List items = new java.util.ArrayList<>(); for(int i = 0; i < 5; ++i) { -- this.m_9236_().m_7967_(new ItemEntity(this.m_9236_(), this.m_20185_(), this.m_20227_(1.0D), this.m_20189_(), new ItemStack(this.m_28554_().f_28961_.m_60734_()))); -+ items.add(new ItemStack(this.m_28554_().f_28961_.m_60734_())); +- this.level().addFreshEntity(new ItemEntity(this.level(), this.getX(), this.getY(1.0D), this.getZ(), new ItemStack(this.getVariant().blockState.getBlock()))); ++ items.add(new ItemStack(this.getVariant().blockState.getBlock())); } + return items; } @@ -60,7 +60,7 @@ + + @Override + public boolean isShearable(ItemStack item, Level world, BlockPos pos) { -+ return m_6220_(); ++ return readyForShearing(); } public static enum MushroomType implements StringRepresentable { diff --git a/patches/minecraft/net/minecraft/world/entity/animal/Ocelot.java.patch b/patches/minecraft/net/minecraft/world/entity/animal/Ocelot.java.patch index 4505694809..757464f26f 100644 --- a/patches/minecraft/net/minecraft/world/entity/animal/Ocelot.java.patch +++ b/patches/minecraft/net/minecraft/world/entity/animal/Ocelot.java.patch @@ -1,11 +1,11 @@ --- a/net/minecraft/world/entity/animal/Ocelot.java +++ b/net/minecraft/world/entity/animal/Ocelot.java @@ -162,7 +_,7 @@ - if ((this.f_28984_ == null || this.f_28984_.m_25955_()) && !this.m_29038_() && this.m_6898_(itemstack) && p_29021_.m_20280_(this) < 9.0D) { - this.m_142075_(p_29021_, p_29022_, itemstack); - if (!this.m_9236_().f_46443_) { -- if (this.f_19796_.m_188503_(3) == 0) { -+ if (this.f_19796_.m_188503_(3) == 0 && !net.minecraftforge.event.ForgeEventFactory.onAnimalTame(this, p_29021_)) { - this.m_29045_(true); - this.m_29047_(true); - this.m_9236_().m_7605_(this, (byte)41); + if ((this.temptGoal == null || this.temptGoal.isRunning()) && !this.isTrusting() && this.isFood(itemstack) && p_29021_.distanceToSqr(this) < 9.0D) { + this.usePlayerItem(p_29021_, p_29022_, itemstack); + if (!this.level().isClientSide) { +- if (this.random.nextInt(3) == 0) { ++ if (this.random.nextInt(3) == 0 && !net.minecraftforge.event.ForgeEventFactory.onAnimalTame(this, p_29021_)) { + this.setTrusting(true); + this.spawnTrustingParticles(true); + this.level().broadcastEntityEvent(this, (byte)41); diff --git a/patches/minecraft/net/minecraft/world/entity/animal/Parrot.java.patch b/patches/minecraft/net/minecraft/world/entity/animal/Parrot.java.patch index 0247353a47..b66a54c1fe 100644 --- a/patches/minecraft/net/minecraft/world/entity/animal/Parrot.java.patch +++ b/patches/minecraft/net/minecraft/world/entity/animal/Parrot.java.patch @@ -3,9 +3,9 @@ @@ -246,7 +_,7 @@ } - if (!this.m_9236_().f_46443_) { -- if (this.f_19796_.m_188503_(10) == 0) { -+ if (this.f_19796_.m_188503_(10) == 0 && !net.minecraftforge.event.ForgeEventFactory.onAnimalTame(this, p_29414_)) { - this.m_21828_(p_29414_); - this.m_9236_().m_7605_(this, (byte)7); + if (!this.level().isClientSide) { +- if (this.random.nextInt(10) == 0) { ++ if (this.random.nextInt(10) == 0 && !net.minecraftforge.event.ForgeEventFactory.onAnimalTame(this, p_29414_)) { + this.tame(p_29414_); + this.level().broadcastEntityEvent(this, (byte)7); } else { diff --git a/patches/minecraft/net/minecraft/world/entity/animal/Pig.java.patch b/patches/minecraft/net/minecraft/world/entity/animal/Pig.java.patch index 31ac80500c..b48a196d7f 100644 --- a/patches/minecraft/net/minecraft/world/entity/animal/Pig.java.patch +++ b/patches/minecraft/net/minecraft/world/entity/animal/Pig.java.patch @@ -3,17 +3,17 @@ @@ -203,7 +_,7 @@ } - public void m_8038_(ServerLevel p_29473_, LightningBolt p_29474_) { -- if (p_29473_.m_46791_() != Difficulty.PEACEFUL) { -+ if (p_29473_.m_46791_() != Difficulty.PEACEFUL && net.minecraftforge.event.ForgeEventFactory.canLivingConvert(this, EntityType.f_20531_, (timer) -> {})) { - ZombifiedPiglin zombifiedpiglin = EntityType.f_20531_.m_20615_(p_29473_); + public void thunderHit(ServerLevel p_29473_, LightningBolt p_29474_) { +- if (p_29473_.getDifficulty() != Difficulty.PEACEFUL) { ++ if (p_29473_.getDifficulty() != Difficulty.PEACEFUL && net.minecraftforge.event.ForgeEventFactory.canLivingConvert(this, EntityType.ZOMBIFIED_PIGLIN, (timer) -> {})) { + ZombifiedPiglin zombifiedpiglin = EntityType.ZOMBIFIED_PIGLIN.create(p_29473_); if (zombifiedpiglin != null) { - zombifiedpiglin.m_8061_(EquipmentSlot.MAINHAND, new ItemStack(Items.f_42430_)); + zombifiedpiglin.setItemSlot(EquipmentSlot.MAINHAND, new ItemStack(Items.GOLDEN_SWORD)); @@ -216,6 +_,7 @@ } - zombifiedpiglin.m_21530_(); + zombifiedpiglin.setPersistenceRequired(); + net.minecraftforge.event.ForgeEventFactory.onLivingConvert(this, zombifiedpiglin); - p_29473_.m_7967_(zombifiedpiglin); - this.m_146870_(); + p_29473_.addFreshEntity(zombifiedpiglin); + this.discard(); } else { diff --git a/patches/minecraft/net/minecraft/world/entity/animal/Rabbit.java.patch b/patches/minecraft/net/minecraft/world/entity/animal/Rabbit.java.patch index 9556d8865a..835b778c32 100644 --- a/patches/minecraft/net/minecraft/world/entity/animal/Rabbit.java.patch +++ b/patches/minecraft/net/minecraft/world/entity/animal/Rabbit.java.patch @@ -2,10 +2,10 @@ +++ b/net/minecraft/world/entity/animal/Rabbit.java @@ -515,7 +_,7 @@ - public boolean m_8036_() { - if (this.f_25600_ <= 0) { -- if (!this.f_29778_.m_9236_().m_46469_().m_46207_(GameRules.f_46132_)) { -+ if (!net.minecraftforge.event.ForgeEventFactory.getMobGriefingEvent(this.f_29778_.m_9236_(), this.f_29778_)) { + public boolean canUse() { + if (this.nextStartTick <= 0) { +- if (!this.rabbit.level().getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) { ++ if (!net.minecraftforge.event.ForgeEventFactory.getMobGriefingEvent(this.rabbit.level(), this.rabbit)) { return false; } diff --git a/patches/minecraft/net/minecraft/world/entity/animal/Sheep.java.patch b/patches/minecraft/net/minecraft/world/entity/animal/Sheep.java.patch index 5b28076242..da4dddc8f2 100644 --- a/patches/minecraft/net/minecraft/world/entity/animal/Sheep.java.patch +++ b/patches/minecraft/net/minecraft/world/entity/animal/Sheep.java.patch @@ -6,40 +6,40 @@ -public class Sheep extends Animal implements Shearable { +public class Sheep extends Animal implements Shearable, net.minecraftforge.common.IForgeShearable { - private static final int f_149039_ = 40; - private static final EntityDataAccessor f_29799_ = SynchedEntityData.m_135353_(Sheep.class, EntityDataSerializers.f_135027_); - private static final Map f_29800_ = Util.m_137469_(Maps.newEnumMap(DyeColor.class), (p_29841_) -> { + private static final int EAT_ANIMATION_TICKS = 40; + private static final EntityDataAccessor DATA_WOOL_ID = SynchedEntityData.defineId(Sheep.class, EntityDataSerializers.BYTE); + private static final Map ITEM_BY_DYE = Util.make(Maps.newEnumMap(DyeColor.class), (p_29841_) -> { @@ -235,7 +_,7 @@ - public InteractionResult m_6071_(Player p_29853_, InteractionHand p_29854_) { - ItemStack itemstack = p_29853_.m_21120_(p_29854_); -- if (itemstack.m_150930_(Items.f_42574_)) { -+ if (false && itemstack.m_41720_() == Items.f_42574_) { //Forge: Moved to onSheared - if (!this.m_9236_().f_46443_ && this.m_6220_()) { - this.m_5851_(SoundSource.PLAYERS); - this.m_146852_(GameEvent.f_157781_, p_29853_); + public InteractionResult mobInteract(Player p_29853_, InteractionHand p_29854_) { + ItemStack itemstack = p_29853_.getItemInHand(p_29854_); +- if (itemstack.is(Items.SHEARS)) { ++ if (false && itemstack.getItem() == Items.SHEARS) { //Forge: Moved to onSheared + if (!this.level().isClientSide && this.readyForShearing()) { + this.shear(SoundSource.PLAYERS); + this.gameEvent(GameEvent.SHEAR, p_29853_); @@ -392,5 +_,27 @@ - protected Vector3f m_292594_(Entity p_297780_, EntityDimensions p_298437_, float p_300315_) { - return new Vector3f(0.0F, p_298437_.f_20378_ - 0.0625F * p_300315_, 0.0F); + protected Vector3f getPassengerAttachmentPoint(Entity p_297780_, EntityDimensions p_298437_, float p_300315_) { + return new Vector3f(0.0F, p_298437_.height - 0.0625F * p_300315_, 0.0F); + } + + @Override + public boolean isShearable(@org.jetbrains.annotations.NotNull ItemStack item, Level world, BlockPos pos) { -+ return m_6220_(); ++ return readyForShearing(); + } + + @Override + public java.util.List onSheared(@Nullable Player player, ItemStack item, Level world, BlockPos pos, int fortune) { -+ world.m_6269_(null, this, SoundEvents.f_12344_, player == null ? SoundSource.BLOCKS : SoundSource.PLAYERS, 1.0F, 1.0F); -+ this.m_146852_(GameEvent.f_157781_, player); -+ if (!world.f_46443_) { -+ this.m_29878_(true); -+ int i = 1 + this.f_19796_.m_188503_(3); ++ world.playSound(null, this, SoundEvents.SHEEP_SHEAR, player == null ? SoundSource.BLOCKS : SoundSource.PLAYERS, 1.0F, 1.0F); ++ this.gameEvent(GameEvent.SHEAR, player); ++ if (!world.isClientSide) { ++ this.setSheared(true); ++ int i = 1 + this.random.nextInt(3); + + java.util.List items = new java.util.ArrayList<>(); + for (int j = 0; j < i; ++j) { -+ items.add(new ItemStack(f_29800_.get(this.m_29874_()))); ++ items.add(new ItemStack(ITEM_BY_DYE.get(this.getColor()))); + } + return items; + } diff --git a/patches/minecraft/net/minecraft/world/entity/animal/SnowGolem.java.patch b/patches/minecraft/net/minecraft/world/entity/animal/SnowGolem.java.patch index ea0ae0f665..8dc7847ec7 100644 --- a/patches/minecraft/net/minecraft/world/entity/animal/SnowGolem.java.patch +++ b/patches/minecraft/net/minecraft/world/entity/animal/SnowGolem.java.patch @@ -6,55 +6,55 @@ -public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackMob { +public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackMob, net.minecraftforge.common.IForgeShearable { - private static final EntityDataAccessor f_29899_ = SynchedEntityData.m_135353_(SnowGolem.class, EntityDataSerializers.f_135027_); - private static final byte f_149047_ = 16; - private static final float f_149048_ = 1.7F; + private static final EntityDataAccessor DATA_PUMPKIN_ID = SynchedEntityData.defineId(SnowGolem.class, EntityDataSerializers.BYTE); + private static final byte PUMPKIN_FLAG = 16; + private static final float EYE_HEIGHT = 1.7F; @@ -92,7 +_,7 @@ - this.m_6469_(this.m_269291_().m_269549_(), 1.0F); + this.hurt(this.damageSources().onFire(), 1.0F); } -- if (!this.m_9236_().m_46469_().m_46207_(GameRules.f_46132_)) { -+ if (!net.minecraftforge.event.ForgeEventFactory.getMobGriefingEvent(this.m_9236_(), this)) { +- if (!this.level().getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) { ++ if (!net.minecraftforge.event.ForgeEventFactory.getMobGriefingEvent(this.level(), this)) { return; } @@ -103,7 +_,7 @@ - int k = Mth.m_14107_(this.m_20186_()); - int l = Mth.m_14107_(this.m_20189_() + (double)((float)(i / 2 % 2 * 2 - 1) * 0.25F)); + int k = Mth.floor(this.getY()); + int l = Mth.floor(this.getZ() + (double)((float)(i / 2 % 2 * 2 - 1) * 0.25F)); BlockPos blockpos = new BlockPos(j, k, l); -- if (this.m_9236_().m_8055_(blockpos).m_60795_() && blockstate.m_60710_(this.m_9236_(), blockpos)) { -+ if (this.m_9236_().m_46859_(blockpos) && blockstate.m_60710_(this.m_9236_(), blockpos)) { - this.m_9236_().m_46597_(blockpos, blockstate); - this.m_9236_().m_220407_(GameEvent.f_157797_, blockpos, GameEvent.Context.m_223719_(this, blockstate)); +- if (this.level().getBlockState(blockpos).isAir() && blockstate.canSurvive(this.level(), blockpos)) { ++ if (this.level().isEmptyBlock(blockpos) && blockstate.canSurvive(this.level(), blockpos)) { + this.level().setBlockAndUpdate(blockpos, blockstate); + this.level().gameEvent(GameEvent.BLOCK_PLACE, blockpos, GameEvent.Context.of(this, blockstate)); } @@ -130,7 +_,7 @@ - protected InteractionResult m_6071_(Player p_29920_, InteractionHand p_29921_) { - ItemStack itemstack = p_29920_.m_21120_(p_29921_); -- if (itemstack.m_150930_(Items.f_42574_) && this.m_6220_()) { -+ if (false && itemstack.m_41720_() == Items.f_42574_ && this.m_6220_()) { //Forge: Moved to onSheared - this.m_5851_(SoundSource.PLAYERS); - this.m_146852_(GameEvent.f_157781_, p_29920_); - if (!this.m_9236_().f_46443_) { + protected InteractionResult mobInteract(Player p_29920_, InteractionHand p_29921_) { + ItemStack itemstack = p_29920_.getItemInHand(p_29921_); +- if (itemstack.is(Items.SHEARS) && this.readyForShearing()) { ++ if (false && itemstack.getItem() == Items.SHEARS && this.readyForShearing()) { //Forge: Moved to onSheared + this.shear(SoundSource.PLAYERS); + this.gameEvent(GameEvent.SHEAR, p_29920_); + if (!this.level().isClientSide) { @@ -189,5 +_,22 @@ - public Vec3 m_7939_() { - return new Vec3(0.0D, (double)(0.75F * this.m_20192_()), (double)(this.m_20205_() * 0.4F)); + public Vec3 getLeashOffset() { + return new Vec3(0.0D, (double)(0.75F * this.getEyeHeight()), (double)(this.getBbWidth() * 0.4F)); + } + + @Override + public boolean isShearable(@org.jetbrains.annotations.NotNull ItemStack item, Level world, BlockPos pos) { -+ return m_6220_(); ++ return readyForShearing(); + } + + @org.jetbrains.annotations.NotNull + @Override + public java.util.List onSheared(@Nullable Player player, @org.jetbrains.annotations.NotNull ItemStack item, Level world, BlockPos pos, int fortune) { -+ world.m_6269_(null, this, SoundEvents.f_12480_, player == null ? SoundSource.BLOCKS : SoundSource.PLAYERS, 1.0F, 1.0F); -+ this.m_146852_(GameEvent.f_157781_, player); -+ if (!world.m_5776_()) { -+ m_29936_(false); -+ return java.util.Collections.singletonList(new ItemStack(Items.f_42047_)); ++ world.playSound(null, this, SoundEvents.SNOW_GOLEM_SHEAR, player == null ? SoundSource.BLOCKS : SoundSource.PLAYERS, 1.0F, 1.0F); ++ this.gameEvent(GameEvent.SHEAR, player); ++ if (!world.isClientSide()) { ++ setPumpkin(false); ++ return java.util.Collections.singletonList(new ItemStack(Items.CARVED_PUMPKIN)); + } + return java.util.Collections.emptyList(); } diff --git a/patches/minecraft/net/minecraft/world/entity/animal/Wolf.java.patch b/patches/minecraft/net/minecraft/world/entity/animal/Wolf.java.patch index 0159985959..242e2bfa40 100644 --- a/patches/minecraft/net/minecraft/world/entity/animal/Wolf.java.patch +++ b/patches/minecraft/net/minecraft/world/entity/animal/Wolf.java.patch @@ -2,33 +2,33 @@ +++ b/net/minecraft/world/entity/animal/Wolf.java @@ -325,11 +_,12 @@ return flag ? InteractionResult.CONSUME : InteractionResult.PASS; - } else if (this.m_21824_()) { - if (this.m_6898_(itemstack) && this.m_21223_() < this.m_21233_()) { -+ this.m_5634_((float)itemstack.getFoodProperties(this).m_38744_()); - if (!p_30412_.m_150110_().f_35937_) { - itemstack.m_41774_(1); + } else if (this.isTame()) { + if (this.isFood(itemstack) && this.getHealth() < this.getMaxHealth()) { ++ this.heal((float)itemstack.getFoodProperties(this).getNutrition()); + if (!p_30412_.getAbilities().instabuild) { + itemstack.shrink(1); } -- this.m_5634_((float)item.m_41473_().m_38744_()); -+ this.m_146852_(GameEvent.f_157806_, this); +- this.heal((float)item.getFoodProperties().getNutrition()); ++ this.gameEvent(GameEvent.EAT, this); return InteractionResult.SUCCESS; } else { if (item instanceof DyeItem) { @@ -365,7 +_,7 @@ - itemstack.m_41774_(1); + itemstack.shrink(1); } -- if (this.f_19796_.m_188503_(3) == 0) { -+ if (this.f_19796_.m_188503_(3) == 0 && !net.minecraftforge.event.ForgeEventFactory.onAnimalTame(this, p_30412_)) { - this.m_21828_(p_30412_); - this.f_21344_.m_26573_(); - this.m_6710_((LivingEntity)null); +- if (this.random.nextInt(3) == 0) { ++ if (this.random.nextInt(3) == 0 && !net.minecraftforge.event.ForgeEventFactory.onAnimalTame(this, p_30412_)) { + this.tame(p_30412_); + this.navigation.stop(); + this.setTarget((LivingEntity)null); @@ -404,7 +_,7 @@ - public boolean m_6898_(ItemStack p_30440_) { - Item item = p_30440_.m_41720_(); -- return item.m_41472_() && item.m_41473_().m_38746_(); -+ return item.m_41472_() && p_30440_.getFoodProperties(this).m_38746_(); + public boolean isFood(ItemStack p_30440_) { + Item item = p_30440_.getItem(); +- return item.isEdible() && item.getFoodProperties().isMeat(); ++ return item.isEdible() && p_30440_.getFoodProperties(this).isMeat(); } - public int m_5792_() { + public int getMaxSpawnClusterSize() { diff --git a/patches/minecraft/net/minecraft/world/entity/animal/allay/Allay.java.patch b/patches/minecraft/net/minecraft/world/entity/animal/allay/Allay.java.patch index e899b951d5..c429103e16 100644 --- a/patches/minecraft/net/minecraft/world/entity/animal/allay/Allay.java.patch +++ b/patches/minecraft/net/minecraft/world/entity/animal/allay/Allay.java.patch @@ -2,10 +2,10 @@ +++ b/net/minecraft/world/entity/animal/allay/Allay.java @@ -324,7 +_,7 @@ - public boolean m_7243_(ItemStack p_218387_) { - ItemStack itemstack = this.m_21120_(InteractionHand.MAIN_HAND); -- return !itemstack.m_41619_() && this.m_9236_().m_46469_().m_46207_(GameRules.f_46132_) && this.f_218303_.m_19183_(p_218387_) && this.m_245613_(itemstack, p_218387_); -+ return !itemstack.m_41619_() && this.f_218303_.m_19183_(p_218387_) && this.m_245613_(itemstack, p_218387_) && net.minecraftforge.event.ForgeEventFactory.getMobGriefingEvent(this.m_9236_(), this); + public boolean wantsToPickUp(ItemStack p_218387_) { + ItemStack itemstack = this.getItemInHand(InteractionHand.MAIN_HAND); +- return !itemstack.isEmpty() && this.level().getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING) && this.inventory.canAddItem(p_218387_) && this.allayConsidersItemEqual(itemstack, p_218387_); ++ return !itemstack.isEmpty() && this.inventory.canAddItem(p_218387_) && this.allayConsidersItemEqual(itemstack, p_218387_) && net.minecraftforge.event.ForgeEventFactory.getMobGriefingEvent(this.level(), this); } - private boolean m_245613_(ItemStack p_252278_, ItemStack p_250405_) { + private boolean allayConsidersItemEqual(ItemStack p_252278_, ItemStack p_250405_) { diff --git a/patches/minecraft/net/minecraft/world/entity/animal/camel/Camel.java.patch b/patches/minecraft/net/minecraft/world/entity/animal/camel/Camel.java.patch index b57124590a..88ef86ceac 100644 --- a/patches/minecraft/net/minecraft/world/entity/animal/camel/Camel.java.patch +++ b/patches/minecraft/net/minecraft/world/entity/animal/camel/Camel.java.patch @@ -3,9 +3,9 @@ @@ -302,7 +_,7 @@ } - protected void m_7355_(BlockPos p_252056_, BlockState p_251457_) { -- if (p_251457_.m_204336_(BlockTags.f_290764_)) { -+ if (p_251457_.getSoundType(m_9236_(), p_252056_, this) == net.minecraft.world.level.block.SoundType.f_56746_) { - this.m_5496_(SoundEvents.f_244016_, 1.0F, 1.0F); + protected void playStepSound(BlockPos p_252056_, BlockState p_251457_) { +- if (p_251457_.is(BlockTags.CAMEL_SAND_STEP_SOUND_BLOCKS)) { ++ if (p_251457_.getSoundType(level(), p_252056_, this) == net.minecraft.world.level.block.SoundType.SAND) { + this.playSound(SoundEvents.CAMEL_STEP_SAND, 1.0F, 1.0F); } else { - this.m_5496_(SoundEvents.f_244506_, 1.0F, 1.0F); + this.playSound(SoundEvents.CAMEL_STEP, 1.0F, 1.0F); diff --git a/patches/minecraft/net/minecraft/world/entity/animal/horse/AbstractHorse.java.patch b/patches/minecraft/net/minecraft/world/entity/animal/horse/AbstractHorse.java.patch index c11a55ec3e..a45e6ddd42 100644 --- a/patches/minecraft/net/minecraft/world/entity/animal/horse/AbstractHorse.java.patch +++ b/patches/minecraft/net/minecraft/world/entity/animal/horse/AbstractHorse.java.patch @@ -2,43 +2,43 @@ +++ b/net/minecraft/world/entity/animal/horse/AbstractHorse.java @@ -328,6 +_,7 @@ - this.f_30520_.m_19164_(this); - this.m_7493_(); -+ this.itemHandler = net.minecraftforge.common.util.LazyOptional.of(() -> new net.minecraftforge.items.wrapper.InvWrapper(this.f_30520_)); + this.inventory.addListener(this); + this.updateContainerEquipment(); ++ this.itemHandler = net.minecraftforge.common.util.LazyOptional.of(() -> new net.minecraftforge.items.wrapper.InvWrapper(this.inventory)); } - protected void m_7493_() { + protected void updateContainerEquipment() { @@ -375,9 +_,9 @@ - protected void m_7355_(BlockPos p_30584_, BlockState p_30585_) { - if (!p_30585_.m_278721_()) { - BlockState blockstate = this.m_9236_().m_8055_(p_30584_.m_7494_()); -- SoundType soundtype = p_30585_.m_60827_(); -+ SoundType soundtype = p_30585_.getSoundType(m_9236_(), p_30584_, this); - if (blockstate.m_60713_(Blocks.f_50125_)) { -- soundtype = blockstate.m_60827_(); -+ soundtype = blockstate.getSoundType(m_9236_(), p_30584_, this); + protected void playStepSound(BlockPos p_30584_, BlockState p_30585_) { + if (!p_30585_.liquid()) { + BlockState blockstate = this.level().getBlockState(p_30584_.above()); +- SoundType soundtype = p_30585_.getSoundType(); ++ SoundType soundtype = p_30585_.getSoundType(level(), p_30584_, this); + if (blockstate.is(Blocks.SNOW)) { +- soundtype = blockstate.getSoundType(); ++ soundtype = blockstate.getSoundType(level(), p_30584_, this); } - if (this.m_20160_() && this.f_30523_) { + if (this.isVehicle() && this.canGallop) { @@ -787,6 +_,7 @@ - this.m_20334_(vec3.f_82479_, d1, vec3.f_82481_); - this.m_30655_(true); - this.f_19812_ = true; + this.setDeltaMovement(vec3.x, d1, vec3.z); + this.setIsJumping(true); + this.hasImpulse = true; + net.minecraftforge.common.ForgeHooks.onLivingJump(this); - if (p_275435_.f_82481_ > 0.0D) { - float f = Mth.m_14031_(this.m_146908_() * ((float)Math.PI / 180F)); - float f1 = Mth.m_14089_(this.m_146908_() * ((float)Math.PI / 180F)); + if (p_275435_.z > 0.0D) { + float f = Mth.sin(this.getYRot() * ((float)Math.PI / 180F)); + float f1 = Mth.cos(this.getYRot() * ((float)Math.PI / 180F)); @@ -1109,6 +_,25 @@ - this.m_214179_(p_30555_.m_213780_()); - return super.m_6518_(p_30555_, p_30556_, p_30557_, p_30558_, p_30559_); + this.randomizeAttributes(p_30555_.getRandom()); + return super.finalizeSpawn(p_30555_, p_30556_, p_30557_, p_30558_, p_30559_); + } + + private net.minecraftforge.common.util.LazyOptional itemHandler = null; + + @Override + public net.minecraftforge.common.util.LazyOptional getCapability(net.minecraftforge.common.capabilities.Capability capability, @Nullable net.minecraft.core.Direction facing) { -+ if (this.m_6084_() && capability == net.minecraftforge.common.capabilities.ForgeCapabilities.ITEM_HANDLER && itemHandler != null) ++ if (this.isAlive() && capability == net.minecraftforge.common.capabilities.ForgeCapabilities.ITEM_HANDLER && itemHandler != null) + return itemHandler.cast(); + return super.getCapability(capability, facing); + } @@ -53,4 +53,4 @@ + } } - public boolean m_149511_(Container p_149512_) { + public boolean hasInventoryChanged(Container p_149512_) { diff --git a/patches/minecraft/net/minecraft/world/entity/animal/horse/Horse.java.patch b/patches/minecraft/net/minecraft/world/entity/animal/horse/Horse.java.patch index e62f7952a9..606b6ef619 100644 --- a/patches/minecraft/net/minecraft/world/entity/animal/horse/Horse.java.patch +++ b/patches/minecraft/net/minecraft/world/entity/animal/horse/Horse.java.patch @@ -1,11 +1,11 @@ --- a/net/minecraft/world/entity/animal/horse/Horse.java +++ b/net/minecraft/world/entity/animal/horse/Horse.java @@ -144,6 +_,8 @@ - this.m_5496_(SoundEvents.f_11974_, p_30709_.m_56773_() * 0.6F, p_30709_.m_56774_()); + this.playSound(SoundEvents.HORSE_BREATHE, p_30709_.getVolume() * 0.6F, p_30709_.getPitch()); } -+ ItemStack stack = this.f_30520_.m_8020_(1); -+ if (m_6010_(stack)) stack.onHorseArmorTick(m_9236_(), this); ++ ItemStack stack = this.inventory.getItem(1); ++ if (isArmor(stack)) stack.onHorseArmorTick(level(), this); } - protected SoundEvent m_7515_() { + protected SoundEvent getAmbientSound() { diff --git a/patches/minecraft/net/minecraft/world/entity/animal/horse/SkeletonTrapGoal.java.patch b/patches/minecraft/net/minecraft/world/entity/animal/horse/SkeletonTrapGoal.java.patch index 4c6bc60d84..e92585e302 100644 --- a/patches/minecraft/net/minecraft/world/entity/animal/horse/SkeletonTrapGoal.java.patch +++ b/patches/minecraft/net/minecraft/world/entity/animal/horse/SkeletonTrapGoal.java.patch @@ -2,15 +2,15 @@ +++ b/net/minecraft/world/entity/animal/horse/SkeletonTrapGoal.java @@ -28,6 +_,10 @@ - public void m_8037_() { - ServerLevel serverlevel = (ServerLevel)this.f_30925_.m_9236_(); + public void tick() { + ServerLevel serverlevel = (ServerLevel)this.horse.level(); + // Forge: Trigger the trap in a tick task to avoid crashes when mods add goals to skeleton horses + // (MC-206338/Forge PR #7509) -+ serverlevel.m_7654_().m_6937_(new net.minecraft.server.TickTask(serverlevel.m_7654_().m_129921_(), () -> { -+ if (!this.f_30925_.m_6084_()) return; - DifficultyInstance difficultyinstance = serverlevel.m_6436_(this.f_30925_.m_20183_()); - this.f_30925_.m_30923_(false); - this.f_30925_.m_30651_(true); ++ serverlevel.getServer().tell(new net.minecraft.server.TickTask(serverlevel.getServer().getTickCount(), () -> { ++ if (!this.horse.isAlive()) return; + DifficultyInstance difficultyinstance = serverlevel.getCurrentDifficultyAt(this.horse.blockPosition()); + this.horse.setTrap(false); + this.horse.setTamed(true); @@ -56,6 +_,7 @@ } diff --git a/patches/minecraft/net/minecraft/world/entity/animal/sniffer/Sniffer.java.patch b/patches/minecraft/net/minecraft/world/entity/animal/sniffer/Sniffer.java.patch index 991b930bc4..abcd572d7d 100644 --- a/patches/minecraft/net/minecraft/world/entity/animal/sniffer/Sniffer.java.patch +++ b/patches/minecraft/net/minecraft/world/entity/animal/sniffer/Sniffer.java.patch @@ -3,9 +3,9 @@ @@ -275,7 +_,7 @@ } - if (this.f_19797_ % 10 == 0) { -- this.m_9236_().m_7785_(this.m_20185_(), this.m_20186_(), this.m_20189_(), blockstate.m_60827_().m_56778_(), this.m_5720_(), 0.5F, 0.5F, false); -+ this.m_9236_().m_7785_(this.m_20185_(), this.m_20186_(), this.m_20189_(), blockstate.getSoundType(m_9236_(), blockpos.m_7495_(), this).m_56778_(), this.m_5720_(), 0.5F, 0.5F, false); + if (this.tickCount % 10 == 0) { +- this.level().playLocalSound(this.getX(), this.getY(), this.getZ(), blockstate.getSoundType().getHitSound(), this.getSoundSource(), 0.5F, 0.5F, false); ++ this.level().playLocalSound(this.getX(), this.getY(), this.getZ(), blockstate.getSoundType(level(), blockpos.below(), this).getHitSound(), this.getSoundSource(), 0.5F, 0.5F, false); } } } diff --git a/patches/minecraft/net/minecraft/world/entity/boss/EnderDragonPart.java.patch b/patches/minecraft/net/minecraft/world/entity/boss/EnderDragonPart.java.patch index 3203eededf..dfa7fee38b 100644 --- a/patches/minecraft/net/minecraft/world/entity/boss/EnderDragonPart.java.patch +++ b/patches/minecraft/net/minecraft/world/entity/boss/EnderDragonPart.java.patch @@ -6,13 +6,13 @@ -public class EnderDragonPart extends Entity { +public class EnderDragonPart extends net.minecraftforge.entity.PartEntity { - public final EnderDragon f_31010_; - public final String f_31011_; - private final EntityDimensions f_31012_; + public final EnderDragon parentMob; + public final String name; + private final EntityDimensions size; public EnderDragonPart(EnderDragon p_31014_, String p_31015_, float p_31016_, float p_31017_) { -- super(p_31014_.m_6095_(), p_31014_.m_9236_()); +- super(p_31014_.getType(), p_31014_.level()); + super(p_31014_); - this.f_31012_ = EntityDimensions.m_20395_(p_31016_, p_31017_); - this.m_6210_(); - this.f_31010_ = p_31014_; + this.size = EntityDimensions.scalable(p_31016_, p_31017_); + this.refreshDimensions(); + this.parentMob = p_31014_; diff --git a/patches/minecraft/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java.patch b/patches/minecraft/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java.patch index 959ebee1aa..c0d0068d6f 100644 --- a/patches/minecraft/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java.patch +++ b/patches/minecraft/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java.patch @@ -1,61 +1,61 @@ --- a/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java +++ b/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java @@ -104,6 +_,14 @@ - this.f_19794_ = true; - this.f_19811_ = true; - this.f_31074_ = new EnderDragonPhaseManager(this); -+ this.m_20234_(f_19843_.getAndAdd(this.f_31089_.length + 1) + 1); // Forge: Fix MC-158205: Make sure part ids are successors of parent mob id + this.noPhysics = true; + this.noCulling = true; + this.phaseManager = new EnderDragonPhaseManager(this); ++ this.setId(ENTITY_COUNTER.getAndAdd(this.subEntities.length + 1) + 1); // Forge: Fix MC-158205: Make sure part ids are successors of parent mob id + } + + @Override -+ public void m_20234_(int p_20235_) { -+ super.m_20234_(p_20235_); -+ for (int i = 0; i < this.f_31089_.length; i++) // Forge: Fix MC-158205: Set part ids to successors of parent mob id -+ this.f_31089_[i].m_20234_(p_20235_ + i + 1); ++ public void setId(int p_20235_) { ++ super.setId(p_20235_); ++ for (int i = 0; i < this.subEntities.length; i++) // Forge: Fix MC-158205: Set part ids to successors of parent mob id ++ this.subEntities[i].setId(p_20235_ + i + 1); } - public void m_287231_(EndDragonFight p_287736_) { + public void setDragonFight(EndDragonFight p_287736_) { @@ -159,7 +_,11 @@ return adouble; } + @org.jetbrains.annotations.Nullable private Player unlimitedLastHurtByPlayer = null; - public void m_8107_() { + public void aiStep() { + // lastHurtByPlayer is cleared after 100 ticks, capture it indefinitely in unlimitedLastHurtByPlayer for LivingExperienceDropEvent -+ if (this.f_20888_ != null) this.unlimitedLastHurtByPlayer = f_20888_; -+ if (this.unlimitedLastHurtByPlayer != null && this.unlimitedLastHurtByPlayer.m_213877_()) this.unlimitedLastHurtByPlayer = null; - this.m_146874_(); - if (this.m_9236_().f_46443_) { - this.m_21153_(this.m_21223_()); ++ if (this.lastHurtByPlayer != null) this.unlimitedLastHurtByPlayer = lastHurtByPlayer; ++ if (this.unlimitedLastHurtByPlayer != null && this.unlimitedLastHurtByPlayer.isRemoved()) this.unlimitedLastHurtByPlayer = null; + this.processFlappingMovement(); + if (this.level().isClientSide) { + this.setHealth(this.getHealth()); @@ -433,7 +_,7 @@ BlockPos blockpos = new BlockPos(k1, l1, i2); - BlockState blockstate = this.m_9236_().m_8055_(blockpos); - if (!blockstate.m_60795_() && !blockstate.m_204336_(BlockTags.f_215822_)) { -- if (this.m_9236_().m_46469_().m_46207_(GameRules.f_46132_) && !blockstate.m_204336_(BlockTags.f_13069_)) { -+ if (net.minecraftforge.common.ForgeHooks.canEntityDestroy(this.m_9236_(), blockpos, this) && !blockstate.m_204336_(BlockTags.f_13069_)) { - flag1 = this.m_9236_().m_7471_(blockpos, false) || flag1; + BlockState blockstate = this.level().getBlockState(blockpos); + if (!blockstate.isAir() && !blockstate.is(BlockTags.DRAGON_TRANSPARENT)) { +- if (this.level().getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING) && !blockstate.is(BlockTags.DRAGON_IMMUNE)) { ++ if (net.minecraftforge.common.ForgeHooks.canEntityDestroy(this.level(), blockpos, this) && !blockstate.is(BlockTags.DRAGON_IMMUNE)) { + flag1 = this.level().removeBlock(blockpos, false) || flag1; } else { flag = true; @@ -524,7 +_,8 @@ - if (this.m_9236_() instanceof ServerLevel) { - if (this.f_31084_ > 150 && this.f_31084_ % 5 == 0 && flag) { -- ExperienceOrb.m_147082_((ServerLevel)this.m_9236_(), this.m_20182_(), Mth.m_14143_((float)i * 0.08F)); -+ int award = net.minecraftforge.event.ForgeEventFactory.getExperienceDrop(this, this.unlimitedLastHurtByPlayer, Mth.m_14143_((float)i * 0.08F)); -+ ExperienceOrb.m_147082_((ServerLevel) this.m_9236_(), this.m_20182_(), award); + if (this.level() instanceof ServerLevel) { + if (this.dragonDeathTime > 150 && this.dragonDeathTime % 5 == 0 && flag) { +- ExperienceOrb.award((ServerLevel)this.level(), this.position(), Mth.floor((float)i * 0.08F)); ++ int award = net.minecraftforge.event.ForgeEventFactory.getExperienceDrop(this, this.unlimitedLastHurtByPlayer, Mth.floor((float)i * 0.08F)); ++ ExperienceOrb.award((ServerLevel) this.level(), this.position(), award); } - if (this.f_31084_ == 1 && !this.m_20067_()) { + if (this.dragonDeathTime == 1 && !this.isSilent()) { @@ -535,7 +_,8 @@ - this.m_6478_(MoverType.SELF, new Vec3(0.0D, (double)0.1F, 0.0D)); - if (this.f_31084_ == 200 && this.m_9236_() instanceof ServerLevel) { + this.move(MoverType.SELF, new Vec3(0.0D, (double)0.1F, 0.0D)); + if (this.dragonDeathTime == 200 && this.level() instanceof ServerLevel) { if (flag) { -- ExperienceOrb.m_147082_((ServerLevel)this.m_9236_(), this.m_20182_(), Mth.m_14143_((float)i * 0.2F)); -+ int award = net.minecraftforge.event.ForgeEventFactory.getExperienceDrop(this, this.unlimitedLastHurtByPlayer, Mth.m_14143_((float)i * 0.2F)); -+ ExperienceOrb.m_147082_((ServerLevel) this.m_9236_(), this.m_20182_(), award); +- ExperienceOrb.award((ServerLevel)this.level(), this.position(), Mth.floor((float)i * 0.2F)); ++ int award = net.minecraftforge.event.ForgeEventFactory.getExperienceDrop(this, this.unlimitedLastHurtByPlayer, Mth.floor((float)i * 0.2F)); ++ ExperienceOrb.award((ServerLevel) this.level(), this.position(), award); } - if (this.f_31073_ != null) { + if (this.dragonFight != null) { @@ -858,8 +_,19 @@ return false; } @@ -67,12 +67,12 @@ + + @Override + public net.minecraftforge.entity.PartEntity[] getParts() { -+ return this.f_31089_; ++ return this.subEntities; + } + - public void m_141965_(ClientboundAddEntityPacket p_218825_) { - super.m_141965_(p_218825_); + public void recreateFromPacket(ClientboundAddEntityPacket p_218825_) { + super.recreateFromPacket(p_218825_); + if (true) return; // Forge: Fix MC-158205: Moved into setId() - EnderDragonPart[] aenderdragonpart = this.m_31156_(); + EnderDragonPart[] aenderdragonpart = this.getSubEntities(); for(int i = 0; i < aenderdragonpart.length; ++i) { diff --git a/patches/minecraft/net/minecraft/world/entity/boss/wither/WitherBoss.java.patch b/patches/minecraft/net/minecraft/world/entity/boss/wither/WitherBoss.java.patch index c4516a5180..7dee16b661 100644 --- a/patches/minecraft/net/minecraft/world/entity/boss/wither/WitherBoss.java.patch +++ b/patches/minecraft/net/minecraft/world/entity/boss/wither/WitherBoss.java.patch @@ -2,20 +2,20 @@ +++ b/net/minecraft/world/entity/boss/wither/WitherBoss.java @@ -279,7 +_,7 @@ - if (this.f_31429_ > 0) { - --this.f_31429_; -- if (this.f_31429_ == 0 && this.m_9236_().m_46469_().m_46207_(GameRules.f_46132_)) { -+ if (this.f_31429_ == 0 && net.minecraftforge.event.ForgeEventFactory.getMobGriefingEvent(this.m_9236_(), this)) { - int j1 = Mth.m_14107_(this.m_20186_()); - int i2 = Mth.m_14107_(this.m_20185_()); - int j2 = Mth.m_14107_(this.m_20189_()); + if (this.destroyBlocksTick > 0) { + --this.destroyBlocksTick; +- if (this.destroyBlocksTick == 0 && this.level().getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) { ++ if (this.destroyBlocksTick == 0 && net.minecraftforge.event.ForgeEventFactory.getMobGriefingEvent(this.level(), this)) { + int j1 = Mth.floor(this.getY()); + int i2 = Mth.floor(this.getX()); + int j2 = Mth.floor(this.getZ()); @@ -293,7 +_,7 @@ int i1 = j2 + k2; BlockPos blockpos = new BlockPos(l2, l, i1); - BlockState blockstate = this.m_9236_().m_8055_(blockpos); -- if (m_31491_(blockstate)) { -+ if (blockstate.canEntityDestroy(this.m_9236_(), blockpos, this) && net.minecraftforge.event.ForgeEventFactory.onEntityDestroyBlock(this, blockpos, blockstate)) { - flag = this.m_9236_().m_46953_(blockpos, true, this) || flag; + BlockState blockstate = this.level().getBlockState(blockpos); +- if (canDestroy(blockstate)) { ++ if (blockstate.canEntityDestroy(this.level(), blockpos, this) && net.minecraftforge.event.ForgeEventFactory.onEntityDestroyBlock(this, blockpos, blockstate)) { + flag = this.level().destroyBlock(blockpos, true, this) || flag; } } @@ -314,6 +_,10 @@ @@ -26,6 +26,6 @@ + * @deprecated Forge: Use {@link BlockState#canEntityDestroy(net.minecraft.world.level.BlockGetter, BlockPos, Entity)} instead. + */ + @Deprecated - public static boolean m_31491_(BlockState p_31492_) { - return !p_31492_.m_60795_() && !p_31492_.m_204336_(BlockTags.f_13070_); + public static boolean canDestroy(BlockState p_31492_) { + return !p_31492_.isAir() && !p_31492_.is(BlockTags.WITHER_IMMUNE); } diff --git a/patches/minecraft/net/minecraft/world/entity/decoration/ArmorStand.java.patch b/patches/minecraft/net/minecraft/world/entity/decoration/ArmorStand.java.patch index 06b5e501e2..43a3ecd2dc 100644 --- a/patches/minecraft/net/minecraft/world/entity/decoration/ArmorStand.java.patch +++ b/patches/minecraft/net/minecraft/world/entity/decoration/ArmorStand.java.patch @@ -1,11 +1,11 @@ --- a/net/minecraft/world/entity/decoration/ArmorStand.java +++ b/net/minecraft/world/entity/decoration/ArmorStand.java @@ -71,7 +_,7 @@ - public static final EntityDataAccessor f_31550_ = SynchedEntityData.m_135353_(ArmorStand.class, EntityDataSerializers.f_135037_); - public static final EntityDataAccessor f_31527_ = SynchedEntityData.m_135353_(ArmorStand.class, EntityDataSerializers.f_135037_); - private static final Predicate f_31537_ = (p_31582_) -> { -- return p_31582_ instanceof AbstractMinecart && ((AbstractMinecart)p_31582_).m_6064_() == AbstractMinecart.Type.RIDEABLE; + public static final EntityDataAccessor DATA_LEFT_LEG_POSE = SynchedEntityData.defineId(ArmorStand.class, EntityDataSerializers.ROTATIONS); + public static final EntityDataAccessor DATA_RIGHT_LEG_POSE = SynchedEntityData.defineId(ArmorStand.class, EntityDataSerializers.ROTATIONS); + private static final Predicate RIDABLE_MINECARTS = (p_31582_) -> { +- return p_31582_ instanceof AbstractMinecart && ((AbstractMinecart)p_31582_).getMinecartType() == AbstractMinecart.Type.RIDEABLE; + return p_31582_ instanceof AbstractMinecart && ((AbstractMinecart)p_31582_).canBeRidden(); }; - private final NonNullList f_31538_ = NonNullList.m_122780_(2, ItemStack.f_41583_); - private final NonNullList f_31539_ = NonNullList.m_122780_(4, ItemStack.f_41583_); + private final NonNullList handItems = NonNullList.withSize(2, ItemStack.EMPTY); + private final NonNullList armorItems = NonNullList.withSize(4, ItemStack.EMPTY); diff --git a/patches/minecraft/net/minecraft/world/entity/decoration/HangingEntity.java.patch b/patches/minecraft/net/minecraft/world/entity/decoration/HangingEntity.java.patch index 80dfd2eee5..78695be9a7 100644 --- a/patches/minecraft/net/minecraft/world/entity/decoration/HangingEntity.java.patch +++ b/patches/minecraft/net/minecraft/world/entity/decoration/HangingEntity.java.patch @@ -2,10 +2,10 @@ +++ b/net/minecraft/world/entity/decoration/HangingEntity.java @@ -121,6 +_,8 @@ int j1 = (j - 1) / -2; - blockpos$mutableblockpos.m_122190_(blockpos).m_122175_(direction, k + i1).m_122175_(Direction.UP, l + j1); - BlockState blockstate = this.m_9236_().m_8055_(blockpos$mutableblockpos); -+ if (net.minecraft.world.level.block.Block.m_49863_(this.m_9236_(), blockpos$mutableblockpos, this.f_31699_)) + blockpos$mutableblockpos.set(blockpos).move(direction, k + i1).move(Direction.UP, l + j1); + BlockState blockstate = this.level().getBlockState(blockpos$mutableblockpos); ++ if (net.minecraft.world.level.block.Block.canSupportCenter(this.level(), blockpos$mutableblockpos, this.direction)) + continue; - if (!blockstate.m_280296_() && !DiodeBlock.m_52586_(blockstate)) { + if (!blockstate.isSolid() && !DiodeBlock.isDiode(blockstate)) { return false; } diff --git a/patches/minecraft/net/minecraft/world/entity/item/FallingBlockEntity.java.patch b/patches/minecraft/net/minecraft/world/entity/item/FallingBlockEntity.java.patch index 9b80205c49..a5645f111c 100644 --- a/patches/minecraft/net/minecraft/world/entity/item/FallingBlockEntity.java.patch +++ b/patches/minecraft/net/minecraft/world/entity/item/FallingBlockEntity.java.patch @@ -1,16 +1,16 @@ --- a/net/minecraft/world/entity/item/FallingBlockEntity.java +++ b/net/minecraft/world/entity/item/FallingBlockEntity.java @@ -120,11 +_,11 @@ - if (!this.m_9236_().f_46443_) { - BlockPos blockpos = this.m_20183_(); - boolean flag = this.f_31946_.m_60734_() instanceof ConcretePowderBlock; -- boolean flag1 = flag && this.m_9236_().m_6425_(blockpos).m_205070_(FluidTags.f_13131_); -+ boolean flag1 = flag && this.f_31946_.canBeHydrated(this.m_9236_(), blockpos, this.m_9236_().m_6425_(blockpos), blockpos); - double d0 = this.m_20184_().m_82556_(); + if (!this.level().isClientSide) { + BlockPos blockpos = this.blockPosition(); + boolean flag = this.blockState.getBlock() instanceof ConcretePowderBlock; +- boolean flag1 = flag && this.level().getFluidState(blockpos).is(FluidTags.WATER); ++ boolean flag1 = flag && this.blockState.canBeHydrated(this.level(), blockpos, this.level().getFluidState(blockpos), blockpos); + double d0 = this.getDeltaMovement().lengthSqr(); if (flag && d0 > 1.0D) { - BlockHitResult blockhitresult = this.m_9236_().m_45547_(new ClipContext(new Vec3(this.f_19854_, this.f_19855_, this.f_19856_), this.m_20182_(), ClipContext.Block.COLLIDER, ClipContext.Fluid.SOURCE_ONLY, this)); -- if (blockhitresult.m_6662_() != HitResult.Type.MISS && this.m_9236_().m_6425_(blockhitresult.m_82425_()).m_205070_(FluidTags.f_13131_)) { -+ if (blockhitresult.m_6662_() != HitResult.Type.MISS && this.f_31946_.canBeHydrated(this.m_9236_(), blockpos, this.m_9236_().m_6425_(blockhitresult.m_82425_()), blockhitresult.m_82425_())) { - blockpos = blockhitresult.m_82425_(); + BlockHitResult blockhitresult = this.level().clip(new ClipContext(new Vec3(this.xo, this.yo, this.zo), this.position(), ClipContext.Block.COLLIDER, ClipContext.Fluid.SOURCE_ONLY, this)); +- if (blockhitresult.getType() != HitResult.Type.MISS && this.level().getFluidState(blockhitresult.getBlockPos()).is(FluidTags.WATER)) { ++ if (blockhitresult.getType() != HitResult.Type.MISS && this.blockState.canBeHydrated(this.level(), blockpos, this.level().getFluidState(blockhitresult.getBlockPos()), blockhitresult.getBlockPos())) { + blockpos = blockhitresult.getBlockPos(); flag1 = true; } diff --git a/patches/minecraft/net/minecraft/world/entity/item/ItemEntity.java.patch b/patches/minecraft/net/minecraft/world/entity/item/ItemEntity.java.patch index 48f6d0864c..de6bcb6d64 100644 --- a/patches/minecraft/net/minecraft/world/entity/item/ItemEntity.java.patch +++ b/patches/minecraft/net/minecraft/world/entity/item/ItemEntity.java.patch @@ -2,149 +2,149 @@ +++ b/net/minecraft/world/entity/item/ItemEntity.java @@ -42,6 +_,10 @@ @Nullable - private UUID f_265881_; - public final float f_31983_; + private UUID target; + public final float bobOffs; + /** + * The maximum age of this EntityItem. The item is expired once this is reached. + */ -+ public int lifespan = ItemEntity.f_149659_; ++ public int lifespan = ItemEntity.LIFETIME; public ItemEntity(EntityType p_31991_, Level p_31992_) { super(p_31991_, p_31992_); @@ -58,6 +_,7 @@ - this.m_6034_(p_149664_, p_149665_, p_149666_); - this.m_20334_(p_149668_, p_149669_, p_149670_); - this.m_32045_(p_149667_); -+ this.lifespan = (p_149667_.m_41720_() == null ? ItemEntity.f_149659_ : p_149667_.getEntityLifespan(p_149663_)); + this.setPos(p_149664_, p_149665_, p_149666_); + this.setDeltaMovement(p_149668_, p_149669_, p_149670_); + this.setItem(p_149667_); ++ this.lifespan = (p_149667_.getItem() == null ? ItemEntity.LIFETIME : p_149667_.getEntityLifespan(p_149663_)); } private ItemEntity(ItemEntity p_31994_) { @@ -66,6 +_,7 @@ - this.m_20359_(p_31994_); - this.f_31985_ = p_31994_.f_31985_; - this.f_31983_ = p_31994_.f_31983_; + this.copyPosition(p_31994_); + this.age = p_31994_.age; + this.bobOffs = p_31994_.bobOffs; + this.lifespan = p_31994_.lifespan; } - public boolean m_213854_() { + public boolean dampensVibrations() { @@ -94,6 +_,7 @@ } - public void m_8119_() { -+ if (m_32055_().onEntityItemUpdate(this)) return; - if (this.m_32055_().m_41619_()) { - this.m_146870_(); + public void tick() { ++ if (getItem().onEntityItemUpdate(this)) return; + if (this.getItem().isEmpty()) { + this.discard(); } else { @@ -107,6 +_,9 @@ - this.f_19856_ = this.m_20189_(); - Vec3 vec3 = this.m_20184_(); - float f = this.m_20192_() - 0.11111111F; + this.zo = this.getZ(); + Vec3 vec3 = this.getDeltaMovement(); + float f = this.getEyeHeight() - 0.11111111F; + net.minecraftforge.fluids.FluidType fluidType = this.getMaxHeightFluidType(); + if (!fluidType.isAir() && !fluidType.isVanilla() && this.getFluidTypeHeight(fluidType) > (double)f) fluidType.setItemMovement(this); + else - if (this.m_20069_() && this.m_204036_(FluidTags.f_13131_) > (double)f) { - this.m_32067_(); - } else if (this.m_20077_() && this.m_204036_(FluidTags.f_13132_) > (double)f) { + if (this.isInWater() && this.getFluidHeight(FluidTags.WATER) > (double)f) { + this.setUnderwaterMovement(); + } else if (this.isInLava() && this.getFluidHeight(FluidTags.LAVA) > (double)f) { @@ -128,7 +_,8 @@ - this.m_6478_(MoverType.SELF, this.m_20184_()); + this.move(MoverType.SELF, this.getDeltaMovement()); float f1 = 0.98F; - if (this.m_20096_()) { -- f1 = this.m_9236_().m_8055_(this.m_20099_()).m_60734_().m_49958_() * 0.98F; -+ BlockPos groundPos = m_20099_(); -+ f1 = this.m_9236_().m_8055_(groundPos).getFriction(m_9236_(), groundPos, this) * 0.98F; + if (this.onGround()) { +- f1 = this.level().getBlockState(this.getBlockPosBelowThatAffectsMyMovement()).getBlock().getFriction() * 0.98F; ++ BlockPos groundPos = getBlockPosBelowThatAffectsMyMovement(); ++ f1 = this.level().getBlockState(groundPos).getFriction(level(), groundPos, this) * 0.98F; } - this.m_20256_(this.m_20184_().m_82542_((double)f1, 0.98D, (double)f1)); + this.setDeltaMovement(this.getDeltaMovement().multiply((double)f1, 0.98D, (double)f1)); @@ -158,7 +_,16 @@ } } -- if (!this.m_9236_().f_46443_ && this.f_31985_ >= 6000) { -+ ItemStack item = this.m_32055_(); -+ if (!this.m_9236_().f_46443_ && this.f_31985_ >= lifespan) { +- if (!this.level().isClientSide && this.age >= 6000) { ++ ItemStack item = this.getItem(); ++ if (!this.level().isClientSide && this.age >= lifespan) { + int hook = net.minecraftforge.event.ForgeEventFactory.onItemExpire(this, item); + if (hook < 0) { -+ this.m_146870_(); ++ this.discard(); + } else { + this.lifespan += hook; + } + } -+ if (item.m_41619_() && !this.m_213877_()) { - this.m_146870_(); ++ if (item.isEmpty() && !this.isRemoved()) { + this.discard(); } @@ -220,6 +_,8 @@ return false; - } else if (p_32028_.m_41782_() ^ p_32027_.m_41782_()) { + } else if (p_32028_.hasTag() ^ p_32027_.hasTag()) { return false; + } else if (!p_32027_.areCapsCompatible(p_32028_)) { + return false; } else { - return !p_32028_.m_41782_() || p_32028_.m_41783_().equals(p_32027_.m_41783_()); + return !p_32028_.hasTag() || p_32028_.getTag().equals(p_32027_.getTag()); } @@ -265,7 +_,7 @@ - this.f_31987_ = (int)((float)this.f_31987_ - p_32014_); - this.m_146852_(GameEvent.f_223706_, p_32013_.m_7639_()); - if (this.f_31987_ <= 0) { -- this.m_32055_().m_150924_(this); -+ this.m_32055_().onDestroyed(this, p_32013_); - this.m_146870_(); + this.health = (int)((float)this.health - p_32014_); + this.gameEvent(GameEvent.ENTITY_DAMAGE, p_32013_.getEntity()); + if (this.health <= 0) { +- this.getItem().onDestroyed(this); ++ this.getItem().onDestroyed(this, p_32013_); + this.discard(); } @@ -277,6 +_,7 @@ - p_32050_.m_128376_("Health", (short)this.f_31987_); - p_32050_.m_128376_("Age", (short)this.f_31985_); - p_32050_.m_128376_("PickupDelay", (short)this.f_31986_); -+ p_32050_.m_128405_("Lifespan", this.lifespan); - if (this.f_31988_ != null) { - p_32050_.m_128362_("Thrower", this.f_31988_); + p_32050_.putShort("Health", (short)this.health); + p_32050_.putShort("Age", (short)this.age); + p_32050_.putShort("PickupDelay", (short)this.pickupDelay); ++ p_32050_.putInt("Lifespan", this.lifespan); + if (this.thrower != null) { + p_32050_.putUUID("Thrower", this.thrower); } @@ -297,6 +_,9 @@ - if (p_32034_.m_128441_("PickupDelay")) { - this.f_31986_ = p_32034_.m_128448_("PickupDelay"); + if (p_32034_.contains("PickupDelay")) { + this.pickupDelay = p_32034_.getShort("PickupDelay"); } -+ if (p_32034_.m_128441_("Lifespan")) { -+ this.lifespan = p_32034_.m_128451_("Lifespan"); ++ if (p_32034_.contains("Lifespan")) { ++ this.lifespan = p_32034_.getInt("Lifespan"); + } - if (p_32034_.m_128403_("Owner")) { - this.f_265881_ = p_32034_.m_128342_("Owner"); + if (p_32034_.hasUUID("Owner")) { + this.target = p_32034_.getUUID("Owner"); @@ -316,10 +_,17 @@ - public void m_6123_(Player p_32040_) { - if (!this.m_9236_().f_46443_) { -+ if (this.f_31986_ > 0) return; - ItemStack itemstack = this.m_32055_(); - Item item = itemstack.m_41720_(); - int i = itemstack.m_41613_(); -- if (this.f_31986_ == 0 && (this.f_265881_ == null || this.f_265881_.equals(p_32040_.m_20148_())) && p_32040_.m_150109_().m_36054_(itemstack)) { + public void playerTouch(Player p_32040_) { + if (!this.level().isClientSide) { ++ if (this.pickupDelay > 0) return; + ItemStack itemstack = this.getItem(); + Item item = itemstack.getItem(); + int i = itemstack.getCount(); +- if (this.pickupDelay == 0 && (this.target == null || this.target.equals(p_32040_.getUUID())) && p_32040_.getInventory().add(itemstack)) { + int hook = net.minecraftforge.event.ForgeEventFactory.onItemPickup(this, p_32040_); + if (hook < 0) return; -+ ItemStack copy = itemstack.m_41777_(); -+ if (this.f_31986_ == 0 && (this.f_265881_ == null || this.f_265881_.equals(p_32040_.m_20148_())) && (hook == 1 || i <= 0 || p_32040_.m_150109_().m_36054_(itemstack))) { -+ i = copy.m_41613_() - itemstack.m_41613_(); -+ copy.m_41764_(i); ++ ItemStack copy = itemstack.copy(); ++ if (this.pickupDelay == 0 && (this.target == null || this.target.equals(p_32040_.getUUID())) && (hook == 1 || i <= 0 || p_32040_.getInventory().add(itemstack))) { ++ i = copy.getCount() - itemstack.getCount(); ++ copy.setCount(i); + net.minecraftforge.event.ForgeEventFactory.firePlayerItemPickupEvent(p_32040_, this, copy); - p_32040_.m_7938_(this, i); - if (itemstack.m_41619_()) { - this.m_146870_(); + p_32040_.take(this, i); + if (itemstack.isEmpty()) { + this.discard(); @@ -343,8 +_,8 @@ } @Nullable -- public Entity m_5489_(ServerLevel p_32042_) { -- Entity entity = super.m_5489_(p_32042_); +- public Entity changeDimension(ServerLevel p_32042_) { +- Entity entity = super.changeDimension(p_32042_); + public Entity changeDimension(ServerLevel p_32042_, net.minecraftforge.common.util.ITeleporter teleporter) { + Entity entity = super.changeDimension(p_32042_, teleporter); - if (!this.m_9236_().f_46443_ && entity instanceof ItemEntity) { - ((ItemEntity)entity).m_32069_(); + if (!this.level().isClientSide && entity instanceof ItemEntity) { + ((ItemEntity)entity).mergeWithNeighbours(); } @@ -410,7 +_,7 @@ - public void m_32065_() { - this.m_32062_(); -- this.f_31985_ = 5999; -+ this.f_31985_ = m_32055_().getEntityLifespan(this.m_9236_()) - 1; + public void makeFakeItem() { + this.setNeverPickUp(); +- this.age = 5999; ++ this.age = getItem().getEntityLifespan(this.level()) - 1; } - public float m_32008_(float p_32009_) { + public float getSpin(float p_32009_) { diff --git a/patches/minecraft/net/minecraft/world/entity/monster/AbstractSkeleton.java.patch b/patches/minecraft/net/minecraft/world/entity/monster/AbstractSkeleton.java.patch index e63e4fadb4..a4b4313700 100644 --- a/patches/minecraft/net/minecraft/world/entity/monster/AbstractSkeleton.java.patch +++ b/patches/minecraft/net/minecraft/world/entity/monster/AbstractSkeleton.java.patch @@ -1,23 +1,23 @@ --- a/net/minecraft/world/entity/monster/AbstractSkeleton.java +++ b/net/minecraft/world/entity/monster/AbstractSkeleton.java @@ -155,7 +_,7 @@ - if (this.m_9236_() != null && !this.m_9236_().f_46443_) { - this.f_21345_.m_25363_(this.f_32131_); - this.f_21345_.m_25363_(this.f_32130_); -- ItemStack itemstack = this.m_21120_(ProjectileUtil.m_37297_(this, Items.f_42411_)); -+ ItemStack itemstack = this.m_21120_(ProjectileUtil.getWeaponHoldingHand(this, item -> item instanceof net.minecraft.world.item.BowItem)); - if (itemstack.m_150930_(Items.f_42411_)) { + if (this.level() != null && !this.level().isClientSide) { + this.goalSelector.removeGoal(this.meleeGoal); + this.goalSelector.removeGoal(this.bowGoal); +- ItemStack itemstack = this.getItemInHand(ProjectileUtil.getWeaponHoldingHand(this, Items.BOW)); ++ ItemStack itemstack = this.getItemInHand(ProjectileUtil.getWeaponHoldingHand(this, item -> item instanceof net.minecraft.world.item.BowItem)); + if (itemstack.is(Items.BOW)) { int i = 20; - if (this.m_9236_().m_46791_() != Difficulty.HARD) { + if (this.level().getDifficulty() != Difficulty.HARD) { @@ -172,8 +_,10 @@ } - public void m_6504_(LivingEntity p_32141_, float p_32142_) { -- ItemStack itemstack = this.m_6298_(this.m_21120_(ProjectileUtil.m_37297_(this, Items.f_42411_))); -+ ItemStack itemstack = this.m_6298_(this.m_21120_(ProjectileUtil.getWeaponHoldingHand(this, item -> item instanceof net.minecraft.world.item.BowItem))); - AbstractArrow abstractarrow = this.m_7932_(itemstack, p_32142_); -+ if (this.m_21205_().m_41720_() instanceof net.minecraft.world.item.BowItem) -+ abstractarrow = ((net.minecraft.world.item.BowItem)this.m_21205_().m_41720_()).customArrow(abstractarrow); - double d0 = p_32141_.m_20185_() - this.m_20185_(); - double d1 = p_32141_.m_20227_(0.3333333333333333D) - abstractarrow.m_20186_(); - double d2 = p_32141_.m_20189_() - this.m_20189_(); + public void performRangedAttack(LivingEntity p_32141_, float p_32142_) { +- ItemStack itemstack = this.getProjectile(this.getItemInHand(ProjectileUtil.getWeaponHoldingHand(this, Items.BOW))); ++ ItemStack itemstack = this.getProjectile(this.getItemInHand(ProjectileUtil.getWeaponHoldingHand(this, item -> item instanceof net.minecraft.world.item.BowItem))); + AbstractArrow abstractarrow = this.getArrow(itemstack, p_32142_); ++ if (this.getMainHandItem().getItem() instanceof net.minecraft.world.item.BowItem) ++ abstractarrow = ((net.minecraft.world.item.BowItem)this.getMainHandItem().getItem()).customArrow(abstractarrow); + double d0 = p_32141_.getX() - this.getX(); + double d1 = p_32141_.getY(0.3333333333333333D) - abstractarrow.getY(); + double d2 = p_32141_.getZ() - this.getZ(); diff --git a/patches/minecraft/net/minecraft/world/entity/monster/CrossbowAttackMob.java.patch b/patches/minecraft/net/minecraft/world/entity/monster/CrossbowAttackMob.java.patch index cf2e2fbfb1..0b37f63821 100644 --- a/patches/minecraft/net/minecraft/world/entity/monster/CrossbowAttackMob.java.patch +++ b/patches/minecraft/net/minecraft/world/entity/monster/CrossbowAttackMob.java.patch @@ -1,14 +1,14 @@ --- a/net/minecraft/world/entity/monster/CrossbowAttackMob.java +++ b/net/minecraft/world/entity/monster/CrossbowAttackMob.java @@ -24,9 +_,9 @@ - void m_5847_(); + void onCrossbowAttackPerformed(); - default void m_32336_(LivingEntity p_32337_, float p_32338_) { -- InteractionHand interactionhand = ProjectileUtil.m_37297_(p_32337_, Items.f_42717_); + default void performCrossbowAttack(LivingEntity p_32337_, float p_32338_) { +- InteractionHand interactionhand = ProjectileUtil.getWeaponHoldingHand(p_32337_, Items.CROSSBOW); + InteractionHand interactionhand = ProjectileUtil.getWeaponHoldingHand(p_32337_, item -> item instanceof CrossbowItem); - ItemStack itemstack = p_32337_.m_21120_(interactionhand); -- if (p_32337_.m_21055_(Items.f_42717_)) { -+ if (p_32337_.m_21093_(is -> is.m_41720_() instanceof CrossbowItem)) { - CrossbowItem.m_40887_(p_32337_.m_9236_(), p_32337_, interactionhand, itemstack, p_32338_, (float)(14 - p_32337_.m_9236_().m_46791_().m_19028_() * 4)); + ItemStack itemstack = p_32337_.getItemInHand(interactionhand); +- if (p_32337_.isHolding(Items.CROSSBOW)) { ++ if (p_32337_.isHolding(is -> is.getItem() instanceof CrossbowItem)) { + CrossbowItem.performShooting(p_32337_.level(), p_32337_, interactionhand, itemstack, p_32338_, (float)(14 - p_32337_.level().getDifficulty().getId() * 4)); } diff --git a/patches/minecraft/net/minecraft/world/entity/monster/EnderMan.java.patch b/patches/minecraft/net/minecraft/world/entity/monster/EnderMan.java.patch index f819db3306..9b39268032 100644 --- a/patches/minecraft/net/minecraft/world/entity/monster/EnderMan.java.patch +++ b/patches/minecraft/net/minecraft/world/entity/monster/EnderMan.java.patch @@ -3,73 +3,73 @@ @@ -111,7 +_,6 @@ } - public void m_6710_(@Nullable LivingEntity p_32537_) { -- super.m_6710_(p_32537_); - AttributeInstance attributeinstance = this.m_21051_(Attributes.f_22279_); + public void setTarget(@Nullable LivingEntity p_32537_) { +- super.setTarget(p_32537_); + AttributeInstance attributeinstance = this.getAttribute(Attributes.MOVEMENT_SPEED); if (p_32537_ == null) { - this.f_32477_ = 0; + this.targetChangeTime = 0; @@ -126,6 +_,7 @@ } } -+ super.m_6710_(p_32537_); //Forge: Moved down to allow event handlers to write data manager values. ++ super.setTarget(p_32537_); //Forge: Moved down to allow event handlers to write data manager values. } - protected void m_8097_() { + protected void defineSynchedData() { @@ -200,7 +_,7 @@ - boolean m_32534_(Player p_32535_) { - ItemStack itemstack = p_32535_.m_150109_().f_35975_.get(3); -- if (itemstack.m_150930_(Blocks.f_50143_.m_5456_())) { + boolean isLookingAtMe(Player p_32535_) { + ItemStack itemstack = p_32535_.getInventory().armor.get(3); +- if (itemstack.is(Blocks.CARVED_PUMPKIN.asItem())) { + if (net.minecraftforge.common.ForgeHooks.shouldSuppressEnderManAnger(this, p_32535_, itemstack)) { return false; } else { - Vec3 vec3 = p_32535_.m_20252_(1.0F).m_82541_(); + Vec3 vec3 = p_32535_.getViewVector(1.0F).normalize(); @@ -283,8 +_,10 @@ - boolean flag = blockstate.m_280555_(); - boolean flag1 = blockstate.m_60819_().m_205070_(FluidTags.f_13131_); + boolean flag = blockstate.blocksMotion(); + boolean flag1 = blockstate.getFluidState().is(FluidTags.WATER); if (flag && !flag1) { + net.minecraftforge.event.entity.EntityTeleportEvent.EnderEntity event = net.minecraftforge.event.ForgeEventFactory.onEnderTeleport(this, p_32544_, p_32545_, p_32546_); + if (event.isCanceled()) return false; - Vec3 vec3 = this.m_20182_(); -- boolean flag2 = this.m_20984_(p_32544_, p_32545_, p_32546_, true); -+ boolean flag2 = this.m_20984_(event.getTargetX(), event.getTargetY(), event.getTargetZ(), true); + Vec3 vec3 = this.position(); +- boolean flag2 = this.randomTeleport(p_32544_, p_32545_, p_32546_, true); ++ boolean flag2 = this.randomTeleport(event.getTargetX(), event.getTargetY(), event.getTargetZ(), true); if (flag2) { - this.m_9236_().m_214171_(GameEvent.f_238175_, vec3, GameEvent.Context.m_223717_(this)); - if (!this.m_20067_()) { + this.level().gameEvent(GameEvent.TELEPORT, vec3, GameEvent.Context.of(this)); + if (!this.isSilent()) { @@ -424,7 +_,7 @@ - public boolean m_8036_() { - if (this.f_32554_.m_32530_() == null) { + public boolean canUse() { + if (this.enderman.getCarriedBlock() == null) { return false; -- } else if (!this.f_32554_.m_9236_().m_46469_().m_46207_(GameRules.f_46132_)) { -+ } else if (!net.minecraftforge.event.ForgeEventFactory.getMobGriefingEvent(this.f_32554_.m_9236_(), this.f_32554_)) { +- } else if (!this.enderman.level().getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) { ++ } else if (!net.minecraftforge.event.ForgeEventFactory.getMobGriefingEvent(this.enderman.level(), this.enderman)) { return false; } else { - return this.f_32554_.m_217043_().m_188503_(m_186073_(2000)) == 0; + return this.enderman.getRandom().nextInt(reducedTickDelay(2000)) == 0; @@ -444,7 +_,7 @@ - BlockState blockstate2 = this.f_32554_.m_32530_(); + BlockState blockstate2 = this.enderman.getCarriedBlock(); if (blockstate2 != null) { - blockstate2 = Block.m_49931_(blockstate2, this.f_32554_.m_9236_(), blockpos); -- if (this.m_32558_(level, blockpos, blockstate2, blockstate, blockstate1, blockpos1)) { -+ if (this.m_32558_(level, blockpos, blockstate2, blockstate, blockstate1, blockpos1) && !net.minecraftforge.event.ForgeEventFactory.onBlockPlace(f_32554_, net.minecraftforge.common.util.BlockSnapshot.create(level.m_46472_(), level, blockpos1), net.minecraft.core.Direction.UP)) { - level.m_7731_(blockpos, blockstate2, 3); - level.m_220407_(GameEvent.f_157797_, blockpos, GameEvent.Context.m_223719_(this.f_32554_, blockstate2)); - this.f_32554_.m_32521_((BlockState)null); + blockstate2 = Block.updateFromNeighbourShapes(blockstate2, this.enderman.level(), blockpos); +- if (this.canPlaceBlock(level, blockpos, blockstate2, blockstate, blockstate1, blockpos1)) { ++ if (this.canPlaceBlock(level, blockpos, blockstate2, blockstate, blockstate1, blockpos1) && !net.minecraftforge.event.ForgeEventFactory.onBlockPlace(enderman, net.minecraftforge.common.util.BlockSnapshot.create(level.dimension(), level, blockpos1), net.minecraft.core.Direction.UP)) { + level.setBlock(blockpos, blockstate2, 3); + level.gameEvent(GameEvent.BLOCK_PLACE, blockpos, GameEvent.Context.of(this.enderman, blockstate2)); + this.enderman.setCarriedBlock((BlockState)null); @@ -454,7 +_,7 @@ } - private boolean m_32558_(Level p_32559_, BlockPos p_32560_, BlockState p_32561_, BlockState p_32562_, BlockState p_32563_, BlockPos p_32564_) { -- return p_32562_.m_60795_() && !p_32563_.m_60795_() && !p_32563_.m_60713_(Blocks.f_50752_) && p_32563_.m_60838_(p_32559_, p_32564_) && p_32561_.m_60710_(p_32559_, p_32560_) && p_32559_.m_45933_(this.f_32554_, AABB.m_82333_(Vec3.m_82528_(p_32560_))).isEmpty(); -+ return p_32562_.m_60795_() && !p_32563_.m_60795_() && !p_32563_.m_60713_(Blocks.f_50752_) && !p_32563_.m_204336_(net.minecraftforge.common.Tags.Blocks.ENDERMAN_PLACE_ON_BLACKLIST) && p_32563_.m_60838_(p_32559_, p_32564_) && p_32561_.m_60710_(p_32559_, p_32560_) && p_32559_.m_45933_(this.f_32554_, AABB.m_82333_(Vec3.m_82528_(p_32560_))).isEmpty(); + private boolean canPlaceBlock(Level p_32559_, BlockPos p_32560_, BlockState p_32561_, BlockState p_32562_, BlockState p_32563_, BlockPos p_32564_) { +- return p_32562_.isAir() && !p_32563_.isAir() && !p_32563_.is(Blocks.BEDROCK) && p_32563_.isCollisionShapeFullBlock(p_32559_, p_32564_) && p_32561_.canSurvive(p_32559_, p_32560_) && p_32559_.getEntities(this.enderman, AABB.unitCubeFromLowerCorner(Vec3.atLowerCornerOf(p_32560_))).isEmpty(); ++ return p_32562_.isAir() && !p_32563_.isAir() && !p_32563_.is(Blocks.BEDROCK) && !p_32563_.is(net.minecraftforge.common.Tags.Blocks.ENDERMAN_PLACE_ON_BLACKLIST) && p_32563_.isCollisionShapeFullBlock(p_32559_, p_32564_) && p_32561_.canSurvive(p_32559_, p_32560_) && p_32559_.getEntities(this.enderman, AABB.unitCubeFromLowerCorner(Vec3.atLowerCornerOf(p_32560_))).isEmpty(); } } @@ -556,7 +_,7 @@ - public boolean m_8036_() { - if (this.f_32583_.m_32530_() != null) { + public boolean canUse() { + if (this.enderman.getCarriedBlock() != null) { return false; -- } else if (!this.f_32583_.m_9236_().m_46469_().m_46207_(GameRules.f_46132_)) { -+ } else if (!net.minecraftforge.event.ForgeEventFactory.getMobGriefingEvent(this.f_32583_.m_9236_(), this.f_32583_)) { +- } else if (!this.enderman.level().getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) { ++ } else if (!net.minecraftforge.event.ForgeEventFactory.getMobGriefingEvent(this.enderman.level(), this.enderman)) { return false; } else { - return this.f_32583_.m_217043_().m_188503_(m_186073_(20)) == 0; + return this.enderman.getRandom().nextInt(reducedTickDelay(20)) == 0; diff --git a/patches/minecraft/net/minecraft/world/entity/monster/Evoker.java.patch b/patches/minecraft/net/minecraft/world/entity/monster/Evoker.java.patch index b5e793a63a..26221a1b89 100644 --- a/patches/minecraft/net/minecraft/world/entity/monster/Evoker.java.patch +++ b/patches/minecraft/net/minecraft/world/entity/monster/Evoker.java.patch @@ -2,10 +2,10 @@ +++ b/net/minecraft/world/entity/monster/Evoker.java @@ -279,7 +_,7 @@ return false; - } else if (Evoker.this.f_19797_ < this.f_33775_) { + } else if (Evoker.this.tickCount < this.nextAttackTickCount) { return false; -- } else if (!Evoker.this.m_9236_().m_46469_().m_46207_(GameRules.f_46132_)) { -+ } else if (!net.minecraftforge.event.ForgeEventFactory.getMobGriefingEvent(Evoker.this.m_9236_(), Evoker.this)) { +- } else if (!Evoker.this.level().getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) { ++ } else if (!net.minecraftforge.event.ForgeEventFactory.getMobGriefingEvent(Evoker.this.level(), Evoker.this)) { return false; } else { - List list = Evoker.this.m_9236_().m_45971_(Sheep.class, this.f_32705_, Evoker.this, Evoker.this.m_20191_().m_82377_(16.0D, 4.0D, 16.0D)); + List list = Evoker.this.level().getNearbyEntities(Sheep.class, this.wololoTargeting, Evoker.this, Evoker.this.getBoundingBox().inflate(16.0D, 4.0D, 16.0D)); diff --git a/patches/minecraft/net/minecraft/world/entity/monster/Illusioner.java.patch b/patches/minecraft/net/minecraft/world/entity/monster/Illusioner.java.patch index 79d6b2320b..25d63eb3d5 100644 --- a/patches/minecraft/net/minecraft/world/entity/monster/Illusioner.java.patch +++ b/patches/minecraft/net/minecraft/world/entity/monster/Illusioner.java.patch @@ -3,12 +3,12 @@ @@ -178,8 +_,10 @@ } - public void m_6504_(LivingEntity p_32918_, float p_32919_) { -- ItemStack itemstack = this.m_6298_(this.m_21120_(ProjectileUtil.m_37297_(this, Items.f_42411_))); -+ ItemStack itemstack = this.m_6298_(this.m_21120_(ProjectileUtil.getWeaponHoldingHand(this, item -> item instanceof net.minecraft.world.item.BowItem))); - AbstractArrow abstractarrow = ProjectileUtil.m_37300_(this, itemstack, p_32919_); -+ if (this.m_21205_().m_41720_() instanceof net.minecraft.world.item.BowItem) -+ abstractarrow = ((net.minecraft.world.item.BowItem)this.m_21205_().m_41720_()).customArrow(abstractarrow); - double d0 = p_32918_.m_20185_() - this.m_20185_(); - double d1 = p_32918_.m_20227_(0.3333333333333333D) - abstractarrow.m_20186_(); - double d2 = p_32918_.m_20189_() - this.m_20189_(); + public void performRangedAttack(LivingEntity p_32918_, float p_32919_) { +- ItemStack itemstack = this.getProjectile(this.getItemInHand(ProjectileUtil.getWeaponHoldingHand(this, Items.BOW))); ++ ItemStack itemstack = this.getProjectile(this.getItemInHand(ProjectileUtil.getWeaponHoldingHand(this, item -> item instanceof net.minecraft.world.item.BowItem))); + AbstractArrow abstractarrow = ProjectileUtil.getMobArrow(this, itemstack, p_32919_); ++ if (this.getMainHandItem().getItem() instanceof net.minecraft.world.item.BowItem) ++ abstractarrow = ((net.minecraft.world.item.BowItem)this.getMainHandItem().getItem()).customArrow(abstractarrow); + double d0 = p_32918_.getX() - this.getX(); + double d1 = p_32918_.getY(0.3333333333333333D) - abstractarrow.getY(); + double d2 = p_32918_.getZ() - this.getZ(); diff --git a/patches/minecraft/net/minecraft/world/entity/monster/MagmaCube.java.patch b/patches/minecraft/net/minecraft/world/entity/monster/MagmaCube.java.patch index 27cdaed37a..db771af0ab 100644 --- a/patches/minecraft/net/minecraft/world/entity/monster/MagmaCube.java.patch +++ b/patches/minecraft/net/minecraft/world/entity/monster/MagmaCube.java.patch @@ -1,25 +1,25 @@ --- a/net/minecraft/world/entity/monster/MagmaCube.java +++ b/net/minecraft/world/entity/monster/MagmaCube.java @@ -67,17 +_,28 @@ - float f = (float)this.m_33632_() * 0.1F; - this.m_20334_(vec3.f_82479_, (double)(this.m_6118_() + f), vec3.f_82481_); - this.f_19812_ = true; + float f = (float)this.getSize() * 0.1F; + this.setDeltaMovement(vec3.x, (double)(this.getJumpPower() + f), vec3.z); + this.hasImpulse = true; + net.minecraftforge.common.ForgeHooks.onLivingJump(this); } + @Deprecated // FORGE: use jumpInFluid instead - protected void m_203347_(TagKey p_204065_) { -- if (p_204065_ == FluidTags.f_13132_) { -+ this.jumpInLiquidInternal(() -> p_204065_ == FluidTags.f_13132_, () -> super.m_203347_(p_204065_)); + protected void jumpInLiquid(TagKey p_204065_) { +- if (p_204065_ == FluidTags.LAVA) { ++ this.jumpInLiquidInternal(() -> p_204065_ == FluidTags.LAVA, () -> super.jumpInLiquid(p_204065_)); + } + + private void jumpInLiquidInternal(java.util.function.BooleanSupplier isLava, Runnable onSuper) { + if (isLava.getAsBoolean()) { - Vec3 vec3 = this.m_20184_(); - this.m_20334_(vec3.f_82479_, (double)(0.22F + (float)this.m_33632_() * 0.05F), vec3.f_82481_); - this.f_19812_ = true; + Vec3 vec3 = this.getDeltaMovement(); + this.setDeltaMovement(vec3.x, (double)(0.22F + (float)this.getSize() * 0.05F), vec3.z); + this.hasImpulse = true; } else { -- super.m_203347_(p_204065_); +- super.jumpInLiquid(p_204065_); + onSuper.run(); } @@ -30,4 +30,4 @@ + this.jumpInLiquidInternal(() -> type == net.minecraftforge.common.ForgeMod.LAVA_TYPE.get(), () -> super.jumpInFluid(type)); } - protected boolean m_7483_() { + protected boolean isDealsDamage() { diff --git a/patches/minecraft/net/minecraft/world/entity/monster/Monster.java.patch b/patches/minecraft/net/minecraft/world/entity/monster/Monster.java.patch index 4d7925799d..3347aa0fa4 100644 --- a/patches/minecraft/net/minecraft/world/entity/monster/Monster.java.patch +++ b/patches/minecraft/net/minecraft/world/entity/monster/Monster.java.patch @@ -1,14 +1,14 @@ --- a/net/minecraft/world/entity/monster/Monster.java +++ b/net/minecraft/world/entity/monster/Monster.java @@ -121,9 +_,9 @@ - if (p_33038_.m_41720_() instanceof ProjectileWeaponItem) { - Predicate predicate = ((ProjectileWeaponItem)p_33038_.m_41720_()).m_6442_(); - ItemStack itemstack = ProjectileWeaponItem.m_43010_(this, predicate); -- return itemstack.m_41619_() ? new ItemStack(Items.f_42412_) : itemstack; -+ return net.minecraftforge.common.ForgeHooks.getProjectile(this, p_33038_, itemstack.m_41619_() ? new ItemStack(Items.f_42412_) : itemstack); + if (p_33038_.getItem() instanceof ProjectileWeaponItem) { + Predicate predicate = ((ProjectileWeaponItem)p_33038_.getItem()).getSupportedHeldProjectiles(); + ItemStack itemstack = ProjectileWeaponItem.getHeldProjectile(this, predicate); +- return itemstack.isEmpty() ? new ItemStack(Items.ARROW) : itemstack; ++ return net.minecraftforge.common.ForgeHooks.getProjectile(this, p_33038_, itemstack.isEmpty() ? new ItemStack(Items.ARROW) : itemstack); } else { -- return ItemStack.f_41583_; -+ return net.minecraftforge.common.ForgeHooks.getProjectile(this, p_33038_, ItemStack.f_41583_); +- return ItemStack.EMPTY; ++ return net.minecraftforge.common.ForgeHooks.getProjectile(this, p_33038_, ItemStack.EMPTY); } } } diff --git a/patches/minecraft/net/minecraft/world/entity/monster/Pillager.java.patch b/patches/minecraft/net/minecraft/world/entity/monster/Pillager.java.patch index 2fb78f5d0d..8004af6849 100644 --- a/patches/minecraft/net/minecraft/world/entity/monster/Pillager.java.patch +++ b/patches/minecraft/net/minecraft/world/entity/monster/Pillager.java.patch @@ -1,11 +1,11 @@ --- a/net/minecraft/world/entity/monster/Pillager.java +++ b/net/minecraft/world/entity/monster/Pillager.java @@ -109,7 +_,7 @@ - public AbstractIllager.IllagerArmPose m_6768_() { - if (this.m_33309_()) { + public AbstractIllager.IllagerArmPose getArmPose() { + if (this.isChargingCrossbow()) { return AbstractIllager.IllagerArmPose.CROSSBOW_CHARGE; -- } else if (this.m_21055_(Items.f_42717_)) { -+ } else if (this.m_21093_(is -> is.m_41720_() instanceof net.minecraft.world.item.CrossbowItem)) { +- } else if (this.isHolding(Items.CROSSBOW)) { ++ } else if (this.isHolding(is -> is.getItem() instanceof net.minecraft.world.item.CrossbowItem)) { return AbstractIllager.IllagerArmPose.CROSSBOW_HOLD; } else { - return this.m_5912_() ? AbstractIllager.IllagerArmPose.ATTACKING : AbstractIllager.IllagerArmPose.NEUTRAL; + return this.isAggressive() ? AbstractIllager.IllagerArmPose.ATTACKING : AbstractIllager.IllagerArmPose.NEUTRAL; diff --git a/patches/minecraft/net/minecraft/world/entity/monster/Ravager.java.patch b/patches/minecraft/net/minecraft/world/entity/monster/Ravager.java.patch index 2bc3e01074..6a2964e622 100644 --- a/patches/minecraft/net/minecraft/world/entity/monster/Ravager.java.patch +++ b/patches/minecraft/net/minecraft/world/entity/monster/Ravager.java.patch @@ -1,11 +1,11 @@ --- a/net/minecraft/world/entity/monster/Ravager.java +++ b/net/minecraft/world/entity/monster/Ravager.java @@ -129,7 +_,7 @@ - this.m_21051_(Attributes.f_22279_).m_22100_(Mth.m_14139_(0.1D, d1, d0)); + this.getAttribute(Attributes.MOVEMENT_SPEED).setBaseValue(Mth.lerp(0.1D, d1, d0)); } -- if (this.f_19862_ && this.m_9236_().m_46469_().m_46207_(GameRules.f_46132_)) { -+ if (this.f_19862_ && net.minecraftforge.event.ForgeEventFactory.getMobGriefingEvent(this.m_9236_(), this)) { +- if (this.horizontalCollision && this.level().getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) { ++ if (this.horizontalCollision && net.minecraftforge.event.ForgeEventFactory.getMobGriefingEvent(this.level(), this)) { boolean flag = false; - AABB aabb = this.m_20191_().m_82400_(0.2D); + AABB aabb = this.getBoundingBox().inflate(0.2D); diff --git a/patches/minecraft/net/minecraft/world/entity/monster/Shulker.java.patch b/patches/minecraft/net/minecraft/world/entity/monster/Shulker.java.patch index b6a1978cea..f5a574f204 100644 --- a/patches/minecraft/net/minecraft/world/entity/monster/Shulker.java.patch +++ b/patches/minecraft/net/minecraft/world/entity/monster/Shulker.java.patch @@ -1,15 +1,15 @@ --- a/net/minecraft/world/entity/monster/Shulker.java +++ b/net/minecraft/world/entity/monster/Shulker.java @@ -354,6 +_,12 @@ - if (blockpos1.m_123342_() > this.m_9236_().m_141937_() && this.m_9236_().m_46859_(blockpos1) && this.m_9236_().m_6857_().m_61937_(blockpos1) && this.m_9236_().m_45756_(this, (new AABB(blockpos1)).m_82406_(1.0E-6D))) { - Direction direction = this.m_149810_(blockpos1); + if (blockpos1.getY() > this.level().getMinBuildHeight() && this.level().isEmptyBlock(blockpos1) && this.level().getWorldBorder().isWithinBounds(blockpos1) && this.level().noCollision(this, (new AABB(blockpos1)).deflate(1.0E-6D))) { + Direction direction = this.findAttachableSurface(blockpos1); if (direction != null) { -+ net.minecraftforge.event.entity.EntityTeleportEvent.EnderEntity event = net.minecraftforge.event.ForgeEventFactory.onEnderTeleport(this, blockpos1.m_123341_(), blockpos1.m_123342_(), blockpos1.m_123343_()); ++ net.minecraftforge.event.entity.EntityTeleportEvent.EnderEntity event = net.minecraftforge.event.ForgeEventFactory.onEnderTeleport(this, blockpos1.getX(), blockpos1.getY(), blockpos1.getZ()); + if (event.isCanceled()) direction = null; -+ blockpos1 = BlockPos.m_274561_(event.getTargetX(), event.getTargetY(), event.getTargetZ()); ++ blockpos1 = BlockPos.containing(event.getTargetX(), event.getTargetY(), event.getTargetZ()); + } + + if (direction != null) { - this.m_19877_(); - this.m_149788_(direction); - this.m_5496_(SoundEvents.f_12418_, 1.0F, 1.0F); + this.unRide(); + this.setAttachFace(direction); + this.playSound(SoundEvents.SHULKER_TELEPORT, 1.0F, 1.0F); diff --git a/patches/minecraft/net/minecraft/world/entity/monster/Silverfish.java.patch b/patches/minecraft/net/minecraft/world/entity/monster/Silverfish.java.patch index 6816204604..ef0b32456a 100644 --- a/patches/minecraft/net/minecraft/world/entity/monster/Silverfish.java.patch +++ b/patches/minecraft/net/minecraft/world/entity/monster/Silverfish.java.patch @@ -3,18 +3,18 @@ @@ -141,7 +_,7 @@ return false; } else { - RandomSource randomsource = this.f_25725_.m_217043_(); -- if (this.f_25725_.m_9236_().m_46469_().m_46207_(GameRules.f_46132_) && randomsource.m_188503_(m_186073_(10)) == 0) { -+ if (net.minecraftforge.event.ForgeEventFactory.getMobGriefingEvent(this.f_25725_.m_9236_(), this.f_25725_) && randomsource.m_188503_(m_186073_(10)) == 0) { - this.f_33555_ = Direction.m_235672_(randomsource); - BlockPos blockpos = BlockPos.m_274561_(this.f_25725_.m_20185_(), this.f_25725_.m_20186_() + 0.5D, this.f_25725_.m_20189_()).m_121945_(this.f_33555_); - BlockState blockstate = this.f_25725_.m_9236_().m_8055_(blockpos); + RandomSource randomsource = this.mob.getRandom(); +- if (this.mob.level().getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING) && randomsource.nextInt(reducedTickDelay(10)) == 0) { ++ if (net.minecraftforge.event.ForgeEventFactory.getMobGriefingEvent(this.mob.level(), this.mob) && randomsource.nextInt(reducedTickDelay(10)) == 0) { + this.selectedDirection = Direction.getRandom(randomsource); + BlockPos blockpos = BlockPos.containing(this.mob.getX(), this.mob.getY() + 0.5D, this.mob.getZ()).relative(this.selectedDirection); + BlockState blockstate = this.mob.level().getBlockState(blockpos); @@ -210,7 +_,7 @@ - BlockState blockstate = level.m_8055_(blockpos1); - Block block = blockstate.m_60734_(); + BlockState blockstate = level.getBlockState(blockpos1); + Block block = blockstate.getBlock(); if (block instanceof InfestedBlock) { -- if (level.m_46469_().m_46207_(GameRules.f_46132_)) { -+ if (net.minecraftforge.event.ForgeEventFactory.getMobGriefingEvent(level, this.f_33562_)) { - level.m_46953_(blockpos1, true, this.f_33562_); +- if (level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) { ++ if (net.minecraftforge.event.ForgeEventFactory.getMobGriefingEvent(level, this.silverfish)) { + level.destroyBlock(blockpos1, true, this.silverfish); } else { - level.m_7731_(blockpos1, ((InfestedBlock)block).m_153432_(level.m_8055_(blockpos1)), 3); + level.setBlock(blockpos1, ((InfestedBlock)block).hostStateByInfested(level.getBlockState(blockpos1)), 3); diff --git a/patches/minecraft/net/minecraft/world/entity/monster/Slime.java.patch b/patches/minecraft/net/minecraft/world/entity/monster/Slime.java.patch index 424e8d9413..70199973c8 100644 --- a/patches/minecraft/net/minecraft/world/entity/monster/Slime.java.patch +++ b/patches/minecraft/net/minecraft/world/entity/monster/Slime.java.patch @@ -1,17 +1,17 @@ --- a/net/minecraft/world/entity/monster/Slime.java +++ b/net/minecraft/world/entity/monster/Slime.java @@ -130,6 +_,8 @@ - if (this.m_20096_() && !this.f_33583_) { - int i = this.m_33632_(); + if (this.onGround() && !this.wasOnGround) { + int i = this.getSize(); + // Forge: Don't spawn particles if it's handled by the implementation itself + if (!spawnCustomParticles()) for(int j = 0; j < i * 8; ++j) { - float f = this.f_19796_.m_188501_() * ((float)Math.PI * 2F); - float f1 = this.f_19796_.m_188501_() * 0.5F + 0.5F; + float f = this.random.nextFloat() * ((float)Math.PI * 2F); + float f1 = this.random.nextFloat() * 0.5F + 0.5F; @@ -329,6 +_,12 @@ - public EntityDimensions m_6972_(Pose p_33597_) { - return super.m_6972_(p_33597_).m_20388_(0.255F * (float)this.m_33632_()); + public EntityDimensions getDimensions(Pose p_33597_) { + return super.getDimensions(p_33597_).scale(0.255F * (float)this.getSize()); } + + /** @@ -21,4 +21,4 @@ + protected boolean spawnCustomParticles() { return false; } static class SlimeAttackGoal extends Goal { - private final Slime f_33645_; + private final Slime slime; diff --git a/patches/minecraft/net/minecraft/world/entity/monster/Spider.java.patch b/patches/minecraft/net/minecraft/world/entity/monster/Spider.java.patch index e4f0cf648f..7ec902f510 100644 --- a/patches/minecraft/net/minecraft/world/entity/monster/Spider.java.patch +++ b/patches/minecraft/net/minecraft/world/entity/monster/Spider.java.patch @@ -3,14 +3,14 @@ @@ -121,7 +_,12 @@ } - public boolean m_7301_(MobEffectInstance p_33809_) { -- return p_33809_.m_19544_() == MobEffects.f_19614_ ? false : super.m_7301_(p_33809_); -+ if (p_33809_.m_19544_() == MobEffects.f_19614_) { + public boolean canBeAffected(MobEffectInstance p_33809_) { +- return p_33809_.getEffect() == MobEffects.POISON ? false : super.canBeAffected(p_33809_); ++ if (p_33809_.getEffect() == MobEffects.POISON) { + net.minecraftforge.event.entity.living.MobEffectEvent.Applicable event = new net.minecraftforge.event.entity.living.MobEffectEvent.Applicable(this, p_33809_); + net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(event); + return event.getResult() == net.minecraftforge.eventbus.api.Event.Result.ALLOW; + } -+ return super.m_7301_(p_33809_); ++ return super.canBeAffected(p_33809_); } - public boolean m_33816_() { + public boolean isClimbing() { diff --git a/patches/minecraft/net/minecraft/world/entity/monster/Zombie.java.patch b/patches/minecraft/net/minecraft/world/entity/monster/Zombie.java.patch index 84cdfef1e9..bd01b153e8 100644 --- a/patches/minecraft/net/minecraft/world/entity/monster/Zombie.java.patch +++ b/patches/minecraft/net/minecraft/world/entity/monster/Zombie.java.patch @@ -1,80 +1,80 @@ --- a/net/minecraft/world/entity/monster/Zombie.java +++ b/net/minecraft/world/entity/monster/Zombie.java @@ -193,7 +_,7 @@ - if (!this.m_9236_().f_46443_ && this.m_6084_() && !this.m_21525_()) { - if (this.m_34329_()) { - --this.f_34266_; -- if (this.f_34266_ < 0) { -+ if (this.f_34266_ < 0 && net.minecraftforge.event.ForgeEventFactory.canLivingConvert(this, EntityType.f_20562_, (timer) -> this.f_34266_ = timer)) { - this.m_7595_(); + if (!this.level().isClientSide && this.isAlive() && !this.isNoAi()) { + if (this.isUnderWaterConverting()) { + --this.conversionTime; +- if (this.conversionTime < 0) { ++ if (this.conversionTime < 0 && net.minecraftforge.event.ForgeEventFactory.canLivingConvert(this, EntityType.DROWNED, (timer) -> this.conversionTime = timer)) { + this.doUnderWaterConversion(); } - } else if (this.m_7593_()) { + } else if (this.convertsInWater()) { @@ -255,6 +_,7 @@ if (zombie != null) { - zombie.m_34339_(zombie.m_9236_().m_6436_(zombie.m_20183_()).m_19057_()); - zombie.m_34336_(zombie.m_7586_() && this.m_34330_()); + zombie.handleAttributes(zombie.level().getCurrentDifficultyAt(zombie.blockPosition()).getSpecialMultiplier()); + zombie.setCanBreakDoors(zombie.supportsBreakDoorGoal() && this.canBreakDoors()); + net.minecraftforge.event.ForgeEventFactory.onLivingConvert(this, zombie); } } @@ -275,11 +_,15 @@ - livingentity = (LivingEntity)p_34288_.m_7639_(); + livingentity = (LivingEntity)p_34288_.getEntity(); } -- if (livingentity != null && this.m_9236_().m_46791_() == Difficulty.HARD && (double)this.f_19796_.m_188501_() < this.m_21133_(Attributes.f_22287_) && this.m_9236_().m_46469_().m_46207_(GameRules.f_46134_)) { - int i = Mth.m_14107_(this.m_20185_()); - int j = Mth.m_14107_(this.m_20186_()); - int k = Mth.m_14107_(this.m_20189_()); -- Zombie zombie = new Zombie(this.m_9236_()); -+ net.minecraftforge.event.entity.living.ZombieEvent.SummonAidEvent event = net.minecraftforge.event.ForgeEventFactory.fireZombieSummonAid(this, m_9236_(), i, j, k, livingentity, this.m_21051_(Attributes.f_22287_).m_22135_()); +- if (livingentity != null && this.level().getDifficulty() == Difficulty.HARD && (double)this.random.nextFloat() < this.getAttributeValue(Attributes.SPAWN_REINFORCEMENTS_CHANCE) && this.level().getGameRules().getBoolean(GameRules.RULE_DOMOBSPAWNING)) { + int i = Mth.floor(this.getX()); + int j = Mth.floor(this.getY()); + int k = Mth.floor(this.getZ()); +- Zombie zombie = new Zombie(this.level()); ++ net.minecraftforge.event.entity.living.ZombieEvent.SummonAidEvent event = net.minecraftforge.event.ForgeEventFactory.fireZombieSummonAid(this, level(), i, j, k, livingentity, this.getAttribute(Attributes.SPAWN_REINFORCEMENTS_CHANCE).getValue()); + if (event.getResult() == net.minecraftforge.eventbus.api.Event.Result.DENY) return true; + if (event.getResult() == net.minecraftforge.eventbus.api.Event.Result.ALLOW || -+ livingentity != null && this.m_9236_().m_46791_() == Difficulty.HARD && (double)this.f_19796_.m_188501_() < this.m_21051_(Attributes.f_22287_).m_22135_() && this.m_9236_() -+ .m_46469_().m_46207_(GameRules.f_46134_)) { -+ Zombie zombie = event.getCustomSummonedAid() != null && event.getResult() == net.minecraftforge.eventbus.api.Event.Result.ALLOW ? event.getCustomSummonedAid() : EntityType.f_20501_.m_20615_(this.m_9236_()); ++ livingentity != null && this.level().getDifficulty() == Difficulty.HARD && (double)this.random.nextFloat() < this.getAttribute(Attributes.SPAWN_REINFORCEMENTS_CHANCE).getValue() && this.level() ++ .getGameRules().getBoolean(GameRules.RULE_DOMOBSPAWNING)) { ++ Zombie zombie = event.getCustomSummonedAid() != null && event.getResult() == net.minecraftforge.eventbus.api.Event.Result.ALLOW ? event.getCustomSummonedAid() : EntityType.ZOMBIE.create(this.level()); for(int l = 0; l < 50; ++l) { - int i1 = i + Mth.m_216271_(this.f_19796_, 7, 40) * Mth.m_216271_(this.f_19796_, -1, 1); + int i1 = i + Mth.nextInt(this.random, 7, 40) * Mth.nextInt(this.random, -1, 1); @@ -291,6 +_,7 @@ - if (NaturalSpawner.m_47051_(spawnplacements$type, this.m_9236_(), blockpos, entitytype) && SpawnPlacements.m_217074_(entitytype, serverlevel, MobSpawnType.REINFORCEMENT, blockpos, this.m_9236_().f_46441_)) { - zombie.m_6034_((double)i1, (double)j1, (double)k1); - if (!this.m_9236_().m_45914_((double)i1, (double)j1, (double)k1, 7.0D) && this.m_9236_().m_45784_(zombie) && this.m_9236_().m_45786_(zombie) && !this.m_9236_().m_46855_(zombie.m_20191_())) { + if (NaturalSpawner.isSpawnPositionOk(spawnplacements$type, this.level(), blockpos, entitytype) && SpawnPlacements.checkSpawnRules(entitytype, serverlevel, MobSpawnType.REINFORCEMENT, blockpos, this.level().random)) { + zombie.setPos((double)i1, (double)j1, (double)k1); + if (!this.level().hasNearbyAlivePlayer((double)i1, (double)j1, (double)k1, 7.0D) && this.level().isUnobstructed(zombie) && this.level().noCollision(zombie) && !this.level().containsAnyLiquid(zombie.getBoundingBox())) { + if (livingentity != null) - zombie.m_6710_(livingentity); - zombie.m_6518_(serverlevel, this.m_9236_().m_6436_(zombie.m_20183_()), MobSpawnType.REINFORCEMENT, (SpawnGroupData)null, (CompoundTag)null); - serverlevel.m_47205_(zombie); + zombie.setTarget(livingentity); + zombie.finalizeSpawn(serverlevel, this.level().getCurrentDifficultyAt(zombie.blockPosition()), MobSpawnType.REINFORCEMENT, (SpawnGroupData)null, (CompoundTag)null); + serverlevel.addFreshEntityWithPassengers(zombie); @@ -376,7 +_,7 @@ - public boolean m_214076_(ServerLevel p_219160_, LivingEntity p_219161_) { - boolean flag = super.m_214076_(p_219160_, p_219161_); -- if ((p_219160_.m_46791_() == Difficulty.NORMAL || p_219160_.m_46791_() == Difficulty.HARD) && p_219161_ instanceof Villager villager) { -+ if ((p_219160_.m_46791_() == Difficulty.NORMAL || p_219160_.m_46791_() == Difficulty.HARD) && p_219161_ instanceof Villager villager && net.minecraftforge.event.ForgeEventFactory.canLivingConvert(p_219161_, EntityType.f_20530_, (timer) -> {})) { - if (p_219160_.m_46791_() != Difficulty.HARD && this.f_19796_.m_188499_()) { + public boolean killedEntity(ServerLevel p_219160_, LivingEntity p_219161_) { + boolean flag = super.killedEntity(p_219160_, p_219161_); +- if ((p_219160_.getDifficulty() == Difficulty.NORMAL || p_219160_.getDifficulty() == Difficulty.HARD) && p_219161_ instanceof Villager villager) { ++ if ((p_219160_.getDifficulty() == Difficulty.NORMAL || p_219160_.getDifficulty() == Difficulty.HARD) && p_219161_ instanceof Villager villager && net.minecraftforge.event.ForgeEventFactory.canLivingConvert(p_219161_, EntityType.ZOMBIE_VILLAGER, (timer) -> {})) { + if (p_219160_.getDifficulty() != Difficulty.HARD && this.random.nextBoolean()) { return flag; } @@ -388,6 +_,7 @@ - zombievillager.m_34391_(villager.m_35517_().m_262795_(NbtOps.f_128958_)); - zombievillager.m_34411_(villager.m_6616_().m_45388_()); - zombievillager.m_34373_(villager.m_7809_()); + zombievillager.setGossips(villager.getGossips().store(NbtOps.INSTANCE)); + zombievillager.setTradeOffers(villager.getOffers().createTag()); + zombievillager.setVillagerXp(villager.getVillagerXp()); + net.minecraftforge.event.ForgeEventFactory.onLivingConvert(p_219161_, zombievillager); - if (!this.m_20067_()) { - p_219160_.m_5898_((Player)null, 1026, this.m_20183_(), 0); + if (!this.isSilent()) { + p_219160_.levelEvent((Player)null, 1026, this.blockPosition(), 0); } @@ -465,7 +_,7 @@ } - public static boolean m_219162_(RandomSource p_219163_) { -- return p_219163_.m_188501_() < 0.05F; -+ return p_219163_.m_188501_() < net.minecraftforge.common.ForgeConfig.SERVER.zombieBabyChance.get(); + public static boolean getSpawnAsBabyOdds(RandomSource p_219163_) { +- return p_219163_.nextFloat() < 0.05F; ++ return p_219163_.nextFloat() < net.minecraftforge.common.ForgeConfig.SERVER.zombieBabyChance.get(); } - protected void m_34339_(float p_34340_) { + protected void handleAttributes(float p_34340_) { @@ -485,7 +_,7 @@ } - protected void m_7572_() { -- this.m_21051_(Attributes.f_22287_).m_22100_(this.f_19796_.m_188500_() * (double)0.1F); -+ this.m_21051_(Attributes.f_22287_).m_22100_(this.f_19796_.m_188500_() * net.minecraftforge.common.ForgeConfig.SERVER.zombieBaseSummonChance.get()); + protected void randomizeReinforcementsChance() { +- this.getAttribute(Attributes.SPAWN_REINFORCEMENTS_CHANCE).setBaseValue(this.random.nextDouble() * (double)0.1F); ++ this.getAttribute(Attributes.SPAWN_REINFORCEMENTS_CHANCE).setBaseValue(this.random.nextDouble() * net.minecraftforge.common.ForgeConfig.SERVER.zombieBaseSummonChance.get()); } - protected Vector3f m_292594_(Entity p_300549_, EntityDimensions p_298020_, float p_298000_) { + protected Vector3f getPassengerAttachmentPoint(Entity p_300549_, EntityDimensions p_298020_, float p_298000_) { diff --git a/patches/minecraft/net/minecraft/world/entity/monster/ZombieVillager.java.patch b/patches/minecraft/net/minecraft/world/entity/monster/ZombieVillager.java.patch index e10760746a..5310a487ea 100644 --- a/patches/minecraft/net/minecraft/world/entity/monster/ZombieVillager.java.patch +++ b/patches/minecraft/net/minecraft/world/entity/monster/ZombieVillager.java.patch @@ -1,20 +1,20 @@ --- a/net/minecraft/world/entity/monster/ZombieVillager.java +++ b/net/minecraft/world/entity/monster/ZombieVillager.java @@ -129,7 +_,7 @@ - if (!this.m_9236_().f_46443_ && this.m_6084_() && this.m_34408_()) { - int i = this.m_34410_(); - this.f_34365_ -= i; -- if (this.f_34365_ <= 0) { -+ if (this.f_34365_ <= 0 && net.minecraftforge.event.ForgeEventFactory.canLivingConvert(this, EntityType.f_20492_, (timer) -> this.f_34365_ = timer)) { - this.m_34398_((ServerLevel)this.m_9236_()); + if (!this.level().isClientSide && this.isAlive() && this.isConverting()) { + int i = this.getConversionProgress(); + this.villagerConversionTime -= i; +- if (this.villagerConversionTime <= 0) { ++ if (this.villagerConversionTime <= 0 && net.minecraftforge.event.ForgeEventFactory.canLivingConvert(this, EntityType.VILLAGER, (timer) -> this.villagerConversionTime = timer)) { + this.finishConversion((ServerLevel)this.level()); } } @@ -231,7 +_,7 @@ - if (!this.m_20067_()) { - p_34399_.m_5898_((Player)null, 1027, this.m_20183_(), 0); + if (!this.isSilent()) { + p_34399_.levelEvent((Player)null, 1027, this.blockPosition(), 0); } - + net.minecraftforge.event.ForgeEventFactory.onLivingConvert(this, villager); } - private int m_34410_() { + private int getConversionProgress() { diff --git a/patches/minecraft/net/minecraft/world/entity/monster/hoglin/Hoglin.java.patch b/patches/minecraft/net/minecraft/world/entity/monster/hoglin/Hoglin.java.patch index a5a4635e04..96d7cb5e64 100644 --- a/patches/minecraft/net/minecraft/world/entity/monster/hoglin/Hoglin.java.patch +++ b/patches/minecraft/net/minecraft/world/entity/monster/hoglin/Hoglin.java.patch @@ -1,18 +1,18 @@ --- a/net/minecraft/world/entity/monster/hoglin/Hoglin.java +++ b/net/minecraft/world/entity/monster/hoglin/Hoglin.java @@ -128,7 +_,7 @@ - HoglinAi.m_34577_(this); - if (this.m_34554_()) { - ++this.f_34484_; -- if (this.f_34484_ > 300) { -+ if (this.f_34484_ > 300 && net.minecraftforge.event.ForgeEventFactory.canLivingConvert(this, EntityType.f_20500_, (timer) -> this.f_34484_ = timer)) { - this.m_219179_(SoundEvents.f_11959_); - this.m_34531_((ServerLevel)this.m_9236_()); + HoglinAi.updateActivity(this); + if (this.isConverting()) { + ++this.timeInOverworld; +- if (this.timeInOverworld > 300) { ++ if (this.timeInOverworld > 300 && net.minecraftforge.event.ForgeEventFactory.canLivingConvert(this, EntityType.ZOGLIN, (timer) -> this.timeInOverworld = timer)) { + this.playSoundEvent(SoundEvents.HOGLIN_CONVERTED_TO_ZOMBIFIED); + this.finishConversion((ServerLevel)this.level()); } @@ -221,6 +_,7 @@ - Zoglin zoglin = this.m_21406_(EntityType.f_20500_, true); + Zoglin zoglin = this.convertTo(EntityType.ZOGLIN, true); if (zoglin != null) { - zoglin.m_7292_(new MobEffectInstance(MobEffects.f_19604_, 200, 0)); + zoglin.addEffect(new MobEffectInstance(MobEffects.CONFUSION, 200, 0)); + net.minecraftforge.event.ForgeEventFactory.onLivingConvert(this, zoglin); } diff --git a/patches/minecraft/net/minecraft/world/entity/monster/piglin/AbstractPiglin.java.patch b/patches/minecraft/net/minecraft/world/entity/monster/piglin/AbstractPiglin.java.patch index 5308ab734d..7e71d6b5a8 100644 --- a/patches/minecraft/net/minecraft/world/entity/monster/piglin/AbstractPiglin.java.patch +++ b/patches/minecraft/net/minecraft/world/entity/monster/piglin/AbstractPiglin.java.patch @@ -1,21 +1,21 @@ --- a/net/minecraft/world/entity/monster/piglin/AbstractPiglin.java +++ b/net/minecraft/world/entity/monster/piglin/AbstractPiglin.java @@ -93,9 +_,10 @@ - ++this.f_34649_; + ++this.timeInOverworld; } else { - this.f_34649_ = 0; -+ this.f_34649_ = 0; + this.timeInOverworld = 0; ++ this.timeInOverworld = 0; } -- if (this.f_34649_ > 300) { -+ if (this.f_34649_ > 300 && net.minecraftforge.event.ForgeEventFactory.canLivingConvert(this, EntityType.f_20531_, (timer) -> this.f_34649_ = timer)) { - this.m_7580_(); - this.m_8063_((ServerLevel)this.m_9236_()); +- if (this.timeInOverworld > 300) { ++ if (this.timeInOverworld > 300 && net.minecraftforge.event.ForgeEventFactory.canLivingConvert(this, EntityType.ZOMBIFIED_PIGLIN, (timer) -> this.timeInOverworld = timer)) { + this.playConvertedSound(); + this.finishConversion((ServerLevel)this.level()); } @@ -110,6 +_,7 @@ - ZombifiedPiglin zombifiedpiglin = this.m_21406_(EntityType.f_20531_, true); + ZombifiedPiglin zombifiedpiglin = this.convertTo(EntityType.ZOMBIFIED_PIGLIN, true); if (zombifiedpiglin != null) { - zombifiedpiglin.m_7292_(new MobEffectInstance(MobEffects.f_19604_, 200, 0)); + zombifiedpiglin.addEffect(new MobEffectInstance(MobEffects.CONFUSION, 200, 0)); + net.minecraftforge.event.ForgeEventFactory.onLivingConvert(this, zombifiedpiglin); } diff --git a/patches/minecraft/net/minecraft/world/entity/monster/piglin/Piglin.java.patch b/patches/minecraft/net/minecraft/world/entity/monster/piglin/Piglin.java.patch index f48848deb8..b448373fb1 100644 --- a/patches/minecraft/net/minecraft/world/entity/monster/piglin/Piglin.java.patch +++ b/patches/minecraft/net/minecraft/world/entity/monster/piglin/Piglin.java.patch @@ -1,29 +1,29 @@ --- a/net/minecraft/world/entity/monster/piglin/Piglin.java +++ b/net/minecraft/world/entity/monster/piglin/Piglin.java @@ -289,7 +_,7 @@ - } else if (this.m_34773_()) { + } else if (this.isChargingCrossbow()) { return PiglinArmPose.CROSSBOW_CHARGE; } else { -- return this.m_5912_() && this.m_21055_(Items.f_42717_) ? PiglinArmPose.CROSSBOW_HOLD : PiglinArmPose.DEFAULT; -+ return this.m_5912_() && this.m_21093_(is -> is.m_41720_() instanceof net.minecraft.world.item.CrossbowItem) ? PiglinArmPose.CROSSBOW_HOLD : PiglinArmPose.DEFAULT; +- return this.isAggressive() && this.isHolding(Items.CROSSBOW) ? PiglinArmPose.CROSSBOW_HOLD : PiglinArmPose.DEFAULT; ++ return this.isAggressive() && this.isHolding(is -> is.getItem() instanceof net.minecraft.world.item.CrossbowItem) ? PiglinArmPose.CROSSBOW_HOLD : PiglinArmPose.DEFAULT; } } @@ -331,7 +_,7 @@ } - protected void m_34785_(ItemStack p_34786_) { -- if (p_34786_.m_150930_(PiglinAi.f_34794_)) { + protected void holdInOffHand(ItemStack p_34786_) { +- if (p_34786_.is(PiglinAi.BARTERING_ITEM)) { + if (p_34786_.isPiglinCurrency()) { - this.m_8061_(EquipmentSlot.OFFHAND, p_34786_); - this.m_21508_(EquipmentSlot.OFFHAND); + this.setItemSlot(EquipmentSlot.OFFHAND, p_34786_); + this.setGuaranteedDrop(EquipmentSlot.OFFHAND); } else { @@ -341,7 +_,7 @@ } - public boolean m_7243_(ItemStack p_34777_) { -- return this.m_9236_().m_46469_().m_46207_(GameRules.f_46132_) && this.m_21531_() && PiglinAi.m_34857_(this, p_34777_); -+ return net.minecraftforge.event.ForgeEventFactory.getMobGriefingEvent(this.m_9236_(), this) && this.m_21531_() && PiglinAi.m_34857_(this, p_34777_); + public boolean wantsToPickUp(ItemStack p_34777_) { +- return this.level().getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING) && this.canPickUpLoot() && PiglinAi.wantsToPickup(this, p_34777_); ++ return net.minecraftforge.event.ForgeEventFactory.getMobGriefingEvent(this.level(), this) && this.canPickUpLoot() && PiglinAi.wantsToPickup(this, p_34777_); } - protected boolean m_34787_(ItemStack p_34788_) { + protected boolean canReplaceCurrentItem(ItemStack p_34788_) { diff --git a/patches/minecraft/net/minecraft/world/entity/monster/piglin/PiglinAi.java.patch b/patches/minecraft/net/minecraft/world/entity/monster/piglin/PiglinAi.java.patch index 564c6a40a4..a3d329b13c 100644 --- a/patches/minecraft/net/minecraft/world/entity/monster/piglin/PiglinAi.java.patch +++ b/patches/minecraft/net/minecraft/world/entity/monster/piglin/PiglinAi.java.patch @@ -1,37 +1,37 @@ --- a/net/minecraft/world/entity/monster/piglin/PiglinAi.java +++ b/net/minecraft/world/entity/monster/piglin/PiglinAi.java @@ -268,7 +_,7 @@ - ItemStack itemstack = p_34868_.m_21120_(InteractionHand.OFF_HAND); - p_34868_.m_21008_(InteractionHand.OFF_HAND, ItemStack.f_41583_); - if (p_34868_.m_34667_()) { -- boolean flag = m_149967_(itemstack); + ItemStack itemstack = p_34868_.getItemInHand(InteractionHand.OFF_HAND); + p_34868_.setItemInHand(InteractionHand.OFF_HAND, ItemStack.EMPTY); + if (p_34868_.isAdult()) { +- boolean flag = isBarterCurrency(itemstack); + boolean flag = itemstack.isPiglinCurrency(); if (p_34869_ && flag) { - m_34860_(p_34868_, m_34996_(p_34868_)); + throwItems(p_34868_, getBarterResponseItems(p_34868_)); } else if (!flag) { @@ -356,7 +_,7 @@ return false; - } else if (m_35024_(p_34858_) && p_34858_.m_6274_().m_21874_(MemoryModuleType.f_26372_)) { + } else if (isAdmiringDisabled(p_34858_) && p_34858_.getBrain().hasMemoryValue(MemoryModuleType.ATTACK_TARGET)) { return false; -- } else if (m_149967_(p_34859_)) { +- } else if (isBarterCurrency(p_34859_)) { + } else if (p_34859_.isPiglinCurrency()) { - return m_35028_(p_34858_); + return isNotHoldingLovedItemInOffHand(p_34858_); } else { - boolean flag = p_34858_.m_34780_(p_34859_); + boolean flag = p_34858_.canAddToInventory(p_34859_); @@ -455,7 +_,7 @@ } - protected static boolean m_34909_(Piglin p_34910_, ItemStack p_34911_) { -- return !m_35024_(p_34910_) && !m_35020_(p_34910_) && p_34910_.m_34667_() && m_149967_(p_34911_); -+ return !m_35024_(p_34910_) && !m_35020_(p_34910_) && p_34910_.m_34667_() && p_34911_.isPiglinCurrency(); + protected static boolean canAdmire(Piglin p_34910_, ItemStack p_34911_) { +- return !isAdmiringDisabled(p_34910_) && !isAdmiringItem(p_34910_) && p_34910_.isAdult() && isBarterCurrency(p_34911_); ++ return !isAdmiringDisabled(p_34910_) && !isAdmiringItem(p_34910_) && p_34910_.isAdult() && p_34911_.isPiglinCurrency(); } - protected static void m_34837_(Piglin p_34838_, LivingEntity p_34839_) { + protected static void wasHurtBy(Piglin p_34838_, LivingEntity p_34839_) { @@ -550,7 +_,7 @@ - public static boolean m_34808_(LivingEntity p_34809_) { - for(ItemStack itemstack : p_34809_.m_6168_()) { - Item item = itemstack.m_41720_(); -- if (item instanceof ArmorItem && ((ArmorItem)item).m_40401_() == ArmorMaterials.GOLD) { + public static boolean isWearingGold(LivingEntity p_34809_) { + for(ItemStack itemstack : p_34809_.getArmorSlots()) { + Item item = itemstack.getItem(); +- if (item instanceof ArmorItem && ((ArmorItem)item).getMaterial() == ArmorMaterials.GOLD) { + if (itemstack.makesPiglinsNeutral(p_34809_)) { return true; } @@ -39,9 +39,9 @@ @@ -703,7 +_,7 @@ } - private static boolean m_34918_(LivingEntity p_34919_) { -- return p_34919_.m_21055_(Items.f_42717_); -+ return p_34919_.m_21093_(is -> is.m_41720_() instanceof net.minecraft.world.item.CrossbowItem); + private static boolean hasCrossbow(LivingEntity p_34919_) { +- return p_34919_.isHolding(Items.CROSSBOW); ++ return p_34919_.isHolding(is -> is.getItem() instanceof net.minecraft.world.item.CrossbowItem); } - private static void m_34938_(LivingEntity p_34939_) { + private static void admireGoldItem(LivingEntity p_34939_) { diff --git a/patches/minecraft/net/minecraft/world/entity/monster/piglin/StopHoldingItemIfNoLongerAdmiring.java.patch b/patches/minecraft/net/minecraft/world/entity/monster/piglin/StopHoldingItemIfNoLongerAdmiring.java.patch index b10499746e..5b9e5724e6 100644 --- a/patches/minecraft/net/minecraft/world/entity/monster/piglin/StopHoldingItemIfNoLongerAdmiring.java.patch +++ b/patches/minecraft/net/minecraft/world/entity/monster/piglin/StopHoldingItemIfNoLongerAdmiring.java.patch @@ -1,11 +1,11 @@ --- a/net/minecraft/world/entity/monster/piglin/StopHoldingItemIfNoLongerAdmiring.java +++ b/net/minecraft/world/entity/monster/piglin/StopHoldingItemIfNoLongerAdmiring.java @@ -10,7 +_,7 @@ - return BehaviorBuilder.m_258034_((p_259197_) -> { - return p_259197_.group(p_259197_.m_258080_(MemoryModuleType.f_26336_)).apply(p_259197_, (p_259512_) -> { + return BehaviorBuilder.create((p_259197_) -> { + return p_259197_.group(p_259197_.absent(MemoryModuleType.ADMIRING_ITEM)).apply(p_259197_, (p_259512_) -> { return (p_296847_, p_296848_, p_296849_) -> { -- if (!p_296848_.m_21206_().m_41619_() && !p_296848_.m_21206_().m_150930_(Items.f_42740_)) { -+ if (!p_296848_.m_21206_().m_41619_() && !p_296848_.m_21206_().canPerformAction(net.minecraftforge.common.ToolActions.SHIELD_BLOCK)) { - PiglinAi.m_34867_(p_296848_, true); +- if (!p_296848_.getOffhandItem().isEmpty() && !p_296848_.getOffhandItem().is(Items.SHIELD)) { ++ if (!p_296848_.getOffhandItem().isEmpty() && !p_296848_.getOffhandItem().canPerformAction(net.minecraftforge.common.ToolActions.SHIELD_BLOCK)) { + PiglinAi.stopHoldingOffHandItem(p_296848_, true); return true; } else { diff --git a/patches/minecraft/net/minecraft/world/entity/npc/AbstractVillager.java.patch b/patches/minecraft/net/minecraft/world/entity/npc/AbstractVillager.java.patch index 4641520e29..f13f88863a 100644 --- a/patches/minecraft/net/minecraft/world/entity/npc/AbstractVillager.java.patch +++ b/patches/minecraft/net/minecraft/world/entity/npc/AbstractVillager.java.patch @@ -1,22 +1,22 @@ --- a/net/minecraft/world/entity/npc/AbstractVillager.java +++ b/net/minecraft/world/entity/npc/AbstractVillager.java @@ -116,6 +_,7 @@ - CriteriaTriggers.f_10585_.m_70959_((ServerPlayer)this.f_35263_, this, p_35274_.m_45368_()); + CriteriaTriggers.TRADE.trigger((ServerPlayer)this.tradingPlayer, this, p_35274_.getResult()); } -+ net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.event.entity.player.TradeWithVillagerEvent(this.f_35263_, p_35274_, this)); ++ net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.event.entity.player.TradeWithVillagerEvent(this.tradingPlayer, p_35274_, this)); } - protected abstract void m_8058_(MerchantOffer p_35299_); + protected abstract void rewardTradeXp(MerchantOffer p_35299_); @@ -164,9 +_,9 @@ } @Nullable -- public Entity m_5489_(ServerLevel p_35295_) { +- public Entity changeDimension(ServerLevel p_35295_) { + public Entity changeDimension(ServerLevel p_35295_, net.minecraftforge.common.util.ITeleporter teleporter) { - this.m_7996_(); -- return super.m_5489_(p_35295_); + this.stopTrading(); +- return super.changeDimension(p_35295_); + return super.changeDimension(p_35295_, teleporter); } - protected void m_7996_() { + protected void stopTrading() { diff --git a/patches/minecraft/net/minecraft/world/entity/npc/CatSpawner.java.patch b/patches/minecraft/net/minecraft/world/entity/npc/CatSpawner.java.patch index 184c9aa2d2..7a9976901a 100644 --- a/patches/minecraft/net/minecraft/world/entity/npc/CatSpawner.java.patch +++ b/patches/minecraft/net/minecraft/world/entity/npc/CatSpawner.java.patch @@ -4,9 +4,9 @@ if (cat == null) { return 0; } else { -+ cat.m_20035_(p_35334_, 0.0F, 0.0F); // Fix MC-147659: Some witch huts spawn the incorrect cat - cat.m_6518_(p_35335_, p_35335_.m_6436_(p_35334_), MobSpawnType.NATURAL, (SpawnGroupData)null, (CompoundTag)null); -- cat.m_20035_(p_35334_, 0.0F, 0.0F); - p_35335_.m_47205_(cat); ++ cat.moveTo(p_35334_, 0.0F, 0.0F); // Fix MC-147659: Some witch huts spawn the incorrect cat + cat.finalizeSpawn(p_35335_, p_35335_.getCurrentDifficultyAt(p_35334_), MobSpawnType.NATURAL, (SpawnGroupData)null, (CompoundTag)null); +- cat.moveTo(p_35334_, 0.0F, 0.0F); + p_35335_.addFreshEntityWithPassengers(cat); return 1; } diff --git a/patches/minecraft/net/minecraft/world/entity/npc/Villager.java.patch b/patches/minecraft/net/minecraft/world/entity/npc/Villager.java.patch index ecb3a470ec..5b0f60783e 100644 --- a/patches/minecraft/net/minecraft/world/entity/npc/Villager.java.patch +++ b/patches/minecraft/net/minecraft/world/entity/npc/Villager.java.patch @@ -2,37 +2,37 @@ +++ b/net/minecraft/world/entity/npc/Villager.java @@ -256,7 +_,7 @@ - public InteractionResult m_6071_(Player p_35472_, InteractionHand p_35473_) { - ItemStack itemstack = p_35472_.m_21120_(p_35473_); -- if (!itemstack.m_150930_(Items.f_42601_) && this.m_6084_() && !this.m_35306_() && !this.m_5803_()) { -+ if (itemstack.m_41720_() != Items.f_42601_ && this.m_6084_() && !this.m_35306_() && !this.m_5803_() && !p_35472_.m_36341_()) { - if (this.m_6162_()) { - this.m_35518_(); - return InteractionResult.m_19078_(this.m_9236_().f_46443_); + public InteractionResult mobInteract(Player p_35472_, InteractionHand p_35473_) { + ItemStack itemstack = p_35472_.getItemInHand(p_35473_); +- if (!itemstack.is(Items.VILLAGER_SPAWN_EGG) && this.isAlive() && !this.isTrading() && !this.isSleeping()) { ++ if (itemstack.getItem() != Items.VILLAGER_SPAWN_EGG && this.isAlive() && !this.isTrading() && !this.isSleeping() && !p_35472_.isSecondaryUseActive()) { + if (this.isBaby()) { + this.setUnhappy(); + return InteractionResult.sidedSuccess(this.level().isClientSide); @@ -670,7 +_,8 @@ } - protected Component m_5677_() { -- return Component.m_237115_(this.m_6095_().m_20675_() + "." + BuiltInRegistries.f_256735_.m_7981_(this.m_7141_().m_35571_()).m_135815_()); -+ net.minecraft.resources.ResourceLocation profName = net.minecraftforge.registries.ForgeRegistries.VILLAGER_PROFESSIONS.getKey(this.m_7141_().m_35571_()); -+ return Component.m_237115_(this.m_6095_().m_20675_() + '.' + (!"minecraft".equals(profName.m_135827_()) ? profName.m_135827_() + '.' : "") + profName.m_135815_()); + protected Component getTypeName() { +- return Component.translatable(this.getType().getDescriptionId() + "." + BuiltInRegistries.VILLAGER_PROFESSION.getKey(this.getVillagerData().getProfession()).getPath()); ++ net.minecraft.resources.ResourceLocation profName = net.minecraftforge.registries.ForgeRegistries.VILLAGER_PROFESSIONS.getKey(this.getVillagerData().getProfession()); ++ return Component.translatable(this.getType().getDescriptionId() + '.' + (!"minecraft".equals(profName.getNamespace()) ? profName.getNamespace() + '.' : "") + profName.getPath()); } - public void m_7822_(byte p_35391_) { + public void handleEntityEvent(byte p_35391_) { @@ -723,7 +_,7 @@ } - public void m_8038_(ServerLevel p_35409_, LightningBolt p_35410_) { -- if (p_35409_.m_46791_() != Difficulty.PEACEFUL) { -+ if (p_35409_.m_46791_() != Difficulty.PEACEFUL && net.minecraftforge.event.ForgeEventFactory.canLivingConvert(this, EntityType.f_20495_, (timer) -> {})) { - f_201976_.info("Villager {} was struck by lightning {}.", this, p_35410_); - Witch witch = EntityType.f_20495_.m_20615_(p_35409_); + public void thunderHit(ServerLevel p_35409_, LightningBolt p_35410_) { +- if (p_35409_.getDifficulty() != Difficulty.PEACEFUL) { ++ if (p_35409_.getDifficulty() != Difficulty.PEACEFUL && net.minecraftforge.event.ForgeEventFactory.canLivingConvert(this, EntityType.WITCH, (timer) -> {})) { + LOGGER.info("Villager {} was struck by lightning {}.", this, p_35410_); + Witch witch = EntityType.WITCH.create(p_35409_); if (witch != null) { @@ -736,6 +_,7 @@ } - witch.m_21530_(); + witch.setPersistenceRequired(); + net.minecraftforge.event.ForgeEventFactory.onLivingConvert(this, witch); - p_35409_.m_47205_(witch); - this.m_35524_(); - this.m_146870_(); + p_35409_.addFreshEntityWithPassengers(witch); + this.releaseAllPois(); + this.discard(); diff --git a/patches/minecraft/net/minecraft/world/entity/player/Inventory.java.patch b/patches/minecraft/net/minecraft/world/entity/player/Inventory.java.patch index e53ae82ac7..7c3f0eb1c6 100644 --- a/patches/minecraft/net/minecraft/world/entity/player/Inventory.java.patch +++ b/patches/minecraft/net/minecraft/world/entity/player/Inventory.java.patch @@ -3,37 +3,37 @@ @@ -130,7 +_,7 @@ for(int k = 0; k < 9; ++k) { - int l = (this.f_35977_ + k) % 9; -- if (!this.f_35974_.get(l).m_41793_()) { -+ if (!this.f_35974_.get(l).isNotReplaceableByPickAction(this.f_35978_, l)) { + int l = (this.selected + k) % 9; +- if (!this.items.get(l).isEnchanted()) { ++ if (!this.items.get(l).isNotReplaceableByPickAction(this.player, l)) { return l; } } @@ -178,7 +_,8 @@ - int i = p_36049_.m_41613_(); - ItemStack itemstack = this.m_8020_(p_36048_); - if (itemstack.m_41619_()) { + int i = p_36049_.getCount(); + ItemStack itemstack = this.getItem(p_36048_); + if (itemstack.isEmpty()) { - itemstack = new ItemStack(item, 0); -+ itemstack = p_36049_.m_41777_(); // Forge: Replace Item clone above to preserve item capabilities when picking the item up. -+ itemstack.m_41764_(0); - if (p_36049_.m_41782_()) { - itemstack.m_41751_(p_36049_.m_41783_().m_6426_()); ++ itemstack = p_36049_.copy(); // Forge: Replace Item clone above to preserve item capabilities when picking the item up. ++ itemstack.setCount(0); + if (p_36049_.hasTag()) { + itemstack.setTag(p_36049_.getTag().copy()); } @@ -229,7 +_,7 @@ } } } - -+ f_35975_.forEach(e -> e.onArmorTick(f_35978_.m_9236_(), f_35978_)); ++ armor.forEach(e -> e.onArmorTick(player.level(), player)); } - public boolean m_36054_(ItemStack p_36055_) { + public boolean add(ItemStack p_36055_) { @@ -277,6 +_,8 @@ } catch (Throwable throwable) { - CrashReport crashreport = CrashReport.m_127521_(throwable, "Adding item to inventory"); - CrashReportCategory crashreportcategory = crashreport.m_127514_("Item being added"); -+ crashreportcategory.m_128165_("Registry Name", () -> String.valueOf(net.minecraftforge.registries.ForgeRegistries.ITEMS.getKey(p_36042_.m_41720_()))); -+ crashreportcategory.m_128165_("Item Class", () -> p_36042_.m_41720_().getClass().getName()); - crashreportcategory.m_128159_("Item ID", Item.m_41393_(p_36042_.m_41720_())); - crashreportcategory.m_128159_("Item data", p_36042_.m_41773_()); - crashreportcategory.m_128165_("Item name", () -> { + CrashReport crashreport = CrashReport.forThrowable(throwable, "Adding item to inventory"); + CrashReportCategory crashreportcategory = crashreport.addCategory("Item being added"); ++ crashreportcategory.setDetail("Registry Name", () -> String.valueOf(net.minecraftforge.registries.ForgeRegistries.ITEMS.getKey(p_36042_.getItem()))); ++ crashreportcategory.setDetail("Item Class", () -> p_36042_.getItem().getClass().getName()); + crashreportcategory.setDetail("Item ID", Item.getId(p_36042_.getItem())); + crashreportcategory.setDetail("Item data", p_36042_.getDamageValue()); + crashreportcategory.setDetail("Item name", () -> { diff --git a/patches/minecraft/net/minecraft/world/entity/player/Player.java.patch b/patches/minecraft/net/minecraft/world/entity/player/Player.java.patch index c0edb7a6bb..cd04282c62 100644 --- a/patches/minecraft/net/minecraft/world/entity/player/Player.java.patch +++ b/patches/minecraft/net/minecraft/world/entity/player/Player.java.patch @@ -7,77 +7,77 @@ -public abstract class Player extends LivingEntity { +public abstract class Player extends LivingEntity implements net.minecraftforge.common.extensions.IForgePlayer { + public static final String PERSISTED_NBT_TAG = "PlayerPersisted"; - private static final Logger f_219722_ = LogUtils.getLogger(); - public static final int f_150082_ = 16; - public static final HumanoidArm f_291841_ = HumanoidArm.RIGHT; + private static final Logger LOGGER = LogUtils.getLogger(); + public static final int MAX_NAME_LENGTH = 16; + public static final HumanoidArm DEFAULT_MAIN_HAND = HumanoidArm.RIGHT; @@ -169,6 +_,9 @@ @Nullable - public FishingHook f_36083_; - protected float f_263750_; + public FishingHook fishing; + protected float hurtDir; + private final java.util.Collection prefixes = new java.util.LinkedList<>(); + private final java.util.Collection suffixes = new java.util.LinkedList<>(); + @Nullable private Pose forcedPose; public Player(Level p_250508_, BlockPos p_250289_, float p_251702_, GameProfile p_252153_) { - super(EntityType.f_20532_, p_250508_); + super(EntityType.PLAYER, p_250508_); @@ -194,7 +_,7 @@ } - public static AttributeSupplier.Builder m_36340_() { -- return LivingEntity.m_21183_().m_22268_(Attributes.f_22281_, 1.0D).m_22268_(Attributes.f_22279_, (double)0.1F).m_22266_(Attributes.f_22283_).m_22266_(Attributes.f_22286_); -+ return LivingEntity.m_21183_().m_22268_(Attributes.f_22281_, 1.0D).m_22268_(Attributes.f_22279_, (double) 0.1F).m_22266_(Attributes.f_22283_).m_22266_(Attributes.f_22286_).m_22266_(net.minecraftforge.common.ForgeMod.BLOCK_REACH.get()).m_22266_(Attributes.f_22282_).m_22266_(net.minecraftforge.common.ForgeMod.ENTITY_REACH.get()); + public static AttributeSupplier.Builder createAttributes() { +- return LivingEntity.createLivingAttributes().add(Attributes.ATTACK_DAMAGE, 1.0D).add(Attributes.MOVEMENT_SPEED, (double)0.1F).add(Attributes.ATTACK_SPEED).add(Attributes.LUCK); ++ return LivingEntity.createLivingAttributes().add(Attributes.ATTACK_DAMAGE, 1.0D).add(Attributes.MOVEMENT_SPEED, (double) 0.1F).add(Attributes.ATTACK_SPEED).add(Attributes.LUCK).add(net.minecraftforge.common.ForgeMod.BLOCK_REACH.get()).add(Attributes.ATTACK_KNOCKBACK).add(net.minecraftforge.common.ForgeMod.ENTITY_REACH.get()); } - protected void m_8097_() { + protected void defineSynchedData() { @@ -208,6 +_,7 @@ } - public void m_8119_() { + public void tick() { + net.minecraftforge.event.ForgeEventFactory.onPlayerPreTick(this); - this.f_19794_ = this.m_5833_(); - if (this.m_5833_()) { - this.m_6853_(false); + this.noPhysics = this.isSpectator(); + if (this.isSpectator()) { + this.setOnGround(false); @@ -223,7 +_,7 @@ - this.f_36110_ = 100; + this.sleepCounter = 100; } -- if (!this.m_9236_().f_46443_ && this.m_9236_().m_46461_()) { -+ if (!this.m_9236_().f_46443_ && !net.minecraftforge.event.ForgeEventFactory.onSleepingTimeCheck(this, m_21257_())) { - this.m_6145_(false, true); +- if (!this.level().isClientSide && this.level().isDay()) { ++ if (!this.level().isClientSide && !net.minecraftforge.event.ForgeEventFactory.onSleepingTimeCheck(this, getSleepingPos())) { + this.stopSleepInBed(false, true); } - } else if (this.f_36110_ > 0) { + } else if (this.sleepCounter > 0) { @@ -278,6 +_,7 @@ - this.m_36372_(); - this.f_36087_.m_41518_(); - this.m_7594_(); + this.turtleHelmetTick(); + this.cooldowns.tick(); + this.updatePlayerPose(); + net.minecraftforge.event.ForgeEventFactory.onPlayerPostTick(this); } - public boolean m_36341_() { + public boolean isSecondaryUseActive() { @@ -353,6 +_,10 @@ } - protected void m_7594_() { + protected void updatePlayerPose() { + if(forcedPose != null) { -+ this.m_20124_(forcedPose); ++ this.setPose(forcedPose); + return; + } - if (this.m_295652_(Pose.SWIMMING)) { + if (this.canPlayerFitWithinBlocksAndEntitiesWhen(Pose.SWIMMING)) { Pose pose; - if (this.m_21255_()) { + if (this.isFallFlying()) { @@ -577,6 +_,7 @@ } - public void m_6667_(DamageSource p_36152_) { + public void die(DamageSource p_36152_) { + if (net.minecraftforge.common.ForgeHooks.onLivingDeath(this, p_36152_)) return; - super.m_6667_(p_36152_); - this.m_20090_(); - if (!this.m_5833_()) { + super.die(p_36152_); + this.reapplyPosition(); + if (!this.isSpectator()) { @@ -626,7 +_,7 @@ @Nullable - public ItemEntity m_36176_(ItemStack p_36177_, boolean p_36178_) { -- return this.m_7197_(p_36177_, false, p_36178_); + public ItemEntity drop(ItemStack p_36177_, boolean p_36178_) { +- return this.drop(p_36177_, false, p_36178_); + return net.minecraftforge.common.ForgeHooks.onPlayerTossEvent(this, p_36177_, p_36178_); } @@ -87,14 +87,14 @@ } + @Deprecated //Use location sensitive version below - public float m_36281_(BlockState p_36282_) { + public float getDestroySpeed(BlockState p_36282_) { + return getDigSpeed(p_36282_, null); + } + + public float getDigSpeed(BlockState p_36282_, @Nullable BlockPos pos) { - float f = this.f_36093_.m_36020_(p_36282_); + float f = this.inventory.getDestroySpeed(p_36282_); if (f > 1.0F) { - int i = EnchantmentHelper.m_44926_(this); + int i = EnchantmentHelper.getBlockEfficiency(this); @@ -706,11 +_,12 @@ f /= 5.0F; } @@ -103,127 +103,127 @@ return f; } - public boolean m_36298_(BlockState p_36299_) { -- return !p_36299_.m_60834_() || this.f_36093_.m_36056_().m_41735_(p_36299_); -+ return net.minecraftforge.event.ForgeEventFactory.doPlayerHarvestCheck(this, p_36299_, !p_36299_.m_60834_() || this.f_36093_.m_36056_().m_41735_(p_36299_)); + public boolean hasCorrectToolForDrops(BlockState p_36299_) { +- return !p_36299_.requiresCorrectToolForDrops() || this.inventory.getSelected().isCorrectToolForDrops(p_36299_); ++ return net.minecraftforge.event.ForgeEventFactory.doPlayerHarvestCheck(this, p_36299_, !p_36299_.requiresCorrectToolForDrops() || this.inventory.getSelected().isCorrectToolForDrops(p_36299_)); } - public void m_7378_(CompoundTag p_36215_) { + public void readAdditionalSaveData(CompoundTag p_36215_) { @@ -796,6 +_,7 @@ } - public boolean m_6469_(DamageSource p_36154_, float p_36155_) { + public boolean hurt(DamageSource p_36154_, float p_36155_) { + if (!net.minecraftforge.common.ForgeHooks.onPlayerAttack(this, p_36154_, p_36155_)) return false; - if (this.m_6673_(p_36154_)) { + if (this.isInvulnerableTo(p_36154_)) { return false; - } else if (this.f_36077_.f_35934_ && !p_36154_.m_269533_(DamageTypeTags.f_268738_)) { + } else if (this.abilities.invulnerable && !p_36154_.is(DamageTypeTags.BYPASSES_INVULNERABILITY)) { @@ -830,7 +_,7 @@ - protected void m_6728_(LivingEntity p_36295_) { - super.m_6728_(p_36295_); -- if (p_36295_.m_213824_()) { -+ if (p_36295_.m_21205_().canDisableShield(this.f_20935_, this, p_36295_)) { - this.m_36384_(true); + protected void blockUsingShield(LivingEntity p_36295_) { + super.blockUsingShield(p_36295_); +- if (p_36295_.canDisableShield()) { ++ if (p_36295_.getMainHandItem().canDisableShield(this.useItem, this, p_36295_)) { + this.disableShield(true); } @@ -859,7 +_,7 @@ } - protected void m_7909_(float p_36383_) { -- if (this.f_20935_.m_150930_(Items.f_42740_)) { -+ if (this.f_20935_.canPerformAction(net.minecraftforge.common.ToolActions.SHIELD_BLOCK)) { - if (!this.m_9236_().f_46443_) { - this.m_36246_(Stats.f_12982_.m_12902_(this.f_20935_.m_41720_())); + protected void hurtCurrentlyUsedShield(float p_36383_) { +- if (this.useItem.is(Items.SHIELD)) { ++ if (this.useItem.canPerformAction(net.minecraftforge.common.ToolActions.SHIELD_BLOCK)) { + if (!this.level().isClientSide) { + this.awardStat(Stats.ITEM_USED.get(this.useItem.getItem())); } @@ -869,6 +_,8 @@ - InteractionHand interactionhand = this.m_7655_(); - this.f_20935_.m_41622_(i, this, (p_219739_) -> { - p_219739_.m_21190_(interactionhand); -+ net.minecraftforge.event.ForgeEventFactory.onPlayerDestroyItem(this, this.f_20935_, interactionhand); -+ m_5810_(); // Forge: fix MC-168573 + InteractionHand interactionhand = this.getUsedItemHand(); + this.useItem.hurtAndBreak(i, this, (p_219739_) -> { + p_219739_.broadcastBreakEvent(interactionhand); ++ net.minecraftforge.event.ForgeEventFactory.onPlayerDestroyItem(this, this.useItem, interactionhand); ++ stopUsingItem(); // Forge: fix MC-168573 }); - if (this.f_20935_.m_41619_()) { + if (this.useItem.isEmpty()) { if (interactionhand == InteractionHand.MAIN_HAND) { @@ -887,10 +_,13 @@ - protected void m_6475_(DamageSource p_36312_, float p_36313_) { - if (!this.m_6673_(p_36312_)) { + protected void actuallyHurt(DamageSource p_36312_, float p_36313_) { + if (!this.isInvulnerableTo(p_36312_)) { + p_36313_ = net.minecraftforge.common.ForgeHooks.onLivingHurt(this, p_36312_, p_36313_); + if (p_36313_ <= 0) return; - p_36313_ = this.m_21161_(p_36312_, p_36313_); - p_36313_ = this.m_6515_(p_36312_, p_36313_); - float f1 = Math.max(p_36313_ - this.m_6103_(), 0.0F); - this.m_7911_(this.m_6103_() - (p_36313_ - f1)); + p_36313_ = this.getDamageAfterArmorAbsorb(p_36312_, p_36313_); + p_36313_ = this.getDamageAfterMagicAbsorb(p_36312_, p_36313_); + float f1 = Math.max(p_36313_ - this.getAbsorptionAmount(), 0.0F); + this.setAbsorptionAmount(this.getAbsorptionAmount() - (p_36313_ - f1)); + f1 = net.minecraftforge.common.ForgeHooks.onLivingDamage(this, p_36312_, f1); float f = p_36313_ - f1; if (f > 0.0F && f < 3.4028235E37F) { - this.m_36222_(Stats.f_12933_, Math.round(f * 10.0F)); + this.awardStat(Stats.DAMAGE_ABSORBED, Math.round(f * 10.0F)); @@ -953,6 +_,8 @@ return InteractionResult.PASS; } else { + InteractionResult cancelResult = net.minecraftforge.common.ForgeHooks.onInteractEntity(this, p_36158_, p_36159_); + if (cancelResult != null) return cancelResult; - ItemStack itemstack = this.m_21120_(p_36159_); - ItemStack itemstack1 = itemstack.m_41777_(); - InteractionResult interactionresult = p_36158_.m_6096_(this, p_36159_); + ItemStack itemstack = this.getItemInHand(p_36159_); + ItemStack itemstack1 = itemstack.copy(); + InteractionResult interactionresult = p_36158_.interact(this, p_36159_); @@ -961,6 +_,9 @@ - itemstack.m_41764_(itemstack1.m_41613_()); + itemstack.setCount(itemstack1.getCount()); } -+ if (!this.f_36077_.f_35937_ && itemstack.m_41619_()) { ++ if (!this.abilities.instabuild && itemstack.isEmpty()) { + net.minecraftforge.event.ForgeEventFactory.onPlayerDestroyItem(this, itemstack1, p_36159_); + } return interactionresult; } else { - if (!itemstack.m_41619_() && p_36158_ instanceof LivingEntity) { + if (!itemstack.isEmpty() && p_36158_ instanceof LivingEntity) { @@ -972,6 +_,7 @@ - if (interactionresult1.m_19077_()) { - this.m_9236_().m_214171_(GameEvent.f_223708_, p_36158_.m_20182_(), GameEvent.Context.m_223717_(this)); - if (itemstack.m_41619_() && !this.f_36077_.f_35937_) { + if (interactionresult1.consumesAction()) { + this.level().gameEvent(GameEvent.ENTITY_INTERACT, p_36158_.position(), GameEvent.Context.of(this)); + if (itemstack.isEmpty() && !this.abilities.instabuild) { + net.minecraftforge.event.ForgeEventFactory.onPlayerDestroyItem(this, itemstack1, p_36159_); - this.m_21008_(p_36159_, ItemStack.f_41583_); + this.setItemInHand(p_36159_, ItemStack.EMPTY); } @@ -1001,6 +_,7 @@ - return !this.f_36077_.f_35935_; + return !this.abilities.flying; } + // Forge: Don't update this method to use IForgeEntity#getStepHeight() - https://github.com/MinecraftForge/MinecraftForge/issues/8922 - protected Vec3 m_5763_(Vec3 p_36201_, MoverType p_36202_) { - if (!this.f_36077_.f_35935_ && p_36201_.f_82480_ <= 0.0D && (p_36202_ == MoverType.SELF || p_36202_ == MoverType.PLAYER) && this.m_36343_() && this.m_36386_()) { - double d0 = p_36201_.f_82479_; + protected Vec3 maybeBackOffFromEdge(Vec3 p_36201_, MoverType p_36202_) { + if (!this.abilities.flying && p_36201_.y <= 0.0D && (p_36202_ == MoverType.SELF || p_36202_ == MoverType.PLAYER) && this.isStayingOnGroundSurface() && this.isAboveGround()) { + double d0 = p_36201_.x; @@ -1051,11 +_,13 @@ return p_36201_; } + // Forge: Don't update this method to use IForgeEntity#getStepHeight() - https://github.com/MinecraftForge/MinecraftForge/issues/9376 - private boolean m_36386_() { - return this.m_20096_() || this.f_19789_ < this.m_274421_() && !this.m_9236_().m_45756_(this, this.m_20191_().m_82386_(0.0D, (double)(this.f_19789_ - this.m_274421_()), 0.0D)); + private boolean isAboveGround() { + return this.onGround() || this.fallDistance < this.maxUpStep() && !this.level().noCollision(this, this.getBoundingBox().move(0.0D, (double)(this.fallDistance - this.maxUpStep()), 0.0D)); } - public void m_5706_(Entity p_36347_) { + public void attack(Entity p_36347_) { + if (!net.minecraftforge.common.ForgeHooks.onPlayerAttackTarget(this, p_36347_)) return; - if (p_36347_.m_6097_()) { - if (!p_36347_.m_7313_(this)) { - float f = (float)this.m_21133_(Attributes.f_22281_); + if (p_36347_.isAttackable()) { + if (!p_36347_.skipAttackInteraction(this)) { + float f = (float)this.getAttributeValue(Attributes.ATTACK_DAMAGE); @@ -1069,11 +_,10 @@ - float f2 = this.m_36403_(0.5F); + float f2 = this.getAttackStrengthScale(0.5F); f *= 0.2F + f2 * f2 * 0.8F; f1 *= f2; -- this.m_36334_(); +- this.resetAttackStrengthTicker(); if (f > 0.0F || f1 > 0.0F) { boolean flag = f2 > 0.9F; boolean flag1 = false; - int i = 0; -+ float i = (float)this.m_21133_(Attributes.f_22282_); // Forge: Initialize this value to the attack knockback attribute of the player, which is by default 0 - i += EnchantmentHelper.m_44894_(this); - if (this.m_20142_() && flag) { - this.m_9236_().m_6263_((Player)null, this.m_20185_(), this.m_20186_(), this.m_20189_(), SoundEvents.f_12314_, this.m_5720_(), 1.0F, 1.0F); ++ float i = (float)this.getAttributeValue(Attributes.ATTACK_KNOCKBACK); // Forge: Initialize this value to the attack knockback attribute of the player, which is by default 0 + i += EnchantmentHelper.getKnockbackBonus(this); + if (this.isSprinting() && flag) { + this.level().playSound((Player)null, this.getX(), this.getY(), this.getZ(), SoundEvents.PLAYER_ATTACK_KNOCKBACK, this.getSoundSource(), 1.0F, 1.0F); @@ -1083,8 +_,10 @@ - boolean flag2 = flag && this.f_19789_ > 0.0F && !this.m_20096_() && !this.m_6147_() && !this.m_20069_() && !this.m_21023_(MobEffects.f_19610_) && !this.m_20159_() && p_36347_ instanceof LivingEntity; - flag2 = flag2 && !this.m_20142_(); + boolean flag2 = flag && this.fallDistance > 0.0F && !this.onGround() && !this.onClimbable() && !this.isInWater() && !this.hasEffect(MobEffects.BLINDNESS) && !this.isPassenger() && p_36347_ instanceof LivingEntity; + flag2 = flag2 && !this.isSprinting(); + net.minecraftforge.event.entity.player.CriticalHitEvent hitResult = net.minecraftforge.common.ForgeHooks.getCriticalHit(this, p_36347_, flag2, flag2 ? 1.5F : 1.0F); + flag2 = hitResult != null; if (flag2) { @@ -233,10 +233,10 @@ f += f1; @@ -1092,9 +_,7 @@ - double d0 = (double)(this.f_19787_ - this.f_19867_); - if (flag && !flag2 && !flag1 && this.m_20096_() && d0 < (double)this.m_6113_()) { - ItemStack itemstack = this.m_21120_(InteractionHand.MAIN_HAND); -- if (itemstack.m_41720_() instanceof SwordItem) { + double d0 = (double)(this.walkDist - this.walkDistO); + if (flag && !flag2 && !flag1 && this.onGround() && d0 < (double)this.getSpeed()) { + ItemStack itemstack = this.getItemInHand(InteractionHand.MAIN_HAND); +- if (itemstack.getItem() instanceof SwordItem) { - flag3 = true; - } + flag3 = itemstack.canPerformAction(net.minecraftforge.common.ToolActions.SWORD_SWEEP); @@ -245,177 +245,177 @@ float f4 = 0.0F; @@ -1125,8 +_,9 @@ if (flag3) { - float f3 = 1.0F + EnchantmentHelper.m_44821_(this) * f; + float f3 = 1.0F + EnchantmentHelper.getSweepingDamageRatio(this) * f; -- for(LivingEntity livingentity : this.m_9236_().m_45976_(LivingEntity.class, p_36347_.m_20191_().m_82377_(1.0D, 0.25D, 1.0D))) { -- if (livingentity != this && livingentity != p_36347_ && !this.m_7307_(livingentity) && (!(livingentity instanceof ArmorStand) || !((ArmorStand)livingentity).m_31677_()) && this.m_20280_(livingentity) < 9.0D) { -+ for(LivingEntity livingentity : this.m_9236_().m_45976_(LivingEntity.class, this.m_21120_(InteractionHand.MAIN_HAND).getSweepHitBox(this, p_36347_))) { -+ double entityReachSq = Mth.m_144952_(this.getEntityReach()); // Use entity reach instead of constant 9.0. Vanilla uses bottom center-to-center checks here, so don't update this to use canReach, since it uses closest-corner checks. -+ if (livingentity != this && livingentity != p_36347_ && !this.m_7307_(livingentity) && (!(livingentity instanceof ArmorStand) || !((ArmorStand)livingentity).m_31677_()) && this.m_20280_(livingentity) < entityReachSq) { - livingentity.m_147240_((double)0.4F, (double)Mth.m_14031_(this.m_146908_() * ((float)Math.PI / 180F)), (double)(-Mth.m_14089_(this.m_146908_() * ((float)Math.PI / 180F)))); - livingentity.m_6469_(this.m_269291_().m_269075_(this), f3); +- for(LivingEntity livingentity : this.level().getEntitiesOfClass(LivingEntity.class, p_36347_.getBoundingBox().inflate(1.0D, 0.25D, 1.0D))) { +- if (livingentity != this && livingentity != p_36347_ && !this.isAlliedTo(livingentity) && (!(livingentity instanceof ArmorStand) || !((ArmorStand)livingentity).isMarker()) && this.distanceToSqr(livingentity) < 9.0D) { ++ for(LivingEntity livingentity : this.level().getEntitiesOfClass(LivingEntity.class, this.getItemInHand(InteractionHand.MAIN_HAND).getSweepHitBox(this, p_36347_))) { ++ double entityReachSq = Mth.square(this.getEntityReach()); // Use entity reach instead of constant 9.0. Vanilla uses bottom center-to-center checks here, so don't update this to use canReach, since it uses closest-corner checks. ++ if (livingentity != this && livingentity != p_36347_ && !this.isAlliedTo(livingentity) && (!(livingentity instanceof ArmorStand) || !((ArmorStand)livingentity).isMarker()) && this.distanceToSqr(livingentity) < entityReachSq) { + livingentity.knockback((double)0.4F, (double)Mth.sin(this.getYRot() * ((float)Math.PI / 180F)), (double)(-Mth.cos(this.getYRot() * ((float)Math.PI / 180F)))); + livingentity.hurt(this.damageSources().playerAttack(this), f3); } @@ -1167,13 +_,15 @@ - EnchantmentHelper.m_44896_(this, p_36347_); - ItemStack itemstack1 = this.m_21205_(); + EnchantmentHelper.doPostDamageEffects(this, p_36347_); + ItemStack itemstack1 = this.getMainHandItem(); Entity entity = p_36347_; - if (p_36347_ instanceof EnderDragonPart) { -- entity = ((EnderDragonPart)p_36347_).f_31010_; +- entity = ((EnderDragonPart)p_36347_).parentMob; + if (p_36347_ instanceof net.minecraftforge.entity.PartEntity) { + entity = ((net.minecraftforge.entity.PartEntity) p_36347_).getParent(); } - if (!this.m_9236_().f_46443_ && !itemstack1.m_41619_() && entity instanceof LivingEntity) { -+ ItemStack copy = itemstack1.m_41777_(); - itemstack1.m_41640_((LivingEntity)entity, this); - if (itemstack1.m_41619_()) { + if (!this.level().isClientSide && !itemstack1.isEmpty() && entity instanceof LivingEntity) { ++ ItemStack copy = itemstack1.copy(); + itemstack1.hurtEnemy((LivingEntity)entity, this); + if (itemstack1.isEmpty()) { + net.minecraftforge.event.ForgeEventFactory.onPlayerDestroyItem(this, copy, InteractionHand.MAIN_HAND); - this.m_21008_(InteractionHand.MAIN_HAND, ItemStack.f_41583_); + this.setItemInHand(InteractionHand.MAIN_HAND, ItemStack.EMPTY); } } @@ -1199,6 +_,7 @@ } } } -+ this.m_36334_(); // FORGE: Moved from beginning of attack() so that getAttackStrengthScale() returns an accurate value during all attack events ++ this.resetAttackStrengthTicker(); // FORGE: Moved from beginning of attack() so that getAttackStrengthScale() returns an accurate value during all attack events } } @@ -1215,7 +_,7 @@ } - if (this.f_19796_.m_188501_() < f) { -- this.m_36335_().m_41524_(Items.f_42740_, 100); -+ this.m_36335_().m_41524_(this.m_21211_().m_41720_(), 100); - this.m_5810_(); - this.m_9236_().m_7605_(this, (byte)30); + if (this.random.nextFloat() < f) { +- this.getCooldowns().addCooldown(Items.SHIELD, 100); ++ this.getCooldowns().addCooldown(this.getUseItem().getItem(), 100); + this.stopUsingItem(); + this.level().broadcastEntityEvent(this, (byte)30); } @@ -1279,6 +_,7 @@ } - public void m_6145_(boolean p_36226_, boolean p_36227_) { + public void stopSleepInBed(boolean p_36226_, boolean p_36227_) { + net.minecraftforge.event.ForgeEventFactory.onPlayerWakeup(this, p_36226_, p_36227_); - super.m_5796_(); - if (this.m_9236_() instanceof ServerLevel && p_36227_) { - ((ServerLevel)this.m_9236_()).m_8878_(); + super.stopSleeping(); + if (this.level() instanceof ServerLevel && p_36227_) { + ((ServerLevel)this.level()).updateSleepingPlayerList(); @@ -1304,7 +_,7 @@ - } else if (block instanceof BedBlock && BedBlock.m_49488_(p_36131_)) { - return BedBlock.m_260958_(EntityType.f_20532_, p_36131_, p_36132_, blockstate.m_61143_(BedBlock.f_54117_), p_36133_); + } else if (block instanceof BedBlock && BedBlock.canSetSpawn(p_36131_)) { + return BedBlock.findStandUpPosition(EntityType.PLAYER, p_36131_, p_36132_, blockstate.getValue(BedBlock.FACING), p_36133_); } else if (!p_36134_) { - return Optional.empty(); -+ return blockstate.getRespawnPosition(EntityType.f_20532_, p_36131_, p_36132_, p_36133_, null); ++ return blockstate.getRespawnPosition(EntityType.PLAYER, p_36131_, p_36132_, p_36133_, null); } else { - boolean flag = block.m_48673_(blockstate); - BlockState blockstate1 = p_36131_.m_8055_(p_36132_.m_7494_()); + boolean flag = block.isPossibleToRespawnInThis(blockstate); + BlockState blockstate1 = p_36131_.getBlockState(p_36132_.above()); @@ -1485,6 +_,7 @@ - public boolean m_142535_(float p_150093_, float p_150094_, DamageSource p_150095_) { - if (this.f_36077_.f_35936_) { + public boolean causeFallDamage(float p_150093_, float p_150094_, DamageSource p_150095_) { + if (this.abilities.mayfly) { + net.minecraftforge.event.ForgeEventFactory.onPlayerFall(this, p_150093_, p_150093_); return false; } else { if (p_150093_ >= 2.0F) { @@ -1498,7 +_,7 @@ - public boolean m_36319_() { - if (!this.m_20096_() && !this.m_21255_() && !this.m_20069_() && !this.m_21023_(MobEffects.f_19620_)) { - ItemStack itemstack = this.m_6844_(EquipmentSlot.CHEST); -- if (itemstack.m_150930_(Items.f_42741_) && ElytraItem.m_41140_(itemstack)) { + public boolean tryToStartFallFlying() { + if (!this.onGround() && !this.isFallFlying() && !this.isInWater() && !this.hasEffect(MobEffects.LEVITATION)) { + ItemStack itemstack = this.getItemBySlot(EquipmentSlot.CHEST); +- if (itemstack.is(Items.ELYTRA) && ElytraItem.isFlyEnabled(itemstack)) { + if (itemstack.canElytraFly(this)) { - this.m_36320_(); + this.startFallFlying(); return true; } @@ -1526,13 +_,13 @@ - protected void m_7355_(BlockPos p_282121_, BlockState p_282194_) { - if (this.m_20069_()) { - this.m_280447_(); -- this.m_280568_(p_282194_); + protected void playStepSound(BlockPos p_282121_, BlockState p_282194_) { + if (this.isInWater()) { + this.waterSwimSound(); +- this.playMuffledStepSound(p_282194_); + this.playMuffledStepSound(p_282194_, p_282121_); } else { - BlockPos blockpos = this.m_276951_(p_282121_); + BlockPos blockpos = this.getPrimaryStepSoundBlockPos(p_282121_); if (!p_282121_.equals(blockpos)) { - BlockState blockstate = this.m_9236_().m_8055_(blockpos); - if (blockstate.m_204336_(BlockTags.f_276549_)) { -- this.m_276961_(blockstate, p_282194_); + BlockState blockstate = this.level().getBlockState(blockpos); + if (blockstate.is(BlockTags.COMBINATION_STEP_SOUND_BLOCKS)) { +- this.playCombinationStepSounds(blockstate, p_282194_); + this.playCombinationStepSounds(blockstate, p_282194_, blockpos, p_282121_); } else { - super.m_7355_(blockpos, blockstate); + super.playStepSound(blockpos, blockstate); } @@ -1560,6 +_,10 @@ } - public void m_6756_(int p_36291_) { + public void giveExperiencePoints(int p_36291_) { + net.minecraftforge.event.entity.player.PlayerXpEvent.XpChange event = new net.minecraftforge.event.entity.player.PlayerXpEvent.XpChange(this, p_36291_); + if (net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(event)) return; + p_36291_ = event.getAmount(); + - this.m_36401_(p_36291_); - this.f_36080_ += (float)p_36291_ / (float)this.m_36323_(); - this.f_36079_ = Mth.m_14045_(this.f_36079_ + p_36291_, 0, Integer.MAX_VALUE); + this.increaseScore(p_36291_); + this.experienceProgress += (float)p_36291_ / (float)this.getXpNeededForNextLevel(); + this.totalExperience = Mth.clamp(this.totalExperience + p_36291_, 0, Integer.MAX_VALUE); @@ -1588,7 +_,7 @@ } - public void m_7408_(ItemStack p_36172_, int p_36173_) { -- this.f_36078_ -= p_36173_; -+ m_6749_(-p_36173_); - if (this.f_36078_ < 0) { - this.f_36078_ = 0; - this.f_36080_ = 0.0F; + public void onEnchantmentPerformed(ItemStack p_36172_, int p_36173_) { +- this.experienceLevel -= p_36173_; ++ giveExperienceLevels(-p_36173_); + if (this.experienceLevel < 0) { + this.experienceLevel = 0; + this.experienceProgress = 0.0F; @@ -1599,6 +_,10 @@ } - public void m_6749_(int p_36276_) { + public void giveExperienceLevels(int p_36276_) { + net.minecraftforge.event.entity.player.PlayerXpEvent.LevelChange event = new net.minecraftforge.event.entity.player.PlayerXpEvent.LevelChange(this, p_36276_); + if (net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(event)) return; + p_36276_ = event.getLevels(); + - this.f_36078_ += p_36276_; - if (this.f_36078_ < 0) { - this.f_36078_ = 0; + this.experienceLevel += p_36276_; + if (this.experienceLevel < 0) { + this.experienceLevel = 0; @@ -1794,7 +_,11 @@ } - public Component m_5446_() { -- MutableComponent mutablecomponent = PlayerTeam.m_83348_(this.m_5647_(), this.m_7755_()); -+ if (this.displayname == null) this.displayname = net.minecraftforge.event.ForgeEventFactory.getPlayerDisplayName(this, this.m_7755_()); -+ MutableComponent mutablecomponent = Component.m_237113_(""); -+ mutablecomponent = prefixes.stream().reduce(mutablecomponent, MutableComponent::m_7220_); -+ mutablecomponent = mutablecomponent.m_7220_(PlayerTeam.m_83348_(this.m_5647_(), this.displayname)); -+ mutablecomponent = suffixes.stream().reduce(mutablecomponent, MutableComponent::m_7220_); - return this.m_36218_(mutablecomponent); + public Component getDisplayName() { +- MutableComponent mutablecomponent = PlayerTeam.formatNameForTeam(this.getTeam(), this.getName()); ++ if (this.displayname == null) this.displayname = net.minecraftforge.event.ForgeEventFactory.getPlayerDisplayName(this, this.getName()); ++ MutableComponent mutablecomponent = Component.literal(""); ++ mutablecomponent = prefixes.stream().reduce(mutablecomponent, MutableComponent::append); ++ mutablecomponent = mutablecomponent.append(PlayerTeam.formatNameForTeam(this.getTeam(), this.displayname)); ++ mutablecomponent = suffixes.stream().reduce(mutablecomponent, MutableComponent::append); + return this.decorateDisplayNameComponent(mutablecomponent); } @@ -1927,24 +_,24 @@ - Predicate predicate = ((ProjectileWeaponItem)p_36349_.m_41720_()).m_6442_(); - ItemStack itemstack = ProjectileWeaponItem.m_43010_(this, predicate); - if (!itemstack.m_41619_()) { + Predicate predicate = ((ProjectileWeaponItem)p_36349_.getItem()).getSupportedHeldProjectiles(); + ItemStack itemstack = ProjectileWeaponItem.getHeldProjectile(this, predicate); + if (!itemstack.isEmpty()) { - return itemstack; + return net.minecraftforge.common.ForgeHooks.getProjectile(this, p_36349_, itemstack); } else { - predicate = ((ProjectileWeaponItem)p_36349_.m_41720_()).m_6437_(); + predicate = ((ProjectileWeaponItem)p_36349_.getItem()).getAllSupportedProjectiles(); - for(int i = 0; i < this.f_36093_.m_6643_(); ++i) { - ItemStack itemstack1 = this.f_36093_.m_8020_(i); + for(int i = 0; i < this.inventory.getContainerSize(); ++i) { + ItemStack itemstack1 = this.inventory.getItem(i); if (predicate.test(itemstack1)) { - return itemstack1; + return net.minecraftforge.common.ForgeHooks.getProjectile(this, p_36349_, itemstack1); } } -- return this.f_36077_.f_35937_ ? new ItemStack(Items.f_42412_) : ItemStack.f_41583_; -+ return net.minecraftforge.common.ForgeHooks.getProjectile(this, p_36349_, this.f_36077_.f_35937_ ? new ItemStack(Items.f_42412_) : ItemStack.f_41583_); +- return this.abilities.instabuild ? new ItemStack(Items.ARROW) : ItemStack.EMPTY; ++ return net.minecraftforge.common.ForgeHooks.getProjectile(this, p_36349_, this.abilities.instabuild ? new ItemStack(Items.ARROW) : ItemStack.EMPTY); } } } - public ItemStack m_5584_(Level p_36185_, ItemStack p_36186_) { -- this.m_36324_().m_38712_(p_36186_.m_41720_(), p_36186_); -+ this.m_36324_().eat(p_36186_.m_41720_(), p_36186_, this); - this.m_36246_(Stats.f_12982_.m_12902_(p_36186_.m_41720_())); - p_36185_.m_6263_((Player)null, this.m_20185_(), this.m_20186_(), this.m_20189_(), SoundEvents.f_12321_, SoundSource.PLAYERS, 0.5F, p_36185_.f_46441_.m_188501_() * 0.1F + 0.9F); + public ItemStack eat(Level p_36185_, ItemStack p_36186_) { +- this.getFoodData().eat(p_36186_.getItem(), p_36186_); ++ this.getFoodData().eat(p_36186_.getItem(), p_36186_, this); + this.awardStat(Stats.ITEM_USED.get(p_36186_.getItem())); + p_36185_.playSound((Player)null, this.getX(), this.getY(), this.getZ(), SoundEvents.PLAYER_BURP, SoundSource.PLAYERS, 0.5F, p_36185_.random.nextFloat() * 0.1F + 0.9F); if (this instanceof ServerPlayer) { @@ -2052,5 +_,63 @@ - public Component m_36423_() { - return this.f_36413_; + public Component getMessage() { + return this.message; } + } + @@ -433,29 +433,29 @@ + * Force the displayed name to refresh, by firing {@link net.minecraftforge.event.entity.player.PlayerEvent.NameFormat}, using the real player name as event parameter. + */ + public void refreshDisplayName() { -+ this.displayname = net.minecraftforge.event.ForgeEventFactory.getPlayerDisplayName(this, this.m_7755_()); ++ this.displayname = net.minecraftforge.event.ForgeEventFactory.getPlayerDisplayName(this, this.getName()); + } + + private final net.minecraftforge.common.util.LazyOptional + playerMainHandler = net.minecraftforge.common.util.LazyOptional.of( -+ () -> new net.minecraftforge.items.wrapper.PlayerMainInvWrapper(f_36093_)); ++ () -> new net.minecraftforge.items.wrapper.PlayerMainInvWrapper(inventory)); + + private final net.minecraftforge.common.util.LazyOptional + playerEquipmentHandler = net.minecraftforge.common.util.LazyOptional.of( + () -> new net.minecraftforge.items.wrapper.CombinedInvWrapper( -+ new net.minecraftforge.items.wrapper.PlayerArmorInvWrapper(f_36093_), -+ new net.minecraftforge.items.wrapper.PlayerOffhandInvWrapper(f_36093_))); ++ new net.minecraftforge.items.wrapper.PlayerArmorInvWrapper(inventory), ++ new net.minecraftforge.items.wrapper.PlayerOffhandInvWrapper(inventory))); + + private final net.minecraftforge.common.util.LazyOptional + playerJoinedHandler = net.minecraftforge.common.util.LazyOptional.of( -+ () -> new net.minecraftforge.items.wrapper.PlayerInvWrapper(f_36093_)); ++ () -> new net.minecraftforge.items.wrapper.PlayerInvWrapper(inventory)); + + @Override + public net.minecraftforge.common.util.LazyOptional getCapability(net.minecraftforge.common.capabilities.Capability capability, @Nullable Direction facing) { -+ if (this.m_6084_() && capability == net.minecraftforge.common.capabilities.ForgeCapabilities.ITEM_HANDLER) { ++ if (this.isAlive() && capability == net.minecraftforge.common.capabilities.ForgeCapabilities.ITEM_HANDLER) { + if (facing == null) return playerJoinedHandler.cast(); -+ else if (facing.m_122434_().m_122478_()) return playerMainHandler.cast(); -+ else if (facing.m_122434_().m_122479_()) return playerEquipmentHandler.cast(); ++ else if (facing.getAxis().isVertical()) return playerMainHandler.cast(); ++ else if (facing.getAxis().isHorizontal()) return playerEquipmentHandler.cast(); + } + return super.getCapability(capability, facing); + } diff --git a/patches/minecraft/net/minecraft/world/entity/projectile/AbstractArrow.java.patch b/patches/minecraft/net/minecraft/world/entity/projectile/AbstractArrow.java.patch index 1d2509402a..6aeac6d13e 100644 --- a/patches/minecraft/net/minecraft/world/entity/projectile/AbstractArrow.java.patch +++ b/patches/minecraft/net/minecraft/world/entity/projectile/AbstractArrow.java.patch @@ -2,7 +2,7 @@ +++ b/net/minecraft/world/entity/projectile/AbstractArrow.java @@ -66,6 +_,8 @@ @Nullable - private List f_36702_; + private List piercedAndKilledEntities; + private final IntOpenHashSet ignoredEntities = new IntOpenHashSet(); + @@ -10,12 +10,12 @@ super(p_36721_, p_36722_); } @@ -150,7 +_,7 @@ - --this.f_36706_; + --this.shakeTime; } -- if (this.m_20070_() || blockstate.m_60713_(Blocks.f_152499_)) { -+ if (this.m_20070_() || blockstate.m_60713_(Blocks.f_152499_) || this.isInFluidType((fluidType, height) -> this.canFluidExtinguish(fluidType))) { - this.m_20095_(); +- if (this.isInWaterOrRain() || blockstate.is(Blocks.POWDER_SNOW)) { ++ if (this.isInWaterOrRain() || blockstate.is(Blocks.POWDER_SNOW) || this.isInFluidType((fluidType, height) -> this.canFluidExtinguish(fluidType))) { + this.clearFire(); } @@ -186,9 +_,28 @@ @@ -23,49 +23,49 @@ } - if (hitresult != null && !flag) { -- this.m_6532_(hitresult); -- this.f_19812_ = true; -+ if (hitresult != null && hitresult.m_6662_() != HitResult.Type.MISS && !flag) { +- this.onHit(hitresult); +- this.hasImpulse = true; ++ if (hitresult != null && hitresult.getType() != HitResult.Type.MISS && !flag) { + switch (net.minecraftforge.event.ForgeEventFactory.onProjectileImpactResult(this, hitresult)) { + case SKIP_ENTITY: -+ if (hitresult.m_6662_() != HitResult.Type.ENTITY) { // If there is no entity, we just return default behaviour -+ this.m_6532_(hitresult); -+ this.f_19812_ = true; ++ if (hitresult.getType() != HitResult.Type.ENTITY) { // If there is no entity, we just return default behaviour ++ this.onHit(hitresult); ++ this.hasImpulse = true; + break; + } -+ ignoredEntities.add(entityhitresult.m_82443_().m_19879_()); ++ ignoredEntities.add(entityhitresult.getEntity().getId()); + entityhitresult = null; // Don't process any further + break; + case STOP_AT_CURRENT_NO_DAMAGE: -+ this.m_146870_(); ++ this.discard(); + entityhitresult = null; // Don't process any further + break; + case STOP_AT_CURRENT: -+ this.m_36767_((byte) 0); ++ this.setPierceLevel((byte) 0); + case DEFAULT: -+ this.m_6532_(hitresult); -+ this.f_19812_ = true; ++ this.onHit(hitresult); ++ this.hasImpulse = true; + break; + } } - if (entityhitresult == null || this.m_36796_() <= 0) { + if (entityhitresult == null || this.getPierceLevel() <= 0) { @@ -198,6 +_,9 @@ hitresult = null; } -+ if (this.m_213877_()) ++ if (this.isRemoved()) + return; + - vec3 = this.m_20184_(); - double d5 = vec3.f_82479_; - double d6 = vec3.f_82480_; + vec3 = this.getDeltaMovement(); + double d5 = vec3.x; + double d6 = vec3.y; @@ -422,7 +_,7 @@ } - protected boolean m_5603_(Entity p_36743_) { -- return super.m_5603_(p_36743_) && (this.f_36701_ == null || !this.f_36701_.contains(p_36743_.m_19879_())); -+ return super.m_5603_(p_36743_) && (this.f_36701_ == null || !this.f_36701_.contains(p_36743_.m_19879_())) && !this.ignoredEntities.contains(p_36743_.m_19879_()); + protected boolean canHitEntity(Entity p_36743_) { +- return super.canHitEntity(p_36743_) && (this.piercingIgnoreEntityIds == null || !this.piercingIgnoreEntityIds.contains(p_36743_.getId())); ++ return super.canHitEntity(p_36743_) && (this.piercingIgnoreEntityIds == null || !this.piercingIgnoreEntityIds.contains(p_36743_.getId())) && !this.ignoredEntities.contains(p_36743_.getId()); } - public void m_7380_(CompoundTag p_36772_) { + public void addAdditionalSaveData(CompoundTag p_36772_) { diff --git a/patches/minecraft/net/minecraft/world/entity/projectile/AbstractHurtingProjectile.java.patch b/patches/minecraft/net/minecraft/world/entity/projectile/AbstractHurtingProjectile.java.patch index 48936a5218..6808d3f68e 100644 --- a/patches/minecraft/net/minecraft/world/entity/projectile/AbstractHurtingProjectile.java.patch +++ b/patches/minecraft/net/minecraft/world/entity/projectile/AbstractHurtingProjectile.java.patch @@ -3,9 +3,9 @@ @@ -65,7 +_,7 @@ } - HitResult hitresult = ProjectileUtil.m_278158_(this, this::m_5603_); -- if (hitresult.m_6662_() != HitResult.Type.MISS) { -+ if (hitresult.m_6662_() != HitResult.Type.MISS && !net.minecraftforge.event.ForgeEventFactory.onProjectileImpact(this, hitresult)) { - this.m_6532_(hitresult); + HitResult hitresult = ProjectileUtil.getHitResultOnMoveVector(this, this::canHitEntity); +- if (hitresult.getType() != HitResult.Type.MISS) { ++ if (hitresult.getType() != HitResult.Type.MISS && !net.minecraftforge.event.ForgeEventFactory.onProjectileImpact(this, hitresult)) { + this.onHit(hitresult); } diff --git a/patches/minecraft/net/minecraft/world/entity/projectile/FireworkRocketEntity.java.patch b/patches/minecraft/net/minecraft/world/entity/projectile/FireworkRocketEntity.java.patch index b781be4ff2..d781853954 100644 --- a/patches/minecraft/net/minecraft/world/entity/projectile/FireworkRocketEntity.java.patch +++ b/patches/minecraft/net/minecraft/world/entity/projectile/FireworkRocketEntity.java.patch @@ -5,12 +5,12 @@ } + @Override -+ protected void m_6532_(HitResult result) { -+ if (result.m_6662_() == HitResult.Type.MISS || !net.minecraftforge.event.ForgeEventFactory.onProjectileImpact(this, result)) { -+ super.m_6532_(result); ++ protected void onHit(HitResult result) { ++ if (result.getType() == HitResult.Type.MISS || !net.minecraftforge.event.ForgeEventFactory.onProjectileImpact(this, result)) { ++ super.onHit(result); + } + } + - private void m_37080_() { - this.m_9236_().m_7605_(this, (byte)17); - this.m_146852_(GameEvent.f_157812_, this.m_19749_()); + private void explode() { + this.level().broadcastEntityEvent(this, (byte)17); + this.gameEvent(GameEvent.EXPLODE, this.getOwner()); diff --git a/patches/minecraft/net/minecraft/world/entity/projectile/FishingHook.java.patch b/patches/minecraft/net/minecraft/world/entity/projectile/FishingHook.java.patch index e50379df55..6dc4d327d0 100644 --- a/patches/minecraft/net/minecraft/world/entity/projectile/FishingHook.java.patch +++ b/patches/minecraft/net/minecraft/world/entity/projectile/FishingHook.java.patch @@ -1,53 +1,53 @@ --- a/net/minecraft/world/entity/projectile/FishingHook.java +++ b/net/minecraft/world/entity/projectile/FishingHook.java @@ -229,8 +_,8 @@ - private boolean m_37136_(Player p_37137_) { - ItemStack itemstack = p_37137_.m_21205_(); - ItemStack itemstack1 = p_37137_.m_21206_(); -- boolean flag = itemstack.m_150930_(Items.f_42523_); -- boolean flag1 = itemstack1.m_150930_(Items.f_42523_); + private boolean shouldStopFishing(Player p_37137_) { + ItemStack itemstack = p_37137_.getMainHandItem(); + ItemStack itemstack1 = p_37137_.getOffhandItem(); +- boolean flag = itemstack.is(Items.FISHING_ROD); +- boolean flag1 = itemstack1.is(Items.FISHING_ROD); + boolean flag = itemstack.canPerformAction(net.minecraftforge.common.ToolActions.FISHING_ROD_CAST); + boolean flag1 = itemstack1.canPerformAction(net.minecraftforge.common.ToolActions.FISHING_ROD_CAST); - if (!p_37137_.m_213877_() && p_37137_.m_6084_() && (flag || flag1) && !(this.m_20280_(p_37137_) > 1024.0D)) { + if (!p_37137_.isRemoved() && p_37137_.isAlive() && (flag || flag1) && !(this.distanceToSqr(p_37137_) > 1024.0D)) { return false; } else { @@ -241,7 +_,7 @@ - private void m_37171_() { - HitResult hitresult = ProjectileUtil.m_278158_(this, this::m_5603_); -- this.m_6532_(hitresult); -+ if (hitresult.m_6662_() == HitResult.Type.MISS || !net.minecraftforge.event.ForgeEventFactory.onProjectileImpact(this, hitresult)) this.m_6532_(hitresult); + private void checkCollision() { + HitResult hitresult = ProjectileUtil.getHitResultOnMoveVector(this, this::canHitEntity); +- this.onHit(hitresult); ++ if (hitresult.getType() == HitResult.Type.MISS || !net.minecraftforge.event.ForgeEventFactory.onProjectileImpact(this, hitresult)) this.onHit(hitresult); } - protected boolean m_5603_(Entity p_37135_) { + protected boolean canHitEntity(Entity p_37135_) { @@ -403,15 +_,22 @@ - Player player = this.m_37168_(); - if (!this.m_9236_().f_46443_ && player != null && !this.m_37136_(player)) { + Player player = this.getPlayerOwner(); + if (!this.level().isClientSide && player != null && !this.shouldStopFishing(player)) { int i = 0; + net.minecraftforge.event.entity.player.ItemFishedEvent event = null; - if (this.f_37094_ != null) { - this.m_150155_(this.f_37094_); - CriteriaTriggers.f_10553_.m_40416_((ServerPlayer)player, p_37157_, this, Collections.emptyList()); - this.m_9236_().m_7605_(this, (byte)31); - i = this.f_37094_ instanceof ItemEntity ? 3 : 5; - } else if (this.f_37089_ > 0) { -- LootParams lootparams = (new LootParams.Builder((ServerLevel)this.m_9236_())).m_287286_(LootContextParams.f_81460_, this.m_20182_()).m_287286_(LootContextParams.f_81463_, p_37157_).m_287286_(LootContextParams.f_81455_, this).m_287239_((float)this.f_37096_ + player.m_36336_()).m_287235_(LootContextParamSets.f_81414_); -+ LootParams lootparams = (new LootParams.Builder((ServerLevel)this.m_9236_())).m_287286_(LootContextParams.f_81460_, this.m_20182_()).m_287286_(LootContextParams.f_81463_, p_37157_).m_287286_(LootContextParams.f_81455_, this).m_287286_(LootContextParams.f_81458_, this.m_19749_()).m_287286_(LootContextParams.f_81455_, this).m_287239_((float)this.f_37096_ + player.m_36336_()).m_287235_(LootContextParamSets.f_81414_); - LootTable loottable = this.m_9236_().m_7654_().m_278653_().m_278676_(BuiltInLootTables.f_78720_); - List list = loottable.m_287195_(lootparams); -+ event = new net.minecraftforge.event.entity.player.ItemFishedEvent(list, this.m_20096_() ? 2 : 1, this); + if (this.hookedIn != null) { + this.pullEntity(this.hookedIn); + CriteriaTriggers.FISHING_ROD_HOOKED.trigger((ServerPlayer)player, p_37157_, this, Collections.emptyList()); + this.level().broadcastEntityEvent(this, (byte)31); + i = this.hookedIn instanceof ItemEntity ? 3 : 5; + } else if (this.nibble > 0) { +- LootParams lootparams = (new LootParams.Builder((ServerLevel)this.level())).withParameter(LootContextParams.ORIGIN, this.position()).withParameter(LootContextParams.TOOL, p_37157_).withParameter(LootContextParams.THIS_ENTITY, this).withLuck((float)this.luck + player.getLuck()).create(LootContextParamSets.FISHING); ++ LootParams lootparams = (new LootParams.Builder((ServerLevel)this.level())).withParameter(LootContextParams.ORIGIN, this.position()).withParameter(LootContextParams.TOOL, p_37157_).withParameter(LootContextParams.THIS_ENTITY, this).withParameter(LootContextParams.KILLER_ENTITY, this.getOwner()).withParameter(LootContextParams.THIS_ENTITY, this).withLuck((float)this.luck + player.getLuck()).create(LootContextParamSets.FISHING); + LootTable loottable = this.level().getServer().getLootData().getLootTable(BuiltInLootTables.FISHING); + List list = loottable.getRandomItems(lootparams); ++ event = new net.minecraftforge.event.entity.player.ItemFishedEvent(list, this.onGround() ? 2 : 1, this); + net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(event); + if (event.isCanceled()) { -+ this.m_146870_(); ++ this.discard(); + return event.getRodDamage(); + } - CriteriaTriggers.f_10553_.m_40416_((ServerPlayer)player, p_37157_, this, list); + CriteriaTriggers.FISHING_ROD_HOOKED.trigger((ServerPlayer)player, p_37157_, this, list); for(ItemStack itemstack : list) { @@ -436,7 +_,7 @@ } - this.m_146870_(); + this.discard(); - return i; + return event == null ? i : event.getRodDamage(); } else { diff --git a/patches/minecraft/net/minecraft/world/entity/projectile/LargeFireball.java.patch b/patches/minecraft/net/minecraft/world/entity/projectile/LargeFireball.java.patch index 75f8acaea4..bdde41d4ed 100644 --- a/patches/minecraft/net/minecraft/world/entity/projectile/LargeFireball.java.patch +++ b/patches/minecraft/net/minecraft/world/entity/projectile/LargeFireball.java.patch @@ -1,12 +1,12 @@ --- a/net/minecraft/world/entity/projectile/LargeFireball.java +++ b/net/minecraft/world/entity/projectile/LargeFireball.java @@ -24,7 +_,8 @@ - protected void m_6532_(HitResult p_37218_) { - super.m_6532_(p_37218_); - if (!this.m_9236_().f_46443_) { -- boolean flag = this.m_9236_().m_46469_().m_46207_(GameRules.f_46132_); + protected void onHit(HitResult p_37218_) { + super.onHit(p_37218_); + if (!this.level().isClientSide) { +- boolean flag = this.level().getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING); + // TODO 1.19.3: The creation of Level.ExplosionInteraction means this code path will fire EntityMobGriefingEvent twice. Should we try and fix it? -SS -+ boolean flag = net.minecraftforge.event.ForgeEventFactory.getMobGriefingEvent(this.m_9236_(), this.m_19749_()); - this.m_9236_().m_255391_(this, this.m_20185_(), this.m_20186_(), this.m_20189_(), (float)this.f_37197_, flag, Level.ExplosionInteraction.MOB); - this.m_146870_(); ++ boolean flag = net.minecraftforge.event.ForgeEventFactory.getMobGriefingEvent(this.level(), this.getOwner()); + this.level().explode(this, this.getX(), this.getY(), this.getZ(), (float)this.explosionPower, flag, Level.ExplosionInteraction.MOB); + this.discard(); } diff --git a/patches/minecraft/net/minecraft/world/entity/projectile/LlamaSpit.java.patch b/patches/minecraft/net/minecraft/world/entity/projectile/LlamaSpit.java.patch index e09e52fd55..b5c35ee4c0 100644 --- a/patches/minecraft/net/minecraft/world/entity/projectile/LlamaSpit.java.patch +++ b/patches/minecraft/net/minecraft/world/entity/projectile/LlamaSpit.java.patch @@ -1,10 +1,10 @@ --- a/net/minecraft/world/entity/projectile/LlamaSpit.java +++ b/net/minecraft/world/entity/projectile/LlamaSpit.java @@ -29,6 +_,7 @@ - super.m_8119_(); - Vec3 vec3 = this.m_20184_(); - HitResult hitresult = ProjectileUtil.m_278158_(this, this::m_5603_); -+ if (hitresult.m_6662_() != HitResult.Type.MISS && !net.minecraftforge.event.ForgeEventFactory.onProjectileImpact(this, hitresult)) - this.m_6532_(hitresult); - double d0 = this.m_20185_() + vec3.f_82479_; - double d1 = this.m_20186_() + vec3.f_82480_; + super.tick(); + Vec3 vec3 = this.getDeltaMovement(); + HitResult hitresult = ProjectileUtil.getHitResultOnMoveVector(this, this::canHitEntity); ++ if (hitresult.getType() != HitResult.Type.MISS && !net.minecraftforge.event.ForgeEventFactory.onProjectileImpact(this, hitresult)) + this.onHit(hitresult); + double d0 = this.getX() + vec3.x; + double d1 = this.getY() + vec3.y; diff --git a/patches/minecraft/net/minecraft/world/entity/projectile/Projectile.java.patch b/patches/minecraft/net/minecraft/world/entity/projectile/Projectile.java.patch index c6ac8486be..0d5b618738 100644 --- a/patches/minecraft/net/minecraft/world/entity/projectile/Projectile.java.patch +++ b/patches/minecraft/net/minecraft/world/entity/projectile/Projectile.java.patch @@ -2,9 +2,9 @@ +++ b/net/minecraft/world/entity/projectile/Projectile.java @@ -214,7 +_,7 @@ if (entity instanceof Player) { - return entity.m_142265_(p_150167_, p_150168_); + return entity.mayInteract(p_150167_, p_150168_); } else { -- return entity == null || p_150167_.m_46469_().m_46207_(GameRules.f_46132_); +- return entity == null || p_150167_.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING); + return entity == null || net.minecraftforge.event.ForgeEventFactory.getMobGriefingEvent(p_150167_, entity); } } diff --git a/patches/minecraft/net/minecraft/world/entity/projectile/ProjectileUtil.java.patch b/patches/minecraft/net/minecraft/world/entity/projectile/ProjectileUtil.java.patch index 3867c26570..2db7d52532 100644 --- a/patches/minecraft/net/minecraft/world/entity/projectile/ProjectileUtil.java.patch +++ b/patches/minecraft/net/minecraft/world/entity/projectile/ProjectileUtil.java.patch @@ -2,10 +2,10 @@ +++ b/net/minecraft/world/entity/projectile/ProjectileUtil.java @@ -68,7 +_,7 @@ Vec3 vec31 = optional.get(); - double d1 = p_37289_.m_82557_(vec31); + double d1 = p_37289_.distanceToSqr(vec31); if (d1 < d0 || d0 == 0.0D) { -- if (entity1.m_20201_() == p_37288_.m_20201_()) { -+ if (entity1.m_20201_() == p_37288_.m_20201_() && !entity1.canRiderInteract()) { +- if (entity1.getRootVehicle() == p_37288_.getRootVehicle()) { ++ if (entity1.getRootVehicle() == p_37288_.getRootVehicle() && !entity1.canRiderInteract()) { if (d0 == 0.0D) { entity = entity1; vec3 = vec31; @@ -14,12 +14,12 @@ } + @Deprecated // Forge: Use the version below that takes in a Predicate instead of an Item - public static InteractionHand m_37297_(LivingEntity p_37298_, Item p_37299_) { - return p_37298_.m_21205_().m_150930_(p_37299_) ? InteractionHand.MAIN_HAND : InteractionHand.OFF_HAND; + public static InteractionHand getWeaponHoldingHand(LivingEntity p_37298_, Item p_37299_) { + return p_37298_.getMainHandItem().is(p_37299_) ? InteractionHand.MAIN_HAND : InteractionHand.OFF_HAND; + } + + public static InteractionHand getWeaponHoldingHand(LivingEntity livingEntity, Predicate itemPredicate) { -+ return itemPredicate.test(livingEntity.m_21205_().m_41720_()) ? InteractionHand.MAIN_HAND : InteractionHand.OFF_HAND; ++ return itemPredicate.test(livingEntity.getMainHandItem().getItem()) ? InteractionHand.MAIN_HAND : InteractionHand.OFF_HAND; } - public static AbstractArrow m_37300_(LivingEntity p_37301_, ItemStack p_37302_, float p_37303_) { + public static AbstractArrow getMobArrow(LivingEntity p_37301_, ItemStack p_37302_, float p_37303_) { diff --git a/patches/minecraft/net/minecraft/world/entity/projectile/ShulkerBullet.java.patch b/patches/minecraft/net/minecraft/world/entity/projectile/ShulkerBullet.java.patch index d02d7b16c5..cb808aa817 100644 --- a/patches/minecraft/net/minecraft/world/entity/projectile/ShulkerBullet.java.patch +++ b/patches/minecraft/net/minecraft/world/entity/projectile/ShulkerBullet.java.patch @@ -3,9 +3,9 @@ @@ -212,7 +_,7 @@ } - HitResult hitresult = ProjectileUtil.m_278158_(this, this::m_5603_); -- if (hitresult.m_6662_() != HitResult.Type.MISS) { -+ if (hitresult.m_6662_() != HitResult.Type.MISS && !net.minecraftforge.event.ForgeEventFactory.onProjectileImpact(this, hitresult)) { - this.m_6532_(hitresult); + HitResult hitresult = ProjectileUtil.getHitResultOnMoveVector(this, this::canHitEntity); +- if (hitresult.getType() != HitResult.Type.MISS) { ++ if (hitresult.getType() != HitResult.Type.MISS && !net.minecraftforge.event.ForgeEventFactory.onProjectileImpact(this, hitresult)) { + this.onHit(hitresult); } } diff --git a/patches/minecraft/net/minecraft/world/entity/projectile/SmallFireball.java.patch b/patches/minecraft/net/minecraft/world/entity/projectile/SmallFireball.java.patch index c6548a8d74..986dce07ce 100644 --- a/patches/minecraft/net/minecraft/world/entity/projectile/SmallFireball.java.patch +++ b/patches/minecraft/net/minecraft/world/entity/projectile/SmallFireball.java.patch @@ -1,11 +1,11 @@ --- a/net/minecraft/world/entity/projectile/SmallFireball.java +++ b/net/minecraft/world/entity/projectile/SmallFireball.java @@ -46,7 +_,7 @@ - super.m_8060_(p_37384_); - if (!this.m_9236_().f_46443_) { - Entity entity = this.m_19749_(); -- if (!(entity instanceof Mob) || this.m_9236_().m_46469_().m_46207_(GameRules.f_46132_)) { -+ if (!(entity instanceof Mob) || net.minecraftforge.event.ForgeEventFactory.getMobGriefingEvent(this.m_9236_(), entity)) { - BlockPos blockpos = p_37384_.m_82425_().m_121945_(p_37384_.m_82434_()); - if (this.m_9236_().m_46859_(blockpos)) { - this.m_9236_().m_46597_(blockpos, BaseFireBlock.m_49245_(this.m_9236_(), blockpos)); + super.onHitBlock(p_37384_); + if (!this.level().isClientSide) { + Entity entity = this.getOwner(); +- if (!(entity instanceof Mob) || this.level().getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) { ++ if (!(entity instanceof Mob) || net.minecraftforge.event.ForgeEventFactory.getMobGriefingEvent(this.level(), entity)) { + BlockPos blockpos = p_37384_.getBlockPos().relative(p_37384_.getDirection()); + if (this.level().isEmptyBlock(blockpos)) { + this.level().setBlockAndUpdate(blockpos, BaseFireBlock.getState(this.level(), blockpos)); diff --git a/patches/minecraft/net/minecraft/world/entity/projectile/ThrowableProjectile.java.patch b/patches/minecraft/net/minecraft/world/entity/projectile/ThrowableProjectile.java.patch index 7fdec6f153..e7fc026fa0 100644 --- a/patches/minecraft/net/minecraft/world/entity/projectile/ThrowableProjectile.java.patch +++ b/patches/minecraft/net/minecraft/world/entity/projectile/ThrowableProjectile.java.patch @@ -4,8 +4,8 @@ } } -- if (hitresult.m_6662_() != HitResult.Type.MISS && !flag) { -+ if (hitresult.m_6662_() != HitResult.Type.MISS && !flag && !net.minecraftforge.event.ForgeEventFactory.onProjectileImpact(this, hitresult)) { - this.m_6532_(hitresult); +- if (hitresult.getType() != HitResult.Type.MISS && !flag) { ++ if (hitresult.getType() != HitResult.Type.MISS && !flag && !net.minecraftforge.event.ForgeEventFactory.onProjectileImpact(this, hitresult)) { + this.onHit(hitresult); } diff --git a/patches/minecraft/net/minecraft/world/entity/projectile/ThrownEnderpearl.java.patch b/patches/minecraft/net/minecraft/world/entity/projectile/ThrownEnderpearl.java.patch index 46bb4cbed6..672ffa5082 100644 --- a/patches/minecraft/net/minecraft/world/entity/projectile/ThrownEnderpearl.java.patch +++ b/patches/minecraft/net/minecraft/world/entity/projectile/ThrownEnderpearl.java.patch @@ -3,36 +3,36 @@ @@ -45,6 +_,8 @@ if (entity instanceof ServerPlayer) { ServerPlayer serverplayer = (ServerPlayer)entity; - if (serverplayer.f_8906_.m_6198_() && serverplayer.m_9236_() == this.m_9236_() && !serverplayer.m_5803_()) { -+ net.minecraftforge.event.entity.EntityTeleportEvent.EnderPearl event = net.minecraftforge.event.ForgeEventFactory.onEnderPearlLand(serverplayer, this.m_20185_(), this.m_20186_(), this.m_20189_(), this, 5.0F, p_37504_); + if (serverplayer.connection.isAcceptingMessages() && serverplayer.level() == this.level() && !serverplayer.isSleeping()) { ++ net.minecraftforge.event.entity.EntityTeleportEvent.EnderPearl event = net.minecraftforge.event.ForgeEventFactory.onEnderPearlLand(serverplayer, this.getX(), this.getY(), this.getZ(), this, 5.0F, p_37504_); + if (!event.isCanceled()) { // Don't indent to lower patch size - if (this.f_19796_.m_188501_() < 0.05F && this.m_9236_().m_46469_().m_46207_(GameRules.f_46134_)) { - Endermite endermite = EntityType.f_20567_.m_20615_(this.m_9236_()); + if (this.random.nextFloat() < 0.05F && this.level().getGameRules().getBoolean(GameRules.RULE_DOMOBSPAWNING)) { + Endermite endermite = EntityType.ENDERMITE.create(this.level()); if (endermite != null) { @@ -59,8 +_,10 @@ - entity.m_6021_(this.m_20185_(), this.m_20186_(), this.m_20189_()); + entity.teleportTo(this.getX(), this.getY(), this.getZ()); } -+ entity.m_6021_(event.getTargetX(), event.getTargetY(), event.getTargetZ()); - entity.m_183634_(); -- entity.m_6469_(this.m_269291_().m_268989_(), 5.0F); -+ entity.m_6469_(this.m_269291_().m_268989_(), event.getAttackDamage()); ++ entity.teleportTo(event.getTargetX(), event.getTargetY(), event.getTargetZ()); + entity.resetFallDistance(); +- entity.hurt(this.damageSources().fall(), 5.0F); ++ entity.hurt(this.damageSources().fall(), event.getAttackDamage()); + } //Forge: End } } else if (entity != null) { - entity.m_6021_(this.m_20185_(), this.m_20186_(), this.m_20189_()); + entity.teleportTo(this.getX(), this.getY(), this.getZ()); @@ -83,12 +_,12 @@ } @Nullable -- public Entity m_5489_(ServerLevel p_37506_) { +- public Entity changeDimension(ServerLevel p_37506_) { + public Entity changeDimension(ServerLevel p_37506_, net.minecraftforge.common.util.ITeleporter teleporter) { - Entity entity = this.m_19749_(); - if (entity != null && entity.m_9236_().m_46472_() != p_37506_.m_46472_()) { - this.m_5602_((Entity)null); + Entity entity = this.getOwner(); + if (entity != null && entity.level().dimension() != p_37506_.dimension()) { + this.setOwner((Entity)null); } -- return super.m_5489_(p_37506_); +- return super.changeDimension(p_37506_); + return super.changeDimension(p_37506_, teleporter); } } diff --git a/patches/minecraft/net/minecraft/world/entity/projectile/WitherSkull.java.patch b/patches/minecraft/net/minecraft/world/entity/projectile/WitherSkull.java.patch index 1c9d5346e0..bb2bac637f 100644 --- a/patches/minecraft/net/minecraft/world/entity/projectile/WitherSkull.java.patch +++ b/patches/minecraft/net/minecraft/world/entity/projectile/WitherSkull.java.patch @@ -3,9 +3,9 @@ @@ -40,7 +_,7 @@ } - public float m_7077_(Explosion p_37619_, BlockGetter p_37620_, BlockPos p_37621_, BlockState p_37622_, FluidState p_37623_, float p_37624_) { -- return this.m_37635_() && WitherBoss.m_31491_(p_37622_) ? Math.min(0.8F, p_37624_) : p_37624_; -+ return this.m_37635_() && p_37622_.canEntityDestroy(p_37620_, p_37621_, this) ? Math.min(0.8F, p_37624_) : p_37624_; + public float getBlockExplosionResistance(Explosion p_37619_, BlockGetter p_37620_, BlockPos p_37621_, BlockState p_37622_, FluidState p_37623_, float p_37624_) { +- return this.isDangerous() && WitherBoss.canDestroy(p_37622_) ? Math.min(0.8F, p_37624_) : p_37624_; ++ return this.isDangerous() && p_37622_.canEntityDestroy(p_37620_, p_37621_, this) ? Math.min(0.8F, p_37624_) : p_37624_; } - protected void m_5790_(EntityHitResult p_37626_) { + protected void onHitEntity(EntityHitResult p_37626_) { diff --git a/patches/minecraft/net/minecraft/world/entity/raid/Raid.java.patch b/patches/minecraft/net/minecraft/world/entity/raid/Raid.java.patch index f5e8b24b4a..17c1b30834 100644 --- a/patches/minecraft/net/minecraft/world/entity/raid/Raid.java.patch +++ b/patches/minecraft/net/minecraft/world/entity/raid/Raid.java.patch @@ -6,13 +6,13 @@ - static enum RaiderType { + public static enum RaiderType implements net.minecraftforge.common.IExtensibleEnum { - VINDICATOR(EntityType.f_20493_, new int[]{0, 0, 2, 0, 1, 4, 2, 5}), - EVOKER(EntityType.f_20568_, new int[]{0, 0, 0, 0, 0, 1, 1, 2}), - PILLAGER(EntityType.f_20513_, new int[]{0, 4, 3, 3, 4, 4, 4, 2}), + VINDICATOR(EntityType.VINDICATOR, new int[]{0, 0, 2, 0, 1, 4, 2, 5}), + EVOKER(EntityType.EVOKER, new int[]{0, 0, 0, 0, 0, 1, 1, 2}), + PILLAGER(EntityType.PILLAGER, new int[]{0, 4, 3, 3, 4, 4, 4, 2}), @@ -830,6 +_,20 @@ private RaiderType(EntityType p_37821_, int[] p_37822_) { - this.f_37814_ = p_37821_; - this.f_37815_ = p_37822_; + this.entityType = p_37821_; + this.spawnsPerWaveBeforeBonus = p_37822_; + } + + /** @@ -26,7 +26,7 @@ + @Override + @Deprecated + public void init() { -+ f_37813_ = values(); ++ VALUES = values(); } } } diff --git a/patches/minecraft/net/minecraft/world/entity/vehicle/AbstractMinecart.java.patch b/patches/minecraft/net/minecraft/world/entity/vehicle/AbstractMinecart.java.patch index b97151c74f..5ba0b6a658 100644 --- a/patches/minecraft/net/minecraft/world/entity/vehicle/AbstractMinecart.java.patch +++ b/patches/minecraft/net/minecraft/world/entity/vehicle/AbstractMinecart.java.patch @@ -6,9 +6,9 @@ -public abstract class AbstractMinecart extends Entity { +public abstract class AbstractMinecart extends Entity implements net.minecraftforge.common.extensions.IForgeAbstractMinecart { - private static final EntityDataAccessor f_38079_ = SynchedEntityData.m_135353_(AbstractMinecart.class, EntityDataSerializers.f_135028_); - private static final EntityDataAccessor f_38080_ = SynchedEntityData.m_135353_(AbstractMinecart.class, EntityDataSerializers.f_135028_); - private static final EntityDataAccessor f_38081_ = SynchedEntityData.m_135353_(AbstractMinecart.class, EntityDataSerializers.f_135029_); + private static final EntityDataAccessor DATA_ID_HURT = SynchedEntityData.defineId(AbstractMinecart.class, EntityDataSerializers.INT); + private static final EntityDataAccessor DATA_ID_HURTDIR = SynchedEntityData.defineId(AbstractMinecart.class, EntityDataSerializers.INT); + private static final EntityDataAccessor DATA_ID_DAMAGE = SynchedEntityData.defineId(AbstractMinecart.class, EntityDataSerializers.FLOAT); @@ -84,6 +_,8 @@ p_38135_.put(RailShape.NORTH_WEST, Pair.of(vec3i2, vec3i)); p_38135_.put(RailShape.NORTH_EAST, Pair.of(vec3i2, vec3i1)); @@ -19,7 +19,7 @@ protected AbstractMinecart(EntityType p_38087_, Level p_38088_) { super(p_38087_, p_38088_); @@ -98,6 +_,14 @@ - this.f_19856_ = p_38094_; + this.zo = p_38094_; } + public net.minecraftforge.common.IMinecartCollisionHandler getCollisionHandler() { @@ -30,181 +30,181 @@ + COLLISIONS = handler; + } + - public static AbstractMinecart m_38119_(Level p_38120_, double p_38121_, double p_38122_, double p_38123_, AbstractMinecart.Type p_38124_) { + public static AbstractMinecart createMinecart(Level p_38120_, double p_38121_, double p_38122_, double p_38123_, AbstractMinecart.Type p_38124_) { if (p_38124_ == AbstractMinecart.Type.CHEST) { return new MinecartChest(p_38120_, p_38121_, p_38122_, p_38123_); @@ -132,7 +_,7 @@ } - public boolean m_6094_() { + public boolean isPushable() { - return true; + return canBePushed; } - protected Vec3 m_7643_(Direction.Axis p_38132_, BlockUtil.FoundRectangle p_38133_) { + protected Vec3 getRelativePortalPosition(Direction.Axis p_38132_, BlockUtil.FoundRectangle p_38133_) { @@ -295,9 +_,9 @@ BlockPos blockpos = new BlockPos(k, i, j); - BlockState blockstate = this.m_9236_().m_8055_(blockpos); - this.f_287786_ = BaseRailBlock.m_49416_(blockstate); -- if (this.f_287786_) { -+ if (canUseRail() && this.f_287786_) { - this.m_6401_(blockpos, blockstate); -- if (blockstate.m_60713_(Blocks.f_50285_)) { -+ if (blockstate.m_60734_() instanceof PoweredRailBlock power && power.isActivatorRail()) { - this.m_6025_(k, i, j, blockstate.m_61143_(PoweredRailBlock.f_55215_)); + BlockState blockstate = this.level().getBlockState(blockpos); + this.onRails = BaseRailBlock.isRail(blockstate); +- if (this.onRails) { ++ if (canUseRail() && this.onRails) { + this.moveAlongTrack(blockpos, blockstate); +- if (blockstate.is(Blocks.ACTIVATOR_RAIL)) { ++ if (blockstate.getBlock() instanceof PoweredRailBlock power && power.isActivatorRail()) { + this.activateMinecart(k, i, j, blockstate.getValue(PoweredRailBlock.POWERED)); } } else { @@ -322,8 +_,11 @@ } - this.m_19915_(this.m_146908_(), this.m_146909_()); -- if (this.m_6064_() == AbstractMinecart.Type.RIDEABLE && this.m_20184_().m_165925_() > 0.01D) { -- List list = this.m_9236_().m_6249_(this, this.m_20191_().m_82377_((double)0.2F, 0.0D, (double)0.2F), EntitySelector.m_20421_(this)); + this.setRot(this.getYRot(), this.getXRot()); +- if (this.getMinecartType() == AbstractMinecart.Type.RIDEABLE && this.getDeltaMovement().horizontalDistanceSqr() > 0.01D) { +- List list = this.level().getEntities(this, this.getBoundingBox().inflate((double)0.2F, 0.0D, (double)0.2F), EntitySelector.pushableBy(this)); + AABB box; + if (getCollisionHandler() != null) box = getCollisionHandler().getMinecartCollisionBox(this); -+ else box = this.m_20191_().m_82377_(0.2F, 0.0D, 0.2F); -+ if (canBeRidden() && this.m_20184_().m_165925_() > 0.01D) { -+ List list = this.m_9236_().m_6249_(this, box, EntitySelector.m_20421_(this)); ++ else box = this.getBoundingBox().inflate(0.2F, 0.0D, 0.2F); ++ if (canBeRidden() && this.getDeltaMovement().horizontalDistanceSqr() > 0.01D) { ++ List list = this.level().getEntities(this, box, EntitySelector.pushableBy(this)); if (!list.isEmpty()) { for(Entity entity1 : list) { - if (!(entity1 instanceof Player) && !(entity1 instanceof IronGolem) && !(entity1 instanceof AbstractMinecart) && !this.m_20160_() && !entity1.m_20159_()) { + if (!(entity1 instanceof Player) && !(entity1 instanceof IronGolem) && !(entity1 instanceof AbstractMinecart) && !this.isVehicle() && !entity1.isPassenger()) { @@ -334,7 +_,7 @@ } } } else { -- for(Entity entity : this.m_9236_().m_45933_(this, this.m_20191_().m_82377_((double)0.2F, 0.0D, (double)0.2F))) { -+ for(Entity entity : this.m_9236_().m_45933_(this, box)) { - if (!this.m_20363_(entity) && entity.m_6094_() && entity instanceof AbstractMinecart) { - entity.m_7334_(this); +- for(Entity entity : this.level().getEntities(this, this.getBoundingBox().inflate((double)0.2F, 0.0D, (double)0.2F))) { ++ for(Entity entity : this.level().getEntities(this, box)) { + if (!this.hasPassenger(entity) && entity.isPushable() && entity instanceof AbstractMinecart) { + entity.push(this); } @@ -359,16 +_,23 @@ } - protected void m_38163_() { -- double d0 = this.m_7097_(); -+ double d0 = this.m_20096_() ? this.m_7097_() : getMaxSpeedAirLateral(); - Vec3 vec3 = this.m_20184_(); - this.m_20334_(Mth.m_14008_(vec3.f_82479_, -d0, d0), vec3.f_82480_, Mth.m_14008_(vec3.f_82481_, -d0, d0)); - if (this.m_20096_()) { - this.m_20256_(this.m_20184_().m_82490_(0.5D)); + protected void comeOffTrack() { +- double d0 = this.getMaxSpeed(); ++ double d0 = this.onGround() ? this.getMaxSpeed() : getMaxSpeedAirLateral(); + Vec3 vec3 = this.getDeltaMovement(); + this.setDeltaMovement(Mth.clamp(vec3.x, -d0, d0), vec3.y, Mth.clamp(vec3.z, -d0, d0)); + if (this.onGround()) { + this.setDeltaMovement(this.getDeltaMovement().scale(0.5D)); } -+ if (getMaxSpeedAirVertical() > 0 && m_20184_().f_82480_ > getMaxSpeedAirVertical()) { -+ if(Math.abs(m_20184_().f_82479_) < 0.3f && Math.abs(m_20184_().f_82481_) < 0.3f) -+ m_20256_(new Vec3(m_20184_().f_82479_, 0.15f, m_20184_().f_82481_)); ++ if (getMaxSpeedAirVertical() > 0 && getDeltaMovement().y > getMaxSpeedAirVertical()) { ++ if(Math.abs(getDeltaMovement().x) < 0.3f && Math.abs(getDeltaMovement().z) < 0.3f) ++ setDeltaMovement(new Vec3(getDeltaMovement().x, 0.15f, getDeltaMovement().z)); + else -+ m_20256_(new Vec3(m_20184_().f_82479_, getMaxSpeedAirVertical(), m_20184_().f_82481_)); ++ setDeltaMovement(new Vec3(getDeltaMovement().x, getMaxSpeedAirVertical(), getDeltaMovement().z)); + } + - this.m_6478_(MoverType.SELF, this.m_20184_()); - if (!this.m_20096_()) { -- this.m_20256_(this.m_20184_().m_82490_(0.95D)); -+ this.m_20256_(this.m_20184_().m_82490_(getDragAir())); + this.move(MoverType.SELF, this.getDeltaMovement()); + if (!this.onGround()) { +- this.setDeltaMovement(this.getDeltaMovement().scale(0.95D)); ++ this.setDeltaMovement(this.getDeltaMovement().scale(getDragAir())); } } @@ -382,18 +_,19 @@ - d1 = (double)p_38156_.m_123342_(); + d1 = (double)p_38156_.getY(); boolean flag = false; boolean flag1 = false; -- if (p_38157_.m_60713_(Blocks.f_50030_)) { -+ BaseRailBlock baserailblock = (BaseRailBlock) p_38157_.m_60734_(); +- if (p_38157_.is(Blocks.POWERED_RAIL)) { ++ BaseRailBlock baserailblock = (BaseRailBlock) p_38157_.getBlock(); + if (baserailblock instanceof PoweredRailBlock && !((PoweredRailBlock) baserailblock).isActivatorRail()) { - flag = p_38157_.m_61143_(PoweredRailBlock.f_55215_); + flag = p_38157_.getValue(PoweredRailBlock.POWERED); flag1 = !flag; } - double d3 = 0.0078125D; + double d3 = getSlopeAdjustment(); - if (this.m_20069_()) { + if (this.isInWater()) { d3 *= 0.2D; } - Vec3 vec31 = this.m_20184_(); -- RailShape railshape = p_38157_.m_61143_(((BaseRailBlock)p_38157_.m_60734_()).m_7978_()); -+ RailShape railshape = ((BaseRailBlock)p_38157_.m_60734_()).getRailDirection(p_38157_, this.m_9236_(), p_38156_, this); + Vec3 vec31 = this.getDeltaMovement(); +- RailShape railshape = p_38157_.getValue(((BaseRailBlock)p_38157_.getBlock()).getShapeProperty()); ++ RailShape railshape = ((BaseRailBlock)p_38157_.getBlock()).getRailDirection(p_38157_, this.level(), p_38156_, this); switch (railshape) { case ASCENDING_EAST: - this.m_20256_(vec31.m_82520_(-d3, 0.0D, 0.0D)); + this.setDeltaMovement(vec31.add(-d3, 0.0D, 0.0D)); @@ -439,7 +_,7 @@ } } - if (flag1) { + if (flag1 && shouldDoRailFunctions()) { - double d22 = this.m_20184_().m_165924_(); + double d22 = this.getDeltaMovement().horizontalDistance(); if (d22 < 0.03D) { - this.m_20256_(Vec3.f_82478_); + this.setDeltaMovement(Vec3.ZERO); @@ -468,10 +_,7 @@ d0 = d23 + d4 * d14; d2 = d10 + d5 * d14; - this.m_6034_(d0, d1, d2); -- double d24 = this.m_20160_() ? 0.75D : 1.0D; -- double d25 = this.m_7097_(); -- vec31 = this.m_20184_(); -- this.m_6478_(MoverType.SELF, new Vec3(Mth.m_14008_(d24 * vec31.f_82479_, -d25, d25), 0.0D, Mth.m_14008_(d24 * vec31.f_82481_, -d25, d25))); + this.setPos(d0, d1, d2); +- double d24 = this.isVehicle() ? 0.75D : 1.0D; +- double d25 = this.getMaxSpeed(); +- vec31 = this.getDeltaMovement(); +- this.move(MoverType.SELF, new Vec3(Mth.clamp(d24 * vec31.x, -d25, d25), 0.0D, Mth.clamp(d24 * vec31.z, -d25, d25))); + this.moveMinecartOnRail(p_38156_); - if (vec3i.m_123342_() != 0 && Mth.m_14107_(this.m_20185_()) - p_38156_.m_123341_() == vec3i.m_123341_() && Mth.m_14107_(this.m_20189_()) - p_38156_.m_123343_() == vec3i.m_123343_()) { - this.m_6034_(this.m_20185_(), this.m_20186_() + (double)vec3i.m_123342_(), this.m_20189_()); - } else if (vec3i1.m_123342_() != 0 && Mth.m_14107_(this.m_20185_()) - p_38156_.m_123341_() == vec3i1.m_123341_() && Mth.m_14107_(this.m_20189_()) - p_38156_.m_123343_() == vec3i1.m_123343_()) { + if (vec3i.getY() != 0 && Mth.floor(this.getX()) - p_38156_.getX() == vec3i.getX() && Mth.floor(this.getZ()) - p_38156_.getZ() == vec3i.getZ()) { + this.setPos(this.getX(), this.getY() + (double)vec3i.getY(), this.getZ()); + } else if (vec3i1.getY() != 0 && Mth.floor(this.getX()) - p_38156_.getX() == vec3i1.getX() && Mth.floor(this.getZ()) - p_38156_.getZ() == vec3i1.getZ()) { @@ -499,7 +_,10 @@ - this.m_20334_(d26 * (double)(j - p_38156_.m_123341_()), vec35.f_82480_, d26 * (double)(i - p_38156_.m_123343_())); + this.setDeltaMovement(d26 * (double)(j - p_38156_.getX()), vec35.y, d26 * (double)(i - p_38156_.getZ())); } - if (flag) { + if (shouldDoRailFunctions()) -+ baserailblock.onMinecartPass(p_38157_, m_9236_(), p_38156_, this); ++ baserailblock.onMinecartPass(p_38157_, level(), p_38156_, this); + + if (flag && shouldDoRailFunctions()) { - Vec3 vec36 = this.m_20184_(); - double d27 = vec36.m_165924_(); + Vec3 vec36 = this.getDeltaMovement(); + double d27 = vec36.horizontalDistance(); if (d27 > 0.01D) { @@ -563,7 +_,7 @@ - BlockState blockstate = this.m_9236_().m_8055_(new BlockPos(i, j, k)); - if (BaseRailBlock.m_49416_(blockstate)) { -- RailShape railshape = blockstate.m_61143_(((BaseRailBlock)blockstate.m_60734_()).m_7978_()); -+ RailShape railshape = ((BaseRailBlock)blockstate.m_60734_()).getRailDirection(blockstate, this.m_9236_(), new BlockPos(i, j, k), this); + BlockState blockstate = this.level().getBlockState(new BlockPos(i, j, k)); + if (BaseRailBlock.isRail(blockstate)) { +- RailShape railshape = blockstate.getValue(((BaseRailBlock)blockstate.getBlock()).getShapeProperty()); ++ RailShape railshape = ((BaseRailBlock)blockstate.getBlock()).getRailDirection(blockstate, this.level(), new BlockPos(i, j, k), this); p_38098_ = (double)j; - if (railshape.m_61745_()) { + if (railshape.isAscending()) { p_38098_ = (double)(j + 1); @@ -602,7 +_,7 @@ - BlockState blockstate = this.m_9236_().m_8055_(new BlockPos(i, j, k)); - if (BaseRailBlock.m_49416_(blockstate)) { -- RailShape railshape = blockstate.m_61143_(((BaseRailBlock)blockstate.m_60734_()).m_7978_()); -+ RailShape railshape = ((BaseRailBlock)blockstate.m_60734_()).getRailDirection(blockstate, this.m_9236_(), new BlockPos(i, j, k), this); - Pair pair = m_38125_(railshape); + BlockState blockstate = this.level().getBlockState(new BlockPos(i, j, k)); + if (BaseRailBlock.isRail(blockstate)) { +- RailShape railshape = blockstate.getValue(((BaseRailBlock)blockstate.getBlock()).getShapeProperty()); ++ RailShape railshape = ((BaseRailBlock)blockstate.getBlock()).getRailDirection(blockstate, this.level(), new BlockPos(i, j, k), this); + Pair pair = exits(railshape); Vec3i vec3i = pair.getFirst(); Vec3i vec3i1 = pair.getSecond(); @@ -664,6 +_,10 @@ } - public void m_7334_(Entity p_38165_) { + public void push(Entity p_38165_) { + if (getCollisionHandler() != null) { + getCollisionHandler().onEntityCollision(this, p_38165_); + return; + } - if (!this.m_9236_().f_46443_) { - if (!p_38165_.f_19794_ && !this.f_19794_) { - if (!this.m_20363_(p_38165_)) { + if (!this.level().isClientSide) { + if (!p_38165_.noPhysics && !this.noPhysics) { + if (!this.hasPassenger(p_38165_)) { @@ -697,11 +_,11 @@ - Vec3 vec32 = this.m_20184_(); - Vec3 vec33 = p_38165_.m_20184_(); -- if (((AbstractMinecart)p_38165_).m_6064_() == AbstractMinecart.Type.FURNACE && this.m_6064_() != AbstractMinecart.Type.FURNACE) { + Vec3 vec32 = this.getDeltaMovement(); + Vec3 vec33 = p_38165_.getDeltaMovement(); +- if (((AbstractMinecart)p_38165_).getMinecartType() == AbstractMinecart.Type.FURNACE && this.getMinecartType() != AbstractMinecart.Type.FURNACE) { + if (((AbstractMinecart)p_38165_).isPoweredCart() && !this.isPoweredCart()) { - this.m_20256_(vec32.m_82542_(0.2D, 1.0D, 0.2D)); - this.m_5997_(vec33.f_82479_ - d0, 0.0D, vec33.f_82481_ - d1); - p_38165_.m_20256_(vec33.m_82542_(0.95D, 1.0D, 0.95D)); -- } else if (((AbstractMinecart)p_38165_).m_6064_() != AbstractMinecart.Type.FURNACE && this.m_6064_() == AbstractMinecart.Type.FURNACE) { + this.setDeltaMovement(vec32.multiply(0.2D, 1.0D, 0.2D)); + this.push(vec33.x - d0, 0.0D, vec33.z - d1); + p_38165_.setDeltaMovement(vec33.multiply(0.95D, 1.0D, 0.95D)); +- } else if (((AbstractMinecart)p_38165_).getMinecartType() != AbstractMinecart.Type.FURNACE && this.getMinecartType() == AbstractMinecart.Type.FURNACE) { + } else if (!((AbstractMinecart)p_38165_).isPoweredCart() && this.isPoweredCart()) { - p_38165_.m_20256_(vec33.m_82542_(0.2D, 1.0D, 0.2D)); - p_38165_.m_5997_(vec32.f_82479_ + d0, 0.0D, vec32.f_82481_ + d1); - this.m_20256_(vec32.m_82542_(0.95D, 1.0D, 0.95D)); + p_38165_.setDeltaMovement(vec33.multiply(0.2D, 1.0D, 0.2D)); + p_38165_.push(vec32.x + d0, 0.0D, vec32.z + d1); + this.setDeltaMovement(vec32.multiply(0.95D, 1.0D, 0.95D)); @@ -818,6 +_,42 @@ - public void m_38138_(boolean p_38139_) { - this.m_20088_().m_135381_(f_38084_, p_38139_); + public void setCustomDisplay(boolean p_38139_) { + this.getEntityData().set(DATA_ID_CUSTOM_DISPLAY, p_38139_); } + + // Forge Start @@ -215,7 +215,7 @@ + @Override public float getCurrentCartSpeedCapOnRail() { return currentSpeedCapOnRail; } + @Override public void setCurrentCartSpeedCapOnRail(float value) { currentSpeedCapOnRail = Math.min(value, getMaxCartSpeedOnRail()); } + @org.jetbrains.annotations.Nullable private Float maxSpeedAirLateral = null; -+ @Override public float getMaxSpeedAirLateral() { return maxSpeedAirLateral == null ? (float) this.m_7097_() : maxSpeedAirLateral; } ++ @Override public float getMaxSpeedAirLateral() { return maxSpeedAirLateral == null ? (float) this.getMaxSpeed() : maxSpeedAirLateral; } + @Override public void setMaxSpeedAirLateral(float value) { maxSpeedAirLateral = value; } + private float maxSpeedAirVertical = DEFAULT_MAX_SPEED_AIR_VERTICAL; + @Override public float getMaxSpeedAirVertical() { return maxSpeedAirVertical; } @@ -225,23 +225,23 @@ + @Override public void setDragAir(double value) { dragAir = value; } + @Override + public double getMaxSpeedWithRail() { //Non-default because getMaximumSpeed is protected -+ if (!canUseRail()) return m_7097_(); ++ if (!canUseRail()) return getMaxSpeed(); + BlockPos pos = this.getCurrentRailPosition(); -+ BlockState state = this.m_9236_().m_8055_(pos); -+ if (!state.m_204336_(BlockTags.f_13034_)) return m_7097_(); ++ BlockState state = this.level().getBlockState(pos); ++ if (!state.is(BlockTags.RAILS)) return getMaxSpeed(); + -+ float railMaxSpeed = ((BaseRailBlock)state.m_60734_()).getRailMaxSpeed(state, this.m_9236_(), pos, this); ++ float railMaxSpeed = ((BaseRailBlock)state.getBlock()).getRailMaxSpeed(state, this.level(), pos, this); + return Math.min(railMaxSpeed, getCurrentCartSpeedCapOnRail()); + } + @Override + public void moveMinecartOnRail(BlockPos pos) { //Non-default because getMaximumSpeed is protected + AbstractMinecart mc = this; -+ double d24 = mc.m_20160_() ? 0.75D : 1.0D; ++ double d24 = mc.isVehicle() ? 0.75D : 1.0D; + double d25 = mc.getMaxSpeedWithRail(); -+ Vec3 vec3d1 = mc.m_20184_(); -+ mc.m_6478_(MoverType.SELF, new Vec3(Mth.m_14008_(d24 * vec3d1.f_82479_, -d25, d25), 0.0D, Mth.m_14008_(d24 * vec3d1.f_82481_, -d25, d25))); ++ Vec3 vec3d1 = mc.getDeltaMovement(); ++ mc.move(MoverType.SELF, new Vec3(Mth.clamp(d24 * vec3d1.x, -d25, d25), 0.0D, Mth.clamp(d24 * vec3d1.z, -d25, d25))); + } + // Forge end - public ItemStack m_142340_() { + public ItemStack getPickResult() { Item item; diff --git a/patches/minecraft/net/minecraft/world/entity/vehicle/AbstractMinecartContainer.java.patch b/patches/minecraft/net/minecraft/world/entity/vehicle/AbstractMinecartContainer.java.patch index 7217e80531..72540b70c4 100644 --- a/patches/minecraft/net/minecraft/world/entity/vehicle/AbstractMinecartContainer.java.patch +++ b/patches/minecraft/net/minecraft/world/entity/vehicle/AbstractMinecartContainer.java.patch @@ -3,23 +3,23 @@ @@ -82,6 +_,8 @@ } - public InteractionResult m_6096_(Player p_38232_, InteractionHand p_38233_) { -+ InteractionResult ret = super.m_6096_(p_38232_, p_38233_); -+ if (ret.m_19077_()) return ret; - return this.m_268996_(p_38232_); + public InteractionResult interact(Player p_38232_, InteractionHand p_38233_) { ++ InteractionResult ret = super.interact(p_38232_, p_38233_); ++ if (ret.consumesAction()) return ret; + return this.interactWithContainerVehicle(p_38232_); } @@ -119,6 +_,28 @@ } - protected abstract AbstractContainerMenu m_7402_(int p_38222_, Inventory p_38223_); + protected abstract AbstractContainerMenu createMenu(int p_38222_, Inventory p_38223_); + + // Forge Start + private net.minecraftforge.common.util.LazyOptional itemHandler = net.minecraftforge.common.util.LazyOptional.of(() -> new net.minecraftforge.items.wrapper.InvWrapper(this)); + + @Override + public net.minecraftforge.common.util.LazyOptional getCapability(net.minecraftforge.common.capabilities.Capability capability, @Nullable net.minecraft.core.Direction facing) { -+ if (this.m_6084_() && capability == net.minecraftforge.common.capabilities.ForgeCapabilities.ITEM_HANDLER) ++ if (this.isAlive() && capability == net.minecraftforge.common.capabilities.ForgeCapabilities.ITEM_HANDLER) + return itemHandler.cast(); + return super.getCapability(capability, facing); + } @@ -37,4 +37,4 @@ + } @Nullable - public ResourceLocation m_214142_() { + public ResourceLocation getLootTable() { diff --git a/patches/minecraft/net/minecraft/world/entity/vehicle/Boat.java.patch b/patches/minecraft/net/minecraft/world/entity/vehicle/Boat.java.patch index aca7193fe9..94dfe0cb60 100644 --- a/patches/minecraft/net/minecraft/world/entity/vehicle/Boat.java.patch +++ b/patches/minecraft/net/minecraft/world/entity/vehicle/Boat.java.patch @@ -6,77 +6,77 @@ -public class Boat extends Entity implements VariantHolder { +public class Boat extends Entity implements net.minecraftforge.common.extensions.IForgeBoat { - private static final EntityDataAccessor f_38282_ = SynchedEntityData.m_135353_(Boat.class, EntityDataSerializers.f_135028_); - private static final EntityDataAccessor f_38283_ = SynchedEntityData.m_135353_(Boat.class, EntityDataSerializers.f_135028_); - private static final EntityDataAccessor f_38284_ = SynchedEntityData.m_135353_(Boat.class, EntityDataSerializers.f_135029_); + private static final EntityDataAccessor DATA_ID_HURT = SynchedEntityData.defineId(Boat.class, EntityDataSerializers.INT); + private static final EntityDataAccessor DATA_ID_HURTDIR = SynchedEntityData.defineId(Boat.class, EntityDataSerializers.INT); + private static final EntityDataAccessor DATA_ID_DAMAGE = SynchedEntityData.defineId(Boat.class, EntityDataSerializers.FLOAT); @@ -483,7 +_,7 @@ for(int i2 = i1; i2 < j1; ++i2) { - blockpos$mutableblockpos.m_122178_(l1, k1, i2); - FluidState fluidstate = this.m_9236_().m_6425_(blockpos$mutableblockpos); -- if (fluidstate.m_205070_(FluidTags.f_13131_)) { + blockpos$mutableblockpos.set(l1, k1, i2); + FluidState fluidstate = this.level().getFluidState(blockpos$mutableblockpos); +- if (fluidstate.is(FluidTags.WATER)) { + if (this.canBoatInFluid(fluidstate)) { - f = Math.max(f, fluidstate.m_76155_(this.m_9236_(), blockpos$mutableblockpos)); + f = Math.max(f, fluidstate.getHeight(this.level(), blockpos$mutableblockpos)); } @@ -524,7 +_,7 @@ - blockpos$mutableblockpos.m_122178_(l1, k2, i2); - BlockState blockstate = this.m_9236_().m_8055_(blockpos$mutableblockpos); - if (!(blockstate.m_60734_() instanceof WaterlilyBlock) && Shapes.m_83157_(blockstate.m_60812_(this.m_9236_(), blockpos$mutableblockpos).m_83216_((double)l1, (double)k2, (double)i2), voxelshape, BooleanOp.f_82689_)) { -- f += blockstate.m_60734_().m_49958_(); -+ f += blockstate.getFriction(this.m_9236_(), blockpos$mutableblockpos, this); + blockpos$mutableblockpos.set(l1, k2, i2); + BlockState blockstate = this.level().getBlockState(blockpos$mutableblockpos); + if (!(blockstate.getBlock() instanceof WaterlilyBlock) && Shapes.joinIsNotEmpty(blockstate.getCollisionShape(this.level(), blockpos$mutableblockpos).move((double)l1, (double)k2, (double)i2), voxelshape, BooleanOp.AND)) { +- f += blockstate.getBlock().getFriction(); ++ f += blockstate.getFriction(this.level(), blockpos$mutableblockpos, this); ++k1; } } @@ -553,7 +_,7 @@ for(int i2 = i1; i2 < j1; ++i2) { - blockpos$mutableblockpos.m_122178_(k1, l1, i2); - FluidState fluidstate = this.m_9236_().m_6425_(blockpos$mutableblockpos); -- if (fluidstate.m_205070_(FluidTags.f_13131_)) { + blockpos$mutableblockpos.set(k1, l1, i2); + FluidState fluidstate = this.level().getFluidState(blockpos$mutableblockpos); +- if (fluidstate.is(FluidTags.WATER)) { + if (this.canBoatInFluid(fluidstate)) { - float f = (float)l1 + fluidstate.m_76155_(this.m_9236_(), blockpos$mutableblockpos); - this.f_38277_ = Math.max((double)f, this.f_38277_); - flag |= aabb.f_82289_ < (double)f; + float f = (float)l1 + fluidstate.getHeight(this.level(), blockpos$mutableblockpos); + this.waterLevel = Math.max((double)f, this.waterLevel); + flag |= aabb.minY < (double)f; @@ -583,7 +_,7 @@ for(int i2 = i1; i2 < j1; ++i2) { - blockpos$mutableblockpos.m_122178_(k1, l1, i2); - FluidState fluidstate = this.m_9236_().m_6425_(blockpos$mutableblockpos); -- if (fluidstate.m_205070_(FluidTags.f_13131_) && d0 < (double)((float)blockpos$mutableblockpos.m_123342_() + fluidstate.m_76155_(this.m_9236_(), blockpos$mutableblockpos))) { -+ if (this.canBoatInFluid(fluidstate) && d0 < (double)((float)blockpos$mutableblockpos.m_123342_() + fluidstate.m_76155_(this.m_9236_(), blockpos$mutableblockpos))) { - if (!fluidstate.m_76170_()) { + blockpos$mutableblockpos.set(k1, l1, i2); + FluidState fluidstate = this.level().getFluidState(blockpos$mutableblockpos); +- if (fluidstate.is(FluidTags.WATER) && d0 < (double)((float)blockpos$mutableblockpos.getY() + fluidstate.getHeight(this.level(), blockpos$mutableblockpos))) { ++ if (this.canBoatInFluid(fluidstate) && d0 < (double)((float)blockpos$mutableblockpos.getY() + fluidstate.getHeight(this.level(), blockpos$mutableblockpos))) { + if (!fluidstate.isSource()) { return Boat.Status.UNDER_FLOWING_WATER; } @@ -783,7 +_,7 @@ } - this.m_183634_(); -- } else if (!this.m_9236_().m_6425_(this.m_20183_().m_7495_()).m_205070_(FluidTags.f_13131_) && p_38307_ < 0.0D) { -+ } else if (!this.canBoatInFluid(this.m_9236_().m_6425_(this.m_20183_().m_7495_())) && p_38307_ < 0.0D) { - this.f_19789_ -= (float)p_38307_; + this.resetFallDistance(); +- } else if (!this.level().getFluidState(this.blockPosition().below()).is(FluidTags.WATER) && p_38307_ < 0.0D) { ++ } else if (!this.canBoatInFluid(this.level().getFluidState(this.blockPosition().below())) && p_38307_ < 0.0D) { + this.fallDistance -= (float)p_38307_; } @@ -839,7 +_,7 @@ } - protected boolean m_7310_(Entity p_38390_) { -- return this.m_20197_().size() < this.m_213801_() && !this.m_204029_(FluidTags.f_13131_); -+ return this.m_20197_().size() < this.m_213801_() && !this.canBoatInFluid(this.getEyeInFluidType()); + protected boolean canAddPassenger(Entity p_38390_) { +- return this.getPassengers().size() < this.getMaxPassengers() && !this.isEyeInFluid(FluidTags.WATER); ++ return this.getPassengers().size() < this.getMaxPassengers() && !this.canBoatInFluid(this.getEyeInFluidType()); } - protected int m_213801_() { + protected int getMaxPassengers() { @@ -872,6 +_,16 @@ - public boolean m_5842_() { - return this.f_38279_ == Boat.Status.UNDER_WATER || this.f_38279_ == Boat.Status.UNDER_FLOWING_WATER; + public boolean isUnderWater() { + return this.status == Boat.Status.UNDER_WATER || this.status == Boat.Status.UNDER_FLOWING_WATER; + } + + // Forge: Fix MC-119811 by instantly completing lerp on board + @Override -+ protected void m_20348_(Entity passenger) { -+ super.m_20348_(passenger); -+ if (this.m_6109_() && this.f_38267_ > 0) { -+ this.f_38267_ = 0; -+ this.m_19890_(this.f_38268_, this.f_38269_, this.f_38270_, (float)this.f_38271_, (float)this.f_38272_); ++ protected void addPassenger(Entity passenger) { ++ super.addPassenger(passenger); ++ if (this.isControlledByLocalInstance() && this.lerpSteps > 0) { ++ this.lerpSteps = 0; ++ this.absMoveTo(this.lerpX, this.lerpY, this.lerpZ, (float)this.lerpYRot, (float)this.lerpXRot); + } } - public ItemStack m_142340_() { + public ItemStack getPickResult() { diff --git a/patches/minecraft/net/minecraft/world/entity/vehicle/ChestBoat.java.patch b/patches/minecraft/net/minecraft/world/entity/vehicle/ChestBoat.java.patch index aed87bec80..41f8988921 100644 --- a/patches/minecraft/net/minecraft/world/entity/vehicle/ChestBoat.java.patch +++ b/patches/minecraft/net/minecraft/world/entity/vehicle/ChestBoat.java.patch @@ -1,7 +1,7 @@ --- a/net/minecraft/world/entity/vehicle/ChestBoat.java +++ b/net/minecraft/world/entity/vehicle/ChestBoat.java @@ -204,6 +_,28 @@ - this.f_219864_ = NonNullList.m_122780_(this.m_6643_(), ItemStack.f_41583_); + this.itemStacks = NonNullList.withSize(this.getContainerSize(), ItemStack.EMPTY); } + // Forge Start @@ -9,7 +9,7 @@ + + @Override + public net.minecraftforge.common.util.LazyOptional getCapability(net.minecraftforge.common.capabilities.Capability capability, @Nullable net.minecraft.core.Direction facing) { -+ if (this.m_6084_() && capability == net.minecraftforge.common.capabilities.ForgeCapabilities.ITEM_HANDLER) ++ if (this.isAlive() && capability == net.minecraftforge.common.capabilities.ForgeCapabilities.ITEM_HANDLER) + return itemHandler.cast(); + return super.getCapability(capability, facing); + } @@ -26,6 +26,6 @@ + itemHandler = net.minecraftforge.common.util.LazyOptional.of(() -> new net.minecraftforge.items.wrapper.InvWrapper(this)); + } + - public void m_5785_(Player p_270286_) { - this.m_9236_().m_214171_(GameEvent.f_157802_, this.m_20182_(), GameEvent.Context.m_223717_(p_270286_)); + public void stopOpen(Player p_270286_) { + this.level().gameEvent(GameEvent.CONTAINER_CLOSE, this.position(), GameEvent.Context.of(p_270286_)); } diff --git a/patches/minecraft/net/minecraft/world/entity/vehicle/ContainerEntity.java.patch b/patches/minecraft/net/minecraft/world/entity/vehicle/ContainerEntity.java.patch index e73bdff861..925b7f6d23 100644 --- a/patches/minecraft/net/minecraft/world/entity/vehicle/ContainerEntity.java.patch +++ b/patches/minecraft/net/minecraft/world/entity/vehicle/ContainerEntity.java.patch @@ -2,11 +2,11 @@ +++ b/net/minecraft/world/entity/vehicle/ContainerEntity.java @@ -103,6 +_,9 @@ - this.m_214199_((ResourceLocation)null); - LootParams.Builder lootparams$builder = (new LootParams.Builder((ServerLevel)this.m_9236_())).m_287286_(LootContextParams.f_81460_, this.m_20182_()); + this.setLootTable((ResourceLocation)null); + LootParams.Builder lootparams$builder = (new LootParams.Builder((ServerLevel)this.level())).withParameter(LootContextParams.ORIGIN, this.position()); + // Forge: set the chest to killer_entity for loot context. + if (this instanceof AbstractMinecartContainer entityContainer) -+ lootparams$builder.m_287286_(LootContextParams.f_81458_, entityContainer); ++ lootparams$builder.withParameter(LootContextParams.KILLER_ENTITY, entityContainer); if (p_219950_ != null) { - lootparams$builder.m_287239_(p_219950_.m_36336_()).m_287286_(LootContextParams.f_81455_, p_219950_); + lootparams$builder.withLuck(p_219950_.getLuck()).withParameter(LootContextParams.THIS_ENTITY, p_219950_); } diff --git a/patches/minecraft/net/minecraft/world/entity/vehicle/Minecart.java.patch b/patches/minecraft/net/minecraft/world/entity/vehicle/Minecart.java.patch index 9e7ae0aa06..14c1e8ff9b 100644 --- a/patches/minecraft/net/minecraft/world/entity/vehicle/Minecart.java.patch +++ b/patches/minecraft/net/minecraft/world/entity/vehicle/Minecart.java.patch @@ -3,9 +3,9 @@ @@ -18,6 +_,8 @@ } - public InteractionResult m_6096_(Player p_38483_, InteractionHand p_38484_) { -+ InteractionResult ret = super.m_6096_(p_38483_, p_38484_); -+ if (ret.m_19077_()) return ret; - if (p_38483_.m_36341_()) { + public InteractionResult interact(Player p_38483_, InteractionHand p_38484_) { ++ InteractionResult ret = super.interact(p_38483_, p_38484_); ++ if (ret.consumesAction()) return ret; + if (p_38483_.isSecondaryUseActive()) { return InteractionResult.PASS; - } else if (this.m_20160_()) { + } else if (this.isVehicle()) { diff --git a/patches/minecraft/net/minecraft/world/entity/vehicle/MinecartCommandBlock.java.patch b/patches/minecraft/net/minecraft/world/entity/vehicle/MinecartCommandBlock.java.patch index a2ca99f2ad..af5e32889f 100644 --- a/patches/minecraft/net/minecraft/world/entity/vehicle/MinecartCommandBlock.java.patch +++ b/patches/minecraft/net/minecraft/world/entity/vehicle/MinecartCommandBlock.java.patch @@ -3,9 +3,9 @@ @@ -78,6 +_,8 @@ } - public InteractionResult m_6096_(Player p_38522_, InteractionHand p_38523_) { -+ InteractionResult ret = super.m_6096_(p_38522_, p_38523_); -+ if (ret.m_19077_()) return ret; - return this.f_38505_.m_45412_(p_38522_); + public InteractionResult interact(Player p_38522_, InteractionHand p_38523_) { ++ InteractionResult ret = super.interact(p_38522_, p_38523_); ++ if (ret.consumesAction()) return ret; + return this.commandBlock.usedBy(p_38522_); } diff --git a/patches/minecraft/net/minecraft/world/entity/vehicle/MinecartFurnace.java.patch b/patches/minecraft/net/minecraft/world/entity/vehicle/MinecartFurnace.java.patch index 66e69481a2..093013f6a9 100644 --- a/patches/minecraft/net/minecraft/world/entity/vehicle/MinecartFurnace.java.patch +++ b/patches/minecraft/net/minecraft/world/entity/vehicle/MinecartFurnace.java.patch @@ -3,16 +3,16 @@ @@ -110,6 +_,8 @@ } - public InteractionResult m_6096_(Player p_38562_, InteractionHand p_38563_) { -+ InteractionResult ret = super.m_6096_(p_38562_, p_38563_); -+ if (ret.m_19077_()) return ret; - ItemStack itemstack = p_38562_.m_21120_(p_38563_); - if (f_38549_.test(itemstack) && this.f_38548_ + 3600 <= 32000) { - if (!p_38562_.m_150110_().f_35937_) { + public InteractionResult interact(Player p_38562_, InteractionHand p_38563_) { ++ InteractionResult ret = super.interact(p_38562_, p_38563_); ++ if (ret.consumesAction()) return ret; + ItemStack itemstack = p_38562_.getItemInHand(p_38563_); + if (INGREDIENT.test(itemstack) && this.fuel + 3600 <= 32000) { + if (!p_38562_.getAbilities().instabuild) { @@ -125,6 +_,11 @@ } - return InteractionResult.m_19078_(this.m_9236_().f_46443_); + return InteractionResult.sidedSuccess(this.level().isClientSide); + } + + @Override @@ -20,4 +20,4 @@ + return 0.2f; } - protected void m_7380_(CompoundTag p_38567_) { + protected void addAdditionalSaveData(CompoundTag p_38567_) { diff --git a/patches/minecraft/net/minecraft/world/entity/vehicle/MinecartSpawner.java.patch b/patches/minecraft/net/minecraft/world/entity/vehicle/MinecartSpawner.java.patch index 8567b649f2..cc2e4b770b 100644 --- a/patches/minecraft/net/minecraft/world/entity/vehicle/MinecartSpawner.java.patch +++ b/patches/minecraft/net/minecraft/world/entity/vehicle/MinecartSpawner.java.patch @@ -1,8 +1,8 @@ --- a/net/minecraft/world/entity/vehicle/MinecartSpawner.java +++ b/net/minecraft/world/entity/vehicle/MinecartSpawner.java @@ -16,6 +_,12 @@ - public void m_142523_(Level p_150342_, BlockPos p_150343_, int p_150344_) { - p_150342_.m_7605_(MinecartSpawner.this, (byte)p_150344_); + public void broadcastEvent(Level p_150342_, BlockPos p_150343_, int p_150344_) { + p_150342_.broadcastEntityEvent(MinecartSpawner.this, (byte)p_150344_); } + + @Override @@ -11,5 +11,5 @@ + return MinecartSpawner.this; + } }; - private final Runnable f_150333_; + private final Runnable ticker; diff --git a/patches/minecraft/net/minecraft/world/food/FoodData.java.patch b/patches/minecraft/net/minecraft/world/food/FoodData.java.patch index 1d8651704d..40953dd7ec 100644 --- a/patches/minecraft/net/minecraft/world/food/FoodData.java.patch +++ b/patches/minecraft/net/minecraft/world/food/FoodData.java.patch @@ -1,19 +1,19 @@ --- a/net/minecraft/world/food/FoodData.java +++ b/net/minecraft/world/food/FoodData.java @@ -23,9 +_,15 @@ - this.f_38697_ = Math.min(this.f_38697_ + (float)p_38708_ * p_38709_ * 2.0F, (float)this.f_38696_); + this.saturationLevel = Math.min(this.saturationLevel + (float)p_38708_ * p_38709_ * 2.0F, (float)this.foodLevel); } + // Use the LivingEntity sensitive version in favour of this. + @Deprecated - public void m_38712_(Item p_38713_, ItemStack p_38714_) { + public void eat(Item p_38713_, ItemStack p_38714_) { + this.eat(p_38713_, p_38714_, null); + } + + public void eat(Item p_38713_, ItemStack p_38714_, @org.jetbrains.annotations.Nullable net.minecraft.world.entity.LivingEntity entity) { - if (p_38713_.m_41472_()) { -- FoodProperties foodproperties = p_38713_.m_41473_(); + if (p_38713_.isEdible()) { +- FoodProperties foodproperties = p_38713_.getFoodProperties(); + FoodProperties foodproperties = p_38714_.getFoodProperties(entity); - this.m_38707_(foodproperties.m_38744_(), foodproperties.m_38745_()); + this.eat(foodproperties.getNutrition(), foodproperties.getSaturationModifier()); } diff --git a/patches/minecraft/net/minecraft/world/food/FoodProperties.java.patch b/patches/minecraft/net/minecraft/world/food/FoodProperties.java.patch index aae2b25e88..12bf1ac78b 100644 --- a/patches/minecraft/net/minecraft/world/food/FoodProperties.java.patch +++ b/patches/minecraft/net/minecraft/world/food/FoodProperties.java.patch @@ -1,72 +1,72 @@ --- a/net/minecraft/world/food/FoodProperties.java +++ b/net/minecraft/world/food/FoodProperties.java @@ -11,15 +_,26 @@ - private final boolean f_38725_; - private final boolean f_38726_; - private final boolean f_38727_; -- private final List> f_38728_; + private final boolean isMeat; + private final boolean canAlwaysEat; + private final boolean fastFood; +- private final List> effects; - -+ private final List, Float>> f_38728_; ++ private final List, Float>> effects; + + private FoodProperties(FoodProperties.Builder builder) { -+ this.f_38723_ = builder.f_38750_; -+ this.f_38724_ = builder.f_38751_; -+ this.f_38725_ = builder.f_38752_; -+ this.f_38726_ = builder.f_38753_; -+ this.f_38727_ = builder.f_38754_; -+ this.f_38728_ = builder.f_38755_; ++ this.nutrition = builder.nutrition; ++ this.saturationModifier = builder.saturationModifier; ++ this.isMeat = builder.isMeat; ++ this.canAlwaysEat = builder.canAlwaysEat; ++ this.fastFood = builder.fastFood; ++ this.effects = builder.effects; + } + + // Forge: Use builder method instead + @Deprecated FoodProperties(int p_38730_, float p_38731_, boolean p_38732_, boolean p_38733_, boolean p_38734_, List> p_38735_) { - this.f_38723_ = p_38730_; - this.f_38724_ = p_38731_; - this.f_38725_ = p_38732_; - this.f_38726_ = p_38733_; - this.f_38727_ = p_38734_; -- this.f_38728_ = p_38735_; -+ this.f_38728_ = p_38735_.stream().map(pair -> Pair., Float>of(pair::getFirst, pair.getSecond())).collect(java.util.stream.Collectors.toList()); + this.nutrition = p_38730_; + this.saturationModifier = p_38731_; + this.isMeat = p_38732_; + this.canAlwaysEat = p_38733_; + this.fastFood = p_38734_; +- this.effects = p_38735_; ++ this.effects = p_38735_.stream().map(pair -> Pair., Float>of(pair::getFirst, pair.getSecond())).collect(java.util.stream.Collectors.toList()); } - public int m_38744_() { + public int getNutrition() { @@ -43,7 +_,7 @@ } - public List> m_38749_() { -- return this.f_38728_; -+ return this.f_38728_.stream().map(pair -> Pair.of(pair.getFirst() != null ? pair.getFirst().get() : null, pair.getSecond())).collect(java.util.stream.Collectors.toList()); + public List> getEffects() { +- return this.effects; ++ return this.effects.stream().map(pair -> Pair.of(pair.getFirst() != null ? pair.getFirst().get() : null, pair.getSecond())).collect(java.util.stream.Collectors.toList()); } public static class Builder { @@ -52,7 +_,7 @@ - private boolean f_38752_; - private boolean f_38753_; - private boolean f_38754_; -- private final List> f_38755_ = Lists.newArrayList(); -+ private final List, Float>> f_38755_ = Lists.newArrayList(); + private boolean isMeat; + private boolean canAlwaysEat; + private boolean fastFood; +- private final List> effects = Lists.newArrayList(); ++ private final List, Float>> effects = Lists.newArrayList(); - public FoodProperties.Builder m_38760_(int p_38761_) { - this.f_38750_ = p_38761_; + public FoodProperties.Builder nutrition(int p_38761_) { + this.nutrition = p_38761_; @@ -79,13 +_,20 @@ return this; } + public FoodProperties.Builder effect(java.util.function.Supplier effectIn, float probability) { -+ this.f_38755_.add(Pair.of(effectIn, probability)); ++ this.effects.add(Pair.of(effectIn, probability)); + return this; + } + + // Forge: Use supplier method instead + @Deprecated - public FoodProperties.Builder m_38762_(MobEffectInstance p_38763_, float p_38764_) { -- this.f_38755_.add(Pair.of(p_38763_, p_38764_)); -+ this.f_38755_.add(Pair.of(() -> p_38763_, p_38764_)); + public FoodProperties.Builder effect(MobEffectInstance p_38763_, float p_38764_) { +- this.effects.add(Pair.of(p_38763_, p_38764_)); ++ this.effects.add(Pair.of(() -> p_38763_, p_38764_)); return this; } - public FoodProperties m_38767_() { -- return new FoodProperties(this.f_38750_, this.f_38751_, this.f_38752_, this.f_38753_, this.f_38754_, this.f_38755_); + public FoodProperties build() { +- return new FoodProperties(this.nutrition, this.saturationModifier, this.isMeat, this.canAlwaysEat, this.fastFood, this.effects); + return new FoodProperties(this); } } diff --git a/patches/minecraft/net/minecraft/world/inventory/AbstractContainerMenu.java.patch b/patches/minecraft/net/minecraft/world/inventory/AbstractContainerMenu.java.patch index 0745dcfdb4..bb6a0e6576 100644 --- a/patches/minecraft/net/minecraft/world/inventory/AbstractContainerMenu.java.patch +++ b/patches/minecraft/net/minecraft/world/inventory/AbstractContainerMenu.java.patch @@ -2,47 +2,47 @@ +++ b/net/minecraft/world/inventory/AbstractContainerMenu.java @@ -229,6 +_,8 @@ ItemStack itemstack1 = p_150438_.get(); - this.f_150394_.set(p_150436_, itemstack1); - if (this.f_150397_ != null) { + this.remoteSlots.set(p_150436_, itemstack1); + if (this.synchronizer != null) { + // Forge: Only synchronize a slot change if the itemstack actually changed in a way that is relevant to the client (i.e. share tag changed) + if (!p_150437_.equals(itemstack, true)) - this.f_150397_.m_142074_(this, p_150436_, itemstack1); + this.synchronizer.sendSlotChange(this, p_150436_, itemstack1); } } @@ -401,6 +_,7 @@ - ItemStack itemstack10 = this.m_142621_(); - p_150434_.m_141945_(itemstack10, slot7.m_7993_(), clickaction); - if (!this.m_246200_(p_150434_, clickaction, slot7, itemstack9, itemstack10)) { -+ if (!net.minecraftforge.common.ForgeHooks.onItemStackedOn(itemstack9, itemstack10, slot7, clickaction, p_150434_, m_150446_())) - if (itemstack9.m_41619_()) { - if (!itemstack10.m_41619_()) { - int i3 = clickaction == ClickAction.PRIMARY ? itemstack10.m_41613_() : 1; + ItemStack itemstack10 = this.getCarried(); + p_150434_.updateTutorialInventoryAction(itemstack10, slot7.getItem(), clickaction); + if (!this.tryItemClickBehaviourOverride(p_150434_, clickaction, slot7, itemstack9, itemstack10)) { ++ if (!net.minecraftforge.common.ForgeHooks.onItemStackedOn(itemstack9, itemstack10, slot7, clickaction, p_150434_, createCarriedSlotAccess())) + if (itemstack9.isEmpty()) { + if (!itemstack10.isEmpty()) { + int i3 = clickaction == ClickAction.PRIMARY ? itemstack10.getCount() : 1; @@ -610,14 +_,15 @@ - ItemStack itemstack = slot.m_7993_(); - if (!itemstack.m_41619_() && ItemStack.m_150942_(p_38904_, itemstack)) { - int j = itemstack.m_41613_() + p_38904_.m_41613_(); -- if (j <= p_38904_.m_41741_()) { -+ int maxSize = Math.min(slot.m_6641_(), p_38904_.m_41741_()); + ItemStack itemstack = slot.getItem(); + if (!itemstack.isEmpty() && ItemStack.isSameItemSameTags(p_38904_, itemstack)) { + int j = itemstack.getCount() + p_38904_.getCount(); +- if (j <= p_38904_.getMaxStackSize()) { ++ int maxSize = Math.min(slot.getMaxStackSize(), p_38904_.getMaxStackSize()); + if (j <= maxSize) { - p_38904_.m_41764_(0); - itemstack.m_41764_(j); - slot.m_6654_(); + p_38904_.setCount(0); + itemstack.setCount(j); + slot.setChanged(); flag = true; -- } else if (itemstack.m_41613_() < p_38904_.m_41741_()) { -- p_38904_.m_41774_(p_38904_.m_41741_() - itemstack.m_41613_()); -- itemstack.m_41764_(p_38904_.m_41741_()); -+ } else if (itemstack.m_41613_() < maxSize) { -+ p_38904_.m_41774_(maxSize - itemstack.m_41613_()); -+ itemstack.m_41764_(maxSize); - slot.m_6654_(); +- } else if (itemstack.getCount() < p_38904_.getMaxStackSize()) { +- p_38904_.shrink(p_38904_.getMaxStackSize() - itemstack.getCount()); +- itemstack.setCount(p_38904_.getMaxStackSize()); ++ } else if (itemstack.getCount() < maxSize) { ++ p_38904_.shrink(maxSize - itemstack.getCount()); ++ itemstack.setCount(maxSize); + slot.setChanged(); flag = true; } @@ -718,7 +_,7 @@ i = 1; break; case 2: -- i = p_279172_.m_41720_().m_41459_(); -+ i = p_279172_.m_41741_(); +- i = p_279172_.getItem().getMaxStackSize(); ++ i = p_279172_.getMaxStackSize(); break; default: - i = p_279172_.m_41613_(); + i = p_279172_.getCount(); diff --git a/patches/minecraft/net/minecraft/world/inventory/AbstractFurnaceMenu.java.patch b/patches/minecraft/net/minecraft/world/inventory/AbstractFurnaceMenu.java.patch index e6114aa50f..cec1796714 100644 --- a/patches/minecraft/net/minecraft/world/inventory/AbstractFurnaceMenu.java.patch +++ b/patches/minecraft/net/minecraft/world/inventory/AbstractFurnaceMenu.java.patch @@ -3,9 +3,9 @@ @@ -149,7 +_,7 @@ } - protected boolean m_38988_(ItemStack p_38989_) { -- return AbstractFurnaceBlockEntity.m_58399_(p_38989_); -+ return net.minecraftforge.common.ForgeHooks.getBurnTime(p_38989_, this.f_38957_) > 0; + protected boolean isFuel(ItemStack p_38989_) { +- return AbstractFurnaceBlockEntity.isFuel(p_38989_); ++ return net.minecraftforge.common.ForgeHooks.getBurnTime(p_38989_, this.recipeType) > 0; } - public float m_38995_() { + public float getBurnProgress() { diff --git a/patches/minecraft/net/minecraft/world/inventory/AnvilMenu.java.patch b/patches/minecraft/net/minecraft/world/inventory/AnvilMenu.java.patch index f630e3dbdc..e6b78a8857 100644 --- a/patches/minecraft/net/minecraft/world/inventory/AnvilMenu.java.patch +++ b/patches/minecraft/net/minecraft/world/inventory/AnvilMenu.java.patch @@ -1,51 +1,51 @@ --- a/net/minecraft/world/inventory/AnvilMenu.java +++ b/net/minecraft/world/inventory/AnvilMenu.java @@ -71,6 +_,8 @@ - p_150474_.m_6749_(-this.f_39002_.m_6501_()); + p_150474_.giveExperienceLevels(-this.cost.get()); } -+ float breakChance = net.minecraftforge.common.ForgeHooks.onAnvilRepair(p_150474_, p_150475_, AnvilMenu.this.f_39769_.m_8020_(0), AnvilMenu.this.f_39769_.m_8020_(1)); ++ float breakChance = net.minecraftforge.common.ForgeHooks.onAnvilRepair(p_150474_, p_150475_, AnvilMenu.this.inputSlots.getItem(0), AnvilMenu.this.inputSlots.getItem(1)); + - this.f_39769_.m_6836_(0, ItemStack.f_41583_); - if (this.f_39000_ > 0) { - ItemStack itemstack = this.f_39769_.m_8020_(1); + this.inputSlots.setItem(0, ItemStack.EMPTY); + if (this.repairItemCountCost > 0) { + ItemStack itemstack = this.inputSlots.getItem(1); @@ -87,7 +_,7 @@ - this.f_39002_.m_6422_(0); - this.f_39770_.m_39292_((p_150479_, p_150480_) -> { - BlockState blockstate = p_150479_.m_8055_(p_150480_); -- if (!p_150474_.m_150110_().f_35937_ && blockstate.m_204336_(BlockTags.f_13033_) && p_150474_.m_217043_().m_188501_() < 0.12F) { -+ if (!p_150474_.m_150110_().f_35937_ && blockstate.m_204336_(BlockTags.f_13033_) && p_150474_.m_217043_().m_188501_() < breakChance) { - BlockState blockstate1 = AnvilBlock.m_48824_(blockstate); + this.cost.set(0); + this.access.execute((p_150479_, p_150480_) -> { + BlockState blockstate = p_150479_.getBlockState(p_150480_); +- if (!p_150474_.getAbilities().instabuild && blockstate.is(BlockTags.ANVIL) && p_150474_.getRandom().nextFloat() < 0.12F) { ++ if (!p_150474_.getAbilities().instabuild && blockstate.is(BlockTags.ANVIL) && p_150474_.getRandom().nextFloat() < breakChance) { + BlockState blockstate1 = AnvilBlock.damage(blockstate); if (blockstate1 == null) { - p_150479_.m_7471_(p_150480_, false); + p_150479_.removeBlock(p_150480_, false); @@ -118,8 +_,11 @@ - Map map = EnchantmentHelper.m_44831_(itemstack1); - j += itemstack.m_41610_() + (itemstack2.m_41619_() ? 0 : itemstack2.m_41610_()); - this.f_39000_ = 0; + Map map = EnchantmentHelper.getEnchantments(itemstack1); + j += itemstack.getBaseRepairCost() + (itemstack2.isEmpty() ? 0 : itemstack2.getBaseRepairCost()); + this.repairItemCountCost = 0; + boolean flag = false; + -+ if (!net.minecraftforge.common.ForgeHooks.onAnvilChange(this, itemstack, itemstack2, f_39768_, f_39001_, j, this.f_39771_)) return; - if (!itemstack2.m_41619_()) { -- boolean flag = itemstack2.m_150930_(Items.f_42690_) && !EnchantedBookItem.m_41163_(itemstack2).isEmpty(); -+ flag = itemstack2.m_41720_() == Items.f_42690_ && !EnchantedBookItem.m_41163_(itemstack2).isEmpty(); - if (itemstack1.m_41763_() && itemstack1.m_41720_().m_6832_(itemstack, itemstack2)) { - int l2 = Math.min(itemstack1.m_41773_(), itemstack1.m_41776_() / 4); ++ if (!net.minecraftforge.common.ForgeHooks.onAnvilChange(this, itemstack, itemstack2, resultSlots, itemName, j, this.player)) return; + if (!itemstack2.isEmpty()) { +- boolean flag = itemstack2.is(Items.ENCHANTED_BOOK) && !EnchantedBookItem.getEnchantments(itemstack2).isEmpty(); ++ flag = itemstack2.getItem() == Items.ENCHANTED_BOOK && !EnchantedBookItem.getEnchantments(itemstack2).isEmpty(); + if (itemstack1.isDamageableItem() && itemstack1.getItem().isValidRepairItem(itemstack, itemstack2)) { + int l2 = Math.min(itemstack1.getDamageValue(), itemstack1.getMaxDamage() / 4); if (l2 <= 0) { @@ -236,6 +_,7 @@ i += k; - itemstack1.m_41787_(); + itemstack1.resetHoverName(); } -+ if (flag && !itemstack1.isBookEnchantable(itemstack2)) itemstack1 = ItemStack.f_41583_; ++ if (flag && !itemstack1.isBookEnchantable(itemstack2)) itemstack1 = ItemStack.EMPTY; - this.f_39002_.m_6422_(j + i); + this.cost.set(j + i); if (i <= 0) { @@ -301,5 +_,9 @@ - public int m_39028_() { - return this.f_39002_.m_6501_(); + public int getCost() { + return this.cost.get(); + } + + public void setMaximumCost(int value) { -+ this.f_39002_.m_6422_(value); ++ this.cost.set(value); } } diff --git a/patches/minecraft/net/minecraft/world/inventory/BeaconMenu.java.patch b/patches/minecraft/net/minecraft/world/inventory/BeaconMenu.java.patch index 043f18bf69..e62c8ef871 100644 --- a/patches/minecraft/net/minecraft/world/inventory/BeaconMenu.java.patch +++ b/patches/minecraft/net/minecraft/world/inventory/BeaconMenu.java.patch @@ -3,13 +3,13 @@ @@ -93,10 +_,8 @@ } - slot.m_40234_(itemstack1, itemstack); -- } else if (!this.f_39032_.m_6657_() && this.f_39032_.m_5857_(itemstack1) && itemstack1.m_41613_() == 1) { -- if (!this.m_38903_(itemstack1, 0, 1, false)) { -- return ItemStack.f_41583_; + slot.onQuickCraft(itemstack1, itemstack); +- } else if (!this.paymentSlot.hasItem() && this.paymentSlot.mayPlace(itemstack1) && itemstack1.getCount() == 1) { +- if (!this.moveItemStackTo(itemstack1, 0, 1, false)) { +- return ItemStack.EMPTY; - } -+ } else if (this.m_38903_(itemstack1, 0, 1, false)) { //Forge Fix Shift Clicking in beacons with stacks larger then 1. -+ return ItemStack.f_41583_; ++ } else if (this.moveItemStackTo(itemstack1, 0, 1, false)) { //Forge Fix Shift Clicking in beacons with stacks larger then 1. ++ return ItemStack.EMPTY; } else if (p_39052_ >= 1 && p_39052_ < 28) { - if (!this.m_38903_(itemstack1, 28, 37, false)) { - return ItemStack.f_41583_; + if (!this.moveItemStackTo(itemstack1, 28, 37, false)) { + return ItemStack.EMPTY; diff --git a/patches/minecraft/net/minecraft/world/inventory/BrewingStandMenu.java.patch b/patches/minecraft/net/minecraft/world/inventory/BrewingStandMenu.java.patch index 98b450b0cf..36333f88ba 100644 --- a/patches/minecraft/net/minecraft/world/inventory/BrewingStandMenu.java.patch +++ b/patches/minecraft/net/minecraft/world/inventory/BrewingStandMenu.java.patch @@ -1,36 +1,36 @@ --- a/net/minecraft/world/inventory/BrewingStandMenu.java +++ b/net/minecraft/world/inventory/BrewingStandMenu.java @@ -75,7 +_,7 @@ - if (!this.m_38903_(itemstack1, 3, 4, false)) { - return ItemStack.f_41583_; + if (!this.moveItemStackTo(itemstack1, 3, 4, false)) { + return ItemStack.EMPTY; } -- } else if (BrewingStandMenu.PotionSlot.m_39133_(itemstack) && itemstack.m_41613_() == 1) { -+ } else if (BrewingStandMenu.PotionSlot.m_39133_(itemstack)) { - if (!this.m_38903_(itemstack1, 0, 3, false)) { - return ItemStack.f_41583_; +- } else if (BrewingStandMenu.PotionSlot.mayPlaceItem(itemstack) && itemstack.getCount() == 1) { ++ } else if (BrewingStandMenu.PotionSlot.mayPlaceItem(itemstack)) { + if (!this.moveItemStackTo(itemstack1, 0, 3, false)) { + return ItemStack.EMPTY; } @@ -146,7 +_,7 @@ } - public boolean m_5857_(ItemStack p_39121_) { -- return PotionBrewing.m_43506_(p_39121_); + public boolean mayPlace(ItemStack p_39121_) { +- return PotionBrewing.isIngredient(p_39121_); + return net.minecraftforge.common.brewing.BrewingRecipeRegistry.isValidIngredient(p_39121_); } - public int m_6641_() { + public int getMaxStackSize() { @@ -170,6 +_,7 @@ - public void m_142406_(Player p_150499_, ItemStack p_150500_) { - Potion potion = PotionUtils.m_43579_(p_150500_); + public void onTake(Player p_150499_, ItemStack p_150500_) { + Potion potion = PotionUtils.getPotion(p_150500_); if (p_150499_ instanceof ServerPlayer) { + net.minecraftforge.event.ForgeEventFactory.onPlayerBrewedPotion(p_150499_, p_150500_); - CriteriaTriggers.f_10577_.m_19120_((ServerPlayer)p_150499_, potion); + CriteriaTriggers.BREWED_POTION.trigger((ServerPlayer)p_150499_, potion); } @@ -177,7 +_,7 @@ } - public static boolean m_39133_(ItemStack p_39134_) { -- return p_39134_.m_150930_(Items.f_42589_) || p_39134_.m_150930_(Items.f_42736_) || p_39134_.m_150930_(Items.f_42739_) || p_39134_.m_150930_(Items.f_42590_); + public static boolean mayPlaceItem(ItemStack p_39134_) { +- return p_39134_.is(Items.POTION) || p_39134_.is(Items.SPLASH_POTION) || p_39134_.is(Items.LINGERING_POTION) || p_39134_.is(Items.GLASS_BOTTLE); + return net.minecraftforge.common.brewing.BrewingRecipeRegistry.isValidInput(p_39134_); } } diff --git a/patches/minecraft/net/minecraft/world/inventory/EnchantmentMenu.java.patch b/patches/minecraft/net/minecraft/world/inventory/EnchantmentMenu.java.patch index 2bf3726132..e5140e8f8f 100644 --- a/patches/minecraft/net/minecraft/world/inventory/EnchantmentMenu.java.patch +++ b/patches/minecraft/net/minecraft/world/inventory/EnchantmentMenu.java.patch @@ -2,47 +2,47 @@ +++ b/net/minecraft/world/inventory/EnchantmentMenu.java @@ -54,7 +_,7 @@ }); - this.m_38897_(new Slot(this.f_39449_, 1, 35, 47) { - public boolean m_5857_(ItemStack p_39517_) { -- return p_39517_.m_150930_(Items.f_42534_); -+ return p_39517_.m_204117_(net.minecraftforge.common.Tags.Items.ENCHANTING_FUELS); + this.addSlot(new Slot(this.enchantSlots, 1, 35, 47) { + public boolean mayPlace(ItemStack p_39517_) { +- return p_39517_.is(Items.LAPIS_LAZULI); ++ return p_39517_.is(net.minecraftforge.common.Tags.Items.ENCHANTING_FUELS); } - public Pair m_7543_() { + public Pair getNoItemIcon() { @@ -89,23 +_,24 @@ - ItemStack itemstack = p_39461_.m_8020_(0); - if (!itemstack.m_41619_() && itemstack.m_41792_()) { - this.f_39450_.m_39292_((p_39485_, p_39486_) -> { + ItemStack itemstack = p_39461_.getItem(0); + if (!itemstack.isEmpty() && itemstack.isEnchantable()) { + this.access.execute((p_39485_, p_39486_) -> { - int j = 0; + float j = 0; - for(BlockPos blockpos : EnchantmentTableBlock.f_207902_) { - if (EnchantmentTableBlock.m_207909_(p_39485_, p_39486_, blockpos)) { + for(BlockPos blockpos : EnchantmentTableBlock.BOOKSHELF_OFFSETS) { + if (EnchantmentTableBlock.isValidBookShelf(p_39485_, p_39486_, blockpos)) { - ++j; -+ j += p_39485_.m_8055_(p_39486_.m_121955_(blockpos)).getEnchantPowerBonus(p_39485_, p_39486_.m_121955_(blockpos)); ++ j += p_39485_.getBlockState(p_39486_.offset(blockpos)).getEnchantPowerBonus(p_39485_, p_39486_.offset(blockpos)); } } - this.f_39451_.m_188584_((long)this.f_39452_.m_6501_()); + this.random.setSeed((long)this.enchantmentSeed.get()); for(int k = 0; k < 3; ++k) { -- this.f_39446_[k] = EnchantmentHelper.m_220287_(this.f_39451_, k, j, itemstack); -+ this.f_39446_[k] = EnchantmentHelper.m_220287_(this.f_39451_, k, (int)j, itemstack); - this.f_39447_[k] = -1; - this.f_39448_[k] = -1; - if (this.f_39446_[k] < k + 1) { - this.f_39446_[k] = 0; +- this.costs[k] = EnchantmentHelper.getEnchantmentCost(this.random, k, j, itemstack); ++ this.costs[k] = EnchantmentHelper.getEnchantmentCost(this.random, k, (int)j, itemstack); + this.enchantClue[k] = -1; + this.levelClue[k] = -1; + if (this.costs[k] < k + 1) { + this.costs[k] = 0; } -+ this.f_39446_[k] = net.minecraftforge.event.ForgeEventFactory.onEnchantmentLevelSet(p_39485_, p_39486_, k, (int)j, itemstack, f_39446_[k]); ++ this.costs[k] = net.minecraftforge.event.ForgeEventFactory.onEnchantmentLevelSet(p_39485_, p_39486_, k, (int)j, itemstack, costs[k]); } for(int l = 0; l < 3; ++l) { @@ -237,7 +_,7 @@ - if (!this.m_38903_(itemstack1, 2, 38, true)) { - return ItemStack.f_41583_; + if (!this.moveItemStackTo(itemstack1, 2, 38, true)) { + return ItemStack.EMPTY; } -- } else if (itemstack1.m_150930_(Items.f_42534_)) { -+ } else if (itemstack1.m_204117_(net.minecraftforge.common.Tags.Items.ENCHANTING_FUELS)) { - if (!this.m_38903_(itemstack1, 1, 2, true)) { - return ItemStack.f_41583_; +- } else if (itemstack1.is(Items.LAPIS_LAZULI)) { ++ } else if (itemstack1.is(net.minecraftforge.common.Tags.Items.ENCHANTING_FUELS)) { + if (!this.moveItemStackTo(itemstack1, 1, 2, true)) { + return ItemStack.EMPTY; } diff --git a/patches/minecraft/net/minecraft/world/inventory/FurnaceResultSlot.java.patch b/patches/minecraft/net/minecraft/world/inventory/FurnaceResultSlot.java.patch index 6df97e6451..b4b43a0dfb 100644 --- a/patches/minecraft/net/minecraft/world/inventory/FurnaceResultSlot.java.patch +++ b/patches/minecraft/net/minecraft/world/inventory/FurnaceResultSlot.java.patch @@ -3,7 +3,7 @@ @@ -48,5 +_,6 @@ } - this.f_39540_ = 0; -+ net.minecraftforge.event.ForgeEventFactory.firePlayerSmeltedEvent(this.f_39539_, p_39558_); + this.removeCount = 0; ++ net.minecraftforge.event.ForgeEventFactory.firePlayerSmeltedEvent(this.player, p_39558_); } } diff --git a/patches/minecraft/net/minecraft/world/inventory/GrindstoneMenu.java.patch b/patches/minecraft/net/minecraft/world/inventory/GrindstoneMenu.java.patch index 4aae0fe285..59554d14f4 100644 --- a/patches/minecraft/net/minecraft/world/inventory/GrindstoneMenu.java.patch +++ b/patches/minecraft/net/minecraft/world/inventory/GrindstoneMenu.java.patch @@ -3,87 +3,87 @@ @@ -34,6 +_,7 @@ } }; - private final ContainerLevelAccess f_39561_; + private final ContainerLevelAccess access; + private int xp = -1; public GrindstoneMenu(int p_39563_, Inventory p_39564_) { - this(p_39563_, p_39564_, ContainerLevelAccess.f_39287_); + this(p_39563_, p_39564_, ContainerLevelAccess.NULL); @@ -44,12 +_,12 @@ - this.f_39561_ = p_39568_; - this.m_38897_(new Slot(this.f_39560_, 0, 49, 19) { - public boolean m_5857_(ItemStack p_39607_) { -- return p_39607_.m_41763_() || p_39607_.m_150930_(Items.f_42690_) || p_39607_.m_41793_(); -+ return p_39607_.m_41763_() || p_39607_.m_150930_(Items.f_42690_) || p_39607_.m_41793_() || p_39607_.canGrindstoneRepair(); + this.access = p_39568_; + this.addSlot(new Slot(this.repairSlots, 0, 49, 19) { + public boolean mayPlace(ItemStack p_39607_) { +- return p_39607_.isDamageableItem() || p_39607_.is(Items.ENCHANTED_BOOK) || p_39607_.isEnchanted(); ++ return p_39607_.isDamageableItem() || p_39607_.is(Items.ENCHANTED_BOOK) || p_39607_.isEnchanted() || p_39607_.canGrindstoneRepair(); } }); - this.m_38897_(new Slot(this.f_39560_, 1, 49, 40) { - public boolean m_5857_(ItemStack p_39616_) { -- return p_39616_.m_41763_() || p_39616_.m_150930_(Items.f_42690_) || p_39616_.m_41793_(); -+ return p_39616_.m_41763_() || p_39616_.m_150930_(Items.f_42690_) || p_39616_.m_41793_() || p_39616_.canGrindstoneRepair(); + this.addSlot(new Slot(this.repairSlots, 1, 49, 40) { + public boolean mayPlace(ItemStack p_39616_) { +- return p_39616_.isDamageableItem() || p_39616_.is(Items.ENCHANTED_BOOK) || p_39616_.isEnchanted(); ++ return p_39616_.isDamageableItem() || p_39616_.is(Items.ENCHANTED_BOOK) || p_39616_.isEnchanted() || p_39616_.canGrindstoneRepair(); } }); - this.m_38897_(new Slot(this.f_39559_, 2, 129, 34) { + this.addSlot(new Slot(this.resultSlots, 2, 129, 34) { @@ -58,6 +_,7 @@ } - public void m_142406_(Player p_150574_, ItemStack p_150575_) { -+ if (net.minecraftforge.common.ForgeHooks.onGrindstoneTake(GrindstoneMenu.this.f_39560_, p_39568_, this::m_39631_)) return; - p_39568_.m_39292_((p_39634_, p_39635_) -> { + public void onTake(Player p_150574_, ItemStack p_150575_) { ++ if (net.minecraftforge.common.ForgeHooks.onGrindstoneTake(GrindstoneMenu.this.repairSlots, p_39568_, this::getExperienceAmount)) return; + p_39568_.execute((p_39634_, p_39635_) -> { if (p_39634_ instanceof ServerLevel) { - ExperienceOrb.m_147082_((ServerLevel)p_39634_, Vec3.m_82512_(p_39635_), this.m_39631_(p_39634_)); + ExperienceOrb.award((ServerLevel)p_39634_, Vec3.atCenterOf(p_39635_), this.getExperienceAmount(p_39634_)); @@ -70,6 +_,7 @@ } - private int m_39631_(Level p_39632_) { + private int getExperienceAmount(Level p_39632_) { + if (xp > -1) return xp; int l = 0; - l += this.m_39636_(GrindstoneMenu.this.f_39560_.m_8020_(0)); - l += this.m_39636_(GrindstoneMenu.this.f_39560_.m_8020_(1)); + l += this.getExperienceFromItem(GrindstoneMenu.this.repairSlots.getItem(0)); + l += this.getExperienceFromItem(GrindstoneMenu.this.repairSlots.getItem(1)); @@ -122,6 +_,8 @@ - ItemStack itemstack1 = this.f_39560_.m_8020_(1); - boolean flag = !itemstack.m_41619_() || !itemstack1.m_41619_(); - boolean flag1 = !itemstack.m_41619_() && !itemstack1.m_41619_(); -+ this.xp = net.minecraftforge.common.ForgeHooks.onGrindstoneChange(itemstack, itemstack1, this.f_39559_, -1); + ItemStack itemstack1 = this.repairSlots.getItem(1); + boolean flag = !itemstack.isEmpty() || !itemstack1.isEmpty(); + boolean flag1 = !itemstack.isEmpty() && !itemstack1.isEmpty(); ++ this.xp = net.minecraftforge.common.ForgeHooks.onGrindstoneChange(itemstack, itemstack1, this.resultSlots, -1); + if (this.xp == Integer.MIN_VALUE) if (!flag) { - this.f_39559_.m_6836_(0, ItemStack.f_41583_); + this.resultSlots.setItem(0, ItemStack.EMPTY); } else { @@ -143,12 +_,13 @@ } - Item item = itemstack.m_41720_(); -- int k = item.m_41462_() - itemstack.m_41773_(); -- int l = item.m_41462_() - itemstack1.m_41773_(); -- int i1 = k + l + item.m_41462_() * 5 / 100; -- i = Math.max(item.m_41462_() - i1, 0); -+ int k = itemstack.m_41776_() - itemstack.m_41773_(); -+ int l = itemstack.m_41776_() - itemstack1.m_41773_(); -+ int i1 = k + l + itemstack.m_41776_() * 5 / 100; -+ i = Math.max(itemstack.m_41776_() - i1, 0); - itemstack2 = this.m_39590_(itemstack, itemstack1); -- if (!itemstack2.m_41763_()) { -+ if (!itemstack2.isRepairable()) i = itemstack.m_41773_(); -+ if (!itemstack2.m_41763_() || !itemstack2.isRepairable()) { - if (!ItemStack.m_41728_(itemstack, itemstack1)) { - this.f_39559_.m_6836_(0, ItemStack.f_41583_); - this.m_38946_(); + Item item = itemstack.getItem(); +- int k = item.getMaxDamage() - itemstack.getDamageValue(); +- int l = item.getMaxDamage() - itemstack1.getDamageValue(); +- int i1 = k + l + item.getMaxDamage() * 5 / 100; +- i = Math.max(item.getMaxDamage() - i1, 0); ++ int k = itemstack.getMaxDamage() - itemstack.getDamageValue(); ++ int l = itemstack.getMaxDamage() - itemstack1.getDamageValue(); ++ int i1 = k + l + itemstack.getMaxDamage() * 5 / 100; ++ i = Math.max(itemstack.getMaxDamage() - i1, 0); + itemstack2 = this.mergeEnchants(itemstack, itemstack1); +- if (!itemstack2.isDamageableItem()) { ++ if (!itemstack2.isRepairable()) i = itemstack.getDamageValue(); ++ if (!itemstack2.isDamageableItem() || !itemstack2.isRepairable()) { + if (!ItemStack.matches(itemstack, itemstack1)) { + this.resultSlots.setItem(0, ItemStack.EMPTY); + this.broadcastChanges(); @@ -163,6 +_,10 @@ itemstack2 = flag3 ? itemstack : itemstack1; } + // Forge: Skip the repair if the result would give an item stack with a count not normally obtainable -+ if (j > itemstack2.m_41741_()) -+ this.f_39559_.m_6836_(0, ItemStack.f_41583_); ++ if (j > itemstack2.getMaxStackSize()) ++ this.resultSlots.setItem(0, ItemStack.EMPTY); + else - this.f_39559_.m_6836_(0, this.m_39579_(itemstack2, i, j)); + this.resultSlots.setItem(0, this.removeNonCurses(itemstack2, i, j)); } @@ -175,7 +_,7 @@ for(Map.Entry entry : map.entrySet()) { Enchantment enchantment = entry.getKey(); -- if (!enchantment.m_6589_() || EnchantmentHelper.m_44843_(enchantment, itemstack) == 0) { -+ if (!enchantment.m_6589_() || EnchantmentHelper.getTagEnchantmentLevel(enchantment, itemstack) == 0) { - itemstack.m_41663_(enchantment, entry.getValue()); +- if (!enchantment.isCurse() || EnchantmentHelper.getItemEnchantmentLevel(enchantment, itemstack) == 0) { ++ if (!enchantment.isCurse() || EnchantmentHelper.getTagEnchantmentLevel(enchantment, itemstack) == 0) { + itemstack.enchant(enchantment, entry.getValue()); } } diff --git a/patches/minecraft/net/minecraft/world/inventory/InventoryMenu.java.patch b/patches/minecraft/net/minecraft/world/inventory/InventoryMenu.java.patch index 48f35abf93..c591f06e00 100644 --- a/patches/minecraft/net/minecraft/world/inventory/InventoryMenu.java.patch +++ b/patches/minecraft/net/minecraft/world/inventory/InventoryMenu.java.patch @@ -3,9 +3,9 @@ @@ -63,7 +_,7 @@ } - public boolean m_5857_(ItemStack p_39746_) { -- return equipmentslot == Mob.m_147233_(p_39746_); -+ return p_39746_.canEquip(equipmentslot, f_39703_); + public boolean mayPlace(ItemStack p_39746_) { +- return equipmentslot == Mob.getEquipmentSlotForItem(p_39746_); ++ return p_39746_.canEquip(equipmentslot, owner); } - public boolean m_8010_(Player p_39744_) { + public boolean mayPickup(Player p_39744_) { diff --git a/patches/minecraft/net/minecraft/world/inventory/MenuType.java.patch b/patches/minecraft/net/minecraft/world/inventory/MenuType.java.patch index 5060610832..0928db0eac 100644 --- a/patches/minecraft/net/minecraft/world/inventory/MenuType.java.patch +++ b/patches/minecraft/net/minecraft/world/inventory/MenuType.java.patch @@ -6,21 +6,21 @@ -public class MenuType implements FeatureElement { +public class MenuType implements FeatureElement, net.minecraftforge.common.extensions.IForgeMenuType { - public static final MenuType f_39957_ = m_39988_("generic_9x1", ChestMenu::m_39234_); - public static final MenuType f_39958_ = m_39988_("generic_9x2", ChestMenu::m_39243_); - public static final MenuType f_39959_ = m_39988_("generic_9x3", ChestMenu::m_39255_); + public static final MenuType GENERIC_9x1 = register("generic_9x1", ChestMenu::oneRow); + public static final MenuType GENERIC_9x2 = register("generic_9x2", ChestMenu::twoRows); + public static final MenuType GENERIC_9x3 = register("generic_9x3", ChestMenu::threeRows); @@ -53,6 +_,14 @@ - public T m_39985_(int p_39986_, Inventory p_39987_) { - return this.f_39981_.m_39994_(p_39986_, p_39987_); + public T create(int p_39986_, Inventory p_39987_) { + return this.constructor.create(p_39986_, p_39987_); + } + + @Override + public T create(int windowId, Inventory playerInv, net.minecraft.network.FriendlyByteBuf extraData) { -+ if (this.f_39981_ instanceof net.minecraftforge.network.IContainerFactory ctr) { ++ if (this.constructor instanceof net.minecraftforge.network.IContainerFactory ctr) { + return ctr.create(windowId, playerInv, extraData); + } -+ return m_39985_(windowId, playerInv); ++ return create(windowId, playerInv); } - public FeatureFlagSet m_245183_() { + public FeatureFlagSet requiredFeatures() { diff --git a/patches/minecraft/net/minecraft/world/inventory/RecipeBookMenu.java.patch b/patches/minecraft/net/minecraft/world/inventory/RecipeBookMenu.java.patch index 618cad11cf..4a13fa7c36 100644 --- a/patches/minecraft/net/minecraft/world/inventory/RecipeBookMenu.java.patch +++ b/patches/minecraft/net/minecraft/world/inventory/RecipeBookMenu.java.patch @@ -2,12 +2,12 @@ +++ b/net/minecraft/world/inventory/RecipeBookMenu.java @@ -30,6 +_,10 @@ - public abstract int m_6653_(); + public abstract int getSize(); + public java.util.List getRecipeBookCategories() { -+ return net.minecraft.client.RecipeBookCategories.m_92269_(this.m_5867_()); ++ return net.minecraft.client.RecipeBookCategories.getCategories(this.getRecipeBookType()); + } + - public abstract RecipeBookType m_5867_(); + public abstract RecipeBookType getRecipeBookType(); - public abstract boolean m_142157_(int p_150635_); + public abstract boolean shouldMoveToInventory(int p_150635_); diff --git a/patches/minecraft/net/minecraft/world/inventory/ResultSlot.java.patch b/patches/minecraft/net/minecraft/world/inventory/ResultSlot.java.patch index e37cf3a6c3..9189405d41 100644 --- a/patches/minecraft/net/minecraft/world/inventory/ResultSlot.java.patch +++ b/patches/minecraft/net/minecraft/world/inventory/ResultSlot.java.patch @@ -1,21 +1,21 @@ --- a/net/minecraft/world/inventory/ResultSlot.java +++ b/net/minecraft/world/inventory/ResultSlot.java @@ -41,6 +_,7 @@ - protected void m_5845_(ItemStack p_40185_) { - if (this.f_40164_ > 0) { - p_40185_.m_41678_(this.f_40163_.m_9236_(), this.f_40163_, this.f_40164_); -+ net.minecraftforge.event.ForgeEventFactory.firePlayerCraftingEvent(this.f_40163_, p_40185_, this.f_40162_); + protected void checkTakeAchievements(ItemStack p_40185_) { + if (this.removeCount > 0) { + p_40185_.onCraftedBy(this.player.level(), this.player, this.removeCount); ++ net.minecraftforge.event.ForgeEventFactory.firePlayerCraftingEvent(this.player, p_40185_, this.craftSlots); } - Container container = this.f_40218_; + Container container = this.container; @@ -53,8 +_,9 @@ - public void m_142406_(Player p_150638_, ItemStack p_150639_) { - this.m_5845_(p_150639_); + public void onTake(Player p_150638_, ItemStack p_150639_) { + this.checkTakeAchievements(p_150639_); + net.minecraftforge.common.ForgeHooks.setCraftingPlayer(p_150638_); - NonNullList nonnulllist = p_150638_.m_9236_().m_7465_().m_44069_(RecipeType.f_44107_, this.f_40162_, p_150638_.m_9236_()); + NonNullList nonnulllist = p_150638_.level().getRecipeManager().getRemainingItemsFor(RecipeType.CRAFTING, this.craftSlots, p_150638_.level()); - + net.minecraftforge.common.ForgeHooks.setCraftingPlayer(null); for(int i = 0; i < nonnulllist.size(); ++i) { - ItemStack itemstack = this.f_40162_.m_8020_(i); + ItemStack itemstack = this.craftSlots.getItem(i); ItemStack itemstack1 = nonnulllist.get(i); diff --git a/patches/minecraft/net/minecraft/world/inventory/Slot.java.patch b/patches/minecraft/net/minecraft/world/inventory/Slot.java.patch index 4c9fe07e52..1395c79383 100644 --- a/patches/minecraft/net/minecraft/world/inventory/Slot.java.patch +++ b/patches/minecraft/net/minecraft/world/inventory/Slot.java.patch @@ -3,15 +3,15 @@ @@ -82,7 +_,7 @@ @Nullable - public Pair m_7543_() { + public Pair getNoItemIcon() { - return null; + return backgroundPair; } - public ItemStack m_6201_(int p_40227_) { + public ItemStack remove(int p_40227_) { @@ -95,6 +_,38 @@ - public boolean m_6659_() { + public boolean isActive() { return true; + } + @@ -22,7 +22,7 @@ + * @return Index in associated inventory for this slot. + */ + public int getSlotIndex() { -+ return f_40217_; ++ return slot; + } + + /** @@ -31,7 +31,7 @@ + * @return true if the other slot is in the same inventory + */ + public boolean isSameInventory(Slot other) { -+ return this.f_40218_ == other.f_40218_; ++ return this.container == other.container; + } + + private Pair backgroundPair; @@ -47,4 +47,4 @@ + return this; } - public Optional m_150641_(int p_150642_, int p_150643_, Player p_150644_) { + public Optional tryRemove(int p_150642_, int p_150643_, Player p_150644_) { diff --git a/patches/minecraft/net/minecraft/world/item/ArmorItem.java.patch b/patches/minecraft/net/minecraft/world/item/ArmorItem.java.patch index 5568942694..306b63d17b 100644 --- a/patches/minecraft/net/minecraft/world/item/ArmorItem.java.patch +++ b/patches/minecraft/net/minecraft/world/item/ArmorItem.java.patch @@ -1,11 +1,11 @@ --- a/net/minecraft/world/item/ArmorItem.java +++ b/net/minecraft/world/item/ArmorItem.java @@ -75,7 +_,7 @@ - UUID uuid = f_265987_.get(p_266831_); - builder.put(Attributes.f_22284_, new AttributeModifier(uuid, "Armor modifier", (double)this.f_40381_, AttributeModifier.Operation.ADDITION)); - builder.put(Attributes.f_22285_, new AttributeModifier(uuid, "Armor toughness", (double)this.f_40382_, AttributeModifier.Operation.ADDITION)); + UUID uuid = ARMOR_MODIFIER_UUID_PER_TYPE.get(p_266831_); + builder.put(Attributes.ARMOR, new AttributeModifier(uuid, "Armor modifier", (double)this.defense, AttributeModifier.Operation.ADDITION)); + builder.put(Attributes.ARMOR_TOUGHNESS, new AttributeModifier(uuid, "Armor toughness", (double)this.toughness, AttributeModifier.Operation.ADDITION)); - if (p_40386_ == ArmorMaterials.NETHERITE) { -+ if (this.f_40378_ > 0) { - builder.put(Attributes.f_22278_, new AttributeModifier(uuid, "Armor knockback resistance", (double)this.f_40378_, AttributeModifier.Operation.ADDITION)); ++ if (this.knockbackResistance > 0) { + builder.put(Attributes.KNOCKBACK_RESISTANCE, new AttributeModifier(uuid, "Armor knockback resistance", (double)this.knockbackResistance, AttributeModifier.Operation.ADDITION)); } diff --git a/patches/minecraft/net/minecraft/world/item/ArrowItem.java.patch b/patches/minecraft/net/minecraft/world/item/ArrowItem.java.patch index 20d8edb167..bf69e086b5 100644 --- a/patches/minecraft/net/minecraft/world/item/ArrowItem.java.patch +++ b/patches/minecraft/net/minecraft/world/item/ArrowItem.java.patch @@ -1,12 +1,12 @@ --- a/net/minecraft/world/item/ArrowItem.java +++ b/net/minecraft/world/item/ArrowItem.java @@ -15,4 +_,9 @@ - arrow.m_36878_(p_40514_); + arrow.setEffectsFromItem(p_40514_); return arrow; } + + public boolean isInfinite(ItemStack stack, ItemStack bow, net.minecraft.world.entity.player.Player player) { -+ int enchant = net.minecraft.world.item.enchantment.EnchantmentHelper.m_44843_(net.minecraft.world.item.enchantment.Enchantments.f_44952_, bow); ++ int enchant = net.minecraft.world.item.enchantment.EnchantmentHelper.getItemEnchantmentLevel(net.minecraft.world.item.enchantment.Enchantments.INFINITY_ARROWS, bow); + return enchant <= 0 ? false : this.getClass() == ArrowItem.class; + } } diff --git a/patches/minecraft/net/minecraft/world/item/AxeItem.java.patch b/patches/minecraft/net/minecraft/world/item/AxeItem.java.patch index b0952a92ee..7e8e1661ba 100644 --- a/patches/minecraft/net/minecraft/world/item/AxeItem.java.patch +++ b/patches/minecraft/net/minecraft/world/item/AxeItem.java.patch @@ -1,18 +1,18 @@ --- a/net/minecraft/world/item/AxeItem.java +++ b/net/minecraft/world/item/AxeItem.java @@ -32,11 +_,9 @@ - BlockPos blockpos = p_40529_.m_8083_(); - Player player = p_40529_.m_43723_(); - BlockState blockstate = level.m_8055_(blockpos); -- Optional optional = this.m_150690_(blockstate); -- Optional optional1 = WeatheringCopper.m_154899_(blockstate); -- Optional optional2 = Optional.ofNullable(HoneycombItem.f_150864_.get().get(blockstate.m_60734_())).map((p_150694_) -> { -- return p_150694_.m_152465_(blockstate); + BlockPos blockpos = p_40529_.getClickedPos(); + Player player = p_40529_.getPlayer(); + BlockState blockstate = level.getBlockState(blockpos); +- Optional optional = this.getStripped(blockstate); +- Optional optional1 = WeatheringCopper.getPrevious(blockstate); +- Optional optional2 = Optional.ofNullable(HoneycombItem.WAX_OFF_BY_BLOCK.get().get(blockstate.getBlock())).map((p_150694_) -> { +- return p_150694_.withPropertiesOf(blockstate); - }); + Optional optional = Optional.ofNullable(blockstate.getToolModifiedState(p_40529_, net.minecraftforge.common.ToolActions.AXE_STRIP, false)); + Optional optional1 = optional.isPresent() ? Optional.empty() : Optional.ofNullable(blockstate.getToolModifiedState(p_40529_, net.minecraftforge.common.ToolActions.AXE_SCRAPE, false)); + Optional optional2 = optional.isPresent() || optional1.isPresent() ? Optional.empty() : Optional.ofNullable(blockstate.getToolModifiedState(p_40529_, net.minecraftforge.common.ToolActions.AXE_WAX_OFF, false)); - ItemStack itemstack = p_40529_.m_43722_(); + ItemStack itemstack = p_40529_.getItemInHand(); Optional optional3 = Optional.empty(); if (optional.isPresent()) { @@ -71,9 +_,20 @@ @@ -21,13 +21,13 @@ + @org.jetbrains.annotations.Nullable + public static BlockState getAxeStrippingState(BlockState originalState) { -+ Block block = f_150683_.get(originalState.m_60734_()); -+ return block != null ? block.m_49966_().m_61124_(RotatedPillarBlock.f_55923_, originalState.m_61143_(RotatedPillarBlock.f_55923_)) : null; ++ Block block = STRIPPABLES.get(originalState.getBlock()); ++ return block != null ? block.defaultBlockState().setValue(RotatedPillarBlock.AXIS, originalState.getValue(RotatedPillarBlock.AXIS)) : null; + } + - private Optional m_150690_(BlockState p_150691_) { - return Optional.ofNullable(f_150683_.get(p_150691_.m_60734_())).map((p_150689_) -> { - return p_150689_.m_49966_().m_61124_(RotatedPillarBlock.f_55923_, p_150691_.m_61143_(RotatedPillarBlock.f_55923_)); + private Optional getStripped(BlockState p_150691_) { + return Optional.ofNullable(STRIPPABLES.get(p_150691_.getBlock())).map((p_150689_) -> { + return p_150689_.defaultBlockState().setValue(RotatedPillarBlock.AXIS, p_150691_.getValue(RotatedPillarBlock.AXIS)); }); + } + diff --git a/patches/minecraft/net/minecraft/world/item/BannerItem.java.patch b/patches/minecraft/net/minecraft/world/item/BannerItem.java.patch index 50184b8a2d..fbdd92a340 100644 --- a/patches/minecraft/net/minecraft/world/item/BannerItem.java.patch +++ b/patches/minecraft/net/minecraft/world/item/BannerItem.java.patch @@ -1,12 +1,12 @@ --- a/net/minecraft/world/item/BannerItem.java +++ b/net/minecraft/world/item/BannerItem.java @@ -36,7 +_,8 @@ - holder.m_203543_().map((p_220002_) -> { - return p_220002_.m_135782_().m_214299_(); + holder.unwrapKey().map((p_220002_) -> { + return p_220002_.location().toShortLanguageKey(); }).ifPresent((p_220006_) -> { -- p_40544_.add(Component.m_237115_("block.minecraft.banner." + p_220006_ + "." + dyecolor.m_41065_()).m_130940_(ChatFormatting.GRAY)); +- p_40544_.add(Component.translatable("block.minecraft.banner." + p_220006_ + "." + dyecolor.getName()).withStyle(ChatFormatting.GRAY)); + net.minecraft.resources.ResourceLocation fileLoc = new net.minecraft.resources.ResourceLocation(p_220006_); -+ p_40544_.add(Component.m_237115_("block." + fileLoc.m_135827_() + ".banner." + fileLoc.m_135815_() + "." + dyecolor.m_41065_()).m_130940_(ChatFormatting.GRAY)); ++ p_40544_.add(Component.translatable("block." + fileLoc.getNamespace() + ".banner." + fileLoc.getPath() + "." + dyecolor.getName()).withStyle(ChatFormatting.GRAY)); }); } } diff --git a/patches/minecraft/net/minecraft/world/item/BlockItem.java.patch b/patches/minecraft/net/minecraft/world/item/BlockItem.java.patch index 95adade708..64ae4fe29b 100644 --- a/patches/minecraft/net/minecraft/world/item/BlockItem.java.patch +++ b/patches/minecraft/net/minecraft/world/item/BlockItem.java.patch @@ -4,47 +4,47 @@ } } -- SoundType soundtype = blockstate1.m_60827_(); -- level.m_5594_(player, blockpos, this.m_40587_(blockstate1), SoundSource.BLOCKS, (soundtype.m_56773_() + 1.0F) / 2.0F, soundtype.m_56774_() * 0.8F); -+ SoundType soundtype = blockstate1.getSoundType(level, blockpos, p_40577_.m_43723_()); -+ level.m_5594_(player, blockpos, this.getPlaceSound(blockstate1, level, blockpos, p_40577_.m_43723_()), SoundSource.BLOCKS, (soundtype.m_56773_() + 1.0F) / 2.0F, soundtype.m_56774_() * 0.8F); - level.m_220407_(GameEvent.f_157797_, blockpos, GameEvent.Context.m_223719_(player, blockstate1)); - if (player == null || !player.m_150110_().f_35937_) { - itemstack.m_41774_(1); +- SoundType soundtype = blockstate1.getSoundType(); +- level.playSound(player, blockpos, this.getPlaceSound(blockstate1), SoundSource.BLOCKS, (soundtype.getVolume() + 1.0F) / 2.0F, soundtype.getPitch() * 0.8F); ++ SoundType soundtype = blockstate1.getSoundType(level, blockpos, p_40577_.getPlayer()); ++ level.playSound(player, blockpos, this.getPlaceSound(blockstate1, level, blockpos, p_40577_.getPlayer()), SoundSource.BLOCKS, (soundtype.getVolume() + 1.0F) / 2.0F, soundtype.getPitch() * 0.8F); + level.gameEvent(GameEvent.BLOCK_PLACE, blockpos, GameEvent.Context.of(player, blockstate1)); + if (player == null || !player.getAbilities().instabuild) { + itemstack.shrink(1); @@ -95,10 +_,16 @@ } } + @Deprecated //Forge: Use more sensitive version {@link BlockItem#getPlaceSound(BlockState, IBlockReader, BlockPos, Entity) } - protected SoundEvent m_40587_(BlockState p_40588_) { - return p_40588_.m_60827_().m_56777_(); + protected SoundEvent getPlaceSound(BlockState p_40588_) { + return p_40588_.getSoundType().getPlaceSound(); } + //Forge: Sensitive version of BlockItem#getPlaceSound + protected SoundEvent getPlaceSound(BlockState state, Level world, BlockPos pos, Player entity) { -+ return state.getSoundType(world, pos, entity).m_56777_(); ++ return state.getSoundType(world, pos, entity).getPlaceSound(); + } + @Nullable - public BlockPlaceContext m_7732_(BlockPlaceContext p_40609_) { + public BlockPlaceContext updatePlacementContext(BlockPlaceContext p_40609_) { return p_40609_; @@ -195,11 +_,19 @@ } - public Block m_40614_() { + public Block getBlock() { + return this.getBlockRaw() == null ? null : net.minecraftforge.registries.ForgeRegistries.BLOCKS.getDelegateOrThrow(this.getBlockRaw()).get(); + } + + private Block getBlockRaw() { - return this.f_40563_; + return this.block; } - public void m_6192_(Map p_40607_, Item p_40608_) { - p_40607_.put(this.m_40614_(), p_40608_); + public void registerBlocks(Map p_40607_, Item p_40608_) { + p_40607_.put(this.getBlock(), p_40608_); + } + + public void removeFromBlockToItemMap(Map blockToItemMap, Item itemIn) { -+ blockToItemMap.remove(this.m_40614_()); ++ blockToItemMap.remove(this.getBlock()); } - public boolean m_142095_() { + public boolean canFitInsideContainerItems() { diff --git a/patches/minecraft/net/minecraft/world/item/BoneMealItem.java.patch b/patches/minecraft/net/minecraft/world/item/BoneMealItem.java.patch index 9de9503ef2..ab889ccd10 100644 --- a/patches/minecraft/net/minecraft/world/item/BoneMealItem.java.patch +++ b/patches/minecraft/net/minecraft/world/item/BoneMealItem.java.patch @@ -1,29 +1,29 @@ --- a/net/minecraft/world/item/BoneMealItem.java +++ b/net/minecraft/world/item/BoneMealItem.java @@ -35,7 +_,7 @@ - Level level = p_40637_.m_43725_(); - BlockPos blockpos = p_40637_.m_8083_(); - BlockPos blockpos1 = blockpos.m_121945_(p_40637_.m_43719_()); -- if (m_40627_(p_40637_.m_43722_(), level, blockpos)) { -+ if (applyBonemeal(p_40637_.m_43722_(), level, blockpos, p_40637_.m_43723_())) { - if (!level.f_46443_) { - p_40637_.m_43723_().m_146850_(GameEvent.f_223697_); - level.m_46796_(1505, blockpos, 0); + Level level = p_40637_.getLevel(); + BlockPos blockpos = p_40637_.getClickedPos(); + BlockPos blockpos1 = blockpos.relative(p_40637_.getClickedFace()); +- if (growCrop(p_40637_.getItemInHand(), level, blockpos)) { ++ if (applyBonemeal(p_40637_.getItemInHand(), level, blockpos, p_40637_.getPlayer())) { + if (!level.isClientSide) { + p_40637_.getPlayer().gameEvent(GameEvent.ITEM_INTERACT_FINISH); + level.levelEvent(1505, blockpos, 0); @@ -58,8 +_,17 @@ } } + @Deprecated //Forge: Use Player/Hand version - public static boolean m_40627_(ItemStack p_40628_, Level p_40629_, BlockPos p_40630_) { + public static boolean growCrop(ItemStack p_40628_, Level p_40629_, BlockPos p_40630_) { + if (p_40629_ instanceof net.minecraft.server.level.ServerLevel) + return applyBonemeal(p_40628_, p_40629_, p_40630_, net.minecraftforge.common.util.FakePlayerFactory.getMinecraft((net.minecraft.server.level.ServerLevel)p_40629_)); + return false; + } + + public static boolean applyBonemeal(ItemStack p_40628_, Level p_40629_, BlockPos p_40630_, net.minecraft.world.entity.player.Player player) { - BlockState blockstate = p_40629_.m_8055_(p_40630_); + BlockState blockstate = p_40629_.getBlockState(p_40630_); + int hook = net.minecraftforge.event.ForgeEventFactory.onApplyBonemeal(player, p_40629_, p_40630_, blockstate, p_40628_); + if (hook != 0) return hook > 0; - Block block = blockstate.m_60734_(); + Block block = blockstate.getBlock(); if (block instanceof BonemealableBlock bonemealableblock) { - if (bonemealableblock.m_7370_(p_40629_, p_40630_, blockstate)) { + if (bonemealableblock.isValidBonemealTarget(p_40629_, p_40630_, blockstate)) { diff --git a/patches/minecraft/net/minecraft/world/item/BowItem.java.patch b/patches/minecraft/net/minecraft/world/item/BowItem.java.patch index 1b5b224fd2..9c79a930a1 100644 --- a/patches/minecraft/net/minecraft/world/item/BowItem.java.patch +++ b/patches/minecraft/net/minecraft/world/item/BowItem.java.patch @@ -2,49 +2,49 @@ +++ b/net/minecraft/world/item/BowItem.java @@ -25,18 +_,23 @@ if (p_40669_ instanceof Player player) { - boolean flag = player.m_150110_().f_35937_ || EnchantmentHelper.m_44843_(Enchantments.f_44952_, p_40667_) > 0; - ItemStack itemstack = player.m_6298_(p_40667_); + boolean flag = player.getAbilities().instabuild || EnchantmentHelper.getItemEnchantmentLevel(Enchantments.INFINITY_ARROWS, p_40667_) > 0; + ItemStack itemstack = player.getProjectile(p_40667_); + -+ int i = this.m_8105_(p_40667_) - p_40670_; -+ i = net.minecraftforge.event.ForgeEventFactory.onArrowLoose(p_40667_, p_40668_, player, i, !itemstack.m_41619_() || flag); ++ int i = this.getUseDuration(p_40667_) - p_40670_; ++ i = net.minecraftforge.event.ForgeEventFactory.onArrowLoose(p_40667_, p_40668_, player, i, !itemstack.isEmpty() || flag); + if (i < 0) return; + - if (!itemstack.m_41619_() || flag) { - if (itemstack.m_41619_()) { - itemstack = new ItemStack(Items.f_42412_); + if (!itemstack.isEmpty() || flag) { + if (itemstack.isEmpty()) { + itemstack = new ItemStack(Items.ARROW); } -- int i = this.m_8105_(p_40667_) - p_40670_; - float f = m_40661_(i); +- int i = this.getUseDuration(p_40667_) - p_40670_; + float f = getPowerForTime(i); if (!((double)f < 0.1D)) { -- boolean flag1 = flag && itemstack.m_150930_(Items.f_42412_); -+ boolean flag1 = player.m_150110_().f_35937_ || (itemstack.m_41720_() instanceof ArrowItem && ((ArrowItem)itemstack.m_41720_()).isInfinite(itemstack, p_40667_, player)); - if (!p_40668_.f_46443_) { - ArrowItem arrowitem = (ArrowItem)(itemstack.m_41720_() instanceof ArrowItem ? itemstack.m_41720_() : Items.f_42412_); - AbstractArrow abstractarrow = arrowitem.m_6394_(p_40668_, itemstack, player); +- boolean flag1 = flag && itemstack.is(Items.ARROW); ++ boolean flag1 = player.getAbilities().instabuild || (itemstack.getItem() instanceof ArrowItem && ((ArrowItem)itemstack.getItem()).isInfinite(itemstack, p_40667_, player)); + if (!p_40668_.isClientSide) { + ArrowItem arrowitem = (ArrowItem)(itemstack.getItem() instanceof ArrowItem ? itemstack.getItem() : Items.ARROW); + AbstractArrow abstractarrow = arrowitem.createArrow(p_40668_, itemstack, player); + abstractarrow = customArrow(abstractarrow); - abstractarrow.m_37251_(player, player.m_146909_(), player.m_146908_(), 0.0F, f * 3.0F, 1.0F); + abstractarrow.shootFromRotation(player, player.getXRot(), player.getYRot(), 0.0F, f * 3.0F, 1.0F); if (f == 1.0F) { - abstractarrow.m_36762_(true); + abstractarrow.setCritArrow(true); @@ -101,6 +_,10 @@ - public InteractionResultHolder m_7203_(Level p_40672_, Player p_40673_, InteractionHand p_40674_) { - ItemStack itemstack = p_40673_.m_21120_(p_40674_); - boolean flag = !p_40673_.m_6298_(itemstack).m_41619_(); + public InteractionResultHolder use(Level p_40672_, Player p_40673_, InteractionHand p_40674_) { + ItemStack itemstack = p_40673_.getItemInHand(p_40674_); + boolean flag = !p_40673_.getProjectile(itemstack).isEmpty(); + + InteractionResultHolder ret = net.minecraftforge.event.ForgeEventFactory.onArrowNock(itemstack, p_40672_, p_40673_, p_40674_, flag); + if (ret != null) return ret; + - if (!p_40673_.m_150110_().f_35937_ && !flag) { - return InteractionResultHolder.m_19100_(itemstack); + if (!p_40673_.getAbilities().instabuild && !flag) { + return InteractionResultHolder.fail(itemstack); } else { @@ -111,6 +_,10 @@ - public Predicate m_6437_() { - return f_43005_; + public Predicate getAllSupportedProjectiles() { + return ARROW_ONLY; + } + + public AbstractArrow customArrow(AbstractArrow arrow) { + return arrow; } - public int m_6615_() { + public int getDefaultProjectileRange() { diff --git a/patches/minecraft/net/minecraft/world/item/BucketItem.java.patch b/patches/minecraft/net/minecraft/world/item/BucketItem.java.patch index c62e8c731a..4172e792a4 100644 --- a/patches/minecraft/net/minecraft/world/item/BucketItem.java.patch +++ b/patches/minecraft/net/minecraft/world/item/BucketItem.java.patch @@ -2,13 +2,13 @@ +++ b/net/minecraft/world/item/BucketItem.java @@ -31,14 +_,28 @@ public class BucketItem extends Item implements DispensibleContainerItem { - private final Fluid f_40687_; + private final Fluid content; + // Forge: Use the other constructor that takes a Supplier + @Deprecated public BucketItem(Fluid p_40689_, Item.Properties p_40690_) { super(p_40690_); - this.f_40687_ = p_40689_; + this.content = p_40689_; + this.fluidSupplier = net.minecraftforge.registries.ForgeRegistries.FLUIDS.getDelegateOrThrow(p_40689_); + } + @@ -17,49 +17,49 @@ + */ + public BucketItem(java.util.function.Supplier supplier, Item.Properties builder) { + super(builder); -+ this.f_40687_ = null; ++ this.content = null; + this.fluidSupplier = supplier; } - public InteractionResultHolder m_7203_(Level p_40703_, Player p_40704_, InteractionHand p_40705_) { - ItemStack itemstack = p_40704_.m_21120_(p_40705_); - BlockHitResult blockhitresult = m_41435_(p_40703_, p_40704_, this.f_40687_ == Fluids.f_76191_ ? ClipContext.Fluid.SOURCE_ONLY : ClipContext.Fluid.NONE); + public InteractionResultHolder use(Level p_40703_, Player p_40704_, InteractionHand p_40705_) { + ItemStack itemstack = p_40704_.getItemInHand(p_40705_); + BlockHitResult blockhitresult = getPlayerPOVHitResult(p_40703_, p_40704_, this.content == Fluids.EMPTY ? ClipContext.Fluid.SOURCE_ONLY : ClipContext.Fluid.NONE); + InteractionResultHolder ret = net.minecraftforge.event.ForgeEventFactory.onBucketUse(p_40704_, p_40703_, itemstack, blockhitresult); + if (ret != null) return ret; - if (blockhitresult.m_6662_() == HitResult.Type.MISS) { - return InteractionResultHolder.m_19098_(itemstack); - } else if (blockhitresult.m_6662_() != HitResult.Type.BLOCK) { + if (blockhitresult.getType() == HitResult.Type.MISS) { + return InteractionResultHolder.pass(itemstack); + } else if (blockhitresult.getType() != HitResult.Type.BLOCK) { @@ -56,7 +_,7 @@ - ItemStack itemstack2 = bucketpickup.m_142598_(p_40704_, p_40703_, blockpos, blockstate1); - if (!itemstack2.m_41619_()) { - p_40704_.m_36246_(Stats.f_12982_.m_12902_(this)); -- bucketpickup.m_142298_().ifPresent((p_150709_) -> { + ItemStack itemstack2 = bucketpickup.pickupBlock(p_40704_, p_40703_, blockpos, blockstate1); + if (!itemstack2.isEmpty()) { + p_40704_.awardStat(Stats.ITEM_USED.get(this)); +- bucketpickup.getPickupSound().ifPresent((p_150709_) -> { + bucketpickup.getPickupSound(blockstate1).ifPresent((p_150709_) -> { - p_40704_.m_5496_(p_150709_, 1.0F, 1.0F); + p_40704_.playSound(p_150709_, 1.0F, 1.0F); }); - p_40703_.m_142346_(p_40704_, GameEvent.f_157816_, blockpos); + p_40703_.gameEvent(p_40704_, GameEvent.FLUID_PICKUP, blockpos); @@ -72,8 +_,8 @@ - return InteractionResultHolder.m_19100_(itemstack); + return InteractionResultHolder.fail(itemstack); } else { - BlockState blockstate = p_40703_.m_8055_(blockpos); -- BlockPos blockpos2 = blockstate.m_60734_() instanceof LiquidBlockContainer && this.f_40687_ == Fluids.f_76193_ ? blockpos : blockpos1; -- if (this.m_142073_(p_40704_, p_40703_, blockpos2, blockhitresult)) { + BlockState blockstate = p_40703_.getBlockState(blockpos); +- BlockPos blockpos2 = blockstate.getBlock() instanceof LiquidBlockContainer && this.content == Fluids.WATER ? blockpos : blockpos1; +- if (this.emptyContents(p_40704_, p_40703_, blockpos2, blockhitresult)) { + BlockPos blockpos2 = canBlockContainFluid(p_40703_, blockpos, blockstate) ? blockpos : blockpos1; + if (this.emptyContents(p_40704_, p_40703_, blockpos2, blockhitresult, itemstack)) { - this.m_142131_(p_40704_, p_40703_, itemstack, blockpos2); + this.checkExtraContent(p_40704_, p_40703_, itemstack, blockpos2); if (p_40704_ instanceof ServerPlayer) { - CriteriaTriggers.f_10591_.m_285767_((ServerPlayer)p_40704_, blockpos2, itemstack); + CriteriaTriggers.PLACED_BLOCK.trigger((ServerPlayer)p_40704_, blockpos2, itemstack); @@ -98,7 +_,12 @@ - public void m_142131_(@Nullable Player p_150711_, Level p_150712_, ItemStack p_150713_, BlockPos p_150714_) { + public void checkExtraContent(@Nullable Player p_150711_, Level p_150712_, ItemStack p_150713_, BlockPos p_150714_) { } + @Deprecated //Forge: use the ItemStack sensitive version - public boolean m_142073_(@Nullable Player p_150716_, Level p_150717_, BlockPos p_150718_, @Nullable BlockHitResult p_150719_) { + public boolean emptyContents(@Nullable Player p_150716_, Level p_150717_, BlockPos p_150718_, @Nullable BlockHitResult p_150719_) { + return this.emptyContents(p_150716_, p_150717_, p_150718_, p_150719_, null); + } + + public boolean emptyContents(@Nullable Player p_150716_, Level p_150717_, BlockPos p_150718_, @Nullable BlockHitResult p_150719_, @Nullable ItemStack container) { - Fluid $$6 = this.f_40687_; + Fluid $$6 = this.content; if ($$6 instanceof FlowingFluid flowingfluid) { BlockState blockstate; @@ -127,8 +_,12 @@ @@ -68,32 +68,32 @@ boolean flag1 = flag2; + java.util.Optional containedFluidStack = java.util.Optional.ofNullable(container).flatMap(net.minecraftforge.fluids.FluidUtil::getFluidContained); if (!flag1) { -- return p_150719_ != null && this.m_142073_(p_150716_, p_150717_, p_150719_.m_82425_().m_121945_(p_150719_.m_82434_()), (BlockHitResult)null); -+ return p_150719_ != null && this.emptyContents(p_150716_, p_150717_, p_150719_.m_82425_().m_121945_(p_150719_.m_82434_()), (BlockHitResult)null, container); -+ } else if (containedFluidStack.isPresent() && this.f_40687_.getFluidType().isVaporizedOnPlacement(p_150717_, p_150718_, containedFluidStack.get())) { -+ this.f_40687_.getFluidType().onVaporize(p_150716_, p_150717_, p_150718_, containedFluidStack.get()); +- return p_150719_ != null && this.emptyContents(p_150716_, p_150717_, p_150719_.getBlockPos().relative(p_150719_.getDirection()), (BlockHitResult)null); ++ return p_150719_ != null && this.emptyContents(p_150716_, p_150717_, p_150719_.getBlockPos().relative(p_150719_.getDirection()), (BlockHitResult)null, container); ++ } else if (containedFluidStack.isPresent() && this.content.getFluidType().isVaporizedOnPlacement(p_150717_, p_150718_, containedFluidStack.get())) { ++ this.content.getFluidType().onVaporize(p_150716_, p_150717_, p_150718_, containedFluidStack.get()); + return true; - } else if (p_150717_.m_6042_().f_63857_() && this.f_40687_.m_205067_(FluidTags.f_13131_)) { - int l = p_150718_.m_123341_(); - int i = p_150718_.m_123342_(); + } else if (p_150717_.dimensionType().ultraWarm() && this.content.is(FluidTags.WATER)) { + int l = p_150718_.getX(); + int i = p_150718_.getY(); @@ -141,7 +_,7 @@ return true; } else { - if ($$7 instanceof LiquidBlockContainer) { -+ if ($$7 instanceof LiquidBlockContainer liquid && liquid.m_6044_(p_150716_, p_150717_, p_150718_, blockstate, f_40687_)) { ++ if ($$7 instanceof LiquidBlockContainer liquid && liquid.canPlaceLiquid(p_150716_, p_150717_, p_150718_, blockstate, content)) { LiquidBlockContainer liquidblockcontainer1 = (LiquidBlockContainer)$$7; - if (this.f_40687_ == Fluids.f_76193_) { - liquidblockcontainer1.m_7361_(p_150717_, p_150718_, blockstate, flowingfluid.m_76068_(false)); + if (this.content == Fluids.WATER) { + liquidblockcontainer1.placeLiquid(p_150717_, p_150718_, blockstate, flowingfluid.getSource(false)); @@ -166,8 +_,24 @@ } - protected void m_7718_(@Nullable Player p_40696_, LevelAccessor p_40697_, BlockPos p_40698_) { -- SoundEvent soundevent = this.f_40687_.m_205067_(FluidTags.f_13132_) ? SoundEvents.f_11780_ : SoundEvents.f_11778_; -+ SoundEvent soundevent = this.f_40687_.getFluidType().getSound(p_40696_, p_40697_, p_40698_, net.minecraftforge.common.SoundActions.BUCKET_EMPTY); -+ if(soundevent == null) soundevent = this.f_40687_.m_205067_(FluidTags.f_13132_) ? SoundEvents.f_11780_ : SoundEvents.f_11778_; - p_40697_.m_5594_(p_40696_, p_40698_, soundevent, SoundSource.BLOCKS, 1.0F, 1.0F); - p_40697_.m_142346_(p_40696_, GameEvent.f_157769_, p_40698_); + protected void playEmptySound(@Nullable Player p_40696_, LevelAccessor p_40697_, BlockPos p_40698_) { +- SoundEvent soundevent = this.content.is(FluidTags.LAVA) ? SoundEvents.BUCKET_EMPTY_LAVA : SoundEvents.BUCKET_EMPTY; ++ SoundEvent soundevent = this.content.getFluidType().getSound(p_40696_, p_40697_, p_40698_, net.minecraftforge.common.SoundActions.BUCKET_EMPTY); ++ if(soundevent == null) soundevent = this.content.is(FluidTags.LAVA) ? SoundEvents.BUCKET_EMPTY_LAVA : SoundEvents.BUCKET_EMPTY; + p_40697_.playSound(p_40696_, p_40698_, soundevent, SoundSource.BLOCKS, 1.0F, 1.0F); + p_40697_.gameEvent(p_40696_, GameEvent.FLUID_PLACE, p_40698_); + } + + @Override @@ -108,6 +108,6 @@ + public Fluid getFluid() { return fluidSupplier.get(); } + + protected boolean canBlockContainFluid(Level worldIn, BlockPos posIn, BlockState blockstate) { -+ return blockstate.m_60734_() instanceof LiquidBlockContainer liquid && liquid.m_6044_(null, worldIn, posIn, blockstate, this.f_40687_); ++ return blockstate.getBlock() instanceof LiquidBlockContainer liquid && liquid.canPlaceLiquid(null, worldIn, posIn, blockstate, this.content); } } diff --git a/patches/minecraft/net/minecraft/world/item/BundleItem.java.patch b/patches/minecraft/net/minecraft/world/item/BundleItem.java.patch index e20e6b27ff..38ce946c82 100644 --- a/patches/minecraft/net/minecraft/world/item/BundleItem.java.patch +++ b/patches/minecraft/net/minecraft/world/item/BundleItem.java.patch @@ -3,17 +3,17 @@ @@ -40,7 +_,7 @@ } - public boolean m_142207_(ItemStack p_150733_, Slot p_150734_, ClickAction p_150735_, Player p_150736_) { + public boolean overrideStackedOnOther(ItemStack p_150733_, Slot p_150734_, ClickAction p_150735_, Player p_150736_) { - if (p_150735_ != ClickAction.SECONDARY) { -+ if (p_150733_.m_41613_() != 1 || p_150735_ != ClickAction.SECONDARY) { ++ if (p_150733_.getCount() != 1 || p_150735_ != ClickAction.SECONDARY) { return false; } else { - ItemStack itemstack = p_150734_.m_7993_(); + ItemStack itemstack = p_150734_.getItem(); @@ -62,6 +_,7 @@ } - public boolean m_142305_(ItemStack p_150742_, ItemStack p_150743_, Slot p_150744_, ClickAction p_150745_, Player p_150746_, SlotAccess p_150747_) { -+ if (p_150742_.m_41613_() != 1) return false; - if (p_150745_ == ClickAction.SECONDARY && p_150744_.m_150651_(p_150746_)) { - if (p_150743_.m_41619_()) { - m_150780_(p_150742_).ifPresent((p_186347_) -> { + public boolean overrideOtherStackedOnMe(ItemStack p_150742_, ItemStack p_150743_, Slot p_150744_, ClickAction p_150745_, Player p_150746_, SlotAccess p_150747_) { ++ if (p_150742_.getCount() != 1) return false; + if (p_150745_ == ClickAction.SECONDARY && p_150744_.allowModification(p_150746_)) { + if (p_150743_.isEmpty()) { + removeOne(p_150742_).ifPresent((p_186347_) -> { diff --git a/patches/minecraft/net/minecraft/world/item/ChorusFruitItem.java.patch b/patches/minecraft/net/minecraft/world/item/ChorusFruitItem.java.patch index b380d2b304..c47b6ed754 100644 --- a/patches/minecraft/net/minecraft/world/item/ChorusFruitItem.java.patch +++ b/patches/minecraft/net/minecraft/world/item/ChorusFruitItem.java.patch @@ -3,12 +3,12 @@ @@ -33,8 +_,10 @@ } - Vec3 vec3 = p_40714_.m_20182_(); -- if (p_40714_.m_20984_(d3, d4, d5, true)) { - p_40713_.m_214171_(GameEvent.f_238175_, vec3, GameEvent.Context.m_223717_(p_40714_)); + Vec3 vec3 = p_40714_.position(); +- if (p_40714_.randomTeleport(d3, d4, d5, true)) { + p_40713_.gameEvent(GameEvent.TELEPORT, vec3, GameEvent.Context.of(p_40714_)); + net.minecraftforge.event.entity.EntityTeleportEvent.ChorusFruit event = net.minecraftforge.event.ForgeEventFactory.onChorusFruitTeleport(p_40714_, d3, d4, d5); + if (event.isCanceled()) return itemstack; -+ if (p_40714_.m_20984_(event.getTargetX(), event.getTargetY(), event.getTargetZ(), true)) { - SoundEvent soundevent = p_40714_ instanceof Fox ? SoundEvents.f_11953_ : SoundEvents.f_11757_; - p_40713_.m_6263_((Player)null, d0, d1, d2, soundevent, SoundSource.PLAYERS, 1.0F, 1.0F); - p_40714_.m_5496_(soundevent, 1.0F, 1.0F); ++ if (p_40714_.randomTeleport(event.getTargetX(), event.getTargetY(), event.getTargetZ(), true)) { + SoundEvent soundevent = p_40714_ instanceof Fox ? SoundEvents.FOX_TELEPORT : SoundEvents.CHORUS_FRUIT_TELEPORT; + p_40713_.playSound((Player)null, d0, d1, d2, soundevent, SoundSource.PLAYERS, 1.0F, 1.0F); + p_40714_.playSound(soundevent, 1.0F, 1.0F); diff --git a/patches/minecraft/net/minecraft/world/item/CreativeModeTab.java.patch b/patches/minecraft/net/minecraft/world/item/CreativeModeTab.java.patch index 065332d720..a4b3a1ed83 100644 --- a/patches/minecraft/net/minecraft/world/item/CreativeModeTab.java.patch +++ b/patches/minecraft/net/minecraft/world/item/CreativeModeTab.java.patch @@ -1,9 +1,9 @@ --- a/net/minecraft/world/item/CreativeModeTab.java +++ b/net/minecraft/world/item/CreativeModeTab.java @@ -31,16 +_,38 @@ - private Consumer> f_256965_; - private final Supplier f_256912_; - private final CreativeModeTab.DisplayItemsGenerator f_256824_; + private Consumer> searchTreeBuilder; + private final Supplier iconGenerator; + private final CreativeModeTab.DisplayItemsGenerator displayItemsGenerator; + private net.minecraft.resources.ResourceLocation backgroundLocation; + private final boolean hasSearchBar; + private final int searchBarWidth; @@ -14,12 +14,12 @@ - CreativeModeTab(CreativeModeTab.Row p_260217_, int p_259557_, CreativeModeTab.Type p_260176_, Component p_260100_, Supplier p_259543_, CreativeModeTab.DisplayItemsGenerator p_259085_) { + CreativeModeTab(CreativeModeTab.Row p_260217_, int p_259557_, CreativeModeTab.Type p_260176_, Component p_260100_, Supplier p_259543_, CreativeModeTab.DisplayItemsGenerator p_259085_, net.minecraft.resources.ResourceLocation backgroundLocation, boolean hasSearchBar, int searchBarWidth, int labelColor, int slotColor, List tabsBefore, List tabsAfter) { - this.f_256931_ = p_260217_; - this.f_256967_ = p_259557_; - this.f_40764_ = p_260100_; - this.f_256912_ = p_259543_; - this.f_256824_ = p_259085_; - this.f_256819_ = p_260176_; + this.row = p_260217_; + this.column = p_259557_; + this.displayName = p_260100_; + this.iconGenerator = p_259543_; + this.displayItemsGenerator = p_259085_; + this.type = p_260176_; - } - + this.backgroundLocation = backgroundLocation; @@ -32,36 +32,36 @@ + } + + protected CreativeModeTab(CreativeModeTab.Builder builder) { -+ this(builder.f_256796_, builder.f_256977_, builder.f_256847_, builder.f_256856_, builder.f_256981_, builder.f_256953_, builder.backgroundLocation, builder.hasSearchBar, builder.searchBarWidth, builder.labelColor, builder.slotColor, builder.tabsBefore, builder.tabsAfter); ++ this(builder.row, builder.column, builder.type, builder.displayName, builder.iconGenerator, builder.displayItemsGenerator, builder.backgroundLocation, builder.hasSearchBar, builder.searchBarWidth, builder.labelColor, builder.slotColor, builder.tabsBefore, builder.tabsAfter); + } + + public static CreativeModeTab.Builder builder() { + return new CreativeModeTab.Builder(Row.TOP, 0); + } + /** @deprecated Forge: use {@link #builder()} **/ @Deprecated - public static CreativeModeTab.Builder m_257815_(CreativeModeTab.Row p_259342_, int p_260312_) { + public static CreativeModeTab.Builder builder(CreativeModeTab.Row p_259342_, int p_260312_) { return new CreativeModeTab.Builder(p_259342_, p_260312_); } @@ -57,6 +_,10 @@ - return this.f_40770_; + return this.iconItemStack; } + /** + * Forge: Use {@link #getBackgroundLocation()} instead. + */ + @Deprecated - public String m_40788_() { - return this.f_40766_; + public String getBackgroundSuffix() { + return this.backgroundSuffix; } @@ -98,7 +_,7 @@ - ResourceKey resourcekey = BuiltInRegistries.f_279662_.m_7854_(this).orElseThrow(() -> { + ResourceKey resourcekey = BuiltInRegistries.CREATIVE_MODE_TAB.getResourceKey(this).orElseThrow(() -> { return new IllegalStateException("Unregistered creative tab: " + this); }); -- this.f_256824_.m_257865_(p_270156_, creativemodetab$itemdisplaybuilder); -+ net.minecraftforge.common.ForgeHooks.onCreativeModeTabBuildContents(this, resourcekey, this.f_256824_, p_270156_, creativemodetab$itemdisplaybuilder); - this.f_243839_ = creativemodetab$itemdisplaybuilder.f_244363_; - this.f_243841_ = creativemodetab$itemdisplaybuilder.f_244585_; - this.m_257466_(); +- this.displayItemsGenerator.accept(p_270156_, creativemodetab$itemdisplaybuilder); ++ net.minecraftforge.common.ForgeHooks.onCreativeModeTabBuildContents(this, resourcekey, this.displayItemsGenerator, p_270156_, creativemodetab$itemdisplaybuilder); + this.displayItems = creativemodetab$itemdisplaybuilder.tabContents; + this.displayItemsSearchTab = creativemodetab$itemdisplaybuilder.searchTabContents; + this.rebuildSearchTree(); @@ -127,6 +_,26 @@ } @@ -87,12 +87,12 @@ + } + public static class Builder { - private static final CreativeModeTab.DisplayItemsGenerator f_256756_ = (p_270422_, p_259433_) -> { + private static final CreativeModeTab.DisplayItemsGenerator EMPTY_GENERATOR = (p_270422_, p_259433_) -> { }; @@ -142,6 +_,15 @@ - private boolean f_256854_ = false; - private CreativeModeTab.Type f_256847_ = CreativeModeTab.Type.CATEGORY; - private String f_257036_ = "items.png"; + private boolean alignedRight = false; + private CreativeModeTab.Type type = CreativeModeTab.Type.CATEGORY; + private String backgroundSuffix = "items.png"; + @Nullable + private net.minecraft.resources.ResourceLocation backgroundLocation; + private boolean hasSearchBar = false; @@ -104,18 +104,18 @@ + private final List tabsAfter = new java.util.ArrayList<>(); public Builder(CreativeModeTab.Row p_259171_, int p_259661_) { - this.f_256796_ = p_259171_; + this.row = p_259171_; @@ -180,11 +_,87 @@ - protected CreativeModeTab.Builder m_257623_(CreativeModeTab.Type p_259283_) { - this.f_256847_ = p_259283_; + protected CreativeModeTab.Builder type(CreativeModeTab.Type p_259283_) { + this.type = p_259283_; + if (p_259283_ == Type.SEARCH) + return this.withSearchBar(); return this; } - public CreativeModeTab.Builder m_257609_(String p_259981_) { -- this.f_257036_ = p_259981_; + public CreativeModeTab.Builder backgroundSuffix(String p_259981_) { +- this.backgroundSuffix = p_259981_; + return withBackgroundLocation(new net.minecraft.resources.ResourceLocation("textures/gui/container/creative_inventory/tab_" + p_259981_)); + } + @@ -134,7 +134,7 @@ + public CreativeModeTab.Builder withSearchBar() { + this.hasSearchBar = true; + if (this.backgroundLocation == null) -+ return this.m_257609_("item_search.png"); ++ return this.backgroundSuffix("item_search.png"); + return this; + } + @@ -183,28 +183,28 @@ + /** Define tabs that should come before this tab. This tab will be placed after the {@code tabs}. **/ + @SafeVarargs + public final CreativeModeTab.Builder withTabsBefore(net.minecraft.resources.ResourceKey... tabs) { -+ java.util.stream.Stream.of(tabs).map(net.minecraft.resources.ResourceKey::m_135782_).forEach(this.tabsBefore::add); ++ java.util.stream.Stream.of(tabs).map(net.minecraft.resources.ResourceKey::location).forEach(this.tabsBefore::add); + return this; + } + + /** Define tabs that should come after this tab. This tab will be placed before the {@code tabs}.**/ + @SafeVarargs + public final CreativeModeTab.Builder withTabsAfter(net.minecraft.resources.ResourceKey... tabs) { -+ java.util.stream.Stream.of(tabs).map(net.minecraft.resources.ResourceKey::m_135782_).forEach(this.tabsAfter::add); ++ java.util.stream.Stream.of(tabs).map(net.minecraft.resources.ResourceKey::location).forEach(this.tabsAfter::add); return this; } @@ -192,11 +_,12 @@ - if ((this.f_256847_ == CreativeModeTab.Type.HOTBAR || this.f_256847_ == CreativeModeTab.Type.INVENTORY) && this.f_256953_ != f_256756_) { + if ((this.type == CreativeModeTab.Type.HOTBAR || this.type == CreativeModeTab.Type.INVENTORY) && this.displayItemsGenerator != EMPTY_GENERATOR) { throw new IllegalStateException("Special tabs can't have display items"); } else { -- CreativeModeTab creativemodetab = new CreativeModeTab(this.f_256796_, this.f_256977_, this.f_256847_, this.f_256856_, this.f_256981_, this.f_256953_); +- CreativeModeTab creativemodetab = new CreativeModeTab(this.row, this.column, this.type, this.displayName, this.iconGenerator, this.displayItemsGenerator); + CreativeModeTab creativemodetab = tabFactory.apply(this); - creativemodetab.f_257018_ = this.f_256854_; - creativemodetab.f_40768_ = this.f_256851_; - creativemodetab.f_40767_ = this.f_256992_; - creativemodetab.f_40766_ = this.f_257036_; -+ creativemodetab.backgroundLocation = this.backgroundLocation != null ? this.backgroundLocation : new net.minecraft.resources.ResourceLocation("textures/gui/container/creative_inventory/tab_" + this.f_257036_); + creativemodetab.alignedRight = this.alignedRight; + creativemodetab.showTitle = this.showTitle; + creativemodetab.canScroll = this.canScroll; + creativemodetab.backgroundSuffix = this.backgroundSuffix; ++ creativemodetab.backgroundLocation = this.backgroundLocation != null ? this.backgroundLocation : new net.minecraft.resources.ResourceLocation("textures/gui/container/creative_inventory/tab_" + this.backgroundSuffix); return creativemodetab; } } diff --git a/patches/minecraft/net/minecraft/world/item/CreativeModeTabs.java.patch b/patches/minecraft/net/minecraft/world/item/CreativeModeTabs.java.patch index e01be76956..0054e1461c 100644 --- a/patches/minecraft/net/minecraft/world/item/CreativeModeTabs.java.patch +++ b/patches/minecraft/net/minecraft/world/item/CreativeModeTabs.java.patch @@ -2,19 +2,19 @@ +++ b/net/minecraft/world/item/CreativeModeTabs.java @@ -1612,7 +_,7 @@ - private static void m_269182_(CreativeModeTab.Output p_270868_, HolderLookup p_270903_, Set p_270380_, CreativeModeTab.TabVisibility p_270407_) { - p_270903_.m_214062_().map(Holder::m_203334_).filter((p_270008_) -> { -- return p_270380_.contains(p_270008_.f_44672_); -+ return p_270008_.allowedInCreativeTab(Items.f_42690_, p_270380_); + private static void generateEnchantmentBookTypesOnlyMaxLevel(CreativeModeTab.Output p_270868_, HolderLookup p_270903_, Set p_270380_, CreativeModeTab.TabVisibility p_270407_) { + p_270903_.listElements().map(Holder::value).filter((p_270008_) -> { +- return p_270380_.contains(p_270008_.category); ++ return p_270008_.allowedInCreativeTab(Items.ENCHANTED_BOOK, p_270380_); }).map((p_270038_) -> { - return EnchantedBookItem.m_41161_(new EnchantmentInstance(p_270038_, p_270038_.m_6586_())); + return EnchantedBookItem.createForEnchantment(new EnchantmentInstance(p_270038_, p_270038_.getMaxLevel())); }).forEach((p_269989_) -> { @@ -1622,7 +_,7 @@ - private static void m_269335_(CreativeModeTab.Output p_270961_, HolderLookup p_270628_, Set p_271024_, CreativeModeTab.TabVisibility p_270805_) { - p_270628_.m_214062_().map(Holder::m_203334_).filter((p_269991_) -> { -- return p_271024_.contains(p_269991_.f_44672_); -+ return p_269991_.allowedInCreativeTab(Items.f_42690_, p_271024_); + private static void generateEnchantmentBookTypesAllLevels(CreativeModeTab.Output p_270961_, HolderLookup p_270628_, Set p_271024_, CreativeModeTab.TabVisibility p_270805_) { + p_270628_.listElements().map(Holder::value).filter((p_269991_) -> { +- return p_271024_.contains(p_269991_.category); ++ return p_269991_.allowedInCreativeTab(Items.ENCHANTED_BOOK, p_271024_); }).flatMap((p_270024_) -> { - return IntStream.rangeClosed(p_270024_.m_44702_(), p_270024_.m_6586_()).mapToObj((p_270006_) -> { - return EnchantedBookItem.m_41161_(new EnchantmentInstance(p_270024_, p_270006_)); + return IntStream.rangeClosed(p_270024_.getMinLevel(), p_270024_.getMaxLevel()).mapToObj((p_270006_) -> { + return EnchantedBookItem.createForEnchantment(new EnchantmentInstance(p_270024_, p_270006_)); diff --git a/patches/minecraft/net/minecraft/world/item/CrossbowItem.java.patch b/patches/minecraft/net/minecraft/world/item/CrossbowItem.java.patch index 8344f232cd..3157a4ce63 100644 --- a/patches/minecraft/net/minecraft/world/item/CrossbowItem.java.patch +++ b/patches/minecraft/net/minecraft/world/item/CrossbowItem.java.patch @@ -3,8 +3,8 @@ @@ -241,6 +_,7 @@ } - public static void m_40887_(Level p_40888_, LivingEntity p_40889_, InteractionHand p_40890_, ItemStack p_40891_, float p_40892_, float p_40893_) { -+ if (p_40889_ instanceof Player player && net.minecraftforge.event.ForgeEventFactory.onArrowLoose(p_40891_, p_40889_.m_9236_(), player, 1, true) < 0) return; - List list = m_40941_(p_40891_); - float[] afloat = m_220023_(p_40889_.m_217043_()); + public static void performShooting(Level p_40888_, LivingEntity p_40889_, InteractionHand p_40890_, ItemStack p_40891_, float p_40892_, float p_40893_) { ++ if (p_40889_ instanceof Player player && net.minecraftforge.event.ForgeEventFactory.onArrowLoose(p_40891_, p_40889_.level(), player, 1, true) < 0) return; + List list = getChargedProjectiles(p_40891_); + float[] afloat = getShotPitches(p_40889_.getRandom()); diff --git a/patches/minecraft/net/minecraft/world/item/DiggerItem.java.patch b/patches/minecraft/net/minecraft/world/item/DiggerItem.java.patch index c1019be816..d69f98ed07 100644 --- a/patches/minecraft/net/minecraft/world/item/DiggerItem.java.patch +++ b/patches/minecraft/net/minecraft/world/item/DiggerItem.java.patch @@ -1,26 +1,26 @@ --- a/net/minecraft/world/item/DiggerItem.java +++ b/net/minecraft/world/item/DiggerItem.java @@ -60,7 +_,11 @@ - return this.f_40981_; + return this.attackDamageBaseline; } + @Deprecated // FORGE: Use stack sensitive variant below - public boolean m_8096_(BlockState p_150816_) { -+ if (net.minecraftforge.common.TierSortingRegistry.isTierSorted(m_43314_())) { -+ return net.minecraftforge.common.TierSortingRegistry.isCorrectTierForDrops(m_43314_(), p_150816_) && p_150816_.m_204336_(this.f_40979_); + public boolean isCorrectToolForDrops(BlockState p_150816_) { ++ if (net.minecraftforge.common.TierSortingRegistry.isTierSorted(getTier())) { ++ return net.minecraftforge.common.TierSortingRegistry.isCorrectTierForDrops(getTier(), p_150816_) && p_150816_.is(this.blocks); + } - int i = this.m_43314_().m_6604_(); - if (i < 3 && p_150816_.m_204336_(BlockTags.f_144284_)) { + int i = this.getTier().getLevel(); + if (i < 3 && p_150816_.is(BlockTags.NEEDS_DIAMOND_TOOL)) { return false; @@ -69,5 +_,11 @@ } else { - return i < 1 && p_150816_.m_204336_(BlockTags.f_144286_) ? false : p_150816_.m_204336_(this.f_40979_); + return i < 1 && p_150816_.is(BlockTags.NEEDS_STONE_TOOL) ? false : p_150816_.is(this.blocks); } + } + + // FORGE START + @Override + public boolean isCorrectToolForDrops(ItemStack stack, BlockState state) { -+ return state.m_204336_(f_40979_) && net.minecraftforge.common.TierSortingRegistry.isCorrectTierForDrops(m_43314_(), state); ++ return state.is(blocks) && net.minecraftforge.common.TierSortingRegistry.isCorrectTierForDrops(getTier(), state); } } diff --git a/patches/minecraft/net/minecraft/world/item/DispensibleContainerItem.java.patch b/patches/minecraft/net/minecraft/world/item/DispensibleContainerItem.java.patch index d7b14847cc..b981952aeb 100644 --- a/patches/minecraft/net/minecraft/world/item/DispensibleContainerItem.java.patch +++ b/patches/minecraft/net/minecraft/world/item/DispensibleContainerItem.java.patch @@ -6,9 +6,9 @@ -public interface DispensibleContainerItem { +public interface DispensibleContainerItem extends net.minecraftforge.common.extensions.IForgeDispensibleContainerItem { - default void m_142131_(@Nullable Player p_150817_, Level p_150818_, ItemStack p_150819_, BlockPos p_150820_) { + default void checkExtraContent(@Nullable Player p_150817_, Level p_150818_, ItemStack p_150819_, BlockPos p_150820_) { } + @Deprecated //Forge: use the ItemStack sensitive version - boolean m_142073_(@Nullable Player p_150821_, Level p_150822_, BlockPos p_150823_, @Nullable BlockHitResult p_150824_); + boolean emptyContents(@Nullable Player p_150821_, Level p_150822_, BlockPos p_150823_, @Nullable BlockHitResult p_150824_); } diff --git a/patches/minecraft/net/minecraft/world/item/DyeColor.java.patch b/patches/minecraft/net/minecraft/world/item/DyeColor.java.patch index 6d0893ca4b..6d5b88ea36 100644 --- a/patches/minecraft/net/minecraft/world/item/DyeColor.java.patch +++ b/patches/minecraft/net/minecraft/world/item/DyeColor.java.patch @@ -1,11 +1,11 @@ --- a/net/minecraft/world/item/DyeColor.java +++ b/net/minecraft/world/item/DyeColor.java @@ -40,6 +_,7 @@ - private final MapColor f_283766_; - private final float[] f_41039_; - private final int f_41040_; + private final MapColor mapColor; + private final float[] textureDiffuseColors; + private final int fireworkColor; + private final net.minecraft.tags.TagKey tag; - private final int f_41041_; + private final int textColor; private DyeColor(int p_41046_, String p_41047_, int p_41048_, MapColor p_285297_, int p_41050_, int p_41051_) { @@ -50,6 +_,7 @@ @@ -13,13 +13,13 @@ int j = (p_41048_ & '\uff00') >> 8; int k = (p_41048_ & 255) >> 0; + this.tag = net.minecraft.tags.ItemTags.create(new net.minecraft.resources.ResourceLocation("forge", "dyes/" + p_41047_)); - this.f_41039_ = new float[]{(float)i / 255.0F, (float)j / 255.0F, (float)k / 255.0F}; - this.f_41040_ = p_41050_; + this.textureDiffuseColors = new float[]{(float)i / 255.0F, (float)j / 255.0F, (float)k / 255.0F}; + this.fireworkColor = p_41050_; } @@ -100,5 +_,23 @@ - public String m_7912_() { - return this.f_41035_; + public String getSerializedName() { + return this.name; + } + + public net.minecraft.tags.TagKey getTag() { @@ -28,12 +28,12 @@ + + @Nullable + public static DyeColor getColor(ItemStack stack) { -+ if (stack.m_41720_() instanceof DyeItem) -+ return ((DyeItem)stack.m_41720_()).m_41089_(); ++ if (stack.getItem() instanceof DyeItem) ++ return ((DyeItem)stack.getItem()).getDyeColor(); + -+ for (int x = 0; x < BLACK.m_41060_(); x++) { -+ DyeColor color = m_41053_(x); -+ if (stack.m_204117_(color.getTag())) ++ for (int x = 0; x < BLACK.getId(); x++) { ++ DyeColor color = byId(x); ++ if (stack.is(color.getTag())) + return color; + } + diff --git a/patches/minecraft/net/minecraft/world/item/ElytraItem.java.patch b/patches/minecraft/net/minecraft/world/item/ElytraItem.java.patch index b9c94ba474..810148ca52 100644 --- a/patches/minecraft/net/minecraft/world/item/ElytraItem.java.patch +++ b/patches/minecraft/net/minecraft/world/item/ElytraItem.java.patch @@ -1,28 +1,28 @@ --- a/net/minecraft/world/item/ElytraItem.java +++ b/net/minecraft/world/item/ElytraItem.java @@ -27,6 +_,25 @@ - return this.m_269277_(this, p_41137_, p_41138_, p_41139_); + return this.swapWithEquipmentSlot(this, p_41137_, p_41138_, p_41139_); } + @Override + public boolean canElytraFly(ItemStack stack, net.minecraft.world.entity.LivingEntity entity) { -+ return ElytraItem.m_41140_(stack); ++ return ElytraItem.isFlyEnabled(stack); + } + + @Override + public boolean elytraFlightTick(ItemStack stack, net.minecraft.world.entity.LivingEntity entity, int flightTicks) { -+ if (!entity.m_9236_().f_46443_) { ++ if (!entity.level().isClientSide) { + int nextFlightTick = flightTicks + 1; + if (nextFlightTick % 10 == 0) { + if (nextFlightTick % 20 == 0) { -+ stack.m_41622_(1, entity, e -> e.m_21166_(net.minecraft.world.entity.EquipmentSlot.CHEST)); ++ stack.hurtAndBreak(1, entity, e -> e.broadcastBreakEvent(net.minecraft.world.entity.EquipmentSlot.CHEST)); + } -+ entity.m_146850_(net.minecraft.world.level.gameevent.GameEvent.f_223705_); ++ entity.gameEvent(net.minecraft.world.level.gameevent.GameEvent.ELYTRA_GLIDE); + } + } + return true; + } + - public SoundEvent m_150681_() { - return SoundEvents.f_11674_; + public SoundEvent getEquipSound() { + return SoundEvents.ARMOR_EQUIP_ELYTRA; } diff --git a/patches/minecraft/net/minecraft/world/item/FireworkRocketItem.java.patch b/patches/minecraft/net/minecraft/world/item/FireworkRocketItem.java.patch index 97b1854f70..c6369cc82d 100644 --- a/patches/minecraft/net/minecraft/world/item/FireworkRocketItem.java.patch +++ b/patches/minecraft/net/minecraft/world/item/FireworkRocketItem.java.patch @@ -10,23 +10,23 @@ LARGE_BALL(1, "large_ball"), STAR(2, "star"), @@ -131,8 +_,28 @@ - return this.f_41228_; + return this.name; } + public void save(net.minecraft.nbt.CompoundTag tag) { -+ tag.m_128344_("Type", (byte)m_41236_()); -+ tag.m_128359_("forge:shape_type", name()); ++ tag.putByte("Type", (byte)getId()); ++ tag.putString("forge:shape_type", name()); + } + + /** Use {getShape(ComoundTag)} */ + @Deprecated - public static FireworkRocketItem.Shape m_41237_(int p_41238_) { - return f_41226_.apply(p_41238_); + public static FireworkRocketItem.Shape byId(int p_41238_) { + return BY_ID.apply(p_41238_); + } + + public static FireworkRocketItem.Shape getShape(net.minecraft.nbt.CompoundTag tag) { -+ var name = tag.m_128425_("forge:shape_type", 8) ? tag.m_128461_("forge:shape_type") : null; -+ if (name == null) return m_41237_(tag.m_128445_("Type")); ++ var name = tag.contains("forge:shape_type", 8) ? tag.getString("forge:shape_type") : null; ++ if (name == null) return byId(tag.getByte("Type")); + for (var ret : values()) + if (ret.name().equals(name)) + return ret; diff --git a/patches/minecraft/net/minecraft/world/item/FireworkStarItem.java.patch b/patches/minecraft/net/minecraft/world/item/FireworkStarItem.java.patch index 83e5ac7a66..0d3ad24d6d 100644 --- a/patches/minecraft/net/minecraft/world/item/FireworkStarItem.java.patch +++ b/patches/minecraft/net/minecraft/world/item/FireworkStarItem.java.patch @@ -3,9 +3,9 @@ @@ -23,7 +_,7 @@ } - public static void m_41256_(CompoundTag p_41257_, List p_41258_) { -- FireworkRocketItem.Shape fireworkrocketitem$shape = FireworkRocketItem.Shape.m_41237_(p_41257_.m_128445_("Type")); + public static void appendHoverText(CompoundTag p_41257_, List p_41258_) { +- FireworkRocketItem.Shape fireworkrocketitem$shape = FireworkRocketItem.Shape.byId(p_41257_.getByte("Type")); + FireworkRocketItem.Shape fireworkrocketitem$shape = FireworkRocketItem.Shape.getShape(p_41257_); - p_41258_.add(Component.m_237115_("item.minecraft.firework_star.shape." + fireworkrocketitem$shape.m_41241_()).m_130940_(ChatFormatting.GRAY)); - int[] aint = p_41257_.m_128465_("Colors"); + p_41258_.add(Component.translatable("item.minecraft.firework_star.shape." + fireworkrocketitem$shape.getName()).withStyle(ChatFormatting.GRAY)); + int[] aint = p_41257_.getIntArray("Colors"); if (aint.length > 0) { diff --git a/patches/minecraft/net/minecraft/world/item/FishingRodItem.java.patch b/patches/minecraft/net/minecraft/world/item/FishingRodItem.java.patch index 30362b5c01..4c561830c0 100644 --- a/patches/minecraft/net/minecraft/world/item/FishingRodItem.java.patch +++ b/patches/minecraft/net/minecraft/world/item/FishingRodItem.java.patch @@ -1,7 +1,7 @@ --- a/net/minecraft/world/item/FishingRodItem.java +++ b/net/minecraft/world/item/FishingRodItem.java @@ -46,4 +_,11 @@ - public int m_6473_() { + public int getEnchantmentValue() { return 1; } + diff --git a/patches/minecraft/net/minecraft/world/item/HoeItem.java.patch b/patches/minecraft/net/minecraft/world/item/HoeItem.java.patch index 6c308763a9..457cebb47d 100644 --- a/patches/minecraft/net/minecraft/world/item/HoeItem.java.patch +++ b/patches/minecraft/net/minecraft/world/item/HoeItem.java.patch @@ -10,23 +10,23 @@ + * or override {@link net.minecraftforge.common.extensions.IForgeBlock#getToolModifiedState(BlockState, UseOnContext, net.minecraftforge.common.ToolAction, boolean)}. + */ + @Deprecated - protected static final Map, Consumer>> f_41332_ = Maps.newHashMap(ImmutableMap.of(Blocks.f_50440_, Pair.of(HoeItem::m_150856_, m_150858_(Blocks.f_50093_.m_49966_())), Blocks.f_152481_, Pair.of(HoeItem::m_150856_, m_150858_(Blocks.f_50093_.m_49966_())), Blocks.f_50493_, Pair.of(HoeItem::m_150856_, m_150858_(Blocks.f_50093_.m_49966_())), Blocks.f_50546_, Pair.of(HoeItem::m_150856_, m_150858_(Blocks.f_50493_.m_49966_())), Blocks.f_152549_, Pair.of((p_238242_) -> { + protected static final Map, Consumer>> TILLABLES = Maps.newHashMap(ImmutableMap.of(Blocks.GRASS_BLOCK, Pair.of(HoeItem::onlyIfAirAbove, changeIntoState(Blocks.FARMLAND.defaultBlockState())), Blocks.DIRT_PATH, Pair.of(HoeItem::onlyIfAirAbove, changeIntoState(Blocks.FARMLAND.defaultBlockState())), Blocks.DIRT, Pair.of(HoeItem::onlyIfAirAbove, changeIntoState(Blocks.FARMLAND.defaultBlockState())), Blocks.COARSE_DIRT, Pair.of(HoeItem::onlyIfAirAbove, changeIntoState(Blocks.DIRT.defaultBlockState())), Blocks.ROOTED_DIRT, Pair.of((p_238242_) -> { return true; - }, m_150849_(Blocks.f_50493_.m_49966_(), Items.f_151017_)))); + }, changeIntoStateAndDropItem(Blocks.DIRT.defaultBlockState(), Items.HANGING_ROOTS)))); @@ -33,7 +_,8 @@ - public InteractionResult m_6225_(UseOnContext p_41341_) { - Level level = p_41341_.m_43725_(); - BlockPos blockpos = p_41341_.m_8083_(); -- Pair, Consumer> pair = f_41332_.get(level.m_8055_(blockpos).m_60734_()); -+ BlockState toolModifiedState = level.m_8055_(blockpos).getToolModifiedState(p_41341_, net.minecraftforge.common.ToolActions.HOE_TILL, false); -+ Pair, Consumer> pair = toolModifiedState == null ? null : Pair.of(ctx -> true, m_150858_(toolModifiedState)); + public InteractionResult useOn(UseOnContext p_41341_) { + Level level = p_41341_.getLevel(); + BlockPos blockpos = p_41341_.getClickedPos(); +- Pair, Consumer> pair = TILLABLES.get(level.getBlockState(blockpos).getBlock()); ++ BlockState toolModifiedState = level.getBlockState(blockpos).getToolModifiedState(p_41341_, net.minecraftforge.common.ToolActions.HOE_TILL, false); ++ Pair, Consumer> pair = toolModifiedState == null ? null : Pair.of(ctx -> true, changeIntoState(toolModifiedState)); if (pair == null) { return InteractionResult.PASS; } else { @@ -75,5 +_,10 @@ - public static boolean m_150856_(UseOnContext p_150857_) { - return p_150857_.m_43719_() != Direction.DOWN && p_150857_.m_43725_().m_8055_(p_150857_.m_8083_().m_7494_()).m_60795_(); + public static boolean onlyIfAirAbove(UseOnContext p_150857_) { + return p_150857_.getClickedFace() != Direction.DOWN && p_150857_.getLevel().getBlockState(p_150857_.getClickedPos().above()).isAir(); + } + + @Override diff --git a/patches/minecraft/net/minecraft/world/item/HorseArmorItem.java.patch b/patches/minecraft/net/minecraft/world/item/HorseArmorItem.java.patch index 2000648a1c..bbc4c5d8a4 100644 --- a/patches/minecraft/net/minecraft/world/item/HorseArmorItem.java.patch +++ b/patches/minecraft/net/minecraft/world/item/HorseArmorItem.java.patch @@ -2,10 +2,10 @@ +++ b/net/minecraft/world/item/HorseArmorItem.java @@ -5,16 +_,20 @@ public class HorseArmorItem extends Item { - private static final String f_150882_ = "textures/entity/horse/"; - private final int f_41361_; -- private final String f_41362_; -+ private final ResourceLocation f_41362_; + private static final String TEX_FOLDER = "textures/entity/horse/"; + private final int protection; +- private final String texture; ++ private final ResourceLocation texture; public HorseArmorItem(int p_41364_, String p_41365_, Item.Properties p_41366_) { + this(p_41364_, new ResourceLocation("textures/entity/horse/armor/horse_armor_" + p_41365_ + ".png"), p_41366_); @@ -13,14 +13,14 @@ + + public HorseArmorItem(int p_41364_, ResourceLocation p_41365_, Item.Properties p_41366_) { super(p_41366_); - this.f_41361_ = p_41364_; -- this.f_41362_ = "textures/entity/horse/armor/horse_armor_" + p_41365_ + ".png"; -+ this.f_41362_ = p_41365_; + this.protection = p_41364_; +- this.texture = "textures/entity/horse/armor/horse_armor_" + p_41365_ + ".png"; ++ this.texture = p_41365_; } - public ResourceLocation m_41367_() { -- return new ResourceLocation(this.f_41362_); -+ return f_41362_; + public ResourceLocation getTexture() { +- return new ResourceLocation(this.texture); ++ return texture; } - public int m_41368_() { + public int getProtection() { diff --git a/patches/minecraft/net/minecraft/world/item/Item.java.patch b/patches/minecraft/net/minecraft/world/item/Item.java.patch index cc89b21953..6025699d9f 100644 --- a/patches/minecraft/net/minecraft/world/item/Item.java.patch +++ b/patches/minecraft/net/minecraft/world/item/Item.java.patch @@ -6,14 +6,14 @@ -public class Item implements FeatureElement, ItemLike { +public class Item implements FeatureElement, ItemLike, net.minecraftforge.common.extensions.IForgeItem { - private static final Logger f_150883_ = LogUtils.getLogger(); -- public static final Map f_41373_ = Maps.newHashMap(); -+ public static final Map f_41373_ = net.minecraftforge.registries.GameData.getBlockItemMap(); - protected static final UUID f_41374_ = UUID.fromString("CB3F55D3-645C-4F38-A497-9C13A33DB5CF"); - protected static final UUID f_41375_ = UUID.fromString("FA233E1C-4180-4865-B01B-BCCE9785ACA3"); - public static final int f_150884_ = 64; + private static final Logger LOGGER = LogUtils.getLogger(); +- public static final Map BY_BLOCK = Maps.newHashMap(); ++ public static final Map BY_BLOCK = net.minecraftforge.registries.GameData.getBlockItemMap(); + protected static final UUID BASE_ATTACK_DAMAGE_UUID = UUID.fromString("CB3F55D3-645C-4F38-A497-9C13A33DB5CF"); + protected static final UUID BASE_ATTACK_SPEED_UUID = UUID.fromString("FA233E1C-4180-4865-B01B-BCCE9785ACA3"); + public static final int MAX_STACK_SIZE = 64; @@ -99,7 +_,8 @@ - f_150883_.error("Item classes should end with Item and {} doesn't.", (Object)s); + LOGGER.error("Item classes should end with Item and {} doesn't.", (Object)s); } } - @@ -23,53 +23,53 @@ /** @deprecated */ @@ -111,6 +_,8 @@ - public void m_5929_(Level p_41428_, LivingEntity p_41429_, ItemStack p_41430_, int p_41431_) { + public void onUseTick(Level p_41428_, LivingEntity p_41429_, ItemStack p_41430_, int p_41431_) { } + /** @deprecated Forge: {@link net.minecraftforge.common.extensions.IForgeItem#onDestroyed(ItemEntity, DamageSource) Use damage source sensitive version} */ + @Deprecated - public void m_142023_(ItemEntity p_150887_) { + public void onDestroyed(ItemEntity p_150887_) { } @@ -134,9 +_,9 @@ } - public InteractionResultHolder m_7203_(Level p_41432_, Player p_41433_, InteractionHand p_41434_) { -- if (this.m_41472_()) { -- ItemStack itemstack = p_41433_.m_21120_(p_41434_); -- if (p_41433_.m_36391_(this.m_41473_().m_38747_())) { -+ ItemStack itemstack = p_41433_.m_21120_(p_41434_); -+ if (itemstack.m_41614_()) { -+ if (p_41433_.m_36391_(itemstack.getFoodProperties(p_41433_).m_38747_())) { - p_41433_.m_6672_(p_41434_); - return InteractionResultHolder.m_19096_(itemstack); + public InteractionResultHolder use(Level p_41432_, Player p_41433_, InteractionHand p_41434_) { +- if (this.isEdible()) { +- ItemStack itemstack = p_41433_.getItemInHand(p_41434_); +- if (p_41433_.canEat(this.getFoodProperties().canAlwaysEat())) { ++ ItemStack itemstack = p_41433_.getItemInHand(p_41434_); ++ if (itemstack.isEdible()) { ++ if (p_41433_.canEat(itemstack.getFoodProperties(p_41433_).canAlwaysEat())) { + p_41433_.startUsingItem(p_41434_); + return InteractionResultHolder.consume(itemstack); } else { @@ -151,10 +_,12 @@ - return this.m_41472_() ? p_41411_.m_5584_(p_41410_, p_41409_) : p_41409_; + return this.isEdible() ? p_41411_.eat(p_41410_, p_41409_) : p_41409_; } + @Deprecated // Use ItemStack sensitive version. - public final int m_41459_() { - return this.f_41370_; + public final int getMaxStackSize() { + return this.maxStackSize; } + @Deprecated // Use ItemStack sensitive version. - public final int m_41462_() { - return this.f_41371_; + public final int getMaxDamage() { + return this.maxDamage; } @@ -168,11 +_,12 @@ } - public int m_142158_(ItemStack p_150900_) { -- return Math.round(13.0F - (float)p_150900_.m_41773_() * 13.0F / (float)this.f_41371_); -+ return Math.round(13.0F - (float)p_150900_.m_41773_() * 13.0F / (float)this.getMaxDamage(p_150900_)); + public int getBarWidth(ItemStack p_150900_) { +- return Math.round(13.0F - (float)p_150900_.getDamageValue() * 13.0F / (float)this.maxDamage); ++ return Math.round(13.0F - (float)p_150900_.getDamageValue() * 13.0F / (float)this.getMaxDamage(p_150900_)); } - public int m_142159_(ItemStack p_150901_) { -- float f = Math.max(0.0F, ((float)this.f_41371_ - (float)p_150901_.m_41773_()) / (float)this.f_41371_); + public int getBarColor(ItemStack p_150901_) { +- float f = Math.max(0.0F, ((float)this.maxDamage - (float)p_150901_.getDamageValue()) / (float)this.maxDamage); + float stackMaxDamage = this.getMaxDamage(p_150901_); -+ float f = Math.max(0.0F, (stackMaxDamage - (float)p_150901_.m_41773_()) / stackMaxDamage); - return Mth.m_14169_(f / 3.0F, 1.0F, 1.0F); ++ float f = Math.max(0.0F, (stackMaxDamage - (float)p_150901_.getDamageValue()) / stackMaxDamage); + return Mth.hsvToRgb(f / 3.0F, 1.0F, 1.0F); } @@ -229,10 +_,12 @@ @@ -77,46 +77,46 @@ @Nullable + @Deprecated // Use ItemStack sensitive version. - public final Item m_41469_() { - return this.f_41378_; + public final Item getCraftingRemainingItem() { + return this.craftingRemainingItem; } + @Deprecated // Use ItemStack sensitive version. - public boolean m_41470_() { - return this.f_41378_ != null; + public boolean hasCraftingRemainingItem() { + return this.craftingRemainingItem != null; } @@ -253,7 +_,7 @@ - public int m_8105_(ItemStack p_41454_) { - if (p_41454_.m_41720_().m_41472_()) { -- return this.m_41473_().m_38748_() ? 16 : 32; -+ return p_41454_.getFoodProperties(null).m_38748_() ? 16 : 32; + public int getUseDuration(ItemStack p_41454_) { + if (p_41454_.getItem().isEdible()) { +- return this.getFoodProperties().isFastFood() ? 16 : 32; ++ return p_41454_.getFoodProperties(null).isFastFood() ? 16 : 32; } else { return 0; } @@ -295,7 +_,7 @@ } - public boolean m_8120_(ItemStack p_41456_) { -- return this.m_41459_() == 1 && this.m_41465_(); + public boolean isEnchantable(ItemStack p_41456_) { +- return this.getMaxStackSize() == 1 && this.canBeDepleted(); + return this.getMaxStackSize(p_41456_) == 1 && this.isDamageable(p_41456_); } - protected static BlockHitResult m_41435_(Level p_41436_, Player p_41437_, ClipContext.Fluid p_41438_) { + protected static BlockHitResult getPlayerPOVHitResult(Level p_41436_, Player p_41437_, ClipContext.Fluid p_41438_) { @@ -308,11 +_,13 @@ - float f5 = Mth.m_14031_(-f * ((float)Math.PI / 180F)); + float f5 = Mth.sin(-f * ((float)Math.PI / 180F)); float f6 = f3 * f4; float f7 = f2 * f4; - double d0 = 5.0D; -- Vec3 vec31 = vec3.m_82520_((double)f6 * 5.0D, (double)f5 * 5.0D, (double)f7 * 5.0D); +- Vec3 vec31 = vec3.add((double)f6 * 5.0D, (double)f5 * 5.0D, (double)f7 * 5.0D); + double d0 = p_41437_.getBlockReach(); -+ Vec3 vec31 = vec3.m_82520_((double)f6 * d0, (double)f5 * d0, (double)f7 * d0); - return p_41436_.m_45547_(new ClipContext(vec3, vec31, ClipContext.Block.OUTLINE, p_41438_, p_41437_)); ++ Vec3 vec31 = vec3.add((double)f6 * d0, (double)f5 * d0, (double)f7 * d0); + return p_41436_.clip(new ClipContext(vec3, vec31, ClipContext.Block.OUTLINE, p_41438_, p_41437_)); } + /** Forge: Use ItemStack sensitive version. */ + @Deprecated - public int m_6473_() { + public int getEnchantmentValue() { return 0; } @@ -321,12 +_,20 @@ @@ -124,7 +124,7 @@ } + @Deprecated // Use ItemStack sensitive version. - public Multimap m_7167_(EquipmentSlot p_41388_) { + public Multimap getDefaultAttributeModifiers(EquipmentSlot p_41388_) { return ImmutableMultimap.of(); } @@ -135,23 +135,23 @@ + return canRepair && isDamageable(stack); + } + - public boolean m_41463_(ItemStack p_41464_) { + public boolean useOnRelease(ItemStack p_41464_) { - return false; -+ return p_41464_.m_41720_() == Items.f_42717_; ++ return p_41464_.getItem() == Items.CROSSBOW; } - public ItemStack m_7968_() { + public ItemStack getDefaultInstance() { @@ -337,6 +_,8 @@ - return this.f_41380_ != null; + return this.foodProperties != null; } + // Use IForgeItem#getFoodProperties(ItemStack, LivingEntity) in favour of this. + @Deprecated @Nullable - public FoodProperties m_41473_() { - return this.f_41380_; + public FoodProperties getFoodProperties() { + return this.foodProperties; @@ -366,6 +_,32 @@ - return this.f_243811_; + return this.requiredFeatures; } + // FORGE START @@ -181,20 +181,20 @@ + // END FORGE + public static class Properties { - int f_41478_ = 64; - int f_41479_; + int maxStackSize = 64; + int maxDamage; @@ -376,6 +_,7 @@ - FoodProperties f_41483_; - boolean f_41484_; - FeatureFlagSet f_244559_ = FeatureFlags.f_244377_; + FoodProperties foodProperties; + boolean isFireResistant; + FeatureFlagSet requiredFeatures = FeatureFlags.VANILLA_SET; + private boolean canRepair = true; - public Item.Properties m_41489_(FoodProperties p_41490_) { - this.f_41483_ = p_41490_; + public Item.Properties food(FoodProperties p_41490_) { + this.foodProperties = p_41490_; @@ -413,6 +_,11 @@ - public Item.Properties m_41486_() { - this.f_41484_ = true; + public Item.Properties fireResistant() { + this.isFireResistant = true; + return this; + } + diff --git a/patches/minecraft/net/minecraft/world/item/ItemDisplayContext.java.patch b/patches/minecraft/net/minecraft/world/item/ItemDisplayContext.java.patch index 369273855b..91562ae2ce 100644 --- a/patches/minecraft/net/minecraft/world/item/ItemDisplayContext.java.patch +++ b/patches/minecraft/net/minecraft/world/item/ItemDisplayContext.java.patch @@ -13,23 +13,23 @@ GROUND(7, "ground"), FIXED(8, "fixed"); -- public static final Codec f_268458_ = StringRepresentable.m_216439_(ItemDisplayContext::values); -- public static final IntFunction f_268648_ = ByIdMap.m_262839_(ItemDisplayContext::m_269462_, values(), ByIdMap.OutOfBoundsStrategy.ZERO); -+ public static final Codec f_268458_ = net.minecraft.util.ExtraCodecs.m_184415_(() -> net.minecraftforge.registries.ForgeRegistries.DISPLAY_CONTEXTS.get().getCodec()); -+ public static final IntFunction f_268648_ = id -> java.util.Objects.requireNonNullElse(((net.minecraftforge.registries.IForgeRegistryInternal) net.minecraftforge.registries.ForgeRegistries.DISPLAY_CONTEXTS.get()).getValue(id < 0 ? Byte.MAX_VALUE + -id : id), NONE); - private byte f_268735_; - private final String f_268747_; +- public static final Codec CODEC = StringRepresentable.fromEnum(ItemDisplayContext::values); +- public static final IntFunction BY_ID = ByIdMap.continuous(ItemDisplayContext::getId, values(), ByIdMap.OutOfBoundsStrategy.ZERO); ++ public static final Codec CODEC = net.minecraft.util.ExtraCodecs.lazyInitializedCodec(() -> net.minecraftforge.registries.ForgeRegistries.DISPLAY_CONTEXTS.get().getCodec()); ++ public static final IntFunction BY_ID = id -> java.util.Objects.requireNonNullElse(((net.minecraftforge.registries.IForgeRegistryInternal) net.minecraftforge.registries.ForgeRegistries.DISPLAY_CONTEXTS.get()).getValue(id < 0 ? Byte.MAX_VALUE + -id : id), NONE); + private byte id; + private final String name; private ItemDisplayContext(int p_270624_, String p_270851_) { - this.f_268747_ = p_270851_; - this.f_268735_ = (byte)p_270624_; + this.name = p_270851_; + this.id = (byte)p_270624_; + this.isModded = false; + this.fallback = null; } - public String m_7912_() { + public String getSerializedName() { @@ -37,4 +_,29 @@ - public boolean m_269069_() { + public boolean firstPerson() { return this == FIRST_PERSON_LEFT_HAND || this == FIRST_PERSON_RIGHT_HAND; } + @@ -39,8 +39,8 @@ + private final ItemDisplayContext fallback; + + private ItemDisplayContext(net.minecraft.resources.ResourceLocation serializeName, ItemDisplayContext fallback) { -+ this.f_268735_ = 0; // If the context is never registered then it should be treated as the NONE one -+ this.f_268747_ = java.util.Objects.requireNonNull(serializeName, "Modded ItemDisplayContexts must have a non-null serializeName").toString(); ++ this.id = 0; // If the context is never registered then it should be treated as the NONE one ++ this.name = java.util.Objects.requireNonNull(serializeName, "Modded ItemDisplayContexts must have a non-null serializeName").toString(); + this.isModded = true; + this.fallback = fallback; + } @@ -56,5 +56,5 @@ + public static ItemDisplayContext create(String keyName, net.minecraft.resources.ResourceLocation serializedName, @javax.annotation.Nullable ItemDisplayContext fallback) { + throw new IllegalStateException("Enum not extended!"); + } -+ public static final net.minecraftforge.registries.IForgeRegistry.AddCallback ADD_CALLBACK = (owner, stage, id, key, obj, oldObj) -> obj.f_268735_ = id > Byte.MAX_VALUE ? (byte) -(id - Byte.MAX_VALUE) : (byte) id; // if the ID is > 127 start doing negative IDs ++ public static final net.minecraftforge.registries.IForgeRegistry.AddCallback ADD_CALLBACK = (owner, stage, id, key, obj, oldObj) -> obj.id = id > Byte.MAX_VALUE ? (byte) -(id - Byte.MAX_VALUE) : (byte) id; // if the ID is > 127 start doing negative IDs } diff --git a/patches/minecraft/net/minecraft/world/item/ItemStack.java.patch b/patches/minecraft/net/minecraft/world/item/ItemStack.java.patch index 4d0b1ec396..bf6472d050 100644 --- a/patches/minecraft/net/minecraft/world/item/ItemStack.java.patch +++ b/patches/minecraft/net/minecraft/world/item/ItemStack.java.patch @@ -6,212 +6,212 @@ -public final class ItemStack { +public final class ItemStack extends net.minecraftforge.common.capabilities.CapabilityProvider implements net.minecraftforge.common.extensions.IForgeItemStack { - public static final Codec f_41582_ = RecordCodecBuilder.create((p_258963_) -> { - return p_258963_.group(BuiltInRegistries.f_257033_.m_194605_().fieldOf("id").forGetter(ItemStack::m_41720_), Codec.INT.fieldOf("Count").forGetter(ItemStack::m_41613_), CompoundTag.f_128325_.optionalFieldOf("tag").forGetter((p_281115_) -> { - return Optional.ofNullable(p_281115_.m_41783_()); + public static final Codec CODEC = RecordCodecBuilder.create((p_258963_) -> { + return p_258963_.group(BuiltInRegistries.ITEM.byNameCodec().fieldOf("id").forGetter(ItemStack::getItem), Codec.INT.fieldOf("Count").forGetter(ItemStack::getCount), CompoundTag.CODEC.optionalFieldOf("tag").forGetter((p_281115_) -> { + return Optional.ofNullable(p_281115_.getTag()); })).apply(p_258963_, ItemStack::new); }); + @org.jetbrains.annotations.Nullable + private final net.minecraft.core.Holder.Reference delegate; + private CompoundTag capNBT; + - private static final Logger f_41585_ = LogUtils.getLogger(); - public static final ItemStack f_41583_ = new ItemStack((Void)null); - public static final DecimalFormat f_41584_ = Util.m_137469_(new DecimalFormat("#.##"), (p_41704_) -> { + private static final Logger LOGGER = LogUtils.getLogger(); + public static final ItemStack EMPTY = new ItemStack((Void)null); + public static final DecimalFormat ATTRIBUTE_MODIFIER_FORMAT = Util.make(new DecimalFormat("#.##"), (p_41704_) -> { @@ -137,28 +_,40 @@ - this(p_220155_.m_203334_(), p_220156_); + this(p_220155_.value(), p_220156_); } - public ItemStack(ItemLike p_41601_, int p_41602_) { -- this.f_41589_ = p_41601_.m_5456_(); -- this.f_41587_ = p_41602_; -- if (this.f_41589_.m_41465_()) { +- this.item = p_41601_.asItem(); +- this.count = p_41602_; +- if (this.item.canBeDepleted()) { + public ItemStack(ItemLike p_41601_, int p_41602_) { this(p_41601_, p_41602_, (CompoundTag) null); } + public ItemStack(ItemLike p_41604_, int p_41605_, @Nullable CompoundTag p_41606_) { + super(ItemStack.class, true); + this.capNBT = p_41606_; -+ this.f_41589_ = p_41604_.m_5456_(); -+ this.delegate = net.minecraftforge.registries.ForgeRegistries.ITEMS.getDelegateOrThrow(p_41604_.m_5456_()); -+ this.f_41587_ = p_41605_; ++ this.item = p_41604_.asItem(); ++ this.delegate = net.minecraftforge.registries.ForgeRegistries.ITEMS.getDelegateOrThrow(p_41604_.asItem()); ++ this.count = p_41605_; + this.forgeInit(); -+ if (this.f_41589_.isDamageable(this)) { - this.m_41721_(this.m_41773_()); ++ if (this.item.isDamageable(this)) { + this.setDamageValue(this.getDamageValue()); } } private ItemStack(@Nullable Void p_282703_) { + super(ItemStack.class, true); - this.f_41589_ = null; + this.item = null; + this.delegate = null; } private ItemStack(CompoundTag p_41608_) { + super(ItemStack.class, true); -+ this.capNBT = p_41608_.m_128441_("ForgeCaps") ? p_41608_.m_128469_("ForgeCaps") : null; ++ this.capNBT = p_41608_.contains("ForgeCaps") ? p_41608_.getCompound("ForgeCaps") : null; + Item rawItem = - this.f_41589_ = BuiltInRegistries.f_257033_.m_7745_(new ResourceLocation(p_41608_.m_128461_("id"))); + this.item = BuiltInRegistries.ITEM.get(new ResourceLocation(p_41608_.getString("id"))); + this.delegate = net.minecraftforge.registries.ForgeRegistries.ITEMS.getDelegateOrThrow(rawItem); - this.f_41587_ = p_41608_.m_128445_("Count"); - if (p_41608_.m_128425_("tag", 10)) { - this.f_41590_ = p_41608_.m_128469_("tag"); - this.m_41720_().m_142312_(this.f_41590_); + this.count = p_41608_.getByte("Count"); + if (p_41608_.contains("tag", 10)) { + this.tag = p_41608_.getCompound("tag"); + this.getItem().verifyTagAfterLoad(this.tag); } + this.forgeInit(); -- if (this.m_41720_().m_41465_()) { -+ if (this.m_41720_().isDamageable(this)) { - this.m_41721_(this.m_41773_()); +- if (this.getItem().canBeDepleted()) { ++ if (this.getItem().isDamageable(this)) { + this.setDamageValue(this.getDamageValue()); } @@ -174,7 +_,7 @@ } - public boolean m_41619_() { -- return this == f_41583_ || this.f_41589_ == Items.f_41852_ || this.f_41587_ <= 0; -+ return this == f_41583_ || this.f_41587_ <= 0 || this.delegate.get() == Items.f_41852_; + public boolean isEmpty() { +- return this == EMPTY || this.item == Items.AIR || this.count <= 0; ++ return this == EMPTY || this.count <= 0 || this.delegate.get() == Items.AIR; } - public boolean m_246617_(FeatureFlagSet p_250869_) { + public boolean isItemEnabled(FeatureFlagSet p_250869_) { @@ -199,7 +_,7 @@ } - public Item m_41720_() { -- return this.m_41619_() ? Items.f_41852_ : this.f_41589_; -+ return this.m_41619_() ? Items.f_41852_ : this.delegate.get(); + public Item getItem() { +- return this.isEmpty() ? Items.AIR : this.item; ++ return this.isEmpty() ? Items.AIR : this.delegate.get(); } - public Holder m_220173_() { + public Holder getItemHolder() { @@ -231,6 +_,15 @@ } - public InteractionResult m_41661_(UseOnContext p_41662_) { -+ if (!p_41662_.m_43725_().f_46443_) return net.minecraftforge.common.ForgeHooks.onPlaceItemIntoWorld(p_41662_); -+ return onItemUse(p_41662_, (c) -> m_41720_().m_6225_(p_41662_)); + public InteractionResult useOn(UseOnContext p_41662_) { ++ if (!p_41662_.getLevel().isClientSide) return net.minecraftforge.common.ForgeHooks.onPlaceItemIntoWorld(p_41662_); ++ return onItemUse(p_41662_, (c) -> getItem().useOn(p_41662_)); + } + + public InteractionResult onItemUseFirst(UseOnContext p_41662_) { -+ return onItemUse(p_41662_, (c) -> m_41720_().onItemUseFirst(this, p_41662_)); ++ return onItemUse(p_41662_, (c) -> getItem().onItemUseFirst(this, p_41662_)); + } + + private InteractionResult onItemUse(UseOnContext p_41662_, java.util.function.Function callback) { - Player player = p_41662_.m_43723_(); - BlockPos blockpos = p_41662_.m_8083_(); - BlockInWorld blockinworld = new BlockInWorld(p_41662_.m_43725_(), blockpos, false); + Player player = p_41662_.getPlayer(); + BlockPos blockpos = p_41662_.getClickedPos(); + BlockInWorld blockinworld = new BlockInWorld(p_41662_.getLevel(), blockpos, false); @@ -238,7 +_,7 @@ return InteractionResult.PASS; } else { - Item item = this.m_41720_(); -- InteractionResult interactionresult = item.m_6225_(p_41662_); + Item item = this.getItem(); +- InteractionResult interactionresult = item.useOn(p_41662_); + InteractionResult interactionresult = callback.apply(p_41662_); - if (player != null && interactionresult.m_146666_()) { - player.m_36246_(Stats.f_12982_.m_12902_(item)); + if (player != null && interactionresult.shouldAwardStats()) { + player.awardStat(Stats.ITEM_USED.get(item)); } @@ -267,11 +_,15 @@ - p_41740_.m_128365_("tag", this.f_41590_.m_6426_()); + p_41740_.put("tag", this.tag.copy()); } + CompoundTag cnbt = this.serializeCaps(); -+ if (cnbt != null && !cnbt.m_128456_()) { -+ p_41740_.m_128365_("ForgeCaps", cnbt); ++ if (cnbt != null && !cnbt.isEmpty()) { ++ p_41740_.put("ForgeCaps", cnbt); + } return p_41740_; } - public int m_41741_() { -- return this.m_41720_().m_41459_(); -+ return this.m_41720_().getMaxStackSize(this); + public int getMaxStackSize() { +- return this.getItem().getMaxStackSize(); ++ return this.getItem().getMaxStackSize(this); } - public boolean m_41753_() { + public boolean isStackable() { @@ -279,7 +_,7 @@ } - public boolean m_41763_() { -- if (!this.m_41619_() && this.m_41720_().m_41462_() > 0) { -+ if (!this.m_41619_() && this.m_41720_().isDamageable(this)) { - CompoundTag compoundtag = this.m_41783_(); - return compoundtag == null || !compoundtag.m_128471_("Unbreakable"); + public boolean isDamageableItem() { +- if (!this.isEmpty() && this.getItem().getMaxDamage() > 0) { ++ if (!this.isEmpty() && this.getItem().isDamageable(this)) { + CompoundTag compoundtag = this.getTag(); + return compoundtag == null || !compoundtag.getBoolean("Unbreakable"); } else { @@ -288,19 +_,19 @@ } - public boolean m_41768_() { -- return this.m_41763_() && this.m_41773_() > 0; -+ return this.m_41763_() && m_41720_().isDamaged(this); + public boolean isDamaged() { +- return this.isDamageableItem() && this.getDamageValue() > 0; ++ return this.isDamageableItem() && getItem().isDamaged(this); } - public int m_41773_() { -- return this.f_41590_ == null ? 0 : this.f_41590_.m_128451_("Damage"); -+ return this.m_41720_().getDamage(this); + public int getDamageValue() { +- return this.tag == null ? 0 : this.tag.getInt("Damage"); ++ return this.getItem().getDamage(this); } - public void m_41721_(int p_41722_) { -- this.m_41784_().m_128405_("Damage", Math.max(0, p_41722_)); -+ this.m_41720_().setDamage(this, p_41722_); + public void setDamageValue(int p_41722_) { +- this.getOrCreateTag().putInt("Damage", Math.max(0, p_41722_)); ++ this.getItem().setDamage(this, p_41722_); } - public int m_41776_() { -- return this.m_41720_().m_41462_(); -+ return this.m_41720_().getMaxDamage(this); + public int getMaxDamage() { +- return this.getItem().getMaxDamage(); ++ return this.getItem().getMaxDamage(this); } - public boolean m_220157_(int p_220158_, RandomSource p_220159_, @Nullable ServerPlayer p_220160_) { + public boolean hurt(int p_220158_, RandomSource p_220159_, @Nullable ServerPlayer p_220160_) { @@ -336,6 +_,7 @@ - public void m_41622_(int p_41623_, T p_41624_, Consumer p_41625_) { - if (!p_41624_.m_9236_().f_46443_ && (!(p_41624_ instanceof Player) || !((Player)p_41624_).m_150110_().f_35937_)) { - if (this.m_41763_()) { -+ p_41623_ = this.m_41720_().damageItem(this, p_41623_, p_41624_, p_41625_); - if (this.m_220157_(p_41623_, p_41624_.m_217043_(), p_41624_ instanceof ServerPlayer ? (ServerPlayer)p_41624_ : null)) { + public void hurtAndBreak(int p_41623_, T p_41624_, Consumer p_41625_) { + if (!p_41624_.level().isClientSide && (!(p_41624_ instanceof Player) || !((Player)p_41624_).getAbilities().instabuild)) { + if (this.isDamageableItem()) { ++ p_41623_ = this.getItem().damageItem(this, p_41623_, p_41624_, p_41625_); + if (this.hurt(p_41623_, p_41624_.getRandom(), p_41624_ instanceof ServerPlayer ? (ServerPlayer)p_41624_ : null)) { p_41625_.accept(p_41624_); - Item item = this.m_41720_(); + Item item = this.getItem(); @@ -388,7 +_,7 @@ } - public boolean m_41735_(BlockState p_41736_) { -- return this.m_41720_().m_8096_(p_41736_); -+ return this.m_41720_().isCorrectToolForDrops(this, p_41736_); + public boolean isCorrectToolForDrops(BlockState p_41736_) { +- return this.getItem().isCorrectToolForDrops(p_41736_); ++ return this.getItem().isCorrectToolForDrops(this, p_41736_); } - public InteractionResult m_41647_(Player p_41648_, LivingEntity p_41649_, InteractionHand p_41650_) { + public InteractionResult interactLivingEntity(Player p_41648_, LivingEntity p_41649_, InteractionHand p_41650_) { @@ -399,7 +_,7 @@ - if (this.m_41619_()) { - return f_41583_; + if (this.isEmpty()) { + return EMPTY; } else { -- ItemStack itemstack = new ItemStack(this.m_41720_(), this.f_41587_); -+ ItemStack itemstack = new ItemStack(this.m_41720_(), this.f_41587_, this.serializeCaps()); - itemstack.m_41754_(this.m_41612_()); - if (this.f_41590_ != null) { - itemstack.f_41590_ = this.f_41590_.m_6426_(); +- ItemStack itemstack = new ItemStack(this.getItem(), this.count); ++ ItemStack itemstack = new ItemStack(this.getItem(), this.count, this.serializeCaps()); + itemstack.setPopTime(this.getPopTime()); + if (this.tag != null) { + itemstack.tag = this.tag.copy(); @@ -435,7 +_,7 @@ - if (!p_150943_.m_150930_(p_150944_.m_41720_())) { + if (!p_150943_.is(p_150944_.getItem())) { return false; } else { -- return p_150943_.m_41619_() && p_150944_.m_41619_() ? true : Objects.equals(p_150943_.f_41590_, p_150944_.f_41590_); -+ return p_150943_.m_41619_() && p_150944_.m_41619_() ? true : Objects.equals(p_150943_.f_41590_, p_150944_.f_41590_) && p_150943_.areCapsCompatible(p_150944_); +- return p_150943_.isEmpty() && p_150944_.isEmpty() ? true : Objects.equals(p_150943_.tag, p_150944_.tag); ++ return p_150943_.isEmpty() && p_150944_.isEmpty() ? true : Objects.equals(p_150943_.tag, p_150944_.tag) && p_150943_.areCapsCompatible(p_150944_); } } @@ -527,7 +_,7 @@ - public void m_41751_(@Nullable CompoundTag p_41752_) { - this.f_41590_ = p_41752_; -- if (this.m_41720_().m_41465_()) { -+ if (this.m_41720_().isDamageable(this)) { - this.m_41721_(this.m_41773_()); + public void setTag(@Nullable CompoundTag p_41752_) { + this.tag = p_41752_; +- if (this.getItem().canBeDepleted()) { ++ if (this.getItem().isDamageable(this)) { + this.setDamageValue(this.getDamageValue()); } @@ -588,7 +_,7 @@ - public List m_41651_(@Nullable Player p_41652_, TooltipFlag p_41653_) { + public List getTooltipLines(@Nullable Player p_41652_, TooltipFlag p_41653_) { List list = Lists.newArrayList(); -- MutableComponent mutablecomponent = Component.m_237119_().m_7220_(this.m_41786_()).m_130940_(this.m_41791_().f_43022_); -+ MutableComponent mutablecomponent = Component.m_237119_().m_7220_(this.m_41786_()).m_130938_(this.m_41791_().getStyleModifier()); - if (this.m_41788_()) { - mutablecomponent.m_130940_(ChatFormatting.ITALIC); +- MutableComponent mutablecomponent = Component.empty().append(this.getHoverName()).withStyle(this.getRarity().color); ++ MutableComponent mutablecomponent = Component.empty().append(this.getHoverName()).withStyle(this.getRarity().getStyleModifier()); + if (this.hasCustomHoverName()) { + mutablecomponent.withStyle(ChatFormatting.ITALIC); } @@ -735,6 +_,7 @@ - list.add(f_243862_); + list.add(DISABLED_ITEM_TOOLTIP); } + net.minecraftforge.event.ForgeEventFactory.onItemTooltip(this, p_41652_, list, p_41653_); @@ -221,18 +221,18 @@ @@ -743,7 +_,7 @@ } - private int m_41618_() { -- return this.m_41782_() && this.f_41590_.m_128425_("HideFlags", 99) ? this.f_41590_.m_128451_("HideFlags") : 0; -+ return this.m_41782_() && this.f_41590_.m_128425_("HideFlags", 99) ? this.f_41590_.m_128451_("HideFlags") : this.m_41720_().getDefaultTooltipHideFlags(this); + private int getHideFlags() { +- return this.hasTag() && this.tag.contains("HideFlags", 99) ? this.tag.getInt("HideFlags") : 0; ++ return this.hasTag() && this.tag.contains("HideFlags", 99) ? this.tag.getInt("HideFlags") : this.getItem().getDefaultTooltipHideFlags(this); } - public void m_41654_(ItemStack.TooltipPart p_41655_) { + public void hideTooltipPart(ItemStack.TooltipPart p_41655_) { @@ -863,9 +_,10 @@ } } } else { -- multimap = this.m_41720_().m_7167_(p_41639_); -+ multimap = this.m_41720_().getAttributeModifiers(p_41639_, this); +- multimap = this.getItem().getDefaultAttributeModifiers(p_41639_); ++ multimap = this.getItem().getAttributeModifiers(p_41639_, this); } + multimap = net.minecraftforge.common.ForgeHooks.getAttributeModifiers(this, p_41639_, multimap); @@ -241,31 +241,31 @@ @@ -893,7 +_,7 @@ - MutableComponent mutablecomponent1 = ComponentUtils.m_130748_(mutablecomponent); - if (!this.m_41619_()) { -- mutablecomponent1.m_130940_(this.m_41791_().f_43022_).m_130938_((p_220170_) -> { -+ mutablecomponent1.m_130938_(this.m_41791_().getStyleModifier()).m_130938_((p_220170_) -> { - return p_220170_.m_131144_(new HoverEvent(HoverEvent.Action.f_130832_, new HoverEvent.ItemStackInfo(this))); + MutableComponent mutablecomponent1 = ComponentUtils.wrapInSquareBrackets(mutablecomponent); + if (!this.isEmpty()) { +- mutablecomponent1.withStyle(this.getRarity().color).withStyle((p_220170_) -> { ++ mutablecomponent1.withStyle(this.getRarity().getStyleModifier()).withStyle((p_220170_) -> { + return p_220170_.withHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_ITEM, new HoverEvent.ItemStackInfo(this))); }); } @@ -945,12 +_,31 @@ - this.m_41720_().m_5929_(p_41732_, p_41733_, this, p_41734_); + this.getItem().onUseTick(p_41732_, p_41733_, this, p_41734_); } + /** @deprecated Forge: Use {@linkplain net.minecraftforge.common.extensions.IForgeItemStack#onDestroyed(ItemEntity, net.minecraft.world.damagesource.DamageSource) damage source sensitive version} */ + @Deprecated - public void m_150924_(ItemEntity p_150925_) { - this.m_41720_().m_142023_(p_150925_); + public void onDestroyed(ItemEntity p_150925_) { + this.getItem().onDestroyed(p_150925_); } - public boolean m_41614_() { - return this.m_41720_().m_41472_(); + public boolean isEdible() { + return this.getItem().isEdible(); + } + + // FORGE START + public void deserializeNBT(CompoundTag nbt) { -+ final ItemStack itemStack = ItemStack.m_41712_(nbt); -+ this.m_41751_(itemStack.m_41783_()); ++ final ItemStack itemStack = ItemStack.of(nbt); ++ this.setTag(itemStack.getTag()); + if (itemStack.capNBT != null) deserializeCaps(itemStack.capNBT); + } + @@ -274,9 +274,9 @@ + */ + private void forgeInit() { + if (this.delegate != null) { -+ this.gatherCapabilities(() -> f_41589_.initCapabilities(this, this.capNBT)); ++ this.gatherCapabilities(() -> item.initCapabilities(this, this.capNBT)); + if (this.capNBT != null) deserializeCaps(this.capNBT); + } } - public SoundEvent m_41615_() { + public SoundEvent getDrinkingSound() { diff --git a/patches/minecraft/net/minecraft/world/item/Items.java.patch b/patches/minecraft/net/minecraft/world/item/Items.java.patch index cc781b65a0..e4015c3d33 100644 --- a/patches/minecraft/net/minecraft/world/item/Items.java.patch +++ b/patches/minecraft/net/minecraft/world/item/Items.java.patch @@ -3,19 +3,19 @@ @@ -1279,11 +_,23 @@ } - public static Item m_245048_(Block p_252092_, Block... p_248886_) { + public static Item registerBlock(Block p_252092_, Block... p_248886_) { - BlockItem blockitem = new BlockItem(p_252092_, new Item.Properties()); + BlockItem blockitem = new BlockItem(p_252092_, new Item.Properties()) { + @Override -+ public void m_6192_(java.util.Map map, Item self) { -+ super.m_6192_(map, self); ++ public void registerBlocks(java.util.Map map, Item self) { ++ super.registerBlocks(map, self); + for (Block b : p_248886_) { + map.put(b, self); + } + } - for(Block block : p_248886_) { -- Item.f_41373_.put(block, blockitem); +- Item.BY_BLOCK.put(block, blockitem); - } + @Override + public void removeFromBlockToItemMap(java.util.Map map, Item self) { @@ -26,5 +26,5 @@ + } + }; - return m_42803_(blockitem); + return registerBlock(blockitem); } diff --git a/patches/minecraft/net/minecraft/world/item/MapItem.java.patch b/patches/minecraft/net/minecraft/world/item/MapItem.java.patch index 368212ac6d..434a6f0ad3 100644 --- a/patches/minecraft/net/minecraft/world/item/MapItem.java.patch +++ b/patches/minecraft/net/minecraft/world/item/MapItem.java.patch @@ -3,11 +3,11 @@ @@ -58,8 +_,18 @@ @Nullable - public static MapItemSavedData m_42853_(ItemStack p_42854_, Level p_42855_) { -- Integer integer = m_151131_(p_42854_); -- return m_151128_(integer, p_42855_); + public static MapItemSavedData getSavedData(ItemStack p_42854_, Level p_42855_) { +- Integer integer = getMapId(p_42854_); +- return getSavedData(integer, p_42855_); + // Forge: Add instance method so that mods can override -+ Item map = p_42854_.m_41720_(); ++ Item map = p_42854_.getItem(); + if(map instanceof MapItem) { + return ((MapItem)map).getCustomMapData(p_42854_, p_42855_); + } @@ -16,8 +16,8 @@ + + @Nullable + protected MapItemSavedData getCustomMapData(ItemStack p_42910_, Level p_42911_) { -+ Integer integer = m_151131_(p_42910_); -+ return m_151128_(integer, p_42911_); ++ Integer integer = getMapId(p_42910_); ++ return getSavedData(integer, p_42911_); } @Nullable diff --git a/patches/minecraft/net/minecraft/world/item/MilkBucketItem.java.patch b/patches/minecraft/net/minecraft/world/item/MilkBucketItem.java.patch index 1676558317..52bbe36bf1 100644 --- a/patches/minecraft/net/minecraft/world/item/MilkBucketItem.java.patch +++ b/patches/minecraft/net/minecraft/world/item/MilkBucketItem.java.patch @@ -3,26 +3,26 @@ @@ -17,6 +_,7 @@ } - public ItemStack m_5922_(ItemStack p_42923_, Level p_42924_, LivingEntity p_42925_) { -+ if (!p_42924_.f_46443_) p_42925_.curePotionEffects(p_42923_); // FORGE - move up so stack.shrink does not turn stack into air + public ItemStack finishUsingItem(ItemStack p_42923_, Level p_42924_, LivingEntity p_42925_) { ++ if (!p_42924_.isClientSide) p_42925_.curePotionEffects(p_42923_); // FORGE - move up so stack.shrink does not turn stack into air if (p_42925_ instanceof ServerPlayer serverplayer) { - CriteriaTriggers.f_10592_.m_23682_(serverplayer, p_42923_); - serverplayer.m_36246_(Stats.f_12982_.m_12902_(this)); + CriteriaTriggers.CONSUME_ITEM.trigger(serverplayer, p_42923_); + serverplayer.awardStat(Stats.ITEM_USED.get(this)); @@ -26,10 +_,6 @@ - p_42923_.m_41774_(1); + p_42923_.shrink(1); } -- if (!p_42924_.f_46443_) { -- p_42925_.m_21219_(); +- if (!p_42924_.isClientSide) { +- p_42925_.removeAllEffects(); - } - - return p_42923_.m_41619_() ? new ItemStack(Items.f_42446_) : p_42923_; + return p_42923_.isEmpty() ? new ItemStack(Items.BUCKET) : p_42923_; } @@ -43,5 +_,10 @@ - public InteractionResultHolder m_7203_(Level p_42927_, Player p_42928_, InteractionHand p_42929_) { - return ItemUtils.m_150959_(p_42927_, p_42928_, p_42929_); + public InteractionResultHolder use(Level p_42927_, Player p_42928_, InteractionHand p_42929_) { + return ItemUtils.startUsingInstantly(p_42927_, p_42928_, p_42929_); + } + + @Override diff --git a/patches/minecraft/net/minecraft/world/item/MinecartItem.java.patch b/patches/minecraft/net/minecraft/world/item/MinecartItem.java.patch index cb7aead10a..0201c92a03 100644 --- a/patches/minecraft/net/minecraft/world/item/MinecartItem.java.patch +++ b/patches/minecraft/net/minecraft/world/item/MinecartItem.java.patch @@ -1,20 +1,20 @@ --- a/net/minecraft/world/item/MinecartItem.java +++ b/net/minecraft/world/item/MinecartItem.java @@ -28,7 +_,7 @@ - double d2 = p_42949_.m_7094_() + (double)direction.m_122431_() * 1.125D; - BlockPos blockpos = p_42949_.m_7961_().m_121945_(direction); - BlockState blockstate = level.m_8055_(blockpos); -- RailShape railshape = blockstate.m_60734_() instanceof BaseRailBlock ? blockstate.m_61143_(((BaseRailBlock)blockstate.m_60734_()).m_7978_()) : RailShape.NORTH_SOUTH; -+ RailShape railshape = blockstate.m_60734_() instanceof BaseRailBlock ? ((BaseRailBlock)blockstate.m_60734_()).getRailDirection(blockstate, level, blockpos, null) : RailShape.NORTH_SOUTH; + double d2 = p_42949_.z() + (double)direction.getStepZ() * 1.125D; + BlockPos blockpos = p_42949_.getPos().relative(direction); + BlockState blockstate = level.getBlockState(blockpos); +- RailShape railshape = blockstate.getBlock() instanceof BaseRailBlock ? blockstate.getValue(((BaseRailBlock)blockstate.getBlock()).getShapeProperty()) : RailShape.NORTH_SOUTH; ++ RailShape railshape = blockstate.getBlock() instanceof BaseRailBlock ? ((BaseRailBlock)blockstate.getBlock()).getRailDirection(blockstate, level, blockpos, null) : RailShape.NORTH_SOUTH; double d3; - if (blockstate.m_204336_(BlockTags.f_13034_)) { - if (railshape.m_61745_()) { + if (blockstate.is(BlockTags.RAILS)) { + if (railshape.isAscending()) { @@ -81,7 +_,7 @@ } else { - ItemStack itemstack = p_42943_.m_43722_(); - if (!level.f_46443_) { -- RailShape railshape = blockstate.m_60734_() instanceof BaseRailBlock ? blockstate.m_61143_(((BaseRailBlock)blockstate.m_60734_()).m_7978_()) : RailShape.NORTH_SOUTH; -+ RailShape railshape = blockstate.m_60734_() instanceof BaseRailBlock ? ((BaseRailBlock)blockstate.m_60734_()).getRailDirection(blockstate, level, blockpos, null) : RailShape.NORTH_SOUTH; + ItemStack itemstack = p_42943_.getItemInHand(); + if (!level.isClientSide) { +- RailShape railshape = blockstate.getBlock() instanceof BaseRailBlock ? blockstate.getValue(((BaseRailBlock)blockstate.getBlock()).getShapeProperty()) : RailShape.NORTH_SOUTH; ++ RailShape railshape = blockstate.getBlock() instanceof BaseRailBlock ? ((BaseRailBlock)blockstate.getBlock()).getRailDirection(blockstate, level, blockpos, null) : RailShape.NORTH_SOUTH; double d0 = 0.0D; - if (railshape.m_61745_()) { + if (railshape.isAscending()) { d0 = 0.5D; diff --git a/patches/minecraft/net/minecraft/world/item/MobBucketItem.java.patch b/patches/minecraft/net/minecraft/world/item/MobBucketItem.java.patch index 01ecd00890..3fb8bbb174 100644 --- a/patches/minecraft/net/minecraft/world/item/MobBucketItem.java.patch +++ b/patches/minecraft/net/minecraft/world/item/MobBucketItem.java.patch @@ -4,16 +4,16 @@ import net.minecraft.world.level.material.Fluid; public class MobBucketItem extends BucketItem { -- private final EntityType f_151134_; -- private final SoundEvent f_151135_; +- private final EntityType type; +- private final SoundEvent emptySound; + private final java.util.function.Supplier> entityTypeSupplier; + private final java.util.function.Supplier emptySoundSupplier; + @Deprecated public MobBucketItem(EntityType p_151137_, Fluid p_151138_, SoundEvent p_151139_, Item.Properties p_151140_) { - super(p_151138_, p_151140_); -- this.f_151134_ = p_151137_; -- this.f_151135_ = p_151139_; +- this.type = p_151137_; +- this.emptySound = p_151139_; + this(() -> p_151137_, () -> p_151138_, () -> p_151139_, p_151140_); + } + @@ -23,30 +23,30 @@ + this.entityTypeSupplier = entitySupplier; } - public void m_142131_(@Nullable Player p_151146_, Level p_151147_, ItemStack p_151148_, BlockPos p_151149_) { + public void checkExtraContent(@Nullable Player p_151146_, Level p_151147_, ItemStack p_151148_, BlockPos p_151149_) { @@ -40,11 +_,11 @@ } - protected void m_7718_(@Nullable Player p_151151_, LevelAccessor p_151152_, BlockPos p_151153_) { -- p_151152_.m_5594_(p_151151_, p_151153_, this.f_151135_, SoundSource.NEUTRAL, 1.0F, 1.0F); -+ p_151152_.m_5594_(p_151151_, p_151153_, getEmptySound(), SoundSource.NEUTRAL, 1.0F, 1.0F); + protected void playEmptySound(@Nullable Player p_151151_, LevelAccessor p_151152_, BlockPos p_151153_) { +- p_151152_.playSound(p_151151_, p_151153_, this.emptySound, SoundSource.NEUTRAL, 1.0F, 1.0F); ++ p_151152_.playSound(p_151151_, p_151153_, getEmptySound(), SoundSource.NEUTRAL, 1.0F, 1.0F); } - private void m_151141_(ServerLevel p_151142_, ItemStack p_151143_, BlockPos p_151144_) { -- Entity entity = this.f_151134_.m_20592_(p_151142_, p_151143_, (Player)null, p_151144_, MobSpawnType.BUCKET, true, false); -+ Entity entity = getFishType().m_20592_(p_151142_, p_151143_, (Player)null, p_151144_, MobSpawnType.BUCKET, true, false); + private void spawn(ServerLevel p_151142_, ItemStack p_151143_, BlockPos p_151144_) { +- Entity entity = this.type.spawn(p_151142_, p_151143_, (Player)null, p_151144_, MobSpawnType.BUCKET, true, false); ++ Entity entity = getFishType().spawn(p_151142_, p_151143_, (Player)null, p_151144_, MobSpawnType.BUCKET, true, false); if (entity instanceof Bucketable bucketable) { - bucketable.m_142278_(p_151143_.m_41784_()); - bucketable.m_27497_(true); + bucketable.loadFromBucketTag(p_151143_.getOrCreateTag()); + bucketable.setFromBucket(true); @@ -53,7 +_,7 @@ } - public void m_7373_(ItemStack p_151155_, @Nullable Level p_151156_, List p_151157_, TooltipFlag p_151158_) { -- if (this.f_151134_ == EntityType.f_20489_) { -+ if (getFishType() == EntityType.f_20489_) { - CompoundTag compoundtag = p_151155_.m_41783_(); - if (compoundtag != null && compoundtag.m_128425_("BucketVariantTag", 3)) { - int i = compoundtag.m_128451_("BucketVariantTag"); + public void appendHoverText(ItemStack p_151155_, @Nullable Level p_151156_, List p_151157_, TooltipFlag p_151158_) { +- if (this.type == EntityType.TROPICAL_FISH) { ++ if (getFishType() == EntityType.TROPICAL_FISH) { + CompoundTag compoundtag = p_151155_.getTag(); + if (compoundtag != null && compoundtag.contains("BucketVariantTag", 3)) { + int i = compoundtag.getInt("BucketVariantTag"); @@ -79,5 +_,14 @@ } } diff --git a/patches/minecraft/net/minecraft/world/item/PickaxeItem.java.patch b/patches/minecraft/net/minecraft/world/item/PickaxeItem.java.patch index 3cc3068a54..e472644dbb 100644 --- a/patches/minecraft/net/minecraft/world/item/PickaxeItem.java.patch +++ b/patches/minecraft/net/minecraft/world/item/PickaxeItem.java.patch @@ -2,7 +2,7 @@ +++ b/net/minecraft/world/item/PickaxeItem.java @@ -6,4 +_,9 @@ public PickaxeItem(Tier p_42961_, int p_42962_, float p_42963_, Item.Properties p_42964_) { - super((float)p_42962_, p_42963_, p_42961_, BlockTags.f_144282_, p_42964_); + super((float)p_42962_, p_42963_, p_42961_, BlockTags.MINEABLE_WITH_PICKAXE, p_42964_); } + + @Override diff --git a/patches/minecraft/net/minecraft/world/item/Rarity.java.patch b/patches/minecraft/net/minecraft/world/item/Rarity.java.patch index a7607d4c4d..2af5d9b7a9 100644 --- a/patches/minecraft/net/minecraft/world/item/Rarity.java.patch +++ b/patches/minecraft/net/minecraft/world/item/Rarity.java.patch @@ -13,16 +13,16 @@ + /** @deprecated Forge: Use {@link #getStyleModifier()} */ + @Deprecated - public final ChatFormatting f_43022_; + public final ChatFormatting color; + private final java.util.function.UnaryOperator styleModifier; private Rarity(ChatFormatting p_43028_) { - this.f_43022_ = p_43028_; -+ this.styleModifier = style -> style.m_131140_(p_43028_); + this.color = p_43028_; ++ this.styleModifier = style -> style.withColor(p_43028_); + } + + Rarity(java.util.function.UnaryOperator styleModifier) { -+ this.f_43022_ = ChatFormatting.BLACK; ++ this.color = ChatFormatting.BLACK; + this.styleModifier = styleModifier; + } + diff --git a/patches/minecraft/net/minecraft/world/item/RecordItem.java.patch b/patches/minecraft/net/minecraft/world/item/RecordItem.java.patch index bb1c90c696..5885b79c86 100644 --- a/patches/minecraft/net/minecraft/world/item/RecordItem.java.patch +++ b/patches/minecraft/net/minecraft/world/item/RecordItem.java.patch @@ -5,21 +5,21 @@ public class RecordItem extends Item { + @Deprecated // Forge: refer to WorldRender#playRecord. Modders: there's no need to reflectively modify this map! - private static final Map f_43032_ = Maps.newHashMap(); - private final int f_43033_; + private static final Map BY_NAME = Maps.newHashMap(); + private final int analogOutput; + @Deprecated // Forge: refer to soundSupplier - private final SoundEvent f_43034_; - private final int f_238749_; + private final SoundEvent sound; + private final int lengthInTicks; + private final java.util.function.Supplier soundSupplier; + @Deprecated // Forge: Use the constructor that takes a supplier instead public RecordItem(int p_239614_, SoundEvent p_239615_, Item.Properties p_239616_, int p_239617_) { super(p_239616_); - this.f_43033_ = p_239614_; - this.f_43034_ = p_239615_; - this.f_238749_ = p_239617_ * 20; - f_43032_.put(this.f_43034_, this); -+ this.soundSupplier = net.minecraftforge.registries.ForgeRegistries.SOUND_EVENTS.getDelegateOrThrow(this.f_43034_); + this.analogOutput = p_239614_; + this.sound = p_239615_; + this.lengthInTicks = p_239617_ * 20; + BY_NAME.put(this.sound, this); ++ this.soundSupplier = net.minecraftforge.registries.ForgeRegistries.SOUND_EVENTS.getDelegateOrThrow(this.sound); + } + + /** @@ -36,19 +36,19 @@ + public RecordItem(int comparatorValue, java.util.function.Supplier soundSupplier, Item.Properties builder, int lengthInTicks) + { + super(builder); -+ this.f_43033_ = comparatorValue; -+ this.f_43034_ = null; ++ this.analogOutput = comparatorValue; ++ this.sound = null; + this.soundSupplier = soundSupplier; -+ this.f_238749_ = lengthInTicks; ++ this.lengthInTicks = lengthInTicks; } - public InteractionResult m_6225_(UseOnContext p_43048_) { + public InteractionResult useOn(UseOnContext p_43048_) { @@ -80,7 +_,7 @@ } - public SoundEvent m_43051_() { -- return this.f_43034_; + public SoundEvent getSound() { +- return this.sound; + return this.soundSupplier.get(); } - public int m_43036_() { + public int getLengthInTicks() { diff --git a/patches/minecraft/net/minecraft/world/item/ShearsItem.java.patch b/patches/minecraft/net/minecraft/world/item/ShearsItem.java.patch index 12e1b525e0..86768eb675 100644 --- a/patches/minecraft/net/minecraft/world/item/ShearsItem.java.patch +++ b/patches/minecraft/net/minecraft/world/item/ShearsItem.java.patch @@ -5,19 +5,19 @@ } + @Override -+ public net.minecraft.world.InteractionResult m_6880_(ItemStack stack, net.minecraft.world.entity.player.Player playerIn, LivingEntity entity, net.minecraft.world.InteractionHand hand) { ++ public net.minecraft.world.InteractionResult interactLivingEntity(ItemStack stack, net.minecraft.world.entity.player.Player playerIn, LivingEntity entity, net.minecraft.world.InteractionHand hand) { + if (entity instanceof net.minecraftforge.common.IForgeShearable target) { -+ if (entity.m_9236_().f_46443_) return net.minecraft.world.InteractionResult.SUCCESS; -+ BlockPos pos = BlockPos.m_274446_(entity.m_20182_()); -+ if (target.isShearable(stack, entity.m_9236_(), pos)) { -+ java.util.List drops = target.onSheared(playerIn, stack, entity.m_9236_(), pos, -+ net.minecraft.world.item.enchantment.EnchantmentHelper.m_44843_(net.minecraft.world.item.enchantment.Enchantments.f_44987_, stack)); ++ if (entity.level().isClientSide) return net.minecraft.world.InteractionResult.SUCCESS; ++ BlockPos pos = BlockPos.containing(entity.position()); ++ if (target.isShearable(stack, entity.level(), pos)) { ++ java.util.List drops = target.onSheared(playerIn, stack, entity.level(), pos, ++ net.minecraft.world.item.enchantment.EnchantmentHelper.getItemEnchantmentLevel(net.minecraft.world.item.enchantment.Enchantments.BLOCK_FORTUNE, stack)); + java.util.Random rand = new java.util.Random(); + drops.forEach(d -> { -+ net.minecraft.world.entity.item.ItemEntity ent = entity.m_5552_(d, 1.0F); -+ ent.m_20256_(ent.m_20184_().m_82520_((double)((rand.nextFloat() - rand.nextFloat()) * 0.1F), (double)(rand.nextFloat() * 0.05F), (double)((rand.nextFloat() - rand.nextFloat()) * 0.1F))); ++ net.minecraft.world.entity.item.ItemEntity ent = entity.spawnAtLocation(d, 1.0F); ++ ent.setDeltaMovement(ent.getDeltaMovement().add((double)((rand.nextFloat() - rand.nextFloat()) * 0.1F), (double)(rand.nextFloat() * 0.05F), (double)((rand.nextFloat() - rand.nextFloat()) * 0.1F))); + }); -+ stack.m_41622_(1, playerIn, e -> e.m_21190_(hand)); ++ stack.hurtAndBreak(1, playerIn, e -> e.broadcastBreakEvent(hand)); + } + return net.minecraft.world.InteractionResult.SUCCESS; + } @@ -29,6 +29,6 @@ + return net.minecraftforge.common.ToolActions.DEFAULT_SHEARS_ACTIONS.contains(toolAction); + } + - public InteractionResult m_6225_(UseOnContext p_186371_) { - Level level = p_186371_.m_43725_(); - BlockPos blockpos = p_186371_.m_8083_(); + public InteractionResult useOn(UseOnContext p_186371_) { + Level level = p_186371_.getLevel(); + BlockPos blockpos = p_186371_.getClickedPos(); diff --git a/patches/minecraft/net/minecraft/world/item/ShieldItem.java.patch b/patches/minecraft/net/minecraft/world/item/ShieldItem.java.patch index 26fb5f77e1..8ce0504f73 100644 --- a/patches/minecraft/net/minecraft/world/item/ShieldItem.java.patch +++ b/patches/minecraft/net/minecraft/world/item/ShieldItem.java.patch @@ -1,7 +1,7 @@ --- a/net/minecraft/world/item/ShieldItem.java +++ b/net/minecraft/world/item/ShieldItem.java @@ -53,6 +_,13 @@ - return compoundtag != null ? DyeColor.m_41053_(compoundtag.m_128451_("Base")) : DyeColor.WHITE; + return compoundtag != null ? DyeColor.byId(compoundtag.getInt("Base")) : DyeColor.WHITE; } + /* ******************** FORGE START ******************** */ @@ -11,6 +11,6 @@ + return net.minecraftforge.common.ToolActions.DEFAULT_SHIELD_ACTIONS.contains(toolAction); + } + - public EquipmentSlot m_40402_() { + public EquipmentSlot getEquipmentSlot() { return EquipmentSlot.OFFHAND; } diff --git a/patches/minecraft/net/minecraft/world/item/ShovelItem.java.patch b/patches/minecraft/net/minecraft/world/item/ShovelItem.java.patch index 37ab4a8e2d..e8e5e02716 100644 --- a/patches/minecraft/net/minecraft/world/item/ShovelItem.java.patch +++ b/patches/minecraft/net/minecraft/world/item/ShovelItem.java.patch @@ -3,15 +3,15 @@ @@ -33,9 +_,9 @@ return InteractionResult.PASS; } else { - Player player = p_43119_.m_43723_(); -- BlockState blockstate1 = f_43110_.get(blockstate.m_60734_()); + Player player = p_43119_.getPlayer(); +- BlockState blockstate1 = FLATTENABLES.get(blockstate.getBlock()); + BlockState blockstate1 = blockstate.getToolModifiedState(p_43119_, net.minecraftforge.common.ToolActions.SHOVEL_FLATTEN, false); BlockState blockstate2 = null; -- if (blockstate1 != null && level.m_8055_(blockpos.m_7494_()).m_60795_()) { -+ if (blockstate1 != null && level.m_46859_(blockpos.m_7494_())) { - level.m_5594_(player, blockpos, SoundEvents.f_12406_, SoundSource.BLOCKS, 1.0F, 1.0F); +- if (blockstate1 != null && level.getBlockState(blockpos.above()).isAir()) { ++ if (blockstate1 != null && level.isEmptyBlock(blockpos.above())) { + level.playSound(player, blockpos, SoundEvents.SHOVEL_FLATTEN, SoundSource.BLOCKS, 1.0F, 1.0F); blockstate2 = blockstate1; - } else if (blockstate.m_60734_() instanceof CampfireBlock && blockstate.m_61143_(CampfireBlock.f_51227_)) { + } else if (blockstate.getBlock() instanceof CampfireBlock && blockstate.getValue(CampfireBlock.LIT)) { @@ -63,5 +_,15 @@ return InteractionResult.PASS; } @@ -20,7 +20,7 @@ + + @org.jetbrains.annotations.Nullable + public static BlockState getShovelPathingState(BlockState originalState) { -+ return f_43110_.get(originalState.m_60734_()); ++ return FLATTENABLES.get(originalState.getBlock()); + } + + @Override diff --git a/patches/minecraft/net/minecraft/world/item/SpawnEggItem.java.patch b/patches/minecraft/net/minecraft/world/item/SpawnEggItem.java.patch index 3c1b83c719..7454e61439 100644 --- a/patches/minecraft/net/minecraft/world/item/SpawnEggItem.java.patch +++ b/patches/minecraft/net/minecraft/world/item/SpawnEggItem.java.patch @@ -1,48 +1,48 @@ --- a/net/minecraft/world/item/SpawnEggItem.java +++ b/net/minecraft/world/item/SpawnEggItem.java @@ -40,11 +_,14 @@ - private final int f_151201_; - private final EntityType f_43204_; + private final int highlightColor; + private final EntityType defaultType; + /** @deprecated Forge: Use {@link net.minecraftforge.common.ForgeSpawnEggItem} instead for suppliers */ + @Deprecated public SpawnEggItem(EntityType p_43207_, int p_43208_, int p_43209_, Item.Properties p_43210_) { super(p_43210_); - this.f_43204_ = p_43207_; - this.f_151200_ = p_43208_; - this.f_151201_ = p_43209_; + this.defaultType = p_43207_; + this.backgroundColor = p_43208_; + this.highlightColor = p_43209_; + if (p_43207_ != null) - f_43201_.put(p_43207_, this); + BY_ID.put(p_43207_, this); } @@ -127,6 +_,8 @@ - return p_43212_ == 0 ? this.f_151200_ : this.f_151201_; + return p_43212_ == 0 ? this.backgroundColor : this.highlightColor; } + /** @deprecated Forge: call {@link net.minecraftforge.common.ForgeSpawnEggItem#fromEntityType(EntityType)} instead */ + @Deprecated @Nullable - public static SpawnEggItem m_43213_(@Nullable EntityType p_43214_) { - return f_43201_.get(p_43214_); + public static SpawnEggItem byId(@Nullable EntityType p_43214_) { + return BY_ID.get(p_43214_); @@ -140,15 +_,15 @@ - if (p_43229_ != null && p_43229_.m_128425_("EntityTag", 10)) { - CompoundTag compoundtag = p_43229_.m_128469_("EntityTag"); - if (compoundtag.m_128425_("id", 8)) { -- return EntityType.m_20632_(compoundtag.m_128461_("id")).orElse(this.f_43204_); -+ return EntityType.m_20632_(compoundtag.m_128461_("id")).orElse(this.getDefaultType()); + if (p_43229_ != null && p_43229_.contains("EntityTag", 10)) { + CompoundTag compoundtag = p_43229_.getCompound("EntityTag"); + if (compoundtag.contains("id", 8)) { +- return EntityType.byString(compoundtag.getString("id")).orElse(this.defaultType); ++ return EntityType.byString(compoundtag.getString("id")).orElse(this.getDefaultType()); } } -- return this.f_43204_; +- return this.defaultType; + return this.getDefaultType(); } - public FeatureFlagSet m_245183_() { -- return this.f_43204_.m_245183_(); -+ return this.getDefaultType().m_245183_(); + public FeatureFlagSet requiredFeatures() { +- return this.defaultType.requiredFeatures(); ++ return this.getDefaultType().requiredFeatures(); } - public Optional m_43215_(Player p_43216_, Mob p_43217_, EntityType p_43218_, ServerLevel p_43219_, Vec3 p_43220_, ItemStack p_43221_) { + public Optional spawnOffspringFromSpawnEgg(Player p_43216_, Mob p_43217_, EntityType p_43218_, ServerLevel p_43219_, Vec3 p_43220_, ItemStack p_43221_) { @@ -183,5 +_,9 @@ } } @@ -50,6 +50,6 @@ + } + + protected EntityType getDefaultType() { -+ return f_43204_; ++ return defaultType; } } diff --git a/patches/minecraft/net/minecraft/world/item/StandingAndWallBlockItem.java.patch b/patches/minecraft/net/minecraft/world/item/StandingAndWallBlockItem.java.patch index 7656465d46..636f03b927 100644 --- a/patches/minecraft/net/minecraft/world/item/StandingAndWallBlockItem.java.patch +++ b/patches/minecraft/net/minecraft/world/item/StandingAndWallBlockItem.java.patch @@ -1,12 +1,12 @@ --- a/net/minecraft/world/item/StandingAndWallBlockItem.java +++ b/net/minecraft/world/item/StandingAndWallBlockItem.java @@ -48,4 +_,9 @@ - super.m_6192_(p_43252_, p_43253_); - p_43252_.put(this.f_43246_, p_43253_); + super.registerBlocks(p_43252_, p_43253_); + p_43252_.put(this.wallBlock, p_43253_); } + + public void removeFromBlockToItemMap(Map blockToItemMap, Item itemIn) { + super.removeFromBlockToItemMap(blockToItemMap, itemIn); -+ blockToItemMap.remove(this.f_43246_); ++ blockToItemMap.remove(this.wallBlock); + } } diff --git a/patches/minecraft/net/minecraft/world/item/SwordItem.java.patch b/patches/minecraft/net/minecraft/world/item/SwordItem.java.patch index 62282c6d5f..53e6ce7b8f 100644 --- a/patches/minecraft/net/minecraft/world/item/SwordItem.java.patch +++ b/patches/minecraft/net/minecraft/world/item/SwordItem.java.patch @@ -1,8 +1,8 @@ --- a/net/minecraft/world/item/SwordItem.java +++ b/net/minecraft/world/item/SwordItem.java @@ -67,4 +_,9 @@ - public Multimap m_7167_(EquipmentSlot p_43274_) { - return p_43274_ == EquipmentSlot.MAINHAND ? this.f_43267_ : super.m_7167_(p_43274_); + public Multimap getDefaultAttributeModifiers(EquipmentSlot p_43274_) { + return p_43274_ == EquipmentSlot.MAINHAND ? this.defaultModifiers : super.getDefaultAttributeModifiers(p_43274_); } + + @Override diff --git a/patches/minecraft/net/minecraft/world/item/Tier.java.patch b/patches/minecraft/net/minecraft/world/item/Tier.java.patch index 3b8e27b947..906894d511 100644 --- a/patches/minecraft/net/minecraft/world/item/Tier.java.patch +++ b/patches/minecraft/net/minecraft/world/item/Tier.java.patch @@ -2,14 +2,14 @@ +++ b/net/minecraft/world/item/Tier.java @@ -9,9 +_,12 @@ - float m_6631_(); + float getAttackDamageBonus(); + @Deprecated // FORGE: Use TierSortingRegistry to define which tiers are better than others - int m_6604_(); + int getLevel(); - int m_6601_(); + int getEnchantmentValue(); - Ingredient m_6282_(); + Ingredient getRepairIngredient(); + + @org.jetbrains.annotations.Nullable default net.minecraft.tags.TagKey getTag() { return null; } } diff --git a/patches/minecraft/net/minecraft/world/item/Tiers.java.patch b/patches/minecraft/net/minecraft/world/item/Tiers.java.patch index a31ab01f5f..f4d2313f78 100644 --- a/patches/minecraft/net/minecraft/world/item/Tiers.java.patch +++ b/patches/minecraft/net/minecraft/world/item/Tiers.java.patch @@ -1,8 +1,8 @@ --- a/net/minecraft/world/item/Tiers.java +++ b/net/minecraft/world/item/Tiers.java @@ -64,4 +_,6 @@ - public Ingredient m_6282_() { - return this.f_43326_.m_13971_(); + public Ingredient getRepairIngredient() { + return this.repairIngredient.get(); } + + @org.jetbrains.annotations.Nullable public net.minecraft.tags.TagKey getTag() { return net.minecraftforge.common.ForgeHooks.getTagFromVanillaTier(this); } diff --git a/patches/minecraft/net/minecraft/world/item/alchemy/Potion.java.patch b/patches/minecraft/net/minecraft/world/item/alchemy/Potion.java.patch index b133bd8357..7d90cda0d0 100644 --- a/patches/minecraft/net/minecraft/world/item/alchemy/Potion.java.patch +++ b/patches/minecraft/net/minecraft/world/item/alchemy/Potion.java.patch @@ -7,5 +7,5 @@ -public class Potion { +public class Potion implements net.minecraftforge.common.extensions.IForgePotion { @Nullable - private final String f_43481_; - private final ImmutableList f_43482_; + private final String name; + private final ImmutableList effects; diff --git a/patches/minecraft/net/minecraft/world/item/alchemy/PotionBrewing.java.patch b/patches/minecraft/net/minecraft/world/item/alchemy/PotionBrewing.java.patch index a46bb9635d..6b8209fa11 100644 --- a/patches/minecraft/net/minecraft/world/item/alchemy/PotionBrewing.java.patch +++ b/patches/minecraft/net/minecraft/world/item/alchemy/PotionBrewing.java.patch @@ -2,81 +2,81 @@ +++ b/net/minecraft/world/item/alchemy/PotionBrewing.java @@ -51,7 +_,7 @@ - public static boolean m_43511_(Potion p_43512_) { - for(PotionBrewing.Mix mix : f_43494_) { -- if (mix.f_43534_ == p_43512_) { -+ if (mix.f_43534_.get() == p_43512_) { + public static boolean isBrewablePotion(Potion p_43512_) { + for(PotionBrewing.Mix mix : POTION_MIXES) { +- if (mix.to == p_43512_) { ++ if (mix.to.get() == p_43512_) { return true; } } @@ -71,7 +_,7 @@ - Item item = p_43520_.m_41720_(); + Item item = p_43520_.getItem(); - for(PotionBrewing.Mix mix : f_43495_) { -- if (mix.f_43532_ == item && mix.f_43533_.test(p_43521_)) { -+ if (mix.f_43532_.get() == item && mix.f_43533_.test(p_43521_)) { + for(PotionBrewing.Mix mix : CONTAINER_MIXES) { +- if (mix.from == item && mix.ingredient.test(p_43521_)) { ++ if (mix.from.get() == item && mix.ingredient.test(p_43521_)) { return true; } } @@ -83,7 +_,7 @@ - Potion potion = PotionUtils.m_43579_(p_43525_); + Potion potion = PotionUtils.getPotion(p_43525_); - for(PotionBrewing.Mix mix : f_43494_) { -- if (mix.f_43532_ == potion && mix.f_43533_.test(p_43526_)) { -+ if (mix.f_43532_.get() == potion && mix.f_43533_.test(p_43526_)) { + for(PotionBrewing.Mix mix : POTION_MIXES) { +- if (mix.from == potion && mix.ingredient.test(p_43526_)) { ++ if (mix.from.get() == potion && mix.ingredient.test(p_43526_)) { return true; } } @@ -97,14 +_,14 @@ - Item item = p_43531_.m_41720_(); + Item item = p_43531_.getItem(); - for(PotionBrewing.Mix mix : f_43495_) { -- if (mix.f_43532_ == item && mix.f_43533_.test(p_43530_)) { -- return PotionUtils.m_43549_(new ItemStack(mix.f_43534_), potion); -+ if (mix.f_43532_.get() == item && mix.f_43533_.test(p_43530_)) { -+ return PotionUtils.m_43549_(new ItemStack(mix.f_43534_.get()), potion); + for(PotionBrewing.Mix mix : CONTAINER_MIXES) { +- if (mix.from == item && mix.ingredient.test(p_43530_)) { +- return PotionUtils.setPotion(new ItemStack(mix.to), potion); ++ if (mix.from.get() == item && mix.ingredient.test(p_43530_)) { ++ return PotionUtils.setPotion(new ItemStack(mix.to.get()), potion); } } - for(PotionBrewing.Mix mix1 : f_43494_) { -- if (mix1.f_43532_ == potion && mix1.f_43533_.test(p_43530_)) { -- return PotionUtils.m_43549_(new ItemStack(item), mix1.f_43534_); -+ if (mix1.f_43532_.get() == potion && mix1.f_43533_.test(p_43530_)) { -+ return PotionUtils.m_43549_(new ItemStack(item), mix1.f_43534_.get()); + for(PotionBrewing.Mix mix1 : POTION_MIXES) { +- if (mix1.from == potion && mix1.ingredient.test(p_43530_)) { +- return PotionUtils.setPotion(new ItemStack(item), mix1.to); ++ if (mix1.from.get() == potion && mix1.ingredient.test(p_43530_)) { ++ return PotionUtils.setPotion(new ItemStack(item), mix1.to.get()); } } } @@ -181,7 +_,7 @@ } else if (!(p_43505_ instanceof PotionItem)) { - throw new IllegalArgumentException("Expected a potion, got: " + BuiltInRegistries.f_257033_.m_7981_(p_43505_)); + throw new IllegalArgumentException("Expected a potion, got: " + BuiltInRegistries.ITEM.getKey(p_43505_)); } else { -- f_43495_.add(new PotionBrewing.Mix<>(p_43503_, Ingredient.m_43929_(p_43504_), p_43505_)); -+ f_43495_.add(new PotionBrewing.Mix<>(net.minecraftforge.registries.ForgeRegistries.ITEMS, p_43503_, Ingredient.m_43929_(p_43504_), p_43505_)); +- CONTAINER_MIXES.add(new PotionBrewing.Mix<>(p_43503_, Ingredient.of(p_43504_), p_43505_)); ++ CONTAINER_MIXES.add(new PotionBrewing.Mix<>(net.minecraftforge.registries.ForgeRegistries.ITEMS, p_43503_, Ingredient.of(p_43504_), p_43505_)); } } @@ -194,18 +_,18 @@ } - private static void m_43513_(Potion p_43514_, Item p_43515_, Potion p_43516_) { -- f_43494_.add(new PotionBrewing.Mix<>(p_43514_, Ingredient.m_43929_(p_43515_), p_43516_)); -+ f_43494_.add(new PotionBrewing.Mix<>(net.minecraftforge.registries.ForgeRegistries.POTIONS, p_43514_, Ingredient.m_43929_(p_43515_), p_43516_)); + private static void addMix(Potion p_43514_, Item p_43515_, Potion p_43516_) { +- POTION_MIXES.add(new PotionBrewing.Mix<>(p_43514_, Ingredient.of(p_43515_), p_43516_)); ++ POTION_MIXES.add(new PotionBrewing.Mix<>(net.minecraftforge.registries.ForgeRegistries.POTIONS, p_43514_, Ingredient.of(p_43515_), p_43516_)); } public static class Mix { -- final T f_43532_; -+ public final net.minecraft.core.Holder.Reference f_43532_; - public final Ingredient f_43533_; -- final T f_43534_; -+ public final net.minecraft.core.Holder.Reference f_43534_; +- final T from; ++ public final net.minecraft.core.Holder.Reference from; + public final Ingredient ingredient; +- final T to; ++ public final net.minecraft.core.Holder.Reference to; - public Mix(T p_43536_, Ingredient p_43537_, T p_43538_) { -- this.f_43532_ = p_43536_; +- this.from = p_43536_; + public Mix(net.minecraftforge.registries.IForgeRegistry registry, T p_43536_, Ingredient p_43537_, T p_43538_) { -+ this.f_43532_ = registry.getDelegateOrThrow(p_43536_); - this.f_43533_ = p_43537_; -- this.f_43534_ = p_43538_; -+ this.f_43534_ = registry.getDelegateOrThrow(p_43538_); ++ this.from = registry.getDelegateOrThrow(p_43536_); + this.ingredient = p_43537_; +- this.to = p_43538_; ++ this.to = registry.getDelegateOrThrow(p_43538_); } } } diff --git a/patches/minecraft/net/minecraft/world/item/crafting/BannerDuplicateRecipe.java.patch b/patches/minecraft/net/minecraft/world/item/crafting/BannerDuplicateRecipe.java.patch index a30ba73be3..db2aedfcd0 100644 --- a/patches/minecraft/net/minecraft/world/item/crafting/BannerDuplicateRecipe.java.patch +++ b/patches/minecraft/net/minecraft/world/item/crafting/BannerDuplicateRecipe.java.patch @@ -2,12 +2,12 @@ +++ b/net/minecraft/world/item/crafting/BannerDuplicateRecipe.java @@ -79,8 +_,8 @@ for(int i = 0; i < nonnulllist.size(); ++i) { - ItemStack itemstack = p_43791_.m_8020_(i); - if (!itemstack.m_41619_()) { -- if (itemstack.m_41720_().m_41470_()) { -- nonnulllist.set(i, new ItemStack(itemstack.m_41720_().m_41469_())); + ItemStack itemstack = p_43791_.getItem(i); + if (!itemstack.isEmpty()) { +- if (itemstack.getItem().hasCraftingRemainingItem()) { +- nonnulllist.set(i, new ItemStack(itemstack.getItem().getCraftingRemainingItem())); + if (itemstack.hasCraftingRemainingItem()) { + nonnulllist.set(i, itemstack.getCraftingRemainingItem()); - } else if (itemstack.m_41782_() && BannerBlockEntity.m_58504_(itemstack) > 0) { - nonnulllist.set(i, itemstack.m_255036_(1)); + } else if (itemstack.hasTag() && BannerBlockEntity.getPatternCount(itemstack) > 0) { + nonnulllist.set(i, itemstack.copyWithCount(1)); } diff --git a/patches/minecraft/net/minecraft/world/item/crafting/BookCloningRecipe.java.patch b/patches/minecraft/net/minecraft/world/item/crafting/BookCloningRecipe.java.patch index e1022b05a9..f1ac53581f 100644 --- a/patches/minecraft/net/minecraft/world/item/crafting/BookCloningRecipe.java.patch +++ b/patches/minecraft/net/minecraft/world/item/crafting/BookCloningRecipe.java.patch @@ -3,11 +3,11 @@ @@ -79,8 +_,8 @@ for(int i = 0; i < nonnulllist.size(); ++i) { - ItemStack itemstack = p_43820_.m_8020_(i); -- if (itemstack.m_41720_().m_41470_()) { -- nonnulllist.set(i, new ItemStack(itemstack.m_41720_().m_41469_())); + ItemStack itemstack = p_43820_.getItem(i); +- if (itemstack.getItem().hasCraftingRemainingItem()) { +- nonnulllist.set(i, new ItemStack(itemstack.getItem().getCraftingRemainingItem())); + if (itemstack.hasCraftingRemainingItem()) { + nonnulllist.set(i, itemstack.getCraftingRemainingItem()); - } else if (itemstack.m_41720_() instanceof WrittenBookItem) { - nonnulllist.set(i, itemstack.m_255036_(1)); + } else if (itemstack.getItem() instanceof WrittenBookItem) { + nonnulllist.set(i, itemstack.copyWithCount(1)); break; diff --git a/patches/minecraft/net/minecraft/world/item/crafting/FireworkStarRecipe.java.patch b/patches/minecraft/net/minecraft/world/item/crafting/FireworkStarRecipe.java.patch index e69d61fac3..6f7eb833ba 100644 --- a/patches/minecraft/net/minecraft/world/item/crafting/FireworkStarRecipe.java.patch +++ b/patches/minecraft/net/minecraft/world/item/crafting/FireworkStarRecipe.java.patch @@ -3,8 +3,8 @@ @@ -106,7 +_,7 @@ } - compoundtag.m_128408_("Colors", list); -- compoundtag.m_128344_("Type", (byte)fireworkrocketitem$shape.m_41236_()); + compoundtag.putIntArray("Colors", list); +- compoundtag.putByte("Type", (byte)fireworkrocketitem$shape.getId()); + fireworkrocketitem$shape.save(compoundtag); return itemstack; } diff --git a/patches/minecraft/net/minecraft/world/item/crafting/Ingredient.java.patch b/patches/minecraft/net/minecraft/world/item/crafting/Ingredient.java.patch index 7aeb437cb5..7c9565aa74 100644 --- a/patches/minecraft/net/minecraft/world/item/crafting/Ingredient.java.patch +++ b/patches/minecraft/net/minecraft/world/item/crafting/Ingredient.java.patch @@ -10,38 +10,38 @@ + INVALIDATION_COUNTER.incrementAndGet(); + } + - public static final Ingredient f_43901_ = new Ingredient(Stream.empty()); - private final Ingredient.Value[] f_43902_; + public static final Ingredient EMPTY = new Ingredient(Stream.empty()); + private final Ingredient.Value[] values; @Nullable @@ -38,6 +_,7 @@ - private IntList f_43904_; - public static final Codec f_291570_ = m_294319_(true); - public static final Codec f_290991_ = m_294319_(false); + private IntList stackingIds; + public static final Codec CODEC = codec(true); + public static final Codec CODEC_NONEMPTY = codec(false); + private int invalidationCounter; protected Ingredient(Stream p_43907_) { - this.f_43902_ = p_43907_.toArray((p_43933_) -> { + this.values = p_43907_.toArray((p_43933_) -> { @@ -78,7 +_,8 @@ } - public IntList m_43931_() { -- if (this.f_43904_ == null) { -+ if (this.f_43904_ == null || checkInvalidation()) { + public IntList getStackingIds() { +- if (this.stackingIds == null) { ++ if (this.stackingIds == null || checkInvalidation()) { + this.markValid(); - ItemStack[] aitemstack = this.m_43908_(); - this.f_43904_ = new IntArrayList(aitemstack.length); + ItemStack[] aitemstack = this.getItems(); + this.stackingIds = new IntArrayList(aitemstack.length); @@ -93,6 +_,12 @@ } - public final void m_43923_(FriendlyByteBuf p_43924_) { + public final void toNetwork(FriendlyByteBuf p_43924_) { + /* + if (!this.isVanilla()) { + net.minecraftforge.common.crafting.CraftingHelper.write(p_43924_, this); + return; + } + */ - p_43924_.m_236828_(Arrays.asList(this.m_43908_()), FriendlyByteBuf::m_130055_); + p_43924_.writeCollection(Arrays.asList(this.getItems()), FriendlyByteBuf::writeItem); } @@ -113,6 +_,40 @@ @@ -62,8 +62,8 @@ + } + + protected void invalidate() { -+ this.f_43903_ = null; -+ this.f_43904_ = null; ++ this.itemStacks = null; ++ this.stackingIds = null; + } + + public boolean isSimple() { @@ -82,20 +82,20 @@ + } + */ + - public static Ingredient m_43938_(Stream p_43939_) { + public static Ingredient fromValues(Stream p_43939_) { Ingredient ingredient = new Ingredient(p_43939_); - return ingredient.m_43947_() ? f_43901_ : ingredient; + return ingredient.isEmpty() ? EMPTY : ingredient; @@ -141,7 +_,9 @@ } - public static Ingredient m_43940_(FriendlyByteBuf p_43941_) { -- return m_43938_(p_43941_.m_236845_(FriendlyByteBuf::m_130267_).stream().map(Ingredient.ItemValue::new)); -+ var size = p_43941_.m_130242_(); + public static Ingredient fromNetwork(FriendlyByteBuf p_43941_) { +- return fromValues(p_43941_.readList(FriendlyByteBuf::readItem).stream().map(Ingredient.ItemValue::new)); ++ var size = p_43941_.readVarInt(); + //if (size == -1) return net.minecraftforge.common.crafting.CraftingHelper.getIngredient(p_43941_.readResourceLocation(), p_43941_); -+ return m_43938_(Stream.generate(() -> new Ingredient.ItemValue(p_43941_.m_130267_())).limit(size)); ++ return fromValues(Stream.generate(() -> new Ingredient.ItemValue(p_43941_.readItem())).limit(size)); } - private static Codec m_294319_(boolean p_298496_) { + private static Codec codec(boolean p_298496_) { @@ -185,6 +_,12 @@ } } @@ -103,18 +103,18 @@ + //Merges several vanilla Ingredients together. As a quirk of how the json is structured, we can't tell if its a single Ingredient type or multiple so we split per item and re-merge here. + //Only public for internal use, so we can access a private field in here. + public static Ingredient merge(Collection parts) { -+ return m_43938_(parts.stream().flatMap(i -> Arrays.stream(i.f_43902_))); ++ return fromValues(parts.stream().flatMap(i -> Arrays.stream(i.values))); + } + - public static record TagValue(TagKey f_43959_) implements Ingredient.Value { - static final Codec f_291685_ = RecordCodecBuilder.create((p_300241_) -> { - return p_300241_.group(TagKey.m_203877_(Registries.f_256913_).fieldOf("tag").forGetter((p_301340_) -> { + public static record TagValue(TagKey tag) implements Ingredient.Value { + static final Codec CODEC = RecordCodecBuilder.create((p_300241_) -> { + return p_300241_.group(TagKey.codec(Registries.ITEM).fieldOf("tag").forGetter((p_301340_) -> { @@ -207,6 +_,9 @@ list.add(new ItemStack(holder)); } + if (list.size() == 0) { -+ list.add(new ItemStack(net.minecraft.world.level.block.Blocks.f_50375_).m_41714_(net.minecraft.network.chat.Component.m_237113_("Empty Tag: " + this.f_43959_.f_203868_()))); ++ list.add(new ItemStack(net.minecraft.world.level.block.Blocks.BARRIER).setHoverName(net.minecraft.network.chat.Component.literal("Empty Tag: " + this.tag.location()))); + } return list; } diff --git a/patches/minecraft/net/minecraft/world/item/crafting/Recipe.java.patch b/patches/minecraft/net/minecraft/world/item/crafting/Recipe.java.patch index dc2015da10..16d760abb6 100644 --- a/patches/minecraft/net/minecraft/world/item/crafting/Recipe.java.patch +++ b/patches/minecraft/net/minecraft/world/item/crafting/Recipe.java.patch @@ -1,23 +1,22 @@ --- a/net/minecraft/world/item/crafting/Recipe.java +++ b/net/minecraft/world/item/crafting/Recipe.java @@ -21,9 +_,9 @@ - NonNullList nonnulllist = NonNullList.m_122780_(p_44004_.m_6643_(), ItemStack.f_41583_); + NonNullList nonnulllist = NonNullList.withSize(p_44004_.getContainerSize(), ItemStack.EMPTY); for(int i = 0; i < nonnulllist.size(); ++i) { -- Item item = p_44004_.m_8020_(i).m_41720_(); -- if (item.m_41470_()) { -- nonnulllist.set(i, new ItemStack(item.m_41469_())); -+ ItemStack item = p_44004_.m_8020_(i); -+ if (item.hasCraftingRemainingItem()) { +- Item item = p_44004_.getItem(i).getItem(); ++ ItemStack item = p_44004_.getItem(i); + if (item.hasCraftingRemainingItem()) { +- nonnulllist.set(i, new ItemStack(item.getCraftingRemainingItem())); + nonnulllist.set(i, item.getCraftingRemainingItem()); } } @@ -57,7 +_,7 @@ - default boolean m_142505_() { - NonNullList nonnulllist = this.m_7527_(); + default boolean isIncomplete() { + NonNullList nonnulllist = this.getIngredients(); return nonnulllist.isEmpty() || nonnulllist.stream().anyMatch((p_151268_) -> { -- return p_151268_.m_43908_().length == 0; +- return p_151268_.getItems().length == 0; + return net.minecraftforge.common.ForgeHooks.hasNoElements(p_151268_); }); } diff --git a/patches/minecraft/net/minecraft/world/item/crafting/RecipeManager.java.patch b/patches/minecraft/net/minecraft/world/item/crafting/RecipeManager.java.patch index 8ff2582a51..9533b3ca67 100644 --- a/patches/minecraft/net/minecraft/world/item/crafting/RecipeManager.java.patch +++ b/patches/minecraft/net/minecraft/world/item/crafting/RecipeManager.java.patch @@ -1,9 +1,9 @@ --- a/net/minecraft/world/item/crafting/RecipeManager.java +++ b/net/minecraft/world/item/crafting/RecipeManager.java @@ -40,9 +_,17 @@ - private Map, Map>> f_44007_ = ImmutableMap.of(); - private Map> f_199900_ = ImmutableMap.of(); - private boolean f_44008_; + private Map, Map>> recipes = ImmutableMap.of(); + private Map> byName = ImmutableMap.of(); + private boolean hasErrors; + private final net.minecraftforge.common.crafting.conditions.ICondition.IContext context; //Forge: add context + /** @deprecated Forge: use {@linkplain RecipeManager#RecipeManager(net.minecraftforge.common.crafting.conditions.ICondition.IContext) constructor with context}. */ @@ -13,27 +13,27 @@ + } + + public RecipeManager(net.minecraftforge.common.crafting.conditions.ICondition.IContext context) { - super(f_44005_, "recipes"); + super(GSON, "recipes"); + this.context = context; } - protected void m_5787_(Map p_44037_, ResourceManager p_44038_, ProfilerFiller p_44039_) { + protected void apply(Map p_44037_, ResourceManager p_44038_, ProfilerFiller p_44039_) { @@ -52,9 +_,18 @@ for(Map.Entry entry : p_44037_.entrySet()) { ResourceLocation resourcelocation = entry.getKey(); -+ if (resourcelocation.m_135815_().startsWith("_")) continue; //Forge: filter anything beginning with "_" as it's used for metadata. ++ if (resourcelocation.getPath().startsWith("_")) continue; //Forge: filter anything beginning with "_" as it's used for metadata. try { + if (entry.getValue().isJsonObject() && !net.minecraftforge.common.crafting.CraftingHelper.processConditions(entry.getValue().getAsJsonObject(), "conditions", this.context)) { -+ f_44006_.debug("Skipping loading recipe {} as it's conditions were not met", resourcelocation); ++ LOGGER.debug("Skipping loading recipe {} as it's conditions were not met", resourcelocation); + continue; + } - RecipeHolder recipeholder = m_44045_(resourcelocation, GsonHelper.m_13918_(entry.getValue(), "top element")); + RecipeHolder recipeholder = fromJson(resourcelocation, GsonHelper.convertToJsonObject(entry.getValue(), "top element")); + if (recipeholder == null) { -+ f_44006_.info("Skipping loading recipe {} as it's serializer returned null", resourcelocation); ++ LOGGER.info("Skipping loading recipe {} as it's serializer returned null", resourcelocation); + continue; + } - map.computeIfAbsent(recipeholder.f_291008_().m_6671_(), (p_44075_) -> { + map.computeIfAbsent(recipeholder.value().getType(), (p_44075_) -> { return ImmutableMap.builder(); }).put(resourcelocation, recipeholder); diff --git a/patches/minecraft/net/minecraft/world/item/crafting/RecipeSerializer.java.patch b/patches/minecraft/net/minecraft/world/item/crafting/RecipeSerializer.java.patch index 0fafe1fda6..d18e423ad4 100644 --- a/patches/minecraft/net/minecraft/world/item/crafting/RecipeSerializer.java.patch +++ b/patches/minecraft/net/minecraft/world/item/crafting/RecipeSerializer.java.patch @@ -2,9 +2,9 @@ +++ b/net/minecraft/world/item/crafting/RecipeSerializer.java @@ -32,6 +_,7 @@ - Codec m_292673_(); + Codec codec(); + @org.jetbrains.annotations.Nullable - T m_8005_(FriendlyByteBuf p_44106_); + T fromNetwork(FriendlyByteBuf p_44106_); - void m_6178_(FriendlyByteBuf p_44101_, T p_44102_); + void toNetwork(FriendlyByteBuf p_44101_, T p_44102_); diff --git a/patches/minecraft/net/minecraft/world/item/crafting/RepairItemRecipe.java.patch b/patches/minecraft/net/minecraft/world/item/crafting/RepairItemRecipe.java.patch index 932886a22f..7191dc12b8 100644 --- a/patches/minecraft/net/minecraft/world/item/crafting/RepairItemRecipe.java.patch +++ b/patches/minecraft/net/minecraft/world/item/crafting/RepairItemRecipe.java.patch @@ -4,8 +4,8 @@ list.add(itemstack); if (list.size() > 1) { ItemStack itemstack1 = list.get(0); -- if (!itemstack.m_150930_(itemstack1.m_41720_()) || itemstack1.m_41613_() != 1 || itemstack.m_41613_() != 1 || !itemstack1.m_41720_().m_41465_()) { -+ if (itemstack.m_41720_() != itemstack1.m_41720_() || itemstack1.m_41613_() != 1 || itemstack.m_41613_() != 1 || !itemstack1.isRepairable()) { +- if (!itemstack.is(itemstack1.getItem()) || itemstack1.getCount() != 1 || itemstack.getCount() != 1 || !itemstack1.getItem().canBeDepleted()) { ++ if (itemstack.getItem() != itemstack1.getItem() || itemstack1.getCount() != 1 || itemstack.getCount() != 1 || !itemstack1.isRepairable()) { return false; } } @@ -13,26 +13,26 @@ list.add(itemstack); if (list.size() > 1) { ItemStack itemstack1 = list.get(0); -- if (!itemstack.m_150930_(itemstack1.m_41720_()) || itemstack1.m_41613_() != 1 || itemstack.m_41613_() != 1 || !itemstack1.m_41720_().m_41465_()) { -+ if (itemstack.m_41720_() != itemstack1.m_41720_() || itemstack1.m_41613_() != 1 || itemstack.m_41613_() != 1 || !itemstack1.isRepairable()) { - return ItemStack.f_41583_; +- if (!itemstack.is(itemstack1.getItem()) || itemstack1.getCount() != 1 || itemstack.getCount() != 1 || !itemstack1.getItem().canBeDepleted()) { ++ if (itemstack.getItem() != itemstack1.getItem() || itemstack1.getCount() != 1 || itemstack.getCount() != 1 || !itemstack1.isRepairable()) { + return ItemStack.EMPTY; } } @@ -56,12 +_,12 @@ if (list.size() == 2) { ItemStack itemstack3 = list.get(0); ItemStack itemstack4 = list.get(1); -- if (itemstack3.m_150930_(itemstack4.m_41720_()) && itemstack3.m_41613_() == 1 && itemstack4.m_41613_() == 1 && itemstack3.m_41720_().m_41465_()) { -+ if (itemstack3.m_41720_() == itemstack4.m_41720_() && itemstack3.m_41613_() == 1 && itemstack4.m_41613_() == 1 && itemstack3.isRepairable()) { - Item item = itemstack3.m_41720_(); -- int j = item.m_41462_() - itemstack3.m_41773_(); -- int k = item.m_41462_() - itemstack4.m_41773_(); -- int l = j + k + item.m_41462_() * 5 / 100; -- int i1 = item.m_41462_() - l; -+ int j = itemstack3.m_41776_() - itemstack3.m_41773_(); -+ int k = itemstack3.m_41776_() - itemstack4.m_41773_(); -+ int l = j + k + itemstack3.m_41776_() * 5 / 100; -+ int i1 = itemstack3.m_41776_() - l; +- if (itemstack3.is(itemstack4.getItem()) && itemstack3.getCount() == 1 && itemstack4.getCount() == 1 && itemstack3.getItem().canBeDepleted()) { ++ if (itemstack3.getItem() == itemstack4.getItem() && itemstack3.getCount() == 1 && itemstack4.getCount() == 1 && itemstack3.isRepairable()) { + Item item = itemstack3.getItem(); +- int j = item.getMaxDamage() - itemstack3.getDamageValue(); +- int k = item.getMaxDamage() - itemstack4.getDamageValue(); +- int l = j + k + item.getMaxDamage() * 5 / 100; +- int i1 = item.getMaxDamage() - l; ++ int j = itemstack3.getMaxDamage() - itemstack3.getDamageValue(); ++ int k = itemstack3.getMaxDamage() - itemstack4.getDamageValue(); ++ int l = j + k + itemstack3.getMaxDamage() * 5 / 100; ++ int i1 = itemstack3.getMaxDamage() - l; if (i1 < 0) { i1 = 0; } diff --git a/patches/minecraft/net/minecraft/world/item/crafting/ShapedRecipe.java.patch b/patches/minecraft/net/minecraft/world/item/crafting/ShapedRecipe.java.patch index 5b0e1bf1d0..f2d6beae7a 100644 --- a/patches/minecraft/net/minecraft/world/item/crafting/ShapedRecipe.java.patch +++ b/patches/minecraft/net/minecraft/world/item/crafting/ShapedRecipe.java.patch @@ -19,35 +19,35 @@ + if (MAX_HEIGHT < height) MAX_HEIGHT = height; + } + - final int f_44146_; - final int f_44147_; - final NonNullList f_44148_; + final int width; + final int height; + final NonNullList recipeItems; @@ -115,10 +_,20 @@ - return this.f_44146_; + return this.width; } + @Override + public int getRecipeWidth() { -+ return m_44220_(); ++ return getWidth(); + } + - public int m_44221_() { - return this.f_44147_; + public int getHeight() { + return this.height; } + @Override + public int getRecipeHeight() { -+ return m_44221_(); ++ return getHeight(); + } + @VisibleForTesting - static String[] m_44186_(List p_299210_) { + static String[] shrink(List p_299210_) { int i = Integer.MAX_VALUE; @@ -160,7 +_,7 @@ return nonnulllist.isEmpty() || nonnulllist.stream().filter((p_151277_) -> { - return !p_151277_.m_43947_(); + return !p_151277_.isEmpty(); }).anyMatch((p_151273_) -> { -- return p_151273_.m_43908_().length == 0; +- return p_151273_.getItems().length == 0; + return net.minecraftforge.common.ForgeHooks.hasNoElements(p_151273_); }); } @@ -55,7 +55,7 @@ @@ -182,9 +_,9 @@ public static class Serializer implements RecipeSerializer { - static final Codec> f_291059_ = Codec.STRING.listOf().flatXmap((p_297814_) -> { + static final Codec> PATTERN_CODEC = Codec.STRING.listOf().flatXmap((p_297814_) -> { - if (p_297814_.size() > 3) { + if (p_297814_.size() > MAX_HEIGHT) { return DataResult.error(() -> { diff --git a/patches/minecraft/net/minecraft/world/item/crafting/ShapelessRecipe.java.patch b/patches/minecraft/net/minecraft/world/item/crafting/ShapelessRecipe.java.patch index 699a270015..f342087fed 100644 --- a/patches/minecraft/net/minecraft/world/item/crafting/ShapelessRecipe.java.patch +++ b/patches/minecraft/net/minecraft/world/item/crafting/ShapelessRecipe.java.patch @@ -1,42 +1,42 @@ --- a/net/minecraft/world/item/crafting/ShapelessRecipe.java +++ b/net/minecraft/world/item/crafting/ShapelessRecipe.java @@ -18,12 +_,14 @@ - final CraftingBookCategory f_244076_; - final ItemStack f_44243_; - final NonNullList f_44244_; + final CraftingBookCategory category; + final ItemStack result; + final NonNullList ingredients; + private final boolean isSimple; public ShapelessRecipe(String p_249640_, CraftingBookCategory p_249390_, ItemStack p_252071_, NonNullList p_250689_) { - this.f_44242_ = p_249640_; - this.f_244076_ = p_249390_; - this.f_44243_ = p_252071_; - this.f_44244_ = p_250689_; + this.group = p_249640_; + this.category = p_249390_; + this.result = p_252071_; + this.ingredients = p_250689_; + this.isSimple = p_250689_.stream().allMatch(Ingredient::isSimple); } - public RecipeSerializer m_7707_() { + public RecipeSerializer getSerializer() { @@ -48,17 +_,20 @@ - public boolean m_5818_(CraftingContainer p_44262_, Level p_44263_) { + public boolean matches(CraftingContainer p_44262_, Level p_44263_) { StackedContents stackedcontents = new StackedContents(); + java.util.List inputs = new java.util.ArrayList<>(); int i = 0; - for(int j = 0; j < p_44262_.m_6643_(); ++j) { - ItemStack itemstack = p_44262_.m_8020_(j); - if (!itemstack.m_41619_()) { + for(int j = 0; j < p_44262_.getContainerSize(); ++j) { + ItemStack itemstack = p_44262_.getItem(j); + if (!itemstack.isEmpty()) { ++i; + if (isSimple) - stackedcontents.m_36468_(itemstack, 1); + stackedcontents.accountStack(itemstack, 1); + else inputs.add(itemstack); } } -- return i == this.f_44244_.size() && stackedcontents.m_36475_(this, (IntList)null); -+ return i == this.f_44244_.size() && (isSimple ? stackedcontents.m_36475_(this, (IntList)null) : net.minecraftforge.common.util.RecipeMatcher.findMatches(inputs, this.f_44244_) != null); +- return i == this.ingredients.size() && stackedcontents.canCraft(this, (IntList)null); ++ return i == this.ingredients.size() && (isSimple ? stackedcontents.canCraft(this, (IntList)null) : net.minecraftforge.common.util.RecipeMatcher.findMatches(inputs, this.ingredients) != null); } - public ItemStack m_5874_(CraftingContainer p_44260_, RegistryAccess p_266797_) { + public ItemStack assemble(CraftingContainer p_44260_, RegistryAccess p_266797_) { @@ -88,7 +_,7 @@ return "No ingredients for shapeless recipe"; }); @@ -44,5 +44,5 @@ - return aingredient.length > 9 ? DataResult.error(() -> { + return aingredient.length > ShapedRecipe.MAX_WIDTH * ShapedRecipe.MAX_HEIGHT ? DataResult.error(() -> { return "Too many ingredients for shapeless recipe"; - }) : DataResult.success(NonNullList.m_122783_(Ingredient.f_43901_, aingredient)); + }) : DataResult.success(NonNullList.of(Ingredient.EMPTY, aingredient)); } diff --git a/patches/minecraft/net/minecraft/world/item/crafting/ShulkerBoxColoring.java.patch b/patches/minecraft/net/minecraft/world/item/crafting/ShulkerBoxColoring.java.patch index 57a0b47c00..b16b0c4f29 100644 --- a/patches/minecraft/net/minecraft/world/item/crafting/ShulkerBoxColoring.java.patch +++ b/patches/minecraft/net/minecraft/world/item/crafting/ShulkerBoxColoring.java.patch @@ -1,26 +1,26 @@ --- a/net/minecraft/world/item/crafting/ShulkerBoxColoring.java +++ b/net/minecraft/world/item/crafting/ShulkerBoxColoring.java @@ -25,7 +_,7 @@ - if (Block.m_49814_(itemstack.m_41720_()) instanceof ShulkerBoxBlock) { + if (Block.byItem(itemstack.getItem()) instanceof ShulkerBoxBlock) { ++i; } else { -- if (!(itemstack.m_41720_() instanceof DyeItem)) { -+ if (!itemstack.m_204117_(net.minecraftforge.common.Tags.Items.DYES)) { +- if (!(itemstack.getItem() instanceof DyeItem)) { ++ if (!itemstack.is(net.minecraftforge.common.Tags.Items.DYES)) { return false; } @@ -43,7 +_,7 @@ - public ItemStack m_5874_(CraftingContainer p_44322_, RegistryAccess p_266985_) { - ItemStack itemstack = ItemStack.f_41583_; -- DyeItem dyeitem = (DyeItem)Items.f_42535_; + public ItemStack assemble(CraftingContainer p_44322_, RegistryAccess p_266985_) { + ItemStack itemstack = ItemStack.EMPTY; +- DyeItem dyeitem = (DyeItem)Items.WHITE_DYE; + net.minecraft.world.item.DyeColor dyecolor = net.minecraft.world.item.DyeColor.WHITE; - for(int i = 0; i < p_44322_.m_6643_(); ++i) { - ItemStack itemstack1 = p_44322_.m_8020_(i); + for(int i = 0; i < p_44322_.getContainerSize(); ++i) { + ItemStack itemstack1 = p_44322_.getItem(i); @@ -51,13 +_,14 @@ - Item item = itemstack1.m_41720_(); - if (Block.m_49814_(item) instanceof ShulkerBoxBlock) { + Item item = itemstack1.getItem(); + if (Block.byItem(item) instanceof ShulkerBoxBlock) { itemstack = itemstack1; - } else if (item instanceof DyeItem) { - dyeitem = (DyeItem)item; @@ -31,8 +31,8 @@ } } -- ItemStack itemstack2 = ShulkerBoxBlock.m_56250_(dyeitem.m_41089_()); -+ ItemStack itemstack2 = ShulkerBoxBlock.m_56250_(dyecolor); - if (itemstack.m_41782_()) { - itemstack2.m_41751_(itemstack.m_41783_().m_6426_()); +- ItemStack itemstack2 = ShulkerBoxBlock.getColoredItemStack(dyeitem.getDyeColor()); ++ ItemStack itemstack2 = ShulkerBoxBlock.getColoredItemStack(dyecolor); + if (itemstack.hasTag()) { + itemstack2.setTag(itemstack.getTag().copy()); } diff --git a/patches/minecraft/net/minecraft/world/item/crafting/SmithingTransformRecipe.java.patch b/patches/minecraft/net/minecraft/world/item/crafting/SmithingTransformRecipe.java.patch index b366b956ef..31f04249ce 100644 --- a/patches/minecraft/net/minecraft/world/item/crafting/SmithingTransformRecipe.java.patch +++ b/patches/minecraft/net/minecraft/world/item/crafting/SmithingTransformRecipe.java.patch @@ -3,9 +3,9 @@ @@ -58,7 +_,7 @@ } - public boolean m_142505_() { -- return Stream.of(this.f_265949_, this.f_265888_, this.f_265907_).anyMatch(Ingredient::m_43947_); -+ return Stream.of(this.f_265949_, this.f_265888_, this.f_265907_).anyMatch(net.minecraftforge.common.ForgeHooks::hasNoElements); + public boolean isIncomplete() { +- return Stream.of(this.template, this.base, this.addition).anyMatch(Ingredient::isEmpty); ++ return Stream.of(this.template, this.base, this.addition).anyMatch(net.minecraftforge.common.ForgeHooks::hasNoElements); } public static class Serializer implements RecipeSerializer { diff --git a/patches/minecraft/net/minecraft/world/item/crafting/SmithingTrimRecipe.java.patch b/patches/minecraft/net/minecraft/world/item/crafting/SmithingTrimRecipe.java.patch index 81c067fb30..a77bcd79ed 100644 --- a/patches/minecraft/net/minecraft/world/item/crafting/SmithingTrimRecipe.java.patch +++ b/patches/minecraft/net/minecraft/world/item/crafting/SmithingTrimRecipe.java.patch @@ -3,9 +3,9 @@ @@ -87,7 +_,7 @@ } - public boolean m_142505_() { -- return Stream.of(this.f_265958_, this.f_266040_, this.f_266053_).anyMatch(Ingredient::m_43947_); -+ return Stream.of(this.f_265958_, this.f_266040_, this.f_266053_).anyMatch(net.minecraftforge.common.ForgeHooks::hasNoElements); + public boolean isIncomplete() { +- return Stream.of(this.template, this.base, this.addition).anyMatch(Ingredient::isEmpty); ++ return Stream.of(this.template, this.base, this.addition).anyMatch(net.minecraftforge.common.ForgeHooks::hasNoElements); } public static class Serializer implements RecipeSerializer { diff --git a/patches/minecraft/net/minecraft/world/item/enchantment/DiggingEnchantment.java.patch b/patches/minecraft/net/minecraft/world/item/enchantment/DiggingEnchantment.java.patch index 489259e45d..73f4532bcd 100644 --- a/patches/minecraft/net/minecraft/world/item/enchantment/DiggingEnchantment.java.patch +++ b/patches/minecraft/net/minecraft/world/item/enchantment/DiggingEnchantment.java.patch @@ -3,8 +3,8 @@ @@ -22,6 +_,6 @@ } - public boolean m_6081_(ItemStack p_44668_) { -- return p_44668_.m_150930_(Items.f_42574_) ? true : super.m_6081_(p_44668_); -+ return p_44668_.m_41720_() instanceof net.minecraft.world.item.ShearsItem ? true : super.m_6081_(p_44668_); + public boolean canEnchant(ItemStack p_44668_) { +- return p_44668_.is(Items.SHEARS) ? true : super.canEnchant(p_44668_); ++ return p_44668_.getItem() instanceof net.minecraft.world.item.ShearsItem ? true : super.canEnchant(p_44668_); } } diff --git a/patches/minecraft/net/minecraft/world/item/enchantment/Enchantment.java.patch b/patches/minecraft/net/minecraft/world/item/enchantment/Enchantment.java.patch index c53522a47d..24d241b62f 100644 --- a/patches/minecraft/net/minecraft/world/item/enchantment/Enchantment.java.patch +++ b/patches/minecraft/net/minecraft/world/item/enchantment/Enchantment.java.patch @@ -6,30 +6,30 @@ -public abstract class Enchantment { +public abstract class Enchantment implements net.minecraftforge.common.extensions.IForgeEnchantment { - private final EquipmentSlot[] f_44671_; - private final Enchantment.Rarity f_44674_; - public final EnchantmentCategory f_44672_; + private final EquipmentSlot[] slots; + private final Enchantment.Rarity rarity; + public final EnchantmentCategory category; @@ -73,6 +_,7 @@ return 0; } + @Deprecated // Forge: Use ItemStack aware version in IForgeEnchantment - public float m_7335_(int p_44682_, MobType p_44683_) { + public float getDamageBonus(int p_44682_, MobType p_44683_) { return 0.0F; } @@ -113,7 +_,7 @@ } - public boolean m_6081_(ItemStack p_44689_) { -- return this.f_44672_.m_7454_(p_44689_.m_41720_()); + public boolean canEnchant(ItemStack p_44689_) { +- return this.category.canEnchant(p_44689_.getItem()); + return canApplyAtEnchantingTable(p_44689_); } - public void m_7677_(LivingEntity p_44686_, Entity p_44687_, int p_44688_) { + public void doPostAttack(LivingEntity p_44686_, Entity p_44687_, int p_44688_) { @@ -135,6 +_,24 @@ } - public boolean m_6592_() { + public boolean isDiscoverable() { + return true; + } + diff --git a/patches/minecraft/net/minecraft/world/item/enchantment/EnchantmentCategory.java.patch b/patches/minecraft/net/minecraft/world/item/enchantment/EnchantmentCategory.java.patch index 8115a61931..7abe482661 100644 --- a/patches/minecraft/net/minecraft/world/item/enchantment/EnchantmentCategory.java.patch +++ b/patches/minecraft/net/minecraft/world/item/enchantment/EnchantmentCategory.java.patch @@ -7,13 +7,13 @@ -public enum EnchantmentCategory { +public enum EnchantmentCategory implements net.minecraftforge.common.IExtensibleEnum { ARMOR { - public boolean m_7454_(Item p_44751_) { + public boolean canEnchant(Item p_44751_) { return p_44751_ instanceof ArmorItem; @@ -109,5 +_,19 @@ } }; -- public abstract boolean m_7454_(Item p_44743_); +- public abstract boolean canEnchant(Item p_44743_); + private java.util.function.Predicate delegate; + + private EnchantmentCategory() {} @@ -26,7 +26,7 @@ + throw new IllegalStateException("Enum not extended"); + } + -+ public boolean m_7454_(Item p_44743_) { ++ public boolean canEnchant(Item p_44743_) { + return this.delegate == null ? false : this.delegate.test(p_44743_); + } } diff --git a/patches/minecraft/net/minecraft/world/item/enchantment/EnchantmentHelper.java.patch b/patches/minecraft/net/minecraft/world/item/enchantment/EnchantmentHelper.java.patch index 7d67c5cbb8..7138023c31 100644 --- a/patches/minecraft/net/minecraft/world/item/enchantment/EnchantmentHelper.java.patch +++ b/patches/minecraft/net/minecraft/world/item/enchantment/EnchantmentHelper.java.patch @@ -1,83 +1,83 @@ --- a/net/minecraft/world/item/enchantment/EnchantmentHelper.java +++ b/net/minecraft/world/item/enchantment/EnchantmentHelper.java @@ -59,7 +_,14 @@ - return BuiltInRegistries.f_256876_.m_7981_(p_182433_); + return BuiltInRegistries.ENCHANTMENT.getKey(p_182433_); } + /** @deprecated forge: use {@link #getTagEnchantmentLevel(Enchantment, ItemStack)} or {@link ItemStack#getEnchantmentLevel(Enchantment)} */ + @Deprecated - public static int m_44843_(Enchantment p_44844_, ItemStack p_44845_) { + public static int getItemEnchantmentLevel(Enchantment p_44844_, ItemStack p_44845_) { + return p_44845_.getEnchantmentLevel(p_44844_); + } + + /** Gets the enchantment level from NBT. Generally should use {@link ItemStack#getEnchantmentLevel(Enchantment)} for gameplay logic */ + public static int getTagEnchantmentLevel(Enchantment p_44844_, ItemStack p_44845_) { - if (p_44845_.m_41619_()) { + if (p_44845_.isEmpty()) { return 0; } else { @@ -120,6 +_,13 @@ - private static void m_44850_(EnchantmentHelper.EnchantmentVisitor p_44851_, ItemStack p_44852_) { - if (!p_44852_.m_41619_()) { + private static void runIterationOnItem(EnchantmentHelper.EnchantmentVisitor p_44851_, ItemStack p_44852_) { + if (!p_44852_.isEmpty()) { + if (true) { // forge: redirect enchantment logic to allow non-NBT enchants + for (Map.Entry entry : p_44852_.getAllEnchantments().entrySet()) { -+ p_44851_.m_44944_(entry.getKey(), entry.getValue()); ++ p_44851_.accept(entry.getKey(), entry.getValue()); + } + return; + } + - ListTag listtag = p_44852_.m_41785_(); + ListTag listtag = p_44852_.getEnchantmentTags(); for(int i = 0; i < listtag.size(); ++i) { @@ -150,7 +_,7 @@ - public static float m_44833_(ItemStack p_44834_, MobType p_44835_) { + public static float getDamageBonus(ItemStack p_44834_, MobType p_44835_) { MutableFloat mutablefloat = new MutableFloat(); - m_44850_((p_44887_, p_44888_) -> { -- mutablefloat.add(p_44887_.m_7335_(p_44888_, p_44835_)); + runIterationOnItem((p_44887_, p_44888_) -> { +- mutablefloat.add(p_44887_.getDamageBonus(p_44888_, p_44835_)); + mutablefloat.add(p_44887_.getDamageBonus(p_44888_, p_44835_, p_44834_)); }, p_44834_); return mutablefloat.floatValue(); } @@ -168,6 +_,7 @@ - m_44853_(enchantmenthelper$enchantmentvisitor, p_44824_.m_20158_()); + runIterationOnInventory(enchantmenthelper$enchantmentvisitor, p_44824_.getAllSlots()); } + if(false) // Forge: Fix MC-248272 if (p_44825_ instanceof Player) { - m_44850_(enchantmenthelper$enchantmentvisitor, p_44824_.m_21205_()); + runIterationOnItem(enchantmenthelper$enchantmentvisitor, p_44824_.getMainHandItem()); } @@ -182,6 +_,7 @@ - m_44853_(enchantmenthelper$enchantmentvisitor, p_44897_.m_20158_()); + runIterationOnInventory(enchantmenthelper$enchantmentvisitor, p_44897_.getAllSlots()); } + if(false) // Forge: Fix MC-248272 if (p_44897_ instanceof Player) { - m_44850_(enchantmenthelper$enchantmentvisitor, p_44897_.m_21205_()); + runIterationOnItem(enchantmenthelper$enchantmentvisitor, p_44897_.getMainHandItem()); } @@ -306,7 +_,7 @@ - public static int m_220287_(RandomSource p_220288_, int p_220289_, int p_220290_, ItemStack p_220291_) { - Item item = p_220291_.m_41720_(); -- int i = item.m_6473_(); + public static int getEnchantmentCost(RandomSource p_220288_, int p_220289_, int p_220290_, ItemStack p_220291_) { + Item item = p_220291_.getItem(); +- int i = item.getEnchantmentValue(); + int i = p_220291_.getEnchantmentValue(); if (i <= 0) { return 0; } else { @@ -344,7 +_,7 @@ - public static List m_220297_(RandomSource p_220298_, ItemStack p_220299_, int p_220300_, boolean p_220301_) { + public static List selectEnchantment(RandomSource p_220298_, ItemStack p_220299_, int p_220300_, boolean p_220301_) { List list = Lists.newArrayList(); - Item item = p_220299_.m_41720_(); -- int i = item.m_6473_(); + Item item = p_220299_.getItem(); +- int i = item.getEnchantmentValue(); + int i = p_220299_.getEnchantmentValue(); if (i <= 0) { return list; } else { @@ -400,7 +_,7 @@ - boolean flag = p_44819_.m_150930_(Items.f_42517_); + boolean flag = p_44819_.is(Items.BOOK); - for(Enchantment enchantment : BuiltInRegistries.f_256876_) { -- if ((!enchantment.m_6591_() || p_44820_) && enchantment.m_6592_() && (enchantment.f_44672_.m_7454_(item) || flag)) { -+ if ((!enchantment.m_6591_() || p_44820_) && enchantment.m_6592_() && (enchantment.canApplyAtEnchantingTable(p_44819_) || (flag && enchantment.isAllowedOnBooks()))) { - for(int i = enchantment.m_6586_(); i > enchantment.m_44702_() - 1; --i) { - if (p_44818_ >= enchantment.m_6183_(i) && p_44818_ <= enchantment.m_6175_(i)) { + for(Enchantment enchantment : BuiltInRegistries.ENCHANTMENT) { +- if ((!enchantment.isTreasureOnly() || p_44820_) && enchantment.isDiscoverable() && (enchantment.category.canEnchant(item) || flag)) { ++ if ((!enchantment.isTreasureOnly() || p_44820_) && enchantment.isDiscoverable() && (enchantment.canApplyAtEnchantingTable(p_44819_) || (flag && enchantment.isAllowedOnBooks()))) { + for(int i = enchantment.getMaxLevel(); i > enchantment.getMinLevel() - 1; --i) { + if (p_44818_ >= enchantment.getMinCost(i) && p_44818_ <= enchantment.getMaxCost(i)) { list.add(new EnchantmentInstance(enchantment, i)); diff --git a/patches/minecraft/net/minecraft/world/item/enchantment/FrostWalkerEnchantment.java.patch b/patches/minecraft/net/minecraft/world/item/enchantment/FrostWalkerEnchantment.java.patch index a356d2b6a1..efca49f72a 100644 --- a/patches/minecraft/net/minecraft/world/item/enchantment/FrostWalkerEnchantment.java.patch +++ b/patches/minecraft/net/minecraft/world/item/enchantment/FrostWalkerEnchantment.java.patch @@ -1,11 +1,11 @@ --- a/net/minecraft/world/item/enchantment/FrostWalkerEnchantment.java +++ b/net/minecraft/world/item/enchantment/FrostWalkerEnchantment.java @@ -43,7 +_,7 @@ - BlockState blockstate1 = p_45020_.m_8055_(blockpos$mutableblockpos); - if (blockstate1.m_60795_()) { - BlockState blockstate2 = p_45020_.m_8055_(blockpos); -- if (blockstate2 == FrostedIceBlock.m_278844_() && blockstate.m_60710_(p_45020_, blockpos) && p_45020_.m_45752_(blockstate, blockpos, CollisionContext.m_82749_())) { -+ if (blockstate2 == FrostedIceBlock.m_278844_() && blockstate.m_60710_(p_45020_, blockpos) && p_45020_.m_45752_(blockstate, blockpos, CollisionContext.m_82749_()) && !net.minecraftforge.event.ForgeEventFactory.onBlockPlace(p_45019_, net.minecraftforge.common.util.BlockSnapshot.create(p_45020_.m_46472_(), p_45020_, blockpos), net.minecraft.core.Direction.UP)) { - p_45020_.m_46597_(blockpos, blockstate); - p_45020_.m_186460_(blockpos, Blocks.f_50449_, Mth.m_216271_(p_45019_.m_217043_(), 60, 120)); + BlockState blockstate1 = p_45020_.getBlockState(blockpos$mutableblockpos); + if (blockstate1.isAir()) { + BlockState blockstate2 = p_45020_.getBlockState(blockpos); +- if (blockstate2 == FrostedIceBlock.meltsInto() && blockstate.canSurvive(p_45020_, blockpos) && p_45020_.isUnobstructed(blockstate, blockpos, CollisionContext.empty())) { ++ if (blockstate2 == FrostedIceBlock.meltsInto() && blockstate.canSurvive(p_45020_, blockpos) && p_45020_.isUnobstructed(blockstate, blockpos, CollisionContext.empty()) && !net.minecraftforge.event.ForgeEventFactory.onBlockPlace(p_45019_, net.minecraftforge.common.util.BlockSnapshot.create(p_45020_.dimension(), p_45020_, blockpos), net.minecraft.core.Direction.UP)) { + p_45020_.setBlockAndUpdate(blockpos, blockstate); + p_45020_.scheduleTick(blockpos, Blocks.FROSTED_ICE, Mth.nextInt(p_45019_.getRandom(), 60, 120)); } diff --git a/patches/minecraft/net/minecraft/world/item/trading/MerchantOffer.java.patch b/patches/minecraft/net/minecraft/world/item/trading/MerchantOffer.java.patch index 0d653da167..95062569be 100644 --- a/patches/minecraft/net/minecraft/world/item/trading/MerchantOffer.java.patch +++ b/patches/minecraft/net/minecraft/world/item/trading/MerchantOffer.java.patch @@ -2,19 +2,19 @@ +++ b/net/minecraft/world/item/trading/MerchantOffer.java @@ -77,7 +_,7 @@ } else { - int i = this.f_45310_.m_41613_(); - int j = Math.max(0, Mth.m_14143_((float)(i * this.f_45317_) * this.f_45318_)); -- return this.f_45310_.m_255036_(Mth.m_14045_(i + j + this.f_45316_, 1, this.f_45310_.m_41720_().m_41459_())); -+ return this.f_45310_.m_255036_(Mth.m_14045_(i + j + this.f_45316_, 1, this.f_45310_.m_41741_())); + int i = this.baseCostA.getCount(); + int j = Math.max(0, Mth.floor((float)(i * this.demand) * this.priceMultiplier)); +- return this.baseCostA.copyWithCount(Mth.clamp(i + j + this.specialPriceDiff, 1, this.baseCostA.getItem().getMaxStackSize())); ++ return this.baseCostA.copyWithCount(Mth.clamp(i + j + this.specialPriceDiff, 1, this.baseCostA.getMaxStackSize())); } } @@ -181,7 +_,7 @@ return true; } else { - ItemStack itemstack = p_45366_.m_41777_(); -- if (itemstack.m_41720_().m_41465_()) { -+ if (itemstack.m_41720_().isDamageable(itemstack)) { - itemstack.m_41721_(itemstack.m_41773_()); + ItemStack itemstack = p_45366_.copy(); +- if (itemstack.getItem().canBeDepleted()) { ++ if (itemstack.getItem().isDamageable(itemstack)) { + itemstack.setDamageValue(itemstack.getDamageValue()); } diff --git a/patches/minecraft/net/minecraft/world/level/BaseSpawner.java.patch b/patches/minecraft/net/minecraft/world/level/BaseSpawner.java.patch index ecd33cb651..a3fbf9cea5 100644 --- a/patches/minecraft/net/minecraft/world/level/BaseSpawner.java.patch +++ b/patches/minecraft/net/minecraft/world/level/BaseSpawner.java.patch @@ -1,26 +1,26 @@ --- a/net/minecraft/world/level/BaseSpawner.java +++ b/net/minecraft/world/level/BaseSpawner.java @@ -131,12 +_,14 @@ - entity.m_7678_(entity.m_20185_(), entity.m_20186_(), entity.m_20189_(), randomsource.m_188501_() * 360.0F, 0.0F); + entity.moveTo(entity.getX(), entity.getY(), entity.getZ(), randomsource.nextFloat() * 360.0F, 0.0F); if (entity instanceof Mob) { Mob mob = (Mob)entity; -- if (spawndata.m_186574_().isEmpty() && !mob.m_5545_(p_151312_, MobSpawnType.SPAWNER) || !mob.m_6914_(p_151312_)) { +- if (spawndata.getCustomSpawnRules().isEmpty() && !mob.checkSpawnRules(p_151312_, MobSpawnType.SPAWNER) || !mob.checkSpawnObstruction(p_151312_)) { + if (!net.minecraftforge.event.ForgeEventFactory.checkSpawnPositionSpawner(mob, p_151312_, MobSpawnType.SPAWNER, spawndata, this)) { continue; } -- if (spawndata.m_186567_().m_128440_() == 1 && spawndata.m_186567_().m_128425_("id", 8)) { -- ((Mob)entity).m_6518_(p_151312_, p_151312_.m_6436_(entity.m_20183_()), MobSpawnType.SPAWNER, (SpawnGroupData)null, (CompoundTag)null); +- if (spawndata.getEntityToSpawn().size() == 1 && spawndata.getEntityToSpawn().contains("id", 8)) { +- ((Mob)entity).finalizeSpawn(p_151312_, p_151312_.getCurrentDifficultyAt(entity.blockPosition()), MobSpawnType.SPAWNER, (SpawnGroupData)null, (CompoundTag)null); + // Forge: Patch in FinalizeSpawn for spawners so it may be fired unconditionally, instead of only when vanilla normally would trigger it. -+ var event = net.minecraftforge.event.ForgeEventFactory.onFinalizeSpawnSpawner(mob, p_151312_, p_151312_.m_6436_(entity.m_20183_()), null, compoundtag, this); -+ if (event != null && spawndata.m_186567_().m_128440_() == 1 && spawndata.m_186567_().m_128425_("id", 8)) { -+ ((Mob)entity).m_6518_(p_151312_, event.getDifficulty(), event.getSpawnType(), event.getSpawnData(), event.getSpawnTag()); ++ var event = net.minecraftforge.event.ForgeEventFactory.onFinalizeSpawnSpawner(mob, p_151312_, p_151312_.getCurrentDifficultyAt(entity.blockPosition()), null, compoundtag, this); ++ if (event != null && spawndata.getEntityToSpawn().size() == 1 && spawndata.getEntityToSpawn().contains("id", 8)) { ++ ((Mob)entity).finalizeSpawn(p_151312_, event.getDifficulty(), event.getSpawnType(), event.getSpawnData(), event.getSpawnTag()); } } @@ -283,4 +_,12 @@ - public double m_45474_() { - return this.f_45446_; + public double getoSpin() { + return this.oSpin; } + + @Nullable diff --git a/patches/minecraft/net/minecraft/world/level/BlockAndTintGetter.java.patch b/patches/minecraft/net/minecraft/world/level/BlockAndTintGetter.java.patch index 2f63016415..73b33f8bd7 100644 --- a/patches/minecraft/net/minecraft/world/level/BlockAndTintGetter.java.patch +++ b/patches/minecraft/net/minecraft/world/level/BlockAndTintGetter.java.patch @@ -6,6 +6,6 @@ -public interface BlockAndTintGetter extends BlockGetter { +public interface BlockAndTintGetter extends BlockGetter, net.minecraftforge.client.extensions.IForgeBlockAndTintGetter { - float m_7717_(Direction p_45522_, boolean p_45523_); + float getShade(Direction p_45522_, boolean p_45523_); - LevelLightEngine m_5518_(); + LevelLightEngine getLightEngine(); diff --git a/patches/minecraft/net/minecraft/world/level/BlockGetter.java.patch b/patches/minecraft/net/minecraft/world/level/BlockGetter.java.patch index ddb49a9981..24075dda11 100644 --- a/patches/minecraft/net/minecraft/world/level/BlockGetter.java.patch +++ b/patches/minecraft/net/minecraft/world/level/BlockGetter.java.patch @@ -7,14 +7,14 @@ -public interface BlockGetter extends LevelHeightAccessor { +public interface BlockGetter extends LevelHeightAccessor, net.minecraftforge.common.extensions.IForgeBlockGetter { @Nullable - BlockEntity m_7702_(BlockPos p_45570_); + BlockEntity getBlockEntity(BlockPos p_45570_); @@ -32,7 +_,7 @@ - FluidState m_6425_(BlockPos p_45569_); + FluidState getFluidState(BlockPos p_45569_); - default int m_7146_(BlockPos p_45572_) { -- return this.m_8055_(p_45572_).m_60791_(); -+ return this.m_8055_(p_45572_).getLightEmission(this, p_45572_); + default int getLightEmission(BlockPos p_45572_) { +- return this.getBlockState(p_45572_).getLightEmission(); ++ return this.getBlockState(p_45572_).getLightEmission(this, p_45572_); } - default int m_7469_() { + default int getMaxLightLevel() { diff --git a/patches/minecraft/net/minecraft/world/level/ClipContext.java.patch b/patches/minecraft/net/minecraft/world/level/ClipContext.java.patch index 2965cd7e73..4edea0c06a 100644 --- a/patches/minecraft/net/minecraft/world/level/ClipContext.java.patch +++ b/patches/minecraft/net/minecraft/world/level/ClipContext.java.patch @@ -1,17 +1,17 @@ --- a/net/minecraft/world/level/ClipContext.java +++ b/net/minecraft/world/level/ClipContext.java @@ -20,12 +_,12 @@ - private final ClipContext.Fluid f_45685_; - private final CollisionContext f_45686_; + private final ClipContext.Fluid fluid; + private final CollisionContext collisionContext; - public ClipContext(Vec3 p_45688_, Vec3 p_45689_, ClipContext.Block p_45690_, ClipContext.Fluid p_45691_, Entity p_45692_) { + public ClipContext(Vec3 p_45688_, Vec3 p_45689_, ClipContext.Block p_45690_, ClipContext.Fluid p_45691_, @org.jetbrains.annotations.Nullable Entity p_45692_) { - this.f_45682_ = p_45688_; - this.f_45683_ = p_45689_; - this.f_45684_ = p_45690_; - this.f_45685_ = p_45691_; -- this.f_45686_ = CollisionContext.m_82750_(p_45692_); -+ this.f_45686_ = p_45692_ == null ? CollisionContext.m_82749_() : CollisionContext.m_82750_(p_45692_); + this.from = p_45688_; + this.to = p_45689_; + this.block = p_45690_; + this.fluid = p_45691_; +- this.collisionContext = CollisionContext.of(p_45692_); ++ this.collisionContext = p_45692_ == null ? CollisionContext.empty() : CollisionContext.of(p_45692_); } - public Vec3 m_45693_() { + public Vec3 getTo() { diff --git a/patches/minecraft/net/minecraft/world/level/DataPackConfig.java.patch b/patches/minecraft/net/minecraft/world/level/DataPackConfig.java.patch index 422609290a..06e33c34ee 100644 --- a/patches/minecraft/net/minecraft/world/level/DataPackConfig.java.patch +++ b/patches/minecraft/net/minecraft/world/level/DataPackConfig.java.patch @@ -1,21 +1,21 @@ --- a/net/minecraft/world/level/DataPackConfig.java +++ b/net/minecraft/world/level/DataPackConfig.java @@ -18,7 +_,7 @@ - private final List f_45845_; + private final List disabled; public DataPackConfig(List p_45848_, List p_45849_) { -- this.f_45844_ = ImmutableList.copyOf(p_45848_); -+ this.f_45844_ = com.google.common.collect.Lists.newArrayList(p_45848_); - this.f_45845_ = ImmutableList.copyOf(p_45849_); +- this.enabled = ImmutableList.copyOf(p_45848_); ++ this.enabled = com.google.common.collect.Lists.newArrayList(p_45848_); + this.disabled = ImmutableList.copyOf(p_45849_); } @@ -28,5 +_,9 @@ - public List m_45855_() { - return this.f_45845_; + public List getDisabled() { + return this.disabled; + } + + public void addModPacks(List modPacks) { -+ f_45844_.addAll(modPacks.stream().filter(p->!f_45844_.contains(p)).collect(java.util.stream.Collectors.toList())); ++ enabled.addAll(modPacks.stream().filter(p->!enabled.contains(p)).collect(java.util.stream.Collectors.toList())); } } diff --git a/patches/minecraft/net/minecraft/world/level/Explosion.java.patch b/patches/minecraft/net/minecraft/world/level/Explosion.java.patch index a110692050..80035052ad 100644 --- a/patches/minecraft/net/minecraft/world/level/Explosion.java.patch +++ b/patches/minecraft/net/minecraft/world/level/Explosion.java.patch @@ -1,52 +1,52 @@ --- a/net/minecraft/world/level/Explosion.java +++ b/net/minecraft/world/level/Explosion.java @@ -56,6 +_,7 @@ - private final ExplosionDamageCalculator f_46019_; - private final ObjectArrayList f_46020_ = new ObjectArrayList<>(); - private final Map f_46021_ = Maps.newHashMap(); + private final ExplosionDamageCalculator damageCalculator; + private final ObjectArrayList toBlow = new ObjectArrayList<>(); + private final Map hitPlayers = Maps.newHashMap(); + private final Vec3 position; public Explosion(Level p_46024_, @Nullable Entity p_46025_, double p_46026_, double p_46027_, double p_46028_, float p_46029_, List p_46030_) { this(p_46024_, p_46025_, p_46026_, p_46027_, p_46028_, p_46029_, false, Explosion.BlockInteraction.DESTROY_WITH_DECAY, p_46030_); @@ -81,6 +_,7 @@ - this.f_46010_ = p_46060_; - this.f_46018_ = p_46053_ == null ? p_46051_.m_269111_().m_269093_(this) : p_46053_; - this.f_46019_ = p_46054_ == null ? this.m_46062_(p_46052_) : p_46054_; -+ this.position = new Vec3(this.f_46013_, this.f_46014_, this.f_46015_); + this.blockInteraction = p_46060_; + this.damageSource = p_46053_ == null ? p_46051_.damageSources().explosion(this) : p_46053_; + this.damageCalculator = p_46054_ == null ? this.makeDamageCalculator(p_46052_) : p_46054_; ++ this.position = new Vec3(this.x, this.y, this.z); } - private ExplosionDamageCalculator m_46062_(@Nullable Entity p_46063_) { + private ExplosionDamageCalculator makeDamageCalculator(@Nullable Entity p_46063_) { @@ -176,6 +_,7 @@ - int j2 = Mth.m_14107_(this.f_46015_ - (double)f2 - 1.0D); - int j1 = Mth.m_14107_(this.f_46015_ + (double)f2 + 1.0D); - List list = this.f_46012_.m_45933_(this.f_46016_, new AABB((double)k1, (double)i2, (double)j2, (double)l1, (double)i1, (double)j1)); -+ net.minecraftforge.event.ForgeEventFactory.onExplosionDetonate(this.f_46012_, this, list, f2); - Vec3 vec3 = new Vec3(this.f_46013_, this.f_46014_, this.f_46015_); + int j2 = Mth.floor(this.z - (double)f2 - 1.0D); + int j1 = Mth.floor(this.z + (double)f2 + 1.0D); + List list = this.level.getEntities(this.source, new AABB((double)k1, (double)i2, (double)j2, (double)l1, (double)i1, (double)j1)); ++ net.minecraftforge.event.ForgeEventFactory.onExplosionDetonate(this.level, this, list, f2); + Vec3 vec3 = new Vec3(this.x, this.y, this.z); for(Entity entity : list) { @@ -244,7 +_,7 @@ - if (!blockstate.m_60795_()) { - BlockPos blockpos1 = blockpos.m_7949_(); - this.f_46012_.m_46473_().m_6180_("explosion_blocks"); -- if (block.m_6903_(this)) { -+ if (blockstate.canDropFromExplosion(this.f_46012_, blockpos, this)) { - Level $$9 = this.f_46012_; + if (!blockstate.isAir()) { + BlockPos blockpos1 = blockpos.immutable(); + this.level.getProfiler().push("explosion_blocks"); +- if (block.dropFromExplosion(this)) { ++ if (blockstate.canDropFromExplosion(this.level, blockpos, this)) { + Level $$9 = this.level; if ($$9 instanceof ServerLevel) { ServerLevel serverlevel = (ServerLevel)$$9; @@ -261,8 +_,7 @@ } } -- this.f_46012_.m_7731_(blockpos, Blocks.f_50016_.m_49966_(), 3); -- block.m_7592_(this.f_46012_, blockpos, this); -+ blockstate.onBlockExploded(this.f_46012_, blockpos, this); - this.f_46012_.m_46473_().m_7238_(); +- this.level.setBlock(blockpos, Blocks.AIR.defaultBlockState(), 3); +- block.wasExploded(this.level, blockpos, this); ++ blockstate.onBlockExploded(this.level, blockpos, this); + this.level.getProfiler().pop(); } } @@ -353,6 +_,15 @@ - public List m_46081_() { - return this.f_46020_; + public List getToBlow() { + return this.toBlow; + } + + public Vec3 getPosition() { @@ -55,7 +55,7 @@ + + @Nullable + public Entity getExploder() { -+ return this.f_46016_; ++ return this.source; } public static enum BlockInteraction { diff --git a/patches/minecraft/net/minecraft/world/level/ExplosionDamageCalculator.java.patch b/patches/minecraft/net/minecraft/world/level/ExplosionDamageCalculator.java.patch index 5a10defa2c..ed145a9357 100644 --- a/patches/minecraft/net/minecraft/world/level/ExplosionDamageCalculator.java.patch +++ b/patches/minecraft/net/minecraft/world/level/ExplosionDamageCalculator.java.patch @@ -3,9 +3,9 @@ @@ -7,7 +_,7 @@ public class ExplosionDamageCalculator { - public Optional m_6617_(Explosion p_46099_, BlockGetter p_46100_, BlockPos p_46101_, BlockState p_46102_, FluidState p_46103_) { -- return p_46102_.m_60795_() && p_46103_.m_76178_() ? Optional.empty() : Optional.of(Math.max(p_46102_.m_60734_().m_7325_(), p_46103_.m_76190_())); -+ return p_46102_.m_60795_() && p_46103_.m_76178_() ? Optional.empty() : Optional.of(Math.max(p_46102_.getExplosionResistance(p_46100_, p_46101_, p_46099_), p_46103_.getExplosionResistance(p_46100_, p_46101_, p_46099_))); + public Optional getBlockExplosionResistance(Explosion p_46099_, BlockGetter p_46100_, BlockPos p_46101_, BlockState p_46102_, FluidState p_46103_) { +- return p_46102_.isAir() && p_46103_.isEmpty() ? Optional.empty() : Optional.of(Math.max(p_46102_.getBlock().getExplosionResistance(), p_46103_.getExplosionResistance())); ++ return p_46102_.isAir() && p_46103_.isEmpty() ? Optional.empty() : Optional.of(Math.max(p_46102_.getExplosionResistance(p_46100_, p_46101_, p_46099_), p_46103_.getExplosionResistance(p_46100_, p_46101_, p_46099_))); } - public boolean m_6714_(Explosion p_46094_, BlockGetter p_46095_, BlockPos p_46096_, BlockState p_46097_, float p_46098_) { + public boolean shouldBlockExplode(Explosion p_46094_, BlockGetter p_46095_, BlockPos p_46096_, BlockState p_46097_, float p_46098_) { diff --git a/patches/minecraft/net/minecraft/world/level/ForcedChunksSavedData.java.patch b/patches/minecraft/net/minecraft/world/level/ForcedChunksSavedData.java.patch index 2c8de97857..eebfd8aa17 100644 --- a/patches/minecraft/net/minecraft/world/level/ForcedChunksSavedData.java.patch +++ b/patches/minecraft/net/minecraft/world/level/ForcedChunksSavedData.java.patch @@ -3,21 +3,21 @@ @@ -24,15 +_,31 @@ } - public static ForcedChunksSavedData m_151483_(CompoundTag p_151484_) { -- return new ForcedChunksSavedData(new LongOpenHashSet(p_151484_.m_128467_("Forced"))); -+ ForcedChunksSavedData savedData = new ForcedChunksSavedData(new LongOpenHashSet(p_151484_.m_128467_("Forced"))); + public static ForcedChunksSavedData load(CompoundTag p_151484_) { +- return new ForcedChunksSavedData(new LongOpenHashSet(p_151484_.getLongArray("Forced"))); ++ ForcedChunksSavedData savedData = new ForcedChunksSavedData(new LongOpenHashSet(p_151484_.getLongArray("Forced"))); + net.minecraftforge.common.world.ForgeChunkManager.readForgeForcedChunks(p_151484_, savedData.blockForcedChunks, savedData.entityForcedChunks); + return savedData; } - public CompoundTag m_7176_(CompoundTag p_46120_) { - p_46120_.m_128388_("Forced", this.f_46114_.toLongArray()); + public CompoundTag save(CompoundTag p_46120_) { + p_46120_.putLongArray("Forced", this.chunks.toLongArray()); + net.minecraftforge.common.world.ForgeChunkManager.writeForgeForcedChunks(p_46120_, this.blockForcedChunks, this.entityForcedChunks); return p_46120_; } - public LongSet m_46116_() { - return this.f_46114_; + public LongSet getChunks() { + return this.chunks; + } + + /* ======================================== FORGE START =====================================*/ diff --git a/patches/minecraft/net/minecraft/world/level/Level.java.patch b/patches/minecraft/net/minecraft/world/level/Level.java.patch index 4eeb72f468..3c46cf6d7f 100644 --- a/patches/minecraft/net/minecraft/world/level/Level.java.patch +++ b/patches/minecraft/net/minecraft/world/level/Level.java.patch @@ -6,13 +6,13 @@ -public abstract class Level implements LevelAccessor, AutoCloseable { +public abstract class Level extends net.minecraftforge.common.capabilities.CapabilityProvider implements LevelAccessor, AutoCloseable, net.minecraftforge.common.extensions.IForgeLevel { - public static final Codec> f_46427_ = ResourceKey.m_195966_(Registries.f_256858_); - public static final ResourceKey f_46428_ = ResourceKey.m_135785_(Registries.f_256858_, new ResourceLocation("overworld")); - public static final ResourceKey f_46429_ = ResourceKey.m_135785_(Registries.f_256858_, new ResourceLocation("the_nether")); + public static final Codec> RESOURCE_KEY_CODEC = ResourceKey.codec(Registries.DIMENSION); + public static final ResourceKey OVERWORLD = ResourceKey.create(Registries.DIMENSION, new ResourceLocation("overworld")); + public static final ResourceKey NETHER = ResourceKey.create(Registries.DIMENSION, new ResourceLocation("the_nether")); @@ -110,8 +_,14 @@ - private final RegistryAccess f_268710_; - private final DamageSources f_268497_; - private long f_186455_; + private final RegistryAccess registryAccess; + private final DamageSources damageSources; + private long subTickCount; + public boolean restoringBlockSnapshots = false; + public boolean captureBlockSnapshots = false; + public java.util.ArrayList capturedBlockSnapshots = new java.util.ArrayList<>(); @@ -21,31 +21,31 @@ protected Level(WritableLevelData p_270739_, ResourceKey p_270683_, RegistryAccess p_270200_, Holder p_270240_, Supplier p_270692_, boolean p_270904_, boolean p_270470_, long p_270248_, int p_270466_) { + super(Level.class); - this.f_46446_ = p_270692_; - this.f_46442_ = p_270739_; - this.f_204147_ = p_270240_; + this.profiler = p_270692_; + this.levelData = p_270739_; + this.dimensionTypeRegistration = p_270240_; @@ -198,11 +_,40 @@ } else { - LevelChunk levelchunk = this.m_46745_(p_46605_); - Block block = p_46606_.m_60734_(); + LevelChunk levelchunk = this.getChunkAt(p_46605_); + Block block = p_46606_.getBlock(); + -+ p_46605_ = p_46605_.m_7949_(); // Forge - prevent mutable BlockPos leaks ++ p_46605_ = p_46605_.immutable(); // Forge - prevent mutable BlockPos leaks + net.minecraftforge.common.util.BlockSnapshot blockSnapshot = null; -+ if (this.captureBlockSnapshots && !this.f_46443_) { -+ blockSnapshot = net.minecraftforge.common.util.BlockSnapshot.create(this.f_46421_, this, p_46605_, p_46607_); ++ if (this.captureBlockSnapshots && !this.isClientSide) { ++ blockSnapshot = net.minecraftforge.common.util.BlockSnapshot.create(this.dimension, this, p_46605_, p_46607_); + this.capturedBlockSnapshots.add(blockSnapshot); + } + -+ BlockState old = m_8055_(p_46605_); ++ BlockState old = getBlockState(p_46605_); + int oldLight = old.getLightEmission(this, p_46605_); -+ int oldOpacity = old.m_60739_(this, p_46605_); ++ int oldOpacity = old.getLightBlock(this, p_46605_); + - BlockState blockstate = levelchunk.m_6978_(p_46605_, p_46606_, (p_46607_ & 64) != 0); + BlockState blockstate = levelchunk.setBlockState(p_46605_, p_46606_, (p_46607_ & 64) != 0); if (blockstate == null) { + if (blockSnapshot != null) this.capturedBlockSnapshots.remove(blockSnapshot); return false; } else { - BlockState blockstate1 = this.m_8055_(p_46605_); + BlockState blockstate1 = this.getBlockState(p_46605_); + + if (blockSnapshot == null) { // Don't notify clients or update physics while capturing blockstates + this.markAndNotifyBlock(p_46605_, levelchunk, blockstate, p_46606_, p_46607_, p_46608_); @@ -58,17 +58,17 @@ + + // Split off from original setBlockState(BlockPos, BlockState, int, int) method in order to directly send client and physic updates + public void markAndNotifyBlock(BlockPos p_46605_, @Nullable LevelChunk levelchunk, BlockState blockstate, BlockState p_46606_, int p_46607_, int p_46608_) { -+ Block block = p_46606_.m_60734_(); -+ BlockState blockstate1 = m_8055_(p_46605_); ++ Block block = p_46606_.getBlock(); ++ BlockState blockstate1 = getBlockState(p_46605_); + { + { if (blockstate1 == p_46606_) { if (blockstate != blockstate1) { - this.m_6550_(p_46605_, blockstate, blockstate1); + this.setBlocksDirty(p_46605_, blockstate, blockstate1); @@ -227,9 +_,8 @@ } - this.m_6559_(p_46605_, blockstate, blockstate1); + this.onBlockStateChange(p_46605_, blockstate, blockstate1); + p_46606_.onBlockStateChange(this, p_46605_, blockstate); } - @@ -79,51 +79,51 @@ @@ -279,6 +_,7 @@ } - public void m_46672_(BlockPos p_46673_, Block p_46674_) { -+ net.minecraftforge.event.ForgeEventFactory.onNeighborNotify(this, p_46673_, this.m_8055_(p_46673_), java.util.EnumSet.allOf(Direction.class), false).isCanceled(); + public void updateNeighborsAt(BlockPos p_46673_, Block p_46674_) { ++ net.minecraftforge.event.ForgeEventFactory.onNeighborNotify(this, p_46673_, this.getBlockState(p_46673_), java.util.EnumSet.allOf(Direction.class), false).isCanceled(); } - public void m_46590_(BlockPos p_46591_, Block p_46592_, Direction p_46593_) { + public void updateNeighborsAtExceptFromFacing(BlockPos p_46591_, Block p_46592_, Direction p_46593_) { @@ -398,10 +_,26 @@ - (this.f_151504_ ? this.f_151503_ : this.f_151512_).add(p_151526_); + (this.tickingBlockEntities ? this.pendingBlockEntityTickers : this.blockEntityTickers).add(p_151526_); } + public void addFreshBlockEntities(java.util.Collection beList) { -+ if (this.f_151504_) { ++ if (this.tickingBlockEntities) { + this.pendingFreshBlockEntities.addAll(beList); + } else { + this.freshBlockEntities.addAll(beList); + } + } + - protected void m_46463_() { - ProfilerFiller profilerfiller = this.m_46473_(); - profilerfiller.m_6180_("blockEntities"); + protected void tickBlockEntities() { + ProfilerFiller profilerfiller = this.getProfiler(); + profilerfiller.push("blockEntities"); + if (!this.pendingFreshBlockEntities.isEmpty()) { + this.freshBlockEntities.addAll(this.pendingFreshBlockEntities); + this.pendingFreshBlockEntities.clear(); + } - this.f_151504_ = true; + this.tickingBlockEntities = true; + if (!this.freshBlockEntities.isEmpty()) { + this.freshBlockEntities.forEach(BlockEntity::onLoad); + this.freshBlockEntities.clear(); + } - if (!this.f_151503_.isEmpty()) { - this.f_151512_.addAll(this.f_151503_); - this.f_151503_.clear(); + if (!this.pendingBlockEntityTickers.isEmpty()) { + this.blockEntityTickers.addAll(this.pendingBlockEntityTickers); + this.pendingBlockEntityTickers.clear(); @@ -424,12 +_,19 @@ - public void m_46653_(Consumer p_46654_, T p_46655_) { + public void guardEntityTick(Consumer p_46654_, T p_46655_) { try { + net.minecraftforge.server.timings.TimeTracker.ENTITY_UPDATE.trackStart(p_46655_); p_46654_.accept(p_46655_); } catch (Throwable throwable) { - CrashReport crashreport = CrashReport.m_127521_(throwable, "Ticking entity"); - CrashReportCategory crashreportcategory = crashreport.m_127514_("Entity being ticked"); - p_46655_.m_7976_(crashreportcategory); + CrashReport crashreport = CrashReport.forThrowable(throwable, "Ticking entity"); + CrashReportCategory crashreportcategory = crashreport.addCategory("Entity being ticked"); + p_46655_.fillCrashReportCategory(crashreportcategory); + if (net.minecraftforge.common.ForgeConfig.SERVER.removeErroringEntities.get()) { -+ com.mojang.logging.LogUtils.getLogger().error("{}", crashreport.m_127526_()); -+ p_46655_.m_146870_(); ++ com.mojang.logging.LogUtils.getLogger().error("{}", crashreport.getFriendlyReport()); ++ p_46655_.discard(); + } else throw new ReportedException(crashreport); + } finally { @@ -132,44 +132,44 @@ } @@ -471,7 +_,7 @@ - explosion$blockinteraction1 = this.m_255157_(GameRules.f_254629_); + explosion$blockinteraction1 = this.getDestroyType(GameRules.RULE_BLOCK_EXPLOSION_DROP_DECAY); break; case MOB: -- explosion$blockinteraction1 = this.m_46469_().m_46207_(GameRules.f_46132_) ? this.m_255157_(GameRules.f_254692_) : Explosion.BlockInteraction.KEEP; -+ explosion$blockinteraction1 = net.minecraftforge.event.ForgeEventFactory.getMobGriefingEvent(this, p_256233_) ? this.m_255157_(GameRules.f_254692_) : Explosion.BlockInteraction.KEEP; +- explosion$blockinteraction1 = this.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING) ? this.getDestroyType(GameRules.RULE_MOB_EXPLOSION_DROP_DECAY) : Explosion.BlockInteraction.KEEP; ++ explosion$blockinteraction1 = net.minecraftforge.event.ForgeEventFactory.getMobGriefingEvent(this, p_256233_) ? this.getDestroyType(GameRules.RULE_MOB_EXPLOSION_DROP_DECAY) : Explosion.BlockInteraction.KEEP; break; case TNT: - explosion$blockinteraction1 = this.m_255157_(GameRules.f_254705_); + explosion$blockinteraction1 = this.getDestroyType(GameRules.RULE_TNT_EXPLOSION_DROP_DECAY); @@ -482,6 +_,7 @@ Explosion.BlockInteraction explosion$blockinteraction = explosion$blockinteraction1; Explosion explosion = new Explosion(this, p_256233_, p_255861_, p_255867_, p_256447_, p_255732_, p_255717_, p_256013_, p_256228_, explosion$blockinteraction); + if (net.minecraftforge.event.ForgeEventFactory.onExplosionStart(this, explosion)) return explosion; - explosion.m_46061_(); - explosion.m_46075_(p_256377_); + explosion.explode(); + explosion.finalizeExplosion(p_256377_); return explosion; @@ -513,6 +_,7 @@ - if (!this.m_151570_(p_46748_)) { - this.m_46745_(p_46748_).m_8114_(p_46748_); + if (!this.isOutsideBuildHeight(p_46748_)) { + this.getChunkAt(p_46748_).removeBlockEntity(p_46748_); } -+ this.m_46717_(p_46748_, m_8055_(p_46748_).m_60734_()); //Notify neighbors of changes ++ this.updateNeighbourForOutputSignal(p_46748_, getBlockState(p_46748_).getBlock()); //Notify neighbors of changes } - public boolean m_46749_(BlockPos p_46750_) { + public boolean isLoaded(BlockPos p_46750_) { @@ -583,6 +_,7 @@ list.add(p_151522_); } + if (false) if (p_151522_ instanceof EnderDragon) { - for(EnderDragonPart enderdragonpart : ((EnderDragon)p_151522_).m_31156_()) { + for(EnderDragonPart enderdragonpart : ((EnderDragon)p_151522_).getSubEntities()) { if (p_151522_ != p_46536_ && p_46538_.test(enderdragonpart)) { @@ -592,6 +_,11 @@ } }); + for (net.minecraftforge.entity.PartEntity p : this.getPartEntities()) { -+ if (p != p_46536_ && p.m_20191_().m_82381_(p_46537_) && p_46538_.test(p)) { ++ if (p != p_46536_ && p.getBoundingBox().intersects(p_46537_) && p_46538_.test(p)) { + list.add(p); + } + } @@ -183,15 +183,15 @@ + + if (false) if (p_261454_ instanceof EnderDragon enderdragon) { - for(EnderDragonPart enderdragonpart : enderdragon.m_31156_()) { - T t = p_261885_.m_141992_(enderdragonpart); + for(EnderDragonPart enderdragonpart : enderdragon.getSubEntities()) { + T t = p_261885_.tryCast(enderdragonpart); @@ -629,6 +_,15 @@ return AbortableIterationConsumer.Continuation.CONTINUE; }); + for (net.minecraftforge.entity.PartEntity p : this.getPartEntities()) { -+ T t = p_261885_.m_141992_(p); -+ if (t != null && t.m_20191_().m_82381_(p_262086_) && p_261688_.test(t)) { ++ T t = p_261885_.tryCast(p); ++ if (t != null && t.getBoundingBox().intersects(p_262086_) && p_261688_.test(t)) { + p_262071_.add(t); + if (p_262071_.size() >= p_261858_) { + break; @@ -202,30 +202,30 @@ @Nullable @@ -760,16 +_,15 @@ - public abstract Scoreboard m_6188_(); + public abstract Scoreboard getScoreboard(); - public void m_46717_(BlockPos p_46718_, Block p_46719_) { + public void updateNeighbourForOutputSignal(BlockPos p_46718_, Block p_46719_) { - for(Direction direction : Direction.Plane.HORIZONTAL) { + for(Direction direction : Direction.values()) { - BlockPos blockpos = p_46718_.m_121945_(direction); - if (this.m_46805_(blockpos)) { - BlockState blockstate = this.m_8055_(blockpos); -- if (blockstate.m_60713_(Blocks.f_50328_)) { -- this.m_213960_(blockstate, blockpos, p_46719_, p_46718_, false); -- } else if (blockstate.m_60796_(this, blockpos)) { + BlockPos blockpos = p_46718_.relative(direction); + if (this.hasChunkAt(blockpos)) { + BlockState blockstate = this.getBlockState(blockpos); +- if (blockstate.is(Blocks.COMPARATOR)) { +- this.neighborChanged(blockstate, blockpos, p_46719_, p_46718_, false); +- } else if (blockstate.isRedstoneConductor(this, blockpos)) { + blockstate.onNeighborChange(this, blockpos, p_46718_); -+ if (blockstate.m_60796_(this, blockpos)) { - blockpos = blockpos.m_121945_(direction); - blockstate = this.m_8055_(blockpos); -- if (blockstate.m_60713_(Blocks.f_50328_)) { ++ if (blockstate.isRedstoneConductor(this, blockpos)) { + blockpos = blockpos.relative(direction); + blockstate = this.getBlockState(blockpos); +- if (blockstate.is(Blocks.COMPARATOR)) { + if (blockstate.getWeakChanges(this, blockpos)) { - this.m_213960_(blockstate, blockpos, p_46719_, p_46718_, false); + this.neighborChanged(blockstate, blockpos, p_46719_, p_46718_, false); } } @@ -854,6 +_,18 @@ - public BiomeManager m_7062_() { - return this.f_46420_; + public BiomeManager getBiomeManager() { + return this.biomeManager; + } + + private double maxEntityRadius = 2.0D; @@ -240,4 +240,4 @@ + return maxEntityRadius; } - public final boolean m_46659_() { + public final boolean isDebug() { diff --git a/patches/minecraft/net/minecraft/world/level/LevelReader.java.patch b/patches/minecraft/net/minecraft/world/level/LevelReader.java.patch index bd48d34cc8..9a273915fb 100644 --- a/patches/minecraft/net/minecraft/world/level/LevelReader.java.patch +++ b/patches/minecraft/net/minecraft/world/level/LevelReader.java.patch @@ -5,9 +5,9 @@ /** @deprecated */ + default boolean isAreaLoaded(BlockPos center, int range) { -+ return this.m_46832_(center.m_7918_(-range, -range, -range), center.m_7918_(range, range, range)); ++ return this.hasChunksAt(center.offset(-range, -range, -range), center.offset(range, range, range)); + } + @Deprecated - default boolean m_46832_(BlockPos p_46833_, BlockPos p_46834_) { - return this.m_46812_(p_46833_.m_123341_(), p_46833_.m_123342_(), p_46833_.m_123343_(), p_46834_.m_123341_(), p_46834_.m_123342_(), p_46834_.m_123343_()); + default boolean hasChunksAt(BlockPos p_46833_, BlockPos p_46834_) { + return this.hasChunksAt(p_46833_.getX(), p_46833_.getY(), p_46833_.getZ(), p_46834_.getX(), p_46834_.getY(), p_46834_.getZ()); diff --git a/patches/minecraft/net/minecraft/world/level/LevelSettings.java.patch b/patches/minecraft/net/minecraft/world/level/LevelSettings.java.patch index 3a40054f40..d08b29a42b 100644 --- a/patches/minecraft/net/minecraft/world/level/LevelSettings.java.patch +++ b/patches/minecraft/net/minecraft/world/level/LevelSettings.java.patch @@ -1,59 +1,59 @@ --- a/net/minecraft/world/level/LevelSettings.java +++ b/net/minecraft/world/level/LevelSettings.java @@ -11,8 +_,12 @@ - private final boolean f_46906_; - private final GameRules f_46907_; - private final WorldDataConfiguration f_243681_; + private final boolean allowCommands; + private final GameRules gameRules; + private final WorldDataConfiguration dataConfiguration; + private final com.mojang.serialization.Lifecycle lifecycle; public LevelSettings(String p_250485_, GameType p_250207_, boolean p_251631_, Difficulty p_252122_, boolean p_248961_, GameRules p_248536_, WorldDataConfiguration p_249797_) { + this(p_250485_, p_250207_, p_251631_, p_252122_, p_248961_, p_248536_, p_249797_, com.mojang.serialization.Lifecycle.stable()); + } + public LevelSettings(String p_250485_, GameType p_250207_, boolean p_251631_, Difficulty p_252122_, boolean p_248961_, GameRules p_248536_, WorldDataConfiguration p_249797_, com.mojang.serialization.Lifecycle lifecycle) { - this.f_46902_ = p_250485_; - this.f_46903_ = p_250207_; - this.f_46904_ = p_251631_; + this.levelName = p_250485_; + this.gameType = p_250207_; + this.hardcore = p_251631_; @@ -20,13 +_,14 @@ - this.f_46906_ = p_248961_; - this.f_46907_ = p_248536_; - this.f_243681_ = p_249797_; + this.allowCommands = p_248961_; + this.gameRules = p_248536_; + this.dataConfiguration = p_249797_; + this.lifecycle = lifecycle; } - public static LevelSettings m_46924_(Dynamic p_46925_, WorldDataConfiguration p_251697_) { - GameType gametype = GameType.m_46393_(p_46925_.get("GameType").asInt(0)); + public static LevelSettings parse(Dynamic p_46925_, WorldDataConfiguration p_251697_) { + GameType gametype = GameType.byId(p_46925_.get("GameType").asInt(0)); return new LevelSettings(p_46925_.get("LevelName").asString(""), gametype, p_46925_.get("hardcore").asBoolean(false), p_46925_.get("Difficulty").asNumber().map((p_46928_) -> { - return Difficulty.m_19029_(p_46928_.byteValue()); + return Difficulty.byId(p_46928_.byteValue()); - }).result().orElse(Difficulty.NORMAL), p_46925_.get("allowCommands").asBoolean(gametype == GameType.CREATIVE), new GameRules(p_46925_.get("GameRules")), p_251697_); + }).result().orElse(Difficulty.NORMAL), p_46925_.get("allowCommands").asBoolean(gametype == GameType.CREATIVE), new GameRules(p_46925_.get("GameRules")), p_251697_, net.minecraftforge.common.ForgeHooks.parseLifecycle(p_46925_.get("forgeLifecycle").asString("stable"))); } - public String m_46917_() { + public String levelName() { @@ -58,18 +_,25 @@ } - public LevelSettings m_46922_(GameType p_46923_) { -- return new LevelSettings(this.f_46902_, p_46923_, this.f_46904_, this.f_46905_, this.f_46906_, this.f_46907_, this.f_243681_); -+ return new LevelSettings(this.f_46902_, p_46923_, this.f_46904_, this.f_46905_, this.f_46906_, this.f_46907_, this.f_243681_, this.lifecycle); + public LevelSettings withGameType(GameType p_46923_) { +- return new LevelSettings(this.levelName, p_46923_, this.hardcore, this.difficulty, this.allowCommands, this.gameRules, this.dataConfiguration); ++ return new LevelSettings(this.levelName, p_46923_, this.hardcore, this.difficulty, this.allowCommands, this.gameRules, this.dataConfiguration, this.lifecycle); } - public LevelSettings m_46918_(Difficulty p_46919_) { -- return new LevelSettings(this.f_46902_, this.f_46903_, this.f_46904_, p_46919_, this.f_46906_, this.f_46907_, this.f_243681_); -+ net.minecraftforge.common.ForgeHooks.onDifficultyChange(p_46919_, this.f_46905_); -+ return new LevelSettings(this.f_46902_, this.f_46903_, this.f_46904_, p_46919_, this.f_46906_, this.f_46907_, this.f_243681_, this.lifecycle); + public LevelSettings withDifficulty(Difficulty p_46919_) { +- return new LevelSettings(this.levelName, this.gameType, this.hardcore, p_46919_, this.allowCommands, this.gameRules, this.dataConfiguration); ++ net.minecraftforge.common.ForgeHooks.onDifficultyChange(p_46919_, this.difficulty); ++ return new LevelSettings(this.levelName, this.gameType, this.hardcore, p_46919_, this.allowCommands, this.gameRules, this.dataConfiguration, this.lifecycle); } - public LevelSettings m_247275_(WorldDataConfiguration p_250867_) { -- return new LevelSettings(this.f_46902_, this.f_46903_, this.f_46904_, this.f_46905_, this.f_46906_, this.f_46907_, p_250867_); -+ return new LevelSettings(this.f_46902_, this.f_46903_, this.f_46904_, this.f_46905_, this.f_46906_, this.f_46907_, f_243681_, this.lifecycle); + public LevelSettings withDataConfiguration(WorldDataConfiguration p_250867_) { +- return new LevelSettings(this.levelName, this.gameType, this.hardcore, this.difficulty, this.allowCommands, this.gameRules, p_250867_); ++ return new LevelSettings(this.levelName, this.gameType, this.hardcore, this.difficulty, this.allowCommands, this.gameRules, dataConfiguration, this.lifecycle); } - public LevelSettings m_46935_() { -- return new LevelSettings(this.f_46902_, this.f_46903_, this.f_46904_, this.f_46905_, this.f_46906_, this.f_46907_.m_46202_(), this.f_243681_); -+ return new LevelSettings(this.f_46902_, this.f_46903_, this.f_46904_, this.f_46905_, this.f_46906_, this.f_46907_.m_46202_(), this.f_243681_, this.lifecycle); + public LevelSettings copy() { +- return new LevelSettings(this.levelName, this.gameType, this.hardcore, this.difficulty, this.allowCommands, this.gameRules.copy(), this.dataConfiguration); ++ return new LevelSettings(this.levelName, this.gameType, this.hardcore, this.difficulty, this.allowCommands, this.gameRules.copy(), this.dataConfiguration, this.lifecycle); + } + public LevelSettings withLifecycle(com.mojang.serialization.Lifecycle lifecycle) { -+ return new LevelSettings(this.f_46902_, this.f_46903_, this.f_46904_, this.f_46905_, this.f_46906_, this.f_46907_, this.f_243681_, lifecycle); ++ return new LevelSettings(this.levelName, this.gameType, this.hardcore, this.difficulty, this.allowCommands, this.gameRules, this.dataConfiguration, lifecycle); + } + public com.mojang.serialization.Lifecycle getLifecycle() { + return this.lifecycle; diff --git a/patches/minecraft/net/minecraft/world/level/NaturalSpawner.java.patch b/patches/minecraft/net/minecraft/world/level/NaturalSpawner.java.patch index acf2d37912..706b180504 100644 --- a/patches/minecraft/net/minecraft/world/level/NaturalSpawner.java.patch +++ b/patches/minecraft/net/minecraft/world/level/NaturalSpawner.java.patch @@ -6,31 +6,31 @@ +// TODO: ForgeHooks.canEntitySpawn public final class NaturalSpawner { - private static final Logger f_46977_ = LogUtils.getLogger(); - private static final int f_151589_ = 24; + private static final Logger LOGGER = LogUtils.getLogger(); + private static final int MIN_SPAWN_DISTANCE = 24; @@ -74,7 +_,7 @@ } } -- MobCategory mobcategory = entity.m_6095_().m_20674_(); +- MobCategory mobcategory = entity.getType().getCategory(); + MobCategory mobcategory = entity.getClassification(true); if (mobcategory != MobCategory.MISC) { - BlockPos blockpos = entity.m_20183_(); - p_186527_.m_47103_(ChunkPos.m_151388_(blockpos), (p_275163_) -> { + BlockPos blockpos = entity.blockPosition(); + p_186527_.query(ChunkPos.asLong(blockpos), (p_275163_) -> { @@ -177,7 +_,7 @@ ++l1; - p_47040_.m_47205_(mob); - p_47044_.m_47100_(mob, p_47041_); -- if (j >= mob.m_5792_()) { + p_47040_.addFreshEntityWithPassengers(mob); + p_47044_.run(mob, p_47041_); +- if (j >= mob.getMaxSpawnClusterSize()) { + if (j >= net.minecraftforge.event.ForgeEventFactory.getMaxSpawnPackSize(mob)) { return; } @@ -244,7 +_,7 @@ - if (p_46994_ > (double)(p_46993_.m_6095_().m_20674_().m_21611_() * p_46993_.m_6095_().m_20674_().m_21611_()) && p_46993_.m_6785_(p_46994_)) { + if (p_46994_ > (double)(p_46993_.getType().getCategory().getDespawnDistance() * p_46993_.getType().getCategory().getDespawnDistance()) && p_46993_.removeWhenFarAway(p_46994_)) { return false; } else { -- return p_46993_.m_5545_(p_46992_, MobSpawnType.NATURAL) && p_46993_.m_6914_(p_46992_); +- return p_46993_.checkSpawnRules(p_46992_, MobSpawnType.NATURAL) && p_46993_.checkSpawnObstruction(p_46992_); + return net.minecraftforge.event.ForgeEventFactory.checkSpawnPosition(p_46993_, p_46992_, MobSpawnType.NATURAL); } } @@ -38,17 +38,17 @@ @@ -258,7 +_,8 @@ } - private static WeightedRandomList m_220443_(ServerLevel p_220444_, StructureManager p_220445_, ChunkGenerator p_220446_, MobCategory p_220447_, BlockPos p_220448_, @Nullable Holder p_220449_) { -- return m_220455_(p_220448_, p_220444_, p_220447_, p_220445_) ? NetherFortressStructure.f_228517_ : p_220446_.m_223133_(p_220449_ != null ? p_220449_ : p_220444_.m_204166_(p_220448_), p_220445_, p_220447_, p_220448_); + private static WeightedRandomList mobsAt(ServerLevel p_220444_, StructureManager p_220445_, ChunkGenerator p_220446_, MobCategory p_220447_, BlockPos p_220448_, @Nullable Holder p_220449_) { +- return isInNetherFortressBounds(p_220448_, p_220444_, p_220447_, p_220445_) ? NetherFortressStructure.FORTRESS_ENEMIES : p_220446_.getMobsAt(p_220449_ != null ? p_220449_ : p_220444_.getBiome(p_220448_), p_220445_, p_220447_, p_220448_); + // Forge: Add in potential spawns, and replace hardcoded nether fortress mob list -+ return net.minecraftforge.event.ForgeEventFactory.getPotentialSpawns(p_220444_, p_220447_, p_220448_, m_220455_(p_220448_, p_220444_, p_220447_, p_220445_) ? p_220445_.m_220521_().m_175515_(Registries.f_256944_).m_123013_(BuiltinStructures.f_209859_).m_226612_().get(MobCategory.MONSTER).f_210044_() : p_220446_.m_223133_(p_220449_ != null ? p_220449_ : p_220444_.m_204166_(p_220448_), p_220445_, p_220447_, p_220448_)); ++ return net.minecraftforge.event.ForgeEventFactory.getPotentialSpawns(p_220444_, p_220447_, p_220448_, isInNetherFortressBounds(p_220448_, p_220444_, p_220447_, p_220445_) ? p_220445_.registryAccess().registryOrThrow(Registries.STRUCTURE).getOrThrow(BuiltinStructures.FORTRESS).spawnOverrides().get(MobCategory.MONSTER).spawns() : p_220446_.getMobsAt(p_220449_ != null ? p_220449_ : p_220444_.getBiome(p_220448_), p_220445_, p_220447_, p_220448_)); } - public static boolean m_220455_(BlockPos p_220456_, ServerLevel p_220457_, MobCategory p_220458_, StructureManager p_220459_) { + public static boolean isInNetherFortressBounds(BlockPos p_220456_, ServerLevel p_220457_, MobCategory p_220458_, StructureManager p_220459_) { @@ -297,6 +_,13 @@ if (p_47052_ == SpawnPlacements.Type.NO_RESTRICTIONS) { return true; - } else if (p_47055_ != null && p_47053_.m_6857_().m_61937_(p_47054_)) { + } else if (p_47055_ != null && p_47053_.getWorldBorder().isWithinBounds(p_47054_)) { + return p_47052_.canSpawnAt(p_47053_, p_47054_, p_47055_); + } + return false; @@ -56,18 +56,18 @@ + + public static boolean canSpawnAtBody(SpawnPlacements.Type p_47052_, LevelReader p_47053_, BlockPos p_47054_, @Nullable EntityType p_47055_) { + { - BlockState blockstate = p_47053_.m_8055_(p_47054_); - FluidState fluidstate = p_47053_.m_6425_(p_47054_); - BlockPos blockpos = p_47054_.m_7494_(); + BlockState blockstate = p_47053_.getBlockState(p_47054_); + FluidState fluidstate = p_47053_.getFluidState(p_47054_); + BlockPos blockpos = p_47054_.above(); @@ -309,14 +_,12 @@ case ON_GROUND: default: - BlockState blockstate1 = p_47053_.m_8055_(blockpos1); -- if (!blockstate1.m_60643_(p_47053_, blockpos1, p_47055_)) { + BlockState blockstate1 = p_47053_.getBlockState(blockpos1); +- if (!blockstate1.isValidSpawn(p_47053_, blockpos1, p_47055_)) { + if (!blockstate1.isValidSpawn(p_47053_, blockpos1, p_47052_, p_47055_)) { return false; } else { - return m_47056_(p_47053_, p_47054_, blockstate, fluidstate, p_47055_) && m_47056_(p_47053_, blockpos, p_47053_.m_8055_(blockpos), p_47053_.m_6425_(blockpos), p_47055_); + return isValidEmptySpawnBlock(p_47053_, p_47054_, blockstate, fluidstate, p_47055_) && isValidEmptySpawnBlock(p_47053_, blockpos, p_47053_.getBlockState(blockpos), p_47053_.getFluidState(blockpos), p_47055_); } } - } else { @@ -76,11 +76,11 @@ } @@ -366,7 +_,7 @@ - entity.m_7678_(d0, (double)blockpos.m_123342_(), d1, p_220454_.m_188501_() * 360.0F, 0.0F); + entity.moveTo(d0, (double)blockpos.getY(), d1, p_220454_.nextFloat() * 360.0F, 0.0F); if (entity instanceof Mob) { Mob mob = (Mob)entity; -- if (mob.m_5545_(p_220451_, MobSpawnType.CHUNK_GENERATION) && mob.m_6914_(p_220451_)) { +- if (mob.checkSpawnRules(p_220451_, MobSpawnType.CHUNK_GENERATION) && mob.checkSpawnObstruction(p_220451_)) { + if (net.minecraftforge.event.ForgeEventFactory.checkSpawnPosition(mob, p_220451_, MobSpawnType.CHUNK_GENERATION)) { - spawngroupdata = mob.m_6518_(p_220451_, p_220451_.m_6436_(mob.m_20183_()), MobSpawnType.CHUNK_GENERATION, spawngroupdata, (CompoundTag)null); - p_220451_.m_47205_(mob); + spawngroupdata = mob.finalizeSpawn(p_220451_, p_220451_.getCurrentDifficultyAt(mob.blockPosition()), MobSpawnType.CHUNK_GENERATION, spawngroupdata, (CompoundTag)null); + p_220451_.addFreshEntityWithPassengers(mob); flag = true; diff --git a/patches/minecraft/net/minecraft/world/level/SignalGetter.java.patch b/patches/minecraft/net/minecraft/world/level/SignalGetter.java.patch index 1ef2223d92..c950cff113 100644 --- a/patches/minecraft/net/minecraft/world/level/SignalGetter.java.patch +++ b/patches/minecraft/net/minecraft/world/level/SignalGetter.java.patch @@ -1,11 +1,11 @@ --- a/net/minecraft/world/level/SignalGetter.java +++ b/net/minecraft/world/level/SignalGetter.java @@ -65,7 +_,7 @@ - default int m_277185_(BlockPos p_277961_, Direction p_277351_) { - BlockState blockstate = this.m_8055_(p_277961_); - int i = blockstate.m_60746_(this, p_277961_, p_277351_); -- return blockstate.m_60796_(this, p_277961_) ? Math.max(i, this.m_277173_(p_277961_)) : i; -+ return blockstate.shouldCheckWeakPower(this, p_277961_, p_277351_) ? Math.max(i, this.m_277173_(p_277961_)) : i; + default int getSignal(BlockPos p_277961_, Direction p_277351_) { + BlockState blockstate = this.getBlockState(p_277961_); + int i = blockstate.getSignal(this, p_277961_, p_277351_); +- return blockstate.isRedstoneConductor(this, p_277961_) ? Math.max(i, this.getDirectSignalTo(p_277961_)) : i; ++ return blockstate.shouldCheckWeakPower(this, p_277961_, p_277351_) ? Math.max(i, this.getDirectSignalTo(p_277961_)) : i; } - default boolean m_276867_(BlockPos p_277626_) { + default boolean hasNeighborSignal(BlockPos p_277626_) { diff --git a/patches/minecraft/net/minecraft/world/level/biome/Biome.java.patch b/patches/minecraft/net/minecraft/world/level/biome/Biome.java.patch index 80300c9389..a4cec93cb0 100644 --- a/patches/minecraft/net/minecraft/world/level/biome/Biome.java.patch +++ b/patches/minecraft/net/minecraft/world/level/biome/Biome.java.patch @@ -2,44 +2,44 @@ +++ b/net/minecraft/world/level/biome/Biome.java @@ -34,9 +_,9 @@ public final class Biome { - public static final Codec f_47429_ = RecordCodecBuilder.create((p_220544_) -> { - return p_220544_.group(Biome.ClimateSettings.f_47679_.forGetter((p_151717_) -> { -- return p_151717_.f_47437_; + public static final Codec DIRECT_CODEC = RecordCodecBuilder.create((p_220544_) -> { + return p_220544_.group(Biome.ClimateSettings.CODEC.forGetter((p_151717_) -> { +- return p_151717_.climateSettings; + return p_151717_.modifiableBiomeInfo().getOriginalBiomeInfo().climateSettings(); // FORGE: Patch codec to ignore field redirect coremods. - }), BiomeSpecialEffects.f_47926_.fieldOf("effects").forGetter((p_220550_) -> { -- return p_220550_.f_47443_; + }), BiomeSpecialEffects.CODEC.fieldOf("effects").forGetter((p_220550_) -> { +- return p_220550_.specialEffects; + return p_220550_.modifiableBiomeInfo().getOriginalBiomeInfo().effects(); // FORGE: Patch codec to ignore field redirect coremods. - }), BiomeGenerationSettings.f_47778_.forGetter((p_220548_) -> { - return p_220548_.f_47438_; - }), MobSpawnSettings.f_48327_.forGetter((p_220546_) -> { + }), BiomeGenerationSettings.CODEC.forGetter((p_220548_) -> { + return p_220548_.generationSettings; + }), MobSpawnSettings.CODEC.forGetter((p_220546_) -> { @@ -82,6 +_,7 @@ - this.f_47438_ = p_220532_; - this.f_47439_ = p_220533_; - this.f_47443_ = p_220531_; + this.generationSettings = p_220532_; + this.mobSettings = p_220533_; + this.specialEffects = p_220531_; + this.modifiableBiomeInfo = new net.minecraftforge.common.world.ModifiableBiomeInfo(new net.minecraftforge.common.world.ModifiableBiomeInfo.BiomeInfo(p_220530_, p_220531_, p_220532_, p_220533_)); // FORGE: cache original biome info on construction so we can bypass our field read coremods where necessary } - public int m_47463_() { + public int getSkyColor() { @@ -89,7 +_,7 @@ } - public MobSpawnSettings m_47518_() { -- return this.f_47439_; + public MobSpawnSettings getMobSettings() { +- return this.mobSettings; + return this.modifiableBiomeInfo().get().mobSpawnSettings(); } - public boolean m_264473_() { + public boolean hasPrecipitation() { @@ -188,7 +_,7 @@ } - public BiomeGenerationSettings m_47536_() { -- return this.f_47438_; + public BiomeGenerationSettings getGenerationSettings() { +- return this.generationSettings; + return this.modifiableBiomeInfo().get().generationSettings(); } - public int m_47539_() { + public int getFogColor() { @@ -373,4 +_,34 @@ - return this.f_47738_; + return this.name; } } + diff --git a/patches/minecraft/net/minecraft/world/level/biome/BiomeGenerationSettings.java.patch b/patches/minecraft/net/minecraft/world/level/biome/BiomeGenerationSettings.java.patch index d9fb33ec50..1099693966 100644 --- a/patches/minecraft/net/minecraft/world/level/biome/BiomeGenerationSettings.java.patch +++ b/patches/minecraft/net/minecraft/world/level/biome/BiomeGenerationSettings.java.patch @@ -3,24 +3,24 @@ @@ -39,6 +_,7 @@ })).apply(p_186655_, BiomeGenerationSettings::new); }); - private final Map>> f_47780_; + private final Map>> carvers; + private final java.util.Set carversView; - private final List> f_47781_; - private final Supplier>> f_47783_; - private final Supplier> f_186648_; + private final List> features; + private final Supplier>> flowerFeatures; + private final Supplier> featureSet; @@ -54,10 +_,15 @@ - this.f_186648_ = Suppliers.memoize(() -> { - return p_186651_.stream().flatMap(HolderSet::m_203614_).map(Holder::m_203334_).collect(Collectors.toSet()); + this.featureSet = Suppliers.memoize(() -> { + return p_186651_.stream().flatMap(HolderSet::stream).map(Holder::value).collect(Collectors.toSet()); }); -+ this.carversView = java.util.Collections.unmodifiableSet(f_47780_.keySet()); ++ this.carversView = java.util.Collections.unmodifiableSet(carvers.keySet()); } - public Iterable>> m_204187_(GenerationStep.Carving p_204188_) { - return Objects.requireNonNullElseGet(this.f_47780_.get(p_204188_), List::of); + public Iterable>> getCarvers(GenerationStep.Carving p_204188_) { + return Objects.requireNonNullElseGet(this.carvers.get(p_204188_), List::of); + } + + public java.util.Set getCarvingStages() { + return this.carversView; } - public List> m_47815_() { + public List> getFlowerFeatures() { diff --git a/patches/minecraft/net/minecraft/world/level/biome/BiomeSpecialEffects.java.patch b/patches/minecraft/net/minecraft/world/level/biome/BiomeSpecialEffects.java.patch index 8c8bc2f6cb..e5d542e82c 100644 --- a/patches/minecraft/net/minecraft/world/level/biome/BiomeSpecialEffects.java.patch +++ b/patches/minecraft/net/minecraft/world/level/biome/BiomeSpecialEffects.java.patch @@ -7,23 +7,23 @@ - public static enum GrassColorModifier implements StringRepresentable { + public static enum GrassColorModifier implements StringRepresentable, net.minecraftforge.common.IExtensibleEnum { NONE("none") { - public int m_6583_(double p_48081_, double p_48082_, int p_48083_) { + public int modifyColor(double p_48081_, double p_48082_, int p_48083_) { return p_48083_; @@ -220,14 +_,37 @@ }; - private final String f_48051_; -- public static final Codec f_48050_ = StringRepresentable.m_216439_(BiomeSpecialEffects.GrassColorModifier::values); -+ public static final Codec f_48050_ = net.minecraftforge.common.IExtensibleEnum.createCodecForExtensibleEnum(BiomeSpecialEffects.GrassColorModifier::values, BiomeSpecialEffects.GrassColorModifier::byName); -+ private static final java.util.Map BY_NAME = java.util.Arrays.stream(values()).collect(java.util.stream.Collectors.toMap(BiomeSpecialEffects.GrassColorModifier::m_48072_, grassColorModifier -> grassColorModifier)); + private final String name; +- public static final Codec CODEC = StringRepresentable.fromEnum(BiomeSpecialEffects.GrassColorModifier::values); ++ public static final Codec CODEC = net.minecraftforge.common.IExtensibleEnum.createCodecForExtensibleEnum(BiomeSpecialEffects.GrassColorModifier::values, BiomeSpecialEffects.GrassColorModifier::byName); ++ private static final java.util.Map BY_NAME = java.util.Arrays.stream(values()).collect(java.util.stream.Collectors.toMap(BiomeSpecialEffects.GrassColorModifier::getName, grassColorModifier -> grassColorModifier)); -- public abstract int m_6583_(double p_48065_, double p_48066_, int p_48067_); -+ public int m_6583_(double p_48065_, double p_48066_, int p_48067_) { +- public abstract int modifyColor(double p_48065_, double p_48066_, int p_48067_); ++ public int modifyColor(double p_48065_, double p_48066_, int p_48067_) { + return delegate.modifyGrassColor(p_48065_, p_48066_, p_48067_); + } GrassColorModifier(String p_48058_) { - this.f_48051_ = p_48058_; + this.name = p_48058_; } + private ColorModifier delegate; @@ -36,7 +36,7 @@ + } + @Override + public void init() { -+ BY_NAME.put(this.m_48072_(), this); ++ BY_NAME.put(this.getName(), this); + } + // Forge: Access enum members by name + public static BiomeSpecialEffects.GrassColorModifier byName(String name) { @@ -46,6 +46,6 @@ + public interface ColorModifier { + int modifyGrassColor(double x, double z, int color); + } - public String m_48072_() { - return this.f_48051_; + public String getName() { + return this.name; } diff --git a/patches/minecraft/net/minecraft/world/level/biome/MobSpawnSettings.java.patch b/patches/minecraft/net/minecraft/world/level/biome/MobSpawnSettings.java.patch index 92c49ecccd..d6b9ec3071 100644 --- a/patches/minecraft/net/minecraft/world/level/biome/MobSpawnSettings.java.patch +++ b/patches/minecraft/net/minecraft/world/level/biome/MobSpawnSettings.java.patch @@ -1,22 +1,22 @@ --- a/net/minecraft/world/level/biome/MobSpawnSettings.java +++ b/net/minecraft/world/level/biome/MobSpawnSettings.java @@ -40,20 +_,32 @@ - private final float f_48328_; - private final Map> f_48329_; - private final Map, MobSpawnSettings.MobSpawnCost> f_48330_; + private final float creatureGenerationProbability; + private final Map> spawners; + private final Map, MobSpawnSettings.MobSpawnCost> mobSpawnCosts; + private final java.util.Set typesView; + private final java.util.Set> costView; MobSpawnSettings(float p_196689_, Map> p_196690_, Map, MobSpawnSettings.MobSpawnCost> p_196691_) { - this.f_48328_ = p_196689_; - this.f_48329_ = ImmutableMap.copyOf(p_196690_); - this.f_48330_ = ImmutableMap.copyOf(p_196691_); -+ this.typesView = java.util.Collections.unmodifiableSet(this.f_48329_.keySet()); -+ this.costView = java.util.Collections.unmodifiableSet(this.f_48330_.keySet()); + this.creatureGenerationProbability = p_196689_; + this.spawners = ImmutableMap.copyOf(p_196690_); + this.mobSpawnCosts = ImmutableMap.copyOf(p_196691_); ++ this.typesView = java.util.Collections.unmodifiableSet(this.spawners.keySet()); ++ this.costView = java.util.Collections.unmodifiableSet(this.mobSpawnCosts.keySet()); } - public WeightedRandomList m_151798_(MobCategory p_151799_) { - return this.f_48329_.getOrDefault(p_151799_, f_151796_); + public WeightedRandomList getMobs(MobCategory p_151799_) { + return this.spawners.getOrDefault(p_151799_, EMPTY_MOB_LIST); } + public java.util.Set getSpawnerTypes() { @@ -24,12 +24,12 @@ + } + @Nullable - public MobSpawnSettings.MobSpawnCost m_48345_(EntityType p_48346_) { - return this.f_48330_.get(p_48346_); + public MobSpawnSettings.MobSpawnCost getMobSpawnCost(EntityType p_48346_) { + return this.mobSpawnCosts.get(p_48346_); + } + + public java.util.Set> getEntityTypes() { + return this.costView; } - public float m_48344_() { + public float getCreatureProbability() { diff --git a/patches/minecraft/net/minecraft/world/level/block/BambooSaplingBlock.java.patch b/patches/minecraft/net/minecraft/world/level/block/BambooSaplingBlock.java.patch index 146101e85b..9358bc5755 100644 --- a/patches/minecraft/net/minecraft/world/level/block/BambooSaplingBlock.java.patch +++ b/patches/minecraft/net/minecraft/world/level/block/BambooSaplingBlock.java.patch @@ -3,9 +3,9 @@ @@ -73,7 +_,7 @@ } - public float m_5880_(BlockState p_48981_, Player p_48982_, BlockGetter p_48983_, BlockPos p_48984_) { -- return p_48982_.m_21205_().m_41720_() instanceof SwordItem ? 1.0F : super.m_5880_(p_48981_, p_48982_, p_48983_, p_48984_); -+ return p_48982_.m_21205_().canPerformAction(net.minecraftforge.common.ToolActions.SWORD_DIG) ? 1.0F : super.m_5880_(p_48981_, p_48982_, p_48983_, p_48984_); + public float getDestroyProgress(BlockState p_48981_, Player p_48982_, BlockGetter p_48983_, BlockPos p_48984_) { +- return p_48982_.getMainHandItem().getItem() instanceof SwordItem ? 1.0F : super.getDestroyProgress(p_48981_, p_48982_, p_48983_, p_48984_); ++ return p_48982_.getMainHandItem().canPerformAction(net.minecraftforge.common.ToolActions.SWORD_DIG) ? 1.0F : super.getDestroyProgress(p_48981_, p_48982_, p_48983_, p_48984_); } - protected void m_48972_(Level p_48973_, BlockPos p_48974_) { + protected void growBamboo(Level p_48973_, BlockPos p_48974_) { diff --git a/patches/minecraft/net/minecraft/world/level/block/BambooStalkBlock.java.patch b/patches/minecraft/net/minecraft/world/level/block/BambooStalkBlock.java.patch index 8f0926db72..a2ecb9c353 100644 --- a/patches/minecraft/net/minecraft/world/level/block/BambooStalkBlock.java.patch +++ b/patches/minecraft/net/minecraft/world/level/block/BambooStalkBlock.java.patch @@ -6,19 +6,19 @@ -public class BambooStalkBlock extends Block implements BonemealableBlock { +public class BambooStalkBlock extends Block implements BonemealableBlock, net.minecraftforge.common.IPlantable { - protected static final float f_260434_ = 3.0F; - protected static final float f_260643_ = 5.0F; - protected static final float f_260619_ = 1.5F; + protected static final float SMALL_LEAVES_AABB_OFFSET = 3.0F; + protected static final float LARGE_LEAVES_AABB_OFFSET = 5.0F; + protected static final float COLLISION_AABB_OFFSET = 1.5F; @@ -110,10 +_,11 @@ - public void m_213898_(BlockState p_261931_, ServerLevel p_261751_, BlockPos p_261616_, RandomSource p_261766_) { - if (p_261931_.m_61143_(f_260694_) == 0) { -- if (p_261766_.m_188503_(3) == 0 && p_261751_.m_46859_(p_261616_.m_7494_()) && p_261751_.m_45524_(p_261616_.m_7494_(), 0) >= 9) { -+ if (p_261751_.m_46859_(p_261616_.m_7494_()) && p_261751_.m_45524_(p_261616_.m_7494_(), 0) >= 9) { - int i = this.m_261132_(p_261751_, p_261616_) + 1; + public void randomTick(BlockState p_261931_, ServerLevel p_261751_, BlockPos p_261616_, RandomSource p_261766_) { + if (p_261931_.getValue(STAGE) == 0) { +- if (p_261766_.nextInt(3) == 0 && p_261751_.isEmptyBlock(p_261616_.above()) && p_261751_.getRawBrightness(p_261616_.above(), 0) >= 9) { ++ if (p_261751_.isEmptyBlock(p_261616_.above()) && p_261751_.getRawBrightness(p_261616_.above(), 0) >= 9) { + int i = this.getHeightBelowUpToMax(p_261751_, p_261616_) + 1; - if (i < 16) { -+ if (i < 16 && net.minecraftforge.common.ForgeHooks.onCropsGrowPre(p_261751_, p_261616_, p_261931_, p_261766_.m_188503_(3) == 0)) { - this.m_261305_(p_261931_, p_261751_, p_261616_, p_261766_, i); ++ if (i < 16 && net.minecraftforge.common.ForgeHooks.onCropsGrowPre(p_261751_, p_261616_, p_261931_, p_261766_.nextInt(3) == 0)) { + this.growBamboo(p_261931_, p_261751_, p_261616_, p_261766_, i); + net.minecraftforge.common.ForgeHooks.onCropsGrowPost(p_261751_, p_261616_, p_261931_); } } @@ -26,12 +26,12 @@ @@ -167,7 +_,7 @@ } - public float m_5880_(BlockState p_261691_, Player p_262171_, BlockGetter p_261621_, BlockPos p_261500_) { -- return p_262171_.m_21205_().m_41720_() instanceof SwordItem ? 1.0F : super.m_5880_(p_261691_, p_262171_, p_261621_, p_261500_); -+ return p_262171_.m_21205_().canPerformAction(net.minecraftforge.common.ToolActions.SWORD_DIG) ? 1.0F : super.m_5880_(p_261691_, p_262171_, p_261621_, p_261500_); + public float getDestroyProgress(BlockState p_261691_, Player p_262171_, BlockGetter p_261621_, BlockPos p_261500_) { +- return p_262171_.getMainHandItem().getItem() instanceof SwordItem ? 1.0F : super.getDestroyProgress(p_261691_, p_262171_, p_261621_, p_261500_); ++ return p_262171_.getMainHandItem().canPerformAction(net.minecraftforge.common.ToolActions.SWORD_DIG) ? 1.0F : super.getDestroyProgress(p_261691_, p_262171_, p_261621_, p_261500_); } - protected void m_261305_(BlockState p_261855_, Level p_262076_, BlockPos p_262109_, RandomSource p_261633_, int p_261759_) { + protected void growBamboo(BlockState p_261855_, Level p_262076_, BlockPos p_262109_, RandomSource p_261633_, int p_261759_) { @@ -208,5 +_,12 @@ } @@ -40,8 +40,8 @@ + + @Override + public BlockState getPlant(BlockGetter world, BlockPos pos) { -+ BlockState state = world.m_8055_(pos); -+ if (state.m_60734_() != this) return m_49966_(); ++ BlockState state = world.getBlockState(pos); ++ if (state.getBlock() != this) return defaultBlockState(); + return state; } } diff --git a/patches/minecraft/net/minecraft/world/level/block/BaseFireBlock.java.patch b/patches/minecraft/net/minecraft/world/level/block/BaseFireBlock.java.patch index 084e2455e2..120fc06ff6 100644 --- a/patches/minecraft/net/minecraft/world/level/block/BaseFireBlock.java.patch +++ b/patches/minecraft/net/minecraft/world/level/block/BaseFireBlock.java.patch @@ -1,19 +1,19 @@ --- a/net/minecraft/world/level/block/BaseFireBlock.java +++ b/net/minecraft/world/level/block/BaseFireBlock.java @@ -124,6 +_,7 @@ - if (!p_49282_.m_60713_(p_49279_.m_60734_())) { - if (m_49248_(p_49280_)) { - Optional optional = PortalShape.m_77708_(p_49280_, p_49281_, Direction.Axis.X); + if (!p_49282_.is(p_49279_.getBlock())) { + if (inPortalDimension(p_49280_)) { + Optional optional = PortalShape.findEmptyPortalShape(p_49280_, p_49281_, Direction.Axis.X); + optional = net.minecraftforge.event.ForgeEventFactory.onTrySpawnPortal(p_49280_, p_49281_, optional); if (optional.isPresent()) { - optional.get().m_77743_(); + optional.get().createPortalBlocks(); return; @@ -169,7 +_,7 @@ boolean flag = false; for(Direction direction : Direction.values()) { -- if (p_49270_.m_8055_(blockpos$mutableblockpos.m_122190_(p_49271_).m_122173_(direction)).m_60713_(Blocks.f_50080_)) { -+ if (p_49270_.m_8055_(blockpos$mutableblockpos.m_122190_(p_49271_).m_122173_(direction)).isPortalFrame(p_49270_, blockpos$mutableblockpos)) { +- if (p_49270_.getBlockState(blockpos$mutableblockpos.set(p_49271_).move(direction)).is(Blocks.OBSIDIAN)) { ++ if (p_49270_.getBlockState(blockpos$mutableblockpos.set(p_49271_).move(direction)).isPortalFrame(p_49270_, blockpos$mutableblockpos)) { flag = true; break; } diff --git a/patches/minecraft/net/minecraft/world/level/block/BaseRailBlock.java.patch b/patches/minecraft/net/minecraft/world/level/block/BaseRailBlock.java.patch index 6a7b0f2abc..a98b42d7bf 100644 --- a/patches/minecraft/net/minecraft/world/level/block/BaseRailBlock.java.patch +++ b/patches/minecraft/net/minecraft/world/level/block/BaseRailBlock.java.patch @@ -6,37 +6,37 @@ -public abstract class BaseRailBlock extends Block implements SimpleWaterloggedBlock { +public abstract class BaseRailBlock extends Block implements SimpleWaterloggedBlock, net.minecraftforge.common.extensions.IForgeBaseRailBlock { - protected static final VoxelShape f_49355_ = Block.m_49796_(0.0D, 0.0D, 0.0D, 16.0D, 2.0D, 16.0D); - protected static final VoxelShape f_49356_ = Block.m_49796_(0.0D, 0.0D, 0.0D, 16.0D, 8.0D, 16.0D); - public static final BooleanProperty f_152149_ = BlockStateProperties.f_61362_; + protected static final VoxelShape FLAT_AABB = Block.box(0.0D, 0.0D, 0.0D, 16.0D, 2.0D, 16.0D); + protected static final VoxelShape HALF_BLOCK_AABB = Block.box(0.0D, 0.0D, 0.0D, 16.0D, 8.0D, 16.0D); + public static final BooleanProperty WATERLOGGED = BlockStateProperties.WATERLOGGED; @@ -44,6 +_,7 @@ - public VoxelShape m_5940_(BlockState p_49403_, BlockGetter p_49404_, BlockPos p_49405_, CollisionContext p_49406_) { - RailShape railshape = p_49403_.m_60713_(this) ? p_49403_.m_61143_(this.m_7978_()) : null; -+ RailShape railShape2 = p_49403_.m_60713_(this) ? getRailDirection(p_49403_, p_49404_, p_49405_, null) : null; - return railshape != null && railshape.m_61745_() ? f_49356_ : f_49355_; + public VoxelShape getShape(BlockState p_49403_, BlockGetter p_49404_, BlockPos p_49405_, CollisionContext p_49406_) { + RailShape railshape = p_49403_.is(this) ? p_49403_.getValue(this.getShapeProperty()) : null; ++ RailShape railShape2 = p_49403_.is(this) ? getRailDirection(p_49403_, p_49404_, p_49405_, null) : null; + return railshape != null && railshape.isAscending() ? HALF_BLOCK_AABB : FLAT_AABB; } @@ -68,7 +_,7 @@ - public void m_6861_(BlockState p_49377_, Level p_49378_, BlockPos p_49379_, Block p_49380_, BlockPos p_49381_, boolean p_49382_) { - if (!p_49378_.f_46443_ && p_49378_.m_8055_(p_49379_).m_60713_(this)) { -- RailShape railshape = p_49377_.m_61143_(this.m_7978_()); + public void neighborChanged(BlockState p_49377_, Level p_49378_, BlockPos p_49379_, Block p_49380_, BlockPos p_49381_, boolean p_49382_) { + if (!p_49378_.isClientSide && p_49378_.getBlockState(p_49379_).is(this)) { +- RailShape railshape = p_49377_.getValue(this.getShapeProperty()); + RailShape railshape = getRailDirection(p_49377_, p_49378_, p_49379_, null); - if (m_49398_(p_49379_, p_49378_, railshape)) { - m_49950_(p_49377_, p_49378_, p_49379_); - p_49378_.m_7471_(p_49379_, p_49382_); + if (shouldBeRemoved(p_49379_, p_49378_, railshape)) { + dropResources(p_49377_, p_49378_, p_49379_); + p_49378_.removeBlock(p_49379_, p_49382_); @@ -113,7 +_,7 @@ - public void m_6810_(BlockState p_49384_, Level p_49385_, BlockPos p_49386_, BlockState p_49387_, boolean p_49388_) { + public void onRemove(BlockState p_49384_, Level p_49385_, BlockPos p_49386_, BlockState p_49387_, boolean p_49388_) { if (!p_49388_) { - super.m_6810_(p_49384_, p_49385_, p_49386_, p_49387_, p_49388_); -- if (p_49384_.m_61143_(this.m_7978_()).m_61745_()) { -+ if (getRailDirection(p_49384_, p_49385_, p_49386_, null).m_61745_()) { - p_49385_.m_46672_(p_49386_.m_7494_(), this); + super.onRemove(p_49384_, p_49385_, p_49386_, p_49387_, p_49388_); +- if (p_49384_.getValue(this.getShapeProperty()).isAscending()) { ++ if (getRailDirection(p_49384_, p_49385_, p_49386_, null).isAscending()) { + p_49385_.updateNeighborsAt(p_49386_.above(), this); } @@ -134,6 +_,11 @@ - return blockstate.m_61124_(this.m_7978_(), flag1 ? RailShape.EAST_WEST : RailShape.NORTH_SOUTH).m_61124_(f_152149_, Boolean.valueOf(flag)); + return blockstate.setValue(this.getShapeProperty(), flag1 ? RailShape.EAST_WEST : RailShape.NORTH_SOUTH).setValue(WATERLOGGED, Boolean.valueOf(flag)); } + /** @@ -44,22 +44,22 @@ + * If you do change this property be aware that other functions in this/subclasses may break as they can make assumptions about this property + */ + @Deprecated - public abstract Property m_7978_(); + public abstract Property getShapeProperty(); - public BlockState m_7417_(BlockState p_152151_, Direction p_152152_, BlockState p_152153_, LevelAccessor p_152154_, BlockPos p_152155_, BlockPos p_152156_) { + public BlockState updateShape(BlockState p_152151_, Direction p_152152_, BlockState p_152153_, LevelAccessor p_152154_, BlockPos p_152155_, BlockPos p_152156_) { @@ -146,5 +_,15 @@ - public FluidState m_5888_(BlockState p_152158_) { - return p_152158_.m_61143_(f_152149_) ? Fluids.f_76193_.m_76068_(false) : super.m_5888_(p_152158_); + public FluidState getFluidState(BlockState p_152158_) { + return p_152158_.getValue(WATERLOGGED) ? Fluids.WATER.getSource(false) : super.getFluidState(p_152158_); + } + + @Override + public boolean isFlexibleRail(BlockState state, BlockGetter world, BlockPos pos) { -+ return !this.f_49357_; ++ return !this.isStraight; + } + + @Override + public RailShape getRailDirection(BlockState state, BlockGetter world, BlockPos pos, @org.jetbrains.annotations.Nullable net.minecraft.world.entity.vehicle.AbstractMinecart cart) { -+ return state.m_61143_(m_7978_()); ++ return state.getValue(getShapeProperty()); } } diff --git a/patches/minecraft/net/minecraft/world/level/block/BeehiveBlock.java.patch b/patches/minecraft/net/minecraft/world/level/block/BeehiveBlock.java.patch index 7955fcd448..13e9a9cfc2 100644 --- a/patches/minecraft/net/minecraft/world/level/block/BeehiveBlock.java.patch +++ b/patches/minecraft/net/minecraft/world/level/block/BeehiveBlock.java.patch @@ -1,19 +1,19 @@ --- a/net/minecraft/world/level/block/BeehiveBlock.java +++ b/net/minecraft/world/level/block/BeehiveBlock.java @@ -70,6 +_,9 @@ - public int m_6782_(BlockState p_49620_, Level p_49621_, BlockPos p_49622_) { - return p_49620_.m_61143_(f_49564_); + public int getAnalogOutputSignal(BlockState p_49620_, Level p_49621_, BlockPos p_49622_) { + return p_49620_.getValue(HONEY_LEVEL); } + // Forge: Fixed MC-227255 Beehives and bee nests do not rotate/mirror correctly in structure blocks -+ @Override public BlockState m_6843_(BlockState blockState, net.minecraft.world.level.block.Rotation rotation) { return blockState.m_61124_(f_49563_, rotation.m_55954_(blockState.m_61143_(f_49563_))); } -+ @Override public BlockState m_6943_(BlockState blockState, net.minecraft.world.level.block.Mirror mirror) { return blockState.m_60717_(mirror.m_54846_(blockState.m_61143_(f_49563_))); } ++ @Override public BlockState rotate(BlockState blockState, net.minecraft.world.level.block.Rotation rotation) { return blockState.setValue(FACING, rotation.rotate(blockState.getValue(FACING))); } ++ @Override public BlockState mirror(BlockState blockState, net.minecraft.world.level.block.Mirror mirror) { return blockState.rotate(mirror.getRotation(blockState.getValue(FACING))); } - public void m_6240_(Level p_49584_, Player p_49585_, BlockPos p_49586_, BlockState p_49587_, @Nullable BlockEntity p_49588_, ItemStack p_49589_) { - super.m_6240_(p_49584_, p_49585_, p_49586_, p_49587_, p_49588_, p_49589_); + public void playerDestroy(Level p_49584_, Player p_49585_, BlockPos p_49586_, BlockState p_49587_, @Nullable BlockEntity p_49588_, ItemStack p_49589_) { + super.playerDestroy(p_49584_, p_49585_, p_49586_, p_49587_, p_49588_, p_49589_); @@ -89,6 +_,7 @@ - List list = p_49650_.m_45976_(Bee.class, (new AABB(p_49651_)).m_82377_(8.0D, 6.0D, 8.0D)); + List list = p_49650_.getEntitiesOfClass(Bee.class, (new AABB(p_49651_)).inflate(8.0D, 6.0D, 8.0D)); if (!list.isEmpty()) { - List list1 = p_49650_.m_45976_(Player.class, (new AABB(p_49651_)).m_82377_(8.0D, 6.0D, 8.0D)); + List list1 = p_49650_.getEntitiesOfClass(Player.class, (new AABB(p_49651_)).inflate(8.0D, 6.0D, 8.0D)); + if (list1.isEmpty()) return; //Forge: Prevent Error when no players are around. int i = list1.size(); @@ -21,9 +21,9 @@ @@ -110,7 +_,7 @@ boolean flag = false; if (i >= 5) { - Item item = itemstack.m_41720_(); -- if (itemstack.m_150930_(Items.f_42574_)) { + Item item = itemstack.getItem(); +- if (itemstack.is(Items.SHEARS)) { + if (itemstack.canPerformAction(net.minecraftforge.common.ToolActions.SHEARS_HARVEST)) { - p_49625_.m_6263_(p_49627_, p_49627_.m_20185_(), p_49627_.m_20186_(), p_49627_.m_20189_(), SoundEvents.f_11697_, SoundSource.BLOCKS, 1.0F, 1.0F); - m_49600_(p_49625_, p_49626_); - itemstack.m_41622_(1, p_49627_, (p_49571_) -> { + p_49625_.playSound(p_49627_, p_49627_.getX(), p_49627_.getY(), p_49627_.getZ(), SoundEvents.BEEHIVE_SHEAR, SoundSource.BLOCKS, 1.0F, 1.0F); + dropHoneycomb(p_49625_, p_49626_); + itemstack.hurtAndBreak(1, p_49627_, (p_49571_) -> { diff --git a/patches/minecraft/net/minecraft/world/level/block/Block.java.patch b/patches/minecraft/net/minecraft/world/level/block/Block.java.patch index a26ec916e1..df4d2eeecd 100644 --- a/patches/minecraft/net/minecraft/world/level/block/Block.java.patch +++ b/patches/minecraft/net/minecraft/world/level/block/Block.java.patch @@ -6,121 +6,121 @@ -public class Block extends BlockBehaviour implements ItemLike { +public class Block extends BlockBehaviour implements ItemLike, net.minecraftforge.common.extensions.IForgeBlock { - private static final Logger f_49790_ = LogUtils.getLogger(); - private final Holder.Reference f_204296_ = BuiltInRegistries.f_256975_.m_203693_(this); -- public static final IdMapper f_49791_ = new IdMapper<>(); + private static final Logger LOGGER = LogUtils.getLogger(); + private final Holder.Reference builtInRegistryHolder = BuiltInRegistries.BLOCK.createIntrusiveHolder(this); +- public static final IdMapper BLOCK_STATE_REGISTRY = new IdMapper<>(); + @Deprecated //Forge: Do not use, use GameRegistry -+ public static final IdMapper f_49791_ = net.minecraftforge.registries.GameData.getBlockStateIDMap(); - private static final LoadingCache f_49785_ = CacheBuilder.newBuilder().maximumSize(512L).weakKeys().build(new CacheLoader() { ++ public static final IdMapper BLOCK_STATE_REGISTRY = net.minecraftforge.registries.GameData.getBlockStateIDMap(); + private static final LoadingCache SHAPE_FULL_BLOCK_CACHE = CacheBuilder.newBuilder().maximumSize(512L).weakKeys().build(new CacheLoader() { public Boolean load(VoxelShape p_49972_) { - return !Shapes.m_83157_(Shapes.m_83144_(), p_49972_, BooleanOp.f_82687_); + return !Shapes.joinIsNotEmpty(Shapes.block(), p_49972_, BooleanOp.NOT_SAME); @@ -176,7 +_,7 @@ - f_49790_.error("Block classes should end with Block and {} doesn't.", (Object)s); + LOGGER.error("Block classes should end with Block and {} doesn't.", (Object)s); } } - + initClient(); } - public static boolean m_152463_(BlockState p_152464_) { + public static boolean isExceptionForConnection(BlockState p_152464_) { @@ -191,6 +_,8 @@ - BlockState blockstate = p_152446_.m_8055_(p_152449_); - if (p_152445_.m_60719_(blockstate, p_152448_)) { + BlockState blockstate = p_152446_.getBlockState(p_152449_); + if (p_152445_.skipRendering(blockstate, p_152448_)) { return false; -+ } else if (p_152445_.supportsExternalFaceHiding() && blockstate.hidesNeighborFace(p_152446_, p_152449_, p_152445_, p_152448_.m_122424_())) { ++ } else if (p_152445_.supportsExternalFaceHiding() && blockstate.hidesNeighborFace(p_152446_, p_152449_, p_152445_, p_152448_.getOpposite())) { + return false; - } else if (blockstate.m_60815_()) { + } else if (blockstate.canOcclude()) { Block.BlockStatePairKey block$blockstatepairkey = new Block.BlockStatePairKey(p_152445_, blockstate, p_152448_); - Object2ByteLinkedOpenHashMap object2bytelinkedopenhashmap = f_49789_.get(); + Object2ByteLinkedOpenHashMap object2bytelinkedopenhashmap = OCCLUSION_CACHE.get(); @@ -276,11 +_,14 @@ } - public static void m_49881_(BlockState p_49882_, Level p_49883_, BlockPos p_49884_, @Nullable BlockEntity p_49885_, @Nullable Entity p_49886_, ItemStack p_49887_) { + public static void dropResources(BlockState p_49882_, Level p_49883_, BlockPos p_49884_, @Nullable BlockEntity p_49885_, @Nullable Entity p_49886_, ItemStack p_49887_) { + dropResources(p_49882_, p_49883_, p_49884_, p_49885_, p_49886_, p_49887_, true); + } + public static void dropResources(BlockState p_49882_, Level p_49883_, BlockPos p_49884_, @Nullable BlockEntity p_49885_, @Nullable Entity p_49886_, ItemStack p_49887_, boolean dropXp) { if (p_49883_ instanceof ServerLevel) { - m_49874_(p_49882_, (ServerLevel)p_49883_, p_49884_, p_49885_, p_49886_, p_49887_).forEach((p_49944_) -> { - m_49840_(p_49883_, p_49884_, p_49944_); + getDrops(p_49882_, (ServerLevel)p_49883_, p_49884_, p_49885_, p_49886_, p_49887_).forEach((p_49944_) -> { + popResource(p_49883_, p_49884_, p_49944_); }); -- p_49882_.m_222967_((ServerLevel)p_49883_, p_49884_, p_49887_, true); -+ p_49882_.m_222967_((ServerLevel)p_49883_, p_49884_, p_49887_, dropXp); +- p_49882_.spawnAfterBreak((ServerLevel)p_49883_, p_49884_, p_49887_, true); ++ p_49882_.spawnAfterBreak((ServerLevel)p_49883_, p_49884_, p_49887_, dropXp); } } @@ -313,7 +_,7 @@ } - private static void m_152440_(Level p_152441_, Supplier p_152442_, ItemStack p_152443_) { -- if (!p_152441_.f_46443_ && !p_152443_.m_41619_() && p_152441_.m_46469_().m_46207_(GameRules.f_46136_)) { -+ if (!p_152441_.f_46443_ && !p_152443_.m_41619_() && p_152441_.m_46469_().m_46207_(GameRules.f_46136_) && !p_152441_.restoringBlockSnapshots) { + private static void popResource(Level p_152441_, Supplier p_152442_, ItemStack p_152443_) { +- if (!p_152441_.isClientSide && !p_152443_.isEmpty() && p_152441_.getGameRules().getBoolean(GameRules.RULE_DOBLOCKDROPS)) { ++ if (!p_152441_.isClientSide && !p_152443_.isEmpty() && p_152441_.getGameRules().getBoolean(GameRules.RULE_DOBLOCKDROPS) && !p_152441_.restoringBlockSnapshots) { ItemEntity itementity = p_152442_.get(); - itementity.m_32060_(); - p_152441_.m_7967_(itementity); + itementity.setDefaultPickUpDelay(); + p_152441_.addFreshEntity(itementity); @@ -321,12 +_,13 @@ } - public void m_49805_(ServerLevel p_49806_, BlockPos p_49807_, int p_49808_) { -- if (p_49806_.m_46469_().m_46207_(GameRules.f_46136_)) { -+ if (p_49806_.m_46469_().m_46207_(GameRules.f_46136_) && !p_49806_.restoringBlockSnapshots) { - ExperienceOrb.m_147082_(p_49806_, Vec3.m_82512_(p_49807_), p_49808_); + public void popExperience(ServerLevel p_49806_, BlockPos p_49807_, int p_49808_) { +- if (p_49806_.getGameRules().getBoolean(GameRules.RULE_DOBLOCKDROPS)) { ++ if (p_49806_.getGameRules().getBoolean(GameRules.RULE_DOBLOCKDROPS) && !p_49806_.restoringBlockSnapshots) { + ExperienceOrb.award(p_49806_, Vec3.atCenterOf(p_49807_), p_49808_); } } + @Deprecated //Forge: Use more sensitive version - public float m_7325_() { - return this.f_60444_; + public float getExplosionResistance() { + return this.explosionResistance; } @@ -345,7 +_,8 @@ - public void m_6240_(Level p_49827_, Player p_49828_, BlockPos p_49829_, BlockState p_49830_, @Nullable BlockEntity p_49831_, ItemStack p_49832_) { - p_49828_.m_36246_(Stats.f_12949_.m_12902_(this)); - p_49828_.m_36399_(0.005F); -- m_49881_(p_49830_, p_49827_, p_49829_, p_49831_, p_49828_, p_49832_); + public void playerDestroy(Level p_49827_, Player p_49828_, BlockPos p_49829_, BlockState p_49830_, @Nullable BlockEntity p_49831_, ItemStack p_49832_) { + p_49828_.awardStat(Stats.BLOCK_MINED.get(this)); + p_49828_.causeFoodExhaustion(0.005F); +- dropResources(p_49830_, p_49827_, p_49829_, p_49831_, p_49828_, p_49832_); + //Forge: Don't drop xp as part of the resources as it is handled by the patches in ServerPlayerGameMode#destroyBlock + dropResources(p_49830_, p_49827_, p_49829_, p_49831_, p_49828_, p_49832_, false); } - public void m_6402_(Level p_49847_, BlockPos p_49848_, BlockState p_49849_, @Nullable LivingEntity p_49850_, ItemStack p_49851_) { + public void setPlacedBy(Level p_49847_, BlockPos p_49848_, BlockState p_49849_, @Nullable LivingEntity p_49850_, ItemStack p_49851_) { @@ -373,8 +_,10 @@ - public void m_5548_(BlockGetter p_49821_, Entity p_49822_) { - p_49822_.m_20256_(p_49822_.m_20184_().m_82542_(1.0D, 0.0D, 1.0D)); -+ p_49822_.m_20256_(p_49822_.m_20184_().m_82542_(1.0D, 0.0D, 1.0D)); + public void updateEntityAfterFallOn(BlockGetter p_49821_, Entity p_49822_) { + p_49822_.setDeltaMovement(p_49822_.getDeltaMovement().multiply(1.0D, 0.0D, 1.0D)); ++ p_49822_.setDeltaMovement(p_49822_.getDeltaMovement().multiply(1.0D, 0.0D, 1.0D)); } + @Deprecated //Forge: Use more sensitive version - public ItemStack m_7397_(BlockGetter p_49823_, BlockPos p_49824_, BlockState p_49825_) { + public ItemStack getCloneItemStack(BlockGetter p_49823_, BlockPos p_49824_, BlockState p_49825_) { return new ItemStack(this); } @@ -407,6 +_,7 @@ - public void m_141997_(BlockState p_152450_, Level p_152451_, BlockPos p_152452_, Biome.Precipitation p_152453_) { + public void handlePrecipitation(BlockState p_152450_, Level p_152451_, BlockPos p_152452_, Biome.Precipitation p_152453_) { } + @Deprecated //Forge: Use more sensitive version - public boolean m_6903_(Explosion p_49826_) { + public boolean dropFromExplosion(Explosion p_49826_) { return true; } @@ -442,6 +_,7 @@ - return p_152456_.m_61124_(p_152457_, p_152455_.m_61143_(p_152457_)); + return p_152456_.setValue(p_152457_, p_152455_.getValue(p_152457_)); } + @Deprecated //Forge: Use more sensitive version {@link IForgeBlockState#getSoundType(IWorldReader, BlockPos, Entity) } - public SoundType m_49962_(BlockState p_49963_) { - return this.f_60446_; + public SoundType getSoundType(BlockState p_49963_) { + return this.soundType; } @@ -451,7 +_,7 @@ - this.f_49788_ = Item.m_41439_(this); + this.item = Item.byBlock(this); } -- return this.f_49788_; -+ return net.minecraftforge.registries.ForgeRegistries.ITEMS.getDelegateOrThrow(this.f_49788_).get(); // Forge: Vanilla caches the items, update with registry replacements. +- return this.item; ++ return net.minecraftforge.registries.ForgeRegistries.ITEMS.getDelegateOrThrow(this.item).get(); // Forge: Vanilla caches the items, update with registry replacements. } - public boolean m_49967_() { + public boolean hasDynamicShape() { @@ -472,6 +_,74 @@ - protected ImmutableMap m_152458_(Function p_152459_) { - return this.f_49792_.m_61056_().stream().collect(ImmutableMap.toImmutableMap(Function.identity(), p_152459_)); + protected ImmutableMap getShapeForEachState(Function p_152459_) { + return this.stateDefinition.getPossibleStates().stream().collect(ImmutableMap.toImmutableMap(Function.identity(), p_152459_)); } + + /* ======================================== FORGE START =====================================*/ @@ -150,37 +150,37 @@ + + @Override + public boolean canSustainPlant(BlockState state, BlockGetter world, BlockPos pos, Direction facing, net.minecraftforge.common.IPlantable plantable) { -+ BlockState plant = plantable.getPlant(world, pos.m_121945_(facing)); -+ net.minecraftforge.common.PlantType type = plantable.getPlantType(world, pos.m_121945_(facing)); ++ BlockState plant = plantable.getPlant(world, pos.relative(facing)); ++ net.minecraftforge.common.PlantType type = plantable.getPlantType(world, pos.relative(facing)); + -+ if (plant.m_60734_() == Blocks.f_50128_) -+ return state.m_60713_(Blocks.f_50128_) || state.m_204336_(BlockTags.f_13029_); ++ if (plant.getBlock() == Blocks.CACTUS) ++ return state.is(Blocks.CACTUS) || state.is(BlockTags.SAND); + -+ if (plant.m_60734_() == Blocks.f_50130_ && this == Blocks.f_50130_) ++ if (plant.getBlock() == Blocks.SUGAR_CANE && this == Blocks.SUGAR_CANE) + return true; + -+ if (plantable instanceof BushBlock && ((BushBlock)plantable).m_6266_(state, world, pos)) ++ if (plantable instanceof BushBlock && ((BushBlock)plantable).mayPlaceOn(state, world, pos)) + return true; + + if (net.minecraftforge.common.PlantType.DESERT.equals(type)) { -+ return state.m_204336_(BlockTags.f_13029_) || this == Blocks.f_50352_ || this instanceof GlazedTerracottaBlock; ++ return state.is(BlockTags.SAND) || this == Blocks.TERRACOTTA || this instanceof GlazedTerracottaBlock; + } else if (net.minecraftforge.common.PlantType.NETHER.equals(type)) { -+ return this == Blocks.f_50135_; ++ return this == Blocks.SOUL_SAND; + } else if (net.minecraftforge.common.PlantType.CROP.equals(type)) { -+ return state.m_60713_(Blocks.f_50093_); ++ return state.is(Blocks.FARMLAND); + } else if (net.minecraftforge.common.PlantType.CAVE.equals(type)) { -+ return state.m_60783_(world, pos, Direction.UP); ++ return state.isFaceSturdy(world, pos, Direction.UP); + } else if (net.minecraftforge.common.PlantType.PLAINS.equals(type)) { -+ return state.m_204336_(BlockTags.f_144274_) || this == Blocks.f_50093_; ++ return state.is(BlockTags.DIRT) || this == Blocks.FARMLAND; + } else if (net.minecraftforge.common.PlantType.WATER.equals(type)) { -+ return (state.m_60713_(Blocks.f_49990_) || state.m_60734_() instanceof IceBlock) && world.m_6425_(pos.m_121945_(facing)).m_76178_(); ++ return (state.is(Blocks.WATER) || state.getBlock() instanceof IceBlock) && world.getFluidState(pos.relative(facing)).isEmpty(); + } else if (net.minecraftforge.common.PlantType.BEACH.equals(type)) { -+ boolean isBeach = state.m_204336_(BlockTags.f_144274_) || state.m_204336_(BlockTags.f_13029_); ++ boolean isBeach = state.is(BlockTags.DIRT) || state.is(BlockTags.SAND); + boolean hasWater = false; + for (Direction face : Direction.Plane.HORIZONTAL) { -+ BlockState adjacentBlockState = world.m_8055_(pos.m_121945_(face)); -+ var adjacentFluidState = world.m_6425_(pos.m_121945_(face)); -+ hasWater = hasWater || adjacentBlockState.m_60713_(Blocks.f_50449_) || adjacentFluidState.m_205070_(net.minecraft.tags.FluidTags.f_13131_); ++ BlockState adjacentBlockState = world.getBlockState(pos.relative(face)); ++ var adjacentFluidState = world.getFluidState(pos.relative(face)); ++ hasWater = hasWater || adjacentBlockState.is(Blocks.FROSTED_ICE) || adjacentFluidState.is(net.minecraft.tags.FluidTags.WATER); + if (hasWater) + break; //No point continuing. + } diff --git a/patches/minecraft/net/minecraft/world/level/block/Blocks.java.patch b/patches/minecraft/net/minecraft/world/level/block/Blocks.java.patch index 3714271a42..b07e35dd25 100644 --- a/patches/minecraft/net/minecraft/world/level/block/Blocks.java.patch +++ b/patches/minecraft/net/minecraft/world/level/block/Blocks.java.patch @@ -1,28 +1,28 @@ --- a/net/minecraft/world/level/block/Blocks.java +++ b/net/minecraft/world/level/block/Blocks.java @@ -164,7 +_,7 @@ - public static final Block f_50027_ = m_50795_("green_bed", m_50764_(DyeColor.GREEN)); - public static final Block f_50028_ = m_50795_("red_bed", m_50764_(DyeColor.RED)); - public static final Block f_50029_ = m_50795_("black_bed", m_50764_(DyeColor.BLACK)); -- public static final Block f_50030_ = m_50795_("powered_rail", new PoweredRailBlock(BlockBehaviour.Properties.m_284310_().m_60910_().m_60978_(0.7F).m_60918_(SoundType.f_56743_))); -+ public static final Block f_50030_ = m_50795_("powered_rail", new PoweredRailBlock(BlockBehaviour.Properties.m_284310_().m_60910_().m_60978_(0.7F).m_60918_(SoundType.f_56743_), true)); - public static final Block f_50031_ = m_50795_("detector_rail", new DetectorRailBlock(BlockBehaviour.Properties.m_284310_().m_60910_().m_60978_(0.7F).m_60918_(SoundType.f_56743_))); - public static final Block f_50032_ = m_50795_("sticky_piston", m_50798_(true)); - public static final Block f_50033_ = m_50795_("cobweb", new WebBlock(BlockBehaviour.Properties.m_284310_().m_284180_(MapColor.f_283930_).m_280606_().m_60910_().m_60999_().m_60978_(4.0F).m_278166_(PushReaction.DESTROY))); + public static final Block GREEN_BED = register("green_bed", bed(DyeColor.GREEN)); + public static final Block RED_BED = register("red_bed", bed(DyeColor.RED)); + public static final Block BLACK_BED = register("black_bed", bed(DyeColor.BLACK)); +- public static final Block POWERED_RAIL = register("powered_rail", new PoweredRailBlock(BlockBehaviour.Properties.of().noCollission().strength(0.7F).sound(SoundType.METAL))); ++ public static final Block POWERED_RAIL = register("powered_rail", new PoweredRailBlock(BlockBehaviour.Properties.of().noCollission().strength(0.7F).sound(SoundType.METAL), true)); + public static final Block DETECTOR_RAIL = register("detector_rail", new DetectorRailBlock(BlockBehaviour.Properties.of().noCollission().strength(0.7F).sound(SoundType.METAL))); + public static final Block STICKY_PISTON = register("sticky_piston", pistonBase(true)); + public static final Block COBWEB = register("cobweb", new WebBlock(BlockBehaviour.Properties.of().mapColor(MapColor.WOOL).forceSolidOn().noCollission().requiresCorrectToolForDrops().strength(4.0F).pushReaction(PushReaction.DESTROY))); @@ -1258,17 +_,5 @@ - public static void m_50758_() { - Block.f_49791_.forEach(BlockBehaviour.BlockStateBase::m_60611_); + public static void rebuildCache() { + Block.BLOCK_STATE_REGISTRY.forEach(BlockBehaviour.BlockStateBase::initCache); - } - - static { -- for(Block block : BuiltInRegistries.f_256975_) { -- for(BlockState blockstate : block.m_49965_().m_61056_()) { -- Block.f_49791_.m_122667_(blockstate); -- blockstate.m_60611_(); +- for(Block block : BuiltInRegistries.BLOCK) { +- for(BlockState blockstate : block.getStateDefinition().getPossibleStates()) { +- Block.BLOCK_STATE_REGISTRY.add(blockstate); +- blockstate.initCache(); - } - -- block.m_60589_(); +- block.getLootTable(); - } - } diff --git a/patches/minecraft/net/minecraft/world/level/block/BucketPickup.java.patch b/patches/minecraft/net/minecraft/world/level/block/BucketPickup.java.patch index 8bbc561f2f..268070ecb8 100644 --- a/patches/minecraft/net/minecraft/world/level/block/BucketPickup.java.patch +++ b/patches/minecraft/net/minecraft/world/level/block/BucketPickup.java.patch @@ -6,8 +6,8 @@ -public interface BucketPickup { +public interface BucketPickup extends net.minecraftforge.common.extensions.IForgeBucketPickup { - ItemStack m_142598_(@Nullable Player p_298551_, LevelAccessor p_152719_, BlockPos p_152720_, BlockState p_152721_); + ItemStack pickupBlock(@Nullable Player p_298551_, LevelAccessor p_152719_, BlockPos p_152720_, BlockState p_152721_); + @Deprecated//Forge: Use state sensitive variant instead - Optional m_142298_(); + Optional getPickupSound(); } diff --git a/patches/minecraft/net/minecraft/world/level/block/BushBlock.java.patch b/patches/minecraft/net/minecraft/world/level/block/BushBlock.java.patch index 4d53af1547..2b6774234c 100644 --- a/patches/minecraft/net/minecraft/world/level/block/BushBlock.java.patch +++ b/patches/minecraft/net/minecraft/world/level/block/BushBlock.java.patch @@ -11,23 +11,23 @@ } @@ -25,6 +_,8 @@ - public boolean m_7898_(BlockState p_51028_, LevelReader p_51029_, BlockPos p_51030_) { - BlockPos blockpos = p_51030_.m_7495_(); -+ if (p_51028_.m_60734_() == this) //Forge: This function is called during world gen and placement, before this block is set, so if we are not 'here' then assume it's the pre-check. -+ return p_51029_.m_8055_(blockpos).canSustainPlant(p_51029_, blockpos, Direction.UP, this); - return this.m_6266_(p_51029_.m_8055_(blockpos), p_51029_, blockpos); + public boolean canSurvive(BlockState p_51028_, LevelReader p_51029_, BlockPos p_51030_) { + BlockPos blockpos = p_51030_.below(); ++ if (p_51028_.getBlock() == this) //Forge: This function is called during world gen and placement, before this block is set, so if we are not 'here' then assume it's the pre-check. ++ return p_51029_.getBlockState(blockpos).canSustainPlant(p_51029_, blockpos, Direction.UP, this); + return this.mayPlaceOn(p_51029_.getBlockState(blockpos), p_51029_, blockpos); } @@ -34,5 +_,12 @@ - public boolean m_7357_(BlockState p_51023_, BlockGetter p_51024_, BlockPos p_51025_, PathComputationType p_51026_) { - return p_51026_ == PathComputationType.AIR && !this.f_60443_ ? true : super.m_7357_(p_51023_, p_51024_, p_51025_, p_51026_); + public boolean isPathfindable(BlockState p_51023_, BlockGetter p_51024_, BlockPos p_51025_, PathComputationType p_51026_) { + return p_51026_ == PathComputationType.AIR && !this.hasCollision ? true : super.isPathfindable(p_51023_, p_51024_, p_51025_, p_51026_); + } + + @Override + public BlockState getPlant(BlockGetter world, BlockPos pos) { -+ BlockState state = world.m_8055_(pos); -+ if (state.m_60734_() != this) return m_49966_(); ++ BlockState state = world.getBlockState(pos); ++ if (state.getBlock() != this) return defaultBlockState(); + return state; } } diff --git a/patches/minecraft/net/minecraft/world/level/block/CactusBlock.java.patch b/patches/minecraft/net/minecraft/world/level/block/CactusBlock.java.patch index b88b97d2ce..f8f5c3cbb2 100644 --- a/patches/minecraft/net/minecraft/world/level/block/CactusBlock.java.patch +++ b/patches/minecraft/net/minecraft/world/level/block/CactusBlock.java.patch @@ -6,33 +6,33 @@ -public class CactusBlock extends Block { +public class CactusBlock extends Block implements net.minecraftforge.common.IPlantable { - public static final IntegerProperty f_51131_ = BlockStateProperties.f_61410_; - public static final int f_152740_ = 15; - protected static final int f_152741_ = 1; + public static final IntegerProperty AGE = BlockStateProperties.AGE_15; + public static final int MAX_AGE = 15; + protected static final int AABB_OFFSET = 1; @@ -33,6 +_,7 @@ } - public void m_213897_(BlockState p_220908_, ServerLevel p_220909_, BlockPos p_220910_, RandomSource p_220911_) { + public void tick(BlockState p_220908_, ServerLevel p_220909_, BlockPos p_220910_, RandomSource p_220911_) { + if (!p_220909_.isAreaLoaded(p_220910_, 1)) return; // Forge: prevent growing cactus from loading unloaded chunks with block update - if (!p_220908_.m_60710_(p_220909_, p_220910_)) { - p_220909_.m_46961_(p_220910_, true); + if (!p_220908_.canSurvive(p_220909_, p_220910_)) { + p_220909_.destroyBlock(p_220910_, true); } @@ -48,15 +_,17 @@ if (i < 3) { - int j = p_220913_.m_61143_(f_51131_); + int j = p_220913_.getValue(AGE); + if(net.minecraftforge.common.ForgeHooks.onCropsGrowPre(p_220914_, blockpos, p_220913_, true)) { if (j == 15) { - p_220914_.m_46597_(blockpos, this.m_49966_()); -- BlockState blockstate = p_220913_.m_61124_(f_51131_, Integer.valueOf(0)); -+ BlockState blockstate = p_220913_.m_61124_(f_51131_, 0); - p_220914_.m_7731_(p_220915_, blockstate, 4); - p_220914_.m_213960_(blockstate, blockpos, this, p_220915_, false); + p_220914_.setBlockAndUpdate(blockpos, this.defaultBlockState()); +- BlockState blockstate = p_220913_.setValue(AGE, Integer.valueOf(0)); ++ BlockState blockstate = p_220913_.setValue(AGE, 0); + p_220914_.setBlock(p_220915_, blockstate, 4); + p_220914_.neighborChanged(blockstate, blockpos, this, p_220915_, false); } else { -- p_220914_.m_7731_(p_220915_, p_220913_.m_61124_(f_51131_, Integer.valueOf(j + 1)), 4); +- p_220914_.setBlock(p_220915_, p_220913_.setValue(AGE, Integer.valueOf(j + 1)), 4); - } - -+ p_220914_.m_7731_(p_220915_, p_220913_.m_61124_(f_51131_, j + 1), 4); ++ p_220914_.setBlock(p_220915_, p_220913_.setValue(AGE, j + 1), 4); + } + net.minecraftforge.common.ForgeHooks.onCropsGrowPost(p_220914_, p_220915_, p_220913_); + } @@ -42,15 +42,15 @@ @@ -86,7 +_,7 @@ } - BlockState blockstate1 = p_51154_.m_8055_(p_51155_.m_7495_()); -- return (blockstate1.m_60713_(Blocks.f_50128_) || blockstate1.m_204336_(BlockTags.f_13029_)) && !p_51154_.m_8055_(p_51155_.m_7494_()).m_278721_(); -+ return blockstate1.canSustainPlant(p_51154_, p_51155_, Direction.UP, this) && !p_51154_.m_8055_(p_51155_.m_7494_()).m_278721_(); + BlockState blockstate1 = p_51154_.getBlockState(p_51155_.below()); +- return (blockstate1.is(Blocks.CACTUS) || blockstate1.is(BlockTags.SAND)) && !p_51154_.getBlockState(p_51155_.above()).liquid(); ++ return blockstate1.canSustainPlant(p_51154_, p_51155_, Direction.UP, this) && !p_51154_.getBlockState(p_51155_.above()).liquid(); } - public void m_7892_(BlockState p_51148_, Level p_51149_, BlockPos p_51150_, Entity p_51151_) { + public void entityInside(BlockState p_51148_, Level p_51149_, BlockPos p_51150_, Entity p_51151_) { @@ -99,5 +_,15 @@ - public boolean m_7357_(BlockState p_51143_, BlockGetter p_51144_, BlockPos p_51145_, PathComputationType p_51146_) { + public boolean isPathfindable(BlockState p_51143_, BlockGetter p_51144_, BlockPos p_51145_, PathComputationType p_51146_) { return false; + } + @@ -61,6 +61,6 @@ + + @Override + public BlockState getPlant(BlockGetter world, BlockPos pos) { -+ return m_49966_(); ++ return defaultBlockState(); } } diff --git a/patches/minecraft/net/minecraft/world/level/block/CampfireBlock.java.patch b/patches/minecraft/net/minecraft/world/level/block/CampfireBlock.java.patch index 45d6f01f4b..cd7a1a445d 100644 --- a/patches/minecraft/net/minecraft/world/level/block/CampfireBlock.java.patch +++ b/patches/minecraft/net/minecraft/world/level/block/CampfireBlock.java.patch @@ -4,8 +4,8 @@ return true; } -- boolean flag = Shapes.m_83157_(f_51231_, blockstate.m_60742_(p_51249_, p_51250_, CollisionContext.m_82749_()), BooleanOp.f_82689_); -+ boolean flag = Shapes.m_83157_(f_51231_, blockstate.m_60742_(p_51249_, blockpos, CollisionContext.m_82749_()), BooleanOp.f_82689_); // FORGE: Fix MC-201374 +- boolean flag = Shapes.joinIsNotEmpty(VIRTUAL_FENCE_POST, blockstate.getCollisionShape(p_51249_, p_51250_, CollisionContext.empty()), BooleanOp.AND); ++ boolean flag = Shapes.joinIsNotEmpty(VIRTUAL_FENCE_POST, blockstate.getCollisionShape(p_51249_, blockpos, CollisionContext.empty()), BooleanOp.AND); // FORGE: Fix MC-201374 if (flag) { - BlockState blockstate1 = p_51249_.m_8055_(blockpos.m_7495_()); - return m_51319_(blockstate1); + BlockState blockstate1 = p_51249_.getBlockState(blockpos.below()); + return isLitCampfire(blockstate1); diff --git a/patches/minecraft/net/minecraft/world/level/block/ChestBlock.java.patch b/patches/minecraft/net/minecraft/world/level/block/ChestBlock.java.patch index 94cbb86f71..16ebef89bc 100644 --- a/patches/minecraft/net/minecraft/world/level/block/ChestBlock.java.patch +++ b/patches/minecraft/net/minecraft/world/level/block/ChestBlock.java.patch @@ -3,10 +3,10 @@ @@ -335,7 +_,8 @@ } - public BlockState m_6943_(BlockState p_51549_, Mirror p_51550_) { -- return p_51549_.m_60717_(p_51550_.m_54846_(p_51549_.m_61143_(f_51478_))); -+ BlockState rotated = p_51549_.m_60717_(p_51550_.m_54846_(p_51549_.m_61143_(f_51478_))); -+ return p_51550_ == Mirror.NONE ? rotated : rotated.m_61124_(f_51479_, rotated.m_61143_(f_51479_).m_61486_()); // Forge: Fixed MC-134110 Structure mirroring breaking apart double chests + public BlockState mirror(BlockState p_51549_, Mirror p_51550_) { +- return p_51549_.rotate(p_51550_.getRotation(p_51549_.getValue(FACING))); ++ BlockState rotated = p_51549_.rotate(p_51550_.getRotation(p_51549_.getValue(FACING))); ++ return p_51550_ == Mirror.NONE ? rotated : rotated.setValue(TYPE, rotated.getValue(TYPE).getOpposite()); // Forge: Fixed MC-134110 Structure mirroring breaking apart double chests } - protected void m_7926_(StateDefinition.Builder p_51562_) { + protected void createBlockStateDefinition(StateDefinition.Builder p_51562_) { diff --git a/patches/minecraft/net/minecraft/world/level/block/ChorusFlowerBlock.java.patch b/patches/minecraft/net/minecraft/world/level/block/ChorusFlowerBlock.java.patch index e9fae0cf7b..e51e2732d9 100644 --- a/patches/minecraft/net/minecraft/world/level/block/ChorusFlowerBlock.java.patch +++ b/patches/minecraft/net/minecraft/world/level/block/ChorusFlowerBlock.java.patch @@ -1,17 +1,17 @@ --- a/net/minecraft/world/level/block/ChorusFlowerBlock.java +++ b/net/minecraft/world/level/block/ChorusFlowerBlock.java @@ -50,7 +_,7 @@ - BlockPos blockpos = p_220982_.m_7494_(); - if (p_220981_.m_46859_(blockpos) && blockpos.m_123342_() < p_220981_.m_151558_()) { - int i = p_220980_.m_61143_(f_51647_); + BlockPos blockpos = p_220982_.above(); + if (p_220981_.isEmptyBlock(blockpos) && blockpos.getY() < p_220981_.getMaxBuildHeight()) { + int i = p_220980_.getValue(AGE); - if (i < 5) { + if (i < 5 && net.minecraftforge.common.ForgeHooks.onCropsGrowPre(p_220981_, blockpos, p_220980_, true)) { boolean flag = false; boolean flag1 = false; - BlockState blockstate = p_220981_.m_8055_(p_220982_.m_7495_()); + BlockState blockstate = p_220981_.getBlockState(p_220982_.below()); @@ -106,7 +_,7 @@ } else { - this.m_51658_(p_220981_, p_220982_); + this.placeDeadFlower(p_220981_, p_220982_); } - + net.minecraftforge.common.ForgeHooks.onCropsGrowPost(p_220981_, p_220982_, p_220980_); diff --git a/patches/minecraft/net/minecraft/world/level/block/CocoaBlock.java.patch b/patches/minecraft/net/minecraft/world/level/block/CocoaBlock.java.patch index bae348a412..70919f6bd4 100644 --- a/patches/minecraft/net/minecraft/world/level/block/CocoaBlock.java.patch +++ b/patches/minecraft/net/minecraft/world/level/block/CocoaBlock.java.patch @@ -3,14 +3,14 @@ @@ -47,10 +_,11 @@ } - public void m_213898_(BlockState p_221000_, ServerLevel p_221001_, BlockPos p_221002_, RandomSource p_221003_) { -- if (p_221001_.f_46441_.m_188503_(5) == 0) { + public void randomTick(BlockState p_221000_, ServerLevel p_221001_, BlockPos p_221002_, RandomSource p_221003_) { +- if (p_221001_.random.nextInt(5) == 0) { + if (true) { - int i = p_221000_.m_61143_(f_51736_); + int i = p_221000_.getValue(AGE); - if (i < 2) { -- p_221001_.m_7731_(p_221002_, p_221000_.m_61124_(f_51736_, Integer.valueOf(i + 1)), 2); -+ if (i < 2 && net.minecraftforge.common.ForgeHooks.onCropsGrowPre(p_221001_, p_221002_, p_221000_, p_221001_.f_46441_.m_188503_(5) == 0)) { -+ p_221001_.m_7731_(p_221002_, p_221000_.m_61124_(f_51736_, i + 1), 2); +- p_221001_.setBlock(p_221002_, p_221000_.setValue(AGE, Integer.valueOf(i + 1)), 2); ++ if (i < 2 && net.minecraftforge.common.ForgeHooks.onCropsGrowPre(p_221001_, p_221002_, p_221000_, p_221001_.random.nextInt(5) == 0)) { ++ p_221001_.setBlock(p_221002_, p_221000_.setValue(AGE, i + 1), 2); + net.minecraftforge.common.ForgeHooks.onCropsGrowPost(p_221001_, p_221002_, p_221000_); } } diff --git a/patches/minecraft/net/minecraft/world/level/block/ComparatorBlock.java.patch b/patches/minecraft/net/minecraft/world/level/block/ComparatorBlock.java.patch index 8dfed883bf..ca79c845d0 100644 --- a/patches/minecraft/net/minecraft/world/level/block/ComparatorBlock.java.patch +++ b/patches/minecraft/net/minecraft/world/level/block/ComparatorBlock.java.patch @@ -1,19 +1,19 @@ --- a/net/minecraft/world/level/block/ComparatorBlock.java +++ b/net/minecraft/world/level/block/ComparatorBlock.java @@ -170,4 +_,16 @@ - protected void m_7926_(StateDefinition.Builder p_51887_) { - p_51887_.m_61104_(f_54117_, f_51854_, f_52496_); + protected void createBlockStateDefinition(StateDefinition.Builder p_51887_) { + p_51887_.add(FACING, MODE, POWERED); } + + @Override + public boolean getWeakChanges(BlockState state, net.minecraft.world.level.LevelReader world, BlockPos pos) { -+ return state.m_60713_(Blocks.f_50328_); ++ return state.is(Blocks.COMPARATOR); + } + + @Override + public void onNeighborChange(BlockState state, net.minecraft.world.level.LevelReader world, BlockPos pos, BlockPos neighbor) { -+ if (pos.m_123342_() == neighbor.m_123342_() && world instanceof Level && !((Level)world).m_5776_()) { -+ state.m_60690_((Level)world, pos, world.m_8055_(neighbor).m_60734_(), neighbor, false); ++ if (pos.getY() == neighbor.getY() && world instanceof Level && !((Level)world).isClientSide()) { ++ state.neighborChanged((Level)world, pos, world.getBlockState(neighbor).getBlock(), neighbor, false); + } + } } diff --git a/patches/minecraft/net/minecraft/world/level/block/ConcretePowderBlock.java.patch b/patches/minecraft/net/minecraft/world/level/block/ConcretePowderBlock.java.patch index 2f063ca1f5..cb1933181c 100644 --- a/patches/minecraft/net/minecraft/world/level/block/ConcretePowderBlock.java.patch +++ b/patches/minecraft/net/minecraft/world/level/block/ConcretePowderBlock.java.patch @@ -3,47 +3,47 @@ @@ -20,7 +_,7 @@ } - public void m_48792_(Level p_52068_, BlockPos p_52069_, BlockState p_52070_, BlockState p_52071_, FallingBlockEntity p_52072_) { -- if (m_52080_(p_52068_, p_52069_, p_52071_)) { -+ if (shouldSolidify(p_52068_, p_52069_, p_52070_, p_52071_.m_60819_())) { // Forge: Use block of falling entity instead of block at replaced position, and check if shouldSolidify with the FluidState of the replaced block - p_52068_.m_7731_(p_52069_, this.f_52058_, 3); + public void onLand(Level p_52068_, BlockPos p_52069_, BlockState p_52070_, BlockState p_52071_, FallingBlockEntity p_52072_) { +- if (shouldSolidify(p_52068_, p_52069_, p_52071_)) { ++ if (shouldSolidify(p_52068_, p_52069_, p_52070_, p_52071_.getFluidState())) { // Forge: Use block of falling entity instead of block at replaced position, and check if shouldSolidify with the FluidState of the replaced block + p_52068_.setBlock(p_52069_, this.concrete, 3); } @@ -33,20 +_,24 @@ - return m_52080_(blockgetter, blockpos, blockstate) ? this.f_52058_ : super.m_5573_(p_52063_); + return shouldSolidify(blockgetter, blockpos, blockstate) ? this.concrete : super.getStateForPlacement(p_52063_); } + private static boolean shouldSolidify(BlockGetter p_52081_, BlockPos p_52082_, BlockState p_52083_, net.minecraft.world.level.material.FluidState fluidState) { + return p_52083_.canBeHydrated(p_52081_, p_52082_, fluidState, p_52082_) || touchesLiquid(p_52081_, p_52082_, p_52083_); + } + - private static boolean m_52080_(BlockGetter p_52081_, BlockPos p_52082_, BlockState p_52083_) { -- return m_52088_(p_52083_) || m_52064_(p_52081_, p_52082_); -+ return shouldSolidify(p_52081_, p_52082_, p_52083_, p_52081_.m_6425_(p_52082_)); + private static boolean shouldSolidify(BlockGetter p_52081_, BlockPos p_52082_, BlockState p_52083_) { +- return canSolidify(p_52083_) || touchesLiquid(p_52081_, p_52082_); ++ return shouldSolidify(p_52081_, p_52082_, p_52083_, p_52081_.getFluidState(p_52082_)); } -- private static boolean m_52064_(BlockGetter p_52065_, BlockPos p_52066_) { +- private static boolean touchesLiquid(BlockGetter p_52065_, BlockPos p_52066_) { + private static boolean touchesLiquid(BlockGetter p_52065_, BlockPos p_52066_, BlockState state) { boolean flag = false; - BlockPos.MutableBlockPos blockpos$mutableblockpos = p_52066_.m_122032_(); + BlockPos.MutableBlockPos blockpos$mutableblockpos = p_52066_.mutable(); for(Direction direction : Direction.values()) { - BlockState blockstate = p_52065_.m_8055_(blockpos$mutableblockpos); -- if (direction != Direction.DOWN || m_52088_(blockstate)) { -+ if (direction != Direction.DOWN || state.canBeHydrated(p_52065_, p_52066_, blockstate.m_60819_(), blockpos$mutableblockpos)) { - blockpos$mutableblockpos.m_122159_(p_52066_, direction); - blockstate = p_52065_.m_8055_(blockpos$mutableblockpos); -- if (m_52088_(blockstate) && !blockstate.m_60783_(p_52065_, p_52066_, direction.m_122424_())) { -+ if (state.canBeHydrated(p_52065_, p_52066_, blockstate.m_60819_(), blockpos$mutableblockpos) && !blockstate.m_60783_(p_52065_, p_52066_, direction.m_122424_())) { + BlockState blockstate = p_52065_.getBlockState(blockpos$mutableblockpos); +- if (direction != Direction.DOWN || canSolidify(blockstate)) { ++ if (direction != Direction.DOWN || state.canBeHydrated(p_52065_, p_52066_, blockstate.getFluidState(), blockpos$mutableblockpos)) { + blockpos$mutableblockpos.setWithOffset(p_52066_, direction); + blockstate = p_52065_.getBlockState(blockpos$mutableblockpos); +- if (canSolidify(blockstate) && !blockstate.isFaceSturdy(p_52065_, p_52066_, direction.getOpposite())) { ++ if (state.canBeHydrated(p_52065_, p_52066_, blockstate.getFluidState(), blockpos$mutableblockpos) && !blockstate.isFaceSturdy(p_52065_, p_52066_, direction.getOpposite())) { flag = true; break; } @@ -61,7 +_,7 @@ } - public BlockState m_7417_(BlockState p_52074_, Direction p_52075_, BlockState p_52076_, LevelAccessor p_52077_, BlockPos p_52078_, BlockPos p_52079_) { -- return m_52064_(p_52077_, p_52078_) ? this.f_52058_ : super.m_7417_(p_52074_, p_52075_, p_52076_, p_52077_, p_52078_, p_52079_); -+ return touchesLiquid(p_52077_, p_52078_, p_52074_) ? this.f_52058_ : super.m_7417_(p_52074_, p_52075_, p_52076_, p_52077_, p_52078_, p_52079_); + public BlockState updateShape(BlockState p_52074_, Direction p_52075_, BlockState p_52076_, LevelAccessor p_52077_, BlockPos p_52078_, BlockPos p_52079_) { +- return touchesLiquid(p_52077_, p_52078_) ? this.concrete : super.updateShape(p_52074_, p_52075_, p_52076_, p_52077_, p_52078_, p_52079_); ++ return touchesLiquid(p_52077_, p_52078_, p_52074_) ? this.concrete : super.updateShape(p_52074_, p_52075_, p_52076_, p_52077_, p_52078_, p_52079_); } - public int m_6248_(BlockState p_52085_, BlockGetter p_52086_, BlockPos p_52087_) { + public int getDustColor(BlockState p_52085_, BlockGetter p_52086_, BlockPos p_52087_) { diff --git a/patches/minecraft/net/minecraft/world/level/block/CoralBlock.java.patch b/patches/minecraft/net/minecraft/world/level/block/CoralBlock.java.patch index e2b5eb9ed5..d9717ed14b 100644 --- a/patches/minecraft/net/minecraft/world/level/block/CoralBlock.java.patch +++ b/patches/minecraft/net/minecraft/world/level/block/CoralBlock.java.patch @@ -3,12 +3,12 @@ @@ -37,9 +_,10 @@ } - protected boolean m_52134_(BlockGetter p_52135_, BlockPos p_52136_) { -+ BlockState state = p_52135_.m_8055_(p_52136_); + protected boolean scanForWater(BlockGetter p_52135_, BlockPos p_52136_) { ++ BlockState state = p_52135_.getBlockState(p_52136_); for(Direction direction : Direction.values()) { - FluidState fluidstate = p_52135_.m_6425_(p_52136_.m_121945_(direction)); -- if (fluidstate.m_205070_(FluidTags.f_13131_)) { -+ if (state.canBeHydrated(p_52135_, p_52136_, fluidstate, p_52136_.m_121945_(direction))) { + FluidState fluidstate = p_52135_.getFluidState(p_52136_.relative(direction)); +- if (fluidstate.is(FluidTags.WATER)) { ++ if (state.canBeHydrated(p_52135_, p_52136_, fluidstate, p_52136_.relative(direction))) { return true; } } diff --git a/patches/minecraft/net/minecraft/world/level/block/CropBlock.java.patch b/patches/minecraft/net/minecraft/world/level/block/CropBlock.java.patch index db88b9a62e..74a95802c7 100644 --- a/patches/minecraft/net/minecraft/world/level/block/CropBlock.java.patch +++ b/patches/minecraft/net/minecraft/world/level/block/CropBlock.java.patch @@ -3,15 +3,15 @@ @@ -64,12 +_,14 @@ } - public void m_213898_(BlockState p_221050_, ServerLevel p_221051_, BlockPos p_221052_, RandomSource p_221053_) { + public void randomTick(BlockState p_221050_, ServerLevel p_221051_, BlockPos p_221052_, RandomSource p_221053_) { + if (!p_221051_.isAreaLoaded(p_221052_, 1)) return; // Forge: prevent loading unloaded chunks when checking neighbor's light - if (p_221051_.m_45524_(p_221052_, 0) >= 9) { - int i = this.m_52305_(p_221050_); - if (i < this.m_7419_()) { - float f = m_52272_(this, p_221051_, p_221052_); -- if (p_221053_.m_188503_((int)(25.0F / f) + 1) == 0) { -+ if (net.minecraftforge.common.ForgeHooks.onCropsGrowPre(p_221051_, p_221052_, p_221050_, p_221053_.m_188503_((int)(25.0F / f) + 1) == 0)) { - p_221051_.m_7731_(p_221052_, this.m_52289_(i + 1), 2); + if (p_221051_.getRawBrightness(p_221052_, 0) >= 9) { + int i = this.getAge(p_221050_); + if (i < this.getMaxAge()) { + float f = getGrowthSpeed(this, p_221051_, p_221052_); +- if (p_221053_.nextInt((int)(25.0F / f) + 1) == 0) { ++ if (net.minecraftforge.common.ForgeHooks.onCropsGrowPre(p_221051_, p_221052_, p_221050_, p_221053_.nextInt((int)(25.0F / f) + 1) == 0)) { + p_221051_.setBlock(p_221052_, this.getStateForAge(i + 1), 2); + net.minecraftforge.common.ForgeHooks.onCropsGrowPost(p_221051_, p_221052_, p_221050_); } } @@ -19,21 +19,21 @@ @@ -98,9 +_,9 @@ for(int j = -1; j <= 1; ++j) { float f1 = 0.0F; - BlockState blockstate = p_52274_.m_8055_(blockpos.m_7918_(i, 0, j)); -- if (blockstate.m_60713_(Blocks.f_50093_)) { -+ if (blockstate.canSustainPlant(p_52274_, blockpos.m_7918_(i, 0, j), net.minecraft.core.Direction.UP, (net.minecraftforge.common.IPlantable) p_52273_)) { + BlockState blockstate = p_52274_.getBlockState(blockpos.offset(i, 0, j)); +- if (blockstate.is(Blocks.FARMLAND)) { ++ if (blockstate.canSustainPlant(p_52274_, blockpos.offset(i, 0, j), net.minecraft.core.Direction.UP, (net.minecraftforge.common.IPlantable) p_52273_)) { f1 = 1.0F; -- if (blockstate.m_61143_(FarmBlock.f_53243_) > 0) { -+ if (blockstate.isFertile(p_52274_, p_52275_.m_7918_(i, 0, j))) { +- if (blockstate.getValue(FarmBlock.MOISTURE) > 0) { ++ if (blockstate.isFertile(p_52274_, p_52275_.offset(i, 0, j))) { f1 = 3.0F; } } @@ -140,7 +_,7 @@ } - public void m_7892_(BlockState p_52277_, Level p_52278_, BlockPos p_52279_, Entity p_52280_) { -- if (p_52280_ instanceof Ravager && p_52278_.m_46469_().m_46207_(GameRules.f_46132_)) { + public void entityInside(BlockState p_52277_, Level p_52278_, BlockPos p_52279_, Entity p_52280_) { +- if (p_52280_ instanceof Ravager && p_52278_.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) { + if (p_52280_ instanceof Ravager && net.minecraftforge.event.ForgeEventFactory.getMobGriefingEvent(p_52278_, p_52280_)) { - p_52278_.m_46953_(p_52279_, true, p_52280_); + p_52278_.destroyBlock(p_52279_, true, p_52280_); } diff --git a/patches/minecraft/net/minecraft/world/level/block/DeadBushBlock.java.patch b/patches/minecraft/net/minecraft/world/level/block/DeadBushBlock.java.patch index 30d0c903d3..d49074a423 100644 --- a/patches/minecraft/net/minecraft/world/level/block/DeadBushBlock.java.patch +++ b/patches/minecraft/net/minecraft/world/level/block/DeadBushBlock.java.patch @@ -6,6 +6,6 @@ -public class DeadBushBlock extends BushBlock { +public class DeadBushBlock extends BushBlock implements net.minecraftforge.common.IForgeShearable { - protected static final float f_153120_ = 6.0F; - protected static final VoxelShape f_52414_ = Block.m_49796_(2.0D, 0.0D, 2.0D, 14.0D, 13.0D, 14.0D); + protected static final float AABB_OFFSET = 6.0F; + protected static final VoxelShape SHAPE = Block.box(2.0D, 0.0D, 2.0D, 14.0D, 13.0D, 14.0D); diff --git a/patches/minecraft/net/minecraft/world/level/block/DetectorRailBlock.java.patch b/patches/minecraft/net/minecraft/world/level/block/DetectorRailBlock.java.patch index dade04b2c3..63778ff8c8 100644 --- a/patches/minecraft/net/minecraft/world/level/block/DetectorRailBlock.java.patch +++ b/patches/minecraft/net/minecraft/world/level/block/DetectorRailBlock.java.patch @@ -8,25 +8,25 @@ + } + + protected void registerDefaultState() { - this.m_49959_(this.f_49792_.m_61090_().m_61124_(f_52428_, Boolean.valueOf(false)).m_61124_(f_52427_, RailShape.NORTH_SOUTH).m_61124_(f_152149_, Boolean.valueOf(false))); + this.registerDefaultState(this.stateDefinition.any().setValue(POWERED, Boolean.valueOf(false)).setValue(SHAPE, RailShape.NORTH_SOUTH).setValue(WATERLOGGED, Boolean.valueOf(false))); } @@ -135,7 +_,9 @@ - return list.get(0).m_38534_().m_45436_(); + return list.get(0).getCommandBlock().getSuccessCount(); } -- List list1 = this.m_52436_(p_52455_, p_52456_, AbstractMinecart.class, EntitySelector.f_20405_); -+ List carts = this.m_52436_(p_52455_, p_52456_, AbstractMinecart.class, e -> e.m_6084_()); +- List list1 = this.getInteractingMinecartOfType(p_52455_, p_52456_, AbstractMinecart.class, EntitySelector.CONTAINER_ENTITY_SELECTOR); ++ List carts = this.getInteractingMinecartOfType(p_52455_, p_52456_, AbstractMinecart.class, e -> e.isAlive()); + if (!carts.isEmpty() && carts.get(0).getComparatorLevel() > -1) return carts.get(0).getComparatorLevel(); -+ List list1 = carts.stream().filter(EntitySelector.f_20405_).collect(java.util.stream.Collectors.toList()); ++ List list1 = carts.stream().filter(EntitySelector.CONTAINER_ENTITY_SELECTOR).collect(java.util.stream.Collectors.toList()); if (!list1.isEmpty()) { - return AbstractContainerMenu.m_38938_((Container)list1.get(0)); + return AbstractContainerMenu.getRedstoneSignalFromContainer((Container)list1.get(0)); } @@ -270,6 +_,6 @@ } - protected void m_7926_(StateDefinition.Builder p_52469_) { -- p_52469_.m_61104_(f_52427_, f_52428_, f_152149_); -+ p_52469_.m_61104_(m_7978_(), f_52428_, f_152149_); + protected void createBlockStateDefinition(StateDefinition.Builder p_52469_) { +- p_52469_.add(SHAPE, POWERED, WATERLOGGED); ++ p_52469_.add(getShapeProperty(), POWERED, WATERLOGGED); } } diff --git a/patches/minecraft/net/minecraft/world/level/block/DiodeBlock.java.patch b/patches/minecraft/net/minecraft/world/level/block/DiodeBlock.java.patch index 2de9e2cc9d..7ac229ec78 100644 --- a/patches/minecraft/net/minecraft/world/level/block/DiodeBlock.java.patch +++ b/patches/minecraft/net/minecraft/world/level/block/DiodeBlock.java.patch @@ -1,11 +1,11 @@ --- a/net/minecraft/world/level/block/DiodeBlock.java +++ b/net/minecraft/world/level/block/DiodeBlock.java @@ -159,6 +_,8 @@ - protected void m_52580_(Level p_52581_, BlockPos p_52582_, BlockState p_52583_) { - Direction direction = p_52583_.m_61143_(f_54117_); - BlockPos blockpos = p_52582_.m_121945_(direction.m_122424_()); -+ if (net.minecraftforge.event.ForgeEventFactory.onNeighborNotify(p_52581_, p_52582_, p_52581_.m_8055_(p_52582_), java.util.EnumSet.of(direction.m_122424_()), false).isCanceled()) + protected void updateNeighborsInFront(Level p_52581_, BlockPos p_52582_, BlockState p_52583_) { + Direction direction = p_52583_.getValue(FACING); + BlockPos blockpos = p_52582_.relative(direction.getOpposite()); ++ if (net.minecraftforge.event.ForgeEventFactory.onNeighborNotify(p_52581_, p_52582_, p_52581_.getBlockState(p_52582_), java.util.EnumSet.of(direction.getOpposite()), false).isCanceled()) + return; - p_52581_.m_46586_(blockpos, this, p_52582_); - p_52581_.m_46590_(blockpos, this, direction); + p_52581_.neighborChanged(blockpos, this, p_52582_); + p_52581_.updateNeighborsAtExceptFromFacing(blockpos, this, direction); } diff --git a/patches/minecraft/net/minecraft/world/level/block/DoublePlantBlock.java.patch b/patches/minecraft/net/minecraft/world/level/block/DoublePlantBlock.java.patch index e9304c3d92..42a47ef43a 100644 --- a/patches/minecraft/net/minecraft/world/level/block/DoublePlantBlock.java.patch +++ b/patches/minecraft/net/minecraft/world/level/block/DoublePlantBlock.java.patch @@ -1,10 +1,10 @@ --- a/net/minecraft/world/level/block/DoublePlantBlock.java +++ b/net/minecraft/world/level/block/DoublePlantBlock.java @@ -54,6 +_,7 @@ - return super.m_7898_(p_52887_, p_52888_, p_52889_); + return super.canSurvive(p_52887_, p_52888_, p_52889_); } else { - BlockState blockstate = p_52888_.m_8055_(p_52889_.m_7495_()); -+ if (p_52887_.m_60734_() != this) return super.m_7898_(p_52887_, p_52888_, p_52889_); //Forge: This function is called during world gen and placement, before this block is set, so if we are not 'here' then assume it's the pre-check. - return blockstate.m_60713_(this) && blockstate.m_61143_(f_52858_) == DoubleBlockHalf.LOWER; + BlockState blockstate = p_52888_.getBlockState(p_52889_.below()); ++ if (p_52887_.getBlock() != this) return super.canSurvive(p_52887_, p_52888_, p_52889_); //Forge: This function is called during world gen and placement, before this block is set, so if we are not 'here' then assume it's the pre-check. + return blockstate.is(this) && blockstate.getValue(HALF) == DoubleBlockHalf.LOWER; } } diff --git a/patches/minecraft/net/minecraft/world/level/block/DropExperienceBlock.java.patch b/patches/minecraft/net/minecraft/world/level/block/DropExperienceBlock.java.patch index 91a7fe6b45..86f74c0a05 100644 --- a/patches/minecraft/net/minecraft/world/level/block/DropExperienceBlock.java.patch +++ b/patches/minecraft/net/minecraft/world/level/block/DropExperienceBlock.java.patch @@ -2,10 +2,10 @@ +++ b/net/minecraft/world/level/block/DropExperienceBlock.java @@ -22,9 +_,11 @@ - public void m_213646_(BlockState p_221086_, ServerLevel p_221087_, BlockPos p_221088_, ItemStack p_221089_, boolean p_221090_) { - super.m_213646_(p_221086_, p_221087_, p_221088_, p_221089_, p_221090_); + public void spawnAfterBreak(BlockState p_221086_, ServerLevel p_221087_, BlockPos p_221088_, ItemStack p_221089_, boolean p_221090_) { + super.spawnAfterBreak(p_221086_, p_221087_, p_221088_, p_221089_, p_221090_); - if (p_221090_) { -- this.m_220822_(p_221087_, p_221088_, p_221089_, this.f_221079_); +- this.tryDropExperience(p_221087_, p_221088_, p_221089_, this.xpRange); - } - + @@ -13,6 +13,6 @@ + + @Override + public int getExpDrop(BlockState state, net.minecraft.world.level.LevelReader level, net.minecraft.util.RandomSource randomSource, BlockPos pos, int fortuneLevel, int silkTouchLevel) { -+ return silkTouchLevel == 0 ? this.f_221079_.m_214085_(randomSource) : 0; ++ return silkTouchLevel == 0 ? this.xpRange.sample(randomSource) : 0; } } diff --git a/patches/minecraft/net/minecraft/world/level/block/DropperBlock.java.patch b/patches/minecraft/net/minecraft/world/level/block/DropperBlock.java.patch index ffcd84f46a..f175065d80 100644 --- a/patches/minecraft/net/minecraft/world/level/block/DropperBlock.java.patch +++ b/patches/minecraft/net/minecraft/world/level/block/DropperBlock.java.patch @@ -1,11 +1,11 @@ --- a/net/minecraft/world/level/block/DropperBlock.java +++ b/net/minecraft/world/level/block/DropperBlock.java @@ -38,7 +_,7 @@ - p_52944_.m_46796_(1001, p_52945_, 0); + p_52944_.levelEvent(1001, p_52945_, 0); } else { - ItemStack itemstack = dispenserblockentity.m_8020_(i); -- if (!itemstack.m_41619_()) { -+ if (!itemstack.m_41619_() && net.minecraftforge.items.VanillaInventoryCodeHooks.dropperInsertHook(p_52944_, p_52945_, dispenserblockentity, i, itemstack)) { - Direction direction = p_52944_.m_8055_(p_52945_).m_61143_(f_52659_); - Container container = HopperBlockEntity.m_59390_(p_52944_, p_52945_.m_121945_(direction)); + ItemStack itemstack = dispenserblockentity.getItem(i); +- if (!itemstack.isEmpty()) { ++ if (!itemstack.isEmpty() && net.minecraftforge.items.VanillaInventoryCodeHooks.dropperInsertHook(p_52944_, p_52945_, dispenserblockentity, i, itemstack)) { + Direction direction = p_52944_.getBlockState(p_52945_).getValue(FACING); + Container container = HopperBlockEntity.getContainerAt(p_52944_, p_52945_.relative(direction)); ItemStack itemstack1; diff --git a/patches/minecraft/net/minecraft/world/level/block/EnchantmentTableBlock.java.patch b/patches/minecraft/net/minecraft/world/level/block/EnchantmentTableBlock.java.patch index dcab610ed3..30dfa992f8 100644 --- a/patches/minecraft/net/minecraft/world/level/block/EnchantmentTableBlock.java.patch +++ b/patches/minecraft/net/minecraft/world/level/block/EnchantmentTableBlock.java.patch @@ -3,9 +3,9 @@ @@ -41,7 +_,7 @@ } - public static boolean m_207909_(Level p_207910_, BlockPos p_207911_, BlockPos p_207912_) { -- return p_207910_.m_8055_(p_207911_.m_121955_(p_207912_)).m_204336_(BlockTags.f_278384_) && p_207910_.m_8055_(p_207911_.m_7918_(p_207912_.m_123341_() / 2, p_207912_.m_123342_(), p_207912_.m_123343_() / 2)).m_204336_(BlockTags.f_278486_); -+ return p_207910_.m_8055_(p_207911_.m_121955_(p_207912_)).getEnchantPowerBonus(p_207910_, p_207911_.m_121955_(p_207912_)) != 0 && p_207910_.m_8055_(p_207911_.m_7918_(p_207912_.m_123341_() / 2, p_207912_.m_123342_(), p_207912_.m_123343_() / 2)).m_204336_(BlockTags.f_278486_); + public static boolean isValidBookShelf(Level p_207910_, BlockPos p_207911_, BlockPos p_207912_) { +- return p_207910_.getBlockState(p_207911_.offset(p_207912_)).is(BlockTags.ENCHANTMENT_POWER_PROVIDER) && p_207910_.getBlockState(p_207911_.offset(p_207912_.getX() / 2, p_207912_.getY(), p_207912_.getZ() / 2)).is(BlockTags.ENCHANTMENT_POWER_TRANSMITTER); ++ return p_207910_.getBlockState(p_207911_.offset(p_207912_)).getEnchantPowerBonus(p_207910_, p_207911_.offset(p_207912_)) != 0 && p_207910_.getBlockState(p_207911_.offset(p_207912_.getX() / 2, p_207912_.getY(), p_207912_.getZ() / 2)).is(BlockTags.ENCHANTMENT_POWER_TRANSMITTER); } - public boolean m_7923_(BlockState p_52997_) { + public boolean useShapeForLightOcclusion(BlockState p_52997_) { diff --git a/patches/minecraft/net/minecraft/world/level/block/FarmBlock.java.patch b/patches/minecraft/net/minecraft/world/level/block/FarmBlock.java.patch index a77de01d79..39f133774d 100644 --- a/patches/minecraft/net/minecraft/world/level/block/FarmBlock.java.patch +++ b/patches/minecraft/net/minecraft/world/level/block/FarmBlock.java.patch @@ -3,27 +3,27 @@ @@ -84,7 +_,7 @@ } - public void m_142072_(Level p_153227_, BlockState p_153228_, BlockPos p_153229_, Entity p_153230_, float p_153231_) { -- if (!p_153227_.f_46443_ && p_153227_.f_46441_.m_188501_() < p_153231_ - 0.5F && p_153230_ instanceof LivingEntity && (p_153230_ instanceof Player || p_153227_.m_46469_().m_46207_(GameRules.f_46132_)) && p_153230_.m_20205_() * p_153230_.m_20205_() * p_153230_.m_20206_() > 0.512F) { -+ if (!p_153227_.f_46443_ && net.minecraftforge.common.ForgeHooks.onFarmlandTrample(p_153227_, p_153229_, Blocks.f_50493_.m_49966_(), p_153231_, p_153230_)) { // Forge: Move logic to Entity#canTrample - m_269406_(p_153230_, p_153228_, p_153227_, p_153229_); + public void fallOn(Level p_153227_, BlockState p_153228_, BlockPos p_153229_, Entity p_153230_, float p_153231_) { +- if (!p_153227_.isClientSide && p_153227_.random.nextFloat() < p_153231_ - 0.5F && p_153230_ instanceof LivingEntity && (p_153230_ instanceof Player || p_153227_.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) && p_153230_.getBbWidth() * p_153230_.getBbWidth() * p_153230_.getBbHeight() > 0.512F) { ++ if (!p_153227_.isClientSide && net.minecraftforge.common.ForgeHooks.onFarmlandTrample(p_153227_, p_153229_, Blocks.DIRT.defaultBlockState(), p_153231_, p_153230_)) { // Forge: Move logic to Entity#canTrample + turnToDirt(p_153230_, p_153228_, p_153227_, p_153229_); } @@ -98,17 +_,20 @@ } - private static boolean m_53250_(BlockGetter p_279219_, BlockPos p_279209_) { -- return p_279219_.m_8055_(p_279209_.m_7494_()).m_204336_(BlockTags.f_279534_); -+ BlockState plant = p_279219_.m_8055_(p_279209_.m_7494_()); -+ BlockState state = p_279219_.m_8055_(p_279209_); -+ return plant.m_60734_() instanceof net.minecraftforge.common.IPlantable && state.canSustainPlant(p_279219_, p_279209_, Direction.UP, (net.minecraftforge.common.IPlantable)plant.m_60734_()); + private static boolean shouldMaintainFarmland(BlockGetter p_279219_, BlockPos p_279209_) { +- return p_279219_.getBlockState(p_279209_.above()).is(BlockTags.MAINTAINS_FARMLAND); ++ BlockState plant = p_279219_.getBlockState(p_279209_.above()); ++ BlockState state = p_279219_.getBlockState(p_279209_); ++ return plant.getBlock() instanceof net.minecraftforge.common.IPlantable && state.canSustainPlant(p_279219_, p_279209_, Direction.UP, (net.minecraftforge.common.IPlantable)plant.getBlock()); } - private static boolean m_53258_(LevelReader p_53259_, BlockPos p_53260_) { -+ BlockState state = p_53259_.m_8055_(p_53260_); - for(BlockPos blockpos : BlockPos.m_121940_(p_53260_.m_7918_(-4, 0, -4), p_53260_.m_7918_(4, 1, 4))) { -- if (p_53259_.m_6425_(blockpos).m_205070_(FluidTags.f_13131_)) { -+ if (state.canBeHydrated(p_53259_, p_53260_, p_53259_.m_6425_(blockpos), blockpos)) { + private static boolean isNearWater(LevelReader p_53259_, BlockPos p_53260_) { ++ BlockState state = p_53259_.getBlockState(p_53260_); + for(BlockPos blockpos : BlockPos.betweenClosed(p_53260_.offset(-4, 0, -4), p_53260_.offset(4, 1, 4))) { +- if (p_53259_.getFluidState(blockpos).is(FluidTags.WATER)) { ++ if (state.canBeHydrated(p_53259_, p_53260_, p_53259_.getFluidState(blockpos), blockpos)) { return true; } } @@ -32,4 +32,4 @@ + return net.minecraftforge.common.FarmlandWaterManager.hasBlockWaterTicket(p_53259_, p_53260_); } - protected void m_7926_(StateDefinition.Builder p_53283_) { + protected void createBlockStateDefinition(StateDefinition.Builder p_53283_) { diff --git a/patches/minecraft/net/minecraft/world/level/block/FenceGateBlock.java.patch b/patches/minecraft/net/minecraft/world/level/block/FenceGateBlock.java.patch index 79446738bf..185bfe1a66 100644 --- a/patches/minecraft/net/minecraft/world/level/block/FenceGateBlock.java.patch +++ b/patches/minecraft/net/minecraft/world/level/block/FenceGateBlock.java.patch @@ -1,40 +1,40 @@ --- a/net/minecraft/world/level/block/FenceGateBlock.java +++ b/net/minecraft/world/level/block/FenceGateBlock.java @@ -41,11 +_,16 @@ - protected static final VoxelShape f_53351_ = Shapes.m_83110_(Block.m_49796_(7.0D, 5.0D, 0.0D, 9.0D, 16.0D, 2.0D), Block.m_49796_(7.0D, 5.0D, 14.0D, 9.0D, 16.0D, 16.0D)); - protected static final VoxelShape f_53352_ = Shapes.m_83110_(Block.m_49796_(0.0D, 2.0D, 7.0D, 2.0D, 13.0D, 9.0D), Block.m_49796_(14.0D, 2.0D, 7.0D, 16.0D, 13.0D, 9.0D)); - protected static final VoxelShape f_53353_ = Shapes.m_83110_(Block.m_49796_(7.0D, 2.0D, 0.0D, 9.0D, 13.0D, 2.0D), Block.m_49796_(7.0D, 2.0D, 14.0D, 9.0D, 13.0D, 16.0D)); -- private final WoodType f_271446_; + protected static final VoxelShape X_OCCLUSION_SHAPE = Shapes.or(Block.box(7.0D, 5.0D, 0.0D, 9.0D, 16.0D, 2.0D), Block.box(7.0D, 5.0D, 14.0D, 9.0D, 16.0D, 16.0D)); + protected static final VoxelShape Z_OCCLUSION_SHAPE_LOW = Shapes.or(Block.box(0.0D, 2.0D, 7.0D, 2.0D, 13.0D, 9.0D), Block.box(14.0D, 2.0D, 7.0D, 16.0D, 13.0D, 9.0D)); + protected static final VoxelShape X_OCCLUSION_SHAPE_LOW = Shapes.or(Block.box(7.0D, 2.0D, 0.0D, 9.0D, 13.0D, 2.0D), Block.box(7.0D, 2.0D, 14.0D, 9.0D, 13.0D, 16.0D)); +- private final WoodType type; + private final net.minecraft.sounds.SoundEvent openSound; + private final net.minecraft.sounds.SoundEvent closeSound; public FenceGateBlock(BlockBehaviour.Properties p_273352_, WoodType p_273340_) { -- super(p_273352_.m_60918_(p_273340_.f_271317_())); -- this.f_271446_ = p_273340_; -+ this(p_273352_.m_60918_(p_273340_.f_271317_()), p_273340_.f_271162_(), p_273340_.f_271365_()); +- super(p_273352_.sound(p_273340_.soundType())); +- this.type = p_273340_; ++ this(p_273352_.sound(p_273340_.soundType()), p_273340_.fenceGateOpen(), p_273340_.fenceGateClose()); + } + public FenceGateBlock(BlockBehaviour.Properties props, net.minecraft.sounds.SoundEvent openSound, net.minecraft.sounds.SoundEvent closeSound) { + super(props); + this.openSound = openSound; + this.closeSound = closeSound; - this.m_49959_(this.f_49792_.m_61090_().m_61124_(f_53341_, Boolean.valueOf(false)).m_61124_(f_53342_, Boolean.valueOf(false)).m_61124_(f_53343_, Boolean.valueOf(false))); + this.registerDefaultState(this.stateDefinition.any().setValue(OPEN, Boolean.valueOf(false)).setValue(POWERED, Boolean.valueOf(false)).setValue(IN_WALL, Boolean.valueOf(false))); } @@ -133,7 +_,7 @@ } - boolean flag = p_53365_.m_61143_(f_53341_); -- p_53366_.m_5594_(p_53368_, p_53367_, flag ? this.f_271446_.f_271162_() : this.f_271446_.f_271365_(), SoundSource.BLOCKS, 1.0F, p_53366_.m_213780_().m_188501_() * 0.1F + 0.9F); -+ p_53366_.m_5594_(p_53368_, p_53367_, flag ? this.openSound : this.closeSound, SoundSource.BLOCKS, 1.0F, p_53366_.m_213780_().m_188501_() * 0.1F + 0.9F); - p_53366_.m_142346_(p_53368_, flag ? GameEvent.f_157796_ : GameEvent.f_157793_, p_53367_); - return InteractionResult.m_19078_(p_53366_.f_46443_); + boolean flag = p_53365_.getValue(OPEN); +- p_53366_.playSound(p_53368_, p_53367_, flag ? this.type.fenceGateOpen() : this.type.fenceGateClose(), SoundSource.BLOCKS, 1.0F, p_53366_.getRandom().nextFloat() * 0.1F + 0.9F); ++ p_53366_.playSound(p_53368_, p_53367_, flag ? this.openSound : this.closeSound, SoundSource.BLOCKS, 1.0F, p_53366_.getRandom().nextFloat() * 0.1F + 0.9F); + p_53366_.gameEvent(p_53368_, flag ? GameEvent.BLOCK_OPEN : GameEvent.BLOCK_CLOSE, p_53367_); + return InteractionResult.sidedSuccess(p_53366_.isClientSide); } @@ -144,7 +_,7 @@ - if (p_53372_.m_61143_(f_53342_) != flag) { - p_53373_.m_7731_(p_53374_, p_53372_.m_61124_(f_53342_, Boolean.valueOf(flag)).m_61124_(f_53341_, Boolean.valueOf(flag)), 2); - if (p_53372_.m_61143_(f_53341_) != flag) { -- p_53373_.m_5594_((Player)null, p_53374_, flag ? this.f_271446_.f_271162_() : this.f_271446_.f_271365_(), SoundSource.BLOCKS, 1.0F, p_53373_.m_213780_().m_188501_() * 0.1F + 0.9F); -+ p_53373_.m_5594_((Player)null, p_53374_, flag ? this.openSound : this.closeSound, SoundSource.BLOCKS, 1.0F, p_53373_.m_213780_().m_188501_() * 0.1F + 0.9F); - p_53373_.m_142346_((Entity)null, flag ? GameEvent.f_157796_ : GameEvent.f_157793_, p_53374_); + if (p_53372_.getValue(POWERED) != flag) { + p_53373_.setBlock(p_53374_, p_53372_.setValue(POWERED, Boolean.valueOf(flag)).setValue(OPEN, Boolean.valueOf(flag)), 2); + if (p_53372_.getValue(OPEN) != flag) { +- p_53373_.playSound((Player)null, p_53374_, flag ? this.type.fenceGateOpen() : this.type.fenceGateClose(), SoundSource.BLOCKS, 1.0F, p_53373_.getRandom().nextFloat() * 0.1F + 0.9F); ++ p_53373_.playSound((Player)null, p_53374_, flag ? this.openSound : this.closeSound, SoundSource.BLOCKS, 1.0F, p_53373_.getRandom().nextFloat() * 0.1F + 0.9F); + p_53373_.gameEvent((Entity)null, flag ? GameEvent.BLOCK_OPEN : GameEvent.BLOCK_CLOSE, p_53374_); } } diff --git a/patches/minecraft/net/minecraft/world/level/block/FireBlock.java.patch b/patches/minecraft/net/minecraft/world/level/block/FireBlock.java.patch index e66e75f2a6..289dd71c69 100644 --- a/patches/minecraft/net/minecraft/world/level/block/FireBlock.java.patch +++ b/patches/minecraft/net/minecraft/world/level/block/FireBlock.java.patch @@ -1,122 +1,122 @@ --- a/net/minecraft/world/level/block/FireBlock.java +++ b/net/minecraft/world/level/block/FireBlock.java @@ -104,13 +_,13 @@ - protected BlockState m_53470_(BlockGetter p_53471_, BlockPos p_53472_) { - BlockPos blockpos = p_53472_.m_7495_(); - BlockState blockstate = p_53471_.m_8055_(blockpos); -- if (!this.m_7599_(blockstate) && !blockstate.m_60783_(p_53471_, blockpos, Direction.UP)) { -+ if (!this.canCatchFire(p_53471_, p_53472_, Direction.UP) && !blockstate.m_60783_(p_53471_, blockpos, Direction.UP)) { - BlockState blockstate1 = this.m_49966_(); + protected BlockState getStateForPlacement(BlockGetter p_53471_, BlockPos p_53472_) { + BlockPos blockpos = p_53472_.below(); + BlockState blockstate = p_53471_.getBlockState(blockpos); +- if (!this.canBurn(blockstate) && !blockstate.isFaceSturdy(p_53471_, blockpos, Direction.UP)) { ++ if (!this.canCatchFire(p_53471_, p_53472_, Direction.UP) && !blockstate.isFaceSturdy(p_53471_, blockpos, Direction.UP)) { + BlockState blockstate1 = this.defaultBlockState(); for(Direction direction : Direction.values()) { - BooleanProperty booleanproperty = f_53414_.get(direction); + BooleanProperty booleanproperty = PROPERTY_BY_DIRECTION.get(direction); if (booleanproperty != null) { -- blockstate1 = blockstate1.m_61124_(booleanproperty, Boolean.valueOf(this.m_7599_(p_53471_.m_8055_(p_53472_.m_121945_(direction))))); -+ blockstate1 = blockstate1.m_61124_(booleanproperty, Boolean.valueOf(this.canCatchFire(p_53471_, p_53472_.m_121945_(direction), direction.m_122424_()))); +- blockstate1 = blockstate1.setValue(booleanproperty, Boolean.valueOf(this.canBurn(p_53471_.getBlockState(p_53472_.relative(direction))))); ++ blockstate1 = blockstate1.setValue(booleanproperty, Boolean.valueOf(this.canCatchFire(p_53471_, p_53472_.relative(direction), direction.getOpposite()))); } } @@ -129,14 +_,14 @@ - p_221161_.m_186460_(p_221162_, this, m_221148_(p_221161_.f_46441_)); - if (p_221161_.m_46469_().m_46207_(GameRules.f_46131_)) { - if (!p_221160_.m_60710_(p_221161_, p_221162_)) { -- p_221161_.m_7471_(p_221162_, false); + p_221161_.scheduleTick(p_221162_, this, getFireTickDelay(p_221161_.random)); + if (p_221161_.getGameRules().getBoolean(GameRules.RULE_DOFIRETICK)) { + if (!p_221160_.canSurvive(p_221161_, p_221162_)) { +- p_221161_.removeBlock(p_221162_, false); } - BlockState blockstate = p_221161_.m_8055_(p_221162_.m_7495_()); -- boolean flag = blockstate.m_204336_(p_221161_.m_6042_().f_63836_()); + BlockState blockstate = p_221161_.getBlockState(p_221162_.below()); +- boolean flag = blockstate.is(p_221161_.dimensionType().infiniburn()); + boolean flag = blockstate.isFireSource(p_221161_, p_221162_, Direction.UP); - int i = p_221160_.m_61143_(f_53408_); - if (!flag && p_221161_.m_46471_() && this.m_53428_(p_221161_, p_221162_) && p_221163_.m_188501_() < 0.2F + (float)i * 0.03F) { - p_221161_.m_7471_(p_221162_, false); -+ p_221161_.m_7471_(p_221162_, false); + int i = p_221160_.getValue(AGE); + if (!flag && p_221161_.isRaining() && this.isNearRain(p_221161_, p_221162_) && p_221163_.nextFloat() < 0.2F + (float)i * 0.03F) { + p_221161_.removeBlock(p_221162_, false); ++ p_221161_.removeBlock(p_221162_, false); } else { - int j = Math.min(15, i + p_221163_.m_188503_(3) / 2); + int j = Math.min(15, i + p_221163_.nextInt(3) / 2); if (i != j) { @@ -154,7 +_,7 @@ return; } -- if (i == 15 && p_221163_.m_188503_(4) == 0 && !this.m_7599_(p_221161_.m_8055_(p_221162_.m_7495_()))) { -+ if (i == 15 && p_221163_.m_188503_(4) == 0 && !this.canCatchFire(p_221161_, p_221162_.m_7495_(), Direction.UP)) { - p_221161_.m_7471_(p_221162_, false); +- if (i == 15 && p_221163_.nextInt(4) == 0 && !this.canBurn(p_221161_.getBlockState(p_221162_.below()))) { ++ if (i == 15 && p_221163_.nextInt(4) == 0 && !this.canCatchFire(p_221161_, p_221162_.below(), Direction.UP)) { + p_221161_.removeBlock(p_221162_, false); return; } @@ -162,12 +_,12 @@ - boolean flag1 = p_221161_.m_204166_(p_221162_).m_203656_(BiomeTags.f_263839_); + boolean flag1 = p_221161_.getBiome(p_221162_).is(BiomeTags.INCREASED_FIRE_BURNOUT); int k = flag1 ? -50 : 0; -- this.m_221150_(p_221161_, p_221162_.m_122029_(), 300 + k, p_221163_, i); -- this.m_221150_(p_221161_, p_221162_.m_122024_(), 300 + k, p_221163_, i); -- this.m_221150_(p_221161_, p_221162_.m_7495_(), 250 + k, p_221163_, i); -- this.m_221150_(p_221161_, p_221162_.m_7494_(), 250 + k, p_221163_, i); -- this.m_221150_(p_221161_, p_221162_.m_122012_(), 300 + k, p_221163_, i); -- this.m_221150_(p_221161_, p_221162_.m_122019_(), 300 + k, p_221163_, i); -+ this.tryCatchFire(p_221161_, p_221162_.m_122029_(), 300 + k, p_221163_, i, Direction.WEST); -+ this.tryCatchFire(p_221161_, p_221162_.m_122024_(), 300 + k, p_221163_, i, Direction.EAST); -+ this.tryCatchFire(p_221161_, p_221162_.m_7495_(), 250 + k, p_221163_, i, Direction.UP); -+ this.tryCatchFire(p_221161_, p_221162_.m_7494_(), 250 + k, p_221163_, i, Direction.DOWN); -+ this.tryCatchFire(p_221161_, p_221162_.m_122012_(), 300 + k, p_221163_, i, Direction.SOUTH); -+ this.tryCatchFire(p_221161_, p_221162_.m_122019_(), 300 + k, p_221163_, i, Direction.NORTH); +- this.checkBurnOut(p_221161_, p_221162_.east(), 300 + k, p_221163_, i); +- this.checkBurnOut(p_221161_, p_221162_.west(), 300 + k, p_221163_, i); +- this.checkBurnOut(p_221161_, p_221162_.below(), 250 + k, p_221163_, i); +- this.checkBurnOut(p_221161_, p_221162_.above(), 250 + k, p_221163_, i); +- this.checkBurnOut(p_221161_, p_221162_.north(), 300 + k, p_221163_, i); +- this.checkBurnOut(p_221161_, p_221162_.south(), 300 + k, p_221163_, i); ++ this.tryCatchFire(p_221161_, p_221162_.east(), 300 + k, p_221163_, i, Direction.WEST); ++ this.tryCatchFire(p_221161_, p_221162_.west(), 300 + k, p_221163_, i, Direction.EAST); ++ this.tryCatchFire(p_221161_, p_221162_.below(), 250 + k, p_221163_, i, Direction.UP); ++ this.tryCatchFire(p_221161_, p_221162_.above(), 250 + k, p_221163_, i, Direction.DOWN); ++ this.tryCatchFire(p_221161_, p_221162_.north(), 300 + k, p_221163_, i, Direction.SOUTH); ++ this.tryCatchFire(p_221161_, p_221162_.south(), 300 + k, p_221163_, i, Direction.NORTH); BlockPos.MutableBlockPos blockpos$mutableblockpos = new BlockPos.MutableBlockPos(); for(int l = -1; l <= 1; ++l) { @@ -205,28 +_,27 @@ - return p_53429_.m_46758_(p_53430_) || p_53429_.m_46758_(p_53430_.m_122024_()) || p_53429_.m_46758_(p_53430_.m_122029_()) || p_53429_.m_46758_(p_53430_.m_122012_()) || p_53429_.m_46758_(p_53430_.m_122019_()); + return p_53429_.isRainingAt(p_53430_) || p_53429_.isRainingAt(p_53430_.west()) || p_53429_.isRainingAt(p_53430_.east()) || p_53429_.isRainingAt(p_53430_.north()) || p_53429_.isRainingAt(p_53430_.south()); } + @Deprecated //Forge: Use IForgeBlockState.getFlammability, Public for default implementation only. - public int m_221164_(BlockState p_221165_) { - return p_221165_.m_61138_(BlockStateProperties.f_61362_) && p_221165_.m_61143_(BlockStateProperties.f_61362_) ? 0 : this.f_53422_.getInt(p_221165_.m_60734_()); + public int getBurnOdds(BlockState p_221165_) { + return p_221165_.hasProperty(BlockStateProperties.WATERLOGGED) && p_221165_.getValue(BlockStateProperties.WATERLOGGED) ? 0 : this.burnOdds.getInt(p_221165_.getBlock()); } + @Deprecated //Forge: Use IForgeBlockState.getFireSpreadSpeed - public int m_221166_(BlockState p_221167_) { - return p_221167_.m_61138_(BlockStateProperties.f_61362_) && p_221167_.m_61143_(BlockStateProperties.f_61362_) ? 0 : this.f_221147_.getInt(p_221167_.m_60734_()); + public int getIgniteOdds(BlockState p_221167_) { + return p_221167_.hasProperty(BlockStateProperties.WATERLOGGED) && p_221167_.getValue(BlockStateProperties.WATERLOGGED) ? 0 : this.igniteOdds.getInt(p_221167_.getBlock()); } -- private void m_221150_(Level p_221151_, BlockPos p_221152_, int p_221153_, RandomSource p_221154_, int p_221155_) { -- int i = this.m_221164_(p_221151_.m_8055_(p_221152_)); -- if (p_221154_.m_188503_(p_221153_) < i) { -- BlockState blockstate = p_221151_.m_8055_(p_221152_); -- if (p_221154_.m_188503_(p_221155_ + 10) < 5 && !p_221151_.m_46758_(p_221152_)) { -- int j = Math.min(p_221155_ + p_221154_.m_188503_(5) / 4, 15); -- p_221151_.m_7731_(p_221152_, this.m_53437_(p_221151_, p_221152_, j), 3); +- private void checkBurnOut(Level p_221151_, BlockPos p_221152_, int p_221153_, RandomSource p_221154_, int p_221155_) { +- int i = this.getBurnOdds(p_221151_.getBlockState(p_221152_)); +- if (p_221154_.nextInt(p_221153_) < i) { +- BlockState blockstate = p_221151_.getBlockState(p_221152_); +- if (p_221154_.nextInt(p_221155_ + 10) < 5 && !p_221151_.isRainingAt(p_221152_)) { +- int j = Math.min(p_221155_ + p_221154_.nextInt(5) / 4, 15); +- p_221151_.setBlock(p_221152_, this.getStateWithAge(p_221151_, p_221152_, j), 3); - } else { -- p_221151_.m_7471_(p_221152_, false); +- p_221151_.removeBlock(p_221152_, false); - } + private void tryCatchFire(Level p_53432_, BlockPos p_53433_, int p_53434_, RandomSource p_53435_, int p_53436_, Direction face) { -+ int i = p_53432_.m_8055_(p_53433_).getFlammability(p_53432_, p_53433_, face); -+ if (p_53435_.m_188503_(p_53434_) < i) { -+ BlockState blockstate = p_53432_.m_8055_(p_53433_); ++ int i = p_53432_.getBlockState(p_53433_).getFlammability(p_53432_, p_53433_, face); ++ if (p_53435_.nextInt(p_53434_) < i) { ++ BlockState blockstate = p_53432_.getBlockState(p_53433_); + blockstate.onCaughtFire(p_53432_, p_53433_, face, null); -- Block block = blockstate.m_60734_(); +- Block block = blockstate.getBlock(); - if (block instanceof TntBlock) { -- TntBlock.m_57433_(p_221151_, p_221152_); -+ if (p_53435_.m_188503_(p_53434_ + 10) < 5 && !p_53432_.m_46758_(p_53433_)) { -+ int j = Math.min(p_53434_ + p_53435_.m_188503_(5) / 4, 15); -+ p_53432_.m_7731_(p_53433_, this.m_53437_(p_53432_, p_53433_, j), 3); +- TntBlock.explode(p_221151_, p_221152_); ++ if (p_53435_.nextInt(p_53434_ + 10) < 5 && !p_53432_.isRainingAt(p_53433_)) { ++ int j = Math.min(p_53434_ + p_53435_.nextInt(5) / 4, 15); ++ p_53432_.setBlock(p_53433_, this.getStateWithAge(p_53432_, p_53433_, j), 3); + } else { -+ p_53432_.m_7471_(p_53433_, false); ++ p_53432_.removeBlock(p_53433_, false); } } @@ -239,7 +_,7 @@ - private boolean m_53485_(BlockGetter p_53486_, BlockPos p_53487_) { + private boolean isValidFireLocation(BlockGetter p_53486_, BlockPos p_53487_) { for(Direction direction : Direction.values()) { -- if (this.m_7599_(p_53486_.m_8055_(p_53487_.m_121945_(direction)))) { -+ if (this.canCatchFire(p_53486_, p_53487_.m_121945_(direction), direction.m_122424_())) { +- if (this.canBurn(p_53486_.getBlockState(p_53487_.relative(direction)))) { ++ if (this.canCatchFire(p_53486_, p_53487_.relative(direction), direction.getOpposite())) { return true; } } @@ -255,13 +_,14 @@ for(Direction direction : Direction.values()) { - BlockState blockstate = p_221157_.m_8055_(p_221158_.m_121945_(direction)); -- i = Math.max(this.m_221166_(blockstate), i); -+ i = Math.max(blockstate.getFireSpreadSpeed(p_221157_, p_221158_.m_121945_(direction), direction.m_122424_()), i); + BlockState blockstate = p_221157_.getBlockState(p_221158_.relative(direction)); +- i = Math.max(this.getIgniteOdds(blockstate), i); ++ i = Math.max(blockstate.getFireSpreadSpeed(p_221157_, p_221158_.relative(direction), direction.getOpposite()), i); } return i; @@ -124,16 +124,16 @@ } + @Deprecated //Forge: Use canCatchFire with more context - protected boolean m_7599_(BlockState p_53489_) { - return this.m_221166_(p_53489_) > 0; + protected boolean canBurn(BlockState p_53489_) { + return this.getIgniteOdds(p_53489_) > 0; } @@ -280,8 +_,21 @@ } - private void m_53444_(Block p_53445_, int p_53446_, int p_53447_) { -+ if (p_53445_ == Blocks.f_50016_) throw new IllegalArgumentException("Tried to set air on fire... This is bad."); - this.f_221147_.put(p_53445_, p_53446_); - this.f_53422_.put(p_53445_, p_53447_); + private void setFlammable(Block p_53445_, int p_53446_, int p_53447_) { ++ if (p_53445_ == Blocks.AIR) throw new IllegalArgumentException("Tried to set air on fire... This is bad."); + this.igniteOdds.put(p_53445_, p_53446_); + this.burnOdds.put(p_53445_, p_53447_); + } + + /** @@ -145,7 +145,7 @@ + * @return True if the face can catch fire. + */ + public boolean canCatchFire(BlockGetter world, BlockPos pos, Direction face) { -+ return world.m_8055_(pos).isFlammable(world, pos, face); ++ return world.getBlockState(pos).isFlammable(world, pos, face); } - public static void m_53484_() { + public static void bootStrap() { diff --git a/patches/minecraft/net/minecraft/world/level/block/FlowerPotBlock.java.patch b/patches/minecraft/net/minecraft/world/level/block/FlowerPotBlock.java.patch index 46afbcafc0..d81dfb2f89 100644 --- a/patches/minecraft/net/minecraft/world/level/block/FlowerPotBlock.java.patch +++ b/patches/minecraft/net/minecraft/world/level/block/FlowerPotBlock.java.patch @@ -1,17 +1,17 @@ --- a/net/minecraft/world/level/block/FlowerPotBlock.java +++ b/net/minecraft/world/level/block/FlowerPotBlock.java @@ -28,10 +_,33 @@ - protected static final VoxelShape f_53523_ = Block.m_49796_(5.0D, 0.0D, 5.0D, 11.0D, 6.0D, 11.0D); - private final Block f_53525_; + protected static final VoxelShape SHAPE = Block.box(5.0D, 0.0D, 5.0D, 11.0D, 6.0D, 11.0D); + private final Block content; + @Deprecated // Mods should use the constructor below public FlowerPotBlock(Block p_53528_, BlockBehaviour.Properties p_53529_) { - super(p_53529_); -- this.f_53525_ = p_53528_; -- f_53524_.put(p_53528_, this); -+ this(Blocks.f_50276_ == null ? null : () -> (FlowerPotBlock) net.minecraftforge.registries.ForgeRegistries.BLOCKS.getDelegateOrThrow(Blocks.f_50276_).get(), () -> net.minecraftforge.registries.ForgeRegistries.BLOCKS.getDelegateOrThrow(p_53528_).get(), p_53529_); -+ if (Blocks.f_50276_ != null) { -+ ((FlowerPotBlock)Blocks.f_50276_).addPlant(net.minecraftforge.registries.ForgeRegistries.BLOCKS.getKey(p_53528_), () -> this); +- this.content = p_53528_; +- POTTED_BY_CONTENT.put(p_53528_, this); ++ this(Blocks.FLOWER_POT == null ? null : () -> (FlowerPotBlock) net.minecraftforge.registries.ForgeRegistries.BLOCKS.getDelegateOrThrow(Blocks.FLOWER_POT).get(), () -> net.minecraftforge.registries.ForgeRegistries.BLOCKS.getDelegateOrThrow(p_53528_).get(), p_53529_); ++ if (Blocks.FLOWER_POT != null) { ++ ((FlowerPotBlock)Blocks.FLOWER_POT).addPlant(net.minecraftforge.registries.ForgeRegistries.BLOCKS.getKey(p_53528_), () -> this); + } + } + @@ -25,7 +25,7 @@ + */ + public FlowerPotBlock(@org.jetbrains.annotations.Nullable java.util.function.Supplier emptyPot, java.util.function.Supplier p_53528_, BlockBehaviour.Properties properties) { + super(properties); -+ this.f_53525_ = null; // Unused, redirected by coremod ++ this.content = null; // Unused, redirected by coremod + this.flowerDelegate = p_53528_; + if (emptyPot == null) { + this.fullPots = Maps.newHashMap(); @@ -36,34 +36,34 @@ + } } - public VoxelShape m_5940_(BlockState p_53556_, BlockGetter p_53557_, BlockPos p_53558_, CollisionContext p_53559_) { + public VoxelShape getShape(BlockState p_53556_, BlockGetter p_53557_, BlockPos p_53558_, CollisionContext p_53559_) { @@ -45,7 +_,7 @@ - public InteractionResult m_6227_(BlockState p_53540_, Level p_53541_, BlockPos p_53542_, Player p_53543_, InteractionHand p_53544_, BlockHitResult p_53545_) { - ItemStack itemstack = p_53543_.m_21120_(p_53544_); - Item item = itemstack.m_41720_(); -- BlockState blockstate = (item instanceof BlockItem ? f_53524_.getOrDefault(((BlockItem)item).m_40614_(), Blocks.f_50016_) : Blocks.f_50016_).m_49966_(); -+ BlockState blockstate = (item instanceof BlockItem ? getEmptyPot().fullPots.getOrDefault(net.minecraftforge.registries.ForgeRegistries.BLOCKS.getKey(((BlockItem)item).m_40614_()), net.minecraftforge.registries.ForgeRegistries.BLOCKS.getDelegateOrThrow(Blocks.f_50016_)).get() : Blocks.f_50016_).m_49966_(); - boolean flag = blockstate.m_60713_(Blocks.f_50016_); - boolean flag1 = this.m_153267_(); + public InteractionResult use(BlockState p_53540_, Level p_53541_, BlockPos p_53542_, Player p_53543_, InteractionHand p_53544_, BlockHitResult p_53545_) { + ItemStack itemstack = p_53543_.getItemInHand(p_53544_); + Item item = itemstack.getItem(); +- BlockState blockstate = (item instanceof BlockItem ? POTTED_BY_CONTENT.getOrDefault(((BlockItem)item).getBlock(), Blocks.AIR) : Blocks.AIR).defaultBlockState(); ++ BlockState blockstate = (item instanceof BlockItem ? getEmptyPot().fullPots.getOrDefault(net.minecraftforge.registries.ForgeRegistries.BLOCKS.getKey(((BlockItem)item).getBlock()), net.minecraftforge.registries.ForgeRegistries.BLOCKS.getDelegateOrThrow(Blocks.AIR)).get() : Blocks.AIR).defaultBlockState(); + boolean flag = blockstate.is(Blocks.AIR); + boolean flag1 = this.isEmpty(); if (flag != flag1) { @@ -63,7 +_,7 @@ - p_53543_.m_36176_(itemstack1, false); + p_53543_.drop(itemstack1, false); } -- p_53541_.m_7731_(p_53542_, Blocks.f_50276_.m_49966_(), 3); -+ p_53541_.m_7731_(p_53542_, getEmptyPot().m_49966_(), 3); +- p_53541_.setBlock(p_53542_, Blocks.FLOWER_POT.defaultBlockState(), 3); ++ p_53541_.setBlock(p_53542_, getEmptyPot().defaultBlockState(), 3); } - p_53541_.m_142346_(p_53543_, GameEvent.f_157792_, p_53542_); + p_53541_.gameEvent(p_53543_, GameEvent.BLOCK_CHANGE, p_53542_); @@ -86,10 +_,31 @@ } - public Block m_53560_() { -- return this.f_53525_; + public Block getContent() { +- return this.content; + return flowerDelegate.get(); } - public boolean m_7357_(BlockState p_53535_, BlockGetter p_53536_, BlockPos p_53537_, PathComputationType p_53538_) { + public boolean isPathfindable(BlockState p_53535_, BlockGetter p_53536_, BlockPos p_53537_, PathComputationType p_53538_) { return false; } + diff --git a/patches/minecraft/net/minecraft/world/level/block/FungusBlock.java.patch b/patches/minecraft/net/minecraft/world/level/block/FungusBlock.java.patch index 728910d4fa..ba8aa5eb9c 100644 --- a/patches/minecraft/net/minecraft/world/level/block/FungusBlock.java.patch +++ b/patches/minecraft/net/minecraft/world/level/block/FungusBlock.java.patch @@ -2,12 +2,12 @@ +++ b/net/minecraft/world/level/block/FungusBlock.java @@ -52,7 +_,9 @@ - public void m_214148_(ServerLevel p_221243_, RandomSource p_221244_, BlockPos p_221245_, BlockState p_221246_) { - this.m_255216_(p_221243_).ifPresent((p_256352_) -> { -- p_256352_.m_203334_().m_224953_(p_221243_, p_221243_.m_7726_().m_8481_(), p_221244_, p_221245_); + public void performBonemeal(ServerLevel p_221243_, RandomSource p_221244_, BlockPos p_221245_, BlockState p_221246_) { + this.getFeature(p_221243_).ifPresent((p_256352_) -> { +- p_256352_.value().place(p_221243_, p_221243_.getChunkSource().getGenerator(), p_221244_, p_221245_); + var event = net.minecraftforge.event.ForgeEventFactory.blockGrowFeature(p_221243_, p_221244_, p_221245_, p_256352_); + if (event.getResult().equals(net.minecraftforge.eventbus.api.Event.Result.DENY)) return; -+ event.getFeature().m_203334_().m_224953_(p_221243_, p_221243_.m_7726_().m_8481_(), p_221244_, p_221245_); ++ event.getFeature().value().place(p_221243_, p_221243_.getChunkSource().getGenerator(), p_221244_, p_221245_); }); } } diff --git a/patches/minecraft/net/minecraft/world/level/block/GrowingPlantHeadBlock.java.patch b/patches/minecraft/net/minecraft/world/level/block/GrowingPlantHeadBlock.java.patch index 864bbbb837..2758e6e18c 100644 --- a/patches/minecraft/net/minecraft/world/level/block/GrowingPlantHeadBlock.java.patch +++ b/patches/minecraft/net/minecraft/world/level/block/GrowingPlantHeadBlock.java.patch @@ -3,13 +3,13 @@ @@ -35,10 +_,11 @@ } - public void m_213898_(BlockState p_221350_, ServerLevel p_221351_, BlockPos p_221352_, RandomSource p_221353_) { -- if (p_221350_.m_61143_(f_53924_) < 25 && p_221353_.m_188500_() < this.f_53925_) { -+ if (p_221350_.m_61143_(f_53924_) < 25 && net.minecraftforge.common.ForgeHooks.onCropsGrowPre(p_221351_, p_221352_.m_121945_(this.f_53859_), p_221351_.m_8055_(p_221352_.m_121945_(this.f_53859_)),p_221353_.m_188500_() < this.f_53925_)) { - BlockPos blockpos = p_221352_.m_121945_(this.f_53859_); - if (this.m_5971_(p_221351_.m_8055_(blockpos))) { - p_221351_.m_46597_(blockpos, this.m_214070_(p_221350_, p_221351_.f_46441_)); -+ net.minecraftforge.common.ForgeHooks.onCropsGrowPost(p_221351_, blockpos, p_221351_.m_8055_(blockpos)); + public void randomTick(BlockState p_221350_, ServerLevel p_221351_, BlockPos p_221352_, RandomSource p_221353_) { +- if (p_221350_.getValue(AGE) < 25 && p_221353_.nextDouble() < this.growPerTickProbability) { ++ if (p_221350_.getValue(AGE) < 25 && net.minecraftforge.common.ForgeHooks.onCropsGrowPre(p_221351_, p_221352_.relative(this.growthDirection), p_221351_.getBlockState(p_221352_.relative(this.growthDirection)),p_221353_.nextDouble() < this.growPerTickProbability)) { + BlockPos blockpos = p_221352_.relative(this.growthDirection); + if (this.canGrowInto(p_221351_.getBlockState(blockpos))) { + p_221351_.setBlockAndUpdate(blockpos, this.getGrowIntoState(p_221350_, p_221351_.random)); ++ net.minecraftforge.common.ForgeHooks.onCropsGrowPost(p_221351_, blockpos, p_221351_.getBlockState(blockpos)); } } diff --git a/patches/minecraft/net/minecraft/world/level/block/LeavesBlock.java.patch b/patches/minecraft/net/minecraft/world/level/block/LeavesBlock.java.patch index 5051ea00a6..ce0dcd2334 100644 --- a/patches/minecraft/net/minecraft/world/level/block/LeavesBlock.java.patch +++ b/patches/minecraft/net/minecraft/world/level/block/LeavesBlock.java.patch @@ -6,6 +6,6 @@ -public class LeavesBlock extends Block implements SimpleWaterloggedBlock { +public class LeavesBlock extends Block implements SimpleWaterloggedBlock, net.minecraftforge.common.IForgeShearable { - public static final int f_153563_ = 7; - public static final IntegerProperty f_54418_ = BlockStateProperties.f_61414_; - public static final BooleanProperty f_54419_ = BlockStateProperties.f_61447_; + public static final int DECAY_DISTANCE = 7; + public static final IntegerProperty DISTANCE = BlockStateProperties.DISTANCE; + public static final BooleanProperty PERSISTENT = BlockStateProperties.PERSISTENT; diff --git a/patches/minecraft/net/minecraft/world/level/block/LiquidBlock.java.patch b/patches/minecraft/net/minecraft/world/level/block/LiquidBlock.java.patch index 704d828790..3da5f2047f 100644 --- a/patches/minecraft/net/minecraft/world/level/block/LiquidBlock.java.patch +++ b/patches/minecraft/net/minecraft/world/level/block/LiquidBlock.java.patch @@ -3,22 +3,22 @@ @@ -32,11 +_,13 @@ public class LiquidBlock extends Block implements BucketPickup { - public static final IntegerProperty f_54688_ = BlockStateProperties.f_61422_; -- protected final FlowingFluid f_54689_; + public static final IntegerProperty LEVEL = BlockStateProperties.LEVEL; +- protected final FlowingFluid fluid; + @Deprecated // Use getFluid -+ private final FlowingFluid f_54689_; - private final List f_54691_; - public static final VoxelShape f_54690_ = Block.m_49796_(0.0D, 0.0D, 0.0D, 16.0D, 8.0D, 16.0D); - public static final ImmutableList f_181233_ = ImmutableList.of(Direction.DOWN, Direction.SOUTH, Direction.NORTH, Direction.EAST, Direction.WEST); ++ private final FlowingFluid fluid; + private final List stateCache; + public static final VoxelShape STABLE_SHAPE = Block.box(0.0D, 0.0D, 0.0D, 16.0D, 8.0D, 16.0D); + public static final ImmutableList POSSIBLE_FLOW_DIRECTIONS = ImmutableList.of(Direction.DOWN, Direction.SOUTH, Direction.NORTH, Direction.EAST, Direction.WEST); + @Deprecated // Forge: Use the constructor that takes a supplier public LiquidBlock(FlowingFluid p_54694_, BlockBehaviour.Properties p_54695_) { super(p_54695_); - this.f_54689_ = p_54694_; + this.fluid = p_54694_; @@ -49,6 +_,19 @@ - this.f_54691_.add(p_54694_.m_75953_(8, true)); - this.m_49959_(this.f_49792_.m_61090_().m_61124_(f_54688_, Integer.valueOf(0))); + this.stateCache.add(p_54694_.getFlowing(8, true)); + this.registerDefaultState(this.stateDefinition.any().setValue(LEVEL, Integer.valueOf(0))); + fluidStateCacheInitialized = true; + supplier = net.minecraftforge.registries.ForgeRegistries.FLUIDS.getDelegateOrThrow(p_54694_); + } @@ -28,49 +28,49 @@ + */ + public LiquidBlock(java.util.function.Supplier p_54694_, BlockBehaviour.Properties p_54695_) { + super(p_54695_); -+ this.f_54689_ = null; -+ this.f_54691_ = Lists.newArrayList(); -+ this.m_49959_(this.f_49792_.m_61090_().m_61124_(f_54688_, Integer.valueOf(0))); ++ this.fluid = null; ++ this.stateCache = Lists.newArrayList(); ++ this.registerDefaultState(this.stateDefinition.any().setValue(LEVEL, Integer.valueOf(0))); + this.supplier = p_54694_; } - public VoxelShape m_5939_(BlockState p_54760_, BlockGetter p_54761_, BlockPos p_54762_, CollisionContext p_54763_) { + public VoxelShape getCollisionShape(BlockState p_54760_, BlockGetter p_54761_, BlockPos p_54762_, CollisionContext p_54763_) { @@ -73,6 +_,7 @@ - public FluidState m_5888_(BlockState p_54765_) { - int i = p_54765_.m_61143_(f_54688_); + public FluidState getFluidState(BlockState p_54765_) { + int i = p_54765_.getValue(LEVEL); + if (!fluidStateCacheInitialized) initFluidStateCache(); - return this.f_54691_.get(Math.min(i, 8)); + return this.stateCache.get(Math.min(i, 8)); } @@ -93,7 +_,7 @@ } - public void m_6807_(BlockState p_54754_, Level p_54755_, BlockPos p_54756_, BlockState p_54757_, boolean p_54758_) { -- if (this.m_54696_(p_54755_, p_54756_, p_54754_)) { + public void onPlace(BlockState p_54754_, Level p_54755_, BlockPos p_54756_, BlockState p_54757_, boolean p_54758_) { +- if (this.shouldSpreadLiquid(p_54755_, p_54756_, p_54754_)) { + if (!net.minecraftforge.fluids.FluidInteractionRegistry.canInteract(p_54755_, p_54756_)) { - p_54755_.m_186469_(p_54756_, p_54754_.m_60819_().m_76152_(), this.f_54689_.m_6718_(p_54755_)); + p_54755_.scheduleTick(p_54756_, p_54754_.getFluidState().getType(), this.fluid.getTickDelay(p_54755_)); } @@ -108,12 +_,13 @@ } - public void m_6861_(BlockState p_54709_, Level p_54710_, BlockPos p_54711_, Block p_54712_, BlockPos p_54713_, boolean p_54714_) { -- if (this.m_54696_(p_54710_, p_54711_, p_54709_)) { + public void neighborChanged(BlockState p_54709_, Level p_54710_, BlockPos p_54711_, Block p_54712_, BlockPos p_54713_, boolean p_54714_) { +- if (this.shouldSpreadLiquid(p_54710_, p_54711_, p_54709_)) { + if (!net.minecraftforge.fluids.FluidInteractionRegistry.canInteract(p_54710_, p_54711_)) { - p_54710_.m_186469_(p_54711_, p_54709_.m_60819_().m_76152_(), this.f_54689_.m_6718_(p_54710_)); + p_54710_.scheduleTick(p_54711_, p_54709_.getFluidState().getType(), this.fluid.getTickDelay(p_54710_)); } } + @Deprecated // FORGE: Use FluidInteractionRegistry#canInteract instead - private boolean m_54696_(Level p_54697_, BlockPos p_54698_, BlockState p_54699_) { - if (this.f_54689_.m_205067_(FluidTags.f_13132_)) { - boolean flag = p_54697_.m_8055_(p_54698_.m_7495_()).m_60713_(Blocks.f_50136_); + private boolean shouldSpreadLiquid(Level p_54697_, BlockPos p_54698_, BlockState p_54699_) { + if (this.fluid.is(FluidTags.LAVA)) { + boolean flag = p_54697_.getBlockState(p_54698_.below()).is(Blocks.SOUL_SOIL); @@ -152,6 +_,25 @@ - return new ItemStack(this.f_54689_.m_6859_()); + return new ItemStack(this.fluid.getBucket()); } else { - return ItemStack.f_41583_; + return ItemStack.EMPTY; + } + } + @@ -83,12 +83,12 @@ + private boolean fluidStateCacheInitialized = false; + protected synchronized void initFluidStateCache() { + if (fluidStateCacheInitialized == false) { -+ this.f_54691_.add(getFluid().m_76068_(false)); ++ this.stateCache.add(getFluid().getSource(false)); + + for (int i = 1; i < 8; ++i) -+ this.f_54691_.add(getFluid().m_75953_(8 - i, false)); ++ this.stateCache.add(getFluid().getFlowing(8 - i, false)); + -+ this.f_54691_.add(getFluid().m_75953_(8, true)); ++ this.stateCache.add(getFluid().getFlowing(8, true)); + fluidStateCacheInitialized = true; } } diff --git a/patches/minecraft/net/minecraft/world/level/block/MushroomBlock.java.patch b/patches/minecraft/net/minecraft/world/level/block/MushroomBlock.java.patch index 5ed91aaf74..7112a1ae78 100644 --- a/patches/minecraft/net/minecraft/world/level/block/MushroomBlock.java.patch +++ b/patches/minecraft/net/minecraft/world/level/block/MushroomBlock.java.patch @@ -1,11 +1,11 @@ --- a/net/minecraft/world/level/block/MushroomBlock.java +++ b/net/minecraft/world/level/block/MushroomBlock.java @@ -72,7 +_,7 @@ - if (blockstate.m_204336_(BlockTags.f_13057_)) { + if (blockstate.is(BlockTags.MUSHROOM_GROW_BLOCK)) { return true; } else { -- return p_54881_.m_45524_(p_54882_, 0) < 13 && this.m_6266_(blockstate, p_54881_, blockpos); -+ return p_54881_.m_45524_(p_54882_, 0) < 13 && blockstate.canSustainPlant(p_54881_, blockpos, net.minecraft.core.Direction.UP, this); +- return p_54881_.getRawBrightness(p_54882_, 0) < 13 && this.mayPlaceOn(blockstate, p_54881_, blockpos); ++ return p_54881_.getRawBrightness(p_54882_, 0) < 13 && blockstate.canSustainPlant(p_54881_, blockpos, net.minecraft.core.Direction.UP, this); } } @@ -15,9 +15,9 @@ } else { + var event = net.minecraftforge.event.ForgeEventFactory.blockGrowFeature(p_221774_, p_221777_, p_221775_, optional.get()); + if (event.getResult().equals(net.minecraftforge.eventbus.api.Event.Result.DENY)) return false; - p_221774_.m_7471_(p_221775_, false); -- if (optional.get().m_203334_().m_224953_(p_221774_, p_221774_.m_7726_().m_8481_(), p_221777_, p_221775_)) { -+ if (event.getFeature().m_203334_().m_224953_(p_221774_, p_221774_.m_7726_().m_8481_(), p_221777_, p_221775_)) { + p_221774_.removeBlock(p_221775_, false); +- if (optional.get().value().place(p_221774_, p_221774_.getChunkSource().getGenerator(), p_221777_, p_221775_)) { ++ if (event.getFeature().value().place(p_221774_, p_221774_.getChunkSource().getGenerator(), p_221777_, p_221775_)) { return true; } else { - p_221774_.m_7731_(p_221775_, p_221776_, 3); + p_221774_.setBlock(p_221775_, p_221776_, 3); diff --git a/patches/minecraft/net/minecraft/world/level/block/NetherWartBlock.java.patch b/patches/minecraft/net/minecraft/world/level/block/NetherWartBlock.java.patch index db97209efc..f71a5213f2 100644 --- a/patches/minecraft/net/minecraft/world/level/block/NetherWartBlock.java.patch +++ b/patches/minecraft/net/minecraft/world/level/block/NetherWartBlock.java.patch @@ -2,12 +2,12 @@ +++ b/net/minecraft/world/level/block/NetherWartBlock.java @@ -38,9 +_,10 @@ - public void m_213898_(BlockState p_221806_, ServerLevel p_221807_, BlockPos p_221808_, RandomSource p_221809_) { - int i = p_221806_.m_61143_(f_54967_); -- if (i < 3 && p_221809_.m_188503_(10) == 0) { -+ if (i < 3 && net.minecraftforge.common.ForgeHooks.onCropsGrowPre(p_221807_, p_221808_, p_221806_, p_221809_.m_188503_(10) == 0)) { - p_221806_ = p_221806_.m_61124_(f_54967_, Integer.valueOf(i + 1)); - p_221807_.m_7731_(p_221808_, p_221806_, 2); + public void randomTick(BlockState p_221806_, ServerLevel p_221807_, BlockPos p_221808_, RandomSource p_221809_) { + int i = p_221806_.getValue(AGE); +- if (i < 3 && p_221809_.nextInt(10) == 0) { ++ if (i < 3 && net.minecraftforge.common.ForgeHooks.onCropsGrowPre(p_221807_, p_221808_, p_221806_, p_221809_.nextInt(10) == 0)) { + p_221806_ = p_221806_.setValue(AGE, Integer.valueOf(i + 1)); + p_221807_.setBlock(p_221808_, p_221806_, 2); + net.minecraftforge.common.ForgeHooks.onCropsGrowPost(p_221807_, p_221808_, p_221806_); } diff --git a/patches/minecraft/net/minecraft/world/level/block/NoteBlock.java.patch b/patches/minecraft/net/minecraft/world/level/block/NoteBlock.java.patch index c572d6dce2..3b9b09d2b5 100644 --- a/patches/minecraft/net/minecraft/world/level/block/NoteBlock.java.patch +++ b/patches/minecraft/net/minecraft/world/level/block/NoteBlock.java.patch @@ -1,23 +1,23 @@ --- a/net/minecraft/world/level/block/NoteBlock.java +++ b/net/minecraft/world/level/block/NoteBlock.java @@ -89,7 +_,9 @@ - } else if (p_55035_.f_46443_) { + } else if (p_55035_.isClientSide) { return InteractionResult.SUCCESS; } else { -- p_55034_ = p_55034_.m_61122_(f_55013_); -+ int _new = net.minecraftforge.common.ForgeHooks.onNoteChange(p_55035_, p_55036_, p_55034_, p_55034_.m_61143_(f_55013_), p_55034_.m_61122_(f_55013_).m_61143_(f_55013_)); +- p_55034_ = p_55034_.cycle(NOTE); ++ int _new = net.minecraftforge.common.ForgeHooks.onNoteChange(p_55035_, p_55036_, p_55034_, p_55034_.getValue(NOTE), p_55034_.cycle(NOTE).getValue(NOTE)); + if (_new == -1) return InteractionResult.FAIL; -+ p_55034_ = p_55034_.m_61124_(f_55013_, _new); - p_55035_.m_7731_(p_55036_, p_55034_, 3); - this.m_260916_(p_55037_, p_55034_, p_55035_, p_55036_); - p_55037_.m_36220_(Stats.f_12960_); ++ p_55034_ = p_55034_.setValue(NOTE, _new); + p_55035_.setBlock(p_55036_, p_55034_, 3); + this.playNote(p_55037_, p_55034_, p_55035_, p_55036_); + p_55037_.awardStat(Stats.TUNE_NOTEBLOCK); @@ -109,6 +_,9 @@ } - public boolean m_8133_(BlockState p_55023_, Level p_55024_, BlockPos p_55025_, int p_55026_, int p_55027_) { -+ net.minecraftforge.event.level.NoteBlockEvent.Play e = new net.minecraftforge.event.level.NoteBlockEvent.Play(p_55024_, p_55025_, p_55023_, p_55023_.m_61143_(f_55013_), p_55023_.m_61143_(f_55011_)); + public boolean triggerEvent(BlockState p_55023_, Level p_55024_, BlockPos p_55025_, int p_55026_, int p_55027_) { ++ net.minecraftforge.event.level.NoteBlockEvent.Play e = new net.minecraftforge.event.level.NoteBlockEvent.Play(p_55024_, p_55025_, p_55023_, p_55023_.getValue(NOTE), p_55023_.getValue(INSTRUMENT)); + if (net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(e)) return false; -+ p_55023_ = p_55023_.m_61124_(f_55013_, e.getVanillaNoteId()).m_61124_(f_55011_, e.getInstrument()); - NoteBlockInstrument noteblockinstrument = p_55023_.m_61143_(f_55011_); ++ p_55023_ = p_55023_.setValue(NOTE, e.getVanillaNoteId()).setValue(INSTRUMENT, e.getInstrument()); + NoteBlockInstrument noteblockinstrument = p_55023_.getValue(INSTRUMENT); float f; - if (noteblockinstrument.m_262503_()) { + if (noteblockinstrument.isTunable()) { diff --git a/patches/minecraft/net/minecraft/world/level/block/PowderSnowBlock.java.patch b/patches/minecraft/net/minecraft/world/level/block/PowderSnowBlock.java.patch index a86d27bd63..fc9a085cd9 100644 --- a/patches/minecraft/net/minecraft/world/level/block/PowderSnowBlock.java.patch +++ b/patches/minecraft/net/minecraft/world/level/block/PowderSnowBlock.java.patch @@ -1,11 +1,11 @@ --- a/net/minecraft/world/level/block/PowderSnowBlock.java +++ b/net/minecraft/world/level/block/PowderSnowBlock.java @@ -108,7 +_,7 @@ - if (p_154256_.m_6095_().m_204039_(EntityTypeTags.f_144291_)) { + if (p_154256_.getType().is(EntityTypeTags.POWDER_SNOW_WALKABLE_MOBS)) { return true; } else { -- return p_154256_ instanceof LivingEntity ? ((LivingEntity)p_154256_).m_6844_(EquipmentSlot.FEET).m_150930_(Items.f_42463_) : false; -+ return p_154256_ instanceof LivingEntity ? ((LivingEntity)p_154256_).m_6844_(EquipmentSlot.FEET).canWalkOnPowderedSnow((LivingEntity)p_154256_) : false; +- return p_154256_ instanceof LivingEntity ? ((LivingEntity)p_154256_).getItemBySlot(EquipmentSlot.FEET).is(Items.LEATHER_BOOTS) : false; ++ return p_154256_ instanceof LivingEntity ? ((LivingEntity)p_154256_).getItemBySlot(EquipmentSlot.FEET).canWalkOnPowderedSnow((LivingEntity)p_154256_) : false; } } diff --git a/patches/minecraft/net/minecraft/world/level/block/PoweredRailBlock.java.patch b/patches/minecraft/net/minecraft/world/level/block/PoweredRailBlock.java.patch index fed32be0dd..8c5f6474a5 100644 --- a/patches/minecraft/net/minecraft/world/level/block/PoweredRailBlock.java.patch +++ b/patches/minecraft/net/minecraft/world/level/block/PoweredRailBlock.java.patch @@ -2,8 +2,8 @@ +++ b/net/minecraft/world/level/block/PoweredRailBlock.java @@ -14,9 +_,19 @@ public class PoweredRailBlock extends BaseRailBlock { - public static final EnumProperty f_55214_ = BlockStateProperties.f_61404_; - public static final BooleanProperty f_55215_ = BlockStateProperties.f_61448_; + public static final EnumProperty SHAPE = BlockStateProperties.RAIL_SHAPE_STRAIGHT; + public static final BooleanProperty POWERED = BlockStateProperties.POWERED; + private final boolean isActivator; // TRUE for an Activator Rail, FALSE for Powered Rail public PoweredRailBlock(BlockBehaviour.Properties p_55218_) { @@ -17,62 +17,62 @@ + } + + protected void registerDefaultState() { - this.m_49959_(this.f_49792_.m_61090_().m_61124_(f_55214_, RailShape.NORTH_SOUTH).m_61124_(f_55215_, Boolean.valueOf(false)).m_61124_(f_152149_, Boolean.valueOf(false))); + this.registerDefaultState(this.stateDefinition.any().setValue(SHAPE, RailShape.NORTH_SOUTH).setValue(POWERED, Boolean.valueOf(false)).setValue(WATERLOGGED, Boolean.valueOf(false))); } @@ -28,7 +_,7 @@ - int j = p_55221_.m_123342_(); - int k = p_55221_.m_123343_(); + int j = p_55221_.getY(); + int k = p_55221_.getZ(); boolean flag = true; -- RailShape railshape = p_55222_.m_61143_(f_55214_); -+ RailShape railshape = p_55222_.m_61143_(m_7978_()); +- RailShape railshape = p_55222_.getValue(SHAPE); ++ RailShape railshape = p_55222_.getValue(getShapeProperty()); switch (railshape) { case NORTH_SOUTH: if (p_55223_) { @@ -99,14 +_,14 @@ - protected boolean m_55225_(Level p_55226_, BlockPos p_55227_, boolean p_55228_, int p_55229_, RailShape p_55230_) { - BlockState blockstate = p_55226_.m_8055_(p_55227_); -- if (!blockstate.m_60713_(this)) { -+ if (!(blockstate.m_60734_() instanceof PoweredRailBlock other)) { + protected boolean isSameRailWithPower(Level p_55226_, BlockPos p_55227_, boolean p_55228_, int p_55229_, RailShape p_55230_) { + BlockState blockstate = p_55226_.getBlockState(p_55227_); +- if (!blockstate.is(this)) { ++ if (!(blockstate.getBlock() instanceof PoweredRailBlock other)) { return false; } else { -- RailShape railshape = blockstate.m_61143_(f_55214_); +- RailShape railshape = blockstate.getValue(SHAPE); + RailShape railshape = other.getRailDirection(blockstate, p_55226_, p_55227_, null); if (p_55230_ != RailShape.EAST_WEST || railshape != RailShape.NORTH_SOUTH && railshape != RailShape.ASCENDING_NORTH && railshape != RailShape.ASCENDING_SOUTH) { if (p_55230_ != RailShape.NORTH_SOUTH || railshape != RailShape.EAST_WEST && railshape != RailShape.ASCENDING_EAST && railshape != RailShape.ASCENDING_WEST) { -- if (blockstate.m_61143_(f_55215_)) { -- return p_55226_.m_276867_(p_55227_) ? true : this.m_55219_(p_55226_, p_55227_, blockstate, p_55228_, p_55229_ + 1); +- if (blockstate.getValue(POWERED)) { +- return p_55226_.hasNeighborSignal(p_55227_) ? true : this.findPoweredRailSignal(p_55226_, p_55227_, blockstate, p_55228_, p_55229_ + 1); + if (isActivatorRail() == other.isActivatorRail()) { -+ return p_55226_.m_276867_(p_55227_) ? true : other.m_55219_(p_55226_, p_55227_, blockstate, p_55228_, p_55229_ + 1); ++ return p_55226_.hasNeighborSignal(p_55227_) ? true : other.findPoweredRailSignal(p_55226_, p_55227_, blockstate, p_55228_, p_55229_ + 1); } else { return false; } @@ -125,7 +_,7 @@ if (flag1 != flag) { - p_55233_.m_7731_(p_55234_, p_55232_.m_61124_(f_55215_, Boolean.valueOf(flag1)), 3); - p_55233_.m_46672_(p_55234_.m_7495_(), this); -- if (p_55232_.m_61143_(f_55214_).m_61745_()) { -+ if (p_55232_.m_61143_(m_7978_()).m_61745_()) { - p_55233_.m_46672_(p_55234_.m_7494_(), this); + p_55233_.setBlock(p_55234_, p_55232_.setValue(POWERED, Boolean.valueOf(flag1)), 3); + p_55233_.updateNeighborsAt(p_55234_.below(), this); +- if (p_55232_.getValue(SHAPE).isAscending()) { ++ if (p_55232_.getValue(getShapeProperty()).isAscending()) { + p_55233_.updateNeighborsAt(p_55234_.above(), this); } } @@ -156,6 +_,9 @@ - return p_55240_.m_61124_(f_55214_, RailShape.SOUTH_EAST); + return p_55240_.setValue(SHAPE, RailShape.SOUTH_EAST); case NORTH_EAST: - return p_55240_.m_61124_(f_55214_, RailShape.SOUTH_WEST); + return p_55240_.setValue(SHAPE, RailShape.SOUTH_WEST); + case NORTH_SOUTH: //Forge fix: MC-196102 + case EAST_WEST: + return p_55240_; } case COUNTERCLOCKWISE_90: - switch ((RailShape)p_55240_.m_61143_(f_55214_)) { + switch ((RailShape)p_55240_.getValue(SHAPE)) { @@ -253,6 +_,10 @@ } - protected void m_7926_(StateDefinition.Builder p_55243_) { -- p_55243_.m_61104_(f_55214_, f_55215_, f_152149_); -+ p_55243_.m_61104_(m_7978_(), f_55215_, f_152149_); + protected void createBlockStateDefinition(StateDefinition.Builder p_55243_) { +- p_55243_.add(SHAPE, POWERED, WATERLOGGED); ++ p_55243_.add(getShapeProperty(), POWERED, WATERLOGGED); + } + + public boolean isActivatorRail() { diff --git a/patches/minecraft/net/minecraft/world/level/block/PumpkinBlock.java.patch b/patches/minecraft/net/minecraft/world/level/block/PumpkinBlock.java.patch index 63418c6e6b..65897564a2 100644 --- a/patches/minecraft/net/minecraft/world/level/block/PumpkinBlock.java.patch +++ b/patches/minecraft/net/minecraft/world/level/block/PumpkinBlock.java.patch @@ -2,10 +2,10 @@ +++ b/net/minecraft/world/level/block/PumpkinBlock.java @@ -24,7 +_,7 @@ - public InteractionResult m_6227_(BlockState p_55289_, Level p_55290_, BlockPos p_55291_, Player p_55292_, InteractionHand p_55293_, BlockHitResult p_55294_) { - ItemStack itemstack = p_55292_.m_21120_(p_55293_); -- if (itemstack.m_150930_(Items.f_42574_)) { + public InteractionResult use(BlockState p_55289_, Level p_55290_, BlockPos p_55291_, Player p_55292_, InteractionHand p_55293_, BlockHitResult p_55294_) { + ItemStack itemstack = p_55292_.getItemInHand(p_55293_); +- if (itemstack.is(Items.SHEARS)) { + if (itemstack.canPerformAction(net.minecraftforge.common.ToolActions.SHEARS_CARVE)) { - if (!p_55290_.f_46443_) { - Direction direction = p_55294_.m_82434_(); - Direction direction1 = direction.m_122434_() == Direction.Axis.Y ? p_55292_.m_6350_().m_122424_() : direction; + if (!p_55290_.isClientSide) { + Direction direction = p_55294_.getDirection(); + Direction direction1 = direction.getAxis() == Direction.Axis.Y ? p_55292_.getDirection().getOpposite() : direction; diff --git a/patches/minecraft/net/minecraft/world/level/block/RailBlock.java.patch b/patches/minecraft/net/minecraft/world/level/block/RailBlock.java.patch index 093be0d3f8..23751dbcac 100644 --- a/patches/minecraft/net/minecraft/world/level/block/RailBlock.java.patch +++ b/patches/minecraft/net/minecraft/world/level/block/RailBlock.java.patch @@ -1,12 +1,12 @@ --- a/net/minecraft/world/level/block/RailBlock.java +++ b/net/minecraft/world/level/block/RailBlock.java @@ -49,6 +_,9 @@ - return p_55405_.m_61124_(f_55392_, RailShape.SOUTH_EAST); + return p_55405_.setValue(SHAPE, RailShape.SOUTH_EAST); case NORTH_EAST: - return p_55405_.m_61124_(f_55392_, RailShape.SOUTH_WEST); + return p_55405_.setValue(SHAPE, RailShape.SOUTH_WEST); + case NORTH_SOUTH: //Forge fix: MC-196102 + case EAST_WEST: + return p_55405_; } case COUNTERCLOCKWISE_90: - switch ((RailShape)p_55405_.m_61143_(f_55392_)) { + switch ((RailShape)p_55405_.getValue(SHAPE)) { diff --git a/patches/minecraft/net/minecraft/world/level/block/RailState.java.patch b/patches/minecraft/net/minecraft/world/level/block/RailState.java.patch index 617b25093f..ced459eefd 100644 --- a/patches/minecraft/net/minecraft/world/level/block/RailState.java.patch +++ b/patches/minecraft/net/minecraft/world/level/block/RailState.java.patch @@ -1,22 +1,22 @@ --- a/net/minecraft/world/level/block/RailState.java +++ b/net/minecraft/world/level/block/RailState.java @@ -16,14 +_,16 @@ - private BlockState f_55417_; - private final boolean f_55418_; - private final List f_55419_ = Lists.newArrayList(); + private BlockState state; + private final boolean isStraight; + private final List connections = Lists.newArrayList(); + private final boolean canMakeSlopes; public RailState(Level p_55421_, BlockPos p_55422_, BlockState p_55423_) { - this.f_55414_ = p_55421_; - this.f_55415_ = p_55422_; - this.f_55417_ = p_55423_; - this.f_55416_ = (BaseRailBlock)p_55423_.m_60734_(); -- RailShape railshape = p_55423_.m_61143_(this.f_55416_.m_7978_()); -- this.f_55418_ = this.f_55416_.m_49413_(); -+ RailShape railshape = this.f_55416_.getRailDirection(f_55417_, p_55421_, p_55422_, null); -+ this.f_55418_ = !this.f_55416_.isFlexibleRail(f_55417_, p_55421_, p_55422_); -+ this.canMakeSlopes = this.f_55416_.canMakeSlopes(f_55417_, p_55421_, p_55422_); - this.m_55427_(railshape); + this.level = p_55421_; + this.pos = p_55422_; + this.state = p_55423_; + this.block = (BaseRailBlock)p_55423_.getBlock(); +- RailShape railshape = p_55423_.getValue(this.block.getShapeProperty()); +- this.isStraight = this.block.isStraight(); ++ RailShape railshape = this.block.getRailDirection(state, p_55421_, p_55422_, null); ++ this.isStraight = !this.block.isFlexibleRail(state, p_55421_, p_55422_); ++ this.canMakeSlopes = this.block.canMakeSlopes(state, p_55421_, p_55422_); + this.updateConnections(railshape); } @@ -179,7 +_,7 @@ @@ -25,7 +25,7 @@ - if (railshape == RailShape.NORTH_SOUTH) { + if (railshape == RailShape.NORTH_SOUTH && canMakeSlopes) { - if (BaseRailBlock.m_49364_(this.f_55414_, blockpos.m_7494_())) { + if (BaseRailBlock.isRail(this.level, blockpos.above())) { railshape = RailShape.ASCENDING_NORTH; } @@ -189,7 +_,7 @@ @@ -34,19 +34,19 @@ - if (railshape == RailShape.EAST_WEST) { + if (railshape == RailShape.EAST_WEST && canMakeSlopes) { - if (BaseRailBlock.m_49364_(this.f_55414_, blockpos3.m_7494_())) { + if (BaseRailBlock.isRail(this.level, blockpos3.above())) { railshape = RailShape.ASCENDING_EAST; } @@ -203,6 +_,10 @@ railshape = RailShape.NORTH_SOUTH; } -+ if (!this.f_55416_.isValidRailShape(railshape)) { // Forge: allow rail block to decide if the new shape is valid -+ this.f_55419_.remove(p_55442_.f_55415_); ++ if (!this.block.isValidRailShape(railshape)) { // Forge: allow rail block to decide if the new shape is valid ++ this.connections.remove(p_55442_.pos); + return; + } - this.f_55417_ = this.f_55417_.m_61124_(this.f_55416_.m_7978_(), railshape); - this.f_55414_.m_7731_(this.f_55415_, this.f_55417_, 3); + this.state = this.state.setValue(this.block.getShapeProperty(), railshape); + this.level.setBlock(this.pos, this.state, 3); } @@ -305,7 +_,7 @@ } @@ -54,7 +54,7 @@ - if (railshape == RailShape.NORTH_SOUTH) { + if (railshape == RailShape.NORTH_SOUTH && canMakeSlopes) { - if (BaseRailBlock.m_49364_(this.f_55414_, blockpos.m_7494_())) { + if (BaseRailBlock.isRail(this.level, blockpos.above())) { railshape = RailShape.ASCENDING_NORTH; } @@ -315,7 +_,7 @@ @@ -63,7 +63,7 @@ - if (railshape == RailShape.EAST_WEST) { + if (railshape == RailShape.EAST_WEST && canMakeSlopes) { - if (BaseRailBlock.m_49364_(this.f_55414_, blockpos3.m_7494_())) { + if (BaseRailBlock.isRail(this.level, blockpos3.above())) { railshape = RailShape.ASCENDING_EAST; } @@ -325,7 +_,7 @@ @@ -71,7 +71,7 @@ } - if (railshape == null) { -+ if (railshape == null || !this.f_55416_.isValidRailShape(railshape)) { // Forge: allow rail block to decide if the new shape is valid ++ if (railshape == null || !this.block.isValidRailShape(railshape)) { // Forge: allow rail block to decide if the new shape is valid railshape = p_55434_; } diff --git a/patches/minecraft/net/minecraft/world/level/block/RedStoneOreBlock.java.patch b/patches/minecraft/net/minecraft/world/level/block/RedStoneOreBlock.java.patch index 72da730c7b..699b06ee61 100644 --- a/patches/minecraft/net/minecraft/world/level/block/RedStoneOreBlock.java.patch +++ b/patches/minecraft/net/minecraft/world/level/block/RedStoneOreBlock.java.patch @@ -2,17 +2,17 @@ +++ b/net/minecraft/world/level/block/RedStoneOreBlock.java @@ -74,11 +_,11 @@ - public void m_213646_(BlockState p_221907_, ServerLevel p_221908_, BlockPos p_221909_, ItemStack p_221910_, boolean p_221911_) { - super.m_213646_(p_221907_, p_221908_, p_221909_, p_221910_, p_221911_); -- if (p_221911_ && EnchantmentHelper.m_44843_(Enchantments.f_44985_, p_221910_) == 0) { -- int i = 1 + p_221908_.f_46441_.m_188503_(5); -- this.m_49805_(p_221908_, p_221909_, i); + public void spawnAfterBreak(BlockState p_221907_, ServerLevel p_221908_, BlockPos p_221909_, ItemStack p_221910_, boolean p_221911_) { + super.spawnAfterBreak(p_221907_, p_221908_, p_221909_, p_221910_, p_221911_); +- if (p_221911_ && EnchantmentHelper.getItemEnchantmentLevel(Enchantments.SILK_TOUCH, p_221910_) == 0) { +- int i = 1 + p_221908_.random.nextInt(5); +- this.popExperience(p_221908_, p_221909_, i); - } + } + @Override + public int getExpDrop(BlockState state, net.minecraft.world.level.LevelReader world, RandomSource randomSource, BlockPos pos, int fortune, int silktouch) { -+ return silktouch == 0 ? 1 + randomSource.m_188503_(5) : 0; ++ return silktouch == 0 ? 1 + randomSource.nextInt(5) : 0; } - public void m_214162_(BlockState p_221913_, Level p_221914_, BlockPos p_221915_, RandomSource p_221916_) { + public void animateTick(BlockState p_221913_, Level p_221914_, BlockPos p_221915_, RandomSource p_221916_) { diff --git a/patches/minecraft/net/minecraft/world/level/block/RedStoneWireBlock.java.patch b/patches/minecraft/net/minecraft/world/level/block/RedStoneWireBlock.java.patch index 6bc8825261..aa42fb45fa 100644 --- a/patches/minecraft/net/minecraft/world/level/block/RedStoneWireBlock.java.patch +++ b/patches/minecraft/net/minecraft/world/level/block/RedStoneWireBlock.java.patch @@ -1,27 +1,27 @@ --- a/net/minecraft/world/level/block/RedStoneWireBlock.java +++ b/net/minecraft/world/level/block/RedStoneWireBlock.java @@ -196,7 +_,7 @@ - BlockState blockstate = p_55523_.m_8055_(blockpos); + BlockState blockstate = p_55523_.getBlockState(blockpos); if (p_55526_) { - boolean flag = blockstate.m_60734_() instanceof TrapDoorBlock || this.m_55612_(p_55523_, blockpos, blockstate); -- if (flag && m_55640_(p_55523_.m_8055_(blockpos.m_7494_()))) { -+ if (flag && p_55523_.m_8055_(blockpos.m_7494_()).canRedstoneConnectTo(p_55523_, blockpos.m_7494_(), null)) { - if (blockstate.m_60783_(p_55523_, blockpos, p_55525_.m_122424_())) { + boolean flag = blockstate.getBlock() instanceof TrapDoorBlock || this.canSurviveOn(p_55523_, blockpos, blockstate); +- if (flag && shouldConnectTo(p_55523_.getBlockState(blockpos.above()))) { ++ if (flag && p_55523_.getBlockState(blockpos.above()).canRedstoneConnectTo(p_55523_, blockpos.above(), null)) { + if (blockstate.isFaceSturdy(p_55523_, blockpos, p_55525_.getOpposite())) { return RedstoneSide.UP; } @@ -205,7 +_,14 @@ } } -- return !m_55594_(blockstate, p_55525_) && (blockstate.m_60796_(p_55523_, blockpos) || !m_55640_(p_55523_.m_8055_(blockpos.m_7495_()))) ? RedstoneSide.NONE : RedstoneSide.SIDE; +- return !shouldConnectTo(blockstate, p_55525_) && (blockstate.isRedstoneConductor(p_55523_, blockpos) || !shouldConnectTo(p_55523_.getBlockState(blockpos.below()))) ? RedstoneSide.NONE : RedstoneSide.SIDE; + if (blockstate.canRedstoneConnectTo(p_55523_, blockpos, p_55525_)) { + return RedstoneSide.SIDE; -+ } else if (blockstate.m_60796_(p_55523_, blockpos)) { ++ } else if (blockstate.isRedstoneConductor(p_55523_, blockpos)) { + return RedstoneSide.NONE; + } else { -+ BlockPos blockPosBelow = blockpos.m_7495_(); -+ return p_55523_.m_8055_(blockPosBelow).canRedstoneConnectTo(p_55523_, blockPosBelow, null) ? RedstoneSide.SIDE : RedstoneSide.NONE; ++ BlockPos blockPosBelow = blockpos.below(); ++ return p_55523_.getBlockState(blockPosBelow).canRedstoneConnectTo(p_55523_, blockPosBelow, null) ? RedstoneSide.SIDE : RedstoneSide.NONE; + } } - public boolean m_7898_(BlockState p_55585_, LevelReader p_55586_, BlockPos p_55587_) { + public boolean canSurvive(BlockState p_55585_, LevelReader p_55586_, BlockPos p_55587_) { diff --git a/patches/minecraft/net/minecraft/world/level/block/SaplingBlock.java.patch b/patches/minecraft/net/minecraft/world/level/block/SaplingBlock.java.patch index 2fba62fb7a..3b9f6227f8 100644 --- a/patches/minecraft/net/minecraft/world/level/block/SaplingBlock.java.patch +++ b/patches/minecraft/net/minecraft/world/level/block/SaplingBlock.java.patch @@ -3,8 +3,8 @@ @@ -32,6 +_,7 @@ } - public void m_213898_(BlockState p_222011_, ServerLevel p_222012_, BlockPos p_222013_, RandomSource p_222014_) { + public void randomTick(BlockState p_222011_, ServerLevel p_222012_, BlockPos p_222013_, RandomSource p_222014_) { + if (!p_222012_.isAreaLoaded(p_222013_, 1)) return; // Forge: prevent loading unloaded chunks when checking neighbor's light - if (p_222012_.m_46803_(p_222013_.m_7494_()) >= 9 && p_222014_.m_188503_(7) == 0) { - this.m_222000_(p_222012_, p_222013_, p_222011_, p_222014_); + if (p_222012_.getMaxLocalRawBrightness(p_222013_.above()) >= 9 && p_222014_.nextInt(7) == 0) { + this.advanceTree(p_222012_, p_222013_, p_222011_, p_222014_); } diff --git a/patches/minecraft/net/minecraft/world/level/block/SculkCatalystBlock.java.patch b/patches/minecraft/net/minecraft/world/level/block/SculkCatalystBlock.java.patch index e5ee878daa..9148c57d9e 100644 --- a/patches/minecraft/net/minecraft/world/level/block/SculkCatalystBlock.java.patch +++ b/patches/minecraft/net/minecraft/world/level/block/SculkCatalystBlock.java.patch @@ -2,10 +2,10 @@ +++ b/net/minecraft/world/level/block/SculkCatalystBlock.java @@ -54,9 +_,11 @@ - public void m_213646_(BlockState p_222109_, ServerLevel p_222110_, BlockPos p_222111_, ItemStack p_222112_, boolean p_222113_) { - super.m_213646_(p_222109_, p_222110_, p_222111_, p_222112_, p_222113_); + public void spawnAfterBreak(BlockState p_222109_, ServerLevel p_222110_, BlockPos p_222111_, ItemStack p_222112_, boolean p_222113_) { + super.spawnAfterBreak(p_222109_, p_222110_, p_222111_, p_222112_, p_222113_); - if (p_222113_) { -- this.m_220822_(p_222110_, p_222111_, p_222112_, this.f_222087_); +- this.tryDropExperience(p_222110_, p_222111_, p_222112_, this.xpRange); - } - + @@ -13,6 +13,6 @@ + + @Override + public int getExpDrop(BlockState state, net.minecraft.world.level.LevelReader level, RandomSource randomSource, BlockPos pos, int fortuneLevel, int silkTouchLevel) { -+ return silkTouchLevel == 0 ? this.f_222087_.m_214085_(randomSource) : 0; ++ return silkTouchLevel == 0 ? this.xpRange.sample(randomSource) : 0; } } diff --git a/patches/minecraft/net/minecraft/world/level/block/SculkSensorBlock.java.patch b/patches/minecraft/net/minecraft/world/level/block/SculkSensorBlock.java.patch index 6bcb87d479..51e919c695 100644 --- a/patches/minecraft/net/minecraft/world/level/block/SculkSensorBlock.java.patch +++ b/patches/minecraft/net/minecraft/world/level/block/SculkSensorBlock.java.patch @@ -2,10 +2,10 @@ +++ b/net/minecraft/world/level/block/SculkSensorBlock.java @@ -252,9 +_,11 @@ - public void m_213646_(BlockState p_222142_, ServerLevel p_222143_, BlockPos p_222144_, ItemStack p_222145_, boolean p_222146_) { - super.m_213646_(p_222142_, p_222143_, p_222144_, p_222145_, p_222146_); + public void spawnAfterBreak(BlockState p_222142_, ServerLevel p_222143_, BlockPos p_222144_, ItemStack p_222145_, boolean p_222146_) { + super.spawnAfterBreak(p_222142_, p_222143_, p_222144_, p_222145_, p_222146_); - if (p_222146_) { -- this.m_220822_(p_222143_, p_222144_, p_222145_, ConstantInt.m_146483_(5)); +- this.tryDropExperience(p_222143_, p_222144_, p_222145_, ConstantInt.of(5)); - } - + diff --git a/patches/minecraft/net/minecraft/world/level/block/SculkShriekerBlock.java.patch b/patches/minecraft/net/minecraft/world/level/block/SculkShriekerBlock.java.patch index acd3b6ab2f..0a5347144a 100644 --- a/patches/minecraft/net/minecraft/world/level/block/SculkShriekerBlock.java.patch +++ b/patches/minecraft/net/minecraft/world/level/block/SculkShriekerBlock.java.patch @@ -2,10 +2,10 @@ +++ b/net/minecraft/world/level/block/SculkShriekerBlock.java @@ -121,10 +_,12 @@ - public void m_213646_(BlockState p_222192_, ServerLevel p_222193_, BlockPos p_222194_, ItemStack p_222195_, boolean p_222196_) { - super.m_213646_(p_222192_, p_222193_, p_222194_, p_222195_, p_222196_); + public void spawnAfterBreak(BlockState p_222192_, ServerLevel p_222193_, BlockPos p_222194_, ItemStack p_222195_, boolean p_222196_) { + super.spawnAfterBreak(p_222192_, p_222193_, p_222194_, p_222195_, p_222196_); - if (p_222196_) { -- this.m_220822_(p_222193_, p_222194_, p_222195_, ConstantInt.m_146483_(5)); +- this.tryDropExperience(p_222193_, p_222194_, p_222195_, ConstantInt.of(5)); - } - + diff --git a/patches/minecraft/net/minecraft/world/level/block/SeagrassBlock.java.patch b/patches/minecraft/net/minecraft/world/level/block/SeagrassBlock.java.patch index 9cd3ffade5..3961b88d01 100644 --- a/patches/minecraft/net/minecraft/world/level/block/SeagrassBlock.java.patch +++ b/patches/minecraft/net/minecraft/world/level/block/SeagrassBlock.java.patch @@ -6,6 +6,6 @@ -public class SeagrassBlock extends BushBlock implements BonemealableBlock, LiquidBlockContainer { +public class SeagrassBlock extends BushBlock implements BonemealableBlock, LiquidBlockContainer, net.minecraftforge.common.IForgeShearable { - protected static final float f_154492_ = 6.0F; - protected static final VoxelShape f_154493_ = Block.m_49796_(2.0D, 0.0D, 2.0D, 14.0D, 12.0D, 14.0D); + protected static final float AABB_OFFSET = 6.0F; + protected static final VoxelShape SHAPE = Block.box(2.0D, 0.0D, 2.0D, 14.0D, 12.0D, 14.0D); diff --git a/patches/minecraft/net/minecraft/world/level/block/SoundType.java.patch b/patches/minecraft/net/minecraft/world/level/block/SoundType.java.patch index 0ed166c6b6..d4fae45a72 100644 --- a/patches/minecraft/net/minecraft/world/level/block/SoundType.java.patch +++ b/patches/minecraft/net/minecraft/world/level/block/SoundType.java.patch @@ -1,10 +1,10 @@ --- a/net/minecraft/world/level/block/SoundType.java +++ b/net/minecraft/world/level/block/SoundType.java @@ -117,6 +_,7 @@ - private final SoundEvent f_56737_; - private final SoundEvent f_56738_; + private final SoundEvent hitSound; + private final SoundEvent fallSound; + @Deprecated // Forge: Use {@link net.minecraftforge.common.util.ForgeSoundType} instead for suppliers public SoundType(float p_56766_, float p_56767_, SoundEvent p_56768_, SoundEvent p_56769_, SoundEvent p_56770_, SoundEvent p_56771_, SoundEvent p_56772_) { - this.f_56731_ = p_56766_; - this.f_56732_ = p_56767_; + this.volume = p_56766_; + this.pitch = p_56767_; diff --git a/patches/minecraft/net/minecraft/world/level/block/SpawnerBlock.java.patch b/patches/minecraft/net/minecraft/world/level/block/SpawnerBlock.java.patch index a4e174b4c1..1889161870 100644 --- a/patches/minecraft/net/minecraft/world/level/block/SpawnerBlock.java.patch +++ b/patches/minecraft/net/minecraft/world/level/block/SpawnerBlock.java.patch @@ -2,11 +2,11 @@ +++ b/net/minecraft/world/level/block/SpawnerBlock.java @@ -39,11 +_,12 @@ - public void m_213646_(BlockState p_222477_, ServerLevel p_222478_, BlockPos p_222479_, ItemStack p_222480_, boolean p_222481_) { - super.m_213646_(p_222477_, p_222478_, p_222479_, p_222480_, p_222481_); + public void spawnAfterBreak(BlockState p_222477_, ServerLevel p_222478_, BlockPos p_222479_, ItemStack p_222480_, boolean p_222481_) { + super.spawnAfterBreak(p_222477_, p_222478_, p_222479_, p_222480_, p_222481_); - if (p_222481_) { -- int i = 15 + p_222478_.f_46441_.m_188503_(15) + p_222478_.f_46441_.m_188503_(15); -- this.m_49805_(p_222478_, p_222479_, i); +- int i = 15 + p_222478_.random.nextInt(15) + p_222478_.random.nextInt(15); +- this.popExperience(p_222478_, p_222479_, i); - } - + @@ -14,7 +14,7 @@ + + @Override + public int getExpDrop(BlockState state, net.minecraft.world.level.LevelReader world, net.minecraft.util.RandomSource randomSource, BlockPos pos, int fortune, int silktouch) { -+ return 15 + randomSource.m_188503_(15) + randomSource.m_188503_(15); ++ return 15 + randomSource.nextInt(15) + randomSource.nextInt(15); } - public RenderShape m_7514_(BlockState p_56794_) { + public RenderShape getRenderShape(BlockState p_56794_) { diff --git a/patches/minecraft/net/minecraft/world/level/block/SpongeBlock.java.patch b/patches/minecraft/net/minecraft/world/level/block/SpongeBlock.java.patch index e08d88897f..70bd17368a 100644 --- a/patches/minecraft/net/minecraft/world/level/block/SpongeBlock.java.patch +++ b/patches/minecraft/net/minecraft/world/level/block/SpongeBlock.java.patch @@ -3,17 +3,17 @@ @@ -41,6 +_,7 @@ } - private boolean m_56807_(Level p_56808_, BlockPos p_56809_) { -+ BlockState spongeState = p_56808_.m_8055_(p_56809_); - return BlockPos.m_276833_(p_56809_, 6, 65, (p_277519_, p_277492_) -> { - for(Direction direction : f_276425_) { - p_277492_.accept(p_277519_.m_121945_(direction)); + private boolean removeWaterBreadthFirstSearch(Level p_56808_, BlockPos p_56809_) { ++ BlockState spongeState = p_56808_.getBlockState(p_56809_); + return BlockPos.breadthFirstTraversal(p_56809_, 6, 65, (p_277519_, p_277492_) -> { + for(Direction direction : ALL_DIRECTIONS) { + p_277492_.accept(p_277519_.relative(direction)); @@ -52,7 +_,7 @@ } else { - BlockState blockstate = p_56808_.m_8055_(p_296944_); - FluidState fluidstate = p_56808_.m_6425_(p_296944_); -- if (!fluidstate.m_205070_(FluidTags.f_13131_)) { + BlockState blockstate = p_56808_.getBlockState(p_296944_); + FluidState fluidstate = p_56808_.getFluidState(p_296944_); +- if (!fluidstate.is(FluidTags.WATER)) { + if (!spongeState.canBeHydrated(p_56808_, p_56809_, fluidstate, p_296944_)) { return false; } else { - Block block = blockstate.m_60734_(); + Block block = blockstate.getBlock(); diff --git a/patches/minecraft/net/minecraft/world/level/block/SpreadingSnowyDirtBlock.java.patch b/patches/minecraft/net/minecraft/world/level/block/SpreadingSnowyDirtBlock.java.patch index 249cd9263b..7499c06d08 100644 --- a/patches/minecraft/net/minecraft/world/level/block/SpreadingSnowyDirtBlock.java.patch +++ b/patches/minecraft/net/minecraft/world/level/block/SpreadingSnowyDirtBlock.java.patch @@ -2,12 +2,12 @@ +++ b/net/minecraft/world/level/block/SpreadingSnowyDirtBlock.java @@ -35,8 +_,10 @@ - public void m_213898_(BlockState p_222508_, ServerLevel p_222509_, BlockPos p_222510_, RandomSource p_222511_) { - if (!m_56823_(p_222508_, p_222509_, p_222510_)) { + public void randomTick(BlockState p_222508_, ServerLevel p_222509_, BlockPos p_222510_, RandomSource p_222511_) { + if (!canBeGrass(p_222508_, p_222509_, p_222510_)) { + if (!p_222509_.isAreaLoaded(p_222510_, 1)) return; // Forge: prevent loading unloaded chunks when checking neighbor's light and spreading - p_222509_.m_46597_(p_222510_, Blocks.f_50493_.m_49966_()); + p_222509_.setBlockAndUpdate(p_222510_, Blocks.DIRT.defaultBlockState()); } else { + if (!p_222509_.isAreaLoaded(p_222510_, 3)) return; // Forge: prevent loading unloaded chunks when checking neighbor's light and spreading - if (p_222509_.m_46803_(p_222510_.m_7494_()) >= 9) { - BlockState blockstate = this.m_49966_(); + if (p_222509_.getMaxLocalRawBrightness(p_222510_.above()) >= 9) { + BlockState blockstate = this.defaultBlockState(); diff --git a/patches/minecraft/net/minecraft/world/level/block/StairBlock.java.patch b/patches/minecraft/net/minecraft/world/level/block/StairBlock.java.patch index 637f99b48d..438df5fcfe 100644 --- a/patches/minecraft/net/minecraft/world/level/block/StairBlock.java.patch +++ b/patches/minecraft/net/minecraft/world/level/block/StairBlock.java.patch @@ -7,30 +7,30 @@ + @Deprecated // Forge: Use the other constructor that takes a Supplier public StairBlock(BlockState p_56862_, BlockBehaviour.Properties p_56863_) { super(p_56863_); - this.m_49959_(this.f_49792_.m_61090_().m_61124_(f_56841_, Direction.NORTH).m_61124_(f_56842_, Half.BOTTOM).m_61124_(f_56843_, StairsShape.STRAIGHT).m_61124_(f_56844_, Boolean.valueOf(false))); - this.f_56858_ = p_56862_.m_60734_(); - this.f_56859_ = p_56862_; + this.registerDefaultState(this.stateDefinition.any().setValue(FACING, Direction.NORTH).setValue(HALF, Half.BOTTOM).setValue(SHAPE, StairsShape.STRAIGHT).setValue(WATERLOGGED, Boolean.valueOf(false))); + this.base = p_56862_.getBlock(); + this.baseState = p_56862_; + this.stateSupplier = () -> p_56862_; + } + + public StairBlock(java.util.function.Supplier state, BlockBehaviour.Properties properties) { + super(properties); -+ this.m_49959_(this.f_49792_.m_61090_().m_61124_(f_56841_, Direction.NORTH).m_61124_(f_56842_, Half.BOTTOM).m_61124_(f_56843_, StairsShape.STRAIGHT).m_61124_(f_56844_, Boolean.valueOf(false))); -+ this.f_56858_ = Blocks.f_50016_; // These are unused, fields are redirected -+ this.f_56859_ = Blocks.f_50016_.m_49966_(); ++ this.registerDefaultState(this.stateDefinition.any().setValue(FACING, Direction.NORTH).setValue(HALF, Half.BOTTOM).setValue(SHAPE, StairsShape.STRAIGHT).setValue(WATERLOGGED, Boolean.valueOf(false))); ++ this.base = Blocks.AIR; // These are unused, fields are redirected ++ this.baseState = Blocks.AIR.defaultBlockState(); + this.stateSupplier = state; } - public boolean m_7923_(BlockState p_56967_) { + public boolean useShapeForLightOcclusion(BlockState p_56967_) { @@ -262,4 +_,14 @@ - public boolean m_7357_(BlockState p_56891_, BlockGetter p_56892_, BlockPos p_56893_, PathComputationType p_56894_) { + public boolean isPathfindable(BlockState p_56891_, BlockGetter p_56892_, BlockPos p_56893_, PathComputationType p_56894_) { return false; } + + // Forge Start + private final java.util.function.Supplier stateSupplier; + private Block getModelBlock() { -+ return getModelState().m_60734_(); ++ return getModelState().getBlock(); + } + private BlockState getModelState() { + return stateSupplier.get(); diff --git a/patches/minecraft/net/minecraft/world/level/block/StemBlock.java.patch b/patches/minecraft/net/minecraft/world/level/block/StemBlock.java.patch index 5bf3302785..259285b65f 100644 --- a/patches/minecraft/net/minecraft/world/level/block/StemBlock.java.patch +++ b/patches/minecraft/net/minecraft/world/level/block/StemBlock.java.patch @@ -3,25 +3,25 @@ @@ -44,22 +_,23 @@ } - public void m_213898_(BlockState p_222538_, ServerLevel p_222539_, BlockPos p_222540_, RandomSource p_222541_) { + public void randomTick(BlockState p_222538_, ServerLevel p_222539_, BlockPos p_222540_, RandomSource p_222541_) { + if (!p_222539_.isAreaLoaded(p_222540_, 1)) return; // Forge: prevent loading unloaded chunks when checking neighbor's light - if (p_222539_.m_45524_(p_222540_, 0) >= 9) { - float f = CropBlock.m_52272_(this, p_222539_, p_222540_); -- if (p_222541_.m_188503_((int)(25.0F / f) + 1) == 0) { -+ if (net.minecraftforge.common.ForgeHooks.onCropsGrowPre(p_222539_, p_222540_, p_222538_, p_222541_.m_188503_((int)(25.0F / f) + 1) == 0)) { - int i = p_222538_.m_61143_(f_57013_); + if (p_222539_.getRawBrightness(p_222540_, 0) >= 9) { + float f = CropBlock.getGrowthSpeed(this, p_222539_, p_222540_); +- if (p_222541_.nextInt((int)(25.0F / f) + 1) == 0) { ++ if (net.minecraftforge.common.ForgeHooks.onCropsGrowPre(p_222539_, p_222540_, p_222538_, p_222541_.nextInt((int)(25.0F / f) + 1) == 0)) { + int i = p_222538_.getValue(AGE); if (i < 7) { -- p_222538_ = p_222538_.m_61124_(f_57013_, Integer.valueOf(i + 1)); -- p_222539_.m_7731_(p_222540_, p_222538_, 2); -+ p_222539_.m_7731_(p_222540_, p_222538_.m_61124_(f_57013_, Integer.valueOf(i + 1)), 2); +- p_222538_ = p_222538_.setValue(AGE, Integer.valueOf(i + 1)); +- p_222539_.setBlock(p_222540_, p_222538_, 2); ++ p_222539_.setBlock(p_222540_, p_222538_.setValue(AGE, Integer.valueOf(i + 1)), 2); } else { - Direction direction = Direction.Plane.HORIZONTAL.m_235690_(p_222541_); - BlockPos blockpos = p_222540_.m_121945_(direction); - BlockState blockstate = p_222539_.m_8055_(blockpos.m_7495_()); -- if (p_222539_.m_8055_(blockpos).m_60795_() && (blockstate.m_60713_(Blocks.f_50093_) || blockstate.m_204336_(BlockTags.f_144274_))) { -+ if (p_222539_.m_46859_(blockpos) && (blockstate.canSustainPlant(p_222539_, blockpos.m_7495_(), Direction.UP, this.f_57015_) || blockstate.m_60713_(Blocks.f_50093_) || blockstate.m_204336_(BlockTags.f_144274_))) { - p_222539_.m_46597_(blockpos, this.f_57015_.m_49966_()); - p_222539_.m_46597_(p_222540_, this.f_57015_.m_7810_().m_49966_().m_61124_(HorizontalDirectionalBlock.f_54117_, direction)); + Direction direction = Direction.Plane.HORIZONTAL.getRandomDirection(p_222541_); + BlockPos blockpos = p_222540_.relative(direction); + BlockState blockstate = p_222539_.getBlockState(blockpos.below()); +- if (p_222539_.getBlockState(blockpos).isAir() && (blockstate.is(Blocks.FARMLAND) || blockstate.is(BlockTags.DIRT))) { ++ if (p_222539_.isEmptyBlock(blockpos) && (blockstate.canSustainPlant(p_222539_, blockpos.below(), Direction.UP, this.fruit) || blockstate.is(Blocks.FARMLAND) || blockstate.is(BlockTags.DIRT))) { + p_222539_.setBlockAndUpdate(blockpos, this.fruit.defaultBlockState()); + p_222539_.setBlockAndUpdate(p_222540_, this.fruit.getAttachedStem().defaultBlockState().setValue(HorizontalDirectionalBlock.FACING, direction)); } } + net.minecraftforge.common.ForgeHooks.onCropsGrowPost(p_222539_, p_222540_, p_222538_); @@ -30,8 +30,8 @@ } @@ -93,5 +_,11 @@ - public StemGrownBlock m_57056_() { - return this.f_57015_; + public StemGrownBlock getFruit() { + return this.fruit; + } + + //FORGE START diff --git a/patches/minecraft/net/minecraft/world/level/block/StemGrownBlock.java.patch b/patches/minecraft/net/minecraft/world/level/block/StemGrownBlock.java.patch index 7083d6aa08..00c9593bc9 100644 --- a/patches/minecraft/net/minecraft/world/level/block/StemGrownBlock.java.patch +++ b/patches/minecraft/net/minecraft/world/level/block/StemGrownBlock.java.patch @@ -10,15 +10,15 @@ super(p_57058_); } @@ -10,4 +_,12 @@ - public abstract StemBlock m_7161_(); + public abstract StemBlock getStem(); - public abstract AttachedStemBlock m_7810_(); + public abstract AttachedStemBlock getAttachedStem(); + + //FORGE START + @Override + public net.minecraft.world.level.block.state.BlockState getPlant(net.minecraft.world.level.BlockGetter world, net.minecraft.core.BlockPos pos) { -+ net.minecraft.world.level.block.state.BlockState state = world.m_8055_(pos); -+ if (state.m_60734_() != this) return m_49966_(); ++ net.minecraft.world.level.block.state.BlockState state = world.getBlockState(pos); ++ if (state.getBlock() != this) return defaultBlockState(); + return state; + } } diff --git a/patches/minecraft/net/minecraft/world/level/block/SugarCaneBlock.java.patch b/patches/minecraft/net/minecraft/world/level/block/SugarCaneBlock.java.patch index ae421e356d..2715ce690c 100644 --- a/patches/minecraft/net/minecraft/world/level/block/SugarCaneBlock.java.patch +++ b/patches/minecraft/net/minecraft/world/level/block/SugarCaneBlock.java.patch @@ -6,20 +6,20 @@ -public class SugarCaneBlock extends Block { +public class SugarCaneBlock extends Block implements net.minecraftforge.common.IPlantable { - public static final IntegerProperty f_57164_ = BlockStateProperties.f_61410_; - protected static final float f_154735_ = 6.0F; - protected static final VoxelShape f_57165_ = Block.m_49796_(2.0D, 0.0D, 2.0D, 14.0D, 16.0D, 14.0D); + public static final IntegerProperty AGE = BlockStateProperties.AGE_15; + protected static final float AABB_OFFSET = 6.0F; + protected static final VoxelShape SHAPE = Block.box(2.0D, 0.0D, 2.0D, 14.0D, 16.0D, 14.0D); @@ -47,12 +_,15 @@ if (i < 3) { - int j = p_222548_.m_61143_(f_57164_); + int j = p_222548_.getValue(AGE); + if (net.minecraftforge.common.ForgeHooks.onCropsGrowPre(p_222549_, p_222550_, p_222548_, true)) { if (j == 15) { - p_222549_.m_46597_(p_222550_.m_7494_(), this.m_49966_()); -+ net.minecraftforge.common.ForgeHooks.onCropsGrowPost(p_222549_, p_222550_.m_7494_(), this.m_49966_()); - p_222549_.m_7731_(p_222550_, p_222548_.m_61124_(f_57164_, Integer.valueOf(0)), 4); + p_222549_.setBlockAndUpdate(p_222550_.above(), this.defaultBlockState()); ++ net.minecraftforge.common.ForgeHooks.onCropsGrowPost(p_222549_, p_222550_.above(), this.defaultBlockState()); + p_222549_.setBlock(p_222550_, p_222548_.setValue(AGE, Integer.valueOf(0)), 4); } else { - p_222549_.m_7731_(p_222550_, p_222548_.m_61124_(f_57164_, Integer.valueOf(j + 1)), 4); + p_222549_.setBlock(p_222550_, p_222548_.setValue(AGE, Integer.valueOf(j + 1)), 4); } + } } @@ -28,25 +28,25 @@ @@ -67,6 +_,8 @@ } - public boolean m_7898_(BlockState p_57175_, LevelReader p_57176_, BlockPos p_57177_) { -+ BlockState soil = p_57176_.m_8055_(p_57177_.m_7495_()); -+ if (soil.canSustainPlant(p_57176_, p_57177_.m_7495_(), Direction.UP, this)) return true; - BlockState blockstate = p_57176_.m_8055_(p_57177_.m_7495_()); - if (blockstate.m_60713_(this)) { + public boolean canSurvive(BlockState p_57175_, LevelReader p_57176_, BlockPos p_57177_) { ++ BlockState soil = p_57176_.getBlockState(p_57177_.below()); ++ if (soil.canSustainPlant(p_57176_, p_57177_.below(), Direction.UP, this)) return true; + BlockState blockstate = p_57176_.getBlockState(p_57177_.below()); + if (blockstate.is(this)) { return true; @@ -77,7 +_,7 @@ for(Direction direction : Direction.Plane.HORIZONTAL) { - BlockState blockstate1 = p_57176_.m_8055_(blockpos.m_121945_(direction)); - FluidState fluidstate = p_57176_.m_6425_(blockpos.m_121945_(direction)); -- if (fluidstate.m_205070_(FluidTags.f_13131_) || blockstate1.m_60713_(Blocks.f_50449_)) { -+ if (p_57175_.canBeHydrated(p_57176_, p_57177_, fluidstate, blockpos.m_121945_(direction)) || blockstate1.m_60713_(Blocks.f_50449_)) { + BlockState blockstate1 = p_57176_.getBlockState(blockpos.relative(direction)); + FluidState fluidstate = p_57176_.getFluidState(blockpos.relative(direction)); +- if (fluidstate.is(FluidTags.WATER) || blockstate1.is(Blocks.FROSTED_ICE)) { ++ if (p_57175_.canBeHydrated(p_57176_, p_57177_, fluidstate, blockpos.relative(direction)) || blockstate1.is(Blocks.FROSTED_ICE)) { return true; } } @@ -89,5 +_,15 @@ - protected void m_7926_(StateDefinition.Builder p_57186_) { - p_57186_.m_61104_(f_57164_); + protected void createBlockStateDefinition(StateDefinition.Builder p_57186_) { + p_57186_.add(AGE); + } + + @Override @@ -56,6 +56,6 @@ + + @Override + public BlockState getPlant(BlockGetter world, BlockPos pos) { -+ return m_49966_(); ++ return defaultBlockState(); } } diff --git a/patches/minecraft/net/minecraft/world/level/block/SweetBerryBushBlock.java.patch b/patches/minecraft/net/minecraft/world/level/block/SweetBerryBushBlock.java.patch index ad740156f5..1321fe99bf 100644 --- a/patches/minecraft/net/minecraft/world/level/block/SweetBerryBushBlock.java.patch +++ b/patches/minecraft/net/minecraft/world/level/block/SweetBerryBushBlock.java.patch @@ -2,13 +2,13 @@ +++ b/net/minecraft/world/level/block/SweetBerryBushBlock.java @@ -57,10 +_,11 @@ - public void m_213898_(BlockState p_222563_, ServerLevel p_222564_, BlockPos p_222565_, RandomSource p_222566_) { - int i = p_222563_.m_61143_(f_57244_); -- if (i < 3 && p_222566_.m_188503_(5) == 0 && p_222564_.m_45524_(p_222565_.m_7494_(), 0) >= 9) { -+ if (i < 3 && p_222564_.m_45524_(p_222565_.m_7494_(), 0) >= 9 && net.minecraftforge.common.ForgeHooks.onCropsGrowPre(p_222564_, p_222565_, p_222563_, p_222566_.m_188503_(5) == 0)) { - BlockState blockstate = p_222563_.m_61124_(f_57244_, Integer.valueOf(i + 1)); - p_222564_.m_7731_(p_222565_, blockstate, 2); - p_222564_.m_220407_(GameEvent.f_157792_, p_222565_, GameEvent.Context.m_223722_(blockstate)); + public void randomTick(BlockState p_222563_, ServerLevel p_222564_, BlockPos p_222565_, RandomSource p_222566_) { + int i = p_222563_.getValue(AGE); +- if (i < 3 && p_222566_.nextInt(5) == 0 && p_222564_.getRawBrightness(p_222565_.above(), 0) >= 9) { ++ if (i < 3 && p_222564_.getRawBrightness(p_222565_.above(), 0) >= 9 && net.minecraftforge.common.ForgeHooks.onCropsGrowPre(p_222564_, p_222565_, p_222563_, p_222566_.nextInt(5) == 0)) { + BlockState blockstate = p_222563_.setValue(AGE, Integer.valueOf(i + 1)); + p_222564_.setBlock(p_222565_, blockstate, 2); + p_222564_.gameEvent(GameEvent.BLOCK_CHANGE, p_222565_, GameEvent.Context.of(blockstate)); + net.minecraftforge.common.ForgeHooks.onCropsGrowPost(p_222564_, p_222565_, p_222563_); } diff --git a/patches/minecraft/net/minecraft/world/level/block/TallGrassBlock.java.patch b/patches/minecraft/net/minecraft/world/level/block/TallGrassBlock.java.patch index d6b0a64d28..26f3798641 100644 --- a/patches/minecraft/net/minecraft/world/level/block/TallGrassBlock.java.patch +++ b/patches/minecraft/net/minecraft/world/level/block/TallGrassBlock.java.patch @@ -6,6 +6,6 @@ -public class TallGrassBlock extends BushBlock implements BonemealableBlock { +public class TallGrassBlock extends BushBlock implements BonemealableBlock, net.minecraftforge.common.IForgeShearable { - protected static final float f_154739_ = 6.0F; - protected static final VoxelShape f_57315_ = Block.m_49796_(2.0D, 0.0D, 2.0D, 14.0D, 13.0D, 14.0D); + protected static final float AABB_OFFSET = 6.0F; + protected static final VoxelShape SHAPE = Block.box(2.0D, 0.0D, 2.0D, 14.0D, 13.0D, 14.0D); diff --git a/patches/minecraft/net/minecraft/world/level/block/TntBlock.java.patch b/patches/minecraft/net/minecraft/world/level/block/TntBlock.java.patch index 1df3953885..eda04c0630 100644 --- a/patches/minecraft/net/minecraft/world/level/block/TntBlock.java.patch +++ b/patches/minecraft/net/minecraft/world/level/block/TntBlock.java.patch @@ -1,67 +1,67 @@ --- a/net/minecraft/world/level/block/TntBlock.java +++ b/net/minecraft/world/level/block/TntBlock.java @@ -33,10 +_,14 @@ - this.m_49959_(this.m_49966_().m_61124_(f_57419_, Boolean.valueOf(false))); + this.registerDefaultState(this.defaultBlockState().setValue(UNSTABLE, Boolean.valueOf(false))); } + public void onCaughtFire(BlockState state, Level world, BlockPos pos, @Nullable net.minecraft.core.Direction face, @Nullable LivingEntity igniter) { -+ m_57436_(world, pos, igniter); ++ explode(world, pos, igniter); + } + - public void m_6807_(BlockState p_57466_, Level p_57467_, BlockPos p_57468_, BlockState p_57469_, boolean p_57470_) { - if (!p_57469_.m_60713_(p_57466_.m_60734_())) { - if (p_57467_.m_276867_(p_57468_)) { -- m_57433_(p_57467_, p_57468_); + public void onPlace(BlockState p_57466_, Level p_57467_, BlockPos p_57468_, BlockState p_57469_, boolean p_57470_) { + if (!p_57469_.is(p_57466_.getBlock())) { + if (p_57467_.hasNeighborSignal(p_57468_)) { +- explode(p_57467_, p_57468_); + onCaughtFire(p_57466_, p_57467_, p_57468_, null, null); - p_57467_.m_7471_(p_57468_, false); + p_57467_.removeBlock(p_57468_, false); } @@ -45,7 +_,7 @@ - public void m_6861_(BlockState p_57457_, Level p_57458_, BlockPos p_57459_, Block p_57460_, BlockPos p_57461_, boolean p_57462_) { - if (p_57458_.m_276867_(p_57459_)) { -- m_57433_(p_57458_, p_57459_); + public void neighborChanged(BlockState p_57457_, Level p_57458_, BlockPos p_57459_, Block p_57460_, BlockPos p_57461_, boolean p_57462_) { + if (p_57458_.hasNeighborSignal(p_57459_)) { +- explode(p_57458_, p_57459_); + onCaughtFire(p_57457_, p_57458_, p_57459_, null, null); - p_57458_.m_7471_(p_57459_, false); + p_57458_.removeBlock(p_57459_, false); } @@ -53,7 +_,7 @@ - public void m_5707_(Level p_57445_, BlockPos p_57446_, BlockState p_57447_, Player p_57448_) { - if (!p_57445_.m_5776_() && !p_57448_.m_7500_() && p_57447_.m_61143_(f_57419_)) { -- m_57433_(p_57445_, p_57446_); + public void playerWillDestroy(Level p_57445_, BlockPos p_57446_, BlockState p_57447_, Player p_57448_) { + if (!p_57445_.isClientSide() && !p_57448_.isCreative() && p_57447_.getValue(UNSTABLE)) { +- explode(p_57445_, p_57446_); + onCaughtFire(p_57447_, p_57445_, p_57446_, null, null); } - super.m_5707_(p_57445_, p_57446_, p_57447_, p_57448_); + super.playerWillDestroy(p_57445_, p_57446_, p_57447_, p_57448_); @@ -68,10 +_,12 @@ } } + @Deprecated //Forge: Prefer using IForgeBlock#catchFire - public static void m_57433_(Level p_57434_, BlockPos p_57435_) { - m_57436_(p_57434_, p_57435_, (LivingEntity)null); + public static void explode(Level p_57434_, BlockPos p_57435_) { + explode(p_57434_, p_57435_, (LivingEntity)null); } + @Deprecated //Forge: Prefer using IForgeBlock#catchFire - private static void m_57436_(Level p_57437_, BlockPos p_57438_, @Nullable LivingEntity p_57439_) { - if (!p_57437_.f_46443_) { - PrimedTnt primedtnt = new PrimedTnt(p_57437_, (double)p_57438_.m_123341_() + 0.5D, (double)p_57438_.m_123342_(), (double)p_57438_.m_123343_() + 0.5D, p_57439_); + private static void explode(Level p_57437_, BlockPos p_57438_, @Nullable LivingEntity p_57439_) { + if (!p_57437_.isClientSide) { + PrimedTnt primedtnt = new PrimedTnt(p_57437_, (double)p_57438_.getX() + 0.5D, (double)p_57438_.getY(), (double)p_57438_.getZ() + 0.5D, p_57439_); @@ -86,7 +_,7 @@ - if (!itemstack.m_150930_(Items.f_42409_) && !itemstack.m_150930_(Items.f_42613_)) { - return super.m_6227_(p_57450_, p_57451_, p_57452_, p_57453_, p_57454_, p_57455_); + if (!itemstack.is(Items.FLINT_AND_STEEL) && !itemstack.is(Items.FIRE_CHARGE)) { + return super.use(p_57450_, p_57451_, p_57452_, p_57453_, p_57454_, p_57455_); } else { -- m_57436_(p_57451_, p_57452_, p_57453_); -+ onCaughtFire(p_57450_, p_57451_, p_57452_, p_57455_.m_82434_(), p_57453_); - p_57451_.m_7731_(p_57452_, Blocks.f_50016_.m_49966_(), 11); - Item item = itemstack.m_41720_(); - if (!p_57453_.m_7500_()) { +- explode(p_57451_, p_57452_, p_57453_); ++ onCaughtFire(p_57450_, p_57451_, p_57452_, p_57455_.getDirection(), p_57453_); + p_57451_.setBlock(p_57452_, Blocks.AIR.defaultBlockState(), 11); + Item item = itemstack.getItem(); + if (!p_57453_.isCreative()) { @@ -109,7 +_,7 @@ - BlockPos blockpos = p_57431_.m_82425_(); - Entity entity = p_57432_.m_19749_(); - if (p_57432_.m_6060_() && p_57432_.m_142265_(p_57429_, blockpos)) { -- m_57436_(p_57429_, blockpos, entity instanceof LivingEntity ? (LivingEntity)entity : null); + BlockPos blockpos = p_57431_.getBlockPos(); + Entity entity = p_57432_.getOwner(); + if (p_57432_.isOnFire() && p_57432_.mayInteract(p_57429_, blockpos)) { +- explode(p_57429_, blockpos, entity instanceof LivingEntity ? (LivingEntity)entity : null); + onCaughtFire(p_57430_, p_57429_, blockpos, null, entity instanceof LivingEntity ? (LivingEntity)entity : null); - p_57429_.m_7471_(blockpos, false); + p_57429_.removeBlock(blockpos, false); } } diff --git a/patches/minecraft/net/minecraft/world/level/block/TrapDoorBlock.java.patch b/patches/minecraft/net/minecraft/world/level/block/TrapDoorBlock.java.patch index 71abc9598c..f88ac0a8d1 100644 --- a/patches/minecraft/net/minecraft/world/level/block/TrapDoorBlock.java.patch +++ b/patches/minecraft/net/minecraft/world/level/block/TrapDoorBlock.java.patch @@ -2,16 +2,16 @@ +++ b/net/minecraft/world/level/block/TrapDoorBlock.java @@ -148,4 +_,17 @@ - return super.m_7417_(p_57554_, p_57555_, p_57556_, p_57557_, p_57558_, p_57559_); + return super.updateShape(p_57554_, p_57555_, p_57556_, p_57557_, p_57558_, p_57559_); } + + //Forge Start + @Override + public boolean isLadder(BlockState state, net.minecraft.world.level.LevelReader world, BlockPos pos, net.minecraft.world.entity.LivingEntity entity) { -+ if (state.m_61143_(f_57514_)) { -+ BlockPos downPos = pos.m_7495_(); -+ BlockState down = world.m_8055_(downPos); -+ return down.m_60734_().makesOpenTrapdoorAboveClimbable(down, world, downPos, state); ++ if (state.getValue(OPEN)) { ++ BlockPos downPos = pos.below(); ++ BlockState down = world.getBlockState(downPos); ++ return down.getBlock().makesOpenTrapdoorAboveClimbable(down, world, downPos, state); + } + return false; + } diff --git a/patches/minecraft/net/minecraft/world/level/block/TripWireBlock.java.patch b/patches/minecraft/net/minecraft/world/level/block/TripWireBlock.java.patch index f7abce6664..c41378adf8 100644 --- a/patches/minecraft/net/minecraft/world/level/block/TripWireBlock.java.patch +++ b/patches/minecraft/net/minecraft/world/level/block/TripWireBlock.java.patch @@ -3,9 +3,9 @@ @@ -69,7 +_,7 @@ } - public void m_5707_(Level p_57615_, BlockPos p_57616_, BlockState p_57617_, Player p_57618_) { -- if (!p_57615_.f_46443_ && !p_57618_.m_21205_().m_41619_() && p_57618_.m_21205_().m_150930_(Items.f_42574_)) { -+ if (!p_57615_.f_46443_ && !p_57618_.m_21205_().m_41619_() && p_57618_.m_21205_().canPerformAction(net.minecraftforge.common.ToolActions.SHEARS_DISARM)) { - p_57615_.m_7731_(p_57616_, p_57617_.m_61124_(f_57592_, Boolean.valueOf(true)), 4); - p_57615_.m_142346_(p_57618_, GameEvent.f_157781_, p_57616_); + public void playerWillDestroy(Level p_57615_, BlockPos p_57616_, BlockState p_57617_, Player p_57618_) { +- if (!p_57615_.isClientSide && !p_57618_.getMainHandItem().isEmpty() && p_57618_.getMainHandItem().is(Items.SHEARS)) { ++ if (!p_57615_.isClientSide && !p_57618_.getMainHandItem().isEmpty() && p_57618_.getMainHandItem().canPerformAction(net.minecraftforge.common.ToolActions.SHEARS_DISARM)) { + p_57615_.setBlock(p_57616_, p_57617_.setValue(DISARMED, Boolean.valueOf(true)), 4); + p_57615_.gameEvent(p_57618_, GameEvent.SHEAR, p_57616_); } diff --git a/patches/minecraft/net/minecraft/world/level/block/TripWireHookBlock.java.patch b/patches/minecraft/net/minecraft/world/level/block/TripWireHookBlock.java.patch index 7af2894a6f..ba1f22ae23 100644 --- a/patches/minecraft/net/minecraft/world/level/block/TripWireHookBlock.java.patch +++ b/patches/minecraft/net/minecraft/world/level/block/TripWireHookBlock.java.patch @@ -1,12 +1,12 @@ --- a/net/minecraft/world/level/block/TripWireHookBlock.java +++ b/net/minecraft/world/level/block/TripWireHookBlock.java @@ -156,8 +_,8 @@ - BlockPos blockpos2 = p_57687_.m_5484_(direction, k); + BlockPos blockpos2 = p_57687_.relative(direction, k); BlockState blockstate2 = ablockstate[k]; if (blockstate2 != null) { -+ if (!p_57686_.m_8055_(blockpos2).m_60795_()) { // FORGE: fix MC-129055 - p_57686_.m_7731_(blockpos2, blockstate2.m_61124_(f_57669_, Boolean.valueOf(flag2)), 3); -- if (!p_57686_.m_8055_(blockpos2).m_60795_()) { ++ if (!p_57686_.getBlockState(blockpos2).isAir()) { // FORGE: fix MC-129055 + p_57686_.setBlock(blockpos2, blockstate2.setValue(ATTACHED, Boolean.valueOf(flag2)), 3); +- if (!p_57686_.getBlockState(blockpos2).isAir()) { } } } diff --git a/patches/minecraft/net/minecraft/world/level/block/TurtleEggBlock.java.patch b/patches/minecraft/net/minecraft/world/level/block/TurtleEggBlock.java.patch index 14edf51e5f..0eb9858899 100644 --- a/patches/minecraft/net/minecraft/world/level/block/TurtleEggBlock.java.patch +++ b/patches/minecraft/net/minecraft/world/level/block/TurtleEggBlock.java.patch @@ -4,7 +4,7 @@ if (!(p_57769_ instanceof LivingEntity)) { return false; } else { -- return p_57769_ instanceof Player || p_57768_.m_46469_().m_46207_(GameRules.f_46132_); +- return p_57769_ instanceof Player || p_57768_.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING); + return p_57769_ instanceof Player || net.minecraftforge.event.ForgeEventFactory.getMobGriefingEvent(p_57768_, p_57769_); } } else { diff --git a/patches/minecraft/net/minecraft/world/level/block/VineBlock.java.patch b/patches/minecraft/net/minecraft/world/level/block/VineBlock.java.patch index 95cce03229..bd82d9ea49 100644 --- a/patches/minecraft/net/minecraft/world/level/block/VineBlock.java.patch +++ b/patches/minecraft/net/minecraft/world/level/block/VineBlock.java.patch @@ -6,15 +6,15 @@ -public class VineBlock extends Block { +public class VineBlock extends Block implements net.minecraftforge.common.IForgeShearable { - public static final BooleanProperty f_57833_ = PipeBlock.f_55152_; - public static final BooleanProperty f_57834_ = PipeBlock.f_55148_; - public static final BooleanProperty f_57835_ = PipeBlock.f_55149_; + public static final BooleanProperty UP = PipeBlock.UP; + public static final BooleanProperty NORTH = PipeBlock.NORTH; + public static final BooleanProperty EAST = PipeBlock.EAST; @@ -158,7 +_,7 @@ - public void m_213898_(BlockState p_222655_, ServerLevel p_222656_, BlockPos p_222657_, RandomSource p_222658_) { - if (p_222656_.m_46469_().m_46207_(GameRules.f_268705_)) { -- if (p_222658_.m_188503_(4) == 0) { -+ if (p_222656_.f_46441_.m_188503_(4) == 0 && p_222656_.isAreaLoaded(p_222657_, 4)) { // Forge: check area to prevent loading unloaded chunks - Direction direction = Direction.m_235672_(p_222658_); - BlockPos blockpos = p_222657_.m_7494_(); - if (direction.m_122434_().m_122479_() && !p_222655_.m_61143_(m_57883_(direction))) { + public void randomTick(BlockState p_222655_, ServerLevel p_222656_, BlockPos p_222657_, RandomSource p_222658_) { + if (p_222656_.getGameRules().getBoolean(GameRules.RULE_DO_VINES_SPREAD)) { +- if (p_222658_.nextInt(4) == 0) { ++ if (p_222656_.random.nextInt(4) == 0 && p_222656_.isAreaLoaded(p_222657_, 4)) { // Forge: check area to prevent loading unloaded chunks + Direction direction = Direction.getRandom(p_222658_); + BlockPos blockpos = p_222657_.above(); + if (direction.getAxis().isHorizontal() && !p_222655_.getValue(getPropertyForFace(direction))) { diff --git a/patches/minecraft/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java.patch b/patches/minecraft/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java.patch index 099073b4a8..7de55fbd62 100644 --- a/patches/minecraft/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java.patch +++ b/patches/minecraft/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java.patch @@ -1,109 +1,109 @@ --- a/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java +++ b/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java @@ -59,6 +_,7 @@ - public static final int f_154987_ = 4; - public static final int f_154988_ = 200; - public static final int f_154989_ = 2; + public static final int NUM_DATA_VALUES = 4; + public static final int BURN_TIME_STANDARD = 200; + public static final int BURN_COOL_SPEED = 2; + private final RecipeType recipeType; - protected NonNullList f_58310_ = NonNullList.m_122780_(3, ItemStack.f_41583_); - int f_58316_; - int f_58317_; + protected NonNullList items = NonNullList.withSize(3, ItemStack.EMPTY); + int litTime; + int litDuration; @@ -107,8 +_,11 @@ protected AbstractFurnaceBlockEntity(BlockEntityType p_154991_, BlockPos p_154992_, BlockState p_154993_, RecipeType p_154994_) { super(p_154991_, p_154992_, p_154993_); - this.f_222691_ = RecipeManager.m_220267_((RecipeType)p_154994_); + this.quickCheck = RecipeManager.createCheck((RecipeType)p_154994_); + this.recipeType = p_154994_; } + /**@deprecated Forge: get burn times by calling ForgeHooks#getBurnTime(ItemStack)*/ + @Deprecated - public static Map m_58423_() { + public static Map getFuel() { Map map = Maps.newLinkedHashMap(); - m_58374_(map, Items.f_42448_, 20000); + add(map, Items.LAVA_BUCKET, 20000); @@ -205,9 +_,9 @@ - super.m_142466_(p_155025_); - this.f_58310_ = NonNullList.m_122780_(this.m_6643_(), ItemStack.f_41583_); - ContainerHelper.m_18980_(p_155025_, this.f_58310_); -- this.f_58316_ = p_155025_.m_128448_("BurnTime"); -- this.f_58318_ = p_155025_.m_128448_("CookTime"); -- this.f_58319_ = p_155025_.m_128448_("CookTimeTotal"); -+ this.f_58316_ = p_155025_.m_128451_("BurnTime"); -+ this.f_58318_ = p_155025_.m_128451_("CookTime"); -+ this.f_58319_ = p_155025_.m_128451_("CookTimeTotal"); - this.f_58317_ = this.m_7743_(this.f_58310_.get(1)); - CompoundTag compoundtag = p_155025_.m_128469_("RecipesUsed"); + super.load(p_155025_); + this.items = NonNullList.withSize(this.getContainerSize(), ItemStack.EMPTY); + ContainerHelper.loadAllItems(p_155025_, this.items); +- this.litTime = p_155025_.getShort("BurnTime"); +- this.cookingProgress = p_155025_.getShort("CookTime"); +- this.cookingTotalTime = p_155025_.getShort("CookTimeTotal"); ++ this.litTime = p_155025_.getInt("BurnTime"); ++ this.cookingProgress = p_155025_.getInt("CookTime"); ++ this.cookingTotalTime = p_155025_.getInt("CookTimeTotal"); + this.litDuration = this.getBurnDuration(this.items.get(1)); + CompoundTag compoundtag = p_155025_.getCompound("RecipesUsed"); @@ -219,9 +_,9 @@ - protected void m_183515_(CompoundTag p_187452_) { - super.m_183515_(p_187452_); -- p_187452_.m_128376_("BurnTime", (short)this.f_58316_); -- p_187452_.m_128376_("CookTime", (short)this.f_58318_); -- p_187452_.m_128376_("CookTimeTotal", (short)this.f_58319_); -+ p_187452_.m_128405_("BurnTime", this.f_58316_); -+ p_187452_.m_128405_("CookTime", this.f_58318_); -+ p_187452_.m_128405_("CookTimeTotal", this.f_58319_); - ContainerHelper.m_18973_(p_187452_, this.f_58310_); + protected void saveAdditional(CompoundTag p_187452_) { + super.saveAdditional(p_187452_); +- p_187452_.putShort("BurnTime", (short)this.litTime); +- p_187452_.putShort("CookTime", (short)this.cookingProgress); +- p_187452_.putShort("CookTimeTotal", (short)this.cookingTotalTime); ++ p_187452_.putInt("BurnTime", this.litTime); ++ p_187452_.putInt("CookTime", this.cookingProgress); ++ p_187452_.putInt("CookTimeTotal", this.cookingTotalTime); + ContainerHelper.saveAllItems(p_187452_, this.items); CompoundTag compoundtag = new CompoundTag(); - this.f_58320_.forEach((p_187449_, p_187450_) -> { + this.recipesUsed.forEach((p_187449_, p_187450_) -> { @@ -249,28 +_,30 @@ } - int i = p_155017_.m_6893_(); -- if (!p_155017_.m_58425_() && m_155005_(p_155014_.m_9598_(), recipeholder, p_155017_.f_58310_, i)) { -+ if (!p_155017_.m_58425_() && p_155017_.m_155005_(p_155014_.m_9598_(), recipeholder, p_155017_.f_58310_, i)) { - p_155017_.f_58316_ = p_155017_.m_7743_(itemstack); - p_155017_.f_58317_ = p_155017_.f_58316_; - if (p_155017_.m_58425_()) { + int i = p_155017_.getMaxStackSize(); +- if (!p_155017_.isLit() && canBurn(p_155014_.registryAccess(), recipeholder, p_155017_.items, i)) { ++ if (!p_155017_.isLit() && p_155017_.canBurn(p_155014_.registryAccess(), recipeholder, p_155017_.items, i)) { + p_155017_.litTime = p_155017_.getBurnDuration(itemstack); + p_155017_.litDuration = p_155017_.litTime; + if (p_155017_.isLit()) { flag1 = true; + if (itemstack.hasCraftingRemainingItem()) -+ p_155017_.f_58310_.set(1, itemstack.getCraftingRemainingItem()); ++ p_155017_.items.set(1, itemstack.getCraftingRemainingItem()); + else if (flag3) { - Item item = itemstack.m_41720_(); - itemstack.m_41774_(1); - if (itemstack.m_41619_()) { -- Item item1 = item.m_41469_(); -- p_155017_.f_58310_.set(1, item1 == null ? ItemStack.f_41583_ : new ItemStack(item1)); -+ p_155017_.f_58310_.set(1, itemstack.getCraftingRemainingItem()); + Item item = itemstack.getItem(); + itemstack.shrink(1); + if (itemstack.isEmpty()) { +- Item item1 = item.getCraftingRemainingItem(); +- p_155017_.items.set(1, item1 == null ? ItemStack.EMPTY : new ItemStack(item1)); ++ p_155017_.items.set(1, itemstack.getCraftingRemainingItem()); } } } } -- if (p_155017_.m_58425_() && m_155005_(p_155014_.m_9598_(), recipeholder, p_155017_.f_58310_, i)) { -+ if (p_155017_.m_58425_() && p_155017_.m_155005_(p_155014_.m_9598_(), recipeholder, p_155017_.f_58310_, i)) { - ++p_155017_.f_58318_; - if (p_155017_.f_58318_ == p_155017_.f_58319_) { - p_155017_.f_58318_ = 0; - p_155017_.f_58319_ = m_222692_(p_155014_, p_155017_); -- if (m_266209_(p_155014_.m_9598_(), recipeholder, p_155017_.f_58310_, i)) { -+ if (p_155017_.m_266209_(p_155014_.m_9598_(), recipeholder, p_155017_.f_58310_, i)) { - p_155017_.m_40156_(recipeholder); +- if (p_155017_.isLit() && canBurn(p_155014_.registryAccess(), recipeholder, p_155017_.items, i)) { ++ if (p_155017_.isLit() && p_155017_.canBurn(p_155014_.registryAccess(), recipeholder, p_155017_.items, i)) { + ++p_155017_.cookingProgress; + if (p_155017_.cookingProgress == p_155017_.cookingTotalTime) { + p_155017_.cookingProgress = 0; + p_155017_.cookingTotalTime = getTotalCookTime(p_155014_, p_155017_); +- if (burn(p_155014_.registryAccess(), recipeholder, p_155017_.items, i)) { ++ if (p_155017_.burn(p_155014_.registryAccess(), recipeholder, p_155017_.items, i)) { + p_155017_.setRecipeUsed(recipeholder); } @@ -295,9 +_,9 @@ } -- private static boolean m_155005_(RegistryAccess p_266924_, @Nullable RecipeHolder p_299207_, NonNullList p_155007_, int p_155008_) { -+ private boolean m_155005_(RegistryAccess p_266924_, @Nullable RecipeHolder p_299207_, NonNullList p_155007_, int p_155008_) { - if (!p_155007_.get(0).m_41619_() && p_299207_ != null) { -- ItemStack itemstack = p_299207_.f_291008_().m_8043_(p_266924_); -+ ItemStack itemstack = ((RecipeHolder>)p_299207_).f_291008_().m_5874_(this, p_266924_); - if (itemstack.m_41619_()) { +- private static boolean canBurn(RegistryAccess p_266924_, @Nullable RecipeHolder p_299207_, NonNullList p_155007_, int p_155008_) { ++ private boolean canBurn(RegistryAccess p_266924_, @Nullable RecipeHolder p_299207_, NonNullList p_155007_, int p_155008_) { + if (!p_155007_.get(0).isEmpty() && p_299207_ != null) { +- ItemStack itemstack = p_299207_.value().getResultItem(p_266924_); ++ ItemStack itemstack = ((RecipeHolder>)p_299207_).value().assemble(this, p_266924_); + if (itemstack.isEmpty()) { return false; } else { @@ -306,10 +_,10 @@ return true; - } else if (!ItemStack.m_41656_(itemstack1, itemstack)) { + } else if (!ItemStack.isSameItem(itemstack1, itemstack)) { return false; -- } else if (itemstack1.m_41613_() < p_155008_ && itemstack1.m_41613_() < itemstack1.m_41741_()) { -+ } else if (itemstack1.m_41613_() + itemstack.m_41613_() <= p_155008_ && itemstack1.m_41613_() + itemstack.m_41613_() <= itemstack1.m_41741_()) { // Forge fix: make furnace respect stack sizes in furnace recipes +- } else if (itemstack1.getCount() < p_155008_ && itemstack1.getCount() < itemstack1.getMaxStackSize()) { ++ } else if (itemstack1.getCount() + itemstack.getCount() <= p_155008_ && itemstack1.getCount() + itemstack.getCount() <= itemstack1.getMaxStackSize()) { // Forge fix: make furnace respect stack sizes in furnace recipes return true; } else { -- return itemstack1.m_41613_() < itemstack.m_41741_(); -+ return itemstack1.m_41613_() + itemstack.m_41613_() <= itemstack.m_41741_(); // Forge fix: make furnace respect stack sizes in furnace recipes +- return itemstack1.getCount() < itemstack.getMaxStackSize(); ++ return itemstack1.getCount() + itemstack.getCount() <= itemstack.getMaxStackSize(); // Forge fix: make furnace respect stack sizes in furnace recipes } } } else { @@ -111,27 +111,27 @@ } } -- private static boolean m_266209_(RegistryAccess p_266740_, @Nullable RecipeHolder p_299450_, NonNullList p_267073_, int p_267157_) { -- if (p_299450_ != null && m_155005_(p_266740_, p_299450_, p_267073_, p_267157_)) { -+ private boolean m_266209_(RegistryAccess p_266740_, @Nullable RecipeHolder p_299450_, NonNullList p_267073_, int p_267157_) { -+ if (p_299450_ != null && this.m_155005_(p_266740_, p_299450_, p_267073_, p_267157_)) { +- private static boolean burn(RegistryAccess p_266740_, @Nullable RecipeHolder p_299450_, NonNullList p_267073_, int p_267157_) { +- if (p_299450_ != null && canBurn(p_266740_, p_299450_, p_267073_, p_267157_)) { ++ private boolean burn(RegistryAccess p_266740_, @Nullable RecipeHolder p_299450_, NonNullList p_267073_, int p_267157_) { ++ if (p_299450_ != null && this.canBurn(p_266740_, p_299450_, p_267073_, p_267157_)) { ItemStack itemstack = p_267073_.get(0); -- ItemStack itemstack1 = p_299450_.f_291008_().m_8043_(p_266740_); -+ ItemStack itemstack1 = ((RecipeHolder>)p_299450_).f_291008_().m_5874_(this, p_266740_); +- ItemStack itemstack1 = p_299450_.value().getResultItem(p_266740_); ++ ItemStack itemstack1 = ((RecipeHolder>)p_299450_).value().assemble(this, p_266740_); ItemStack itemstack2 = p_267073_.get(2); - if (itemstack2.m_41619_()) { - p_267073_.set(2, itemstack1.m_41777_()); - } else if (itemstack2.m_150930_(itemstack1.m_41720_())) { -- itemstack2.m_41769_(1); -+ itemstack2.m_41769_(itemstack1.m_41613_()); + if (itemstack2.isEmpty()) { + p_267073_.set(2, itemstack1.copy()); + } else if (itemstack2.is(itemstack1.getItem())) { +- itemstack2.grow(1); ++ itemstack2.grow(itemstack1.getCount()); } - if (itemstack.m_150930_(Blocks.f_50057_.m_5456_()) && !p_267073_.get(1).m_41619_() && p_267073_.get(1).m_150930_(Items.f_42446_)) { + if (itemstack.is(Blocks.WET_SPONGE.asItem()) && !p_267073_.get(1).isEmpty() && p_267073_.get(1).is(Items.BUCKET)) { @@ -344,7 +_,7 @@ return 0; } else { - Item item = p_58343_.m_41720_(); -- return m_58423_().getOrDefault(item, 0); + Item item = p_58343_.getItem(); +- return getFuel().getOrDefault(item, 0); + return net.minecraftforge.common.ForgeHooks.getBurnTime(p_58343_, this.recipeType); } } @@ -139,23 +139,23 @@ @@ -355,7 +_,7 @@ } - public static boolean m_58399_(ItemStack p_58400_) { -- return m_58423_().containsKey(p_58400_.m_41720_()); + public static boolean isFuel(ItemStack p_58400_) { +- return getFuel().containsKey(p_58400_.getItem()); + return net.minecraftforge.common.ForgeHooks.getBurnTime(p_58400_, null) > 0; } - public int[] m_7071_(Direction p_58363_) { + public int[] getSlotsForFace(Direction p_58363_) { @@ -431,7 +_,7 @@ return true; } else { - ItemStack itemstack = this.f_58310_.get(1); -- return m_58399_(p_58390_) || p_58390_.m_150930_(Items.f_42446_) && !itemstack.m_150930_(Items.f_42446_); -+ return net.minecraftforge.common.ForgeHooks.getBurnTime(p_58390_, this.recipeType) > 0 || p_58390_.m_150930_(Items.f_42446_) && !itemstack.m_150930_(Items.f_42446_); + ItemStack itemstack = this.items.get(1); +- return isFuel(p_58390_) || p_58390_.is(Items.BUCKET) && !itemstack.is(Items.BUCKET); ++ return net.minecraftforge.common.ForgeHooks.getBurnTime(p_58390_, this.recipeType) > 0 || p_58390_.is(Items.BUCKET) && !itemstack.is(Items.BUCKET); } } @@ -496,5 +_,34 @@ - p_58342_.m_36491_(itemstack); + p_58342_.accountStack(itemstack); } + } @@ -165,7 +165,7 @@ + + @Override + public net.minecraftforge.common.util.LazyOptional getCapability(net.minecraftforge.common.capabilities.Capability capability, @Nullable Direction facing) { -+ if (!this.f_58859_ && facing != null && capability == net.minecraftforge.common.capabilities.ForgeCapabilities.ITEM_HANDLER) { ++ if (!this.remove && facing != null && capability == net.minecraftforge.common.capabilities.ForgeCapabilities.ITEM_HANDLER) { + if (facing == Direction.UP) + return handlers[0].cast(); + else if (facing == Direction.DOWN) diff --git a/patches/minecraft/net/minecraft/world/level/block/entity/BaseContainerBlockEntity.java.patch b/patches/minecraft/net/minecraft/world/level/block/entity/BaseContainerBlockEntity.java.patch index a13d9d4a89..c580a0c4d8 100644 --- a/patches/minecraft/net/minecraft/world/level/block/entity/BaseContainerBlockEntity.java.patch +++ b/patches/minecraft/net/minecraft/world/level/block/entity/BaseContainerBlockEntity.java.patch @@ -3,7 +3,7 @@ @@ -81,4 +_,27 @@ } - protected abstract AbstractContainerMenu m_6555_(int p_58627_, Inventory p_58628_); + protected abstract AbstractContainerMenu createMenu(int p_58627_, Inventory p_58628_); + + private net.minecraftforge.common.util.LazyOptional itemHandler = net.minecraftforge.common.util.LazyOptional.of(() -> createUnSidedHandler()); + protected net.minecraftforge.items.IItemHandler createUnSidedHandler() { @@ -11,7 +11,7 @@ + } + + public net.minecraftforge.common.util.LazyOptional getCapability(net.minecraftforge.common.capabilities.Capability cap, @org.jetbrains.annotations.Nullable net.minecraft.core.Direction side) { -+ if (!this.f_58859_ && cap == net.minecraftforge.common.capabilities.ForgeCapabilities.ITEM_HANDLER) ++ if (!this.remove && cap == net.minecraftforge.common.capabilities.ForgeCapabilities.ITEM_HANDLER) + return itemHandler.cast(); + return super.getCapability(cap, side); + } diff --git a/patches/minecraft/net/minecraft/world/level/block/entity/BeaconBlockEntity.java.patch b/patches/minecraft/net/minecraft/world/level/block/entity/BeaconBlockEntity.java.patch index 99c215787b..530dc3e5b8 100644 --- a/patches/minecraft/net/minecraft/world/level/block/entity/BeaconBlockEntity.java.patch +++ b/patches/minecraft/net/minecraft/world/level/block/entity/BeaconBlockEntity.java.patch @@ -1,13 +1,13 @@ --- a/net/minecraft/world/level/block/entity/BeaconBlockEntity.java +++ b/net/minecraft/world/level/block/entity/BeaconBlockEntity.java @@ -133,8 +_,8 @@ - for(int i1 = 0; i1 < 10 && blockpos.m_123342_() <= l; ++i1) { - BlockState blockstate = p_155108_.m_8055_(blockpos); - Block block = blockstate.m_60734_(); + for(int i1 = 0; i1 < 10 && blockpos.getY() <= l; ++i1) { + BlockState blockstate = p_155108_.getBlockState(blockpos); + Block block = blockstate.getBlock(); - if (block instanceof BeaconBeamBlock) { -- float[] afloat = ((BeaconBeamBlock)block).m_7988_().m_41068_(); +- float[] afloat = ((BeaconBeamBlock)block).getColor().getTextureDiffuseColors(); + float[] afloat = blockstate.getBeaconColorMultiplier(p_155108_, blockpos, p_155109_); + if (afloat != null) { - if (p_155111_.f_58649_.size() <= 1) { + if (p_155111_.checkingBeamSections.size() <= 1) { beaconblockentity$beaconbeamsection = new BeaconBlockEntity.BeaconBeamSection(afloat); - p_155111_.f_58649_.add(beaconblockentity$beaconbeamsection); + p_155111_.checkingBeamSections.add(beaconblockentity$beaconbeamsection); diff --git a/patches/minecraft/net/minecraft/world/level/block/entity/BlockEntity.java.patch b/patches/minecraft/net/minecraft/world/level/block/entity/BlockEntity.java.patch index e8c6eb212e..f39985f827 100644 --- a/patches/minecraft/net/minecraft/world/level/block/entity/BlockEntity.java.patch +++ b/patches/minecraft/net/minecraft/world/level/block/entity/BlockEntity.java.patch @@ -6,42 +6,42 @@ -public abstract class BlockEntity { +public abstract class BlockEntity extends net.minecraftforge.common.capabilities.CapabilityProvider implements net.minecraftforge.common.extensions.IForgeBlockEntity { - private static final Logger f_58854_ = LogUtils.getLogger(); - private final BlockEntityType f_58855_; + private static final Logger LOGGER = LogUtils.getLogger(); + private final BlockEntityType type; @Nullable @@ -23,11 +_,14 @@ - protected final BlockPos f_58858_; - protected boolean f_58859_; - private BlockState f_58856_; + protected final BlockPos worldPosition; + protected boolean remove; + private BlockState blockState; + private CompoundTag customPersistentData; public BlockEntity(BlockEntityType p_155228_, BlockPos p_155229_, BlockState p_155230_) { + super(BlockEntity.class); - this.f_58855_ = p_155228_; - this.f_58858_ = p_155229_.m_7949_(); - this.f_58856_ = p_155230_; + this.type = p_155228_; + this.worldPosition = p_155229_.immutable(); + this.blockState = p_155230_; + this.gatherCapabilities(); } - public static BlockPos m_187472_(CompoundTag p_187473_) { + public static BlockPos getPosFromTag(CompoundTag p_187473_) { @@ -48,9 +_,13 @@ } - public void m_142466_(CompoundTag p_155245_) { -+ if (p_155245_.m_128441_("ForgeData")) this.customPersistentData = p_155245_.m_128469_("ForgeData"); -+ if (getCapabilities() != null && p_155245_.m_128441_("ForgeCaps")) deserializeCaps(p_155245_.m_128469_("ForgeCaps")); + public void load(CompoundTag p_155245_) { ++ if (p_155245_.contains("ForgeData")) this.customPersistentData = p_155245_.getCompound("ForgeData"); ++ if (getCapabilities() != null && p_155245_.contains("ForgeCaps")) deserializeCaps(p_155245_.getCompound("ForgeCaps")); } - protected void m_183515_(CompoundTag p_187471_) { -+ if (this.customPersistentData != null) p_187471_.m_128365_("ForgeData", this.customPersistentData.m_6426_()); -+ if (getCapabilities() != null) p_187471_.m_128365_("ForgeCaps", serializeCaps()); + protected void saveAdditional(CompoundTag p_187471_) { ++ if (this.customPersistentData != null) p_187471_.put("ForgeData", this.customPersistentData.copy()); ++ if (getCapabilities() != null) p_187471_.put("ForgeCaps", serializeCaps()); } - public final CompoundTag m_187480_() { + public final CompoundTag saveWithFullMetadata() { @@ -163,6 +_,13 @@ - public void m_7651_() { - this.f_58859_ = true; + public void setRemoved() { + this.remove = true; + this.invalidateCaps(); + requestModelDataUpdate(); + } @@ -51,11 +51,11 @@ + this.invalidateCaps(); } - public void m_6339_() { + public void clearRemoved() { @@ -189,6 +_,13 @@ - public BlockEntityType m_58903_() { - return this.f_58855_; + public BlockEntityType getType() { + return this.type; + } + + @Override diff --git a/patches/minecraft/net/minecraft/world/level/block/entity/BrewingStandBlockEntity.java.patch b/patches/minecraft/net/minecraft/world/level/block/entity/BrewingStandBlockEntity.java.patch index 996cfe8503..bda48ec008 100644 --- a/patches/minecraft/net/minecraft/world/level/block/entity/BrewingStandBlockEntity.java.patch +++ b/patches/minecraft/net/minecraft/world/level/block/entity/BrewingStandBlockEntity.java.patch @@ -2,59 +2,59 @@ +++ b/net/minecraft/world/level/block/entity/BrewingStandBlockEntity.java @@ -148,6 +_,7 @@ - private static boolean m_155294_(NonNullList p_155295_) { + private static boolean isBrewable(NonNullList p_155295_) { ItemStack itemstack = p_155295_.get(3); -+ if (!itemstack.m_41619_()) return net.minecraftforge.common.brewing.BrewingRecipeRegistry.canBrew(p_155295_, itemstack, f_58974_); // divert to VanillaBrewingRegistry - if (itemstack.m_41619_()) { ++ if (!itemstack.isEmpty()) return net.minecraftforge.common.brewing.BrewingRecipeRegistry.canBrew(p_155295_, itemstack, SLOTS_FOR_SIDES); // divert to VanillaBrewingRegistry + if (itemstack.isEmpty()) { return false; - } else if (!PotionBrewing.m_43506_(itemstack)) { + } else if (!PotionBrewing.isIngredient(itemstack)) { @@ -165,21 +_,21 @@ } - private static void m_155290_(Level p_155291_, BlockPos p_155292_, NonNullList p_155293_) { + private static void doBrew(Level p_155291_, BlockPos p_155292_, NonNullList p_155293_) { + if (net.minecraftforge.event.ForgeEventFactory.onPotionAttemptBrew(p_155293_)) return; ItemStack itemstack = p_155293_.get(3); - for(int i = 0; i < 3; ++i) { -- p_155293_.set(i, PotionBrewing.m_43529_(itemstack, p_155293_.get(i))); +- p_155293_.set(i, PotionBrewing.mix(itemstack, p_155293_.get(i))); - } - -- itemstack.m_41774_(1); -- if (itemstack.m_41720_().m_41470_()) { -- ItemStack itemstack1 = new ItemStack(itemstack.m_41720_().m_41469_()); -+ net.minecraftforge.common.brewing.BrewingRecipeRegistry.brewPotions(p_155293_, itemstack, f_58974_); +- itemstack.shrink(1); +- if (itemstack.getItem().hasCraftingRemainingItem()) { +- ItemStack itemstack1 = new ItemStack(itemstack.getItem().getCraftingRemainingItem()); ++ net.minecraftforge.common.brewing.BrewingRecipeRegistry.brewPotions(p_155293_, itemstack, SLOTS_FOR_SIDES); + net.minecraftforge.event.ForgeEventFactory.onPotionBrewed(p_155293_); + if (itemstack.hasCraftingRemainingItem()) { + ItemStack itemstack1 = itemstack.getCraftingRemainingItem(); -+ itemstack.m_41774_(1); - if (itemstack.m_41619_()) { ++ itemstack.shrink(1); + if (itemstack.isEmpty()) { itemstack = itemstack1; } else { - Containers.m_18992_(p_155291_, (double)p_155292_.m_123341_(), (double)p_155292_.m_123342_(), (double)p_155292_.m_123343_(), itemstack1); + Containers.dropItemStack(p_155291_, (double)p_155292_.getX(), (double)p_155292_.getY(), (double)p_155292_.getZ(), itemstack1); } } -+ else itemstack.m_41774_(1); ++ else itemstack.shrink(1); p_155293_.set(3, itemstack); - p_155291_.m_46796_(1035, p_155292_, 0); + p_155291_.levelEvent(1035, p_155292_, 0); @@ -225,11 +_,11 @@ - public boolean m_7013_(int p_59017_, ItemStack p_59018_) { + public boolean canPlaceItem(int p_59017_, ItemStack p_59018_) { if (p_59017_ == 3) { -- return PotionBrewing.m_43506_(p_59018_); +- return PotionBrewing.isIngredient(p_59018_); + return net.minecraftforge.common.brewing.BrewingRecipeRegistry.isValidIngredient(p_59018_); } else if (p_59017_ == 4) { - return p_59018_.m_150930_(Items.f_42593_); + return p_59018_.is(Items.BLAZE_POWDER); } else { -- return (p_59018_.m_150930_(Items.f_42589_) || p_59018_.m_150930_(Items.f_42736_) || p_59018_.m_150930_(Items.f_42739_) || p_59018_.m_150930_(Items.f_42590_)) && this.m_8020_(p_59017_).m_41619_(); -+ return net.minecraftforge.common.brewing.BrewingRecipeRegistry.isValidInput(p_59018_) && this.m_8020_(p_59017_).m_41619_(); +- return (p_59018_.is(Items.POTION) || p_59018_.is(Items.SPLASH_POTION) || p_59018_.is(Items.LINGERING_POTION) || p_59018_.is(Items.GLASS_BOTTLE)) && this.getItem(p_59017_).isEmpty(); ++ return net.minecraftforge.common.brewing.BrewingRecipeRegistry.isValidInput(p_59018_) && this.getItem(p_59017_).isEmpty(); } } @@ -255,5 +_,34 @@ - protected AbstractContainerMenu m_6555_(int p_58990_, Inventory p_58991_) { - return new BrewingStandMenu(p_58990_, p_58991_, this, this.f_58971_); + protected AbstractContainerMenu createMenu(int p_58990_, Inventory p_58991_) { + return new BrewingStandMenu(p_58990_, p_58991_, this, this.dataAccess); + } + + net.minecraftforge.common.util.LazyOptional[] handlers = @@ -62,7 +62,7 @@ + + @Override + public net.minecraftforge.common.util.LazyOptional getCapability(net.minecraftforge.common.capabilities.Capability capability, @Nullable Direction facing) { -+ if (!this.f_58859_ && facing != null && capability == net.minecraftforge.common.capabilities.ForgeCapabilities.ITEM_HANDLER) { ++ if (!this.remove && facing != null && capability == net.minecraftforge.common.capabilities.ForgeCapabilities.ITEM_HANDLER) { + if (facing == Direction.UP) + return handlers[0].cast(); + else if (facing == Direction.DOWN) diff --git a/patches/minecraft/net/minecraft/world/level/block/entity/ChestBlockEntity.java.patch b/patches/minecraft/net/minecraft/world/level/block/entity/ChestBlockEntity.java.patch index b42737779e..6bc26783cf 100644 --- a/patches/minecraft/net/minecraft/world/level/block/entity/ChestBlockEntity.java.patch +++ b/patches/minecraft/net/minecraft/world/level/block/entity/ChestBlockEntity.java.patch @@ -1,13 +1,13 @@ --- a/net/minecraft/world/level/block/entity/ChestBlockEntity.java +++ b/net/minecraft/world/level/block/entity/ChestBlockEntity.java @@ -160,6 +_,45 @@ - return ChestMenu.m_39237_(p_59082_, p_59083_, this); + return ChestMenu.threeRows(p_59082_, p_59083_, this); } + private net.minecraftforge.common.util.LazyOptional chestHandler; + @Override -+ public void m_155250_(BlockState p_155251_) { -+ super.m_155250_(p_155251_); ++ public void setBlockState(BlockState p_155251_) { ++ super.setBlockState(p_155251_); + if (this.chestHandler != null) { + net.minecraftforge.common.util.LazyOptional oldHandler = this.chestHandler; + this.chestHandler = null; @@ -17,7 +17,7 @@ + + @Override + public net.minecraftforge.common.util.LazyOptional getCapability(net.minecraftforge.common.capabilities.Capability cap, Direction side) { -+ if (!this.f_58859_ && cap == net.minecraftforge.common.capabilities.ForgeCapabilities.ITEM_HANDLER) { ++ if (!this.remove && cap == net.minecraftforge.common.capabilities.ForgeCapabilities.ITEM_HANDLER) { + if (this.chestHandler == null) + this.chestHandler = net.minecraftforge.common.util.LazyOptional.of(this::createHandler); + return this.chestHandler.cast(); @@ -26,11 +26,11 @@ + } + + private net.minecraftforge.items.IItemHandlerModifiable createHandler() { -+ BlockState state = this.m_58900_(); -+ if (!(state.m_60734_() instanceof ChestBlock)) { ++ BlockState state = this.getBlockState(); ++ if (!(state.getBlock() instanceof ChestBlock)) { + return new net.minecraftforge.items.wrapper.InvWrapper(this); + } -+ Container inv = ChestBlock.m_51511_((ChestBlock) state.m_60734_(), state, m_58904_(), m_58899_(), true); ++ Container inv = ChestBlock.getContainer((ChestBlock) state.getBlock(), state, getLevel(), getBlockPos(), true); + return new net.minecraftforge.items.wrapper.InvWrapper(inv == null ? this : inv); + } + @@ -43,6 +43,6 @@ + } + } + - public void m_155350_() { - if (!this.f_58859_) { - this.f_155324_.m_155476_(this.m_58904_(), this.m_58899_(), this.m_58900_()); + public void recheckOpen() { + if (!this.remove) { + this.openersCounter.recheckOpeners(this.getLevel(), this.getBlockPos(), this.getBlockState()); diff --git a/patches/minecraft/net/minecraft/world/level/block/entity/ChiseledBookShelfBlockEntity.java.patch b/patches/minecraft/net/minecraft/world/level/block/entity/ChiseledBookShelfBlockEntity.java.patch index aa155126b0..7cbd2f7248 100644 --- a/patches/minecraft/net/minecraft/world/level/block/entity/ChiseledBookShelfBlockEntity.java.patch +++ b/patches/minecraft/net/minecraft/world/level/block/entity/ChiseledBookShelfBlockEntity.java.patch @@ -1,8 +1,8 @@ --- a/net/minecraft/world/level/block/entity/ChiseledBookShelfBlockEntity.java +++ b/net/minecraft/world/level/block/entity/ChiseledBookShelfBlockEntity.java @@ -125,4 +_,28 @@ - public int m_262444_() { - return this.f_262317_; + public int getLastInteractedSlot() { + return this.lastInteractedSlot; } + + private net.minecraftforge.common.util.LazyOptional itemHandler = net.minecraftforge.common.util.LazyOptional.of(this::createUnSidedHandler); @@ -12,7 +12,7 @@ + + @Override + public net.minecraftforge.common.util.LazyOptional getCapability(net.minecraftforge.common.capabilities.Capability cap, @org.jetbrains.annotations.Nullable net.minecraft.core.Direction side) { -+ if (!this.f_58859_ && cap == net.minecraftforge.common.capabilities.ForgeCapabilities.ITEM_HANDLER) ++ if (!this.remove && cap == net.minecraftforge.common.capabilities.ForgeCapabilities.ITEM_HANDLER) + return itemHandler.cast(); + return super.getCapability(cap, side); + } diff --git a/patches/minecraft/net/minecraft/world/level/block/entity/ConduitBlockEntity.java.patch b/patches/minecraft/net/minecraft/world/level/block/entity/ConduitBlockEntity.java.patch index 68f250be34..200ebc12d4 100644 --- a/patches/minecraft/net/minecraft/world/level/block/entity/ConduitBlockEntity.java.patch +++ b/patches/minecraft/net/minecraft/world/level/block/entity/ConduitBlockEntity.java.patch @@ -1,11 +1,11 @@ --- a/net/minecraft/world/level/block/entity/ConduitBlockEntity.java +++ b/net/minecraft/world/level/block/entity/ConduitBlockEntity.java @@ -152,10 +_,8 @@ - BlockPos blockpos1 = p_155416_.m_7918_(j1, k1, l1); - BlockState blockstate = p_155415_.m_8055_(blockpos1); + BlockPos blockpos1 = p_155416_.offset(j1, k1, l1); + BlockState blockstate = p_155415_.getBlockState(blockpos1); -- for(Block block : f_59184_) { -- if (blockstate.m_60713_(block)) { +- for(Block block : VALID_BLOCKS) { +- if (blockstate.is(block)) { - p_155417_.add(blockpos1); - } + if (blockstate.isConduitFrame(p_155415_, blockpos1, p_155416_)) { diff --git a/patches/minecraft/net/minecraft/world/level/block/entity/HopperBlockEntity.java.patch b/patches/minecraft/net/minecraft/world/level/block/entity/HopperBlockEntity.java.patch index 627b3c89c3..ff564ce088 100644 --- a/patches/minecraft/net/minecraft/world/level/block/entity/HopperBlockEntity.java.patch +++ b/patches/minecraft/net/minecraft/world/level/block/entity/HopperBlockEntity.java.patch @@ -1,36 +1,27 @@ --- a/net/minecraft/world/level/block/entity/HopperBlockEntity.java +++ b/net/minecraft/world/level/block/entity/HopperBlockEntity.java -@@ -102,7 +_,7 @@ - if (!p_155582_.m_59407_() && p_155581_.m_61143_(HopperBlock.f_54022_)) { - boolean flag = false; - if (!p_155582_.m_7983_()) { -- flag = m_155562_(p_155579_, p_155580_, p_155581_, p_155582_); -+ flag = ejectItems(p_155579_, p_155580_, p_155581_, p_155582_); - } - - if (!p_155582_.m_59404_()) { @@ -130,7 +_,8 @@ return true; } -- private static boolean m_155562_(Level p_155563_, BlockPos p_155564_, BlockState p_155565_, Container p_155566_) { +- private static boolean ejectItems(Level p_155563_, BlockPos p_155564_, BlockState p_155565_, Container p_155566_) { + private static boolean ejectItems(Level p_155563_, BlockPos p_155564_, BlockState p_155565_, HopperBlockEntity p_155566_) { + if (net.minecraftforge.items.VanillaInventoryCodeHooks.insertHook(p_155566_)) return true; - Container container = m_155592_(p_155563_, p_155564_, p_155565_); + Container container = getAttachedContainer(p_155563_, p_155564_, p_155565_); if (container == null) { return false; @@ -175,6 +_,8 @@ } - public static boolean m_155552_(Level p_155553_, Hopper p_155554_) { + public static boolean suckInItems(Level p_155553_, Hopper p_155554_) { + Boolean ret = net.minecraftforge.items.VanillaInventoryCodeHooks.extractHook(p_155553_, p_155554_); + if (ret != null) return ret; - Container container = m_155596_(p_155553_, p_155554_); + Container container = getSourceContainer(p_155553_, p_155554_); if (container != null) { Direction direction = Direction.DOWN; @@ -414,5 +_,14 @@ - protected AbstractContainerMenu m_6555_(int p_59312_, Inventory p_59313_) { + protected AbstractContainerMenu createMenu(int p_59312_, Inventory p_59313_) { return new HopperMenu(p_59312_, p_59313_, this); + } + @@ -40,6 +31,6 @@ + } + + public long getLastUpdateTime() { -+ return this.f_59303_; ++ return this.tickedGameTime; } } diff --git a/patches/minecraft/net/minecraft/world/level/block/entity/ShulkerBoxBlockEntity.java.patch b/patches/minecraft/net/minecraft/world/level/block/entity/ShulkerBoxBlockEntity.java.patch index 432f7bcbbf..9124e4d7ca 100644 --- a/patches/minecraft/net/minecraft/world/level/block/entity/ShulkerBoxBlockEntity.java.patch +++ b/patches/minecraft/net/minecraft/world/level/block/entity/ShulkerBoxBlockEntity.java.patch @@ -3,16 +3,16 @@ @@ -217,7 +_,7 @@ } - public boolean m_7155_(int p_59663_, ItemStack p_59664_, @Nullable Direction p_59665_) { -- return !(Block.m_49814_(p_59664_.m_41720_()) instanceof ShulkerBoxBlock); -+ return !(Block.m_49814_(p_59664_.m_41720_()) instanceof ShulkerBoxBlock) && p_59664_.m_41720_().m_142095_(); // FORGE: Make shulker boxes respect Item#canFitInsideContainerItems + public boolean canPlaceItemThroughFace(int p_59663_, ItemStack p_59664_, @Nullable Direction p_59665_) { +- return !(Block.byItem(p_59664_.getItem()) instanceof ShulkerBoxBlock); ++ return !(Block.byItem(p_59664_.getItem()) instanceof ShulkerBoxBlock) && p_59664_.getItem().canFitInsideContainerItems(); // FORGE: Make shulker boxes respect Item#canFitInsideContainerItems } - public boolean m_7157_(int p_59682_, ItemStack p_59683_, Direction p_59684_) { + public boolean canTakeItemThroughFace(int p_59682_, ItemStack p_59683_, Direction p_59684_) { @@ -239,6 +_,11 @@ - public boolean m_59702_() { - return this.f_59647_ == ShulkerBoxBlockEntity.AnimationStatus.CLOSED; + public boolean isClosed() { + return this.animationStatus == ShulkerBoxBlockEntity.AnimationStatus.CLOSED; + } + + @Override diff --git a/patches/minecraft/net/minecraft/world/level/block/entity/SignBlockEntity.java.patch b/patches/minecraft/net/minecraft/world/level/block/entity/SignBlockEntity.java.patch index 5db1d7ecf8..d4e93d9297 100644 --- a/patches/minecraft/net/minecraft/world/level/block/entity/SignBlockEntity.java.patch +++ b/patches/minecraft/net/minecraft/world/level/block/entity/SignBlockEntity.java.patch @@ -7,6 +7,6 @@ + + @Override + public net.minecraft.world.phys.AABB getRenderBoundingBox() { -+ return new net.minecraft.world.phys.AABB(this.m_58899_(), this.m_58899_().m_7918_(1, 1, 1)); ++ return new net.minecraft.world.phys.AABB(this.getBlockPos(), this.getBlockPos().offset(1, 1, 1)); + } } diff --git a/patches/minecraft/net/minecraft/world/level/block/grower/AbstractMegaTreeGrower.java.patch b/patches/minecraft/net/minecraft/world/level/block/grower/AbstractMegaTreeGrower.java.patch index 8f28ece8ee..eda7835d96 100644 --- a/patches/minecraft/net/minecraft/world/level/block/grower/AbstractMegaTreeGrower.java.patch +++ b/patches/minecraft/net/minecraft/world/level/block/grower/AbstractMegaTreeGrower.java.patch @@ -3,7 +3,7 @@ @@ -36,6 +_,9 @@ return false; } else { - Holder> holder = p_222897_.m_9598_().m_175515_(Registries.f_256911_).m_203636_(resourcekey).orElse((Holder.Reference>)null); + Holder> holder = p_222897_.registryAccess().registryOrThrow(Registries.CONFIGURED_FEATURE).getHolder(resourcekey).orElse((Holder.Reference>)null); + var event = net.minecraftforge.event.ForgeEventFactory.blockGrowFeature(p_222897_, p_222901_, p_222899_, holder); + holder = event.getFeature(); + if (event.getResult() == net.minecraftforge.eventbus.api.Event.Result.DENY) return false; diff --git a/patches/minecraft/net/minecraft/world/level/block/grower/AbstractTreeGrower.java.patch b/patches/minecraft/net/minecraft/world/level/block/grower/AbstractTreeGrower.java.patch index 58a2a80ac5..38e7eff9ba 100644 --- a/patches/minecraft/net/minecraft/world/level/block/grower/AbstractTreeGrower.java.patch +++ b/patches/minecraft/net/minecraft/world/level/block/grower/AbstractTreeGrower.java.patch @@ -3,7 +3,7 @@ @@ -23,6 +_,9 @@ return false; } else { - Holder> holder = p_222905_.m_9598_().m_175515_(Registries.f_256911_).m_203636_(resourcekey).orElse((Holder.Reference>)null); + Holder> holder = p_222905_.registryAccess().registryOrThrow(Registries.CONFIGURED_FEATURE).getHolder(resourcekey).orElse((Holder.Reference>)null); + var event = net.minecraftforge.event.ForgeEventFactory.blockGrowFeature(p_222905_, p_222909_, p_222907_, holder); + holder = event.getFeature(); + if (event.getResult() == net.minecraftforge.eventbus.api.Event.Result.DENY) return false; diff --git a/patches/minecraft/net/minecraft/world/level/block/piston/PistonBaseBlock.java.patch b/patches/minecraft/net/minecraft/world/level/block/piston/PistonBaseBlock.java.patch index f266c45e84..2348af95d1 100644 --- a/patches/minecraft/net/minecraft/world/level/block/piston/PistonBaseBlock.java.patch +++ b/patches/minecraft/net/minecraft/world/level/block/piston/PistonBaseBlock.java.patch @@ -5,19 +5,19 @@ if (p_60195_ == 0) { + if (net.minecraftforge.event.ForgeEventFactory.onPistonMovePre(p_60193_, p_60194_, direction, true)) return false; - if (!this.m_60181_(p_60193_, p_60194_, direction, true)) { + if (!this.moveBlocks(p_60193_, p_60194_, direction, true)) { return false; } @@ -177,6 +_,7 @@ - p_60193_.m_5594_((Player)null, p_60194_, SoundEvents.f_12312_, SoundSource.BLOCKS, 0.5F, p_60193_.f_46441_.m_188501_() * 0.25F + 0.6F); - p_60193_.m_220407_(GameEvent.f_223702_, p_60194_, GameEvent.Context.m_223722_(blockstate)); + p_60193_.playSound((Player)null, p_60194_, SoundEvents.PISTON_EXTEND, SoundSource.BLOCKS, 0.5F, p_60193_.random.nextFloat() * 0.25F + 0.6F); + p_60193_.gameEvent(GameEvent.BLOCK_ACTIVATE, p_60194_, GameEvent.Context.of(blockstate)); } else if (p_60195_ == 1 || p_60195_ == 2) { + if (net.minecraftforge.event.ForgeEventFactory.onPistonMovePre(p_60193_, p_60194_, direction, false)) return false; - BlockEntity blockentity1 = p_60193_.m_7702_(p_60194_.m_121945_(direction)); + BlockEntity blockentity1 = p_60193_.getBlockEntity(p_60194_.relative(direction)); if (blockentity1 instanceof PistonMovingBlockEntity) { - ((PistonMovingBlockEntity)blockentity1).m_60401_(); + ((PistonMovingBlockEntity)blockentity1).finalTick(); @@ -217,6 +_,7 @@ - p_60193_.m_220407_(GameEvent.f_223703_, p_60194_, GameEvent.Context.m_223722_(blockstate1)); + p_60193_.gameEvent(GameEvent.BLOCK_DEACTIVATE, p_60194_, GameEvent.Context.of(blockstate1)); } + net.minecraftforge.event.ForgeEventFactory.onPistonMovePost(p_60193_, p_60194_, direction, (p_60195_ == 0)); @@ -26,12 +26,12 @@ @@ -353,6 +_,10 @@ - public BlockState m_6843_(BlockState p_60215_, Rotation p_60216_) { - return p_60215_.m_61124_(f_52588_, p_60216_.m_55954_(p_60215_.m_61143_(f_52588_))); + public BlockState rotate(BlockState p_60215_, Rotation p_60216_) { + return p_60215_.setValue(FACING, p_60216_.rotate(p_60215_.getValue(FACING))); + } + + public BlockState rotate(BlockState state, net.minecraft.world.level.LevelAccessor world, BlockPos pos, Rotation direction) { -+ return state.m_61143_(f_60153_) ? state : super.rotate(state, world, pos, direction); ++ return state.getValue(EXTENDED) ? state : super.rotate(state, world, pos, direction); } - public BlockState m_6943_(BlockState p_60212_, Mirror p_60213_) { + public BlockState mirror(BlockState p_60212_, Mirror p_60213_) { diff --git a/patches/minecraft/net/minecraft/world/level/block/piston/PistonMovingBlockEntity.java.patch b/patches/minecraft/net/minecraft/world/level/block/piston/PistonMovingBlockEntity.java.patch index 72c1eee50b..de00823d01 100644 --- a/patches/minecraft/net/minecraft/world/level/block/piston/PistonMovingBlockEntity.java.patch +++ b/patches/minecraft/net/minecraft/world/level/block/piston/PistonMovingBlockEntity.java.patch @@ -1,11 +1,11 @@ --- a/net/minecraft/world/level/block/piston/PistonMovingBlockEntity.java +++ b/net/minecraft/world/level/block/piston/PistonMovingBlockEntity.java @@ -109,7 +_,7 @@ - List list = p_155911_.m_45933_((Entity)null, PistonMath.m_60328_(aabb, direction, d0).m_82367_(aabb)); + List list = p_155911_.getEntities((Entity)null, PistonMath.getMovementArea(aabb, direction, d0).minmax(aabb)); if (!list.isEmpty()) { - List list1 = voxelshape.m_83299_(); -- boolean flag = p_155914_.f_60334_.m_60713_(Blocks.f_50374_); -+ boolean flag = p_155914_.f_60334_.isSlimeBlock(); //TODO: is this patch really needed the logic of the original seems sound revisit later + List list1 = voxelshape.toAabbs(); +- boolean flag = p_155914_.movedState.is(Blocks.SLIME_BLOCK); ++ boolean flag = p_155914_.movedState.isSlimeBlock(); //TODO: is this patch really needed the logic of the original seems sound revisit later Iterator iterator = list.iterator(); while(true) { diff --git a/patches/minecraft/net/minecraft/world/level/block/piston/PistonStructureResolver.java.patch b/patches/minecraft/net/minecraft/world/level/block/piston/PistonStructureResolver.java.patch index 5fb185eb0a..d9cdab8759 100644 --- a/patches/minecraft/net/minecraft/world/level/block/piston/PistonStructureResolver.java.patch +++ b/patches/minecraft/net/minecraft/world/level/block/piston/PistonStructureResolver.java.patch @@ -2,10 +2,10 @@ +++ b/net/minecraft/world/level/block/piston/PistonStructureResolver.java @@ -51,7 +_,7 @@ } else { - for(int i = 0; i < this.f_60414_.size(); ++i) { - BlockPos blockpos = this.f_60414_.get(i); -- if (m_155937_(this.f_60409_.m_8055_(blockpos)) && !this.m_60431_(blockpos)) { -+ if (this.f_60409_.m_8055_(blockpos).isStickyBlock() && !this.m_60431_(blockpos)) { + for(int i = 0; i < this.toPush.size(); ++i) { + BlockPos blockpos = this.toPush.get(i); +- if (isSticky(this.level.getBlockState(blockpos)) && !this.addBranchingBlocks(blockpos)) { ++ if (this.level.getBlockState(blockpos).isStickyBlock() && !this.addBranchingBlocks(blockpos)) { return false; } } @@ -13,58 +13,58 @@ } } -- private static boolean m_155937_(BlockState p_155938_) { -- return p_155938_.m_60713_(Blocks.f_50374_) || p_155938_.m_60713_(Blocks.f_50719_); +- private static boolean isSticky(BlockState p_155938_) { +- return p_155938_.is(Blocks.SLIME_BLOCK) || p_155938_.is(Blocks.HONEY_BLOCK); - } - -- private static boolean m_155939_(BlockState p_155940_, BlockState p_155941_) { -- if (p_155940_.m_60713_(Blocks.f_50719_) && p_155941_.m_60713_(Blocks.f_50374_)) { +- private static boolean canStickToEachOther(BlockState p_155940_, BlockState p_155941_) { +- if (p_155940_.is(Blocks.HONEY_BLOCK) && p_155941_.is(Blocks.SLIME_BLOCK)) { - return false; -- } else if (p_155940_.m_60713_(Blocks.f_50374_) && p_155941_.m_60713_(Blocks.f_50719_)) { +- } else if (p_155940_.is(Blocks.SLIME_BLOCK) && p_155941_.is(Blocks.HONEY_BLOCK)) { - return false; - } else { -- return m_155937_(p_155940_) || m_155937_(p_155941_); +- return isSticky(p_155940_) || isSticky(p_155941_); - } - } - - private boolean m_60433_(BlockPos p_60434_, Direction p_60435_) { - BlockState blockstate = this.f_60409_.m_8055_(p_60434_); -- if (blockstate.m_60795_()) { -+ if (f_60409_.m_46859_(p_60434_)) { + private boolean addBlockLine(BlockPos p_60434_, Direction p_60435_) { + BlockState blockstate = this.level.getBlockState(p_60434_); +- if (blockstate.isAir()) { ++ if (level.isEmptyBlock(p_60434_)) { return true; - } else if (!PistonBaseBlock.m_60204_(blockstate, this.f_60409_, p_60434_, this.f_60413_, false, p_60435_)) { + } else if (!PistonBaseBlock.isPushable(blockstate, this.level, p_60434_, this.pushDirection, false, p_60435_)) { return true; @@ -89,11 +_,12 @@ - if (i + this.f_60414_.size() > 12) { + if (i + this.toPush.size() > 12) { return false; } else { -- while(m_155937_(blockstate)) { +- while(isSticky(blockstate)) { + BlockState oldState; + while(blockstate.isStickyBlock()) { - BlockPos blockpos = p_60434_.m_5484_(this.f_60413_.m_122424_(), i); + BlockPos blockpos = p_60434_.relative(this.pushDirection.getOpposite(), i); - BlockState blockstate1 = blockstate; + oldState = blockstate; - blockstate = this.f_60409_.m_8055_(blockpos); -- if (blockstate.m_60795_() || !m_155939_(blockstate1, blockstate) || !PistonBaseBlock.m_60204_(blockstate, this.f_60409_, blockpos, this.f_60413_, false, this.f_60413_.m_122424_()) || blockpos.equals(this.f_60410_)) { -+ if (blockstate.m_60795_() || !(oldState.canStickTo(blockstate) && blockstate.canStickTo(oldState)) || !PistonBaseBlock.m_60204_(blockstate, this.f_60409_, blockpos, this.f_60413_, false, this.f_60413_.m_122424_()) || blockpos.equals(this.f_60410_)) { + blockstate = this.level.getBlockState(blockpos); +- if (blockstate.isAir() || !canStickToEachOther(blockstate1, blockstate) || !PistonBaseBlock.isPushable(blockstate, this.level, blockpos, this.pushDirection, false, this.pushDirection.getOpposite()) || blockpos.equals(this.pistonPos)) { ++ if (blockstate.isAir() || !(oldState.canStickTo(blockstate) && blockstate.canStickTo(oldState)) || !PistonBaseBlock.isPushable(blockstate, this.level, blockpos, this.pushDirection, false, this.pushDirection.getOpposite()) || blockpos.equals(this.pistonPos)) { break; } @@ -120,7 +_,7 @@ for(int k = 0; k <= j + l; ++k) { - BlockPos blockpos2 = this.f_60414_.get(k); -- if (m_155937_(this.f_60409_.m_8055_(blockpos2)) && !this.m_60431_(blockpos2)) { -+ if (this.f_60409_.m_8055_(blockpos2).isStickyBlock() && !this.m_60431_(blockpos2)) { + BlockPos blockpos2 = this.toPush.get(k); +- if (isSticky(this.level.getBlockState(blockpos2)) && !this.addBranchingBlocks(blockpos2)) { ++ if (this.level.getBlockState(blockpos2).isStickyBlock() && !this.addBranchingBlocks(blockpos2)) { return false; } } @@ -174,7 +_,7 @@ - if (direction.m_122434_() != this.f_60413_.m_122434_()) { - BlockPos blockpos = p_60432_.m_121945_(direction); - BlockState blockstate1 = this.f_60409_.m_8055_(blockpos); -- if (m_155939_(blockstate1, blockstate) && !this.m_60433_(blockpos, direction)) { -+ if (blockstate1.canStickTo(blockstate) && blockstate.canStickTo(blockstate1) && !this.m_60433_(blockpos, direction)) { + if (direction.getAxis() != this.pushDirection.getAxis()) { + BlockPos blockpos = p_60432_.relative(direction); + BlockState blockstate1 = this.level.getBlockState(blockpos); +- if (canStickToEachOther(blockstate1, blockstate) && !this.addBlockLine(blockpos, direction)) { ++ if (blockstate1.canStickTo(blockstate) && blockstate.canStickTo(blockstate1) && !this.addBlockLine(blockpos, direction)) { return false; } } diff --git a/patches/minecraft/net/minecraft/world/level/block/state/BlockBehaviour.java.patch b/patches/minecraft/net/minecraft/world/level/block/state/BlockBehaviour.java.patch index 0816100077..e27a2e0b4f 100644 --- a/patches/minecraft/net/minecraft/world/level/block/state/BlockBehaviour.java.patch +++ b/patches/minecraft/net/minecraft/world/level/block/state/BlockBehaviour.java.patch @@ -1,10 +1,10 @@ --- a/net/minecraft/world/level/block/state/BlockBehaviour.java +++ b/net/minecraft/world/level/block/state/BlockBehaviour.java @@ -102,6 +_,17 @@ - this.f_60438_ = p_60452_.f_60903_; - this.f_243733_ = p_60452_.f_244138_; - this.f_60439_ = p_60452_; -+ final ResourceLocation lootTableCache = p_60452_.f_60894_; + this.dynamicShape = p_60452_.dynamicShape; + this.requiredFeatures = p_60452_.requiredFeatures; + this.properties = p_60452_; ++ final ResourceLocation lootTableCache = p_60452_.drops; + if (lootTableCache != null) { + this.lootTableSupplier = () -> lootTableCache; + } else if (p_60452_.lootTableSupplier != null) { @@ -12,7 +12,7 @@ + } else { + this.lootTableSupplier = () -> { + ResourceLocation registryName = net.minecraftforge.registries.ForgeRegistries.BLOCKS.getKey((Block) this); -+ return new ResourceLocation(registryName.m_135827_(), "blocks/" + registryName.m_135815_()); ++ return new ResourceLocation(registryName.getNamespace(), "blocks/" + registryName.getPath()); + }; + } } @@ -21,18 +21,18 @@ @@ -150,7 +_,7 @@ /** @deprecated */ @Deprecated - public void m_6810_(BlockState p_60515_, Level p_60516_, BlockPos p_60517_, BlockState p_60518_, boolean p_60519_) { -- if (p_60515_.m_155947_() && !p_60515_.m_60713_(p_60518_.m_60734_())) { -+ if (p_60515_.m_155947_() && (!p_60515_.m_60713_(p_60518_.m_60734_()) || !p_60518_.m_155947_())) { - p_60516_.m_46747_(p_60517_); + public void onRemove(BlockState p_60515_, Level p_60516_, BlockPos p_60517_, BlockState p_60518_, boolean p_60519_) { +- if (p_60515_.hasBlockEntity() && !p_60515_.is(p_60518_.getBlock())) { ++ if (p_60515_.hasBlockEntity() && (!p_60515_.is(p_60518_.getBlock()) || !p_60518_.hasBlockEntity())) { + p_60516_.removeBlockEntity(p_60517_); } @@ -355,14 +_,15 @@ if (f == -1.0F) { return 0.0F; } else { -- int i = p_60467_.m_36298_(p_60466_) ? 30 : 100; -- return p_60467_.m_36281_(p_60466_) / f / (float)i; +- int i = p_60467_.hasCorrectToolForDrops(p_60466_) ? 30 : 100; +- return p_60467_.getDestroySpeed(p_60466_) / f / (float)i; + int i = net.minecraftforge.common.ForgeHooks.isCorrectToolForDrops(p_60466_, p_60467_) ? 30 : 100; + return p_60467_.getDigSpeed(p_60466_, p_60469_) / f / (float)i; } @@ -40,27 +40,27 @@ /** @deprecated */ @Deprecated - public void m_213646_(BlockState p_222949_, ServerLevel p_222950_, BlockPos p_222951_, ItemStack p_222952_, boolean p_222953_) { + public void spawnAfterBreak(BlockState p_222949_, ServerLevel p_222950_, BlockPos p_222951_, ItemStack p_222952_, boolean p_222953_) { + if (p_222953_) net.minecraftforge.common.ForgeHooks.dropXpForBlock(p_222949_, p_222950_, p_222951_, p_222952_); } /** @deprecated */ @@ -389,8 +_,7 @@ - public final ResourceLocation m_60589_() { - if (this.f_60440_ == null) { -- ResourceLocation resourcelocation = BuiltInRegistries.f_256975_.m_7981_(this.m_7374_()); -- this.f_60440_ = resourcelocation.m_246208_("blocks/"); -+ this.f_60440_ = this.lootTableSupplier.get(); + public final ResourceLocation getLootTable() { + if (this.drops == null) { +- ResourceLocation resourcelocation = BuiltInRegistries.BLOCK.getKey(this.asBlock()); +- this.drops = resourcelocation.withPrefix("blocks/"); ++ this.drops = this.lootTableSupplier.get(); } - return this.f_60440_; + return this.drops; @@ -413,6 +_,14 @@ - return this.f_60439_.f_60888_; + return this.properties.destroyTime; } + protected boolean isAir(BlockState state) { -+ return ((BlockStateBase)state).f_60596_; ++ return ((BlockStateBase)state).isAir; + } + + /* ======================================== FORGE START ===================================== */ @@ -68,71 +68,71 @@ + /* ========================================= FORGE END ====================================== */ + public abstract static class BlockStateBase extends StateHolder { - private final int f_60594_; - private final boolean f_60595_; + private final int lightEmission; + private final boolean useShapeForLightOcclusion; @@ -548,12 +_,14 @@ - return this.f_60595_; + return this.useShapeForLightOcclusion; } + /** @deprecated Forge: Use {@link BlockState#getLightEmission(BlockGetter, BlockPos)} instead */ + @Deprecated - public int m_60791_() { - return this.f_60594_; + public int getLightEmission() { + return this.lightEmission; } - public boolean m_60795_() { -- return this.f_60596_; -+ return this.m_60734_().isAir((BlockState)this); + public boolean isAir() { +- return this.isAir; ++ return this.getBlock().isAir((BlockState)this); } - public boolean m_278200_() { + public boolean ignitedByLava() { @@ -567,9 +_,11 @@ } - public MapColor m_284242_(BlockGetter p_285002_, BlockPos p_285293_) { -- return this.f_283893_; -+ return m_60734_().getMapColor(this.m_7160_(), p_285002_, p_285293_, this.f_283893_); + public MapColor getMapColor(BlockGetter p_285002_, BlockPos p_285293_) { +- return this.mapColor; ++ return getBlock().getMapColor(this.asState(), p_285002_, p_285293_, this.mapColor); } + /** @deprecated use {@link BlockState#rotate(LevelAccessor, BlockPos, Rotation)} */ + @Deprecated - public BlockState m_60717_(Rotation p_60718_) { - return this.m_60734_().m_6843_(this.m_7160_(), p_60718_); + public BlockState rotate(Rotation p_60718_) { + return this.getBlock().rotate(this.asState(), p_60718_); } @@ -623,6 +_,8 @@ } - public PushReaction m_60811_() { -+ PushReaction reaction = m_60734_().getPistonPushReaction(m_7160_()); + public PushReaction getPistonPushReaction() { ++ PushReaction reaction = getBlock().getPistonPushReaction(asState()); + if (reaction != null) return reaction; - return this.f_278134_; + return this.pushReaction; } @@ -976,8 +_,9 @@ - boolean f_290592_ = true; - NoteBlockInstrument f_279538_ = NoteBlockInstrument.HARP; - boolean f_279630_; + boolean spawnTerrainParticles = true; + NoteBlockInstrument instrument = NoteBlockInstrument.HARP; + boolean replaceable; + private java.util.function.Supplier lootTableSupplier; - BlockBehaviour.StateArgumentPredicate> f_60897_ = (p_284893_, p_284894_, p_284895_, p_284896_) -> { -- return p_284893_.m_60783_(p_284894_, p_284895_, Direction.UP) && p_284893_.m_60791_() < 14; -+ return p_284893_.m_60783_(p_284894_, p_284895_, Direction.UP) && p_284893_.getLightEmission(p_284894_, p_284895_) < 14; + BlockBehaviour.StateArgumentPredicate> isValidSpawn = (p_284893_, p_284894_, p_284895_, p_284896_) -> { +- return p_284893_.isFaceSturdy(p_284894_, p_284895_, Direction.UP) && p_284893_.getLightEmission() < 14; ++ return p_284893_.isFaceSturdy(p_284894_, p_284895_, Direction.UP) && p_284893_.getLightEmission(p_284894_, p_284895_) < 14; }; - BlockBehaviour.StatePredicate f_60898_ = (p_284888_, p_284889_, p_284890_) -> { - return p_284888_.m_60838_(p_284889_, p_284890_); + BlockBehaviour.StatePredicate isRedstoneConductor = (p_284888_, p_284889_, p_284890_) -> { + return p_284888_.isCollisionShapeFullBlock(p_284889_, p_284890_); @@ -1115,9 +_,15 @@ return this; } + @Deprecated // FORGE: Use the variant that takes a Supplier below - public BlockBehaviour.Properties m_60916_(Block p_60917_) { -- this.f_60894_ = p_60917_.m_60589_(); -+ this.lootTableSupplier = () -> net.minecraftforge.registries.ForgeRegistries.BLOCKS.getDelegateOrThrow(p_60917_).get().m_60589_(); + public BlockBehaviour.Properties dropsLike(Block p_60917_) { +- this.drops = p_60917_.getLootTable(); ++ this.lootTableSupplier = () -> net.minecraftforge.registries.ForgeRegistries.BLOCKS.getDelegateOrThrow(p_60917_).get().getLootTable(); return this; + } + + public BlockBehaviour.Properties lootFrom(java.util.function.Supplier blockIn) { -+ this.lootTableSupplier = () -> blockIn.get().m_60589_(); ++ this.lootTableSupplier = () -> blockIn.get().getLootTable(); + return this; } - public BlockBehaviour.Properties m_278183_() { + public BlockBehaviour.Properties ignitedByLava() { diff --git a/patches/minecraft/net/minecraft/world/level/block/state/BlockState.java.patch b/patches/minecraft/net/minecraft/world/level/block/state/BlockState.java.patch index 180564bd00..cc80eaa344 100644 --- a/patches/minecraft/net/minecraft/world/level/block/state/BlockState.java.patch +++ b/patches/minecraft/net/minecraft/world/level/block/state/BlockState.java.patch @@ -6,6 +6,6 @@ -public class BlockState extends BlockBehaviour.BlockStateBase { +public class BlockState extends BlockBehaviour.BlockStateBase implements net.minecraftforge.common.extensions.IForgeBlockState { - public static final Codec f_61039_ = m_61127_(BuiltInRegistries.f_256975_.m_194605_(), Block::m_49966_).stable(); + public static final Codec CODEC = codec(BuiltInRegistries.BLOCK.byNameCodec(), Block::defaultBlockState).stable(); public BlockState(Block p_61042_, ImmutableMap, Comparable> p_61043_, MapCodec p_61044_) { diff --git a/patches/minecraft/net/minecraft/world/level/chunk/ChunkAccess.java.patch b/patches/minecraft/net/minecraft/world/level/chunk/ChunkAccess.java.patch index 9538fbc649..1e5d204582 100644 --- a/patches/minecraft/net/minecraft/world/level/chunk/ChunkAccess.java.patch +++ b/patches/minecraft/net/minecraft/world/level/chunk/ChunkAccess.java.patch @@ -1,44 +1,44 @@ --- a/net/minecraft/world/level/chunk/ChunkAccess.java +++ b/net/minecraft/world/level/chunk/ChunkAccess.java @@ -299,25 +_,30 @@ - public abstract CompoundTag m_8051_(BlockPos p_62104_); + public abstract CompoundTag getBlockEntityNbtForSaving(BlockPos p_62104_); - public final void m_284254_(BiConsumer p_285269_) { -- this.m_284478_((p_284897_) -> { -- return p_284897_.m_60791_() != 0; + public final void findBlockLightSources(BiConsumer p_285269_) { +- this.findBlocks((p_284897_) -> { +- return p_284897_.getLightEmission() != 0; + this.findBlocks((p_284897_, pos) -> { + return p_284897_.getLightEmission(this, pos) != 0; }, p_285269_); } - public void m_284478_(Predicate p_285343_, BiConsumer p_285030_) { + public void findBlocks(Predicate p_285343_, BiConsumer p_285030_) { + findBlocks((state, pos) -> p_285343_.test(state), p_285030_); + } + + public void findBlocks(java.util.function.BiPredicate p_285343_, BiConsumer p_285030_) { BlockPos.MutableBlockPos blockpos$mutableblockpos = new BlockPos.MutableBlockPos(); - for(int i = this.m_151560_(); i < this.m_151561_(); ++i) { - LevelChunkSection levelchunksection = this.m_183278_(this.m_151566_(i)); -- if (levelchunksection.m_63002_(p_285343_)) { -+ if (levelchunksection.m_63002_((state) -> p_285343_.test(state, BlockPos.f_121853_))) { - BlockPos blockpos = SectionPos.m_123196_(this.f_187604_, i).m_123249_(); + for(int i = this.getMinSection(); i < this.getMaxSection(); ++i) { + LevelChunkSection levelchunksection = this.getSection(this.getSectionIndexFromSectionY(i)); +- if (levelchunksection.maybeHas(p_285343_)) { ++ if (levelchunksection.maybeHas((state) -> p_285343_.test(state, BlockPos.ZERO))) { + BlockPos blockpos = SectionPos.of(this.chunkPos, i).origin(); for(int j = 0; j < 16; ++j) { for(int k = 0; k < 16; ++k) { for(int l = 0; l < 16; ++l) { - BlockState blockstate = levelchunksection.m_62982_(l, j, k); + BlockState blockstate = levelchunksection.getBlockState(l, j, k); - if (p_285343_.test(blockstate)) { -- p_285030_.accept(blockpos$mutableblockpos.m_122154_(blockpos, l, j, k), blockstate); -+ blockpos$mutableblockpos.m_122154_(blockpos, l, j, k); -+ if (p_285343_.test(blockstate, blockpos$mutableblockpos.m_7949_())) { +- p_285030_.accept(blockpos$mutableblockpos.setWithOffset(blockpos, l, j, k), blockstate); ++ blockpos$mutableblockpos.setWithOffset(blockpos, l, j, k); ++ if (p_285343_.test(blockstate, blockpos$mutableblockpos.immutable())) { + p_285030_.accept(blockpos$mutableblockpos, blockstate); } } } @@ -463,4 +_,7 @@ - public static record TicksToSave(SerializableTickContainer f_187680_, SerializableTickContainer f_187681_) { + public static record TicksToSave(SerializableTickContainer blocks, SerializableTickContainer fluids) { } + + @Nullable diff --git a/patches/minecraft/net/minecraft/world/level/chunk/ImposterProtoChunk.java.patch b/patches/minecraft/net/minecraft/world/level/chunk/ImposterProtoChunk.java.patch index 352950cfd4..19bc9721be 100644 --- a/patches/minecraft/net/minecraft/world/level/chunk/ImposterProtoChunk.java.patch +++ b/patches/minecraft/net/minecraft/world/level/chunk/ImposterProtoChunk.java.patch @@ -1,14 +1,14 @@ --- a/net/minecraft/world/level/chunk/ImposterProtoChunk.java +++ b/net/minecraft/world/level/chunk/ImposterProtoChunk.java @@ -181,6 +_,11 @@ - this.f_62685_.m_284478_(p_285465_, p_285061_); + this.wrapped.findBlocks(p_285465_, p_285061_); } + @Override + public void findBlocks(java.util.function.BiPredicate p_285343_, BiConsumer p_285030_) { -+ this.f_62685_.findBlocks(p_285343_, p_285030_); ++ this.wrapped.findBlocks(p_285343_, p_285030_); + } + - public TickContainerAccess m_183531_() { - return this.f_187918_ ? this.f_62685_.m_183531_() : BlackholeTickAccess.m_193144_(); + public TickContainerAccess getBlockTicks() { + return this.allowWrites ? this.wrapped.getBlockTicks() : BlackholeTickAccess.emptyContainer(); } diff --git a/patches/minecraft/net/minecraft/world/level/chunk/LevelChunk.java.patch b/patches/minecraft/net/minecraft/world/level/chunk/LevelChunk.java.patch index 26fe14d78a..08310348e9 100644 --- a/patches/minecraft/net/minecraft/world/level/chunk/LevelChunk.java.patch +++ b/patches/minecraft/net/minecraft/world/level/chunk/LevelChunk.java.patch @@ -6,51 +6,51 @@ -public class LevelChunk extends ChunkAccess { +public class LevelChunk extends ChunkAccess implements net.minecraftforge.common.capabilities.ICapabilityProviderImpl { - static final Logger f_62771_ = LogUtils.getLogger(); - private static final TickingBlockEntity f_156361_ = new TickingBlockEntity() { - public void m_142224_() { + static final Logger LOGGER = LogUtils.getLogger(); + private static final TickingBlockEntity NULL_TICKER = new TickingBlockEntity() { + public void tick() { @@ -94,6 +_,7 @@ - this.f_62791_ = p_196861_; - this.f_62784_ = p_196857_; - this.f_187943_ = p_196858_; + this.postLoad = p_196861_; + this.blockTicks = p_196857_; + this.fluidTicks = p_196858_; + this.capProvider.initInternal(); } public LevelChunk(ServerLevel p_196850_, ProtoChunk p_196851_, @Nullable LevelChunk.PostLoadProcessor p_196852_) { @@ -245,14 +_,14 @@ - boolean flag2 = blockstate.m_155947_(); - if (!this.f_62776_.f_46443_) { - blockstate.m_60753_(this.f_62776_, p_62865_, p_62866_, p_62867_); -- } else if (!blockstate.m_60713_(block) && flag2) { -+ } else if ((!blockstate.m_60713_(block) || !p_62866_.m_155947_()) && flag2) { - this.m_8114_(p_62865_); + boolean flag2 = blockstate.hasBlockEntity(); + if (!this.level.isClientSide) { + blockstate.onRemove(this.level, p_62865_, p_62866_, p_62867_); +- } else if (!blockstate.is(block) && flag2) { ++ } else if ((!blockstate.is(block) || !p_62866_.hasBlockEntity()) && flag2) { + this.removeBlockEntity(p_62865_); } - if (!levelchunksection.m_62982_(j, k, l).m_60713_(block)) { + if (!levelchunksection.getBlockState(j, k, l).is(block)) { return null; } else { -- if (!this.f_62776_.f_46443_) { -+ if (!this.f_62776_.f_46443_ && !this.f_62776_.captureBlockSnapshots) { - p_62866_.m_60696_(this.f_62776_, p_62865_, blockstate, p_62867_); +- if (!this.level.isClientSide) { ++ if (!this.level.isClientSide && !this.level.captureBlockSnapshots) { + p_62866_.onPlace(this.level, p_62865_, blockstate, p_62867_); } @@ -295,6 +_,10 @@ @Nullable - public BlockEntity m_5685_(BlockPos p_62868_, LevelChunk.EntityCreationType p_62869_) { - BlockEntity blockentity = this.f_187610_.get(p_62868_); -+ if (blockentity != null && blockentity.m_58901_()) { -+ f_187610_.remove(p_62868_); + public BlockEntity getBlockEntity(BlockPos p_62868_, LevelChunk.EntityCreationType p_62869_) { + BlockEntity blockentity = this.blockEntities.get(p_62868_); ++ if (blockentity != null && blockentity.isRemoved()) { ++ blockEntities.remove(p_62868_); + blockentity = null; + } if (blockentity == null) { - CompoundTag compoundtag = this.f_187609_.remove(p_62868_); + CompoundTag compoundtag = this.pendingBlockEntities.remove(p_62868_); if (compoundtag != null) { @@ -312,9 +_,6 @@ - this.m_142170_(blockentity); + this.addAndRegisterBlockEntity(blockentity); } } -- } else if (blockentity.m_58901_()) { -- this.f_187610_.remove(p_62868_); +- } else if (blockentity.isRemoved()) { +- this.blockEntities.remove(p_62868_); - return null; } @@ -58,31 +58,31 @@ @@ -330,6 +_,7 @@ } - this.m_156406_(p_156391_); + this.updateBlockEntityTicker(p_156391_); + p_156391_.onLoad(); } } @@ -369,9 +_,14 @@ - public CompoundTag m_8051_(BlockPos p_62932_) { - BlockEntity blockentity = this.m_7702_(p_62932_); - if (blockentity != null && !blockentity.m_58901_()) { + public CompoundTag getBlockEntityNbtForSaving(BlockPos p_62932_) { + BlockEntity blockentity = this.getBlockEntity(p_62932_); + if (blockentity != null && !blockentity.isRemoved()) { + try { - CompoundTag compoundtag1 = blockentity.m_187480_(); - compoundtag1.m_128379_("keepPacked", false); + CompoundTag compoundtag1 = blockentity.saveWithFullMetadata(); + compoundtag1.putBoolean("keepPacked", false); return compoundtag1; + } catch (Exception e) { -+ f_62771_.error("A BlockEntity type {} has thrown an exception trying to write state. It will not persist, Report this to the mod author", blockentity.getClass().getName(), e); ++ LOGGER.error("A BlockEntity type {} has thrown an exception trying to write state. It will not persist, Report this to the mod author", blockentity.getClass().getName(), e); + return null; + } } else { - CompoundTag compoundtag = this.f_187609_.get(p_62932_); + CompoundTag compoundtag = this.pendingBlockEntities.get(p_62932_); if (compoundtag != null) { @@ -455,7 +_,7 @@ p_187974_.accept((p_187968_, p_187969_, p_187970_) -> { - BlockEntity blockentity = this.m_5685_(p_187968_, LevelChunk.EntityCreationType.IMMEDIATE); - if (blockentity != null && p_187970_ != null && blockentity.m_58903_() == p_187969_) { -- blockentity.m_142466_(p_187970_); + BlockEntity blockentity = this.getBlockEntity(p_187968_, LevelChunk.EntityCreationType.IMMEDIATE); + if (blockentity != null && p_187970_ != null && blockentity.getType() == p_187969_) { +- blockentity.load(p_187970_); + blockentity.handleUpdateTag(p_187970_); } @@ -90,18 +90,18 @@ @@ -564,6 +_,7 @@ } - public void m_187957_() { -+ this.f_187610_.values().forEach(BlockEntity::onChunkUnloaded); - this.f_187610_.values().forEach(BlockEntity::m_7651_); - this.f_187610_.clear(); - this.f_156362_.values().forEach((p_187966_) -> { + public void clearAllBlockEntities() { ++ this.blockEntities.values().forEach(BlockEntity::onChunkUnloaded); + this.blockEntities.values().forEach(BlockEntity::setRemoved); + this.blockEntities.clear(); + this.tickersInLevel.values().forEach((p_187966_) -> { @@ -573,6 +_,7 @@ } - public void m_156369_() { -+ this.f_62776_.addFreshBlockEntities(this.f_187610_.values()); - this.f_187610_.values().forEach((p_187988_) -> { - Level level = this.f_62776_; + public void registerAllBlockEntitiesAfterLevelLoad() { ++ this.level.addFreshBlockEntities(this.blockEntities.values()); + this.blockEntities.values().forEach((p_187988_) -> { + Level level = this.level; if (level instanceof ServerLevel serverlevel) { @@ -621,6 +_,41 @@ return new LevelChunk.BoundTickingBlockEntity<>(p_156376_, p_156377_); @@ -143,25 +143,25 @@ + // FORGE END + class BoundTickingBlockEntity implements TickingBlockEntity { - private final T f_156428_; - private final BlockEntityTicker f_156429_; + private final T blockEntity; + private final BlockEntityTicker ticker; @@ -637,6 +_,7 @@ - if (LevelChunk.this.m_156410_(blockpos)) { + if (LevelChunk.this.isTicking(blockpos)) { try { - ProfilerFiller profilerfiller = LevelChunk.this.f_62776_.m_46473_(); -+ net.minecraftforge.server.timings.TimeTracker.BLOCK_ENTITY_UPDATE.trackStart(f_156428_); - profilerfiller.m_6521_(this::m_142280_); - BlockState blockstate = LevelChunk.this.m_8055_(blockpos); - if (this.f_156428_.m_58903_().m_155262_(blockstate)) { + ProfilerFiller profilerfiller = LevelChunk.this.level.getProfiler(); ++ net.minecraftforge.server.timings.TimeTracker.BLOCK_ENTITY_UPDATE.trackStart(blockEntity); + profilerfiller.push(this::getType); + BlockState blockstate = LevelChunk.this.getBlockState(blockpos); + if (this.blockEntity.getType().isValid(blockstate)) { @@ -652,6 +_,12 @@ - CrashReport crashreport = CrashReport.m_127521_(throwable, "Ticking block entity"); - CrashReportCategory crashreportcategory = crashreport.m_127514_("Block entity being ticked"); - this.f_156428_.m_58886_(crashreportcategory); + CrashReport crashreport = CrashReport.forThrowable(throwable, "Ticking block entity"); + CrashReportCategory crashreportcategory = crashreport.addCategory("Block entity being ticked"); + this.blockEntity.fillCrashReportCategory(crashreportcategory); + + if (net.minecraftforge.common.ForgeConfig.SERVER.removeErroringBlockEntities.get()) { -+ f_62771_.error("{}", crashreport.m_127526_()); -+ f_156428_.m_7651_(); -+ LevelChunk.this.m_8114_(f_156428_.m_58899_()); ++ LOGGER.error("{}", crashreport.getFriendlyReport()); ++ blockEntity.setRemoved(); ++ LevelChunk.this.removeBlockEntity(blockEntity.getBlockPos()); + } else throw new ReportedException(crashreport); } @@ -197,7 +197,7 @@ + + @Override + public Level getWorldForge() { -+ return m_62953_(); ++ return getLevel(); } @FunctionalInterface diff --git a/patches/minecraft/net/minecraft/world/level/chunk/PalettedContainer.java.patch b/patches/minecraft/net/minecraft/world/level/chunk/PalettedContainer.java.patch index 4f05476a9b..6049d8f9ac 100644 --- a/patches/minecraft/net/minecraft/world/level/chunk/PalettedContainer.java.patch +++ b/patches/minecraft/net/minecraft/world/level/chunk/PalettedContainer.java.patch @@ -5,6 +5,6 @@ public class PalettedContainer implements PaletteResize, PalettedContainerRO { + // TODO: forceBits-parametered setBits function. -C - private static final int f_188031_ = 0; - private final PaletteResize f_63070_ = (p_238275_, p_238276_) -> { + private static final int MIN_PALETTE_BITS = 0; + private final PaletteResize dummyPaletteResize = (p_238275_, p_238276_) -> { return 0; diff --git a/patches/minecraft/net/minecraft/world/level/chunk/storage/ChunkSerializer.java.patch b/patches/minecraft/net/minecraft/world/level/chunk/storage/ChunkSerializer.java.patch index 3092222307..e0a4e30171 100644 --- a/patches/minecraft/net/minecraft/world/level/chunk/storage/ChunkSerializer.java.patch +++ b/patches/minecraft/net/minecraft/world/level/chunk/storage/ChunkSerializer.java.patch @@ -1,13 +1,13 @@ --- a/net/minecraft/world/level/chunk/storage/ChunkSerializer.java +++ b/net/minecraft/world/level/chunk/storage/ChunkSerializer.java @@ -159,6 +_,7 @@ - return BuiltInRegistries.f_257020_.m_6612_(ResourceLocation.m_135820_(p_258990_)); + return BuiltInRegistries.FLUID.getOptional(ResourceLocation.tryParse(p_258990_)); }, p_188233_); - chunkaccess = new LevelChunk(p_188231_.m_6018_(), p_188233_, upgradedata, levelchunkticks, levelchunkticks1, k1, alevelchunksection, m_196890_(p_188231_, p_188234_), blendingdata); -+ if (p_188234_.m_128441_("ForgeCaps")) ((LevelChunk)chunkaccess).readCapsFromNBT(p_188234_.m_128469_("ForgeCaps")); + chunkaccess = new LevelChunk(p_188231_.getLevel(), p_188233_, upgradedata, levelchunkticks, levelchunkticks1, k1, alevelchunksection, postLoadChunk(p_188231_, p_188234_), blendingdata); ++ if (p_188234_.contains("ForgeCaps")) ((LevelChunk)chunkaccess).readCapsFromNBT(p_188234_.getCompound("ForgeCaps")); } else { - ProtoChunkTicks protochunkticks = ProtoChunkTicks.m_193302_(p_188234_.m_128437_("block_ticks", 10), (p_258992_) -> { - return BuiltInRegistries.f_256975_.m_6612_(ResourceLocation.m_135820_(p_258992_)); + ProtoChunkTicks protochunkticks = ProtoChunkTicks.load(p_188234_.getList("block_ticks", 10), (p_258992_) -> { + return BuiltInRegistries.BLOCK.getOptional(ResourceLocation.tryParse(p_258992_)); @@ -212,6 +_,7 @@ } @@ -17,7 +17,7 @@ } else { ProtoChunk protochunk1 = (ProtoChunk)chunkaccess; @@ -235,6 +_,7 @@ - protochunk1.m_188186_(generationstep$carving, new CarvingMask(compoundtag4.m_128467_(s1), chunkaccess.m_141937_())); + protochunk1.setCarvingMask(generationstep$carving, new CarvingMask(compoundtag4.getLongArray(s1), chunkaccess.getMinBuildHeight())); } + net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.event.level.ChunkDataEvent.Load(chunkaccess, p_188234_, chunkstatus$chunktype)); @@ -27,15 +27,15 @@ @@ -340,6 +_,14 @@ } - compoundtag.m_128365_("CarvingMasks", compoundtag4); + compoundtag.put("CarvingMasks", compoundtag4); + } + else if (p_63456_ instanceof LevelChunk levelChunk){ + try { + final CompoundTag capTag = levelChunk.writeCapsToNBT(); -+ if (capTag != null) compoundtag.m_128365_("ForgeCaps", capTag); ++ if (capTag != null) compoundtag.put("ForgeCaps", capTag); + } catch (Exception exception) { -+ f_63449_.error("A capability provider has thrown an exception trying to write state. It will not persist. Report this to the mod author", exception); ++ LOGGER.error("A capability provider has thrown an exception trying to write state. It will not persist. Report this to the mod author", exception); + } } - m_188235_(p_63455_, compoundtag, p_63456_.m_183568_()); + saveTicks(p_63455_, compoundtag, p_63456_.getTicksForSerialization()); diff --git a/patches/minecraft/net/minecraft/world/level/chunk/storage/EntityStorage.java.patch b/patches/minecraft/net/minecraft/world/level/chunk/storage/EntityStorage.java.patch index 4d10e42090..9e1f0c6ee6 100644 --- a/patches/minecraft/net/minecraft/world/level/chunk/storage/EntityStorage.java.patch +++ b/patches/minecraft/net/minecraft/world/level/chunk/storage/EntityStorage.java.patch @@ -2,14 +2,14 @@ +++ b/net/minecraft/world/level/chunk/storage/EntityStorage.java @@ -89,8 +_,12 @@ ListTag listtag = new ListTag(); - p_156559_.m_156792_().forEach((p_156567_) -> { + p_156559_.getEntities().forEach((p_156567_) -> { CompoundTag compoundtag1 = new CompoundTag(); + try { - if (p_156567_.m_20223_(compoundtag1)) { + if (p_156567_.save(compoundtag1)) { listtag.add(compoundtag1); + } + } catch (Exception e) { -+ f_156535_.error("An Entity type {} has thrown an exception trying to write state. It will not persist. Report this to the mod author", p_156567_.m_6095_(), e); ++ LOGGER.error("An Entity type {} has thrown an exception trying to write state. It will not persist. Report this to the mod author", p_156567_.getType(), e); } }); diff --git a/patches/minecraft/net/minecraft/world/level/dimension/end/EndDragonFight.java.patch b/patches/minecraft/net/minecraft/world/level/dimension/end/EndDragonFight.java.patch index 1adce74cec..d4d6e644a8 100644 --- a/patches/minecraft/net/minecraft/world/level/dimension/end/EndDragonFight.java.patch +++ b/patches/minecraft/net/minecraft/world/level/dimension/end/EndDragonFight.java.patch @@ -1,18 +1,18 @@ --- a/net/minecraft/world/level/dimension/end/EndDragonFight.java +++ b/net/minecraft/world/level/dimension/end/EndDragonFight.java @@ -517,7 +_,14 @@ - endcrystal.m_31052_((BlockPos)null); + endcrystal.setBeamTarget((BlockPos)null); } } - + } + + public void addPlayer(ServerPlayer player) { -+ this.f_64060_.m_6543_(player); ++ this.dragonEvent.addPlayer(player); + } + + public void removePlayer(ServerPlayer player) { -+ this.f_64060_.m_6539_(player); ++ this.dragonEvent.removePlayer(player); } @Nullable diff --git a/patches/minecraft/net/minecraft/world/level/entity/PersistentEntitySectionManager.java.patch b/patches/minecraft/net/minecraft/world/level/entity/PersistentEntitySectionManager.java.patch index 2a6f2b0e17..f0c81f8db5 100644 --- a/patches/minecraft/net/minecraft/world/level/entity/PersistentEntitySectionManager.java.patch +++ b/patches/minecraft/net/minecraft/world/level/entity/PersistentEntitySectionManager.java.patch @@ -1,67 +1,67 @@ --- a/net/minecraft/world/level/entity/PersistentEntitySectionManager.java +++ b/net/minecraft/world/level/entity/PersistentEntitySectionManager.java @@ -71,7 +_,16 @@ - return this.m_157538_(p_157534_, false); + return this.addEntity(p_157534_, false); } + public boolean addNewEntityWithoutEvent(T entity) { + return this.addEntityWithoutEvent(entity, false); + } + - private boolean m_157538_(T p_157539_, boolean p_157540_) { -+ if (p_157539_ instanceof Entity entity && net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.event.entity.EntityJoinLevelEvent(entity, entity.m_9236_(), p_157540_))) return false; + private boolean addEntity(T p_157539_, boolean p_157540_) { ++ if (p_157539_ instanceof Entity entity && net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.event.entity.EntityJoinLevelEvent(entity, entity.level(), p_157540_))) return false; + return addEntityWithoutEvent(p_157539_, p_157540_); + } + + private boolean addEntityWithoutEvent(T p_157539_, boolean p_157540_) { - if (!this.m_157557_(p_157539_)) { + if (!this.addEntityUuid(p_157539_)) { return false; } else { @@ -103,12 +_,14 @@ - public void m_157552_(Stream p_157553_) { + public void addLegacyChunkEntities(Stream p_157553_) { p_157553_.forEach((p_157607_) -> { - this.m_157538_(p_157607_, true); + this.addEntity(p_157607_, true); + if (p_157607_ instanceof Entity entity) entity.onAddedToWorld(); }); } - public void m_157559_(Stream p_157560_) { + public void addWorldGenChunkEntities(Stream p_157560_) { p_157560_.forEach((p_157605_) -> { - this.m_157538_(p_157605_, false); + this.addEntity(p_157605_, false); + if (p_157605_ instanceof Entity entity) entity.onAddedToWorld(); }); } @@ -247,6 +_,7 @@ - while((chunkentities = this.f_157500_.poll()) != null) { - chunkentities.m_156792_().forEach((p_157593_) -> { - this.m_157538_(p_157593_, true); + while((chunkentities = this.loadingInbox.poll()) != null) { + chunkentities.getEntities().forEach((p_157593_) -> { + this.addEntity(p_157593_, true); + if (p_157593_ instanceof Entity entity) entity.onAddedToWorld(); }); - this.f_157498_.put(chunkentities.m_156791_().m_45588_(), PersistentEntitySectionManager.ChunkLoadStatus.LOADED); + this.chunkLoadStatuses.put(chunkentities.getPos().toLong(), PersistentEntitySectionManager.ChunkLoadStatus.LOADED); } @@ -349,11 +_,13 @@ class Callback implements EntityInLevelCallback { - private final T f_157609_; + private final T entity; + private final Entity realEntity; - private long f_157610_; - private EntitySection f_157611_; + private long currentSectionKey; + private EntitySection currentSection; Callback(T p_157614_, long p_157615_, EntitySection p_157616_) { - this.f_157609_ = p_157614_; + this.entity = p_157614_; + this.realEntity = p_157614_ instanceof Entity ? (Entity) p_157614_ : null; - this.f_157610_ = p_157615_; - this.f_157611_ = p_157616_; + this.currentSectionKey = p_157615_; + this.currentSection = p_157616_; } @@ -370,9 +_,11 @@ - PersistentEntitySectionManager.this.m_157509_(this.f_157610_, this.f_157611_); - EntitySection entitysection = PersistentEntitySectionManager.this.f_157495_.m_156893_(i); - entitysection.m_188346_(this.f_157609_); -+ long oldSectionKey = f_157610_; - this.f_157611_ = entitysection; - this.f_157610_ = i; - this.m_157620_(visibility, entitysection.m_156848_()); + PersistentEntitySectionManager.this.removeSectionIfEmpty(this.currentSectionKey, this.currentSection); + EntitySection entitysection = PersistentEntitySectionManager.this.sectionStorage.getOrCreateSection(i); + entitysection.add(this.entity); ++ long oldSectionKey = currentSectionKey; + this.currentSection = entitysection; + this.currentSectionKey = i; + this.updateStatus(visibility, entitysection.getStatus()); + if (this.realEntity != null) net.minecraftforge.common.ForgeHooks.onEntityEnterSection(this.realEntity, oldSectionKey, i); } diff --git a/patches/minecraft/net/minecraft/world/level/entity/TransientEntitySectionManager.java.patch b/patches/minecraft/net/minecraft/world/level/entity/TransientEntitySectionManager.java.patch index ca16a54879..39578727b1 100644 --- a/patches/minecraft/net/minecraft/world/level/entity/TransientEntitySectionManager.java.patch +++ b/patches/minecraft/net/minecraft/world/level/entity/TransientEntitySectionManager.java.patch @@ -3,27 +3,27 @@ @@ -92,11 +_,13 @@ class Callback implements EntityInLevelCallback { - private final T f_157668_; + private final T entity; + private final Entity realEntity; - private long f_157669_; - private EntitySection f_157670_; + private long currentSectionKey; + private EntitySection currentSection; Callback(T p_157673_, long p_157674_, EntitySection p_157675_) { - this.f_157668_ = p_157673_; + this.entity = p_157673_; + this.realEntity = p_157673_ instanceof Entity ? (Entity) p_157673_ : null; - this.f_157669_ = p_157674_; - this.f_157670_ = p_157675_; + this.currentSectionKey = p_157674_; + this.currentSection = p_157675_; } @@ -113,6 +_,7 @@ - TransientEntitySectionManager.this.m_157648_(this.f_157669_, this.f_157670_); - EntitySection entitysection = TransientEntitySectionManager.this.f_157638_.m_156893_(i); - entitysection.m_188346_(this.f_157668_); -+ long oldSectionKey = f_157669_; - this.f_157670_ = entitysection; - this.f_157669_ = i; - TransientEntitySectionManager.this.f_157636_.m_214006_(this.f_157668_); + TransientEntitySectionManager.this.removeSectionIfEmpty(this.currentSectionKey, this.currentSection); + EntitySection entitysection = TransientEntitySectionManager.this.sectionStorage.getOrCreateSection(i); + entitysection.add(this.entity); ++ long oldSectionKey = currentSectionKey; + this.currentSection = entitysection; + this.currentSectionKey = i; + TransientEntitySectionManager.this.callbacks.onSectionChange(this.entity); @@ -125,6 +_,7 @@ - TransientEntitySectionManager.this.f_157636_.m_141987_(this.f_157668_); + TransientEntitySectionManager.this.callbacks.onTickingStart(this.entity); } } + if (this.realEntity != null) net.minecraftforge.common.ForgeHooks.onEntityEnterSection(this.realEntity, oldSectionKey, i); diff --git a/patches/minecraft/net/minecraft/world/level/levelgen/Beardifier.java.patch b/patches/minecraft/net/minecraft/world/level/levelgen/Beardifier.java.patch index 32a9679010..5d31f94d49 100644 --- a/patches/minecraft/net/minecraft/world/level/levelgen/Beardifier.java.patch +++ b/patches/minecraft/net/minecraft/world/level/levelgen/Beardifier.java.patch @@ -2,8 +2,8 @@ +++ b/net/minecraft/world/level/levelgen/Beardifier.java @@ -43,6 +_,11 @@ - for(StructurePiece structurepiece : p_223936_.m_73602_()) { - if (structurepiece.m_73411_(p_223939_, 12)) { + for(StructurePiece structurepiece : p_223936_.getPieces()) { + if (structurepiece.isCloseToChunk(p_223939_, 12)) { + if (structurepiece instanceof net.minecraftforge.common.world.PieceBeardifierModifier pieceBeardifierModifier) { + if (pieceBeardifierModifier.getTerrainAdjustment() != TerrainAdjustment.NONE) { + objectlist.add(new Beardifier.Rigid(pieceBeardifierModifier.getBeardifierBox(), pieceBeardifierModifier.getTerrainAdjustment(), pieceBeardifierModifier.getGroundLevelDelta())); @@ -11,4 +11,4 @@ + } else if (structurepiece instanceof PoolElementStructurePiece) { PoolElementStructurePiece poolelementstructurepiece = (PoolElementStructurePiece)structurepiece; - StructureTemplatePool.Projection structuretemplatepool$projection = poolelementstructurepiece.m_209918_().m_210539_(); + StructureTemplatePool.Projection structuretemplatepool$projection = poolelementstructurepiece.getElement().getProjection(); diff --git a/patches/minecraft/net/minecraft/world/level/levelgen/DebugLevelSource.java.patch b/patches/minecraft/net/minecraft/world/level/levelgen/DebugLevelSource.java.patch index 0d8f0572be..0bf6ba2c7a 100644 --- a/patches/minecraft/net/minecraft/world/level/levelgen/DebugLevelSource.java.patch +++ b/patches/minecraft/net/minecraft/world/level/levelgen/DebugLevelSource.java.patch @@ -5,11 +5,11 @@ } + public static void initValidStates() { -+ f_64114_ = StreamSupport.stream(BuiltInRegistries.f_256975_.spliterator(), false).flatMap(block -> block.m_49965_().m_61056_().stream()).collect(Collectors.toList()); -+ f_64115_ = Mth.m_14167_(Mth.m_14116_(f_64114_.size())); -+ f_64116_ = Mth.m_14167_((float) (f_64114_.size() / f_64115_)); ++ ALL_BLOCKS = StreamSupport.stream(BuiltInRegistries.BLOCK.spliterator(), false).flatMap(block -> block.getStateDefinition().getPossibleStates().stream()).collect(Collectors.toList()); ++ GRID_WIDTH = Mth.ceil(Mth.sqrt(ALL_BLOCKS.size())); ++ GRID_HEIGHT = Mth.ceil((float) (ALL_BLOCKS.size() / GRID_WIDTH)); + } + - public void m_213679_(WorldGenRegion p_223970_, long p_223971_, RandomState p_223972_, BiomeManager p_223973_, StructureManager p_223974_, ChunkAccess p_223975_, GenerationStep.Carving p_223976_) { + public void applyCarvers(WorldGenRegion p_223970_, long p_223971_, RandomState p_223972_, BiomeManager p_223973_, StructureManager p_223974_, ChunkAccess p_223975_, GenerationStep.Carving p_223976_) { } diff --git a/patches/minecraft/net/minecraft/world/level/levelgen/PhantomSpawner.java.patch b/patches/minecraft/net/minecraft/world/level/levelgen/PhantomSpawner.java.patch index 70ef020884..f0f9c04191 100644 --- a/patches/minecraft/net/minecraft/world/level/levelgen/PhantomSpawner.java.patch +++ b/patches/minecraft/net/minecraft/world/level/levelgen/PhantomSpawner.java.patch @@ -1,29 +1,29 @@ --- a/net/minecraft/world/level/levelgen/PhantomSpawner.java +++ b/net/minecraft/world/level/levelgen/PhantomSpawner.java @@ -42,19 +_,22 @@ - for(ServerPlayer serverplayer : p_64576_.m_6907_()) { - if (!serverplayer.m_5833_()) { - BlockPos blockpos = serverplayer.m_20183_(); -- if (!p_64576_.m_6042_().f_223549_() || blockpos.m_123342_() >= p_64576_.m_5736_() && p_64576_.m_45527_(blockpos)) { -- DifficultyInstance difficultyinstance = p_64576_.m_6436_(blockpos); -+ DifficultyInstance difficultyinstance = p_64576_.m_6436_(blockpos); -+ var event = new net.minecraftforge.event.entity.player.PlayerSpawnPhantomsEvent(serverplayer, 1 + randomsource.m_188503_(difficultyinstance.m_19048_().m_19028_() + 1)); + for(ServerPlayer serverplayer : p_64576_.players()) { + if (!serverplayer.isSpectator()) { + BlockPos blockpos = serverplayer.blockPosition(); +- if (!p_64576_.dimensionType().hasSkyLight() || blockpos.getY() >= p_64576_.getSeaLevel() && p_64576_.canSeeSky(blockpos)) { +- DifficultyInstance difficultyinstance = p_64576_.getCurrentDifficultyAt(blockpos); ++ DifficultyInstance difficultyinstance = p_64576_.getCurrentDifficultyAt(blockpos); ++ var event = new net.minecraftforge.event.entity.player.PlayerSpawnPhantomsEvent(serverplayer, 1 + randomsource.nextInt(difficultyinstance.getDifficulty().getId() + 1)); + net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(event); + if (event.getResult() == net.minecraftforge.eventbus.api.Event.Result.DENY) continue; -+ if (event.getResult() == net.minecraftforge.eventbus.api.Event.Result.ALLOW || !p_64576_.m_6042_().f_223549_() || blockpos.m_123342_() >= p_64576_.m_5736_() && p_64576_.m_45527_(blockpos)) { - if (difficultyinstance.m_19049_(randomsource.m_188501_() * 3.0F)) { - ServerStatsCounter serverstatscounter = serverplayer.m_8951_(); - int j = Mth.m_14045_(serverstatscounter.m_13015_(Stats.f_12988_.m_12902_(Stats.f_12992_)), 1, Integer.MAX_VALUE); ++ if (event.getResult() == net.minecraftforge.eventbus.api.Event.Result.ALLOW || !p_64576_.dimensionType().hasSkyLight() || blockpos.getY() >= p_64576_.getSeaLevel() && p_64576_.canSeeSky(blockpos)) { + if (difficultyinstance.isHarderThan(randomsource.nextFloat() * 3.0F)) { + ServerStatsCounter serverstatscounter = serverplayer.getStats(); + int j = Mth.clamp(serverstatscounter.getValue(Stats.CUSTOM.get(Stats.TIME_SINCE_REST)), 1, Integer.MAX_VALUE); int k = 24000; -- if (randomsource.m_188503_(j) >= 72000) { -+ if (event.getResult() == net.minecraftforge.eventbus.api.Event.Result.ALLOW || randomsource.m_188503_(j) >= 72000) { - BlockPos blockpos1 = blockpos.m_6630_(20 + randomsource.m_188503_(15)).m_122030_(-10 + randomsource.m_188503_(21)).m_122020_(-10 + randomsource.m_188503_(21)); - BlockState blockstate = p_64576_.m_8055_(blockpos1); - FluidState fluidstate = p_64576_.m_6425_(blockpos1); - if (NaturalSpawner.m_47056_(p_64576_, blockpos1, blockstate, fluidstate, EntityType.f_20509_)) { +- if (randomsource.nextInt(j) >= 72000) { ++ if (event.getResult() == net.minecraftforge.eventbus.api.Event.Result.ALLOW || randomsource.nextInt(j) >= 72000) { + BlockPos blockpos1 = blockpos.above(20 + randomsource.nextInt(15)).east(-10 + randomsource.nextInt(21)).south(-10 + randomsource.nextInt(21)); + BlockState blockstate = p_64576_.getBlockState(blockpos1); + FluidState fluidstate = p_64576_.getFluidState(blockpos1); + if (NaturalSpawner.isValidEmptySpawnBlock(p_64576_, blockpos1, blockstate, fluidstate, EntityType.PHANTOM)) { SpawnGroupData spawngroupdata = null; -- int l = 1 + randomsource.m_188503_(difficultyinstance.m_19048_().m_19028_() + 1); +- int l = 1 + randomsource.nextInt(difficultyinstance.getDifficulty().getId() + 1); + int l = event.getPhantomsToSpawn(); for(int i1 = 0; i1 < l; ++i1) { - Phantom phantom = EntityType.f_20509_.m_20615_(p_64576_); + Phantom phantom = EntityType.PHANTOM.create(p_64576_); diff --git a/patches/minecraft/net/minecraft/world/level/levelgen/feature/Feature.java.patch b/patches/minecraft/net/minecraft/world/level/levelgen/feature/Feature.java.patch index a496c1b031..a7303c0bd6 100644 --- a/patches/minecraft/net/minecraft/world/level/levelgen/feature/Feature.java.patch +++ b/patches/minecraft/net/minecraft/world/level/levelgen/feature/Feature.java.patch @@ -3,9 +3,9 @@ @@ -156,7 +_,7 @@ } - protected static boolean m_159747_(BlockState p_159748_) { -- return p_159748_.m_204336_(BlockTags.f_13061_); -+ return p_159748_.m_204336_(net.minecraftforge.common.Tags.Blocks.STONE); + protected static boolean isStone(BlockState p_159748_) { +- return p_159748_.is(BlockTags.BASE_STONE_OVERWORLD); ++ return p_159748_.is(net.minecraftforge.common.Tags.Blocks.STONE); } - public static boolean m_159759_(BlockState p_159760_) { + public static boolean isDirt(BlockState p_159760_) { diff --git a/patches/minecraft/net/minecraft/world/level/levelgen/feature/MonsterRoomFeature.java.patch b/patches/minecraft/net/minecraft/world/level/levelgen/feature/MonsterRoomFeature.java.patch index 54aa49358c..f4592440b2 100644 --- a/patches/minecraft/net/minecraft/world/level/levelgen/feature/MonsterRoomFeature.java.patch +++ b/patches/minecraft/net/minecraft/world/level/levelgen/feature/MonsterRoomFeature.java.patch @@ -3,8 +3,8 @@ @@ -128,6 +_,6 @@ } - private EntityType m_225153_(RandomSource p_225154_) { -- return Util.m_214670_(f_66341_, p_225154_); + private EntityType randomEntityId(RandomSource p_225154_) { +- return Util.getRandom(MOBS, p_225154_); + return net.minecraftforge.common.DungeonHooks.getRandomDungeonMob(p_225154_); } } diff --git a/patches/minecraft/net/minecraft/world/level/levelgen/feature/configurations/TreeConfiguration.java.patch b/patches/minecraft/net/minecraft/world/level/levelgen/feature/configurations/TreeConfiguration.java.patch index bdc0043a5d..3811a534b5 100644 --- a/patches/minecraft/net/minecraft/world/level/levelgen/feature/configurations/TreeConfiguration.java.patch +++ b/patches/minecraft/net/minecraft/world/level/levelgen/feature/configurations/TreeConfiguration.java.patch @@ -1,10 +1,10 @@ --- a/net/minecraft/world/level/levelgen/feature/configurations/TreeConfiguration.java +++ b/net/minecraft/world/level/levelgen/feature/configurations/TreeConfiguration.java @@ -37,6 +_,7 @@ - return p_225470_.f_161215_; + return p_225470_.forceDirt; })).apply(p_225468_, TreeConfiguration::new); }); + //TODO: Review this, see if we can hook in the sapling into the Codec - public final BlockStateProvider f_68185_; - public final BlockStateProvider f_161212_; - public final TrunkPlacer f_68190_; + public final BlockStateProvider trunkProvider; + public final BlockStateProvider dirtProvider; + public final TrunkPlacer trunkPlacer; diff --git a/patches/minecraft/net/minecraft/world/level/levelgen/feature/treedecorators/AlterGroundDecorator.java.patch b/patches/minecraft/net/minecraft/world/level/levelgen/feature/treedecorators/AlterGroundDecorator.java.patch index 00200b48fe..1cd7bc11e1 100644 --- a/patches/minecraft/net/minecraft/world/level/levelgen/feature/treedecorators/AlterGroundDecorator.java.patch +++ b/patches/minecraft/net/minecraft/world/level/levelgen/feature/treedecorators/AlterGroundDecorator.java.patch @@ -2,10 +2,10 @@ +++ b/net/minecraft/world/level/levelgen/feature/treedecorators/AlterGroundDecorator.java @@ -72,7 +_,7 @@ for(int i = 2; i >= -3; --i) { - BlockPos blockpos = p_225975_.m_6630_(i); - if (Feature.m_65788_(p_225974_.m_226058_(), blockpos)) { -- p_225974_.m_226061_(blockpos, this.f_69303_.m_213972_(p_225974_.m_226067_(), p_225975_)); -+ p_225974_.m_226061_(blockpos, net.minecraftforge.event.ForgeEventFactory.alterGround(p_225974_.m_226058_(), p_225974_.m_226067_(), blockpos, this.f_69303_.m_213972_(p_225974_.m_226067_(), p_225975_))); + BlockPos blockpos = p_225975_.above(i); + if (Feature.isGrassOrDirt(p_225974_.level(), blockpos)) { +- p_225974_.setBlock(blockpos, this.provider.getState(p_225974_.random(), p_225975_)); ++ p_225974_.setBlock(blockpos, net.minecraftforge.event.ForgeEventFactory.alterGround(p_225974_.level(), p_225974_.random(), blockpos, this.provider.getState(p_225974_.random(), p_225975_))); break; } diff --git a/patches/minecraft/net/minecraft/world/level/levelgen/feature/trunkplacers/TrunkPlacer.java.patch b/patches/minecraft/net/minecraft/world/level/levelgen/feature/trunkplacers/TrunkPlacer.java.patch index 7004dcaac7..fb44847919 100644 --- a/patches/minecraft/net/minecraft/world/level/levelgen/feature/trunkplacers/TrunkPlacer.java.patch +++ b/patches/minecraft/net/minecraft/world/level/levelgen/feature/trunkplacers/TrunkPlacer.java.patch @@ -3,9 +3,9 @@ @@ -58,7 +_,7 @@ } - protected static void m_226169_(LevelSimulatedReader p_226170_, BiConsumer p_226171_, RandomSource p_226172_, BlockPos p_226173_, TreeConfiguration p_226174_) { -- if (p_226174_.f_161215_ || !m_70295_(p_226170_, p_226173_)) { -+ if (!(((net.minecraft.world.level.LevelReader) p_226170_).m_8055_(p_226173_).onTreeGrow((net.minecraft.world.level.LevelReader) p_226170_, p_226171_, p_226172_, p_226173_, p_226174_)) && (p_226174_.f_161215_ || !m_70295_(p_226170_, p_226173_))) { - p_226171_.accept(p_226173_, p_226174_.f_161212_.m_213972_(p_226172_, p_226173_)); + protected static void setDirtAt(LevelSimulatedReader p_226170_, BiConsumer p_226171_, RandomSource p_226172_, BlockPos p_226173_, TreeConfiguration p_226174_) { +- if (p_226174_.forceDirt || !isDirt(p_226170_, p_226173_)) { ++ if (!(((net.minecraft.world.level.LevelReader) p_226170_).getBlockState(p_226173_).onTreeGrow((net.minecraft.world.level.LevelReader) p_226170_, p_226171_, p_226172_, p_226173_, p_226174_)) && (p_226174_.forceDirt || !isDirt(p_226170_, p_226173_))) { + p_226171_.accept(p_226173_, p_226174_.dirtProvider.getState(p_226172_, p_226173_)); } diff --git a/patches/minecraft/net/minecraft/world/level/levelgen/structure/Structure.java.patch b/patches/minecraft/net/minecraft/world/level/levelgen/structure/Structure.java.patch index a9b18ac3a4..3221b97910 100644 --- a/patches/minecraft/net/minecraft/world/level/levelgen/structure/Structure.java.patch +++ b/patches/minecraft/net/minecraft/world/level/levelgen/structure/Structure.java.patch @@ -2,15 +2,15 @@ +++ b/net/minecraft/world/level/levelgen/structure/Structure.java @@ -41,11 +_,12 @@ public abstract class Structure { - public static final Codec f_226553_ = BuiltInRegistries.f_256763_.m_194605_().dispatch(Structure::m_213658_, StructureType::m_226884_); - public static final Codec> f_226554_ = RegistryFileCodec.m_135589_(Registries.f_256944_, f_226553_); -- protected final Structure.StructureSettings f_226555_; + public static final Codec DIRECT_CODEC = BuiltInRegistries.STRUCTURE_TYPE.byNameCodec().dispatch(Structure::type, StructureType::codec); + public static final Codec> CODEC = RegistryFileCodec.create(Registries.STRUCTURE, DIRECT_CODEC); +- protected final Structure.StructureSettings settings; + //Forge: Make this field private so that the redirect coremod can target it -+ private final Structure.StructureSettings f_226555_; ++ private final Structure.StructureSettings settings; - public static RecordCodecBuilder m_226567_(RecordCodecBuilder.Instance p_226568_) { - return Structure.StructureSettings.f_226688_.forGetter((p_226595_) -> { -- return p_226595_.f_226555_; + public static RecordCodecBuilder settingsCodec(RecordCodecBuilder.Instance p_226568_) { + return Structure.StructureSettings.CODEC.forGetter((p_226595_) -> { +- return p_226595_.settings; + return p_226595_.modifiableStructureInfo().getOriginalStructureInfo().structureSettings(); // FORGE: Patch codec to ignore field redirect coremods. }); } @@ -18,15 +18,15 @@ @@ -57,6 +_,7 @@ protected Structure(Structure.StructureSettings p_226558_) { - this.f_226555_ = p_226558_; + this.settings = p_226558_; + this.modifiableStructureInfo = new net.minecraftforge.common.world.ModifiableStructureInfo(new net.minecraftforge.common.world.ModifiableStructureInfo.StructureInfo(p_226558_)); // FORGE: cache original structure info on construction so we can bypass our field read coremods where necessary } - public HolderSet m_226559_() { + public HolderSet biomes() { @@ -157,6 +_,29 @@ } - public abstract StructureType m_213658_(); + public abstract StructureType type(); + + // FORGE START + @@ -51,5 +51,5 @@ + + // FORGE END - public static record GenerationContext(RegistryAccess f_226621_, ChunkGenerator f_226622_, BiomeSource f_226623_, RandomState f_226624_, StructureTemplateManager f_226625_, WorldgenRandom f_226626_, long f_226627_, ChunkPos f_226628_, LevelHeightAccessor f_226629_, Predicate> f_226630_) { + public static record GenerationContext(RegistryAccess registryAccess, ChunkGenerator chunkGenerator, BiomeSource biomeSource, RandomState randomState, StructureTemplateManager structureTemplateManager, WorldgenRandom random, long seed, ChunkPos chunkPos, LevelHeightAccessor heightAccessor, Predicate> validBiome) { public GenerationContext(RegistryAccess p_226632_, ChunkGenerator p_226633_, BiomeSource p_226634_, RandomState p_226635_, StructureTemplateManager p_226636_, long p_226637_, ChunkPos p_226638_, LevelHeightAccessor p_226639_, Predicate> p_226640_) { diff --git a/patches/minecraft/net/minecraft/world/level/levelgen/structure/StructurePiece.java.patch b/patches/minecraft/net/minecraft/world/level/levelgen/structure/StructurePiece.java.patch index 637a6b4158..c758c6d31a 100644 --- a/patches/minecraft/net/minecraft/world/level/levelgen/structure/StructurePiece.java.patch +++ b/patches/minecraft/net/minecraft/world/level/levelgen/structure/StructurePiece.java.patch @@ -3,10 +3,10 @@ @@ -71,6 +_,9 @@ } - public final CompoundTag m_192644_(StructurePieceSerializationContext p_192645_) { -+ if (BuiltInRegistries.f_257014_.m_7981_(this.m_210000_()) == null) { // FORGE: Friendlier error then the Null String error below. -+ throw new RuntimeException("StructurePiece \"" + this.getClass().getName() + "\": \"" + this.m_210000_() + "\" unregistered, serializing impossible."); + public final CompoundTag createTag(StructurePieceSerializationContext p_192645_) { ++ if (BuiltInRegistries.STRUCTURE_PIECE.getKey(this.getType()) == null) { // FORGE: Friendlier error then the Null String error below. ++ throw new RuntimeException("StructurePiece \"" + this.getClass().getName() + "\": \"" + this.getType() + "\" unregistered, serializing impossible."); + } CompoundTag compoundtag = new CompoundTag(); - compoundtag.m_128359_("id", BuiltInRegistries.f_257014_.m_7981_(this.m_210000_()).toString()); - BoundingBox.f_162354_.encodeStart(NbtOps.f_128958_, this.f_73383_).resultOrPartial(f_163536_::error).ifPresent((p_163579_) -> { + compoundtag.putString("id", BuiltInRegistries.STRUCTURE_PIECE.getKey(this.getType()).toString()); + BoundingBox.CODEC.encodeStart(NbtOps.INSTANCE, this.boundingBox).resultOrPartial(LOGGER::error).ifPresent((p_163579_) -> { diff --git a/patches/minecraft/net/minecraft/world/level/levelgen/structure/StructureStart.java.patch b/patches/minecraft/net/minecraft/world/level/levelgen/structure/StructureStart.java.patch index 4d09bb217e..146a1a1480 100644 --- a/patches/minecraft/net/minecraft/world/level/levelgen/structure/StructureStart.java.patch +++ b/patches/minecraft/net/minecraft/world/level/levelgen/structure/StructureStart.java.patch @@ -1,12 +1,12 @@ --- a/net/minecraft/world/level/levelgen/structure/StructureStart.java +++ b/net/minecraft/world/level/levelgen/structure/StructureStart.java @@ -98,6 +_,9 @@ - public CompoundTag m_192660_(StructurePieceSerializationContext p_192661_, ChunkPos p_192662_) { + public CompoundTag createTag(StructurePieceSerializationContext p_192661_, ChunkPos p_192662_) { CompoundTag compoundtag = new CompoundTag(); - if (this.m_73603_()) { -+ if (p_192661_.f_192763_().m_175515_(Registries.f_256944_).m_7981_(this.m_226861_()) == null) { // FORGE: This is just a more friendly error instead of the 'Null String' below -+ throw new RuntimeException("StructureStart \"" + this.getClass().getName() + "\": \"" + this.m_226861_() + "\" unregistered, serializing impossible."); + if (this.isValid()) { ++ if (p_192661_.registryAccess().registryOrThrow(Registries.STRUCTURE).getKey(this.getStructure()) == null) { // FORGE: This is just a more friendly error instead of the 'Null String' below ++ throw new RuntimeException("StructureStart \"" + this.getClass().getName() + "\": \"" + this.getStructure() + "\" unregistered, serializing impossible."); + } - compoundtag.m_128359_("id", p_192661_.f_192763_().m_175515_(Registries.f_256944_).m_7981_(this.f_226844_).toString()); - compoundtag.m_128405_("ChunkX", p_192662_.f_45578_); - compoundtag.m_128405_("ChunkZ", p_192662_.f_45579_); + compoundtag.putString("id", p_192661_.registryAccess().registryOrThrow(Registries.STRUCTURE).getKey(this.structure).toString()); + compoundtag.putInt("ChunkX", p_192662_.x); + compoundtag.putInt("ChunkZ", p_192662_.z); diff --git a/patches/minecraft/net/minecraft/world/level/levelgen/structure/templatesystem/StructureProcessor.java.patch b/patches/minecraft/net/minecraft/world/level/levelgen/structure/templatesystem/StructureProcessor.java.patch index cde7ef687d..87f16465ed 100644 --- a/patches/minecraft/net/minecraft/world/level/levelgen/structure/templatesystem/StructureProcessor.java.patch +++ b/patches/minecraft/net/minecraft/world/level/levelgen/structure/templatesystem/StructureProcessor.java.patch @@ -9,15 +9,15 @@ + */ + @Deprecated @Nullable - public StructureTemplate.StructureBlockInfo m_7382_(LevelReader p_74416_, BlockPos p_74417_, BlockPos p_74418_, StructureTemplate.StructureBlockInfo p_74419_, StructureTemplate.StructureBlockInfo p_74420_, StructurePlaceSettings p_74421_) { + public StructureTemplate.StructureBlockInfo processBlock(LevelReader p_74416_, BlockPos p_74417_, BlockPos p_74418_, StructureTemplate.StructureBlockInfo p_74419_, StructureTemplate.StructureBlockInfo p_74420_, StructurePlaceSettings p_74421_) { return p_74420_; } - protected abstract StructureProcessorType m_6953_(); + protected abstract StructureProcessorType getType(); + + @Nullable + public StructureTemplate.StructureBlockInfo process(LevelReader p_74140_, BlockPos p_74141_, BlockPos p_74142_, StructureTemplate.StructureBlockInfo p_74143_, StructureTemplate.StructureBlockInfo p_74144_, StructurePlaceSettings p_74145_, @Nullable StructureTemplate template) { -+ return m_7382_(p_74140_, p_74141_, p_74142_, p_74143_, p_74144_, p_74145_); ++ return processBlock(p_74140_, p_74141_, p_74142_, p_74143_, p_74144_, p_74145_); + } + + /** @@ -39,5 +39,5 @@ + return entityInfo; + } - public List m_276976_(ServerLevelAccessor p_278247_, BlockPos p_277590_, BlockPos p_277935_, List p_278070_, List p_278053_, StructurePlaceSettings p_277497_) { + public List finalizeProcessing(ServerLevelAccessor p_278247_, BlockPos p_277590_, BlockPos p_277935_, List p_278070_, List p_278053_, StructurePlaceSettings p_277497_) { return p_278053_; diff --git a/patches/minecraft/net/minecraft/world/level/levelgen/structure/templatesystem/StructureTemplate.java.patch b/patches/minecraft/net/minecraft/world/level/levelgen/structure/templatesystem/StructureTemplate.java.patch index 60bf55bee7..ba9b813b20 100644 --- a/patches/minecraft/net/minecraft/world/level/levelgen/structure/templatesystem/StructureTemplate.java.patch +++ b/patches/minecraft/net/minecraft/world/level/levelgen/structure/templatesystem/StructureTemplate.java.patch @@ -1,30 +1,30 @@ --- a/net/minecraft/world/level/levelgen/structure/templatesystem/StructureTemplate.java +++ b/net/minecraft/world/level/levelgen/structure/templatesystem/StructureTemplate.java @@ -201,6 +_,10 @@ - return m_74593_(p_74565_, p_74564_.m_74401_(), p_74564_.m_74404_(), p_74564_.m_74407_()); + return transform(p_74565_, p_74564_.getMirror(), p_74564_.getRotation(), p_74564_.getRotationPivot()); } + public static Vec3 transformedVec3d(StructurePlaceSettings placementIn, Vec3 pos) { -+ return m_74578_(pos, placementIn.m_74401_(), placementIn.m_74404_(), placementIn.m_74407_()); ++ return transform(pos, placementIn.getMirror(), placementIn.getRotation(), placementIn.getRotationPivot()); + } + - public boolean m_230328_(ServerLevelAccessor p_230329_, BlockPos p_230330_, BlockPos p_230331_, StructurePlaceSettings p_230332_, RandomSource p_230333_, int p_230334_) { - if (this.f_74482_.isEmpty()) { + public boolean placeInWorld(ServerLevelAccessor p_230329_, BlockPos p_230330_, BlockPos p_230331_, StructurePlaceSettings p_230332_, RandomSource p_230333_, int p_230334_) { + if (this.palettes.isEmpty()) { return false; @@ -218,7 +_,7 @@ int i1 = Integer.MIN_VALUE; int j1 = Integer.MIN_VALUE; -- for(StructureTemplate.StructureBlockInfo structuretemplate$structureblockinfo : m_74517_(p_230329_, p_230330_, p_230331_, p_230332_, list)) { +- for(StructureTemplate.StructureBlockInfo structuretemplate$structureblockinfo : processBlockInfos(p_230329_, p_230330_, p_230331_, p_230332_, list)) { + for(StructureTemplate.StructureBlockInfo structuretemplate$structureblockinfo : processBlockInfos(p_230329_, p_230330_, p_230331_, p_230332_, list, this)) { - BlockPos blockpos = structuretemplate$structureblockinfo.f_74675_; - if (boundingbox == null || boundingbox.m_71051_(blockpos)) { - FluidState fluidstate = p_230332_.m_74413_() ? p_230329_.m_6425_(blockpos) : null; + BlockPos blockpos = structuretemplate$structureblockinfo.pos; + if (boundingbox == null || boundingbox.isInside(blockpos)) { + FluidState fluidstate = p_230332_.shouldKeepLiquids() ? p_230329_.getFluidState(blockpos) : null; @@ -330,7 +_,7 @@ } - if (!p_230332_.m_74408_()) { -- this.m_74523_(p_230329_, p_230330_, p_230332_.m_74401_(), p_230332_.m_74404_(), p_230332_.m_74407_(), boundingbox, p_230332_.m_74414_()); + if (!p_230332_.isIgnoreEntities()) { +- this.placeEntities(p_230329_, p_230330_, p_230332_.getMirror(), p_230332_.getRotation(), p_230332_.getRotationPivot(), boundingbox, p_230332_.shouldFinalizeEntities()); + this.addEntitiesToWorld(p_230329_, p_230330_, p_230332_); } @@ -37,7 +37,7 @@ + * @deprecated Forge: Use {@link #processBlockInfos(ServerLevelAccessor, BlockPos, BlockPos, StructurePlaceSettings, List, StructureTemplate)} instead. + */ + @Deprecated - public static List m_74517_(ServerLevelAccessor p_278297_, BlockPos p_74519_, BlockPos p_74520_, StructurePlaceSettings p_74521_, List p_74522_) { + public static List processBlockInfos(ServerLevelAccessor p_278297_, BlockPos p_74519_, BlockPos p_74520_, StructurePlaceSettings p_74521_, List p_74522_) { + return processBlockInfos(p_278297_, p_74519_, p_74520_, p_74521_, p_74522_, null); + } + @@ -46,11 +46,11 @@ List list1 = new ArrayList<>(); @@ -367,7 +_,7 @@ - BlockPos blockpos = m_74563_(p_74521_, structuretemplate$structureblockinfo.f_74675_).m_121955_(p_74519_); - StructureTemplate.StructureBlockInfo structuretemplate$structureblockinfo1 = new StructureTemplate.StructureBlockInfo(blockpos, structuretemplate$structureblockinfo.f_74676_, structuretemplate$structureblockinfo.f_74677_ != null ? structuretemplate$structureblockinfo.f_74677_.m_6426_() : null); + BlockPos blockpos = calculateRelativePosition(p_74521_, structuretemplate$structureblockinfo.pos).offset(p_74519_); + StructureTemplate.StructureBlockInfo structuretemplate$structureblockinfo1 = new StructureTemplate.StructureBlockInfo(blockpos, structuretemplate$structureblockinfo.state, structuretemplate$structureblockinfo.nbt != null ? structuretemplate$structureblockinfo.nbt.copy() : null); -- for(Iterator iterator = p_74521_.m_74411_().iterator(); structuretemplate$structureblockinfo1 != null && iterator.hasNext(); structuretemplate$structureblockinfo1 = iterator.next().m_7382_(p_278297_, p_74519_, p_74520_, structuretemplate$structureblockinfo, structuretemplate$structureblockinfo1, p_74521_)) { -+ for(Iterator iterator = p_74521_.m_74411_().iterator(); structuretemplate$structureblockinfo1 != null && iterator.hasNext(); structuretemplate$structureblockinfo1 = iterator.next().process(p_278297_, p_74519_, p_74520_, structuretemplate$structureblockinfo, structuretemplate$structureblockinfo1, p_74521_, template)) { +- for(Iterator iterator = p_74521_.getProcessors().iterator(); structuretemplate$structureblockinfo1 != null && iterator.hasNext(); structuretemplate$structureblockinfo1 = iterator.next().processBlock(p_278297_, p_74519_, p_74520_, structuretemplate$structureblockinfo, structuretemplate$structureblockinfo1, p_74521_)) { ++ for(Iterator iterator = p_74521_.getProcessors().iterator(); structuretemplate$structureblockinfo1 != null && iterator.hasNext(); structuretemplate$structureblockinfo1 = iterator.next().process(p_278297_, p_74519_, p_74520_, structuretemplate$structureblockinfo, structuretemplate$structureblockinfo1, p_74521_, template)) { } if (structuretemplate$structureblockinfo1 != null) { @@ -58,17 +58,17 @@ return list1; } -- private void m_74523_(ServerLevelAccessor p_74524_, BlockPos p_74525_, Mirror p_74526_, Rotation p_74527_, BlockPos p_74528_, @Nullable BoundingBox p_74529_, boolean p_74530_) { -- for(StructureTemplate.StructureEntityInfo structuretemplate$structureentityinfo : this.f_74483_) { -- BlockPos blockpos = m_74593_(structuretemplate$structureentityinfo.f_74684_, p_74526_, p_74527_, p_74528_).m_121955_(p_74525_); -- if (p_74529_ == null || p_74529_.m_71051_(blockpos)) { +- private void placeEntities(ServerLevelAccessor p_74524_, BlockPos p_74525_, Mirror p_74526_, Rotation p_74527_, BlockPos p_74528_, @Nullable BoundingBox p_74529_, boolean p_74530_) { +- for(StructureTemplate.StructureEntityInfo structuretemplate$structureentityinfo : this.entityInfoList) { +- BlockPos blockpos = transform(structuretemplate$structureentityinfo.blockPos, p_74526_, p_74527_, p_74528_).offset(p_74525_); +- if (p_74529_ == null || p_74529_.isInside(blockpos)) { + public static List processEntityInfos(@Nullable StructureTemplate template, LevelAccessor p_215387_0_, BlockPos p_215387_1_, StructurePlaceSettings p_215387_2_, List p_215387_3_) { + List list = Lists.newArrayList(); + for(StructureTemplate.StructureEntityInfo entityInfo : p_215387_3_) { -+ Vec3 pos = transformedVec3d(p_215387_2_, entityInfo.f_74683_).m_82549_(Vec3.m_82528_(p_215387_1_)); -+ BlockPos blockpos = m_74563_(p_215387_2_, entityInfo.f_74684_).m_121955_(p_215387_1_); -+ StructureTemplate.StructureEntityInfo info = new StructureTemplate.StructureEntityInfo(pos, blockpos, entityInfo.f_74685_); -+ for (StructureProcessor proc : p_215387_2_.m_74411_()) { ++ Vec3 pos = transformedVec3d(p_215387_2_, entityInfo.pos).add(Vec3.atLowerCornerOf(p_215387_1_)); ++ BlockPos blockpos = calculateRelativePosition(p_215387_2_, entityInfo.blockPos).offset(p_215387_1_); ++ StructureTemplate.StructureEntityInfo info = new StructureTemplate.StructureEntityInfo(pos, blockpos, entityInfo.nbt); ++ for (StructureProcessor proc : p_215387_2_.getProcessors()) { + info = proc.processEntity(p_215387_0_, p_215387_1_, entityInfo, info, p_215387_2_, template); + if (info == null) + break; @@ -80,27 +80,27 @@ + } + + private void addEntitiesToWorld(ServerLevelAccessor p_74524_, BlockPos p_74525_, StructurePlaceSettings placementIn) { -+ for(StructureTemplate.StructureEntityInfo structuretemplate$structureentityinfo : processEntityInfos(this, p_74524_, p_74525_, placementIn, this.f_74483_)) { -+ BlockPos blockpos = structuretemplate$structureentityinfo.f_74684_; // FORGE: Position will have already been transformed by processEntityInfos -+ if (placementIn.m_74409_() == null || placementIn.m_74409_().m_71051_(blockpos)) { - CompoundTag compoundtag = structuretemplate$structureentityinfo.f_74685_.m_6426_(); -- Vec3 vec3 = m_74578_(structuretemplate$structureentityinfo.f_74683_, p_74526_, p_74527_, p_74528_); -- Vec3 vec31 = vec3.m_82520_((double)p_74525_.m_123341_(), (double)p_74525_.m_123342_(), (double)p_74525_.m_123343_()); -+ Vec3 vec31 = structuretemplate$structureentityinfo.f_74683_; // FORGE: Position will have already been transformed by processEntityInfos ++ for(StructureTemplate.StructureEntityInfo structuretemplate$structureentityinfo : processEntityInfos(this, p_74524_, p_74525_, placementIn, this.entityInfoList)) { ++ BlockPos blockpos = structuretemplate$structureentityinfo.blockPos; // FORGE: Position will have already been transformed by processEntityInfos ++ if (placementIn.getBoundingBox() == null || placementIn.getBoundingBox().isInside(blockpos)) { + CompoundTag compoundtag = structuretemplate$structureentityinfo.nbt.copy(); +- Vec3 vec3 = transform(structuretemplate$structureentityinfo.pos, p_74526_, p_74527_, p_74528_); +- Vec3 vec31 = vec3.add((double)p_74525_.getX(), (double)p_74525_.getY(), (double)p_74525_.getZ()); ++ Vec3 vec31 = structuretemplate$structureentityinfo.pos; // FORGE: Position will have already been transformed by processEntityInfos ListTag listtag = new ListTag(); - listtag.add(DoubleTag.m_128500_(vec31.f_82479_)); - listtag.add(DoubleTag.m_128500_(vec31.f_82480_)); + listtag.add(DoubleTag.valueOf(vec31.x)); + listtag.add(DoubleTag.valueOf(vec31.y)); @@ -397,10 +_,10 @@ - compoundtag.m_128365_("Pos", listtag); - compoundtag.m_128473_("UUID"); - m_74543_(p_74524_, compoundtag).ifPresent((p_275190_) -> { -- float f = p_275190_.m_7890_(p_74527_); -- f += p_275190_.m_6961_(p_74526_) - p_275190_.m_146908_(); -+ float f = p_275190_.m_7890_(placementIn.m_74404_()); -+ f += p_275190_.m_6961_(placementIn.m_74401_()) - p_275190_.m_146908_(); - p_275190_.m_7678_(vec31.f_82479_, vec31.f_82480_, vec31.f_82481_, f, p_275190_.m_146909_()); + compoundtag.put("Pos", listtag); + compoundtag.remove("UUID"); + createEntityIgnoreException(p_74524_, compoundtag).ifPresent((p_275190_) -> { +- float f = p_275190_.rotate(p_74527_); +- f += p_275190_.mirror(p_74526_) - p_275190_.getYRot(); ++ float f = p_275190_.rotate(placementIn.getRotation()); ++ f += p_275190_.mirror(placementIn.getMirror()) - p_275190_.getYRot(); + p_275190_.moveTo(vec31.x, vec31.y, vec31.z, f, p_275190_.getXRot()); - if (p_74530_ && p_275190_ instanceof Mob) { -+ if (placementIn.m_74414_() && p_275190_ instanceof Mob) { - ((Mob)p_275190_).m_6518_(p_74524_, p_74524_.m_6436_(BlockPos.m_274446_(vec31)), MobSpawnType.STRUCTURE, (SpawnGroupData)null, compoundtag); ++ if (placementIn.shouldFinalizeEntities() && p_275190_ instanceof Mob) { + ((Mob)p_275190_).finalizeSpawn(p_74524_, p_74524_.getCurrentDifficultyAt(BlockPos.containing(vec31)), MobSpawnType.STRUCTURE, (SpawnGroupData)null, compoundtag); } diff --git a/patches/minecraft/net/minecraft/world/level/lighting/BlockLightEngine.java.patch b/patches/minecraft/net/minecraft/world/level/lighting/BlockLightEngine.java.patch index 66618fd029..48f56d855f 100644 --- a/patches/minecraft/net/minecraft/world/level/lighting/BlockLightEngine.java.patch +++ b/patches/minecraft/net/minecraft/world/level/lighting/BlockLightEngine.java.patch @@ -3,18 +3,18 @@ @@ -105,7 +_,7 @@ } - private int m_284436_(long p_285243_, BlockState p_284973_) { -- int i = p_284973_.m_60791_(); -+ int i = p_284973_.getLightEmission(f_283884_.m_7653_(), f_75489_); - return i > 0 && this.f_283849_.m_284382_(SectionPos.m_123235_(p_285243_)) ? i : 0; + private int getEmission(long p_285243_, BlockState p_284973_) { +- int i = p_284973_.getLightEmission(); ++ int i = p_284973_.getLightEmission(chunkSource.getLevel(), mutablePos); + return i > 0 && this.storage.lightOnInSection(SectionPos.blockToSection(p_285243_)) ? i : 0; } @@ -114,7 +_,7 @@ - LightChunk lightchunk = this.f_283884_.m_6196_(p_285274_.f_45578_, p_285274_.f_45579_); + LightChunk lightchunk = this.chunkSource.getChunkForLighting(p_285274_.x, p_285274_.z); if (lightchunk != null) { - lightchunk.m_284254_((p_285266_, p_285452_) -> { -- int i = p_285452_.m_60791_(); -+ int i = p_285452_.getLightEmission(f_283884_.m_7653_(), p_285266_); - this.m_284218_(p_285266_.m_121878_(), LightEngine.QueueEntry.m_284185_(i, m_284265_(p_285452_))); + lightchunk.findBlockLightSources((p_285266_, p_285452_) -> { +- int i = p_285452_.getLightEmission(); ++ int i = p_285452_.getLightEmission(chunkSource.getLevel(), p_285266_); + this.enqueueIncrease(p_285266_.asLong(), LightEngine.QueueEntry.increaseLightFromEmission(i, isEmptyShape(p_285452_))); }); } diff --git a/patches/minecraft/net/minecraft/world/level/lighting/LightEngine.java.patch b/patches/minecraft/net/minecraft/world/level/lighting/LightEngine.java.patch index 77ebe6dbf4..9577aae81f 100644 --- a/patches/minecraft/net/minecraft/world/level/lighting/LightEngine.java.patch +++ b/patches/minecraft/net/minecraft/world/level/lighting/LightEngine.java.patch @@ -4,8 +4,8 @@ if (p_285372_ == p_285110_) { return false; } else { -- return p_285372_.m_60739_(p_285159_, p_284985_) != p_285110_.m_60739_(p_285159_, p_284985_) || p_285372_.m_60791_() != p_285110_.m_60791_() || p_285372_.m_60787_() || p_285110_.m_60787_(); -+ return p_285372_.m_60739_(p_285159_, p_284985_) != p_285110_.m_60739_(p_285159_, p_284985_) || p_285372_.getLightEmission(p_285159_, p_284985_) != p_285110_.getLightEmission(p_285159_, p_284985_) || p_285372_.m_60787_() || p_285110_.m_60787_(); +- return p_285372_.getLightBlock(p_285159_, p_284985_) != p_285110_.getLightBlock(p_285159_, p_284985_) || p_285372_.getLightEmission() != p_285110_.getLightEmission() || p_285372_.useShapeForLightOcclusion() || p_285110_.useShapeForLightOcclusion(); ++ return p_285372_.getLightBlock(p_285159_, p_284985_) != p_285110_.getLightBlock(p_285159_, p_284985_) || p_285372_.getLightEmission(p_285159_, p_284985_) != p_285110_.getLightEmission(p_285159_, p_284985_) || p_285372_.useShapeForLightOcclusion() || p_285110_.useShapeForLightOcclusion(); } } diff --git a/patches/minecraft/net/minecraft/world/level/material/FlowingFluid.java.patch b/patches/minecraft/net/minecraft/world/level/material/FlowingFluid.java.patch index 5fe9b847de..d69cc359c8 100644 --- a/patches/minecraft/net/minecraft/world/level/material/FlowingFluid.java.patch +++ b/patches/minecraft/net/minecraft/world/level/material/FlowingFluid.java.patch @@ -1,11 +1,11 @@ --- a/net/minecraft/world/level/material/FlowingFluid.java +++ b/net/minecraft/world/level/material/FlowingFluid.java @@ -160,7 +_,7 @@ - BlockState blockstate = p_256464_.m_8055_(blockpos); - FluidState fluidstate = blockstate.m_60819_(); - if (fluidstate.m_76152_().m_6212_(this) && this.m_76061_(direction, p_256464_, p_76037_, p_76038_, blockpos, blockstate)) { -- if (fluidstate.m_76170_()) { -+ if (fluidstate.m_76170_() && net.minecraftforge.event.ForgeEventFactory.canCreateFluidSource(p_256464_, blockpos, blockstate, fluidstate.canConvertToSource(p_256464_, blockpos))) { + BlockState blockstate = p_256464_.getBlockState(blockpos); + FluidState fluidstate = blockstate.getFluidState(); + if (fluidstate.getType().isSame(this) && this.canPassThroughWall(direction, p_256464_, p_76037_, p_76038_, blockpos, blockstate)) { +- if (fluidstate.isSource()) { ++ if (fluidstate.isSource() && net.minecraftforge.event.ForgeEventFactory.canCreateFluidSource(p_256464_, blockpos, blockstate, fluidstate.canConvertToSource(p_256464_, blockpos))) { ++j; } @@ -13,24 +13,24 @@ } } -- if (this.m_6760_(p_256464_) && j >= 2) { +- if (this.canConvertToSource(p_256464_) && j >= 2) { + if (j >= 2) { - BlockState blockstate1 = p_256464_.m_8055_(p_76037_.m_7495_()); - FluidState fluidstate1 = blockstate1.m_60819_(); - if (blockstate1.m_280296_() || this.m_76096_(fluidstate1)) { + BlockState blockstate1 = p_256464_.getBlockState(p_76037_.below()); + FluidState fluidstate1 = blockstate1.getFluidState(); + if (blockstate1.isSolid() || this.isSourceBlockOfThisType(fluidstate1)) { @@ -232,6 +_,15 @@ - return this.m_5613_().m_76145_().m_61124_(f_75947_, Boolean.valueOf(p_76069_)); + return this.getSource().defaultFluidState().setValue(FALLING, Boolean.valueOf(p_76069_)); } + @Override + public boolean canConvertToSource(FluidState state, Level level, BlockPos pos) { -+ return this.m_6760_(level); ++ return this.canConvertToSource(level); + } + + /** + * @deprecated Forge: Use {@link #canConvertToSource(FluidState, Level, BlockPos)} instead. + */ + @Deprecated - protected abstract boolean m_6760_(Level p_256009_); + protected abstract boolean canConvertToSource(Level p_256009_); - protected void m_6364_(LevelAccessor p_76005_, BlockPos p_76006_, BlockState p_76007_, Direction p_76008_, FluidState p_76009_) { + protected void spreadTo(LevelAccessor p_76005_, BlockPos p_76006_, BlockState p_76007_, Direction p_76008_, FluidState p_76009_) { diff --git a/patches/minecraft/net/minecraft/world/level/material/Fluid.java.patch b/patches/minecraft/net/minecraft/world/level/material/Fluid.java.patch index f39975d1c1..ff30b23d79 100644 --- a/patches/minecraft/net/minecraft/world/level/material/Fluid.java.patch +++ b/patches/minecraft/net/minecraft/world/level/material/Fluid.java.patch @@ -6,13 +6,13 @@ -public abstract class Fluid { +public abstract class Fluid implements net.minecraftforge.common.extensions.IForgeFluid { - public static final IdMapper f_76104_ = new IdMapper<>(); - protected final StateDefinition f_76105_; - private FluidState f_76103_; + public static final IdMapper FLUID_STATE_REGISTRY = new IdMapper<>(); + protected final StateDefinition stateDefinition; + private FluidState defaultFluidState; @@ -101,6 +_,13 @@ } - public abstract VoxelShape m_7999_(FluidState p_76137_, BlockGetter p_76138_, BlockPos p_76139_); + public abstract VoxelShape getShape(FluidState p_76137_, BlockGetter p_76138_, BlockPos p_76139_); + + private net.minecraftforge.fluids.FluidType forgeFluidType; + @Override @@ -21,5 +21,5 @@ + return forgeFluidType; + } - public Optional m_142520_() { + public Optional getPickupSound() { return Optional.empty(); diff --git a/patches/minecraft/net/minecraft/world/level/material/FluidState.java.patch b/patches/minecraft/net/minecraft/world/level/material/FluidState.java.patch index d4c547d428..a0336aeda3 100644 --- a/patches/minecraft/net/minecraft/world/level/material/FluidState.java.patch +++ b/patches/minecraft/net/minecraft/world/level/material/FluidState.java.patch @@ -6,14 +6,14 @@ -public final class FluidState extends StateHolder { +public final class FluidState extends StateHolder implements net.minecraftforge.common.extensions.IForgeFluidState { - public static final Codec f_76146_ = m_61127_(BuiltInRegistries.f_257020_.m_194605_(), Fluid::m_76145_).stable(); - public static final int f_164510_ = 9; - public static final int f_164511_ = 8; + public static final Codec CODEC = codec(BuiltInRegistries.FLUID.byNameCodec(), Fluid::defaultFluidState).stable(); + public static final int AMOUNT_MAX = 9; + public static final int AMOUNT_FULL = 8; @@ -113,6 +_,7 @@ - return this.m_76152_() == p_192918_; + return this.getType() == p_192918_; } + @Deprecated //Forge: Use more sensitive version - public float m_76190_() { - return this.m_76152_().m_6752_(); + public float getExplosionResistance() { + return this.getType().getExplosionResistance(); } diff --git a/patches/minecraft/net/minecraft/world/level/material/LavaFluid.java.patch b/patches/minecraft/net/minecraft/world/level/material/LavaFluid.java.patch index 65e83fe84f..1c9fe8185b 100644 --- a/patches/minecraft/net/minecraft/world/level/material/LavaFluid.java.patch +++ b/patches/minecraft/net/minecraft/world/level/material/LavaFluid.java.patch @@ -1,31 +1,31 @@ --- a/net/minecraft/world/level/material/LavaFluid.java +++ b/net/minecraft/world/level/material/LavaFluid.java @@ -72,7 +_,7 @@ - BlockState blockstate = p_230572_.m_8055_(blockpos); - if (blockstate.m_60795_()) { - if (this.m_76227_(p_230572_, blockpos)) { -- p_230572_.m_46597_(blockpos, BaseFireBlock.m_49245_(p_230572_, blockpos)); -+ p_230572_.m_46597_(blockpos, net.minecraftforge.event.ForgeEventFactory.fireFluidPlaceBlockEvent(p_230572_, blockpos, p_230573_, Blocks.f_50083_.m_49966_())); + BlockState blockstate = p_230572_.getBlockState(blockpos); + if (blockstate.isAir()) { + if (this.hasFlammableNeighbours(p_230572_, blockpos)) { +- p_230572_.setBlockAndUpdate(blockpos, BaseFireBlock.getState(p_230572_, blockpos)); ++ p_230572_.setBlockAndUpdate(blockpos, net.minecraftforge.event.ForgeEventFactory.fireFluidPlaceBlockEvent(p_230572_, blockpos, p_230573_, Blocks.FIRE.defaultBlockState())); return; } - } else if (blockstate.m_280555_()) { + } else if (blockstate.blocksMotion()) { @@ -86,8 +_,8 @@ return; } -- if (p_230572_.m_46859_(blockpos1.m_7494_()) && this.m_76245_(p_230572_, blockpos1)) { -- p_230572_.m_46597_(blockpos1.m_7494_(), BaseFireBlock.m_49245_(p_230572_, blockpos1)); -+ if (p_230572_.m_46859_(blockpos1.m_7494_()) && this.isFlammable(p_230572_, blockpos1, Direction.UP)) { -+ p_230572_.m_46597_(blockpos1.m_7494_(), net.minecraftforge.event.ForgeEventFactory.fireFluidPlaceBlockEvent(p_230572_, blockpos1.m_7494_(), p_230573_, Blocks.f_50083_.m_49966_())); +- if (p_230572_.isEmptyBlock(blockpos1.above()) && this.isFlammable(p_230572_, blockpos1)) { +- p_230572_.setBlockAndUpdate(blockpos1.above(), BaseFireBlock.getState(p_230572_, blockpos1)); ++ if (p_230572_.isEmptyBlock(blockpos1.above()) && this.isFlammable(p_230572_, blockpos1, Direction.UP)) { ++ p_230572_.setBlockAndUpdate(blockpos1.above(), net.minecraftforge.event.ForgeEventFactory.fireFluidPlaceBlockEvent(p_230572_, blockpos1.above(), p_230573_, Blocks.FIRE.defaultBlockState())); } } } @@ -97,7 +_,7 @@ - private boolean m_76227_(LevelReader p_76228_, BlockPos p_76229_) { + private boolean hasFlammableNeighbours(LevelReader p_76228_, BlockPos p_76229_) { for(Direction direction : Direction.values()) { -- if (this.m_76245_(p_76228_, p_76229_.m_121945_(direction))) { -+ if (this.isFlammable(p_76228_, p_76229_.m_121945_(direction), direction.m_122424_())) { +- if (this.isFlammable(p_76228_, p_76229_.relative(direction))) { ++ if (this.isFlammable(p_76228_, p_76229_.relative(direction), direction.getOpposite())) { return true; } } @@ -35,23 +35,23 @@ + /** @deprecated Forge: use {@link LavaFluid#isFlammable(LevelReader,BlockPos,Direction)} instead */ + @Deprecated - private boolean m_76245_(LevelReader p_76246_, BlockPos p_76247_) { - return p_76247_.m_123342_() >= p_76246_.m_141937_() && p_76247_.m_123342_() < p_76246_.m_151558_() && !p_76246_.m_46805_(p_76247_) ? false : p_76246_.m_8055_(p_76247_).m_278200_(); + private boolean isFlammable(LevelReader p_76246_, BlockPos p_76247_) { + return p_76247_.getY() >= p_76246_.getMinBuildHeight() && p_76247_.getY() < p_76246_.getMaxBuildHeight() && !p_76246_.hasChunkAt(p_76247_) ? false : p_76246_.getBlockState(p_76247_).ignitedByLava(); } + private boolean isFlammable(LevelReader level, BlockPos pos, Direction face) { -+ return pos.m_123342_() >= level.m_141937_() && pos.m_123342_() < level.m_151558_() && !level.m_46805_(pos) ? false : level.m_8055_(pos).isFlammable(level, pos, face); ++ return pos.getY() >= level.getMinBuildHeight() && pos.getY() < level.getMaxBuildHeight() && !level.hasChunkAt(pos) ? false : level.getBlockState(pos).isFlammable(level, pos, face); + } + @Nullable - public ParticleOptions m_7792_() { - return ParticleTypes.f_123800_; + public ParticleOptions getDripParticle() { + return ParticleTypes.DRIPPING_LAVA; @@ -164,7 +_,7 @@ - FluidState fluidstate = p_76220_.m_6425_(p_76221_); - if (this.m_205067_(FluidTags.f_13132_) && fluidstate.m_205070_(FluidTags.f_13131_)) { - if (p_76222_.m_60734_() instanceof LiquidBlock) { -- p_76220_.m_7731_(p_76221_, Blocks.f_50069_.m_49966_(), 3); -+ p_76220_.m_7731_(p_76221_, net.minecraftforge.event.ForgeEventFactory.fireFluidPlaceBlockEvent(p_76220_, p_76221_, p_76221_, Blocks.f_50069_.m_49966_()), 3); + FluidState fluidstate = p_76220_.getFluidState(p_76221_); + if (this.is(FluidTags.LAVA) && fluidstate.is(FluidTags.WATER)) { + if (p_76222_.getBlock() instanceof LiquidBlock) { +- p_76220_.setBlock(p_76221_, Blocks.STONE.defaultBlockState(), 3); ++ p_76220_.setBlock(p_76221_, net.minecraftforge.event.ForgeEventFactory.fireFluidPlaceBlockEvent(p_76220_, p_76221_, p_76221_, Blocks.STONE.defaultBlockState()), 3); } - this.m_76212_(p_76220_, p_76221_); + this.fizz(p_76220_, p_76221_); diff --git a/patches/minecraft/net/minecraft/world/level/pathfinder/AmphibiousNodeEvaluator.java.patch b/patches/minecraft/net/minecraft/world/level/pathfinder/AmphibiousNodeEvaluator.java.patch index 590b44281b..395a666b16 100644 --- a/patches/minecraft/net/minecraft/world/level/pathfinder/AmphibiousNodeEvaluator.java.patch +++ b/patches/minecraft/net/minecraft/world/level/pathfinder/AmphibiousNodeEvaluator.java.patch @@ -1,11 +1,11 @@ --- a/net/minecraft/world/level/pathfinder/AmphibiousNodeEvaluator.java +++ b/net/minecraft/world/level/pathfinder/AmphibiousNodeEvaluator.java @@ -46,7 +_,7 @@ - BlockPathTypes blockpathtypes1 = this.m_77567_(this.f_77313_, p_164677_.f_77271_, p_164677_.f_77272_, p_164677_.f_77273_); + BlockPathTypes blockpathtypes1 = this.getCachedBlockType(this.mob, p_164677_.x, p_164677_.y, p_164677_.z); int j; - if (this.f_77313_.m_21439_(blockpathtypes) >= 0.0F && blockpathtypes1 != BlockPathTypes.STICKY_HONEY) { -- j = Mth.m_14143_(Math.max(1.0F, this.f_77313_.m_274421_())); -+ j = Mth.m_14143_(Math.max(1.0F, this.f_77313_.getStepHeight())); + if (this.mob.getPathfindingMalus(blockpathtypes) >= 0.0F && blockpathtypes1 != BlockPathTypes.STICKY_HONEY) { +- j = Mth.floor(Math.max(1.0F, this.mob.maxUpStep())); ++ j = Mth.floor(Math.max(1.0F, this.mob.getStepHeight())); } else { j = 0; } diff --git a/patches/minecraft/net/minecraft/world/level/pathfinder/BlockPathTypes.java.patch b/patches/minecraft/net/minecraft/world/level/pathfinder/BlockPathTypes.java.patch index fe54404d79..2a5b4102aa 100644 --- a/patches/minecraft/net/minecraft/world/level/pathfinder/BlockPathTypes.java.patch +++ b/patches/minecraft/net/minecraft/world/level/pathfinder/BlockPathTypes.java.patch @@ -10,8 +10,8 @@ WALKABLE(0.0F), @@ -35,5 +_,17 @@ - public float m_77124_() { - return this.f_77117_; + public float getMalus() { + return this.malus; + } + + @org.jetbrains.annotations.Nullable diff --git a/patches/minecraft/net/minecraft/world/level/pathfinder/WalkNodeEvaluator.java.patch b/patches/minecraft/net/minecraft/world/level/pathfinder/WalkNodeEvaluator.java.patch index 0a5dca8268..9b55494bab 100644 --- a/patches/minecraft/net/minecraft/world/level/pathfinder/WalkNodeEvaluator.java.patch +++ b/patches/minecraft/net/minecraft/world/level/pathfinder/WalkNodeEvaluator.java.patch @@ -1,59 +1,59 @@ --- a/net/minecraft/world/level/pathfinder/WalkNodeEvaluator.java +++ b/net/minecraft/world/level/pathfinder/WalkNodeEvaluator.java @@ -112,7 +_,7 @@ - BlockPathTypes blockpathtypes = this.m_77567_(this.f_77313_, p_77641_.f_77271_, p_77641_.f_77272_ + 1, p_77641_.f_77273_); - BlockPathTypes blockpathtypes1 = this.m_77567_(this.f_77313_, p_77641_.f_77271_, p_77641_.f_77272_, p_77641_.f_77273_); - if (this.f_77313_.m_21439_(blockpathtypes) >= 0.0F && blockpathtypes1 != BlockPathTypes.STICKY_HONEY) { -- j = Mth.m_14143_(Math.max(1.0F, this.f_77313_.m_274421_())); -+ j = Mth.m_14143_(Math.max(1.0F, this.f_77313_.getStepHeight())); + BlockPathTypes blockpathtypes = this.getCachedBlockType(this.mob, p_77641_.x, p_77641_.y + 1, p_77641_.z); + BlockPathTypes blockpathtypes1 = this.getCachedBlockType(this.mob, p_77641_.x, p_77641_.y, p_77641_.z); + if (this.mob.getPathfindingMalus(blockpathtypes) >= 0.0F && blockpathtypes1 != BlockPathTypes.STICKY_HONEY) { +- j = Mth.floor(Math.max(1.0F, this.mob.maxUpStep())); ++ j = Mth.floor(Math.max(1.0F, this.mob.getStepHeight())); } - double d0 = this.m_142213_(new BlockPos(p_77641_.f_77271_, p_77641_.f_77272_, p_77641_.f_77273_)); + double d0 = this.getFloorLevel(new BlockPos(p_77641_.x, p_77641_.y, p_77641_.z)); @@ -306,7 +_,7 @@ } - private double m_255203_() { -- return Math.max(1.125D, (double)this.f_77313_.m_274421_()); -+ return Math.max(1.125D, (double)this.f_77313_.getStepHeight()); + private double getMobJumpHeight() { +- return Math.max(1.125D, (double)this.mob.maxUpStep()); ++ return Math.max(1.125D, (double)this.mob.getStepHeight()); } - private Node m_230619_(int p_230620_, int p_230621_, int p_230622_, BlockPathTypes p_230623_, float p_230624_) { + private Node getNodeAndUpdateCostToMax(int p_230620_, int p_230621_, int p_230622_, BlockPathTypes p_230623_, float p_230624_) { @@ -453,6 +_,11 @@ if (l != 0 || j1 != 0) { - p_77609_.m_122178_(i + l, j + i1, k + j1); - BlockState blockstate = p_77608_.m_8055_(p_77609_); + p_77609_.set(i + l, j + i1, k + j1); + BlockState blockstate = p_77608_.getBlockState(p_77609_); + BlockPathTypes blockPathType = blockstate.getAdjacentBlockPathType(p_77608_, p_77609_, null, p_77610_); + if (blockPathType != null) return blockPathType; -+ FluidState fluidState = blockstate.m_60819_(); ++ FluidState fluidState = blockstate.getFluidState(); + BlockPathTypes fluidPathType = fluidState.getAdjacentBlockPathType(p_77608_, p_77609_, null, p_77610_); + if (fluidPathType != null) return fluidPathType; - if (blockstate.m_60713_(Blocks.f_50128_) || blockstate.m_60713_(Blocks.f_50685_)) { + if (blockstate.is(Blocks.CACTUS) || blockstate.is(Blocks.SWEET_BERRY_BUSH)) { return BlockPathTypes.DANGER_OTHER; } @@ -478,6 +_,8 @@ - protected static BlockPathTypes m_77643_(BlockGetter p_77644_, BlockPos p_77645_) { - BlockState blockstate = p_77644_.m_8055_(p_77645_); + protected static BlockPathTypes getBlockPathTypeRaw(BlockGetter p_77644_, BlockPos p_77645_) { + BlockState blockstate = p_77644_.getBlockState(p_77645_); + BlockPathTypes type = blockstate.getBlockPathType(p_77644_, p_77645_, null); + if (type != null) return type; - Block block = blockstate.m_60734_(); - if (blockstate.m_60795_()) { + Block block = blockstate.getBlock(); + if (blockstate.isAir()) { return BlockPathTypes.OPEN; @@ -491,6 +_,8 @@ return BlockPathTypes.COCOA; - } else if (!blockstate.m_60713_(Blocks.f_50070_) && !blockstate.m_60713_(Blocks.f_152588_)) { - FluidState fluidstate = p_77644_.m_6425_(p_77645_); + } else if (!blockstate.is(Blocks.WITHER_ROSE) && !blockstate.is(Blocks.POINTED_DRIPSTONE)) { + FluidState fluidstate = p_77644_.getFluidState(p_77645_); + BlockPathTypes nonLoggableFluidPathType = fluidstate.getBlockPathType(p_77644_, p_77645_, null, false); + if (nonLoggableFluidPathType != null) return nonLoggableFluidPathType; - if (fluidstate.m_205070_(FluidTags.f_13132_)) { + if (fluidstate.is(FluidTags.LAVA)) { return BlockPathTypes.LAVA; - } else if (m_77622_(blockstate)) { + } else if (isBurningBlock(blockstate)) { @@ -510,6 +_,8 @@ - if (!blockstate.m_60647_(p_77644_, p_77645_, PathComputationType.LAND)) { + if (!blockstate.isPathfindable(p_77644_, p_77645_, PathComputationType.LAND)) { return BlockPathTypes.BLOCKED; } else { + BlockPathTypes loggableFluidPathType = fluidstate.getBlockPathType(p_77644_, p_77645_, null, true); + if (loggableFluidPathType != null) return loggableFluidPathType; - return fluidstate.m_205070_(FluidTags.f_13131_) ? BlockPathTypes.WATER : BlockPathTypes.OPEN; + return fluidstate.is(FluidTags.WATER) ? BlockPathTypes.WATER : BlockPathTypes.OPEN; } } else { diff --git a/patches/minecraft/net/minecraft/world/level/portal/PortalForcer.java.patch b/patches/minecraft/net/minecraft/world/level/portal/PortalForcer.java.patch index 26ccbe5c21..6ef7c68bc3 100644 --- a/patches/minecraft/net/minecraft/world/level/portal/PortalForcer.java.patch +++ b/patches/minecraft/net/minecraft/world/level/portal/PortalForcer.java.patch @@ -6,6 +6,6 @@ -public class PortalForcer { +public class PortalForcer implements net.minecraftforge.common.util.ITeleporter { - private static final int f_164734_ = 3; - private static final int f_164735_ = 128; - private static final int f_164736_ = 16; + private static final int TICKET_RADIUS = 3; + private static final int SEARCH_RADIUS = 128; + private static final int CREATE_RADIUS = 16; diff --git a/patches/minecraft/net/minecraft/world/level/portal/PortalShape.java.patch b/patches/minecraft/net/minecraft/world/level/portal/PortalShape.java.patch index 3973462010..2af25fb327 100644 --- a/patches/minecraft/net/minecraft/world/level/portal/PortalShape.java.patch +++ b/patches/minecraft/net/minecraft/world/level/portal/PortalShape.java.patch @@ -1,11 +1,11 @@ --- a/net/minecraft/world/level/portal/PortalShape.java +++ b/net/minecraft/world/level/portal/PortalShape.java @@ -28,7 +_,7 @@ - private static final int f_164753_ = 3; - public static final int f_164751_ = 21; - private static final BlockBehaviour.StatePredicate f_77685_ = (p_77720_, p_77721_, p_77722_) -> { -- return p_77720_.m_60713_(Blocks.f_50080_); + private static final int MIN_HEIGHT = 3; + public static final int MAX_HEIGHT = 21; + private static final BlockBehaviour.StatePredicate FRAME = (p_77720_, p_77721_, p_77722_) -> { +- return p_77720_.is(Blocks.OBSIDIAN); + return p_77720_.isPortalFrame(p_77721_, p_77722_); }; - private static final float f_256985_ = 4.0F; - private static final double f_256802_ = 1.0D; + private static final float SAFE_TRAVEL_MAX_ENTITY_XY = 4.0F; + private static final double SAFE_TRAVEL_MAX_VERTICAL_DELTA = 1.0D; diff --git a/patches/minecraft/net/minecraft/world/level/storage/DimensionDataStorage.java.patch b/patches/minecraft/net/minecraft/world/level/storage/DimensionDataStorage.java.patch index 9f563feab9..0ebb4904d7 100644 --- a/patches/minecraft/net/minecraft/world/level/storage/DimensionDataStorage.java.patch +++ b/patches/minecraft/net/minecraft/world/level/storage/DimensionDataStorage.java.patch @@ -2,14 +2,14 @@ +++ b/net/minecraft/world/level/storage/DimensionDataStorage.java @@ -48,9 +_,13 @@ @Nullable - public T m_164858_(SavedData.Factory p_297465_, String p_164860_) { - SavedData saveddata = this.f_78144_.get(p_164860_); + public T get(SavedData.Factory p_297465_, String p_164860_) { + SavedData saveddata = this.cache.get(p_164860_); + if (saveddata == net.minecraftforge.common.util.DummySavedData.DUMMY) return null; - if (saveddata == null && !this.f_78144_.containsKey(p_164860_)) { - saveddata = this.m_164868_(p_297465_.f_291599_(), p_297465_.f_291120_(), p_164860_); - this.f_78144_.put(p_164860_, saveddata); + if (saveddata == null && !this.cache.containsKey(p_164860_)) { + saveddata = this.readSavedData(p_297465_.deserializer(), p_297465_.type(), p_164860_); + this.cache.put(p_164860_, saveddata); + } else if (saveddata == null) { -+ this.f_78144_.put(p_164860_, net.minecraftforge.common.util.DummySavedData.DUMMY); ++ this.cache.put(p_164860_, net.minecraftforge.common.util.DummySavedData.DUMMY); + return null; } diff --git a/patches/minecraft/net/minecraft/world/level/storage/LevelStorageSource.java.patch b/patches/minecraft/net/minecraft/world/level/storage/LevelStorageSource.java.patch index a9336442d3..572ea0f559 100644 --- a/patches/minecraft/net/minecraft/world/level/storage/LevelStorageSource.java.patch +++ b/patches/minecraft/net/minecraft/world/level/storage/LevelStorageSource.java.patch @@ -1,42 +1,42 @@ --- a/net/minecraft/world/level/storage/LevelStorageSource.java +++ b/net/minecraft/world/level/storage/LevelStorageSource.java @@ -467,6 +_,19 @@ - return LevelStorageSource.this.m_230817_(this.f_230867_, LevelStorageSource.m_245503_(p_248747_, p_251873_, p_249187_, p_249736_)); + return LevelStorageSource.this.readLevelData(this.levelDirectory, LevelStorageSource.getLevelData(p_248747_, p_251873_, p_249187_, p_249736_)); } + public void readAdditionalLevelSaveData() { -+ m_78313_(); -+ LevelStorageSource.this.m_230817_(this.f_230867_, (path, dataFixer) -> { ++ checkLock(); ++ LevelStorageSource.this.readLevelData(this.levelDirectory, (path, dataFixer) -> { + try { -+ CompoundTag compoundTag = NbtIo.m_128937_(path.toFile()); -+ net.minecraftforge.common.ForgeHooks.readAdditionalLevelSaveData(compoundTag, this.f_230867_); ++ CompoundTag compoundTag = NbtIo.readCompressed(path.toFile()); ++ net.minecraftforge.common.ForgeHooks.readAdditionalLevelSaveData(compoundTag, this.levelDirectory); + } catch (Exception e) { -+ f_78191_.error("Exception reading {}", path, e); ++ LOGGER.error("Exception reading {}", path, e); + } + return ""; // Return non-null to prevent level.dat-old inject + }); + } + @Nullable - public WorldDataConfiguration m_247706_() { - this.m_78313_(); + public WorldDataConfiguration getDataConfiguration() { + this.checkLock(); @@ -483,6 +_,8 @@ CompoundTag compoundtag1 = new CompoundTag(); - compoundtag1.m_128365_("Data", compoundtag); + compoundtag1.put("Data", compoundtag); + net.minecraftforge.common.ForgeHooks.writeAdditionalLevelSaveData(p_78292_, compoundtag1); + try { File file2 = File.createTempFile("level", ".dat", file1); - NbtIo.m_128944_(compoundtag1, file2); + NbtIo.writeCompressed(compoundtag1, file2); @@ -497,6 +_,10 @@ - public Optional m_182514_() { - return !this.f_78270_.m_13639_() ? Optional.empty() : Optional.of(this.f_230867_.m_230860_()); + public Optional getIconFile() { + return !this.lock.isValid() ? Optional.empty() : Optional.of(this.levelDirectory.iconFile()); + } + + public Path getWorldDir() { -+ return f_78194_; ++ return baseDir; } - public void m_78311_() throws IOException { + public void deleteLevel() throws IOException { diff --git a/patches/minecraft/net/minecraft/world/level/storage/LevelSummary.java.patch b/patches/minecraft/net/minecraft/world/level/storage/LevelSummary.java.patch index 4c355666f9..425b7ad1d9 100644 --- a/patches/minecraft/net/minecraft/world/level/storage/LevelSummary.java.patch +++ b/patches/minecraft/net/minecraft/world/level/storage/LevelSummary.java.patch @@ -5,7 +5,7 @@ } + public boolean isLifecycleExperimental() { -+ return this.f_78344_.getLifecycle().equals(com.mojang.serialization.Lifecycle.experimental()); ++ return this.settings.getLifecycle().equals(com.mojang.serialization.Lifecycle.experimental()); + } + public static class SymlinkLevelSummary extends LevelSummary { diff --git a/patches/minecraft/net/minecraft/world/level/storage/PlayerDataStorage.java.patch b/patches/minecraft/net/minecraft/world/level/storage/PlayerDataStorage.java.patch index b2917337cc..34852c9847 100644 --- a/patches/minecraft/net/minecraft/world/level/storage/PlayerDataStorage.java.patch +++ b/patches/minecraft/net/minecraft/world/level/storage/PlayerDataStorage.java.patch @@ -1,18 +1,18 @@ --- a/net/minecraft/world/level/storage/PlayerDataStorage.java +++ b/net/minecraft/world/level/storage/PlayerDataStorage.java @@ -31,6 +_,7 @@ - File file2 = new File(this.f_78427_, p_78434_.m_20149_() + ".dat"); - File file3 = new File(this.f_78427_, p_78434_.m_20149_() + ".dat_old"); - Util.m_137462_(file2, file1, file3); -+ net.minecraftforge.event.ForgeEventFactory.firePlayerSavingEvent(p_78434_, f_78427_, p_78434_.m_20149_()); + File file2 = new File(this.playerDir, p_78434_.getStringUUID() + ".dat"); + File file3 = new File(this.playerDir, p_78434_.getStringUUID() + ".dat_old"); + Util.safeReplaceFile(file2, file1, file3); ++ net.minecraftforge.event.ForgeEventFactory.firePlayerSavingEvent(p_78434_, playerDir, p_78434_.getStringUUID()); } catch (Exception exception) { - f_78426_.warn("Failed to save player data for {}", (Object)p_78434_.m_7755_().getString()); + LOGGER.warn("Failed to save player data for {}", (Object)p_78434_.getName().getString()); } @@ -54,6 +_,7 @@ - int i = NbtUtils.m_264487_(compoundtag, -1); - p_78436_.m_20258_(DataFixTypes.PLAYER.m_264218_(this.f_78425_, compoundtag, i)); + int i = NbtUtils.getDataVersion(compoundtag, -1); + p_78436_.load(DataFixTypes.PLAYER.updateToCurrentVersion(this.fixerUpper, compoundtag, i)); } -+ net.minecraftforge.event.ForgeEventFactory.firePlayerLoadingEvent(p_78436_, f_78427_, p_78436_.m_20149_()); ++ net.minecraftforge.event.ForgeEventFactory.firePlayerLoadingEvent(p_78436_, playerDir, p_78436_.getStringUUID()); return compoundtag; } @@ -23,6 +23,6 @@ + } + + public File getPlayerDataFolder() { -+ return f_78427_; ++ return playerDir; } } diff --git a/patches/minecraft/net/minecraft/world/level/storage/PrimaryLevelData.java.patch b/patches/minecraft/net/minecraft/world/level/storage/PrimaryLevelData.java.patch index 3a4ecf6a34..9369554df9 100644 --- a/patches/minecraft/net/minecraft/world/level/storage/PrimaryLevelData.java.patch +++ b/patches/minecraft/net/minecraft/world/level/storage/PrimaryLevelData.java.patch @@ -1,35 +1,35 @@ --- a/net/minecraft/world/level/storage/PrimaryLevelData.java +++ b/net/minecraft/world/level/storage/PrimaryLevelData.java @@ -82,6 +_,7 @@ - private boolean f_78440_; - private final Set f_276525_; - private final TimerQueue f_78441_; + private boolean wasModded; + private final Set removedFeatureFlags; + private final TimerQueue scheduledEvents; + private boolean confirmedExperimentalWarning = false; private PrimaryLevelData(@Nullable DataFixer p_277859_, int p_277672_, @Nullable CompoundTag p_277888_, boolean p_278109_, int p_277714_, int p_278088_, int p_278037_, float p_277542_, long p_277414_, long p_277635_, int p_277595_, int p_277794_, int p_278007_, boolean p_277943_, int p_277674_, boolean p_277644_, boolean p_277749_, boolean p_278004_, WorldBorder.Settings p_277729_, int p_277856_, int p_278051_, @Nullable UUID p_277341_, Set p_277989_, Set p_277399_, TimerQueue p_277860_, @Nullable CompoundTag p_277936_, EndDragonFight.Data p_289764_, LevelSettings p_278064_, WorldOptions p_278072_, PrimaryLevelData.SpecialWorldProperty p_277548_, Lifecycle p_277915_) { - this.f_78452_ = p_277859_; + this.fixerUpper = p_277859_; @@ -127,7 +_,7 @@ return p_78529_.asString().result().stream(); }).collect(Collectors.toCollection(Sets::newLinkedHashSet)), p_78531_.get("removed_features").asStream().flatMap((p_277335_) -> { return p_277335_.asString().result().stream(); -- }).collect(Collectors.toSet()), new TimerQueue<>(TimerCallbacks.f_82226_, p_78531_.get("ScheduledEvents").asStream()), (CompoundTag)p_78531_.get("CustomBossEvents").orElseEmptyMap().getValue(), p_78531_.get("DragonFight").read(EndDragonFight.Data.f_289707_).resultOrPartial(f_78442_::error).orElse(EndDragonFight.Data.f_289709_), p_78535_, p_251864_, p_250651_, p_78538_); -+ }).collect(Collectors.toSet()), new TimerQueue<>(TimerCallbacks.f_82226_, p_78531_.get("ScheduledEvents").asStream()), (CompoundTag)p_78531_.get("CustomBossEvents").orElseEmptyMap().getValue(), p_78531_.get("DragonFight").read(EndDragonFight.Data.f_289707_).resultOrPartial(f_78442_::error).orElse(EndDragonFight.Data.f_289709_), p_78535_, p_251864_, p_250651_, p_78538_).withConfirmedWarning(p_78538_ != Lifecycle.stable() && p_78531_.get("confirmedExperimentalSettings").asBoolean(false)); +- }).collect(Collectors.toSet()), new TimerQueue<>(TimerCallbacks.SERVER_CALLBACKS, p_78531_.get("ScheduledEvents").asStream()), (CompoundTag)p_78531_.get("CustomBossEvents").orElseEmptyMap().getValue(), p_78531_.get("DragonFight").read(EndDragonFight.Data.CODEC).resultOrPartial(LOGGER::error).orElse(EndDragonFight.Data.DEFAULT), p_78535_, p_251864_, p_250651_, p_78538_); ++ }).collect(Collectors.toSet()), new TimerQueue<>(TimerCallbacks.SERVER_CALLBACKS, p_78531_.get("ScheduledEvents").asStream()), (CompoundTag)p_78531_.get("CustomBossEvents").orElseEmptyMap().getValue(), p_78531_.get("DragonFight").read(EndDragonFight.Data.CODEC).resultOrPartial(LOGGER::error).orElse(EndDragonFight.Data.DEFAULT), p_78535_, p_251864_, p_250651_, p_78538_).withConfirmedWarning(p_78538_ != Lifecycle.stable() && p_78531_.get("confirmedExperimentalSettings").asBoolean(false)); } - public CompoundTag m_6626_(RegistryAccess p_78543_, @Nullable CompoundTag p_78544_) { + public CompoundTag createTag(RegistryAccess p_78543_, @Nullable CompoundTag p_78544_) { @@ -203,6 +_,8 @@ - p_78547_.m_128362_("WanderingTraderId", this.f_78438_); + p_78547_.putUUID("WanderingTraderId", this.wanderingTraderId); } -+ p_78547_.m_128359_("forgeLifecycle", net.minecraftforge.common.ForgeHooks.encodeLifecycle(this.f_78443_.getLifecycle())); -+ p_78547_.m_128379_("confirmedExperimentalSettings", this.confirmedExperimentalWarning); ++ p_78547_.putString("forgeLifecycle", net.minecraftforge.common.ForgeHooks.encodeLifecycle(this.settings.getLifecycle())); ++ p_78547_.putBoolean("confirmedExperimentalSettings", this.confirmedExperimentalWarning); } - private static ListTag m_277055_(Set p_277880_) { + private static ListTag stringCollectionToTag(Set p_277880_) { @@ -483,6 +_,15 @@ - public LevelSettings m_5926_() { - return this.f_78443_.m_46935_(); + public LevelSettings getLevelSettings() { + return this.settings.copy(); + } + + public boolean hasConfirmedExperimentalWarning() { diff --git a/patches/minecraft/net/minecraft/world/level/storage/loot/LootContext.java.patch b/patches/minecraft/net/minecraft/world/level/storage/loot/LootContext.java.patch index 8c99ebd9ed..8bef637a74 100644 --- a/patches/minecraft/net/minecraft/world/level/storage/loot/LootContext.java.patch +++ b/patches/minecraft/net/minecraft/world/level/storage/loot/LootContext.java.patch @@ -1,12 +1,12 @@ --- a/net/minecraft/world/level/storage/loot/LootContext.java +++ b/net/minecraft/world/level/storage/loot/LootContext.java @@ -86,15 +_,45 @@ - return new LootContext.VisitedEntry<>(LootDataType.f_278496_, p_279163_); + return new LootContext.VisitedEntry<>(LootDataType.MODIFIER, p_279163_); } + // ============================== FORGE START ============================== + public int getLootingModifier() { -+ return net.minecraftforge.common.ForgeHooks.getLootingLevel(m_78953_(LootContextParams.f_81455_), m_78953_(LootContextParams.f_81458_), m_78953_(LootContextParams.f_81457_)); ++ return net.minecraftforge.common.ForgeHooks.getLootingLevel(getParamOrNull(LootContextParams.THIS_ENTITY), getParamOrNull(LootContextParams.KILLER_ENTITY), getParamOrNull(LootContextParams.DAMAGE_SOURCE)); + } + + private ResourceLocation queriedLootTableId; @@ -28,24 +28,24 @@ + // =============================== FORGE END =============================== + public static class Builder { - private final LootParams f_78956_; + private final LootParams params; @Nullable - private RandomSource f_78958_; + private RandomSource random; + private ResourceLocation queriedLootTableId; // Forge: correctly pass around loot table ID with copy constructor public Builder(LootParams p_287628_) { - this.f_78956_ = p_287628_; + this.params = p_287628_; } + public Builder(LootContext context) { -+ this.f_78956_ = context.f_78914_; -+ this.f_78958_ = context.f_78907_; ++ this.params = context.params; ++ this.random = context.random; + this.queriedLootTableId = context.queriedLootTableId; + } + - public LootContext.Builder m_78965_(long p_78966_) { + public LootContext.Builder withOptionalRandomSeed(long p_78966_) { if (p_78966_ != 0L) { - this.f_78958_ = RandomSource.m_216335_(p_78966_); + this.random = RandomSource.create(p_78966_); @@ -103,6 +_,11 @@ return this; } @@ -55,27 +55,27 @@ + return this; + } + - public ServerLevel m_78962_() { - return this.f_78956_.m_287182_(); + public ServerLevel getLevel() { + return this.params.getLevel(); } @@ -113,7 +_,7 @@ - RandomSource randomsource = Optional.ofNullable(this.f_78958_).or(() -> { - return p_299315_.map(serverlevel::m_287143_); - }).orElseGet(serverlevel::m_213780_); -- return new LootContext(this.f_78956_, randomsource, minecraftserver.m_278653_()); -+ return new LootContext(this.f_78956_, randomsource, minecraftserver.m_278653_(), queriedLootTableId); + RandomSource randomsource = Optional.ofNullable(this.random).or(() -> { + return p_299315_.map(serverlevel::getRandomSequence); + }).orElseGet(serverlevel::getRandom); +- return new LootContext(this.params, randomsource, minecraftserver.getLootData()); ++ return new LootContext(this.params, randomsource, minecraftserver.getLootData(), queriedLootTableId); } } @@ -134,6 +_,11 @@ - public LootContextParam m_79003_() { - return this.f_78995_; + public LootContextParam getParam() { + return this.param; + } + + // Forge: This method is patched in to expose the same name used in getByName so that ContextNbtProvider#forEntity serializes it properly + public String getName() { -+ return this.f_78994_; ++ return this.name; } - public static LootContext.EntityTarget m_79006_(String p_79007_) { + public static LootContext.EntityTarget getByName(String p_79007_) { diff --git a/patches/minecraft/net/minecraft/world/level/storage/loot/LootParams.java.patch b/patches/minecraft/net/minecraft/world/level/storage/loot/LootParams.java.patch index 5441845927..642b74420a 100644 --- a/patches/minecraft/net/minecraft/world/level/storage/loot/LootParams.java.patch +++ b/patches/minecraft/net/minecraft/world/level/storage/loot/LootParams.java.patch @@ -2,10 +2,10 @@ +++ b/net/minecraft/world/level/storage/loot/LootParams.java @@ -124,7 +_,7 @@ - public LootParams m_287235_(LootContextParamSet p_287701_) { - Set> set = Sets.difference(this.f_286945_.keySet(), p_287701_.m_81398_()); + public LootParams create(LootContextParamSet p_287701_) { + Set> set = Sets.difference(this.params.keySet(), p_287701_.getAllowed()); - if (!set.isEmpty()) { + if (false && !set.isEmpty()) { // Forge: Allow mods to pass custom loot parameters (not part of the vanilla loot table) to the loot context. throw new IllegalArgumentException("Parameters not allowed in this parameter set: " + set); } else { - Set> set1 = Sets.difference(p_287701_.m_81394_(), this.f_286945_.keySet()); + Set> set1 = Sets.difference(p_287701_.getRequired(), this.params.keySet()); diff --git a/patches/minecraft/net/minecraft/world/level/storage/loot/LootTable.java.patch b/patches/minecraft/net/minecraft/world/level/storage/loot/LootTable.java.patch index f55e1c3e48..d4e3a37e58 100644 --- a/patches/minecraft/net/minecraft/world/level/storage/loot/LootTable.java.patch +++ b/patches/minecraft/net/minecraft/world/level/storage/loot/LootTable.java.patch @@ -2,58 +2,58 @@ +++ b/net/minecraft/world/level/storage/loot/LootTable.java @@ -50,7 +_,7 @@ LootTable(LootContextParamSet p_287716_, Optional p_298628_, List p_298771_, List p_301234_) { - this.f_79108_ = p_287716_; - this.f_286958_ = p_298628_; -- this.f_79109_ = p_298771_; -+ this.f_79109_ = Lists.newArrayList(p_298771_); - this.f_79110_ = p_301234_; - this.f_79111_ = LootItemFunctions.m_80770_(p_301234_); + this.paramSet = p_287716_; + this.randomSequence = p_298628_; +- this.pools = p_298771_; ++ this.pools = Lists.newArrayList(p_298771_); + this.functions = p_301234_; + this.compositeFunction = LootItemFunctions.compose(p_301234_); } @@ -74,10 +_,12 @@ }; } + @Deprecated // Use a non-'Raw' version of 'getRandomItems', so that the Forge Global Loot Modifiers will be applied - public void m_287190_(LootParams p_287669_, Consumer p_287781_) { - this.m_79131_((new LootContext.Builder(p_287669_)).m_287259_(this.f_286958_), p_287781_); + public void getRandomItemsRaw(LootParams p_287669_, Consumer p_287781_) { + this.getRandomItemsRaw((new LootContext.Builder(p_287669_)).create(this.randomSequence), p_287781_); } + @Deprecated // Use a non-'Raw' version of 'getRandomItems', so that the Forge Global Loot Modifiers will be applied - public void m_79131_(LootContext p_79132_, Consumer p_79133_) { - LootContext.VisitedEntry visitedentry = LootContext.m_278811_(this); - if (p_79132_.m_278759_(visitedentry)) { + public void getRandomItemsRaw(LootContext p_79132_, Consumer p_79133_) { + LootContext.VisitedEntry visitedentry = LootContext.createVisitedEntry(this); + if (p_79132_.pushVisitedElement(visitedentry)) { @@ -95,15 +_,15 @@ } - public void m_287276_(LootParams p_287748_, long p_287729_, Consumer p_287583_) { -- this.m_79131_((new LootContext.Builder(p_287748_)).m_78965_(p_287729_).m_287259_(this.f_286958_), m_246283_(p_287748_.m_287182_(), p_287583_)); -+ this.m_230922_((new LootContext.Builder(p_287748_)).m_78965_(p_287729_).m_287259_(this.f_286958_)).forEach(p_287583_); + public void getRandomItems(LootParams p_287748_, long p_287729_, Consumer p_287583_) { +- this.getRandomItemsRaw((new LootContext.Builder(p_287748_)).withOptionalRandomSeed(p_287729_).create(this.randomSequence), createStackSplitter(p_287748_.getLevel(), p_287583_)); ++ this.getRandomItems((new LootContext.Builder(p_287748_)).withOptionalRandomSeed(p_287729_).create(this.randomSequence)).forEach(p_287583_); } - public void m_287228_(LootParams p_287704_, Consumer p_287617_) { -- this.m_287190_(p_287704_, m_246283_(p_287704_.m_287182_(), p_287617_)); -+ this.m_287195_(p_287704_).forEach(p_287617_); + public void getRandomItems(LootParams p_287704_, Consumer p_287617_) { +- this.getRandomItemsRaw(p_287704_, createStackSplitter(p_287704_.getLevel(), p_287617_)); ++ this.getRandomItems(p_287704_).forEach(p_287617_); } - public void m_79148_(LootContext p_79149_, Consumer p_79150_) { -- this.m_79131_(p_79149_, m_246283_(p_79149_.m_78952_(), p_79150_)); -+ this.m_230922_(p_79149_).forEach(p_79150_); + public void getRandomItems(LootContext p_79149_, Consumer p_79150_) { +- this.getRandomItemsRaw(p_79149_, createStackSplitter(p_79149_.getLevel(), p_79150_)); ++ this.getRandomItems(p_79149_).forEach(p_79150_); } - public ObjectArrayList m_287214_(LootParams p_287574_, long p_287773_) { + public ObjectArrayList getRandomItems(LootParams p_287574_, long p_287773_) { @@ -116,7 +_,8 @@ - private ObjectArrayList m_230922_(LootContext p_230923_) { + private ObjectArrayList getRandomItems(LootContext p_230923_) { ObjectArrayList objectarraylist = new ObjectArrayList<>(); -- this.m_79148_(p_230923_, objectarraylist::add); -+ this.m_79131_(p_230923_, m_246283_(p_230923_.m_78952_(), objectarraylist::add)); +- this.getRandomItems(p_230923_, objectarraylist::add); ++ this.getRandomItemsRaw(p_230923_, createStackSplitter(p_230923_.getLevel(), objectarraylist::add)); + //objectarraylist = net.minecraftforge.common.ForgeHooks.modifyLoot(this.getLootTableId(), objectarraylist, p_230923_); //TODO: GLM return objectarraylist; } @@ -207,6 +_,23 @@ - public static LootTable.Builder m_79147_() { + public static LootTable.Builder lootTable() { return new LootTable.Builder(); + } + @@ -69,9 +69,9 @@ + } + + public void addPool(LootPool pool) { -+ if (f_79109_.stream().anyMatch(e -> e == pool)) ++ if (pools.stream().anyMatch(e -> e == pool)) + throw new RuntimeException("Attempted to add a duplicate pool to loot table: " + pool); -+ this.f_79109_.add(pool); ++ this.pools.add(pool); } public static class Builder implements FunctionUserBuilder { diff --git a/patches/minecraft/net/minecraft/world/level/storage/loot/functions/LootingEnchantFunction.java.patch b/patches/minecraft/net/minecraft/world/level/storage/loot/functions/LootingEnchantFunction.java.patch index 6ed948beb0..13c9d94db0 100644 --- a/patches/minecraft/net/minecraft/world/level/storage/loot/functions/LootingEnchantFunction.java.patch +++ b/patches/minecraft/net/minecraft/world/level/storage/loot/functions/LootingEnchantFunction.java.patch @@ -1,10 +1,10 @@ --- a/net/minecraft/world/level/storage/loot/functions/LootingEnchantFunction.java +++ b/net/minecraft/world/level/storage/loot/functions/LootingEnchantFunction.java @@ -51,7 +_,7 @@ - public ItemStack m_7372_(ItemStack p_80789_, LootContext p_80790_) { - Entity entity = p_80790_.m_78953_(LootContextParams.f_81458_); + public ItemStack run(ItemStack p_80789_, LootContext p_80790_) { + Entity entity = p_80790_.getParamOrNull(LootContextParams.KILLER_ENTITY); if (entity instanceof LivingEntity) { -- int i = EnchantmentHelper.m_44930_((LivingEntity)entity); +- int i = EnchantmentHelper.getMobLooting((LivingEntity)entity); + int i = p_80790_.getLootingModifier(); if (i == 0) { return p_80789_; diff --git a/patches/minecraft/net/minecraft/world/level/storage/loot/functions/SmeltItemFunction.java.patch b/patches/minecraft/net/minecraft/world/level/storage/loot/functions/SmeltItemFunction.java.patch index 9b537ce0dc..5fb7f2bd52 100644 --- a/patches/minecraft/net/minecraft/world/level/storage/loot/functions/SmeltItemFunction.java.patch +++ b/patches/minecraft/net/minecraft/world/level/storage/loot/functions/SmeltItemFunction.java.patch @@ -2,10 +2,10 @@ +++ b/net/minecraft/world/level/storage/loot/functions/SmeltItemFunction.java @@ -36,7 +_,7 @@ if (optional.isPresent()) { - ItemStack itemstack = optional.get().f_291008_().m_8043_(p_81269_.m_78952_().m_9598_()); - if (!itemstack.m_41619_()) { -- return itemstack.m_255036_(p_81268_.m_41613_()); -+ return itemstack.m_255036_(p_81268_.m_41613_() * itemstack.m_41613_()); // Forge: Support smelting returning multiple + ItemStack itemstack = optional.get().value().getResultItem(p_81269_.getLevel().registryAccess()); + if (!itemstack.isEmpty()) { +- return itemstack.copyWithCount(p_81268_.getCount()); ++ return itemstack.copyWithCount(p_81268_.getCount() * itemstack.getCount()); // Forge: Support smelting returning multiple } } diff --git a/patches/minecraft/net/minecraft/world/level/storage/loot/parameters/LootContextParamSets.java.patch b/patches/minecraft/net/minecraft/world/level/storage/loot/parameters/LootContextParamSets.java.patch index 82b28f1ca9..6227bf360a 100644 --- a/patches/minecraft/net/minecraft/world/level/storage/loot/parameters/LootContextParamSets.java.patch +++ b/patches/minecraft/net/minecraft/world/level/storage/loot/parameters/LootContextParamSets.java.patch @@ -2,17 +2,17 @@ +++ b/net/minecraft/world/level/storage/loot/parameters/LootContextParamSets.java @@ -21,6 +_,7 @@ }); - public static final LootContextParamSet f_81411_ = m_81428_("chest", (p_81452_) -> { - p_81452_.m_81406_(LootContextParams.f_81460_).m_81408_(LootContextParams.f_81455_); -+ p_81452_.m_81408_(LootContextParams.f_81458_); //Forge: Chest Minecarts can have killers. + public static final LootContextParamSet CHEST = register("chest", (p_81452_) -> { + p_81452_.required(LootContextParams.ORIGIN).optional(LootContextParams.THIS_ENTITY); ++ p_81452_.optional(LootContextParams.KILLER_ENTITY); //Forge: Chest Minecarts can have killers. }); - public static final LootContextParamSet f_81412_ = m_81428_("command", (p_81450_) -> { - p_81450_.m_81406_(LootContextParams.f_81460_).m_81408_(LootContextParams.f_81455_); + public static final LootContextParamSet COMMAND = register("command", (p_81450_) -> { + p_81450_.required(LootContextParams.ORIGIN).optional(LootContextParams.THIS_ENTITY); @@ -30,6 +_,7 @@ }); - public static final LootContextParamSet f_81414_ = m_81428_("fishing", (p_81446_) -> { - p_81446_.m_81406_(LootContextParams.f_81460_).m_81406_(LootContextParams.f_81463_).m_81408_(LootContextParams.f_81455_); -+ p_81446_.m_81408_(LootContextParams.f_81458_).m_81408_(LootContextParams.f_81455_); //Forge: Allow fisher, and bobber + public static final LootContextParamSet FISHING = register("fishing", (p_81446_) -> { + p_81446_.required(LootContextParams.ORIGIN).required(LootContextParams.TOOL).optional(LootContextParams.THIS_ENTITY); ++ p_81446_.optional(LootContextParams.KILLER_ENTITY).optional(LootContextParams.THIS_ENTITY); //Forge: Allow fisher, and bobber }); - public static final LootContextParamSet f_81415_ = m_81428_("entity", (p_81444_) -> { - p_81444_.m_81406_(LootContextParams.f_81455_).m_81406_(LootContextParams.f_81460_).m_81406_(LootContextParams.f_81457_).m_81408_(LootContextParams.f_81458_).m_81408_(LootContextParams.f_81459_).m_81408_(LootContextParams.f_81456_); + public static final LootContextParamSet ENTITY = register("entity", (p_81444_) -> { + p_81444_.required(LootContextParams.THIS_ENTITY).required(LootContextParams.ORIGIN).required(LootContextParams.DAMAGE_SOURCE).optional(LootContextParams.KILLER_ENTITY).optional(LootContextParams.DIRECT_KILLER_ENTITY).optional(LootContextParams.LAST_DAMAGE_PLAYER); diff --git a/patches/minecraft/net/minecraft/world/level/storage/loot/predicates/LootItemRandomChanceWithLootingCondition.java.patch b/patches/minecraft/net/minecraft/world/level/storage/loot/predicates/LootItemRandomChanceWithLootingCondition.java.patch index 9bbfc71e77..577c206617 100644 --- a/patches/minecraft/net/minecraft/world/level/storage/loot/predicates/LootItemRandomChanceWithLootingCondition.java.patch +++ b/patches/minecraft/net/minecraft/world/level/storage/loot/predicates/LootItemRandomChanceWithLootingCondition.java.patch @@ -4,13 +4,13 @@ } public boolean test(LootContext p_81967_) { -- Entity entity = p_81967_.m_78953_(LootContextParams.f_81458_); +- Entity entity = p_81967_.getParamOrNull(LootContextParams.KILLER_ENTITY); - int i = 0; - if (entity instanceof LivingEntity) { -- i = EnchantmentHelper.m_44930_((LivingEntity)entity); +- i = EnchantmentHelper.getMobLooting((LivingEntity)entity); - } - + int i = p_81967_.getLootingModifier(); - return p_81967_.m_230907_().m_188501_() < this.f_81953_ + (float)i * this.f_81954_; + return p_81967_.getRandom().nextFloat() < this.percent + (float)i * this.lootingMultiplier; } diff --git a/patches/minecraft/net/minecraft/world/level/storage/loot/providers/nbt/ContextNbtProvider.java.patch b/patches/minecraft/net/minecraft/world/level/storage/loot/providers/nbt/ContextNbtProvider.java.patch index 730ed9d48b..e645f9fb99 100644 --- a/patches/minecraft/net/minecraft/world/level/storage/loot/providers/nbt/ContextNbtProvider.java.patch +++ b/patches/minecraft/net/minecraft/world/level/storage/loot/providers/nbt/ContextNbtProvider.java.patch @@ -3,9 +3,9 @@ @@ -57,7 +_,7 @@ } - public String m_142016_() { + public String getId() { - return p_165578_.name(); + return p_165578_.getName(); } - public Set> m_142524_() { + public Set> getReferencedContextParams() {