diff --git a/build.gradle.kts b/build.gradle.kts index dea9361..b30a475 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -39,8 +39,8 @@ allprojects { name = "githubPackage" credentials { - username = property("ghName").toString() - password = property("ghToken").toString() + username = providers.systemProperty("ghName").get() + password = providers.systemProperty("ghToken").get() } } } diff --git a/buildSrc/build.gradle.kts b/buildSrc/build.gradle.kts index 7397317..31f5357 100644 --- a/buildSrc/build.gradle.kts +++ b/buildSrc/build.gradle.kts @@ -1,18 +1,16 @@ plugins { java `kotlin-dsl` - id("com.github.johnrengelman.shadow") version "8.1.1" + id("com.gradleup.shadow") version "8.3.5" } +kotlin.jvmToolchain(21) + repositories { mavenCentral() maven("https://papermc.io/repo/repository/maven-public/") } -kotlin.jvmToolchain { - languageVersion = JavaLanguageVersion.of(17) -} - dependencies { shadow("io.papermc.paperweight:paperweight-patcher:1.6.2-SNAPSHOT") } diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 14a5b60..c9064c9 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,15 +1,15 @@ [versions] -shadow = "8.1.1" -paperweight = "1.7.4" -paperclip = "3.0.3" -decompiler = "1.10.1" +shadow = "8.3.5" remapper = "0.10.3" +paperclip = "3.0.3" +paperweight = "1.7.4" +decompiler = "1.10.1" [libraries] +paperclip = { group = "io.papermc", name = "paperclip", version.ref = "paperclip" } remapper = { group = "net.fabricmc", name = "tiny-remapper", version.ref="remapper" } decompiler = { group = "org.vineflower", name = "vineflower", version.ref = "decompiler" } -paperclip = { group = "io.papermc", name = "paperclip", version.ref = "paperclip" } [plugins] -shadow = { id = "com.github.johnrengelman.shadow", version.ref = "shadow" } +shadow = { id = "com.gradleup.shadow", version.ref = "shadow" } paperweight = { id = "io.papermc.paperweight.patcher", version.ref = "paperweight" } diff --git a/patches/24w44a.patch b/patches/24w44a.patch deleted file mode 100644 index 2a1ef72..0000000 --- a/patches/24w44a.patch +++ /dev/null @@ -1,9358 +0,0 @@ -From 38f6f7ba6f5ae757dc5d244be96dcec56fe5fe19 Mon Sep 17 00:00:00 2001 -From: AlphaKR93 -Date: Thu, 31 Oct 2024 12:58:52 +0900 -Subject: [PATCH] 24w44a - ---- - com/mojang/math/MatrixUtil.java | 4 + - net/minecraft/DetectedVersion.java | 10 +- - net/minecraft/SharedConstants.java | 20 +- - .../commands/arguments/blocks/BlockInput.java | 17 ++ - net/minecraft/core/BlockPos.java | 38 ++- - .../core/particles/ParticleTypes.java | 5 +- - .../core/particles/TrailParticleOption.java | 34 +++ - net/minecraft/data/BlockFamilies.java | 6 + - net/minecraft/data/Main.java | 31 -- - .../packs/VanillaAdventureAdvancements.java | 1 + - .../data/loot/BlockLootSubProvider.java | 24 ++ - .../data/loot/packs/VanillaBlockLoot.java | 121 ++++---- - .../data/loot/packs/VanillaChestLoot.java | 2 + - .../data/models/BlockModelGenerators.java | 274 ++++++++++-------- - .../data/models/ItemModelGenerators.java | 22 +- - .../data/models/model/ModelTemplates.java | 2 + - .../data/models/model/TextureMapping.java | 8 + - .../data/models/model/TextureSlot.java | 1 + - .../recipes/packs/VanillaRecipeProvider.java | 26 ++ - .../data/structures/StructureUpdater.java | 6 +- - .../data/tags/BiomeTagsProvider.java | 2 + - .../data/tags/EntityTypeTagsProvider.java | 1 + - .../data/tags/VanillaBlockTagsProvider.java | 57 +++- - .../data/tags/VanillaItemTagsProvider.java | 6 +- - .../data/worldgen/biome/BiomeData.java | 1 + - .../data/worldgen/biome/OverworldBiomes.java | 10 +- - .../data/worldgen/features/CaveFeatures.java | 10 +- - .../data/worldgen/features/TreeFeatures.java | 15 + - .../worldgen/features/VegetationFeatures.java | 41 ++- - .../worldgen/placement/PlacementUtils.java | 1 + - .../placement/VegetationPlacements.java | 133 +++++---- - net/minecraft/network/chat/Style.java | 145 ++++++--- - .../game/ClientGamePacketListener.java | 2 +- - .../game/ClientboundLevelParticlesPacket.java | 30 +- - .../ClientboundPlayerInfoUpdatePacket.java | 10 +- - .../game/ClientboundSetHeldSlotPacket.java | 26 +- - .../protocol/game/GamePacketTypes.java | 3 +- - .../network/protocol/game/GameProtocols.java | 3 +- - .../game/ServerGamePacketListener.java | 4 +- - .../ServerboundPickItemFromBlockPacket.java | 28 ++ - .../ServerboundPickItemFromEntityPacket.java | 27 ++ - net/minecraft/server/MinecraftServer.java | 2 +- - .../server/commands/AttributeCommand.java | 73 ++++- - .../server/commands/ParticleCommand.java | 2 +- - .../server/commands/PlaceCommand.java | 2 + - .../commands/SpawnArmorTrimsCommand.java | 3 +- - .../server/commands/TimeCommand.java | 2 + - net/minecraft/server/level/ChunkMap.java | 5 +- - .../server/level/ChunkTrackingView.java | 13 +- - .../server/level/DistanceManager.java | 2 +- - net/minecraft/server/level/ServerEntity.java | 3 +- - net/minecraft/server/level/ServerLevel.java | 61 ++-- - net/minecraft/server/level/ServerPlayer.java | 4 +- - net/minecraft/server/level/TicketType.java | 1 - - .../network/ServerGamePacketListenerImpl.java | 89 ++++-- - net/minecraft/sounds/SoundEvents.java | 16 + - net/minecraft/util/ARGB.java | 18 +- - net/minecraft/util/SpawnUtil.java | 10 +- - net/minecraft/util/datafix/DataFixers.java | 8 +- - .../datafix/fixes/EntityFieldsRenameFix.java | 30 ++ - .../util/profiling/jfr/JfrProfiler.java | 23 +- - .../util/profiling/jfr/JvmProfiler.java | 12 +- - .../jfr/callback/ProfiledDuration.java | 2 +- - .../jfr/event/StructureGenerationEvent.java | 56 ++++ - .../profiling/jfr/parse/JfrStatsParser.java | 8 +- - .../profiling/jfr/parse/JfrStatsResult.java | 4 +- - .../serialize/JfrResultJsonSerializer.java | 42 +++ - .../profiling/jfr/stats/StructureGenStat.java | 17 ++ - .../util/thread/BlockableEventLoop.java | 10 +- - .../world/effect/PoisonMobEffect.java | 4 +- - .../world/effect/WitherMobEffect.java | 4 +- - .../world/entity/AreaEffectCloud.java | 13 +- - net/minecraft/world/entity/Entity.java | 5 +- - net/minecraft/world/entity/EntityType.java | 11 +- - net/minecraft/world/entity/LivingEntity.java | 41 +-- - .../entity/ai/attributes/AttributeMap.java | 13 + - net/minecraft/world/entity/animal/Bee.java | 22 ++ - net/minecraft/world/entity/animal/Salmon.java | 32 +- - .../entity/boss/enderdragon/EnderDragon.java | 2 +- - .../world/entity/item/PrimedTnt.java | 2 +- - .../world/entity/monster/EnderMan.java | 3 +- - .../world/entity/monster/Evoker.java | 2 +- - .../world/entity/monster/Ravager.java | 3 - - .../entity/monster/creaking/Creaking.java | 82 ++++-- - .../entity/monster/creaking/CreakingAi.java | 2 +- - .../monster/creaking/CreakingTransient.java | 136 +++++++-- - .../world/entity/npc/AbstractVillager.java | 5 + - .../world/entity/npc/ClientSideMerchant.java | 5 + - net/minecraft/world/entity/npc/Villager.java | 3 +- - .../world/entity/npc/VillagerTrades.java | 14 +- - .../world/entity/player/Inventory.java | 25 +- - net/minecraft/world/entity/player/Player.java | 7 +- - .../entity/projectile/AbstractArrow.java | 33 ++- - .../projectile/AbstractHurtingProjectile.java | 31 -- - .../world/entity/projectile/Projectile.java | 15 +- - .../entity/projectile/ThrownTrident.java | 1 + - .../world/entity/vehicle/MinecartTNT.java | 26 +- - net/minecraft/world/flag/FeatureFlags.java | 2 - - net/minecraft/world/inventory/ArmorSlot.java | 6 +- - .../world/inventory/BrewingStandMenu.java | 13 + - .../world/inventory/EnchantmentMenu.java | 7 +- - .../world/inventory/HorseInventoryMenu.java | 13 +- - .../world/inventory/InventoryMenu.java | 16 +- - .../world/inventory/MerchantMenu.java | 2 +- - net/minecraft/world/inventory/Slot.java | 3 +- - net/minecraft/world/item/BlockItem.java | 46 ++- - .../world/item/CreativeModeTabs.java | 10 + - net/minecraft/world/item/EggItem.java | 4 +- - net/minecraft/world/item/EnderpearlItem.java | 4 +- - net/minecraft/world/item/Item.java | 54 +++- - net/minecraft/world/item/ItemStack.java | 8 +- - net/minecraft/world/item/Items.java | 22 +- - net/minecraft/world/item/MapItem.java | 2 +- - .../world/item/SmithingTemplateItem.java | 32 +- - net/minecraft/world/item/SnowballItem.java | 4 +- - .../world/item/ThrowablePotionItem.java | 4 +- - net/minecraft/world/item/TridentItem.java | 2 +- - net/minecraft/world/item/WindChargeItem.java | 4 +- - .../world/item/component/CustomData.java | 8 + - .../world/item/enchantment/Enchantments.java | 2 +- - .../item/equipment/trim/TrimMaterials.java | 22 +- - .../world/item/trading/Merchant.java | 2 + - .../world/item/trading/MerchantOffers.java | 7 +- - net/minecraft/world/level/Level.java | 21 +- - .../world/level/ServerExplosion.java | 6 +- - net/minecraft/world/level/biome/Biome.java | 7 +- - .../level/biome/BiomeSpecialEffects.java | 86 ++++-- - net/minecraft/world/level/biome/Biomes.java | 1 + - .../MultiNoiseBiomeSourceParameterList.java | 16 +- - .../MultiNoiseBiomeSourceParameterLists.java | 7 - - .../level/biome/OverworldBiomeBuilder.java | 28 +- - .../level/block/AbstractBannerBlock.java | 2 +- - .../world/level/block/AttachedStemBlock.java | 2 +- - .../world/level/block/BambooSaplingBlock.java | 2 +- - .../level/block/BigDripleafStemBlock.java | 2 +- - net/minecraft/world/level/block/Block.java | 4 - - .../world/level/block/BlockTypes.java | 4 +- - net/minecraft/world/level/block/Blocks.java | 183 ++++++------ - .../world/level/block/CandleCakeBlock.java | 2 +- - .../world/level/block/CaveVinesBlock.java | 2 +- - .../level/block/CaveVinesPlantBlock.java | 2 +- - .../world/level/block/ComposterBlock.java | 2 + - .../world/level/block/CreakingHeartBlock.java | 73 +++-- - .../world/level/block/CropBlock.java | 2 +- - .../world/level/block/DecoratedPotBlock.java | 6 +- - .../world/level/block/EndGatewayBlock.java | 2 +- - .../world/level/block/EndPortalBlock.java | 2 +- - .../world/level/block/EyeblossomBlock.java | 155 ++++++++++ - .../world/level/block/FireBlock.java | 8 +- - .../world/level/block/FlowerBlock.java | 7 + - .../world/level/block/FlowerPotBlock.java | 33 ++- - .../world/level/block/FrostedIceBlock.java | 2 +- - .../world/level/block/GlowLichenBlock.java | 2 +- - .../level/block/GrowingPlantBodyBlock.java | 2 +- - .../world/level/block/HangingMossBlock.java | 3 +- - .../world/level/block/LightBlock.java | 2 +- - .../world/level/block/MossyCarpetBlock.java | 11 +- - .../world/level/block/MultifaceBlock.java | 22 +- - .../block/MultifaceSpreadeableBlock.java | 15 + - .../world/level/block/NetherPortalBlock.java | 2 +- - .../world/level/block/NetherWartBlock.java | 2 +- - .../level/block/ParticleLeavesBlock.java | 50 ++++ - .../world/level/block/SculkBehaviour.java | 2 +- - .../world/level/block/SculkVeinBlock.java | 5 +- - .../world/level/block/ShulkerBoxBlock.java | 2 +- - .../world/level/block/SnowyDirtBlock.java | 2 +- - .../world/level/block/SoundType.java | 12 + - .../world/level/block/SpongeBlock.java | 28 +- - .../level/block/SpreadingSnowyDirtBlock.java | 2 +- - .../world/level/block/StemBlock.java | 2 +- - .../level/block/SweetBerryBushBlock.java | 2 +- - .../world/level/block/TallSeagrassBlock.java | 2 +- - .../world/level/block/WitherRoseBlock.java | 7 +- - .../world/level/block/entity/BlockEntity.java | 4 - - .../level/block/entity/BlockEntityType.java | 5 + - .../block/entity/CommandBlockEntity.java | 5 - - .../entity/CreakingHeartBlockEntity.java | 97 +++++-- - .../block/entity/LecternBlockEntity.java | 5 - - .../entity/SculkShriekerBlockEntity.java | 4 +- - .../level/block/entity/SignBlockEntity.java | 5 - - .../block/entity/SpawnerBlockEntity.java | 5 - - .../block/entity/TrialSpawnerBlockEntity.java | 5 - - .../world/level/block/grower/TreeGrower.java | 2 +- - .../level/block/piston/MovingPistonBlock.java | 2 +- - .../level/block/piston/PistonHeadBlock.java | 2 +- - .../level/block/state/BlockBehaviour.java | 8 + - .../properties/BlockStateProperties.java | 16 +- - .../world/level/chunk/ChunkGenerator.java | 70 +++-- - .../level/chunk/status/ChunkStatusTasks.java | 3 +- - .../world/level/chunk/status/ChunkStep.java | 2 +- - .../level/chunk/storage/SectionStorage.java | 10 +- - .../levelgen/feature/SimpleBlockFeature.java | 4 + - .../MultifaceGrowthConfiguration.java | 44 ++- - .../SimpleBlockConfiguration.java | 13 +- - .../CreakingHeartDecorator.java | 5 +- - .../treedecorators/PaleMossDecorator.java | 10 +- - .../trunkplacers/DarkOakTrunkPlacer.java | 2 +- - .../level/levelgen/structure/Structure.java | 27 +- - .../structure/pools/JigsawPlacement.java | 104 ++++--- - 199 files changed, 2634 insertions(+), 1237 deletions(-) - create mode 100644 net/minecraft/core/particles/TrailParticleOption.java - create mode 100644 net/minecraft/network/protocol/game/ServerboundPickItemFromBlockPacket.java - create mode 100644 net/minecraft/network/protocol/game/ServerboundPickItemFromEntityPacket.java - create mode 100644 net/minecraft/util/datafix/fixes/EntityFieldsRenameFix.java - create mode 100644 net/minecraft/util/profiling/jfr/event/StructureGenerationEvent.java - create mode 100644 net/minecraft/util/profiling/jfr/stats/StructureGenStat.java - create mode 100644 net/minecraft/world/level/block/EyeblossomBlock.java - create mode 100644 net/minecraft/world/level/block/MultifaceSpreadeableBlock.java - create mode 100644 net/minecraft/world/level/block/ParticleLeavesBlock.java - -diff --git a/com/mojang/math/MatrixUtil.java b/com/mojang/math/MatrixUtil.java -index 3e83410..5b86d30 100644 ---- a/com/mojang/math/MatrixUtil.java -+++ b/com/mojang/math/MatrixUtil.java -@@ -147,6 +147,10 @@ public class MatrixUtil { - return Triple.of(quaternionf1, vector3f, quaternionf.conjugate()); - } - -+ public static boolean isIdentity(Matrix4f matrix4f) { -+ return (matrix4f.properties() & 4) != 0; -+ } -+ - public static boolean isPureTranslation(Matrix4f matrix) { - return (matrix.properties() & 8) != 0; - } -diff --git a/net/minecraft/DetectedVersion.java b/net/minecraft/DetectedVersion.java -index b84ebcf..511891d 100644 ---- a/net/minecraft/DetectedVersion.java -+++ b/net/minecraft/DetectedVersion.java -@@ -28,12 +28,12 @@ public class DetectedVersion implements WorldVersion { - - private DetectedVersion() { - this.id = UUID.randomUUID().toString().replaceAll("-", ""); -- this.name = "1.21.3"; -- this.stable = true; -- this.worldVersion = new DataVersion(4082, "main"); -+ this.name = "24w44a"; -+ this.stable = false; -+ this.worldVersion = new DataVersion(4174, "main"); - this.protocolVersion = SharedConstants.getProtocolVersion(); -- this.resourcePackVersion = 42; -- this.dataPackVersion = 57; -+ this.resourcePackVersion = 43; -+ this.dataPackVersion = 58; - this.buildTime = new Date(); - } - -diff --git a/net/minecraft/SharedConstants.java b/net/minecraft/SharedConstants.java -index 2bc0a7f..f14c89e 100644 ---- a/net/minecraft/SharedConstants.java -+++ b/net/minecraft/SharedConstants.java -@@ -10,24 +10,24 @@ import net.minecraft.world.level.ChunkPos; - - public class SharedConstants { - @Deprecated -- public static final boolean SNAPSHOT = false; -+ public static final boolean SNAPSHOT = true; - @Deprecated -- public static final int WORLD_VERSION = 4082; -+ public static final int WORLD_VERSION = 4174; - @Deprecated - public static final String SERIES = "main"; - @Deprecated -- public static final String VERSION_STRING = "1.21.3"; -+ public static final String VERSION_STRING = "24w44a"; - @Deprecated -- public static final int RELEASE_NETWORK_PROTOCOL_VERSION = 768; -+ public static final int RELEASE_NETWORK_PROTOCOL_VERSION = 769; - @Deprecated -- public static final int SNAPSHOT_NETWORK_PROTOCOL_VERSION = 219; -- public static final int SNBT_NAG_VERSION = 4053; -+ public static final int SNAPSHOT_NETWORK_PROTOCOL_VERSION = 220; -+ public static final int SNBT_NAG_VERSION = 4173; - private static final int SNAPSHOT_PROTOCOL_BIT = 30; -- public static final boolean CRASH_EAGERLY = false; -+ public static final boolean CRASH_EAGERLY = true; - @Deprecated -- public static final int RESOURCE_PACK_FORMAT = 42; -+ public static final int RESOURCE_PACK_FORMAT = 43; - @Deprecated -- public static final int DATA_PACK_FORMAT = 57; -+ public static final int DATA_PACK_FORMAT = 58; - @Deprecated - public static final int LANGUAGE_FORMAT = 1; - public static final int REPORT_FORMAT_VERSION = 1; -@@ -160,7 +160,7 @@ public class SharedConstants { - } - - public static int getProtocolVersion() { -- return 768; -+ return 1073742044; - } - - public static boolean debugVoidTerrain(ChunkPos chunkPos) { -diff --git a/net/minecraft/commands/arguments/blocks/BlockInput.java b/net/minecraft/commands/arguments/blocks/BlockInput.java -index 7a25156..931cb17 100644 ---- a/net/minecraft/commands/arguments/blocks/BlockInput.java -+++ b/net/minecraft/commands/arguments/blocks/BlockInput.java -@@ -64,6 +64,7 @@ public class BlockInput implements Predicate { - blockState = this.state; - } - -+ blockState = this.overwriteWithDefinedProperties(blockState); - if (!level.setBlock(pos, blockState, flags)) { - return false; - } else { -@@ -77,4 +78,20 @@ public class BlockInput implements Predicate { - return true; - } - } -+ -+ private BlockState overwriteWithDefinedProperties(BlockState blockState) { -+ if (blockState == this.state) { -+ return blockState; -+ } else { -+ for (Property property : this.properties) { -+ blockState = copyProperty(blockState, this.state, property); -+ } -+ -+ return blockState; -+ } -+ } -+ -+ private static > BlockState copyProperty(BlockState blockState, BlockState blockState1, Property property) { -+ return blockState.setValue(property, blockState1.getValue(property)); -+ } - } -diff --git a/net/minecraft/core/BlockPos.java b/net/minecraft/core/BlockPos.java -index f29f686..cc8dd03 100644 ---- a/net/minecraft/core/BlockPos.java -+++ b/net/minecraft/core/BlockPos.java -@@ -11,6 +11,7 @@ import java.util.Optional; - import java.util.Queue; - import java.util.function.BiConsumer; - import java.util.function.Consumer; -+import java.util.function.Function; - import java.util.function.Predicate; - import java.util.stream.IntStream; - import java.util.stream.Stream; -@@ -496,30 +497,37 @@ public class BlockPos extends Vec3i { - } - - public static int breadthFirstTraversal( -- BlockPos startPos, int depth, int visitLimit, BiConsumer> action, Predicate predicate -+ BlockPos blockPos, int i, int i1, BiConsumer> biConsumer, Function function - ) { - Queue> queue = new ArrayDeque<>(); - LongSet set = new LongOpenHashSet(); -- queue.add(Pair.of(startPos, 0)); -- int i = 0; -+ queue.add(Pair.of(blockPos, 0)); -+ int i2 = 0; - - while (!queue.isEmpty()) { - Pair pair = queue.poll(); -- BlockPos blockPos = pair.getLeft(); -+ BlockPos blockPos1 = pair.getLeft(); - int right = pair.getRight(); -- long packedBlockPos = blockPos.asLong(); -- if (set.add(packedBlockPos) && predicate.test(blockPos)) { -- if (++i >= visitLimit) { -- return i; -- } -+ long packedBlockPos = blockPos1.asLong(); -+ if (set.add(packedBlockPos)) { -+ BlockPos.TraversalNodeStatus traversalNodeStatus = function.apply(blockPos1); -+ if (traversalNodeStatus != BlockPos.TraversalNodeStatus.SKIP) { -+ if (traversalNodeStatus == BlockPos.TraversalNodeStatus.STOP) { -+ break; -+ } -+ -+ if (++i2 >= i1) { -+ return i2; -+ } - -- if (right < depth) { -- action.accept(blockPos, blockPos1 -> queue.add(Pair.of(blockPos1, right + 1))); -+ if (right < i) { -+ biConsumer.accept(blockPos1, blockPos2 -> queue.add(Pair.of(blockPos2, right + 1))); -+ } - } - } - } - -- return i; -+ return i2; - } - - public static class MutableBlockPos extends BlockPos { -@@ -647,4 +655,10 @@ public class BlockPos extends Vec3i { - return new BlockPos(this); - } - } -+ -+ public static enum TraversalNodeStatus { -+ ACCEPT, -+ SKIP, -+ STOP; -+ } - } -diff --git a/net/minecraft/core/particles/ParticleTypes.java b/net/minecraft/core/particles/ParticleTypes.java -index 44f5802..d255e7f 100644 ---- a/net/minecraft/core/particles/ParticleTypes.java -+++ b/net/minecraft/core/particles/ParticleTypes.java -@@ -55,6 +55,7 @@ public class ParticleTypes { - public static final SimpleParticleType FLAME = register("flame", false); - public static final SimpleParticleType INFESTED = register("infested", false); - public static final SimpleParticleType CHERRY_LEAVES = register("cherry_leaves", false); -+ public static final SimpleParticleType PALE_OAK_LEAVES = register("pale_oak_leaves", false); - public static final SimpleParticleType SCULK_SOUL = register("sculk_soul", false); - public static final ParticleType SCULK_CHARGE = register( - "sculk_charge", true, particleType -> SculkChargeParticleOptions.CODEC, particleType -> SculkChargeParticleOptions.STREAM_CODEC -@@ -71,8 +72,8 @@ public class ParticleTypes { - public static final ParticleType VIBRATION = register( - "vibration", true, particleType -> VibrationParticleOption.CODEC, particleType -> VibrationParticleOption.STREAM_CODEC - ); -- public static final ParticleType TRAIL = register( -- "trail", false, particleType -> TargetColorParticleOption.CODEC, particleType -> TargetColorParticleOption.STREAM_CODEC -+ public static final ParticleType TRAIL = register( -+ "trail", false, particleType -> TrailParticleOption.CODEC, particleType -> TrailParticleOption.STREAM_CODEC - ); - public static final SimpleParticleType ITEM_SLIME = register("item_slime", false); - public static final SimpleParticleType ITEM_COBWEB = register("item_cobweb", false); -diff --git a/net/minecraft/core/particles/TrailParticleOption.java b/net/minecraft/core/particles/TrailParticleOption.java -new file mode 100644 -index 0000000..117338b ---- /dev/null -+++ b/net/minecraft/core/particles/TrailParticleOption.java -@@ -0,0 +1,34 @@ -+package net.minecraft.core.particles; -+ -+import com.mojang.serialization.MapCodec; -+import com.mojang.serialization.codecs.RecordCodecBuilder; -+import net.minecraft.network.RegistryFriendlyByteBuf; -+import net.minecraft.network.codec.ByteBufCodecs; -+import net.minecraft.network.codec.StreamCodec; -+import net.minecraft.util.ExtraCodecs; -+import net.minecraft.world.phys.Vec3; -+ -+public record TrailParticleOption(Vec3 target, int color, int duration) implements ParticleOptions { -+ public static final MapCodec CODEC = RecordCodecBuilder.mapCodec( -+ instance -> instance.group( -+ Vec3.CODEC.fieldOf("target").forGetter(TrailParticleOption::target), -+ ExtraCodecs.RGB_COLOR_CODEC.fieldOf("color").forGetter(TrailParticleOption::color), -+ ExtraCodecs.POSITIVE_INT.fieldOf("duration").forGetter(TrailParticleOption::duration) -+ ) -+ .apply(instance, TrailParticleOption::new) -+ ); -+ public static final StreamCodec STREAM_CODEC = StreamCodec.composite( -+ Vec3.STREAM_CODEC, -+ TrailParticleOption::target, -+ ByteBufCodecs.INT, -+ TrailParticleOption::color, -+ ByteBufCodecs.VAR_INT, -+ TrailParticleOption::duration, -+ TrailParticleOption::new -+ ); -+ -+ @Override -+ public ParticleType getType() { -+ return ParticleTypes.TRAIL; -+ } -+} -diff --git a/net/minecraft/data/BlockFamilies.java b/net/minecraft/data/BlockFamilies.java -index 9485ea1..22c5036 100644 ---- a/net/minecraft/data/BlockFamilies.java -+++ b/net/minecraft/data/BlockFamilies.java -@@ -348,6 +348,12 @@ public class BlockFamilies { - .slab(Blocks.TUFF_BRICK_SLAB) - .chiseled(Blocks.CHISELED_TUFF_BRICKS) - .getFamily(); -+ public static final BlockFamily RESIN_BRICKS = familyBuilder(Blocks.RESIN_BRICKS) -+ .wall(Blocks.RESIN_BRICK_WALL) -+ .stairs(Blocks.RESIN_BRICK_STAIRS) -+ .slab(Blocks.RESIN_BRICK_SLAB) -+ .chiseled(Blocks.CHISELED_RESIN_BRICKS) -+ .getFamily(); - public static final BlockFamily NETHER_BRICKS = familyBuilder(Blocks.NETHER_BRICKS) - .fence(Blocks.NETHER_BRICK_FENCE) - .wall(Blocks.NETHER_BRICK_WALL) -diff --git a/net/minecraft/data/Main.java b/net/minecraft/data/Main.java -index 5b054f1..40dc0b2 100644 ---- a/net/minecraft/data/Main.java -+++ b/net/minecraft/data/Main.java -@@ -16,7 +16,6 @@ import net.minecraft.WorldVersion; - import net.minecraft.core.HolderLookup; - import net.minecraft.core.RegistrySetBuilder; - import net.minecraft.data.advancements.packs.VanillaAdvancementProvider; --import net.minecraft.data.advancements.packs.WinterDropAdvancementProvider; - import net.minecraft.data.info.BiomeParametersDumpReport; - import net.minecraft.data.info.BlockListReport; - import net.minecraft.data.info.CommandsReport; -@@ -26,16 +25,13 @@ import net.minecraft.data.info.PacketReport; - import net.minecraft.data.info.RegistryDumpReport; - import net.minecraft.data.loot.packs.TradeRebalanceLootTableProvider; - import net.minecraft.data.loot.packs.VanillaLootTableProvider; --import net.minecraft.data.loot.packs.WinterDropLootTableProvider; - import net.minecraft.data.metadata.PackMetadataGenerator; - import net.minecraft.data.models.EquipmentModelProvider; - import net.minecraft.data.models.ModelProvider; - import net.minecraft.data.recipes.packs.VanillaRecipeProvider; --import net.minecraft.data.recipes.packs.WinterDropRecipeProvider; - import net.minecraft.data.registries.RegistriesDatapackGenerator; - import net.minecraft.data.registries.TradeRebalanceRegistries; - import net.minecraft.data.registries.VanillaRegistries; --import net.minecraft.data.registries.WinterDropRegistries; - import net.minecraft.data.structures.NbtToSnbt; - import net.minecraft.data.structures.SnbtToNbt; - import net.minecraft.data.structures.StructureUpdater; -@@ -57,10 +53,6 @@ import net.minecraft.data.tags.TradeRebalanceStructureTagsProvider; - import net.minecraft.data.tags.VanillaBlockTagsProvider; - import net.minecraft.data.tags.VanillaEnchantmentTagsProvider; - import net.minecraft.data.tags.VanillaItemTagsProvider; --import net.minecraft.data.tags.WinterDropBiomeTagsProvider; --import net.minecraft.data.tags.WinterDropBlockTagsProvider; --import net.minecraft.data.tags.WinterDropEntityTypeTagsProvider; --import net.minecraft.data.tags.WinterDropItemTagsProvider; - import net.minecraft.data.tags.WorldPresetTagsProvider; - import net.minecraft.network.chat.Component; - import net.minecraft.obfuscate.DontObfuscate; -@@ -193,29 +185,6 @@ public class Main { - output, Component.translatable("dataPack.minecart_improvements.description"), FeatureFlagSet.of(FeatureFlags.MINECART_IMPROVEMENTS) - ) - ); -- CompletableFuture completableFuture1x = WinterDropRegistries.createLookup(completableFuture); -- completableFuture2 = completableFuture1x.thenApply(RegistrySetBuilder.PatchedRegistries::full); -- builtinDatapack = dataGenerator.getBuiltinDatapack(server, "winter_drop"); -- builtinDatapack.addProvider( -- bindRegistries(RegistriesDatapackGenerator::new, completableFuture1x.thenApply(RegistrySetBuilder.PatchedRegistries::patches)) -- ); -- builtinDatapack.addProvider(bindRegistries(WinterDropRecipeProvider.Runner::new, completableFuture2)); -- CompletableFuture finalCompletableFuture = completableFuture2; -- TagsProvider tagsProvider5 = builtinDatapack.addProvider( -- output -> new WinterDropBlockTagsProvider(output, finalCompletableFuture, tagsProvider.contentsGetter()) -- ); -- builtinDatapack.addProvider( -- output -> new WinterDropItemTagsProvider(output, finalCompletableFuture, tagsProvider1.contentsGetter(), tagsProvider5.contentsGetter()) -- ); -- builtinDatapack.addProvider(output -> new WinterDropBiomeTagsProvider(output, finalCompletableFuture, tagsProvider2.contentsGetter())); -- builtinDatapack.addProvider(bindRegistries(WinterDropLootTableProvider::create, completableFuture2)); -- builtinDatapack.addProvider( -- output -> PackMetadataGenerator.forFeaturePack( -- output, Component.translatable("dataPack.winter_drop.description"), FeatureFlagSet.of(FeatureFlags.WINTER_DROP) -- ) -- ); -- builtinDatapack.addProvider(bindRegistries(WinterDropEntityTypeTagsProvider::new, completableFuture2)); -- builtinDatapack.addProvider(bindRegistries(WinterDropAdvancementProvider::create, completableFuture2)); - return dataGenerator; - } - } -diff --git a/net/minecraft/data/advancements/packs/VanillaAdventureAdvancements.java b/net/minecraft/data/advancements/packs/VanillaAdventureAdvancements.java -index f704f4d..a17f13f 100644 ---- a/net/minecraft/data/advancements/packs/VanillaAdventureAdvancements.java -+++ b/net/minecraft/data/advancements/packs/VanillaAdventureAdvancements.java -@@ -96,6 +96,7 @@ public class VanillaAdventureAdvancements implements AdvancementSubProvider { - EntityType.BOGGED, - EntityType.BREEZE, - EntityType.CAVE_SPIDER, -+ EntityType.CREAKING_TRANSIENT, - EntityType.CREEPER, - EntityType.DROWNED, - EntityType.ELDER_GUARDIAN, -diff --git a/net/minecraft/data/loot/BlockLootSubProvider.java b/net/minecraft/data/loot/BlockLootSubProvider.java -index 4f4cccf..6ed8efa 100644 ---- a/net/minecraft/data/loot/BlockLootSubProvider.java -+++ b/net/minecraft/data/loot/BlockLootSubProvider.java -@@ -478,6 +478,30 @@ public abstract class BlockLootSubProvider implements LootTableSubProvider { - ); - } - -+ protected LootTable.Builder createMultifaceBlockDrops(Block block) { -+ return LootTable.lootTable() -+ .withPool( -+ LootPool.lootPool() -+ .add( -+ (LootPoolEntryContainer.Builder)this.applyExplosionDecay( -+ block, -+ LootItem.lootTableItem(block) -+ .apply( -+ Direction.values(), -+ direction -> SetItemCountFunction.setCount(ConstantValue.exactly(1.0F), true) -+ .when( -+ LootItemBlockStatePropertyCondition.hasBlockStateProperties(block) -+ .setProperties( -+ StatePropertiesPredicate.Builder.properties().hasProperty(MultifaceBlock.getFaceProperty(direction), true) -+ ) -+ ) -+ ) -+ .apply(SetItemCountFunction.setCount(ConstantValue.exactly(-1.0F), true)) -+ ) -+ ) -+ ); -+ } -+ - protected LootTable.Builder createMossyCarpetBlockDrops(Block block) { - return LootTable.lootTable() - .withPool( -diff --git a/net/minecraft/data/loot/packs/VanillaBlockLoot.java b/net/minecraft/data/loot/packs/VanillaBlockLoot.java -index 139cae9..cbc1e8f 100644 ---- a/net/minecraft/data/loot/packs/VanillaBlockLoot.java -+++ b/net/minecraft/data/loot/packs/VanillaBlockLoot.java -@@ -116,7 +116,7 @@ public class VanillaBlockLoot extends BlockLootSubProvider { - this.dropSelf(Blocks.JUNGLE_PLANKS); - this.dropSelf(Blocks.ACACIA_PLANKS); - this.dropSelf(Blocks.DARK_OAK_PLANKS); -- this.add(Blocks.PALE_OAK_PLANKS, noDrop()); -+ this.dropSelf(Blocks.PALE_OAK_PLANKS); - this.dropSelf(Blocks.MANGROVE_PLANKS); - this.dropSelf(Blocks.CHERRY_PLANKS); - this.dropSelf(Blocks.BAMBOO_PLANKS); -@@ -128,7 +128,7 @@ public class VanillaBlockLoot extends BlockLootSubProvider { - this.dropSelf(Blocks.JUNGLE_SAPLING); - this.dropSelf(Blocks.ACACIA_SAPLING); - this.dropSelf(Blocks.DARK_OAK_SAPLING); -- this.add(Blocks.PALE_OAK_SAPLING, noDrop()); -+ this.dropSelf(Blocks.PALE_OAK_SAPLING); - this.dropSelf(Blocks.CHERRY_SAPLING); - this.dropSelf(Blocks.SAND); - this.add(Blocks.SUSPICIOUS_SAND, noDrop()); -@@ -140,7 +140,7 @@ public class VanillaBlockLoot extends BlockLootSubProvider { - this.dropSelf(Blocks.JUNGLE_LOG); - this.dropSelf(Blocks.ACACIA_LOG); - this.dropSelf(Blocks.DARK_OAK_LOG); -- this.add(Blocks.PALE_OAK_LOG, noDrop()); -+ this.dropSelf(Blocks.PALE_OAK_LOG); - this.dropSelf(Blocks.CHERRY_LOG); - this.dropSelf(Blocks.BAMBOO_BLOCK); - this.dropSelf(Blocks.STRIPPED_OAK_LOG); -@@ -149,7 +149,7 @@ public class VanillaBlockLoot extends BlockLootSubProvider { - this.dropSelf(Blocks.STRIPPED_JUNGLE_LOG); - this.dropSelf(Blocks.STRIPPED_ACACIA_LOG); - this.dropSelf(Blocks.STRIPPED_DARK_OAK_LOG); -- this.add(Blocks.STRIPPED_PALE_OAK_LOG, noDrop()); -+ this.dropSelf(Blocks.STRIPPED_PALE_OAK_LOG); - this.dropSelf(Blocks.STRIPPED_MANGROVE_LOG); - this.dropSelf(Blocks.STRIPPED_CHERRY_LOG); - this.dropSelf(Blocks.STRIPPED_BAMBOO_BLOCK); -@@ -161,7 +161,7 @@ public class VanillaBlockLoot extends BlockLootSubProvider { - this.dropSelf(Blocks.JUNGLE_WOOD); - this.dropSelf(Blocks.ACACIA_WOOD); - this.dropSelf(Blocks.DARK_OAK_WOOD); -- this.add(Blocks.PALE_OAK_WOOD, noDrop()); -+ this.dropSelf(Blocks.PALE_OAK_WOOD); - this.dropSelf(Blocks.MANGROVE_WOOD); - this.dropSelf(Blocks.CHERRY_WOOD); - this.dropSelf(Blocks.STRIPPED_OAK_WOOD); -@@ -170,7 +170,7 @@ public class VanillaBlockLoot extends BlockLootSubProvider { - this.dropSelf(Blocks.STRIPPED_JUNGLE_WOOD); - this.dropSelf(Blocks.STRIPPED_ACACIA_WOOD); - this.dropSelf(Blocks.STRIPPED_DARK_OAK_WOOD); -- this.add(Blocks.STRIPPED_PALE_OAK_WOOD, noDrop()); -+ this.dropSelf(Blocks.STRIPPED_PALE_OAK_WOOD); - this.dropSelf(Blocks.STRIPPED_MANGROVE_WOOD); - this.dropSelf(Blocks.STRIPPED_CHERRY_WOOD); - this.dropSelf(Blocks.STRIPPED_CRIMSON_HYPHAE); -@@ -178,6 +178,7 @@ public class VanillaBlockLoot extends BlockLootSubProvider { - this.dropSelf(Blocks.SPONGE); - this.dropSelf(Blocks.WET_SPONGE); - this.dropSelf(Blocks.LAPIS_BLOCK); -+ this.dropSelf(Blocks.RESIN_BLOCK); - this.dropSelf(Blocks.SANDSTONE); - this.dropSelf(Blocks.CHISELED_SANDSTONE); - this.dropSelf(Blocks.CUT_SANDSTONE); -@@ -203,6 +204,8 @@ public class VanillaBlockLoot extends BlockLootSubProvider { - this.dropSelf(Blocks.RED_WOOL); - this.dropSelf(Blocks.BLACK_WOOL); - this.dropSelf(Blocks.DANDELION); -+ this.dropSelf(Blocks.OPEN_EYEBLOSSOM); -+ this.dropSelf(Blocks.CLOSED_EYEBLOSSOM); - this.dropSelf(Blocks.POPPY); - this.dropSelf(Blocks.TORCHFLOWER); - this.dropSelf(Blocks.BLUE_ORCHID); -@@ -238,7 +241,7 @@ public class VanillaBlockLoot extends BlockLootSubProvider { - this.dropSelf(Blocks.ACACIA_SIGN); - this.dropSelf(Blocks.JUNGLE_SIGN); - this.dropSelf(Blocks.DARK_OAK_SIGN); -- this.add(Blocks.PALE_OAK_SIGN, noDrop()); -+ this.dropSelf(Blocks.PALE_OAK_SIGN); - this.dropSelf(Blocks.MANGROVE_SIGN); - this.dropSelf(Blocks.CHERRY_SIGN); - this.dropSelf(Blocks.BAMBOO_SIGN); -@@ -249,7 +252,7 @@ public class VanillaBlockLoot extends BlockLootSubProvider { - this.dropSelf(Blocks.CHERRY_HANGING_SIGN); - this.dropSelf(Blocks.JUNGLE_HANGING_SIGN); - this.dropSelf(Blocks.DARK_OAK_HANGING_SIGN); -- this.add(Blocks.PALE_OAK_HANGING_SIGN, noDrop()); -+ this.dropSelf(Blocks.PALE_OAK_HANGING_SIGN); - this.dropSelf(Blocks.MANGROVE_HANGING_SIGN); - this.dropSelf(Blocks.CRIMSON_HANGING_SIGN); - this.dropSelf(Blocks.WARPED_HANGING_SIGN); -@@ -265,7 +268,7 @@ public class VanillaBlockLoot extends BlockLootSubProvider { - this.dropSelf(Blocks.JUNGLE_PRESSURE_PLATE); - this.dropSelf(Blocks.ACACIA_PRESSURE_PLATE); - this.dropSelf(Blocks.DARK_OAK_PRESSURE_PLATE); -- this.add(Blocks.PALE_OAK_PRESSURE_PLATE, noDrop()); -+ this.dropSelf(Blocks.PALE_OAK_PRESSURE_PLATE); - this.dropSelf(Blocks.MANGROVE_PRESSURE_PLATE); - this.dropSelf(Blocks.CHERRY_PRESSURE_PLATE); - this.dropSelf(Blocks.BAMBOO_PRESSURE_PLATE); -@@ -294,7 +297,7 @@ public class VanillaBlockLoot extends BlockLootSubProvider { - this.dropSelf(Blocks.JUNGLE_TRAPDOOR); - this.dropSelf(Blocks.ACACIA_TRAPDOOR); - this.dropSelf(Blocks.DARK_OAK_TRAPDOOR); -- this.add(Blocks.PALE_OAK_TRAPDOOR, noDrop()); -+ this.dropSelf(Blocks.PALE_OAK_TRAPDOOR); - this.dropSelf(Blocks.MANGROVE_TRAPDOOR); - this.dropSelf(Blocks.CHERRY_TRAPDOOR); - this.dropSelf(Blocks.BAMBOO_TRAPDOOR); -@@ -317,6 +320,11 @@ public class VanillaBlockLoot extends BlockLootSubProvider { - this.dropSelf(Blocks.BRICK_STAIRS); - this.dropSelf(Blocks.STONE_BRICK_STAIRS); - this.dropSelf(Blocks.LILY_PAD); -+ this.dropSelf(Blocks.RESIN_BRICKS); -+ this.dropSelf(Blocks.RESIN_BRICK_WALL); -+ this.dropSelf(Blocks.RESIN_BRICK_SLAB); -+ this.dropSelf(Blocks.RESIN_BRICK_STAIRS); -+ this.dropSelf(Blocks.CHISELED_RESIN_BRICKS); - this.dropSelf(Blocks.NETHER_BRICKS); - this.dropSelf(Blocks.NETHER_BRICK_FENCE); - this.dropSelf(Blocks.NETHER_BRICK_STAIRS); -@@ -338,7 +346,7 @@ public class VanillaBlockLoot extends BlockLootSubProvider { - this.dropSelf(Blocks.JUNGLE_BUTTON); - this.dropSelf(Blocks.ACACIA_BUTTON); - this.dropSelf(Blocks.DARK_OAK_BUTTON); -- this.add(Blocks.PALE_OAK_BUTTON, noDrop()); -+ this.dropSelf(Blocks.PALE_OAK_BUTTON); - this.dropSelf(Blocks.MANGROVE_BUTTON); - this.dropSelf(Blocks.CHERRY_BUTTON); - this.dropSelf(Blocks.BAMBOO_BUTTON); -@@ -379,7 +387,7 @@ public class VanillaBlockLoot extends BlockLootSubProvider { - this.dropSelf(Blocks.BLACK_TERRACOTTA); - this.dropSelf(Blocks.ACACIA_STAIRS); - this.dropSelf(Blocks.DARK_OAK_STAIRS); -- this.add(Blocks.PALE_OAK_STAIRS, noDrop()); -+ this.dropSelf(Blocks.PALE_OAK_STAIRS); - this.dropSelf(Blocks.CHERRY_STAIRS); - this.dropSelf(Blocks.SLIME_BLOCK); - this.dropSelf(Blocks.IRON_TRAPDOOR); -@@ -421,14 +429,14 @@ public class VanillaBlockLoot extends BlockLootSubProvider { - this.dropSelf(Blocks.JUNGLE_FENCE_GATE); - this.dropSelf(Blocks.ACACIA_FENCE_GATE); - this.dropSelf(Blocks.DARK_OAK_FENCE_GATE); -- this.add(Blocks.PALE_OAK_FENCE_GATE, noDrop()); -+ this.dropSelf(Blocks.PALE_OAK_FENCE_GATE); - this.dropSelf(Blocks.CHERRY_FENCE_GATE); - this.dropSelf(Blocks.SPRUCE_FENCE); - this.dropSelf(Blocks.BIRCH_FENCE); - this.dropSelf(Blocks.JUNGLE_FENCE); - this.dropSelf(Blocks.ACACIA_FENCE); - this.dropSelf(Blocks.DARK_OAK_FENCE); -- this.add(Blocks.PALE_OAK_FENCE, noDrop()); -+ this.dropSelf(Blocks.PALE_OAK_FENCE); - this.dropSelf(Blocks.CHERRY_FENCE); - this.dropSelf(Blocks.END_ROD); - this.dropSelf(Blocks.PURPUR_BLOCK); -@@ -625,9 +633,9 @@ public class VanillaBlockLoot extends BlockLootSubProvider { - this.add(Blocks.PINK_PETALS, this.createPetalsDrops(Blocks.PINK_PETALS)); - this.dropSelf(Blocks.BIG_DRIPLEAF); - this.dropSelf(Blocks.MOSS_BLOCK); -- this.add(Blocks.PALE_MOSS_CARPET, noDrop()); -- this.add(Blocks.PALE_HANGING_MOSS, noDrop()); -- this.add(Blocks.PALE_MOSS_BLOCK, noDrop()); -+ this.add(Blocks.PALE_MOSS_CARPET, block -> this.createMossyCarpetBlockDrops(block)); -+ this.add(Blocks.PALE_HANGING_MOSS, itemLike -> this.createShearsOrSilkTouchOnlyDrop(itemLike)); -+ this.dropSelf(Blocks.PALE_MOSS_BLOCK); - this.dropSelf(Blocks.ROOTED_DIRT); - this.dropSelf(Blocks.COBBLED_DEEPSLATE); - this.dropSelf(Blocks.COBBLED_DEEPSLATE_STAIRS); -@@ -702,19 +710,19 @@ public class VanillaBlockLoot extends BlockLootSubProvider { - this.dropOther(Blocks.LAVA_CAULDRON, Blocks.CAULDRON); - this.dropOther(Blocks.POWDER_SNOW_CAULDRON, Blocks.CAULDRON); - this.dropOther(Blocks.BIG_DRIPLEAF_STEM, Blocks.BIG_DRIPLEAF); -- this.add(Blocks.STONE, podzol -> this.createSingleItemTableWithSilkTouch(podzol, Blocks.COBBLESTONE)); -- this.add(Blocks.DEEPSLATE, mycelium -> this.createSingleItemTableWithSilkTouch(mycelium, Blocks.COBBLED_DEEPSLATE)); -+ this.add(Blocks.STONE, coral -> this.createSingleItemTableWithSilkTouch(coral, Blocks.COBBLESTONE)); -+ this.add(Blocks.DEEPSLATE, coral -> this.createSingleItemTableWithSilkTouch(coral, Blocks.COBBLED_DEEPSLATE)); - this.add(Blocks.GRASS_BLOCK, coral -> this.createSingleItemTableWithSilkTouch(coral, Blocks.DIRT)); - this.add(Blocks.PODZOL, coral -> this.createSingleItemTableWithSilkTouch(coral, Blocks.DIRT)); - this.add(Blocks.MYCELIUM, coral -> this.createSingleItemTableWithSilkTouch(coral, Blocks.DIRT)); -- this.add(Blocks.TUBE_CORAL_BLOCK, coral -> this.createSingleItemTableWithSilkTouch(coral, Blocks.DEAD_TUBE_CORAL_BLOCK)); -- this.add(Blocks.BRAIN_CORAL_BLOCK, coral -> this.createSingleItemTableWithSilkTouch(coral, Blocks.DEAD_BRAIN_CORAL_BLOCK)); -- this.add(Blocks.BUBBLE_CORAL_BLOCK, nylium -> this.createSingleItemTableWithSilkTouch(nylium, Blocks.DEAD_BUBBLE_CORAL_BLOCK)); -- this.add(Blocks.FIRE_CORAL_BLOCK, nylium -> this.createSingleItemTableWithSilkTouch(nylium, Blocks.DEAD_FIRE_CORAL_BLOCK)); -- this.add(Blocks.HORN_CORAL_BLOCK, bookshelf -> this.createSingleItemTableWithSilkTouch(bookshelf, Blocks.DEAD_HORN_CORAL_BLOCK)); -- this.add(Blocks.CRIMSON_NYLIUM, clay -> this.createSingleItemTableWithSilkTouch(clay, Blocks.NETHERRACK)); -- this.add(Blocks.WARPED_NYLIUM, enderChest -> this.createSingleItemTableWithSilkTouch(enderChest, Blocks.NETHERRACK)); -- this.add(Blocks.BOOKSHELF, snow -> this.createSingleItemTableWithSilkTouch(snow, Items.BOOK, ConstantValue.exactly(3.0F))); -+ this.add(Blocks.TUBE_CORAL_BLOCK, nylium -> this.createSingleItemTableWithSilkTouch(nylium, Blocks.DEAD_TUBE_CORAL_BLOCK)); -+ this.add(Blocks.BRAIN_CORAL_BLOCK, nylium -> this.createSingleItemTableWithSilkTouch(nylium, Blocks.DEAD_BRAIN_CORAL_BLOCK)); -+ this.add(Blocks.BUBBLE_CORAL_BLOCK, bookshelf -> this.createSingleItemTableWithSilkTouch(bookshelf, Blocks.DEAD_BUBBLE_CORAL_BLOCK)); -+ this.add(Blocks.FIRE_CORAL_BLOCK, clay -> this.createSingleItemTableWithSilkTouch(clay, Blocks.DEAD_FIRE_CORAL_BLOCK)); -+ this.add(Blocks.HORN_CORAL_BLOCK, enderChest -> this.createSingleItemTableWithSilkTouch(enderChest, Blocks.DEAD_HORN_CORAL_BLOCK)); -+ this.add(Blocks.CRIMSON_NYLIUM, snow -> this.createSingleItemTableWithSilkTouch(snow, Blocks.NETHERRACK)); -+ this.add(Blocks.WARPED_NYLIUM, block -> this.createSingleItemTableWithSilkTouch(block, Blocks.NETHERRACK)); -+ this.add(Blocks.BOOKSHELF, block -> this.createSingleItemTableWithSilkTouch(block, Items.BOOK, ConstantValue.exactly(3.0F))); - this.add(Blocks.CLAY, block -> this.createSingleItemTableWithSilkTouch(block, Items.CLAY_BALL, ConstantValue.exactly(4.0F))); - this.add(Blocks.ENDER_CHEST, block -> this.createSingleItemTableWithSilkTouch(block, Blocks.OBSIDIAN, ConstantValue.exactly(8.0F))); - this.add(Blocks.SNOW_BLOCK, block -> this.createSingleItemTableWithSilkTouch(block, Items.SNOWBALL, ConstantValue.exactly(4.0F))); -@@ -725,12 +733,14 @@ public class VanillaBlockLoot extends BlockLootSubProvider { - this.dropPottedContents(Blocks.POTTED_JUNGLE_SAPLING); - this.dropPottedContents(Blocks.POTTED_ACACIA_SAPLING); - this.dropPottedContents(Blocks.POTTED_DARK_OAK_SAPLING); -- this.add(Blocks.POTTED_PALE_OAK_SAPLING, noDrop()); -+ this.dropPottedContents(Blocks.POTTED_PALE_OAK_SAPLING); - this.dropPottedContents(Blocks.POTTED_MANGROVE_PROPAGULE); - this.dropPottedContents(Blocks.POTTED_CHERRY_SAPLING); - this.dropPottedContents(Blocks.POTTED_FERN); - this.dropPottedContents(Blocks.POTTED_DANDELION); - this.dropPottedContents(Blocks.POTTED_POPPY); -+ this.dropPottedContents(Blocks.POTTED_OPEN_EYEBLOSSOM); -+ this.dropPottedContents(Blocks.POTTED_CLOSED_EYEBLOSSOM); - this.dropPottedContents(Blocks.POTTED_BLUE_ORCHID); - this.dropPottedContents(Blocks.POTTED_ALLIUM); - this.dropPottedContents(Blocks.POTTED_AZURE_BLUET); -@@ -761,7 +771,7 @@ public class VanillaBlockLoot extends BlockLootSubProvider { - this.add(Blocks.JUNGLE_SLAB, slab -> this.createSlabItemTable(slab)); - this.add(Blocks.ACACIA_SLAB, slab -> this.createSlabItemTable(slab)); - this.add(Blocks.DARK_OAK_SLAB, slab -> this.createSlabItemTable(slab)); -- this.add(Blocks.PALE_OAK_SLAB, noDrop()); -+ this.add(Blocks.PALE_OAK_SLAB, slab -> this.createSlabItemTable(slab)); - this.add(Blocks.MANGROVE_SLAB, slab -> this.createSlabItemTable(slab)); - this.add(Blocks.CHERRY_SLAB, slab -> this.createSlabItemTable(slab)); - this.add(Blocks.BAMBOO_SLAB, slab -> this.createSlabItemTable(slab)); -@@ -806,9 +816,9 @@ public class VanillaBlockLoot extends BlockLootSubProvider { - this.add(Blocks.WAXED_OXIDIZED_CUT_COPPER_SLAB, slab -> this.createSlabItemTable(slab)); - this.add(Blocks.WAXED_WEATHERED_CUT_COPPER_SLAB, slab -> this.createSlabItemTable(slab)); - this.add(Blocks.WAXED_EXPOSED_CUT_COPPER_SLAB, slab -> this.createSlabItemTable(slab)); -- this.add(Blocks.WAXED_CUT_COPPER_SLAB, slab -> this.createSlabItemTable(slab)); -- this.add(Blocks.COBBLED_DEEPSLATE_SLAB, slab -> this.createSlabItemTable(slab)); -- this.add(Blocks.POLISHED_DEEPSLATE_SLAB, slab -> this.createSlabItemTable(slab)); -+ this.add(Blocks.WAXED_CUT_COPPER_SLAB, door -> this.createSlabItemTable(door)); -+ this.add(Blocks.COBBLED_DEEPSLATE_SLAB, door -> this.createSlabItemTable(door)); -+ this.add(Blocks.POLISHED_DEEPSLATE_SLAB, door -> this.createSlabItemTable(door)); - this.add(Blocks.DEEPSLATE_TILE_SLAB, door -> this.createSlabItemTable(door)); - this.add(Blocks.DEEPSLATE_BRICK_SLAB, door -> this.createSlabItemTable(door)); - this.add(Blocks.MUD_BRICK_SLAB, door -> this.createSlabItemTable(door)); -@@ -818,10 +828,10 @@ public class VanillaBlockLoot extends BlockLootSubProvider { - this.add(Blocks.JUNGLE_DOOR, door -> this.createDoorTable(door)); - this.add(Blocks.ACACIA_DOOR, door -> this.createDoorTable(door)); - this.add(Blocks.DARK_OAK_DOOR, door -> this.createDoorTable(door)); -- this.add(Blocks.PALE_OAK_DOOR, noDrop()); -- this.add(Blocks.MANGROVE_DOOR, door -> this.createDoorTable(door)); -- this.add(Blocks.CHERRY_DOOR, door -> this.createDoorTable(door)); -- this.add(Blocks.BAMBOO_DOOR, door -> this.createDoorTable(door)); -+ this.add(Blocks.PALE_OAK_DOOR, block -> this.createDoorTable(block)); -+ this.add(Blocks.MANGROVE_DOOR, block -> this.createDoorTable(block)); -+ this.add(Blocks.CHERRY_DOOR, block -> this.createDoorTable(block)); -+ this.add(Blocks.BAMBOO_DOOR, block -> this.createDoorTable(block)); - this.add(Blocks.WARPED_DOOR, block -> this.createDoorTable(block)); - this.add(Blocks.CRIMSON_DOOR, block -> this.createDoorTable(block)); - this.add(Blocks.IRON_DOOR, block -> this.createDoorTable(block)); -@@ -834,18 +844,18 @@ public class VanillaBlockLoot extends BlockLootSubProvider { - this.add(Blocks.WAXED_WEATHERED_COPPER_DOOR, block -> this.createDoorTable(block)); - this.add(Blocks.WAXED_OXIDIZED_COPPER_DOOR, block -> this.createDoorTable(block)); - this.add(Blocks.BLACK_BED, bed -> this.createSinglePropConditionTable(bed, BedBlock.PART, BedPart.HEAD)); -- this.add(Blocks.BLUE_BED, bed -> this.createSinglePropConditionTable(bed, BedBlock.PART, BedPart.HEAD)); -- this.add(Blocks.BROWN_BED, bed -> this.createSinglePropConditionTable(bed, BedBlock.PART, BedPart.HEAD)); -- this.add(Blocks.CYAN_BED, bed -> this.createSinglePropConditionTable(bed, BedBlock.PART, BedPart.HEAD)); -- this.add(Blocks.GRAY_BED, bed -> this.createSinglePropConditionTable(bed, BedBlock.PART, BedPart.HEAD)); -- this.add(Blocks.GREEN_BED, lilac -> this.createSinglePropConditionTable(lilac, BedBlock.PART, BedPart.HEAD)); -- this.add(Blocks.LIGHT_BLUE_BED, sunflower -> this.createSinglePropConditionTable(sunflower, BedBlock.PART, BedPart.HEAD)); -- this.add(Blocks.LIGHT_GRAY_BED, peony -> this.createSinglePropConditionTable(peony, BedBlock.PART, BedPart.HEAD)); -- this.add(Blocks.LIME_BED, bush -> this.createSinglePropConditionTable(bush, BedBlock.PART, BedPart.HEAD)); -- this.add(Blocks.MAGENTA_BED, cocoa -> this.createSinglePropConditionTable(cocoa, BedBlock.PART, BedPart.HEAD)); -+ this.add(Blocks.BLUE_BED, lilac -> this.createSinglePropConditionTable(lilac, BedBlock.PART, BedPart.HEAD)); -+ this.add(Blocks.BROWN_BED, sunflower -> this.createSinglePropConditionTable(sunflower, BedBlock.PART, BedPart.HEAD)); -+ this.add(Blocks.CYAN_BED, peony -> this.createSinglePropConditionTable(peony, BedBlock.PART, BedPart.HEAD)); -+ this.add(Blocks.GRAY_BED, bush -> this.createSinglePropConditionTable(bush, BedBlock.PART, BedPart.HEAD)); -+ this.add(Blocks.GREEN_BED, cocoa -> this.createSinglePropConditionTable(cocoa, BedBlock.PART, BedPart.HEAD)); -+ this.add(Blocks.LIGHT_BLUE_BED, block -> this.createSinglePropConditionTable(block, BedBlock.PART, BedPart.HEAD)); -+ this.add(Blocks.LIGHT_GRAY_BED, seaPickle -> this.createSinglePropConditionTable(seaPickle, BedBlock.PART, BedPart.HEAD)); -+ this.add(Blocks.LIME_BED, composter -> this.createSinglePropConditionTable(composter, BedBlock.PART, BedPart.HEAD)); -+ this.add(Blocks.MAGENTA_BED, block -> this.createSinglePropConditionTable(block, BedBlock.PART, BedPart.HEAD)); - this.add(Blocks.PURPLE_BED, block -> this.createSinglePropConditionTable(block, BedBlock.PART, BedPart.HEAD)); -- this.add(Blocks.ORANGE_BED, seaPickle -> this.createSinglePropConditionTable(seaPickle, BedBlock.PART, BedPart.HEAD)); -- this.add(Blocks.PINK_BED, composter -> this.createSinglePropConditionTable(composter, BedBlock.PART, BedPart.HEAD)); -+ this.add(Blocks.ORANGE_BED, block -> this.createSinglePropConditionTable(block, BedBlock.PART, BedPart.HEAD)); -+ this.add(Blocks.PINK_BED, block -> this.createSinglePropConditionTable(block, BedBlock.PART, BedPart.HEAD)); - this.add(Blocks.RED_BED, block -> this.createSinglePropConditionTable(block, BedBlock.PART, BedPart.HEAD)); - this.add(Blocks.WHITE_BED, block -> this.createSinglePropConditionTable(block, BedBlock.PART, BedPart.HEAD)); - this.add(Blocks.YELLOW_BED, block -> this.createSinglePropConditionTable(block, BedBlock.PART, BedPart.HEAD)); -@@ -1030,7 +1040,7 @@ public class VanillaBlockLoot extends BlockLootSubProvider { - this.add(Blocks.JUNGLE_LEAVES, block -> this.createLeavesDrops(block, Blocks.JUNGLE_SAPLING, JUNGLE_LEAVES_SAPLING_CHANGES)); - this.add(Blocks.ACACIA_LEAVES, block -> this.createLeavesDrops(block, Blocks.ACACIA_SAPLING, NORMAL_LEAVES_SAPLING_CHANCES)); - this.add(Blocks.DARK_OAK_LEAVES, block -> this.createOakLeavesDrops(block, Blocks.DARK_OAK_SAPLING, NORMAL_LEAVES_SAPLING_CHANCES)); -- this.add(Blocks.PALE_OAK_LEAVES, noDrop()); -+ this.add(Blocks.PALE_OAK_LEAVES, block -> this.createLeavesDrops(block, Blocks.PALE_OAK_SAPLING, NORMAL_LEAVES_SAPLING_CHANCES)); - this.add(Blocks.CHERRY_LEAVES, block -> this.createLeavesDrops(block, Blocks.CHERRY_SAPLING, NORMAL_LEAVES_SAPLING_CHANCES)); - this.add(Blocks.AZALEA_LEAVES, block -> this.createLeavesDrops(block, Blocks.AZALEA, NORMAL_LEAVES_SAPLING_CHANCES)); - this.add(Blocks.FLOWERING_AZALEA_LEAVES, block -> this.createLeavesDrops(block, Blocks.FLOWERING_AZALEA, NORMAL_LEAVES_SAPLING_CHANCES)); -@@ -1193,6 +1203,7 @@ public class VanillaBlockLoot extends BlockLootSubProvider { - this.add(Blocks.SEAGRASS, itemLike -> this.createShearsOnlyDrop(itemLike)); - this.add(Blocks.VINE, itemLike -> this.createShearsOnlyDrop(itemLike)); - this.add(Blocks.GLOW_LICHEN, block -> this.createMultifaceBlockDrops(block, this.hasShears())); -+ this.add(Blocks.RESIN_CLUMP, block -> this.createMultifaceBlockDrops(block)); - this.add(Blocks.HANGING_ROOTS, itemLike -> this.createShearsOnlyDrop(itemLike)); - this.add(Blocks.SMALL_DRIPLEAF, itemLike -> this.createShearsOnlyDrop(itemLike)); - this.add(Blocks.MANGROVE_LEAVES, block -> this.createMangroveLeavesDrops(block)); -@@ -1258,6 +1269,19 @@ public class VanillaBlockLoot extends BlockLootSubProvider { - ) - ) - ); -+ this.add( -+ Blocks.CREAKING_HEART, -+ block -> this.createSilkTouchDispatchTable( -+ block, -+ (LootPoolEntryContainer.Builder)this.applyExplosionDecay( -+ block, -+ LootItem.lootTableItem(Items.RESIN_CLUMP) -+ .apply(SetItemCountFunction.setCount(UniformGenerator.between(1.0F, 3.0F))) -+ .apply(ApplyBonusCount.addUniformBonusCount(registryLookup.getOrThrow(Enchantments.FORTUNE))) -+ .apply(LimitCount.limitCount(IntRange.upperBound(9))) -+ ) -+ ) -+ ); - this.add( - Blocks.NETHER_WART, - block -> LootTable.lootTable() -@@ -1422,7 +1446,6 @@ public class VanillaBlockLoot extends BlockLootSubProvider { - this.dropWhenSilkTouch(Blocks.PACKED_ICE); - this.dropWhenSilkTouch(Blocks.BLUE_ICE); - this.dropWhenSilkTouch(Blocks.TURTLE_EGG); -- this.add(Blocks.CREAKING_HEART, noDrop()); - this.dropWhenSilkTouch(Blocks.MUSHROOM_STEM); - this.dropWhenSilkTouch(Blocks.DEAD_TUBE_CORAL); - this.dropWhenSilkTouch(Blocks.DEAD_BRAIN_CORAL); -diff --git a/net/minecraft/data/loot/packs/VanillaChestLoot.java b/net/minecraft/data/loot/packs/VanillaChestLoot.java -index fe742ac..180230d 100644 ---- a/net/minecraft/data/loot/packs/VanillaChestLoot.java -+++ b/net/minecraft/data/loot/packs/VanillaChestLoot.java -@@ -1930,6 +1930,8 @@ public record VanillaChestLoot(HolderLookup.Provider registries) implements Loot - .add(LootItem.lootTableItem(Items.MELON_SEEDS).setWeight(10).apply(SetItemCountFunction.setCount(UniformGenerator.between(2.0F, 4.0F)))) - .add(LootItem.lootTableItem(Items.PUMPKIN_SEEDS).setWeight(10).apply(SetItemCountFunction.setCount(UniformGenerator.between(2.0F, 4.0F)))) - .add(LootItem.lootTableItem(Items.BEETROOT_SEEDS).setWeight(10).apply(SetItemCountFunction.setCount(UniformGenerator.between(2.0F, 4.0F)))) -+ .add(LootItem.lootTableItem(Items.RESIN_CLUMP).setWeight(50).apply(SetItemCountFunction.setCount(UniformGenerator.between(2.0F, 4.0F)))) -+ .add(LootItem.lootTableItem(Items.RESIN_BRICK).setWeight(50).apply(SetItemCountFunction.setCount(UniformGenerator.between(1.0F, 2.0F)))) - ) - .withPool( - LootPool.lootPool() -diff --git a/net/minecraft/data/models/BlockModelGenerators.java b/net/minecraft/data/models/BlockModelGenerators.java -index 4a1d908..73115eb 100644 ---- a/net/minecraft/data/models/BlockModelGenerators.java -+++ b/net/minecraft/data/models/BlockModelGenerators.java -@@ -226,13 +226,23 @@ public class BlockModelGenerators { - ModelTemplates.FLAT_ITEM.create(ModelLocationUtils.getModelLocation(flatItem), TextureMapping.layer0(flatItem), this.modelOutput); - } - -- private void createSimpleFlatItemModel(Block flatBlock) { -+ void createSimpleFlatItemModel(Block flatBlock) { - Item item = flatBlock.asItem(); - if (item != Items.AIR) { - ModelTemplates.FLAT_ITEM.create(ModelLocationUtils.getModelLocation(item), TextureMapping.layer0(flatBlock), this.modelOutput); - } - } - -+ void createTwoLayerFlatItemModel(Block block, String string) { -+ Item item = block.asItem(); -+ ResourceLocation blockTexture = TextureMapping.getBlockTexture(block); -+ ResourceLocation blockTexture1 = TextureMapping.getBlockTexture(block, string); -+ if (item != Items.AIR) { -+ ModelTemplates.TWO_LAYERED_ITEM -+ .create(ModelLocationUtils.getModelLocation(item), TextureMapping.layered(blockTexture, blockTexture1), this.modelOutput); -+ } -+ } -+ - private void createSimpleFlatItemModel(Block flatBlock, String layerZeroTextureSuffix) { - Item item = flatBlock.asItem(); - ModelTemplates.FLAT_ITEM -@@ -1274,62 +1284,34 @@ public class BlockModelGenerators { - .accept( - MultiVariantGenerator.multiVariant(block) - .with( -- PropertyDispatch.properties(BlockStateProperties.AXIS, CreakingHeartBlock.CREAKING) -- .select( -- Direction.Axis.Y, -- CreakingHeartBlock.CreakingHeartState.DISABLED, -- Variant.variant().with(VariantProperties.MODEL, resourceLocation) -- ) -+ PropertyDispatch.properties(BlockStateProperties.AXIS, CreakingHeartBlock.ACTIVE) -+ .select(Direction.Axis.Y, false, Variant.variant().with(VariantProperties.MODEL, resourceLocation)) - .select( - Direction.Axis.Z, -- CreakingHeartBlock.CreakingHeartState.DISABLED, -+ false, - Variant.variant() - .with(VariantProperties.MODEL, resourceLocation1) - .with(VariantProperties.X_ROT, VariantProperties.Rotation.R90) - ) - .select( - Direction.Axis.X, -- CreakingHeartBlock.CreakingHeartState.DISABLED, -+ false, - Variant.variant() - .with(VariantProperties.MODEL, resourceLocation1) - .with(VariantProperties.X_ROT, VariantProperties.Rotation.R90) - .with(VariantProperties.Y_ROT, VariantProperties.Rotation.R90) - ) -- .select( -- Direction.Axis.Y, -- CreakingHeartBlock.CreakingHeartState.DORMANT, -- Variant.variant().with(VariantProperties.MODEL, resourceLocation2) -- ) -- .select( -- Direction.Axis.Z, -- CreakingHeartBlock.CreakingHeartState.DORMANT, -- Variant.variant() -- .with(VariantProperties.MODEL, resourceLocation3) -- .with(VariantProperties.X_ROT, VariantProperties.Rotation.R90) -- ) -- .select( -- Direction.Axis.X, -- CreakingHeartBlock.CreakingHeartState.DORMANT, -- Variant.variant() -- .with(VariantProperties.MODEL, resourceLocation3) -- .with(VariantProperties.X_ROT, VariantProperties.Rotation.R90) -- .with(VariantProperties.Y_ROT, VariantProperties.Rotation.R90) -- ) -- .select( -- Direction.Axis.Y, -- CreakingHeartBlock.CreakingHeartState.ACTIVE, -- Variant.variant().with(VariantProperties.MODEL, resourceLocation2) -- ) -+ .select(Direction.Axis.Y, true, Variant.variant().with(VariantProperties.MODEL, resourceLocation2)) - .select( - Direction.Axis.Z, -- CreakingHeartBlock.CreakingHeartState.ACTIVE, -+ true, - Variant.variant() - .with(VariantProperties.MODEL, resourceLocation3) - .with(VariantProperties.X_ROT, VariantProperties.Rotation.R90) - ) - .select( - Direction.Axis.X, -- CreakingHeartBlock.CreakingHeartState.ACTIVE, -+ true, - Variant.variant() - .with(VariantProperties.MODEL, resourceLocation3) - .with(VariantProperties.X_ROT, VariantProperties.Rotation.R90) -@@ -1499,46 +1481,46 @@ public class BlockModelGenerators { - this.blockStateOutput.accept(createSimpleBlock(block, ModelLocationUtils.getModelLocation(modelBlock))); - } - -- private void createCrossBlockWithDefaultItem(Block crossBlock, BlockModelGenerators.TintState tintState) { -- this.createSimpleFlatItemModel(crossBlock); -- this.createCrossBlock(crossBlock, tintState); -+ private void createCrossBlockWithDefaultItem(Block block, BlockModelGenerators.PlantType plantType) { -+ plantType.createItemModel(this, block); -+ this.createCrossBlock(block, plantType); - } - -- private void createCrossBlockWithDefaultItem(Block crossBlock, BlockModelGenerators.TintState tintState, TextureMapping textureMapping) { -- this.createSimpleFlatItemModel(crossBlock); -- this.createCrossBlock(crossBlock, tintState, textureMapping); -+ private void createCrossBlockWithDefaultItem(Block block, BlockModelGenerators.PlantType plantType, TextureMapping textureMapping) { -+ this.createSimpleFlatItemModel(block); -+ this.createCrossBlock(block, plantType, textureMapping); - } - -- private void createCrossBlock(Block crossBlock, BlockModelGenerators.TintState tintState) { -- TextureMapping textureMapping = TextureMapping.cross(crossBlock); -- this.createCrossBlock(crossBlock, tintState, textureMapping); -+ private void createCrossBlock(Block block, BlockModelGenerators.PlantType plantType) { -+ TextureMapping textureMapping = plantType.getTextureMapping(block); -+ this.createCrossBlock(block, plantType, textureMapping); - } - -- private void createCrossBlock(Block crossBlock, BlockModelGenerators.TintState tintState, TextureMapping textureMapping) { -- ResourceLocation resourceLocation = tintState.getCross().create(crossBlock, textureMapping, this.modelOutput); -- this.blockStateOutput.accept(createSimpleBlock(crossBlock, resourceLocation)); -+ private void createCrossBlock(Block block, BlockModelGenerators.PlantType plantType, TextureMapping textureMapping) { -+ ResourceLocation resourceLocation = plantType.getCross().create(block, textureMapping, this.modelOutput); -+ this.blockStateOutput.accept(createSimpleBlock(block, resourceLocation)); - } - -- private void createCrossBlock(Block crossBlock, BlockModelGenerators.TintState tintState, Property property, int... propertyValues) { -- if (property.getPossibleValues().size() != propertyValues.length) { -+ private void createCrossBlock(Block block, BlockModelGenerators.PlantType plantType, Property property, int... ints) { -+ if (property.getPossibleValues().size() != ints.length) { - throw new IllegalArgumentException("missing values for property: " + property); - } else { - PropertyDispatch propertyDispatch = PropertyDispatch.property(property).generate(integer -> { -- String string = "_stage" + propertyValues[integer]; -- TextureMapping textureMapping = TextureMapping.cross(TextureMapping.getBlockTexture(crossBlock, string)); -- ResourceLocation resourceLocation = tintState.getCross().createWithSuffix(crossBlock, string, textureMapping, this.modelOutput); -+ String string = "_stage" + ints[integer]; -+ TextureMapping textureMapping = TextureMapping.cross(TextureMapping.getBlockTexture(block, string)); -+ ResourceLocation resourceLocation = plantType.getCross().createWithSuffix(block, string, textureMapping, this.modelOutput); - return Variant.variant().with(VariantProperties.MODEL, resourceLocation); - }); -- this.createSimpleFlatItemModel(crossBlock.asItem()); -- this.blockStateOutput.accept(MultiVariantGenerator.multiVariant(crossBlock).with(propertyDispatch)); -+ this.createSimpleFlatItemModel(block.asItem()); -+ this.blockStateOutput.accept(MultiVariantGenerator.multiVariant(block).with(propertyDispatch)); - } - } - -- private void createPlant(Block plantBlock, Block pottedPlantBlock, BlockModelGenerators.TintState tintState) { -- this.createCrossBlockWithDefaultItem(plantBlock, tintState); -- TextureMapping textureMapping = TextureMapping.plant(plantBlock); -- ResourceLocation resourceLocation = tintState.getCrossPot().create(pottedPlantBlock, textureMapping, this.modelOutput); -- this.blockStateOutput.accept(createSimpleBlock(pottedPlantBlock, resourceLocation)); -+ private void createPlant(Block block, Block block1, BlockModelGenerators.PlantType plantType) { -+ this.createCrossBlockWithDefaultItem(block, plantType); -+ TextureMapping plantTextureMapping = plantType.getPlantTextureMapping(block); -+ ResourceLocation resourceLocation = plantType.getCrossPot().create(block1, plantTextureMapping, this.modelOutput); -+ this.blockStateOutput.accept(createSimpleBlock(block1, resourceLocation)); - } - - private void createCoralFans(Block coralFanBlock, Block coralWallFanBlock) { -@@ -1614,26 +1596,26 @@ public class BlockModelGenerators { - Block coralWallFanBlock, - Block deadCoralWallFanBlock - ) { -- this.createCrossBlockWithDefaultItem(coralBlock, BlockModelGenerators.TintState.NOT_TINTED); -- this.createCrossBlockWithDefaultItem(deadCoralBlock, BlockModelGenerators.TintState.NOT_TINTED); -+ this.createCrossBlockWithDefaultItem(coralBlock, BlockModelGenerators.PlantType.NOT_TINTED); -+ this.createCrossBlockWithDefaultItem(deadCoralBlock, BlockModelGenerators.PlantType.NOT_TINTED); - this.createTrivialCube(coralFullBlock); - this.createTrivialCube(deadCoralFullBlock); - this.createCoralFans(coralFanBlock, coralWallFanBlock); - this.createCoralFans(deadCoralFanBlock, deadCoralWallFanBlock); - } - -- private void createDoublePlant(Block doublePlantBlock, BlockModelGenerators.TintState tintState) { -- this.createSimpleFlatItemModel(doublePlantBlock, "_top"); -- ResourceLocation resourceLocation = this.createSuffixedVariant(doublePlantBlock, "_top", tintState.getCross(), TextureMapping::cross); -- ResourceLocation resourceLocation1 = this.createSuffixedVariant(doublePlantBlock, "_bottom", tintState.getCross(), TextureMapping::cross); -- this.createDoubleBlock(doublePlantBlock, resourceLocation, resourceLocation1); -+ private void createDoublePlant(Block block, BlockModelGenerators.PlantType plantType) { -+ this.createSimpleFlatItemModel(block, "_top"); -+ ResourceLocation resourceLocation = this.createSuffixedVariant(block, "_top", plantType.getCross(), TextureMapping::cross); -+ ResourceLocation resourceLocation1 = this.createSuffixedVariant(block, "_bottom", plantType.getCross(), TextureMapping::cross); -+ this.createDoubleBlock(block, resourceLocation, resourceLocation1); - } - - private void createSunflower() { - this.createSimpleFlatItemModel(Blocks.SUNFLOWER, "_front"); - ResourceLocation modelLocation = ModelLocationUtils.getModelLocation(Blocks.SUNFLOWER, "_top"); - ResourceLocation resourceLocation = this.createSuffixedVariant( -- Blocks.SUNFLOWER, "_bottom", BlockModelGenerators.TintState.NOT_TINTED.getCross(), TextureMapping::cross -+ Blocks.SUNFLOWER, "_bottom", BlockModelGenerators.PlantType.NOT_TINTED.getCross(), TextureMapping::cross - ); - this.createDoubleBlock(Blocks.SUNFLOWER, modelLocation, resourceLocation); - } -@@ -4423,12 +4405,21 @@ public class BlockModelGenerators { - - private void createMultiface(Block multifaceBlock) { - this.createSimpleFlatItemModel(multifaceBlock); -- ResourceLocation modelLocation = ModelLocationUtils.getModelLocation(multifaceBlock); -- MultiPartGenerator multiPartGenerator = MultiPartGenerator.multiPart(multifaceBlock); -+ this.createMultifaceBlockStates(multifaceBlock); -+ } -+ -+ private void createMultiface(Block block, Item item) { -+ this.createSimpleFlatItemModel(item); -+ this.createMultifaceBlockStates(block); -+ } -+ -+ private void createMultifaceBlockStates(Block block) { -+ ResourceLocation modelLocation = ModelLocationUtils.getModelLocation(block); -+ MultiPartGenerator multiPartGenerator = MultiPartGenerator.multiPart(block); - Condition.TerminalCondition terminalCondition = Util.make( - Condition.condition(), - terminalCondition1 -> MULTIFACE_GENERATOR.stream().map(Pair::getFirst).map(MultifaceBlock::getFaceProperty).forEach(booleanProperty -> { -- if (multifaceBlock.defaultBlockState().hasProperty(booleanProperty)) { -+ if (block.defaultBlockState().hasProperty(booleanProperty)) { - terminalCondition1.term(booleanProperty, false); - } - }) -@@ -4437,7 +4428,7 @@ public class BlockModelGenerators { - for (Pair> pair : MULTIFACE_GENERATOR) { - BooleanProperty faceProperty = MultifaceBlock.getFaceProperty(pair.getFirst()); - Function function = pair.getSecond(); -- if (multifaceBlock.defaultBlockState().hasProperty(faceProperty)) { -+ if (block.defaultBlockState().hasProperty(faceProperty)) { - multiPartGenerator.with(Condition.condition().term(faceProperty, true), function.apply(modelLocation)); - multiPartGenerator.with(terminalCondition, function.apply(modelLocation)); - } -@@ -4487,7 +4478,7 @@ public class BlockModelGenerators { - _boolean -> { - String string = _boolean ? "_tip" : ""; - TextureMapping textureMapping = TextureMapping.cross(TextureMapping.getBlockTexture(block, string)); -- ResourceLocation resourceLocation = BlockModelGenerators.TintState.NOT_TINTED -+ ResourceLocation resourceLocation = BlockModelGenerators.PlantType.NOT_TINTED - .getCross() - .createWithSuffix(block, string, textureMapping, this.modelOutput); - return Variant.variant().with(VariantProperties.MODEL, resourceLocation); -@@ -4605,9 +4596,9 @@ public class BlockModelGenerators { - .create(ModelLocationUtils.getModelLocation(shulkerBoxBlock.asItem()), TextureMapping.particle(shulkerBoxBlock), this.modelOutput); - } - -- private void createGrowingPlant(Block growingPlantBlock, Block plantBlock, BlockModelGenerators.TintState tintState) { -- this.createCrossBlock(growingPlantBlock, tintState); -- this.createCrossBlock(plantBlock, tintState); -+ private void createGrowingPlant(Block block, Block block1, BlockModelGenerators.PlantType plantType) { -+ this.createCrossBlock(block, plantType); -+ this.createCrossBlock(block1, plantType); - } - - private void createBedItem(Block bedBlock, Block woolBlock) { -@@ -4629,9 +4620,9 @@ public class BlockModelGenerators { - } - - private void createNetherRoots(Block plantBlock, Block pottedPlantBlock) { -- this.createCrossBlockWithDefaultItem(plantBlock, BlockModelGenerators.TintState.NOT_TINTED); -+ this.createCrossBlockWithDefaultItem(plantBlock, BlockModelGenerators.PlantType.NOT_TINTED); - TextureMapping textureMapping = TextureMapping.plant(TextureMapping.getBlockTexture(plantBlock, "_pot")); -- ResourceLocation resourceLocation = BlockModelGenerators.TintState.NOT_TINTED.getCrossPot().create(pottedPlantBlock, textureMapping, this.modelOutput); -+ ResourceLocation resourceLocation = BlockModelGenerators.PlantType.NOT_TINTED.getCrossPot().create(pottedPlantBlock, textureMapping, this.modelOutput); - this.blockStateOutput.accept(createSimpleBlock(pottedPlantBlock, resourceLocation)); - } - -@@ -4830,6 +4821,7 @@ public class BlockModelGenerators { - this.createTrivialCube(Blocks.LAPIS_ORE); - this.createTrivialCube(Blocks.DEEPSLATE_LAPIS_ORE); - this.createTrivialCube(Blocks.LAPIS_BLOCK); -+ this.createTrivialCube(Blocks.RESIN_BLOCK); - this.createTrivialCube(Blocks.NETHER_QUARTZ_ORE); - this.createTrivialCube(Blocks.REDSTONE_ORE); - this.createTrivialCube(Blocks.DEEPSLATE_REDSTONE_ORE); -@@ -4962,6 +4954,7 @@ public class BlockModelGenerators { - this.createMultiface(Blocks.VINE); - this.createMultiface(Blocks.GLOW_LICHEN); - this.createMultiface(Blocks.SCULK_VEIN); -+ this.createMultiface(Blocks.RESIN_CLUMP, Items.RESIN_CLUMP); - this.createMagmaBlock(); - this.createJigsaw(); - this.createSculkSensor(); -@@ -5016,7 +5009,7 @@ public class BlockModelGenerators { - this.createCropBlock(Blocks.NETHER_WART, BlockStateProperties.AGE_3, 0, 1, 1, 2); - this.createCropBlock(Blocks.POTATOES, BlockStateProperties.AGE_7, 0, 0, 1, 1, 2, 2, 2, 3); - this.createCropBlock(Blocks.WHEAT, BlockStateProperties.AGE_7, 0, 1, 2, 3, 4, 5, 6, 7); -- this.createCrossBlock(Blocks.TORCHFLOWER_CROP, BlockModelGenerators.TintState.NOT_TINTED, BlockStateProperties.AGE_1, 0, 1); -+ this.createCrossBlock(Blocks.TORCHFLOWER_CROP, BlockModelGenerators.PlantType.NOT_TINTED, BlockStateProperties.AGE_1, 0, 1); - this.createPitcherCrop(); - this.createPitcherPlant(); - this.blockEntityModels(ModelLocationUtils.decorateBlockModelLocation("decorated_pot"), Blocks.TERRACOTTA).createWithoutBlockItem(Blocks.DECORATED_POT); -@@ -5245,53 +5238,55 @@ public class BlockModelGenerators { - this.createFullAndCarpetBlocks(Blocks.BLACK_WOOL, Blocks.BLACK_CARPET); - this.createTrivialCube(Blocks.MUD); - this.createTrivialCube(Blocks.PACKED_MUD); -- this.createPlant(Blocks.FERN, Blocks.POTTED_FERN, BlockModelGenerators.TintState.TINTED); -- this.createPlant(Blocks.DANDELION, Blocks.POTTED_DANDELION, BlockModelGenerators.TintState.NOT_TINTED); -- this.createPlant(Blocks.POPPY, Blocks.POTTED_POPPY, BlockModelGenerators.TintState.NOT_TINTED); -- this.createPlant(Blocks.BLUE_ORCHID, Blocks.POTTED_BLUE_ORCHID, BlockModelGenerators.TintState.NOT_TINTED); -- this.createPlant(Blocks.ALLIUM, Blocks.POTTED_ALLIUM, BlockModelGenerators.TintState.NOT_TINTED); -- this.createPlant(Blocks.AZURE_BLUET, Blocks.POTTED_AZURE_BLUET, BlockModelGenerators.TintState.NOT_TINTED); -- this.createPlant(Blocks.RED_TULIP, Blocks.POTTED_RED_TULIP, BlockModelGenerators.TintState.NOT_TINTED); -- this.createPlant(Blocks.ORANGE_TULIP, Blocks.POTTED_ORANGE_TULIP, BlockModelGenerators.TintState.NOT_TINTED); -- this.createPlant(Blocks.WHITE_TULIP, Blocks.POTTED_WHITE_TULIP, BlockModelGenerators.TintState.NOT_TINTED); -- this.createPlant(Blocks.PINK_TULIP, Blocks.POTTED_PINK_TULIP, BlockModelGenerators.TintState.NOT_TINTED); -- this.createPlant(Blocks.OXEYE_DAISY, Blocks.POTTED_OXEYE_DAISY, BlockModelGenerators.TintState.NOT_TINTED); -- this.createPlant(Blocks.CORNFLOWER, Blocks.POTTED_CORNFLOWER, BlockModelGenerators.TintState.NOT_TINTED); -- this.createPlant(Blocks.LILY_OF_THE_VALLEY, Blocks.POTTED_LILY_OF_THE_VALLEY, BlockModelGenerators.TintState.NOT_TINTED); -- this.createPlant(Blocks.WITHER_ROSE, Blocks.POTTED_WITHER_ROSE, BlockModelGenerators.TintState.NOT_TINTED); -- this.createPlant(Blocks.RED_MUSHROOM, Blocks.POTTED_RED_MUSHROOM, BlockModelGenerators.TintState.NOT_TINTED); -- this.createPlant(Blocks.BROWN_MUSHROOM, Blocks.POTTED_BROWN_MUSHROOM, BlockModelGenerators.TintState.NOT_TINTED); -- this.createPlant(Blocks.DEAD_BUSH, Blocks.POTTED_DEAD_BUSH, BlockModelGenerators.TintState.NOT_TINTED); -- this.createPlant(Blocks.TORCHFLOWER, Blocks.POTTED_TORCHFLOWER, BlockModelGenerators.TintState.NOT_TINTED); -+ this.createPlant(Blocks.FERN, Blocks.POTTED_FERN, BlockModelGenerators.PlantType.TINTED); -+ this.createPlant(Blocks.DANDELION, Blocks.POTTED_DANDELION, BlockModelGenerators.PlantType.NOT_TINTED); -+ this.createPlant(Blocks.POPPY, Blocks.POTTED_POPPY, BlockModelGenerators.PlantType.NOT_TINTED); -+ this.createPlant(Blocks.OPEN_EYEBLOSSOM, Blocks.POTTED_OPEN_EYEBLOSSOM, BlockModelGenerators.PlantType.EMISSIVE_NOT_TINTED); -+ this.createPlant(Blocks.CLOSED_EYEBLOSSOM, Blocks.POTTED_CLOSED_EYEBLOSSOM, BlockModelGenerators.PlantType.NOT_TINTED); -+ this.createPlant(Blocks.BLUE_ORCHID, Blocks.POTTED_BLUE_ORCHID, BlockModelGenerators.PlantType.NOT_TINTED); -+ this.createPlant(Blocks.ALLIUM, Blocks.POTTED_ALLIUM, BlockModelGenerators.PlantType.NOT_TINTED); -+ this.createPlant(Blocks.AZURE_BLUET, Blocks.POTTED_AZURE_BLUET, BlockModelGenerators.PlantType.NOT_TINTED); -+ this.createPlant(Blocks.RED_TULIP, Blocks.POTTED_RED_TULIP, BlockModelGenerators.PlantType.NOT_TINTED); -+ this.createPlant(Blocks.ORANGE_TULIP, Blocks.POTTED_ORANGE_TULIP, BlockModelGenerators.PlantType.NOT_TINTED); -+ this.createPlant(Blocks.WHITE_TULIP, Blocks.POTTED_WHITE_TULIP, BlockModelGenerators.PlantType.NOT_TINTED); -+ this.createPlant(Blocks.PINK_TULIP, Blocks.POTTED_PINK_TULIP, BlockModelGenerators.PlantType.NOT_TINTED); -+ this.createPlant(Blocks.OXEYE_DAISY, Blocks.POTTED_OXEYE_DAISY, BlockModelGenerators.PlantType.NOT_TINTED); -+ this.createPlant(Blocks.CORNFLOWER, Blocks.POTTED_CORNFLOWER, BlockModelGenerators.PlantType.NOT_TINTED); -+ this.createPlant(Blocks.LILY_OF_THE_VALLEY, Blocks.POTTED_LILY_OF_THE_VALLEY, BlockModelGenerators.PlantType.NOT_TINTED); -+ this.createPlant(Blocks.WITHER_ROSE, Blocks.POTTED_WITHER_ROSE, BlockModelGenerators.PlantType.NOT_TINTED); -+ this.createPlant(Blocks.RED_MUSHROOM, Blocks.POTTED_RED_MUSHROOM, BlockModelGenerators.PlantType.NOT_TINTED); -+ this.createPlant(Blocks.BROWN_MUSHROOM, Blocks.POTTED_BROWN_MUSHROOM, BlockModelGenerators.PlantType.NOT_TINTED); -+ this.createPlant(Blocks.DEAD_BUSH, Blocks.POTTED_DEAD_BUSH, BlockModelGenerators.PlantType.NOT_TINTED); -+ this.createPlant(Blocks.TORCHFLOWER, Blocks.POTTED_TORCHFLOWER, BlockModelGenerators.PlantType.NOT_TINTED); - this.createPointedDripstone(); - this.createMushroomBlock(Blocks.BROWN_MUSHROOM_BLOCK); - this.createMushroomBlock(Blocks.RED_MUSHROOM_BLOCK); - this.createMushroomBlock(Blocks.MUSHROOM_STEM); -- this.createCrossBlockWithDefaultItem(Blocks.SHORT_GRASS, BlockModelGenerators.TintState.TINTED); -- this.createCrossBlock(Blocks.SUGAR_CANE, BlockModelGenerators.TintState.TINTED); -+ this.createCrossBlockWithDefaultItem(Blocks.SHORT_GRASS, BlockModelGenerators.PlantType.TINTED); -+ this.createCrossBlock(Blocks.SUGAR_CANE, BlockModelGenerators.PlantType.TINTED); - this.createSimpleFlatItemModel(Items.SUGAR_CANE); -- this.createGrowingPlant(Blocks.KELP, Blocks.KELP_PLANT, BlockModelGenerators.TintState.NOT_TINTED); -+ this.createGrowingPlant(Blocks.KELP, Blocks.KELP_PLANT, BlockModelGenerators.PlantType.NOT_TINTED); - this.createSimpleFlatItemModel(Items.KELP); - this.skipAutoItemBlock(Blocks.KELP_PLANT); -- this.createCrossBlock(Blocks.HANGING_ROOTS, BlockModelGenerators.TintState.NOT_TINTED); -+ this.createCrossBlock(Blocks.HANGING_ROOTS, BlockModelGenerators.PlantType.NOT_TINTED); - this.skipAutoItemBlock(Blocks.HANGING_ROOTS); - this.skipAutoItemBlock(Blocks.CAVE_VINES_PLANT); -- this.createGrowingPlant(Blocks.WEEPING_VINES, Blocks.WEEPING_VINES_PLANT, BlockModelGenerators.TintState.NOT_TINTED); -- this.createGrowingPlant(Blocks.TWISTING_VINES, Blocks.TWISTING_VINES_PLANT, BlockModelGenerators.TintState.NOT_TINTED); -+ this.createGrowingPlant(Blocks.WEEPING_VINES, Blocks.WEEPING_VINES_PLANT, BlockModelGenerators.PlantType.NOT_TINTED); -+ this.createGrowingPlant(Blocks.TWISTING_VINES, Blocks.TWISTING_VINES_PLANT, BlockModelGenerators.PlantType.NOT_TINTED); - this.createSimpleFlatItemModel(Blocks.WEEPING_VINES, "_plant"); - this.skipAutoItemBlock(Blocks.WEEPING_VINES_PLANT); - this.createSimpleFlatItemModel(Blocks.TWISTING_VINES, "_plant"); - this.skipAutoItemBlock(Blocks.TWISTING_VINES_PLANT); - this.createCrossBlockWithDefaultItem( -- Blocks.BAMBOO_SAPLING, BlockModelGenerators.TintState.TINTED, TextureMapping.cross(TextureMapping.getBlockTexture(Blocks.BAMBOO, "_stage0")) -+ Blocks.BAMBOO_SAPLING, BlockModelGenerators.PlantType.TINTED, TextureMapping.cross(TextureMapping.getBlockTexture(Blocks.BAMBOO, "_stage0")) - ); - this.createBamboo(); -- this.createCrossBlockWithDefaultItem(Blocks.COBWEB, BlockModelGenerators.TintState.NOT_TINTED); -- this.createDoublePlant(Blocks.LILAC, BlockModelGenerators.TintState.NOT_TINTED); -- this.createDoublePlant(Blocks.ROSE_BUSH, BlockModelGenerators.TintState.NOT_TINTED); -- this.createDoublePlant(Blocks.PEONY, BlockModelGenerators.TintState.NOT_TINTED); -- this.createDoublePlant(Blocks.TALL_GRASS, BlockModelGenerators.TintState.TINTED); -- this.createDoublePlant(Blocks.LARGE_FERN, BlockModelGenerators.TintState.TINTED); -+ this.createCrossBlockWithDefaultItem(Blocks.COBWEB, BlockModelGenerators.PlantType.NOT_TINTED); -+ this.createDoublePlant(Blocks.LILAC, BlockModelGenerators.PlantType.NOT_TINTED); -+ this.createDoublePlant(Blocks.ROSE_BUSH, BlockModelGenerators.PlantType.NOT_TINTED); -+ this.createDoublePlant(Blocks.PEONY, BlockModelGenerators.PlantType.NOT_TINTED); -+ this.createDoublePlant(Blocks.TALL_GRASS, BlockModelGenerators.PlantType.TINTED); -+ this.createDoublePlant(Blocks.LARGE_FERN, BlockModelGenerators.PlantType.TINTED); - this.createSunflower(); - this.createTallSeagrass(); - this.createSmallDripleaf(); -@@ -5354,57 +5349,57 @@ public class BlockModelGenerators { - this.woodProvider(Blocks.ACACIA_LOG).logWithHorizontal(Blocks.ACACIA_LOG).wood(Blocks.ACACIA_WOOD); - this.woodProvider(Blocks.STRIPPED_ACACIA_LOG).logWithHorizontal(Blocks.STRIPPED_ACACIA_LOG).wood(Blocks.STRIPPED_ACACIA_WOOD); - this.createHangingSign(Blocks.STRIPPED_ACACIA_LOG, Blocks.ACACIA_HANGING_SIGN, Blocks.ACACIA_WALL_HANGING_SIGN); -- this.createPlant(Blocks.ACACIA_SAPLING, Blocks.POTTED_ACACIA_SAPLING, BlockModelGenerators.TintState.NOT_TINTED); -+ this.createPlant(Blocks.ACACIA_SAPLING, Blocks.POTTED_ACACIA_SAPLING, BlockModelGenerators.PlantType.NOT_TINTED); - this.createTrivialBlock(Blocks.ACACIA_LEAVES, TexturedModel.LEAVES); - this.woodProvider(Blocks.CHERRY_LOG).logUVLocked(Blocks.CHERRY_LOG).wood(Blocks.CHERRY_WOOD); - this.woodProvider(Blocks.STRIPPED_CHERRY_LOG).logUVLocked(Blocks.STRIPPED_CHERRY_LOG).wood(Blocks.STRIPPED_CHERRY_WOOD); - this.createHangingSign(Blocks.STRIPPED_CHERRY_LOG, Blocks.CHERRY_HANGING_SIGN, Blocks.CHERRY_WALL_HANGING_SIGN); -- this.createPlant(Blocks.CHERRY_SAPLING, Blocks.POTTED_CHERRY_SAPLING, BlockModelGenerators.TintState.NOT_TINTED); -+ this.createPlant(Blocks.CHERRY_SAPLING, Blocks.POTTED_CHERRY_SAPLING, BlockModelGenerators.PlantType.NOT_TINTED); - this.createTrivialBlock(Blocks.CHERRY_LEAVES, TexturedModel.LEAVES); - this.woodProvider(Blocks.BIRCH_LOG).logWithHorizontal(Blocks.BIRCH_LOG).wood(Blocks.BIRCH_WOOD); - this.woodProvider(Blocks.STRIPPED_BIRCH_LOG).logWithHorizontal(Blocks.STRIPPED_BIRCH_LOG).wood(Blocks.STRIPPED_BIRCH_WOOD); - this.createHangingSign(Blocks.STRIPPED_BIRCH_LOG, Blocks.BIRCH_HANGING_SIGN, Blocks.BIRCH_WALL_HANGING_SIGN); -- this.createPlant(Blocks.BIRCH_SAPLING, Blocks.POTTED_BIRCH_SAPLING, BlockModelGenerators.TintState.NOT_TINTED); -+ this.createPlant(Blocks.BIRCH_SAPLING, Blocks.POTTED_BIRCH_SAPLING, BlockModelGenerators.PlantType.NOT_TINTED); - this.createTrivialBlock(Blocks.BIRCH_LEAVES, TexturedModel.LEAVES); - this.woodProvider(Blocks.OAK_LOG).logWithHorizontal(Blocks.OAK_LOG).wood(Blocks.OAK_WOOD); - this.woodProvider(Blocks.STRIPPED_OAK_LOG).logWithHorizontal(Blocks.STRIPPED_OAK_LOG).wood(Blocks.STRIPPED_OAK_WOOD); - this.createHangingSign(Blocks.STRIPPED_OAK_LOG, Blocks.OAK_HANGING_SIGN, Blocks.OAK_WALL_HANGING_SIGN); -- this.createPlant(Blocks.OAK_SAPLING, Blocks.POTTED_OAK_SAPLING, BlockModelGenerators.TintState.NOT_TINTED); -+ this.createPlant(Blocks.OAK_SAPLING, Blocks.POTTED_OAK_SAPLING, BlockModelGenerators.PlantType.NOT_TINTED); - this.createTrivialBlock(Blocks.OAK_LEAVES, TexturedModel.LEAVES); - this.woodProvider(Blocks.SPRUCE_LOG).logWithHorizontal(Blocks.SPRUCE_LOG).wood(Blocks.SPRUCE_WOOD); - this.woodProvider(Blocks.STRIPPED_SPRUCE_LOG).logWithHorizontal(Blocks.STRIPPED_SPRUCE_LOG).wood(Blocks.STRIPPED_SPRUCE_WOOD); - this.createHangingSign(Blocks.STRIPPED_SPRUCE_LOG, Blocks.SPRUCE_HANGING_SIGN, Blocks.SPRUCE_WALL_HANGING_SIGN); -- this.createPlant(Blocks.SPRUCE_SAPLING, Blocks.POTTED_SPRUCE_SAPLING, BlockModelGenerators.TintState.NOT_TINTED); -+ this.createPlant(Blocks.SPRUCE_SAPLING, Blocks.POTTED_SPRUCE_SAPLING, BlockModelGenerators.PlantType.NOT_TINTED); - this.createTrivialBlock(Blocks.SPRUCE_LEAVES, TexturedModel.LEAVES); - this.woodProvider(Blocks.DARK_OAK_LOG).logWithHorizontal(Blocks.DARK_OAK_LOG).wood(Blocks.DARK_OAK_WOOD); - this.woodProvider(Blocks.STRIPPED_DARK_OAK_LOG).logWithHorizontal(Blocks.STRIPPED_DARK_OAK_LOG).wood(Blocks.STRIPPED_DARK_OAK_WOOD); - this.createHangingSign(Blocks.STRIPPED_DARK_OAK_LOG, Blocks.DARK_OAK_HANGING_SIGN, Blocks.DARK_OAK_WALL_HANGING_SIGN); -- this.createPlant(Blocks.DARK_OAK_SAPLING, Blocks.POTTED_DARK_OAK_SAPLING, BlockModelGenerators.TintState.NOT_TINTED); -+ this.createPlant(Blocks.DARK_OAK_SAPLING, Blocks.POTTED_DARK_OAK_SAPLING, BlockModelGenerators.PlantType.NOT_TINTED); - this.createTrivialBlock(Blocks.DARK_OAK_LEAVES, TexturedModel.LEAVES); - this.woodProvider(Blocks.PALE_OAK_LOG).logWithHorizontal(Blocks.PALE_OAK_LOG).wood(Blocks.PALE_OAK_WOOD); - this.woodProvider(Blocks.STRIPPED_PALE_OAK_LOG).logWithHorizontal(Blocks.STRIPPED_PALE_OAK_LOG).wood(Blocks.STRIPPED_PALE_OAK_WOOD); - this.createHangingSign(Blocks.STRIPPED_PALE_OAK_LOG, Blocks.PALE_OAK_HANGING_SIGN, Blocks.PALE_OAK_WALL_HANGING_SIGN); -- this.createPlant(Blocks.PALE_OAK_SAPLING, Blocks.POTTED_PALE_OAK_SAPLING, BlockModelGenerators.TintState.NOT_TINTED); -+ this.createPlant(Blocks.PALE_OAK_SAPLING, Blocks.POTTED_PALE_OAK_SAPLING, BlockModelGenerators.PlantType.NOT_TINTED); - this.createTrivialBlock(Blocks.PALE_OAK_LEAVES, TexturedModel.LEAVES); - this.woodProvider(Blocks.JUNGLE_LOG).logWithHorizontal(Blocks.JUNGLE_LOG).wood(Blocks.JUNGLE_WOOD); - this.woodProvider(Blocks.STRIPPED_JUNGLE_LOG).logWithHorizontal(Blocks.STRIPPED_JUNGLE_LOG).wood(Blocks.STRIPPED_JUNGLE_WOOD); - this.createHangingSign(Blocks.STRIPPED_JUNGLE_LOG, Blocks.JUNGLE_HANGING_SIGN, Blocks.JUNGLE_WALL_HANGING_SIGN); -- this.createPlant(Blocks.JUNGLE_SAPLING, Blocks.POTTED_JUNGLE_SAPLING, BlockModelGenerators.TintState.NOT_TINTED); -+ this.createPlant(Blocks.JUNGLE_SAPLING, Blocks.POTTED_JUNGLE_SAPLING, BlockModelGenerators.PlantType.NOT_TINTED); - this.createTrivialBlock(Blocks.JUNGLE_LEAVES, TexturedModel.LEAVES); - this.woodProvider(Blocks.CRIMSON_STEM).log(Blocks.CRIMSON_STEM).wood(Blocks.CRIMSON_HYPHAE); - this.woodProvider(Blocks.STRIPPED_CRIMSON_STEM).log(Blocks.STRIPPED_CRIMSON_STEM).wood(Blocks.STRIPPED_CRIMSON_HYPHAE); - this.createHangingSign(Blocks.STRIPPED_CRIMSON_STEM, Blocks.CRIMSON_HANGING_SIGN, Blocks.CRIMSON_WALL_HANGING_SIGN); -- this.createPlant(Blocks.CRIMSON_FUNGUS, Blocks.POTTED_CRIMSON_FUNGUS, BlockModelGenerators.TintState.NOT_TINTED); -+ this.createPlant(Blocks.CRIMSON_FUNGUS, Blocks.POTTED_CRIMSON_FUNGUS, BlockModelGenerators.PlantType.NOT_TINTED); - this.createNetherRoots(Blocks.CRIMSON_ROOTS, Blocks.POTTED_CRIMSON_ROOTS); - this.woodProvider(Blocks.WARPED_STEM).log(Blocks.WARPED_STEM).wood(Blocks.WARPED_HYPHAE); - this.woodProvider(Blocks.STRIPPED_WARPED_STEM).log(Blocks.STRIPPED_WARPED_STEM).wood(Blocks.STRIPPED_WARPED_HYPHAE); - this.createHangingSign(Blocks.STRIPPED_WARPED_STEM, Blocks.WARPED_HANGING_SIGN, Blocks.WARPED_WALL_HANGING_SIGN); -- this.createPlant(Blocks.WARPED_FUNGUS, Blocks.POTTED_WARPED_FUNGUS, BlockModelGenerators.TintState.NOT_TINTED); -+ this.createPlant(Blocks.WARPED_FUNGUS, Blocks.POTTED_WARPED_FUNGUS, BlockModelGenerators.PlantType.NOT_TINTED); - this.createNetherRoots(Blocks.WARPED_ROOTS, Blocks.POTTED_WARPED_ROOTS); - this.woodProvider(Blocks.BAMBOO_BLOCK).logUVLocked(Blocks.BAMBOO_BLOCK); - this.woodProvider(Blocks.STRIPPED_BAMBOO_BLOCK).logUVLocked(Blocks.STRIPPED_BAMBOO_BLOCK); - this.createHangingSign(Blocks.BAMBOO_PLANKS, Blocks.BAMBOO_HANGING_SIGN, Blocks.BAMBOO_WALL_HANGING_SIGN); -- this.createCrossBlock(Blocks.NETHER_SPROUTS, BlockModelGenerators.TintState.NOT_TINTED); -+ this.createCrossBlock(Blocks.NETHER_SPROUTS, BlockModelGenerators.PlantType.NOT_TINTED); - this.createSimpleFlatItemModel(Items.NETHER_SPROUTS); - this.createDoor(Blocks.IRON_DOOR); - this.createTrapdoor(Blocks.IRON_TRAPDOOR); -@@ -5742,16 +5737,43 @@ public class BlockModelGenerators { - record BookSlotModelCacheKey(ModelTemplate template, String modelSuffix) { - } - -- static enum TintState { -- TINTED, -- NOT_TINTED; -+ static enum PlantType { -+ TINTED(ModelTemplates.TINTED_CROSS, ModelTemplates.TINTED_FLOWER_POT_CROSS, false), -+ NOT_TINTED(ModelTemplates.CROSS, ModelTemplates.FLOWER_POT_CROSS, false), -+ EMISSIVE_NOT_TINTED(ModelTemplates.CROSS_EMISSIVE, ModelTemplates.FLOWER_POT_CROSS_EMISSIVE, true); -+ -+ private final ModelTemplate blockTemplate; -+ private final ModelTemplate flowerPotTemplate; -+ private final boolean isEmissive; -+ -+ private PlantType(final ModelTemplate modelTemplate, final ModelTemplate modelTemplate1, final boolean flag) { -+ this.blockTemplate = modelTemplate; -+ this.flowerPotTemplate = modelTemplate1; -+ this.isEmissive = flag; -+ } - - public ModelTemplate getCross() { -- return this == TINTED ? ModelTemplates.TINTED_CROSS : ModelTemplates.CROSS; -+ return this.blockTemplate; - } - - public ModelTemplate getCrossPot() { -- return this == TINTED ? ModelTemplates.TINTED_FLOWER_POT_CROSS : ModelTemplates.FLOWER_POT_CROSS; -+ return this.flowerPotTemplate; -+ } -+ -+ public void createItemModel(BlockModelGenerators blockModelGenerators, Block block) { -+ if (this.isEmissive) { -+ blockModelGenerators.createTwoLayerFlatItemModel(block, "_emissive"); -+ } else { -+ blockModelGenerators.createSimpleFlatItemModel(block); -+ } -+ } -+ -+ public TextureMapping getTextureMapping(Block block) { -+ return this.isEmissive ? TextureMapping.crossEmissive(block) : TextureMapping.cross(block); -+ } -+ -+ public TextureMapping getPlantTextureMapping(Block block) { -+ return this.isEmissive ? TextureMapping.plantEmissive(block) : TextureMapping.plant(block); - } - } - -diff --git a/net/minecraft/data/models/ItemModelGenerators.java b/net/minecraft/data/models/ItemModelGenerators.java -index 0df5e05..954fb11 100644 ---- a/net/minecraft/data/models/ItemModelGenerators.java -+++ b/net/minecraft/data/models/ItemModelGenerators.java -@@ -27,16 +27,17 @@ import net.minecraft.world.item.equipment.Equippable; - public class ItemModelGenerators { - public static final ResourceLocation TRIM_TYPE_PREDICATE_ID = ResourceLocation.withDefaultNamespace("trim_type"); - private static final List GENERATED_TRIM_MODELS = List.of( -- new ItemModelGenerators.TrimModelData("quartz", 0.1F, Map.of()), -- new ItemModelGenerators.TrimModelData("iron", 0.2F, Map.of(EquipmentModels.IRON, "iron_darker")), -- new ItemModelGenerators.TrimModelData("netherite", 0.3F, Map.of(EquipmentModels.NETHERITE, "netherite_darker")), -- new ItemModelGenerators.TrimModelData("redstone", 0.4F, Map.of()), -- new ItemModelGenerators.TrimModelData("copper", 0.5F, Map.of()), -- new ItemModelGenerators.TrimModelData("gold", 0.6F, Map.of(EquipmentModels.GOLD, "gold_darker")), -- new ItemModelGenerators.TrimModelData("emerald", 0.7F, Map.of()), -- new ItemModelGenerators.TrimModelData("diamond", 0.8F, Map.of(EquipmentModels.DIAMOND, "diamond_darker")), -- new ItemModelGenerators.TrimModelData("lapis", 0.9F, Map.of()), -- new ItemModelGenerators.TrimModelData("amethyst", 1.0F, Map.of()) -+ new ItemModelGenerators.TrimModelData("quartz", 0.01F, Map.of()), -+ new ItemModelGenerators.TrimModelData("iron", 0.02F, Map.of(EquipmentModels.IRON, "iron_darker")), -+ new ItemModelGenerators.TrimModelData("netherite", 0.03F, Map.of(EquipmentModels.NETHERITE, "netherite_darker")), -+ new ItemModelGenerators.TrimModelData("redstone", 0.04F, Map.of()), -+ new ItemModelGenerators.TrimModelData("copper", 0.05F, Map.of()), -+ new ItemModelGenerators.TrimModelData("gold", 0.06F, Map.of(EquipmentModels.GOLD, "gold_darker")), -+ new ItemModelGenerators.TrimModelData("emerald", 0.07F, Map.of()), -+ new ItemModelGenerators.TrimModelData("diamond", 0.08F, Map.of(EquipmentModels.DIAMOND, "diamond_darker")), -+ new ItemModelGenerators.TrimModelData("lapis", 0.09F, Map.of()), -+ new ItemModelGenerators.TrimModelData("amethyst", 0.1F, Map.of()), -+ new ItemModelGenerators.TrimModelData("resin", 0.11F, Map.of()) - ); - private final BiConsumer> output; - -@@ -330,6 +331,7 @@ public class ItemModelGenerators { - this.generateFlatItem(Items.NETHERITE_SHOVEL, ModelTemplates.FLAT_HANDHELD_ITEM); - this.generateFlatItem(Items.NETHERITE_SWORD, ModelTemplates.FLAT_HANDHELD_ITEM); - this.generateFlatItem(Items.NETHER_BRICK, ModelTemplates.FLAT_ITEM); -+ this.generateFlatItem(Items.RESIN_BRICK, ModelTemplates.FLAT_ITEM); - this.generateFlatItem(Items.NETHER_STAR, ModelTemplates.FLAT_ITEM); - this.generateFlatItem(Items.OAK_BOAT, ModelTemplates.FLAT_ITEM); - this.generateFlatItem(Items.OAK_CHEST_BOAT, ModelTemplates.FLAT_ITEM); -diff --git a/net/minecraft/data/models/model/ModelTemplates.java b/net/minecraft/data/models/model/ModelTemplates.java -index a63c7ed..1d6ef81 100644 ---- a/net/minecraft/data/models/model/ModelTemplates.java -+++ b/net/minecraft/data/models/model/ModelTemplates.java -@@ -83,8 +83,10 @@ public class ModelTemplates { - public static final ModelTemplate POINTED_DRIPSTONE = create("pointed_dripstone", TextureSlot.CROSS); - public static final ModelTemplate CROSS = create("cross", TextureSlot.CROSS); - public static final ModelTemplate TINTED_CROSS = create("tinted_cross", TextureSlot.CROSS); -+ public static final ModelTemplate CROSS_EMISSIVE = create("cross_emissive", TextureSlot.CROSS, TextureSlot.CROSS_EMISSIVE); - public static final ModelTemplate FLOWER_POT_CROSS = create("flower_pot_cross", TextureSlot.PLANT); - public static final ModelTemplate TINTED_FLOWER_POT_CROSS = create("tinted_flower_pot_cross", TextureSlot.PLANT); -+ public static final ModelTemplate FLOWER_POT_CROSS_EMISSIVE = create("flower_pot_cross_emissive", TextureSlot.PLANT, TextureSlot.CROSS_EMISSIVE); - public static final ModelTemplate RAIL_FLAT = create("rail_flat", TextureSlot.RAIL); - public static final ModelTemplate RAIL_CURVED = create("rail_curved", "_corner", TextureSlot.RAIL); - public static final ModelTemplate RAIL_RAISED_NE = create("template_rail_raised_ne", "_raised_ne", TextureSlot.RAIL); -diff --git a/net/minecraft/data/models/model/TextureMapping.java b/net/minecraft/data/models/model/TextureMapping.java -index 3efc01a..5451ad1 100644 ---- a/net/minecraft/data/models/model/TextureMapping.java -+++ b/net/minecraft/data/models/model/TextureMapping.java -@@ -86,6 +86,10 @@ public class TextureMapping { - return singleSlot(TextureSlot.SIDE, getBlockTexture(block)); - } - -+ public static TextureMapping crossEmissive(Block block) { -+ return new TextureMapping().put(TextureSlot.CROSS, getBlockTexture(block)).put(TextureSlot.CROSS_EMISSIVE, getBlockTexture(block, "_emissive")); -+ } -+ - public static TextureMapping cross(ResourceLocation crossTextureLocation) { - return singleSlot(TextureSlot.CROSS, crossTextureLocation); - } -@@ -94,6 +98,10 @@ public class TextureMapping { - return singleSlot(TextureSlot.PLANT, getBlockTexture(plantBlock)); - } - -+ public static TextureMapping plantEmissive(Block block) { -+ return new TextureMapping().put(TextureSlot.PLANT, getBlockTexture(block)).put(TextureSlot.CROSS_EMISSIVE, getBlockTexture(block, "_emissive")); -+ } -+ - public static TextureMapping plant(ResourceLocation plantTextureLocation) { - return singleSlot(TextureSlot.PLANT, plantTextureLocation); - } -diff --git a/net/minecraft/data/models/model/TextureSlot.java b/net/minecraft/data/models/model/TextureSlot.java -index c2c48c9..fbbda66 100644 ---- a/net/minecraft/data/models/model/TextureSlot.java -+++ b/net/minecraft/data/models/model/TextureSlot.java -@@ -19,6 +19,7 @@ public final class TextureSlot { - public static final TextureSlot UP = create("up"); - public static final TextureSlot DOWN = create("down"); - public static final TextureSlot CROSS = create("cross"); -+ public static final TextureSlot CROSS_EMISSIVE = create("cross_emissive"); - public static final TextureSlot PLANT = create("plant"); - public static final TextureSlot WALL = create("wall", ALL); - public static final TextureSlot RAIL = create("rail"); -diff --git a/net/minecraft/data/recipes/packs/VanillaRecipeProvider.java b/net/minecraft/data/recipes/packs/VanillaRecipeProvider.java -index 6ae05c6..0386f36 100644 ---- a/net/minecraft/data/recipes/packs/VanillaRecipeProvider.java -+++ b/net/minecraft/data/recipes/packs/VanillaRecipeProvider.java -@@ -76,6 +76,7 @@ public class VanillaRecipeProvider extends RecipeProvider { - this.planksFromLogs(Blocks.BIRCH_PLANKS, ItemTags.BIRCH_LOGS, 4); - this.planksFromLogs(Blocks.CRIMSON_PLANKS, ItemTags.CRIMSON_STEMS, 4); - this.planksFromLog(Blocks.DARK_OAK_PLANKS, ItemTags.DARK_OAK_LOGS, 4); -+ this.planksFromLog(Blocks.PALE_OAK_PLANKS, ItemTags.PALE_OAK_LOGS, 4); - this.planksFromLogs(Blocks.JUNGLE_PLANKS, ItemTags.JUNGLE_LOGS, 4); - this.planksFromLogs(Blocks.OAK_PLANKS, ItemTags.OAK_LOGS, 4); - this.planksFromLogs(Blocks.SPRUCE_PLANKS, ItemTags.SPRUCE_LOGS, 4); -@@ -84,6 +85,7 @@ public class VanillaRecipeProvider extends RecipeProvider { - this.woodFromLogs(Blocks.ACACIA_WOOD, Blocks.ACACIA_LOG); - this.woodFromLogs(Blocks.BIRCH_WOOD, Blocks.BIRCH_LOG); - this.woodFromLogs(Blocks.DARK_OAK_WOOD, Blocks.DARK_OAK_LOG); -+ this.woodFromLogs(Blocks.PALE_OAK_WOOD, Blocks.PALE_OAK_LOG); - this.woodFromLogs(Blocks.JUNGLE_WOOD, Blocks.JUNGLE_LOG); - this.woodFromLogs(Blocks.OAK_WOOD, Blocks.OAK_LOG); - this.woodFromLogs(Blocks.SPRUCE_WOOD, Blocks.SPRUCE_LOG); -@@ -93,6 +95,7 @@ public class VanillaRecipeProvider extends RecipeProvider { - this.woodFromLogs(Blocks.STRIPPED_ACACIA_WOOD, Blocks.STRIPPED_ACACIA_LOG); - this.woodFromLogs(Blocks.STRIPPED_BIRCH_WOOD, Blocks.STRIPPED_BIRCH_LOG); - this.woodFromLogs(Blocks.STRIPPED_DARK_OAK_WOOD, Blocks.STRIPPED_DARK_OAK_LOG); -+ this.woodFromLogs(Blocks.STRIPPED_PALE_OAK_WOOD, Blocks.STRIPPED_PALE_OAK_LOG); - this.woodFromLogs(Blocks.STRIPPED_JUNGLE_WOOD, Blocks.STRIPPED_JUNGLE_LOG); - this.woodFromLogs(Blocks.STRIPPED_OAK_WOOD, Blocks.STRIPPED_OAK_LOG); - this.woodFromLogs(Blocks.STRIPPED_SPRUCE_WOOD, Blocks.STRIPPED_SPRUCE_LOG); -@@ -102,6 +105,7 @@ public class VanillaRecipeProvider extends RecipeProvider { - this.woodenBoat(Items.ACACIA_BOAT, Blocks.ACACIA_PLANKS); - this.woodenBoat(Items.BIRCH_BOAT, Blocks.BIRCH_PLANKS); - this.woodenBoat(Items.DARK_OAK_BOAT, Blocks.DARK_OAK_PLANKS); -+ this.woodenBoat(Items.PALE_OAK_BOAT, Blocks.PALE_OAK_PLANKS); - this.woodenBoat(Items.JUNGLE_BOAT, Blocks.JUNGLE_PLANKS); - this.woodenBoat(Items.OAK_BOAT, Blocks.OAK_PLANKS); - this.woodenBoat(Items.SPRUCE_BOAT, Blocks.SPRUCE_PLANKS); -@@ -230,6 +234,7 @@ public class VanillaRecipeProvider extends RecipeProvider { - this.bedFromPlanksAndWool(Items.YELLOW_BED, Blocks.YELLOW_WOOL); - this.banner(Items.YELLOW_BANNER, Blocks.YELLOW_WOOL); - this.carpet(Blocks.MOSS_CARPET, Blocks.MOSS_BLOCK); -+ this.carpet(Blocks.PALE_MOSS_CARPET, Blocks.PALE_MOSS_BLOCK); - this.stainedGlassFromGlassAndDye(Blocks.BLACK_STAINED_GLASS, Items.BLACK_DYE); - this.stainedGlassPaneFromStainedGlass(Blocks.BLACK_STAINED_GLASS_PANE, Blocks.BLACK_STAINED_GLASS); - this.stainedGlassPaneFromGlassPaneAndDye(Blocks.BLACK_STAINED_GLASS_PANE, Items.BLACK_DYE); -@@ -573,6 +578,7 @@ public class VanillaRecipeProvider extends RecipeProvider { - this.chestBoat(Items.ACACIA_CHEST_BOAT, Items.ACACIA_BOAT); - this.chestBoat(Items.BIRCH_CHEST_BOAT, Items.BIRCH_BOAT); - this.chestBoat(Items.DARK_OAK_CHEST_BOAT, Items.DARK_OAK_BOAT); -+ this.chestBoat(Items.PALE_OAK_CHEST_BOAT, Items.PALE_OAK_BOAT); - this.chestBoat(Items.JUNGLE_CHEST_BOAT, Items.JUNGLE_BOAT); - this.chestBoat(Items.OAK_CHEST_BOAT, Items.OAK_BOAT); - this.chestBoat(Items.SPRUCE_CHEST_BOAT, Items.SPRUCE_BOAT); -@@ -1352,6 +1358,16 @@ public class VanillaRecipeProvider extends RecipeProvider { - } - }); - this.twoByTwoPacker(RecipeCategory.BUILDING_BLOCKS, Blocks.NETHER_BRICKS, Items.NETHER_BRICK); -+ this.twoByTwoPacker(RecipeCategory.BUILDING_BLOCKS, Blocks.RESIN_BRICKS, Items.RESIN_BRICK); -+ this.nineBlockStorageRecipes(RecipeCategory.MISC, Items.RESIN_CLUMP, RecipeCategory.BUILDING_BLOCKS, Items.RESIN_BLOCK); -+ this.shaped(RecipeCategory.MISC, Blocks.CREAKING_HEART) -+ .define('R', Items.RESIN_BLOCK) -+ .define('L', Blocks.PALE_OAK_LOG) -+ .pattern(" L ") -+ .pattern(" R ") -+ .pattern(" L ") -+ .unlockedBy("has_resin_block", this.has(Items.RESIN_BLOCK)) -+ .save(this.output); - this.threeByThreePacker(RecipeCategory.BUILDING_BLOCKS, Blocks.NETHER_WART_BLOCK, Items.NETHER_WART); - this.shaped(RecipeCategory.REDSTONE, Blocks.NOTE_BLOCK) - .define('#', ItemTags.PLANKS) -@@ -1530,6 +1546,8 @@ public class VanillaRecipeProvider extends RecipeProvider { - this.oneToOneConversionRecipe(Items.RED_DYE, Items.BEETROOT, "red_dye"); - this.oneToOneConversionRecipe(Items.RED_DYE, Blocks.POPPY, "red_dye"); - this.oneToOneConversionRecipe(Items.RED_DYE, Blocks.ROSE_BUSH, "red_dye", 2); -+ this.oneToOneConversionRecipe(Items.ORANGE_DYE, Blocks.OPEN_EYEBLOSSOM, "orange_dye"); -+ this.oneToOneConversionRecipe(Items.GRAY_DYE, Blocks.CLOSED_EYEBLOSSOM, "gray_dye"); - this.shapeless(RecipeCategory.MISC, Items.RED_DYE) - .requires(Blocks.RED_TULIP) - .group("red_dye") -@@ -2175,6 +2193,9 @@ public class VanillaRecipeProvider extends RecipeProvider { - SimpleCookingRecipeBuilder.smelting(Ingredient.of(Blocks.NETHERRACK), RecipeCategory.MISC, Items.NETHER_BRICK, 0.1F, 200) - .unlockedBy("has_netherrack", this.has(Blocks.NETHERRACK)) - .save(this.output); -+ SimpleCookingRecipeBuilder.smelting(Ingredient.of(Items.RESIN_CLUMP), RecipeCategory.MISC, Items.RESIN_BRICK, 0.1F, 200) -+ .unlockedBy("has_resin_clump", this.has(Blocks.RESIN_CLUMP)) -+ .save(this.output); - SimpleCookingRecipeBuilder.smelting(Ingredient.of(Blocks.NETHER_QUARTZ_ORE), RecipeCategory.MISC, Items.QUARTZ, 0.2F, 200) - .unlockedBy("has_nether_quartz_ore", this.has(Blocks.NETHER_QUARTZ_ORE)) - .save(this.output); -@@ -2421,6 +2442,10 @@ public class VanillaRecipeProvider extends RecipeProvider { - this.stonecutterResultFromBase(RecipeCategory.BUILDING_BLOCKS, Blocks.NETHER_BRICK_STAIRS, Blocks.NETHER_BRICKS); - this.stonecutterResultFromBase(RecipeCategory.DECORATIONS, Blocks.NETHER_BRICK_WALL, Blocks.NETHER_BRICKS); - this.stonecutterResultFromBase(RecipeCategory.BUILDING_BLOCKS, Blocks.CHISELED_NETHER_BRICKS, Blocks.NETHER_BRICKS); -+ this.stonecutterResultFromBase(RecipeCategory.BUILDING_BLOCKS, Blocks.RESIN_BRICK_SLAB, Blocks.RESIN_BRICKS, 2); -+ this.stonecutterResultFromBase(RecipeCategory.BUILDING_BLOCKS, Blocks.RESIN_BRICK_STAIRS, Blocks.RESIN_BRICKS); -+ this.stonecutterResultFromBase(RecipeCategory.DECORATIONS, Blocks.RESIN_BRICK_WALL, Blocks.RESIN_BRICKS); -+ this.stonecutterResultFromBase(RecipeCategory.BUILDING_BLOCKS, Blocks.CHISELED_RESIN_BRICKS, Blocks.RESIN_BRICKS); - this.stonecutterResultFromBase(RecipeCategory.BUILDING_BLOCKS, Blocks.RED_NETHER_BRICK_SLAB, Blocks.RED_NETHER_BRICKS, 2); - this.stonecutterResultFromBase(RecipeCategory.BUILDING_BLOCKS, Blocks.RED_NETHER_BRICK_STAIRS, Blocks.RED_NETHER_BRICKS); - this.stonecutterResultFromBase(RecipeCategory.DECORATIONS, Blocks.RED_NETHER_BRICK_WALL, Blocks.RED_NETHER_BRICKS); -@@ -2636,6 +2661,7 @@ public class VanillaRecipeProvider extends RecipeProvider { - this.hangingSign(Items.ACACIA_HANGING_SIGN, Blocks.STRIPPED_ACACIA_LOG); - this.hangingSign(Items.CHERRY_HANGING_SIGN, Blocks.STRIPPED_CHERRY_LOG); - this.hangingSign(Items.DARK_OAK_HANGING_SIGN, Blocks.STRIPPED_DARK_OAK_LOG); -+ this.hangingSign(Items.PALE_OAK_HANGING_SIGN, Blocks.STRIPPED_PALE_OAK_LOG); - this.hangingSign(Items.MANGROVE_HANGING_SIGN, Blocks.STRIPPED_MANGROVE_LOG); - this.hangingSign(Items.BAMBOO_HANGING_SIGN, Items.STRIPPED_BAMBOO_BLOCK); - this.hangingSign(Items.CRIMSON_HANGING_SIGN, Blocks.STRIPPED_CRIMSON_STEM); -diff --git a/net/minecraft/data/structures/StructureUpdater.java b/net/minecraft/data/structures/StructureUpdater.java -index 5a2c350..1110ca4 100644 ---- a/net/minecraft/data/structures/StructureUpdater.java -+++ b/net/minecraft/data/structures/StructureUpdater.java -@@ -22,9 +22,9 @@ public class StructureUpdater implements SnbtToNbt.Filter { - public static CompoundTag update(String structureLocationPath, CompoundTag tag) { - StructureTemplate structureTemplate = new StructureTemplate(); - int dataVersion = NbtUtils.getDataVersion(tag, 500); -- int i = 4053; -- if (dataVersion < 4053) { -- LOGGER.warn("SNBT Too old, do not forget to update: {} < {}: {}", dataVersion, 4053, structureLocationPath); -+ int i = 4173; -+ if (dataVersion < 4173) { -+ LOGGER.warn("SNBT Too old, do not forget to update: {} < {}: {}", dataVersion, 4173, structureLocationPath); - } - - CompoundTag compoundTag = DataFixTypes.STRUCTURE.updateToCurrentVersion(DataFixers.getDataFixer(), tag, dataVersion); -diff --git a/net/minecraft/data/tags/BiomeTagsProvider.java b/net/minecraft/data/tags/BiomeTagsProvider.java -index 5eca92f..a6ecfd8 100644 ---- a/net/minecraft/data/tags/BiomeTagsProvider.java -+++ b/net/minecraft/data/tags/BiomeTagsProvider.java -@@ -44,6 +44,7 @@ public class BiomeTagsProvider extends TagsProvider { - .add(Biomes.BIRCH_FOREST) - .add(Biomes.OLD_GROWTH_BIRCH_FOREST) - .add(Biomes.DARK_FOREST) -+ .add(Biomes.PALE_GARDEN) - .add(Biomes.GROVE); - this.tag(BiomeTags.IS_SAVANNA).add(Biomes.SAVANNA).add(Biomes.SAVANNA_PLATEAU).add(Biomes.WINDSWEPT_SAVANNA); - TagsProvider.TagAppender tagAppender = this.tag(BiomeTags.IS_NETHER); -@@ -148,6 +149,7 @@ public class BiomeTagsProvider extends TagsProvider { - .add(Biomes.FLOWER_FOREST) - .add(Biomes.BIRCH_FOREST) - .add(Biomes.DARK_FOREST) -+ .add(Biomes.PALE_GARDEN) - .add(Biomes.OLD_GROWTH_BIRCH_FOREST) - .add(Biomes.OLD_GROWTH_PINE_TAIGA) - .add(Biomes.OLD_GROWTH_SPRUCE_TAIGA) -diff --git a/net/minecraft/data/tags/EntityTypeTagsProvider.java b/net/minecraft/data/tags/EntityTypeTagsProvider.java -index dd8cdc9..38e1d2e 100644 ---- a/net/minecraft/data/tags/EntityTypeTagsProvider.java -+++ b/net/minecraft/data/tags/EntityTypeTagsProvider.java -@@ -170,6 +170,7 @@ public class EntityTypeTagsProvider extends IntrinsicHolderTagsProvider - Blocks.JUNGLE_PLANKS, - Blocks.ACACIA_PLANKS, - Blocks.DARK_OAK_PLANKS, -+ Blocks.PALE_OAK_PLANKS, - Blocks.CRIMSON_PLANKS, - Blocks.WARPED_PLANKS, - Blocks.MANGROVE_PLANKS, -@@ -57,6 +58,7 @@ public class VanillaBlockTagsProvider extends IntrinsicHolderTagsProvider - Blocks.JUNGLE_BUTTON, - Blocks.ACACIA_BUTTON, - Blocks.DARK_OAK_BUTTON, -+ Blocks.PALE_OAK_BUTTON, - Blocks.CRIMSON_BUTTON, - Blocks.WARPED_BUTTON, - Blocks.MANGROVE_BUTTON, -@@ -92,6 +94,7 @@ public class VanillaBlockTagsProvider extends IntrinsicHolderTagsProvider - Blocks.JUNGLE_DOOR, - Blocks.ACACIA_DOOR, - Blocks.DARK_OAK_DOOR, -+ Blocks.PALE_OAK_DOOR, - Blocks.CRIMSON_DOOR, - Blocks.WARPED_DOOR, - Blocks.MANGROVE_DOOR, -@@ -118,6 +121,7 @@ public class VanillaBlockTagsProvider extends IntrinsicHolderTagsProvider - Blocks.JUNGLE_STAIRS, - Blocks.ACACIA_STAIRS, - Blocks.DARK_OAK_STAIRS, -+ Blocks.PALE_OAK_STAIRS, - Blocks.CRIMSON_STAIRS, - Blocks.WARPED_STAIRS, - Blocks.MANGROVE_STAIRS, -@@ -132,6 +136,7 @@ public class VanillaBlockTagsProvider extends IntrinsicHolderTagsProvider - Blocks.JUNGLE_SLAB, - Blocks.ACACIA_SLAB, - Blocks.DARK_OAK_SLAB, -+ Blocks.PALE_OAK_SLAB, - Blocks.CRIMSON_SLAB, - Blocks.WARPED_SLAB, - Blocks.MANGROVE_SLAB, -@@ -143,6 +148,7 @@ public class VanillaBlockTagsProvider extends IntrinsicHolderTagsProvider - Blocks.OAK_FENCE, - Blocks.ACACIA_FENCE, - Blocks.DARK_OAK_FENCE, -+ Blocks.PALE_OAK_FENCE, - Blocks.SPRUCE_FENCE, - Blocks.BIRCH_FENCE, - Blocks.JUNGLE_FENCE, -@@ -173,6 +179,7 @@ public class VanillaBlockTagsProvider extends IntrinsicHolderTagsProvider - Blocks.JUNGLE_SAPLING, - Blocks.ACACIA_SAPLING, - Blocks.DARK_OAK_SAPLING, -+ Blocks.PALE_OAK_SAPLING, - Blocks.AZALEA, - Blocks.FLOWERING_AZALEA, - Blocks.MANGROVE_PROPAGULE, -@@ -180,6 +187,7 @@ public class VanillaBlockTagsProvider extends IntrinsicHolderTagsProvider - ); - this.tag(BlockTags.BAMBOO_BLOCKS).add(Blocks.BAMBOO_BLOCK, Blocks.STRIPPED_BAMBOO_BLOCK); - this.tag(BlockTags.DARK_OAK_LOGS).add(Blocks.DARK_OAK_LOG, Blocks.DARK_OAK_WOOD, Blocks.STRIPPED_DARK_OAK_LOG, Blocks.STRIPPED_DARK_OAK_WOOD); -+ this.tag(BlockTags.PALE_OAK_LOGS).add(Blocks.PALE_OAK_LOG, Blocks.PALE_OAK_WOOD, Blocks.STRIPPED_PALE_OAK_LOG, Blocks.STRIPPED_PALE_OAK_WOOD); - this.tag(BlockTags.OAK_LOGS).add(Blocks.OAK_LOG, Blocks.OAK_WOOD, Blocks.STRIPPED_OAK_LOG, Blocks.STRIPPED_OAK_WOOD); - this.tag(BlockTags.ACACIA_LOGS).add(Blocks.ACACIA_LOG, Blocks.ACACIA_WOOD, Blocks.STRIPPED_ACACIA_LOG, Blocks.STRIPPED_ACACIA_WOOD); - this.tag(BlockTags.BIRCH_LOGS).add(Blocks.BIRCH_LOG, Blocks.BIRCH_WOOD, Blocks.STRIPPED_BIRCH_LOG, Blocks.STRIPPED_BIRCH_WOOD); -@@ -191,6 +199,7 @@ public class VanillaBlockTagsProvider extends IntrinsicHolderTagsProvider - this.tag(BlockTags.CHERRY_LOGS).add(Blocks.CHERRY_LOG, Blocks.CHERRY_WOOD, Blocks.STRIPPED_CHERRY_LOG, Blocks.STRIPPED_CHERRY_WOOD); - this.tag(BlockTags.LOGS_THAT_BURN) - .addTag(BlockTags.DARK_OAK_LOGS) -+ .addTag(BlockTags.PALE_OAK_LOGS) - .addTag(BlockTags.OAK_LOGS) - .addTag(BlockTags.ACACIA_LOGS) - .addTag(BlockTags.BIRCH_LOGS) -@@ -205,6 +214,7 @@ public class VanillaBlockTagsProvider extends IntrinsicHolderTagsProvider - .add(Blocks.JUNGLE_LOG) - .add(Blocks.SPRUCE_LOG) - .add(Blocks.DARK_OAK_LOG) -+ .add(Blocks.PALE_OAK_LOG) - .add(Blocks.MANGROVE_LOG) - .add(Blocks.CHERRY_LOG); - this.tag(BlockTags.LOGS).addTag(BlockTags.LOGS_THAT_BURN).addTag(BlockTags.CRIMSON_STEMS).addTag(BlockTags.WARPED_STEMS); -@@ -212,6 +222,8 @@ public class VanillaBlockTagsProvider extends IntrinsicHolderTagsProvider - this.tag(BlockTags.SMALL_FLOWERS) - .add( - Blocks.DANDELION, -+ Blocks.OPEN_EYEBLOSSOM, -+ Blocks.CLOSED_EYEBLOSSOM, - Blocks.POPPY, - Blocks.BLUE_ORCHID, - Blocks.ALLIUM, -@@ -235,6 +247,7 @@ public class VanillaBlockTagsProvider extends IntrinsicHolderTagsProvider - Blocks.MYCELIUM, - Blocks.ROOTED_DIRT, - Blocks.MOSS_BLOCK, -+ Blocks.PALE_MOSS_BLOCK, - Blocks.MUD, - Blocks.MUDDY_MANGROVE_ROOTS - ); -@@ -263,6 +276,8 @@ public class VanillaBlockTagsProvider extends IntrinsicHolderTagsProvider - this.tag(BlockTags.FLOWER_POTS) - .add( - Blocks.FLOWER_POT, -+ Blocks.POTTED_OPEN_EYEBLOSSOM, -+ Blocks.POTTED_CLOSED_EYEBLOSSOM, - Blocks.POTTED_POPPY, - Blocks.POTTED_BLUE_ORCHID, - Blocks.POTTED_ALLIUM, -@@ -279,6 +294,7 @@ public class VanillaBlockTagsProvider extends IntrinsicHolderTagsProvider - Blocks.POTTED_JUNGLE_SAPLING, - Blocks.POTTED_ACACIA_SAPLING, - Blocks.POTTED_DARK_OAK_SAPLING, -+ Blocks.POTTED_PALE_OAK_SAPLING, - Blocks.POTTED_RED_MUSHROOM, - Blocks.POTTED_BROWN_MUSHROOM, - Blocks.POTTED_DEAD_BUSH, -@@ -341,6 +357,7 @@ public class VanillaBlockTagsProvider extends IntrinsicHolderTagsProvider - Blocks.JUNGLE_PRESSURE_PLATE, - Blocks.ACACIA_PRESSURE_PLATE, - Blocks.DARK_OAK_PRESSURE_PLATE, -+ Blocks.PALE_OAK_PRESSURE_PLATE, - Blocks.CRIMSON_PRESSURE_PLATE, - Blocks.WARPED_PRESSURE_PLATE, - Blocks.MANGROVE_PRESSURE_PLATE, -@@ -480,7 +497,8 @@ public class VanillaBlockTagsProvider extends IntrinsicHolderTagsProvider - Blocks.MUD_BRICK_WALL, - Blocks.TUFF_WALL, - Blocks.POLISHED_TUFF_WALL, -- Blocks.TUFF_BRICK_WALL -+ Blocks.TUFF_BRICK_WALL, -+ Blocks.RESIN_BRICK_WALL - ); - this.tag(BlockTags.CORAL_PLANTS).add(Blocks.TUBE_CORAL, Blocks.BRAIN_CORAL, Blocks.BUBBLE_CORAL, Blocks.FIRE_CORAL, Blocks.HORN_CORAL); - this.tag(BlockTags.CORALS) -@@ -500,6 +518,7 @@ public class VanillaBlockTagsProvider extends IntrinsicHolderTagsProvider - Blocks.JUNGLE_LEAVES, - Blocks.OAK_LEAVES, - Blocks.SPRUCE_LEAVES, -+ Blocks.PALE_OAK_LEAVES, - Blocks.DARK_OAK_LEAVES, - Blocks.ACACIA_LEAVES, - Blocks.BIRCH_LEAVES, -@@ -534,6 +553,7 @@ public class VanillaBlockTagsProvider extends IntrinsicHolderTagsProvider - Blocks.ACACIA_TRAPDOOR, - Blocks.BIRCH_TRAPDOOR, - Blocks.DARK_OAK_TRAPDOOR, -+ Blocks.PALE_OAK_TRAPDOOR, - Blocks.JUNGLE_TRAPDOOR, - Blocks.OAK_TRAPDOOR, - Blocks.SPRUCE_TRAPDOOR, -@@ -569,6 +589,7 @@ public class VanillaBlockTagsProvider extends IntrinsicHolderTagsProvider - Blocks.ACACIA_SIGN, - Blocks.JUNGLE_SIGN, - Blocks.DARK_OAK_SIGN, -+ Blocks.PALE_OAK_SIGN, - Blocks.CRIMSON_SIGN, - Blocks.WARPED_SIGN, - Blocks.MANGROVE_SIGN, -@@ -583,6 +604,7 @@ public class VanillaBlockTagsProvider extends IntrinsicHolderTagsProvider - Blocks.ACACIA_WALL_SIGN, - Blocks.JUNGLE_WALL_SIGN, - Blocks.DARK_OAK_WALL_SIGN, -+ Blocks.PALE_OAK_WALL_SIGN, - Blocks.CRIMSON_WALL_SIGN, - Blocks.WARPED_WALL_SIGN, - Blocks.MANGROVE_WALL_SIGN, -@@ -599,6 +621,7 @@ public class VanillaBlockTagsProvider extends IntrinsicHolderTagsProvider - Blocks.CHERRY_HANGING_SIGN, - Blocks.JUNGLE_HANGING_SIGN, - Blocks.DARK_OAK_HANGING_SIGN, -+ Blocks.PALE_OAK_HANGING_SIGN, - Blocks.CRIMSON_HANGING_SIGN, - Blocks.WARPED_HANGING_SIGN, - Blocks.MANGROVE_HANGING_SIGN, -@@ -613,6 +636,7 @@ public class VanillaBlockTagsProvider extends IntrinsicHolderTagsProvider - Blocks.CHERRY_WALL_HANGING_SIGN, - Blocks.JUNGLE_WALL_HANGING_SIGN, - Blocks.DARK_OAK_WALL_HANGING_SIGN, -+ Blocks.PALE_OAK_WALL_HANGING_SIGN, - Blocks.CRIMSON_WALL_HANGING_SIGN, - Blocks.WARPED_WALL_HANGING_SIGN, - Blocks.MANGROVE_WALL_HANGING_SIGN, -@@ -776,6 +800,7 @@ public class VanillaBlockTagsProvider extends IntrinsicHolderTagsProvider - Blocks.ACACIA_FENCE_GATE, - Blocks.BIRCH_FENCE_GATE, - Blocks.DARK_OAK_FENCE_GATE, -+ Blocks.PALE_OAK_FENCE_GATE, - Blocks.JUNGLE_FENCE_GATE, - Blocks.OAK_FENCE_GATE, - Blocks.SPRUCE_FENCE_GATE, -@@ -807,6 +832,7 @@ public class VanillaBlockTagsProvider extends IntrinsicHolderTagsProvider - .addTag(BlockTags.TERRACOTTA) - .addTag(BlockTags.IRON_ORES) - .addTag(BlockTags.COPPER_ORES) -+ .addTag(BlockTags.SNOW) - .add( - Blocks.WATER, - Blocks.GRAVEL, -@@ -814,7 +840,6 @@ public class VanillaBlockTagsProvider extends IntrinsicHolderTagsProvider - Blocks.SANDSTONE, - Blocks.RED_SANDSTONE, - Blocks.CALCITE, -- Blocks.SNOW, - Blocks.PACKED_ICE, - Blocks.RAW_IRON_BLOCK, - Blocks.RAW_COPPER_BLOCK -@@ -872,7 +897,7 @@ public class VanillaBlockTagsProvider extends IntrinsicHolderTagsProvider - .add(Blocks.POWDER_SNOW, Blocks.SCULK_VEIN, Blocks.GLOW_LICHEN, Blocks.LILY_PAD, Blocks.SMALL_AMETHYST_BUD, Blocks.PINK_PETALS); - this.tag(BlockTags.COMBINATION_STEP_SOUND_BLOCKS) - .addTag(BlockTags.WOOL_CARPETS) -- .add(Blocks.MOSS_CARPET, Blocks.SNOW, Blocks.NETHER_SPROUTS, Blocks.WARPED_ROOTS, Blocks.CRIMSON_ROOTS); -+ .add(Blocks.MOSS_CARPET, Blocks.PALE_MOSS_CARPET, Blocks.SNOW, Blocks.NETHER_SPROUTS, Blocks.WARPED_ROOTS, Blocks.CRIMSON_ROOTS, Blocks.RESIN_CLUMP); - this.tag(BlockTags.DRIPSTONE_REPLACEABLE).addTag(BlockTags.BASE_STONE_OVERWORLD); - this.tag(BlockTags.CAVE_VINES).add(Blocks.CAVE_VINES_PLANT).add(Blocks.CAVE_VINES); - this.tag(BlockTags.MOSS_REPLACEABLE).addTag(BlockTags.BASE_STONE_OVERWORLD).addTag(BlockTags.CAVE_VINES).addTag(BlockTags.DIRT); -@@ -978,7 +1003,8 @@ public class VanillaBlockTagsProvider extends IntrinsicHolderTagsProvider - .addTag(BlockTags.ALL_HANGING_SIGNS) - .add(Blocks.BAMBOO_MOSAIC, Blocks.BAMBOO_MOSAIC_SLAB, Blocks.BAMBOO_MOSAIC_STAIRS) - .addTag(BlockTags.BAMBOO_BLOCKS) -- .add(Blocks.CHISELED_BOOKSHELF); -+ .add(Blocks.CHISELED_BOOKSHELF) -+ .add(Blocks.CREAKING_HEART); - this.tag(BlockTags.MINEABLE_WITH_HOE) - .add( - Blocks.NETHER_WART_BLOCK, -@@ -992,6 +1018,7 @@ public class VanillaBlockTagsProvider extends IntrinsicHolderTagsProvider - Blocks.JUNGLE_LEAVES, - Blocks.OAK_LEAVES, - Blocks.SPRUCE_LEAVES, -+ Blocks.PALE_OAK_LEAVES, - Blocks.DARK_OAK_LEAVES, - Blocks.ACACIA_LEAVES, - Blocks.BIRCH_LEAVES, -@@ -1002,6 +1029,8 @@ public class VanillaBlockTagsProvider extends IntrinsicHolderTagsProvider - Blocks.CALIBRATED_SCULK_SENSOR, - Blocks.MOSS_BLOCK, - Blocks.MOSS_CARPET, -+ Blocks.PALE_MOSS_BLOCK, -+ Blocks.PALE_MOSS_CARPET, - Blocks.SCULK, - Blocks.SCULK_CATALYST, - Blocks.SCULK_VEIN, -@@ -1028,6 +1057,7 @@ public class VanillaBlockTagsProvider extends IntrinsicHolderTagsProvider - Blocks.NETHER_GOLD_ORE, - Blocks.LAPIS_ORE, - Blocks.DEEPSLATE_LAPIS_ORE, -+ Blocks.RESIN_BRICKS, - Blocks.LAPIS_BLOCK, - Blocks.DISPENSER, - Blocks.SANDSTONE, -@@ -1396,7 +1426,12 @@ public class VanillaBlockTagsProvider extends IntrinsicHolderTagsProvider - Blocks.WAXED_EXPOSED_COPPER_TRAPDOOR, - Blocks.WAXED_WEATHERED_COPPER_TRAPDOOR, - Blocks.WAXED_OXIDIZED_COPPER_TRAPDOOR, -- Blocks.HEAVY_CORE -+ Blocks.HEAVY_CORE, -+ Blocks.RESIN_BRICKS, -+ Blocks.RESIN_BRICK_SLAB, -+ Blocks.RESIN_BRICK_WALL, -+ Blocks.RESIN_BRICK_STAIRS, -+ Blocks.CHISELED_RESIN_BRICKS - ); - this.tag(BlockTags.MINEABLE_WITH_SHOVEL) - .add( -@@ -1459,7 +1494,6 @@ public class VanillaBlockTagsProvider extends IntrinsicHolderTagsProvider - Blocks.CAVE_VINES, - Blocks.CAVE_VINES_PLANT, - Blocks.SPORE_BLOSSOM, -- Blocks.MOSS_CARPET, - Blocks.PINK_PETALS, - Blocks.BIG_DRIPLEAF, - Blocks.BIG_DRIPLEAF_STEM, -@@ -1572,15 +1606,7 @@ public class VanillaBlockTagsProvider extends IntrinsicHolderTagsProvider - Blocks.WAXED_COPPER_TRAPDOOR, - Blocks.WAXED_EXPOSED_COPPER_TRAPDOOR, - Blocks.WAXED_WEATHERED_COPPER_TRAPDOOR, -- Blocks.WAXED_OXIDIZED_COPPER_TRAPDOOR, -- Blocks.COPPER_DOOR, -- Blocks.EXPOSED_COPPER_DOOR, -- Blocks.WEATHERED_COPPER_DOOR, -- Blocks.OXIDIZED_COPPER_DOOR, -- Blocks.WAXED_COPPER_DOOR, -- Blocks.WAXED_EXPOSED_COPPER_DOOR, -- Blocks.WAXED_WEATHERED_COPPER_DOOR, -- Blocks.WAXED_OXIDIZED_COPPER_DOOR -+ Blocks.WAXED_OXIDIZED_COPPER_TRAPDOOR - ); - this.tag(BlockTags.INCORRECT_FOR_NETHERITE_TOOL); - this.tag(BlockTags.INCORRECT_FOR_DIAMOND_TOOL); -@@ -1760,6 +1786,7 @@ public class VanillaBlockTagsProvider extends IntrinsicHolderTagsProvider - Blocks.COARSE_DIRT, - Blocks.ROOTED_DIRT, - Blocks.MOSS_BLOCK, -+ Blocks.PALE_MOSS_BLOCK, - Blocks.MUD, - Blocks.MUDDY_MANGROVE_ROOTS - ); -diff --git a/net/minecraft/data/tags/VanillaItemTagsProvider.java b/net/minecraft/data/tags/VanillaItemTagsProvider.java -index 03f2a99..7c7a1b4 100644 ---- a/net/minecraft/data/tags/VanillaItemTagsProvider.java -+++ b/net/minecraft/data/tags/VanillaItemTagsProvider.java -@@ -35,6 +35,7 @@ public class VanillaItemTagsProvider extends ItemTagsProvider { - this.copy(BlockTags.BAMBOO_BLOCKS, ItemTags.BAMBOO_BLOCKS); - this.copy(BlockTags.OAK_LOGS, ItemTags.OAK_LOGS); - this.copy(BlockTags.DARK_OAK_LOGS, ItemTags.DARK_OAK_LOGS); -+ this.copy(BlockTags.PALE_OAK_LOGS, ItemTags.PALE_OAK_LOGS); - this.copy(BlockTags.BIRCH_LOGS, ItemTags.BIRCH_LOGS); - this.copy(BlockTags.ACACIA_LOGS, ItemTags.ACACIA_LOGS); - this.copy(BlockTags.SPRUCE_LOGS, ItemTags.SPRUCE_LOGS); -@@ -103,6 +104,7 @@ public class VanillaItemTagsProvider extends ItemTagsProvider { - Items.JUNGLE_BOAT, - Items.ACACIA_BOAT, - Items.DARK_OAK_BOAT, -+ Items.PALE_OAK_BOAT, - Items.MANGROVE_BOAT, - Items.BAMBOO_RAFT, - Items.CHERRY_BOAT -@@ -136,6 +138,7 @@ public class VanillaItemTagsProvider extends ItemTagsProvider { - Items.JUNGLE_CHEST_BOAT, - Items.ACACIA_CHEST_BOAT, - Items.DARK_OAK_CHEST_BOAT, -+ Items.PALE_OAK_CHEST_BOAT, - Items.MANGROVE_CHEST_BOAT, - Items.BAMBOO_CHEST_RAFT, - Items.CHERRY_CHEST_BOAT -@@ -364,7 +367,8 @@ public class VanillaItemTagsProvider extends ItemTagsProvider { - .add(Items.NETHERITE_INGOT) - .add(Items.REDSTONE) - .add(Items.QUARTZ) -- .add(Items.AMETHYST_SHARD); -+ .add(Items.AMETHYST_SHARD) -+ .add(Items.RESIN_CLUMP); - this.tag(ItemTags.TRIM_TEMPLATES) - .add(Items.WARD_ARMOR_TRIM_SMITHING_TEMPLATE) - .add(Items.SPIRE_ARMOR_TRIM_SMITHING_TEMPLATE) -diff --git a/net/minecraft/data/worldgen/biome/BiomeData.java b/net/minecraft/data/worldgen/biome/BiomeData.java -index d088a55..74febb7 100644 ---- a/net/minecraft/data/worldgen/biome/BiomeData.java -+++ b/net/minecraft/data/worldgen/biome/BiomeData.java -@@ -24,6 +24,7 @@ public abstract class BiomeData { - context.register(Biomes.FLOWER_FOREST, OverworldBiomes.forest(holderGetter, holderGetter1, false, false, true)); - context.register(Biomes.BIRCH_FOREST, OverworldBiomes.forest(holderGetter, holderGetter1, true, false, false)); - context.register(Biomes.DARK_FOREST, OverworldBiomes.darkForest(holderGetter, holderGetter1, false)); -+ context.register(Biomes.PALE_GARDEN, OverworldBiomes.darkForest(holderGetter, holderGetter1, true)); - context.register(Biomes.OLD_GROWTH_BIRCH_FOREST, OverworldBiomes.forest(holderGetter, holderGetter1, true, true, false)); - context.register(Biomes.OLD_GROWTH_PINE_TAIGA, OverworldBiomes.oldGrowthTaiga(holderGetter, holderGetter1, false)); - context.register(Biomes.OLD_GROWTH_SPRUCE_TAIGA, OverworldBiomes.oldGrowthTaiga(holderGetter, holderGetter1, true)); -diff --git a/net/minecraft/data/worldgen/biome/OverworldBiomes.java b/net/minecraft/data/worldgen/biome/OverworldBiomes.java -index b5c864b..1ca6e38 100644 ---- a/net/minecraft/data/worldgen/biome/OverworldBiomes.java -+++ b/net/minecraft/data/worldgen/biome/OverworldBiomes.java -@@ -573,12 +573,17 @@ public class OverworldBiomes { - ); - if (!flag) { - BiomeDefaultFeatures.addForestFlowers(builder1); -+ } else { -+ builder1.addFeature(GenerationStep.Decoration.VEGETAL_DECORATION, VegetationPlacements.PALE_MOSS_PATCH); -+ builder1.addFeature(GenerationStep.Decoration.VEGETAL_DECORATION, VegetationPlacements.PALE_GARDEN_FLOWERS); - } - - BiomeDefaultFeatures.addDefaultOres(builder1); - BiomeDefaultFeatures.addDefaultSoftDisks(builder1); - if (!flag) { - BiomeDefaultFeatures.addDefaultFlowers(builder1); -+ } else { -+ builder1.addFeature(GenerationStep.Decoration.VEGETAL_DECORATION, VegetationPlacements.FLOWER_PALE_GARDEN); - } - - BiomeDefaultFeatures.addForestGrass(builder1); -@@ -587,7 +592,6 @@ public class OverworldBiomes { - } - - BiomeDefaultFeatures.addDefaultExtraVegetation(builder1); -- Music music = Musics.createGameMusic(SoundEvents.MUSIC_BIOME_FOREST); - return new Biome.BiomeBuilder() - .hasPrecipitation(true) - .temperature(0.7F) -@@ -602,7 +606,7 @@ public class OverworldBiomes { - .grassColorOverride(7832178) - .foliageColorOverride(8883574) - .ambientMoodSound(AmbientMoodSettings.LEGACY_CAVE_SETTINGS) -- .backgroundMusic(music) -+ .silenceAllBackgroundMusic() - .build() - : new BiomeSpecialEffects.Builder() - .waterColor(4159204) -@@ -611,7 +615,7 @@ public class OverworldBiomes { - .skyColor(calculateSkyColor(0.7F)) - .grassColorModifier(BiomeSpecialEffects.GrassColorModifier.DARK_FOREST) - .ambientMoodSound(AmbientMoodSettings.LEGACY_CAVE_SETTINGS) -- .backgroundMusic(music) -+ .backgroundMusic(Musics.createGameMusic(SoundEvents.MUSIC_BIOME_FOREST)) - .build() - ) - .mobSpawnSettings(builder.build()) -diff --git a/net/minecraft/data/worldgen/features/CaveFeatures.java b/net/minecraft/data/worldgen/features/CaveFeatures.java -index 454f435..d2a072d 100644 ---- a/net/minecraft/data/worldgen/features/CaveFeatures.java -+++ b/net/minecraft/data/worldgen/features/CaveFeatures.java -@@ -23,7 +23,7 @@ import net.minecraft.world.level.block.Block; - import net.minecraft.world.level.block.Blocks; - import net.minecraft.world.level.block.CaveVines; - import net.minecraft.world.level.block.CaveVinesBlock; --import net.minecraft.world.level.block.MultifaceBlock; -+import net.minecraft.world.level.block.MultifaceSpreadeableBlock; - import net.minecraft.world.level.block.SmallDripleafBlock; - import net.minecraft.world.level.block.state.BlockState; - import net.minecraft.world.level.block.state.properties.BlockStateProperties; -@@ -210,13 +210,13 @@ public class CaveFeatures { - ) - ); - FeatureUtils.register(context, UNDERWATER_MAGMA, Feature.UNDERWATER_MAGMA, new UnderwaterMagmaConfiguration(5, 1, 0.5F)); -- MultifaceBlock multifaceBlock = (MultifaceBlock)Blocks.GLOW_LICHEN; -+ MultifaceSpreadeableBlock multifaceSpreadeableBlock = (MultifaceSpreadeableBlock)Blocks.GLOW_LICHEN; - FeatureUtils.register( - context, - GLOW_LICHEN, - Feature.MULTIFACE_GROWTH, - new MultifaceGrowthConfiguration( -- multifaceBlock, -+ multifaceSpreadeableBlock, - 20, - false, - true, -@@ -475,13 +475,13 @@ public class CaveFeatures { - ); - FeatureUtils.register(context, SCULK_PATCH_DEEP_DARK, Feature.SCULK_PATCH, new SculkPatchConfiguration(10, 32, 64, 0, 1, ConstantInt.of(0), 0.5F)); - FeatureUtils.register(context, SCULK_PATCH_ANCIENT_CITY, Feature.SCULK_PATCH, new SculkPatchConfiguration(10, 32, 64, 0, 1, UniformInt.of(1, 3), 0.5F)); -- MultifaceBlock multifaceBlock1 = (MultifaceBlock)Blocks.SCULK_VEIN; -+ MultifaceSpreadeableBlock multifaceSpreadeableBlock1 = (MultifaceSpreadeableBlock)Blocks.SCULK_VEIN; - FeatureUtils.register( - context, - SCULK_VEIN, - Feature.MULTIFACE_GROWTH, - new MultifaceGrowthConfiguration( -- multifaceBlock1, -+ multifaceSpreadeableBlock1, - 20, - true, - true, -diff --git a/net/minecraft/data/worldgen/features/TreeFeatures.java b/net/minecraft/data/worldgen/features/TreeFeatures.java -index 7101581..d09ff86 100644 ---- a/net/minecraft/data/worldgen/features/TreeFeatures.java -+++ b/net/minecraft/data/worldgen/features/TreeFeatures.java -@@ -74,6 +74,7 @@ public class TreeFeatures { - public static final ResourceKey> OAK = FeatureUtils.createKey("oak"); - public static final ResourceKey> DARK_OAK = FeatureUtils.createKey("dark_oak"); - public static final ResourceKey> PALE_OAK = FeatureUtils.createKey("pale_oak"); -+ public static final ResourceKey> PALE_OAK_BONEMEAL = FeatureUtils.createKey("pale_oak_bonemeal"); - public static final ResourceKey> PALE_OAK_CREAKING = FeatureUtils.createKey("pale_oak_creaking"); - public static final ResourceKey> BIRCH = FeatureUtils.createKey("birch"); - public static final ResourceKey> ACACIA = FeatureUtils.createKey("acacia"); -@@ -349,6 +350,20 @@ public class TreeFeatures { - .ignoreVines() - .build() - ); -+ FeatureUtils.register( -+ context, -+ PALE_OAK_BONEMEAL, -+ Feature.TREE, -+ new TreeConfiguration.TreeConfigurationBuilder( -+ BlockStateProvider.simple(Blocks.PALE_OAK_LOG), -+ new DarkOakTrunkPlacer(6, 2, 1), -+ BlockStateProvider.simple(Blocks.PALE_OAK_LEAVES), -+ new DarkOakFoliagePlacer(ConstantInt.of(0), ConstantInt.of(0)), -+ new ThreeLayersFeatureSize(1, 1, 0, 1, 2, OptionalInt.empty()) -+ ) -+ .ignoreVines() -+ .build() -+ ); - FeatureUtils.register( - context, - PALE_OAK_CREAKING, -diff --git a/net/minecraft/data/worldgen/features/VegetationFeatures.java b/net/minecraft/data/worldgen/features/VegetationFeatures.java -index de5f151..e4ae6a5 100644 ---- a/net/minecraft/data/worldgen/features/VegetationFeatures.java -+++ b/net/minecraft/data/worldgen/features/VegetationFeatures.java -@@ -70,10 +70,13 @@ public class VegetationFeatures { - public static final ResourceKey> FLOWER_PLAIN = FeatureUtils.createKey("flower_plain"); - public static final ResourceKey> FLOWER_MEADOW = FeatureUtils.createKey("flower_meadow"); - public static final ResourceKey> FLOWER_CHERRY = FeatureUtils.createKey("flower_cherry"); -+ public static final ResourceKey> FLOWER_PALE_GARDEN = FeatureUtils.createKey("flower_pale_garden"); - public static final ResourceKey> FOREST_FLOWERS = FeatureUtils.createKey("forest_flowers"); -+ public static final ResourceKey> PALE_FOREST_FLOWERS = FeatureUtils.createKey("pale_forest_flowers"); - public static final ResourceKey> DARK_FOREST_VEGETATION = FeatureUtils.createKey("dark_forest_vegetation"); - public static final ResourceKey> PALE_GARDEN_VEGETATION = FeatureUtils.createKey("pale_garden_vegetation"); - public static final ResourceKey> PALE_MOSS_VEGETATION = FeatureUtils.createKey("pale_moss_vegetation"); -+ public static final ResourceKey> PALE_MOSS_PATCH = FeatureUtils.createKey("pale_moss_patch"); - public static final ResourceKey> PALE_MOSS_PATCH_BONEMEAL = FeatureUtils.createKey("pale_moss_patch_bonemeal"); - public static final ResourceKey> TREES_FLOWER_FOREST = FeatureUtils.createKey("trees_flower_forest"); - public static final ResourceKey> MEADOW_TREES = FeatureUtils.createKey("meadow_trees"); -@@ -435,6 +438,17 @@ public class VegetationFeatures { - 96, 6, 2, PlacementUtils.onlyWhenEmpty(Feature.SIMPLE_BLOCK, new SimpleBlockConfiguration(new WeightedStateProvider(builder))) - ) - ); -+ FeatureUtils.register( -+ context, -+ FLOWER_PALE_GARDEN, -+ Feature.FLOWER, -+ new RandomPatchConfiguration( -+ 1, -+ 0, -+ 0, -+ PlacementUtils.onlyWhenEmpty(Feature.SIMPLE_BLOCK, new SimpleBlockConfiguration(BlockStateProvider.simple(Blocks.CLOSED_EYEBLOSSOM), true)) -+ ) -+ ); - FeatureUtils.register( - context, - FOREST_FLOWERS, -@@ -462,6 +476,12 @@ public class VegetationFeatures { - ) - ) - ); -+ FeatureUtils.register( -+ context, -+ PALE_FOREST_FLOWERS, -+ Feature.RANDOM_PATCH, -+ FeatureUtils.simplePatchConfiguration(Feature.SIMPLE_BLOCK, new SimpleBlockConfiguration(BlockStateProvider.simple(Blocks.CLOSED_EYEBLOSSOM), true)) -+ ); - FeatureUtils.register( - context, - DARK_FOREST_VEGETATION, -@@ -481,7 +501,7 @@ public class VegetationFeatures { - context, - PALE_GARDEN_VEGETATION, - Feature.RANDOM_SELECTOR, -- new RandomFeatureConfiguration(List.of(new WeightedPlacedFeature(orThrow7, 0.2F), new WeightedPlacedFeature(orThrow6, 0.8F)), orThrow6) -+ new RandomFeatureConfiguration(List.of(new WeightedPlacedFeature(orThrow7, 0.1F), new WeightedPlacedFeature(orThrow6, 0.9F)), orThrow6) - ); - FeatureUtils.register( - context, -@@ -491,11 +511,28 @@ public class VegetationFeatures { - new WeightedStateProvider( - SimpleWeightedRandomList.builder() - .add(Blocks.PALE_MOSS_CARPET.defaultBlockState(), 25) -- .add(Blocks.SHORT_GRASS.defaultBlockState(), 50) -+ .add(Blocks.SHORT_GRASS.defaultBlockState(), 25) - .add(Blocks.TALL_GRASS.defaultBlockState(), 10) - ) - ) - ); -+ FeatureUtils.register( -+ context, -+ PALE_MOSS_PATCH, -+ Feature.VEGETATION_PATCH, -+ new VegetationPatchConfiguration( -+ BlockTags.MOSS_REPLACEABLE, -+ BlockStateProvider.simple(Blocks.PALE_MOSS_BLOCK), -+ PlacementUtils.inlinePlaced(holderGetter.getOrThrow(PALE_MOSS_VEGETATION)), -+ CaveSurface.FLOOR, -+ ConstantInt.of(1), -+ 0.0F, -+ 5, -+ 0.3F, -+ UniformInt.of(2, 4), -+ 0.75F -+ ) -+ ); - FeatureUtils.register( - context, - PALE_MOSS_PATCH_BONEMEAL, -diff --git a/net/minecraft/data/worldgen/placement/PlacementUtils.java b/net/minecraft/data/worldgen/placement/PlacementUtils.java -index 0ba01d9..21fbc10 100644 ---- a/net/minecraft/data/worldgen/placement/PlacementUtils.java -+++ b/net/minecraft/data/worldgen/placement/PlacementUtils.java -@@ -28,6 +28,7 @@ import net.minecraft.world.level.levelgen.placement.PlacementModifier; - - public class PlacementUtils { - public static final PlacementModifier HEIGHTMAP = HeightmapPlacement.onHeightmap(Heightmap.Types.MOTION_BLOCKING); -+ public static final PlacementModifier HEIGHTMAP_NO_LEAVES = HeightmapPlacement.onHeightmap(Heightmap.Types.MOTION_BLOCKING_NO_LEAVES); - public static final PlacementModifier HEIGHTMAP_TOP_SOLID = HeightmapPlacement.onHeightmap(Heightmap.Types.OCEAN_FLOOR_WG); - public static final PlacementModifier HEIGHTMAP_WORLD_SURFACE = HeightmapPlacement.onHeightmap(Heightmap.Types.WORLD_SURFACE_WG); - public static final PlacementModifier HEIGHTMAP_OCEAN_FLOOR = HeightmapPlacement.onHeightmap(Heightmap.Types.OCEAN_FLOOR); -diff --git a/net/minecraft/data/worldgen/placement/VegetationPlacements.java b/net/minecraft/data/worldgen/placement/VegetationPlacements.java -index d91a44d..edf69ba 100644 ---- a/net/minecraft/data/worldgen/placement/VegetationPlacements.java -+++ b/net/minecraft/data/worldgen/placement/VegetationPlacements.java -@@ -80,11 +80,14 @@ public class VegetationPlacements { - public static final ResourceKey FLOWER_PLAINS = PlacementUtils.createKey("flower_plains"); - public static final ResourceKey FLOWER_MEADOW = PlacementUtils.createKey("flower_meadow"); - public static final ResourceKey FLOWER_CHERRY = PlacementUtils.createKey("flower_cherry"); -+ public static final ResourceKey FLOWER_PALE_GARDEN = PlacementUtils.createKey("flower_pale_garden"); - public static final ResourceKey TREES_PLAINS = PlacementUtils.createKey("trees_plains"); - public static final ResourceKey DARK_FOREST_VEGETATION = PlacementUtils.createKey("dark_forest_vegetation"); - public static final ResourceKey PALE_GARDEN_VEGETATION = PlacementUtils.createKey("pale_garden_vegetation"); - public static final ResourceKey FLOWER_FOREST_FLOWERS = PlacementUtils.createKey("flower_forest_flowers"); - public static final ResourceKey FOREST_FLOWERS = PlacementUtils.createKey("forest_flowers"); -+ public static final ResourceKey PALE_GARDEN_FLOWERS = PlacementUtils.createKey("pale_garden_flowers"); -+ public static final ResourceKey PALE_MOSS_PATCH = PlacementUtils.createKey("pale_moss_patch"); - public static final ResourceKey TREES_FLOWER_FOREST = PlacementUtils.createKey("trees_flower_forest"); - public static final ResourceKey TREES_MEADOW = PlacementUtils.createKey("trees_meadow"); - public static final ResourceKey TREES_CHERRY = PlacementUtils.createKey("trees_cherry"); -@@ -176,31 +179,34 @@ public class VegetationPlacements { - Holder> orThrow22 = holderGetter.getOrThrow(VegetationFeatures.FLOWER_PLAIN); - Holder> orThrow23 = holderGetter.getOrThrow(VegetationFeatures.FLOWER_MEADOW); - Holder> orThrow24 = holderGetter.getOrThrow(VegetationFeatures.FLOWER_CHERRY); -- Holder> orThrow25 = holderGetter.getOrThrow(VegetationFeatures.TREES_PLAINS); -- Holder> orThrow26 = holderGetter.getOrThrow(VegetationFeatures.DARK_FOREST_VEGETATION); -- Holder> orThrow27 = holderGetter.getOrThrow(VegetationFeatures.PALE_GARDEN_VEGETATION); -- Holder> orThrow28 = holderGetter.getOrThrow(VegetationFeatures.FOREST_FLOWERS); -- Holder> orThrow29 = holderGetter.getOrThrow(VegetationFeatures.TREES_FLOWER_FOREST); -- Holder> orThrow30 = holderGetter.getOrThrow(VegetationFeatures.MEADOW_TREES); -- Holder> orThrow31 = holderGetter.getOrThrow(VegetationFeatures.TREES_TAIGA); -- Holder> orThrow32 = holderGetter.getOrThrow(VegetationFeatures.TREES_GROVE); -- Holder> orThrow33 = holderGetter.getOrThrow(TreeFeatures.OAK); -- Holder> orThrow34 = holderGetter.getOrThrow(TreeFeatures.SPRUCE); -- Holder> orThrow35 = holderGetter.getOrThrow(TreeFeatures.CHERRY_BEES_005); -- Holder> orThrow36 = holderGetter.getOrThrow(TreeFeatures.SWAMP_OAK); -- Holder> orThrow37 = holderGetter.getOrThrow(VegetationFeatures.TREES_SAVANNA); -- Holder> orThrow38 = holderGetter.getOrThrow(VegetationFeatures.BIRCH_TALL); -- Holder> orThrow39 = holderGetter.getOrThrow(TreeFeatures.BIRCH_BEES_0002); -- Holder> orThrow40 = holderGetter.getOrThrow(VegetationFeatures.TREES_WINDSWEPT_HILLS); -- Holder> orThrow41 = holderGetter.getOrThrow(VegetationFeatures.TREES_WATER); -- Holder> orThrow42 = holderGetter.getOrThrow(VegetationFeatures.TREES_BIRCH_AND_OAK); -- Holder> orThrow43 = holderGetter.getOrThrow(VegetationFeatures.TREES_SPARSE_JUNGLE); -- Holder> orThrow44 = holderGetter.getOrThrow(VegetationFeatures.TREES_OLD_GROWTH_SPRUCE_TAIGA); -- Holder> orThrow45 = holderGetter.getOrThrow(VegetationFeatures.TREES_OLD_GROWTH_PINE_TAIGA); -- Holder> orThrow46 = holderGetter.getOrThrow(VegetationFeatures.TREES_JUNGLE); -- Holder> orThrow47 = holderGetter.getOrThrow(VegetationFeatures.BAMBOO_VEGETATION); -- Holder> orThrow48 = holderGetter.getOrThrow(VegetationFeatures.MUSHROOM_ISLAND_VEGETATION); -- Holder> orThrow49 = holderGetter.getOrThrow(VegetationFeatures.MANGROVE_VEGETATION); -+ Holder> orThrow25 = holderGetter.getOrThrow(VegetationFeatures.FLOWER_PALE_GARDEN); -+ Holder> orThrow26 = holderGetter.getOrThrow(VegetationFeatures.TREES_PLAINS); -+ Holder> orThrow27 = holderGetter.getOrThrow(VegetationFeatures.DARK_FOREST_VEGETATION); -+ Holder> orThrow28 = holderGetter.getOrThrow(VegetationFeatures.PALE_GARDEN_VEGETATION); -+ Holder> orThrow29 = holderGetter.getOrThrow(VegetationFeatures.FOREST_FLOWERS); -+ Holder> orThrow30 = holderGetter.getOrThrow(VegetationFeatures.PALE_FOREST_FLOWERS); -+ Holder> orThrow31 = holderGetter.getOrThrow(VegetationFeatures.PALE_MOSS_PATCH); -+ Holder> orThrow32 = holderGetter.getOrThrow(VegetationFeatures.TREES_FLOWER_FOREST); -+ Holder> orThrow33 = holderGetter.getOrThrow(VegetationFeatures.MEADOW_TREES); -+ Holder> orThrow34 = holderGetter.getOrThrow(VegetationFeatures.TREES_TAIGA); -+ Holder> orThrow35 = holderGetter.getOrThrow(VegetationFeatures.TREES_GROVE); -+ Holder> orThrow36 = holderGetter.getOrThrow(TreeFeatures.OAK); -+ Holder> orThrow37 = holderGetter.getOrThrow(TreeFeatures.SPRUCE); -+ Holder> orThrow38 = holderGetter.getOrThrow(TreeFeatures.CHERRY_BEES_005); -+ Holder> orThrow39 = holderGetter.getOrThrow(TreeFeatures.SWAMP_OAK); -+ Holder> orThrow40 = holderGetter.getOrThrow(VegetationFeatures.TREES_SAVANNA); -+ Holder> orThrow41 = holderGetter.getOrThrow(VegetationFeatures.BIRCH_TALL); -+ Holder> orThrow42 = holderGetter.getOrThrow(TreeFeatures.BIRCH_BEES_0002); -+ Holder> orThrow43 = holderGetter.getOrThrow(VegetationFeatures.TREES_WINDSWEPT_HILLS); -+ Holder> orThrow44 = holderGetter.getOrThrow(VegetationFeatures.TREES_WATER); -+ Holder> orThrow45 = holderGetter.getOrThrow(VegetationFeatures.TREES_BIRCH_AND_OAK); -+ Holder> orThrow46 = holderGetter.getOrThrow(VegetationFeatures.TREES_SPARSE_JUNGLE); -+ Holder> orThrow47 = holderGetter.getOrThrow(VegetationFeatures.TREES_OLD_GROWTH_SPRUCE_TAIGA); -+ Holder> orThrow48 = holderGetter.getOrThrow(VegetationFeatures.TREES_OLD_GROWTH_PINE_TAIGA); -+ Holder> orThrow49 = holderGetter.getOrThrow(VegetationFeatures.TREES_JUNGLE); -+ Holder> orThrow50 = holderGetter.getOrThrow(VegetationFeatures.BAMBOO_VEGETATION); -+ Holder> orThrow51 = holderGetter.getOrThrow(VegetationFeatures.MUSHROOM_ISLAND_VEGETATION); -+ Holder> orThrow52 = holderGetter.getOrThrow(VegetationFeatures.MANGROVE_VEGETATION); - PlacementUtils.register( - context, BAMBOO_LIGHT, orThrow, RarityFilter.onAverageOnceEvery(4), InSquarePlacement.spread(), PlacementUtils.HEIGHTMAP, BiomeFilter.biome() - ); -@@ -402,11 +408,20 @@ public class VegetationPlacements { - BiomeFilter.biome() - ); - PlacementUtils.register(context, FLOWER_MEADOW, orThrow23, InSquarePlacement.spread(), PlacementUtils.HEIGHTMAP, BiomeFilter.biome()); -+ PlacementUtils.register( -+ context, -+ FLOWER_PALE_GARDEN, -+ orThrow25, -+ RarityFilter.onAverageOnceEvery(32), -+ InSquarePlacement.spread(), -+ PlacementUtils.HEIGHTMAP, -+ BiomeFilter.biome() -+ ); - PlacementModifier placementModifier = SurfaceWaterDepthFilter.forMaxDepth(0); - PlacementUtils.register( - context, - TREES_PLAINS, -- orThrow25, -+ orThrow26, - PlacementUtils.countExtra(0, 0.05F, 1), - InSquarePlacement.spread(), - placementModifier, -@@ -417,7 +432,7 @@ public class VegetationPlacements { - PlacementUtils.register( - context, - DARK_FOREST_VEGETATION, -- orThrow26, -+ orThrow27, - CountPlacement.of(16), - InSquarePlacement.spread(), - placementModifier, -@@ -427,7 +442,7 @@ public class VegetationPlacements { - PlacementUtils.register( - context, - PALE_GARDEN_VEGETATION, -- orThrow27, -+ orThrow28, - CountPlacement.of(16), - InSquarePlacement.spread(), - placementModifier, -@@ -437,7 +452,7 @@ public class VegetationPlacements { - PlacementUtils.register( - context, - FLOWER_FOREST_FLOWERS, -- orThrow28, -+ orThrow29, - RarityFilter.onAverageOnceEvery(7), - InSquarePlacement.spread(), - PlacementUtils.HEIGHTMAP, -@@ -447,24 +462,36 @@ public class VegetationPlacements { - PlacementUtils.register( - context, - FOREST_FLOWERS, -- orThrow28, -+ orThrow29, - RarityFilter.onAverageOnceEvery(7), - InSquarePlacement.spread(), - PlacementUtils.HEIGHTMAP, - CountPlacement.of(ClampedInt.of(UniformInt.of(-3, 1), 0, 1)), - BiomeFilter.biome() - ); -- PlacementUtils.register(context, TREES_FLOWER_FOREST, orThrow29, treePlacement(PlacementUtils.countExtra(6, 0.1F, 1))); -- PlacementUtils.register(context, TREES_MEADOW, orThrow30, treePlacement(RarityFilter.onAverageOnceEvery(100))); -- PlacementUtils.register(context, TREES_CHERRY, orThrow35, treePlacement(PlacementUtils.countExtra(10, 0.1F, 1), Blocks.CHERRY_SAPLING)); -- PlacementUtils.register(context, TREES_TAIGA, orThrow31, treePlacement(PlacementUtils.countExtra(10, 0.1F, 1))); -- PlacementUtils.register(context, TREES_GROVE, orThrow32, treePlacement(PlacementUtils.countExtra(10, 0.1F, 1))); -- PlacementUtils.register(context, TREES_BADLANDS, orThrow33, treePlacement(PlacementUtils.countExtra(5, 0.1F, 1), Blocks.OAK_SAPLING)); -- PlacementUtils.register(context, TREES_SNOWY, orThrow34, treePlacement(PlacementUtils.countExtra(0, 0.1F, 1), Blocks.SPRUCE_SAPLING)); -+ PlacementUtils.register( -+ context, -+ PALE_GARDEN_FLOWERS, -+ orThrow30, -+ RarityFilter.onAverageOnceEvery(8), -+ InSquarePlacement.spread(), -+ PlacementUtils.HEIGHTMAP_NO_LEAVES, -+ BiomeFilter.biome() -+ ); -+ PlacementUtils.register( -+ context, PALE_MOSS_PATCH, orThrow31, CountPlacement.of(1), InSquarePlacement.spread(), PlacementUtils.HEIGHTMAP_NO_LEAVES, BiomeFilter.biome() -+ ); -+ PlacementUtils.register(context, TREES_FLOWER_FOREST, orThrow32, treePlacement(PlacementUtils.countExtra(6, 0.1F, 1))); -+ PlacementUtils.register(context, TREES_MEADOW, orThrow33, treePlacement(RarityFilter.onAverageOnceEvery(100))); -+ PlacementUtils.register(context, TREES_CHERRY, orThrow38, treePlacement(PlacementUtils.countExtra(10, 0.1F, 1), Blocks.CHERRY_SAPLING)); -+ PlacementUtils.register(context, TREES_TAIGA, orThrow34, treePlacement(PlacementUtils.countExtra(10, 0.1F, 1))); -+ PlacementUtils.register(context, TREES_GROVE, orThrow35, treePlacement(PlacementUtils.countExtra(10, 0.1F, 1))); -+ PlacementUtils.register(context, TREES_BADLANDS, orThrow36, treePlacement(PlacementUtils.countExtra(5, 0.1F, 1), Blocks.OAK_SAPLING)); -+ PlacementUtils.register(context, TREES_SNOWY, orThrow37, treePlacement(PlacementUtils.countExtra(0, 0.1F, 1), Blocks.SPRUCE_SAPLING)); - PlacementUtils.register( - context, - TREES_SWAMP, -- orThrow36, -+ orThrow39, - PlacementUtils.countExtra(2, 0.1F, 1), - InSquarePlacement.spread(), - SurfaceWaterDepthFilter.forMaxDepth(2), -@@ -472,24 +499,24 @@ public class VegetationPlacements { - BiomeFilter.biome(), - BlockPredicateFilter.forPredicate(BlockPredicate.wouldSurvive(Blocks.OAK_SAPLING.defaultBlockState(), BlockPos.ZERO)) - ); -- PlacementUtils.register(context, TREES_WINDSWEPT_SAVANNA, orThrow37, treePlacement(PlacementUtils.countExtra(2, 0.1F, 1))); -- PlacementUtils.register(context, TREES_SAVANNA, orThrow37, treePlacement(PlacementUtils.countExtra(1, 0.1F, 1))); -- PlacementUtils.register(context, BIRCH_TALL, orThrow38, treePlacement(PlacementUtils.countExtra(10, 0.1F, 1))); -- PlacementUtils.register(context, TREES_BIRCH, orThrow39, treePlacement(PlacementUtils.countExtra(10, 0.1F, 1), Blocks.BIRCH_SAPLING)); -- PlacementUtils.register(context, TREES_WINDSWEPT_FOREST, orThrow40, treePlacement(PlacementUtils.countExtra(3, 0.1F, 1))); -- PlacementUtils.register(context, TREES_WINDSWEPT_HILLS, orThrow40, treePlacement(PlacementUtils.countExtra(0, 0.1F, 1))); -- PlacementUtils.register(context, TREES_WATER, orThrow41, treePlacement(PlacementUtils.countExtra(0, 0.1F, 1))); -- PlacementUtils.register(context, TREES_BIRCH_AND_OAK, orThrow42, treePlacement(PlacementUtils.countExtra(10, 0.1F, 1))); -- PlacementUtils.register(context, TREES_SPARSE_JUNGLE, orThrow43, treePlacement(PlacementUtils.countExtra(2, 0.1F, 1))); -- PlacementUtils.register(context, TREES_OLD_GROWTH_SPRUCE_TAIGA, orThrow44, treePlacement(PlacementUtils.countExtra(10, 0.1F, 1))); -- PlacementUtils.register(context, TREES_OLD_GROWTH_PINE_TAIGA, orThrow45, treePlacement(PlacementUtils.countExtra(10, 0.1F, 1))); -- PlacementUtils.register(context, TREES_JUNGLE, orThrow46, treePlacement(PlacementUtils.countExtra(50, 0.1F, 1))); -- PlacementUtils.register(context, BAMBOO_VEGETATION, orThrow47, treePlacement(PlacementUtils.countExtra(30, 0.1F, 1))); -- PlacementUtils.register(context, MUSHROOM_ISLAND_VEGETATION, orThrow48, InSquarePlacement.spread(), PlacementUtils.HEIGHTMAP, BiomeFilter.biome()); -+ PlacementUtils.register(context, TREES_WINDSWEPT_SAVANNA, orThrow40, treePlacement(PlacementUtils.countExtra(2, 0.1F, 1))); -+ PlacementUtils.register(context, TREES_SAVANNA, orThrow40, treePlacement(PlacementUtils.countExtra(1, 0.1F, 1))); -+ PlacementUtils.register(context, BIRCH_TALL, orThrow41, treePlacement(PlacementUtils.countExtra(10, 0.1F, 1))); -+ PlacementUtils.register(context, TREES_BIRCH, orThrow42, treePlacement(PlacementUtils.countExtra(10, 0.1F, 1), Blocks.BIRCH_SAPLING)); -+ PlacementUtils.register(context, TREES_WINDSWEPT_FOREST, orThrow43, treePlacement(PlacementUtils.countExtra(3, 0.1F, 1))); -+ PlacementUtils.register(context, TREES_WINDSWEPT_HILLS, orThrow43, treePlacement(PlacementUtils.countExtra(0, 0.1F, 1))); -+ PlacementUtils.register(context, TREES_WATER, orThrow44, treePlacement(PlacementUtils.countExtra(0, 0.1F, 1))); -+ PlacementUtils.register(context, TREES_BIRCH_AND_OAK, orThrow45, treePlacement(PlacementUtils.countExtra(10, 0.1F, 1))); -+ PlacementUtils.register(context, TREES_SPARSE_JUNGLE, orThrow46, treePlacement(PlacementUtils.countExtra(2, 0.1F, 1))); -+ PlacementUtils.register(context, TREES_OLD_GROWTH_SPRUCE_TAIGA, orThrow47, treePlacement(PlacementUtils.countExtra(10, 0.1F, 1))); -+ PlacementUtils.register(context, TREES_OLD_GROWTH_PINE_TAIGA, orThrow48, treePlacement(PlacementUtils.countExtra(10, 0.1F, 1))); -+ PlacementUtils.register(context, TREES_JUNGLE, orThrow49, treePlacement(PlacementUtils.countExtra(50, 0.1F, 1))); -+ PlacementUtils.register(context, BAMBOO_VEGETATION, orThrow50, treePlacement(PlacementUtils.countExtra(30, 0.1F, 1))); -+ PlacementUtils.register(context, MUSHROOM_ISLAND_VEGETATION, orThrow51, InSquarePlacement.spread(), PlacementUtils.HEIGHTMAP, BiomeFilter.biome()); - PlacementUtils.register( - context, - TREES_MANGROVE, -- orThrow49, -+ orThrow52, - CountPlacement.of(25), - InSquarePlacement.spread(), - SurfaceWaterDepthFilter.forMaxDepth(5), -diff --git a/net/minecraft/network/chat/Style.java b/net/minecraft/network/chat/Style.java -index 9fdef05..415884a 100644 ---- a/net/minecraft/network/chat/Style.java -+++ b/net/minecraft/network/chat/Style.java -@@ -11,13 +11,16 @@ import net.minecraft.network.RegistryFriendlyByteBuf; - import net.minecraft.network.codec.ByteBufCodecs; - import net.minecraft.network.codec.StreamCodec; - import net.minecraft.resources.ResourceLocation; -+import net.minecraft.util.ExtraCodecs; - - public class Style { -- public static final Style EMPTY = new Style(null, null, null, null, null, null, null, null, null, null); -+ public static final Style EMPTY = new Style(null, null, null, null, null, null, null, null, null, null, null); - public static final ResourceLocation DEFAULT_FONT = ResourceLocation.withDefaultNamespace("default"); - @Nullable - final TextColor color; - @Nullable -+ final Integer shadowColor; -+ @Nullable - final Boolean bold; - @Nullable - final Boolean italic; -@@ -37,54 +40,58 @@ public class Style { - final ResourceLocation font; - - private static Style create( -- Optional color, -- Optional bold, -- Optional italic, -- Optional underlined, -- Optional strikethrough, -- Optional obfuscated, -- Optional clickEvent, -- Optional hoverEvent, -- Optional insertion, -- Optional font -+ Optional optional, -+ Optional optional1, -+ Optional optional2, -+ Optional optional3, -+ Optional optional4, -+ Optional optional5, -+ Optional optional6, -+ Optional optional7, -+ Optional optional8, -+ Optional optional9, -+ Optional optional10 - ) { - Style style = new Style( -- color.orElse(null), -- bold.orElse(null), -- italic.orElse(null), -- underlined.orElse(null), -- strikethrough.orElse(null), -- obfuscated.orElse(null), -- clickEvent.orElse(null), -- hoverEvent.orElse(null), -- insertion.orElse(null), -- font.orElse(null) -+ optional.orElse(null), -+ optional1.orElse(null), -+ optional2.orElse(null), -+ optional3.orElse(null), -+ optional4.orElse(null), -+ optional5.orElse(null), -+ optional6.orElse(null), -+ optional7.orElse(null), -+ optional8.orElse(null), -+ optional9.orElse(null), -+ optional10.orElse(null) - ); - return style.equals(EMPTY) ? EMPTY : style; - } - - private Style( -- @Nullable TextColor color, -- @Nullable Boolean bold, -- @Nullable Boolean italic, -- @Nullable Boolean underlined, -- @Nullable Boolean strikethrough, -- @Nullable Boolean obfuscated, -+ @Nullable TextColor textColor, -+ @Nullable Integer integer, -+ @Nullable Boolean _boolean, -+ @Nullable Boolean _boolean1, -+ @Nullable Boolean _boolean2, -+ @Nullable Boolean _boolean3, -+ @Nullable Boolean _boolean4, - @Nullable ClickEvent clickEvent, - @Nullable HoverEvent hoverEvent, -- @Nullable String insertion, -- @Nullable ResourceLocation font -+ @Nullable String string, -+ @Nullable ResourceLocation resourceLocation - ) { -- this.color = color; -- this.bold = bold; -- this.italic = italic; -- this.underlined = underlined; -- this.strikethrough = strikethrough; -- this.obfuscated = obfuscated; -+ this.color = textColor; -+ this.shadowColor = integer; -+ this.bold = _boolean; -+ this.italic = _boolean1; -+ this.underlined = _boolean2; -+ this.strikethrough = _boolean3; -+ this.obfuscated = _boolean4; - this.clickEvent = clickEvent; - this.hoverEvent = hoverEvent; -- this.insertion = insertion; -- this.font = font; -+ this.insertion = string; -+ this.font = resourceLocation; - } - - @Nullable -@@ -92,6 +99,11 @@ public class Style { - return this.color; - } - -+ @Nullable -+ public Integer getShadowColor() { -+ return this.shadowColor; -+ } -+ - public boolean isBold() { - return this.bold == Boolean.TRUE; - } -@@ -145,6 +157,7 @@ public class Style { - : checkEmptyAfterChange( - new Style( - color, -+ this.shadowColor, - this.bold, - this.italic, - this.underlined, -@@ -168,12 +181,33 @@ public class Style { - return this.withColor(TextColor.fromRgb(rgb)); - } - -+ public Style withShadowColor(int i) { -+ return checkEmptyAfterChange( -+ new Style( -+ this.color, -+ i, -+ this.bold, -+ this.italic, -+ this.underlined, -+ this.strikethrough, -+ this.obfuscated, -+ this.clickEvent, -+ this.hoverEvent, -+ this.insertion, -+ this.font -+ ), -+ this.shadowColor, -+ i -+ ); -+ } -+ - public Style withBold(@Nullable Boolean bold) { - return Objects.equals(this.bold, bold) - ? this - : checkEmptyAfterChange( - new Style( - this.color, -+ this.shadowColor, - bold, - this.italic, - this.underlined, -@@ -195,6 +229,7 @@ public class Style { - : checkEmptyAfterChange( - new Style( - this.color, -+ this.shadowColor, - this.bold, - italic, - this.underlined, -@@ -216,6 +251,7 @@ public class Style { - : checkEmptyAfterChange( - new Style( - this.color, -+ this.shadowColor, - this.bold, - this.italic, - underlined, -@@ -237,6 +273,7 @@ public class Style { - : checkEmptyAfterChange( - new Style( - this.color, -+ this.shadowColor, - this.bold, - this.italic, - this.underlined, -@@ -258,6 +295,7 @@ public class Style { - : checkEmptyAfterChange( - new Style( - this.color, -+ this.shadowColor, - this.bold, - this.italic, - this.underlined, -@@ -279,6 +317,7 @@ public class Style { - : checkEmptyAfterChange( - new Style( - this.color, -+ this.shadowColor, - this.bold, - this.italic, - this.underlined, -@@ -300,6 +339,7 @@ public class Style { - : checkEmptyAfterChange( - new Style( - this.color, -+ this.shadowColor, - this.bold, - this.italic, - this.underlined, -@@ -321,6 +361,7 @@ public class Style { - : checkEmptyAfterChange( - new Style( - this.color, -+ this.shadowColor, - this.bold, - this.italic, - this.underlined, -@@ -342,6 +383,7 @@ public class Style { - : checkEmptyAfterChange( - new Style( - this.color, -+ this.shadowColor, - this.bold, - this.italic, - this.underlined, -@@ -386,7 +428,9 @@ public class Style { - textColor = TextColor.fromLegacyFormat(formatting); - } - -- return new Style(textColor, _boolean, _boolean1, _boolean3, _boolean2, _boolean4, this.clickEvent, this.hoverEvent, this.insertion, this.font); -+ return new Style( -+ textColor, this.shadowColor, _boolean, _boolean1, _boolean3, _boolean2, _boolean4, this.clickEvent, this.hoverEvent, this.insertion, this.font -+ ); - } - - public Style applyLegacyFormat(ChatFormatting formatting) { -@@ -423,7 +467,9 @@ public class Style { - textColor = TextColor.fromLegacyFormat(formatting); - } - -- return new Style(textColor, _boolean, _boolean1, _boolean3, _boolean2, _boolean4, this.clickEvent, this.hoverEvent, this.insertion, this.font); -+ return new Style( -+ textColor, this.shadowColor, _boolean, _boolean1, _boolean3, _boolean2, _boolean4, this.clickEvent, this.hoverEvent, this.insertion, this.font -+ ); - } - - public Style applyFormats(ChatFormatting... formats) { -@@ -458,7 +504,9 @@ public class Style { - } - } - -- return new Style(textColor, _boolean, _boolean1, _boolean3, _boolean2, _boolean4, this.clickEvent, this.hoverEvent, this.insertion, this.font); -+ return new Style( -+ textColor, this.shadowColor, _boolean, _boolean1, _boolean3, _boolean2, _boolean4, this.clickEvent, this.hoverEvent, this.insertion, this.font -+ ); - } - - public Style applyTo(Style style) { -@@ -469,6 +517,7 @@ public class Style { - ? this - : new Style( - this.color != null ? this.color : style.color, -+ this.shadowColor != null ? this.shadowColor : style.shadowColor, - this.bold != null ? this.bold : style.bold, - this.italic != null ? this.italic : style.italic, - this.underlined != null ? this.underlined : style.underlined, -@@ -520,6 +569,7 @@ public class Style { - - Collector collector = new Collector(); - collector.addValueString("color", this.color); -+ collector.addValueString("shadowColor", this.shadowColor); - collector.addFlagString("bold", this.bold); - collector.addFlagString("italic", this.italic); - collector.addFlagString("underlined", this.underlined); -@@ -539,6 +589,7 @@ public class Style { - || other instanceof Style style - && this.bold == style.bold - && Objects.equals(this.getColor(), style.getColor()) -+ && Objects.equals(this.getShadowColor(), style.getShadowColor()) - && this.italic == style.italic - && this.obfuscated == style.obfuscated - && this.strikethrough == style.strikethrough -@@ -552,7 +603,16 @@ public class Style { - @Override - public int hashCode() { - return Objects.hash( -- this.color, this.bold, this.italic, this.underlined, this.strikethrough, this.obfuscated, this.clickEvent, this.hoverEvent, this.insertion -+ this.color, -+ this.shadowColor, -+ this.bold, -+ this.italic, -+ this.underlined, -+ this.strikethrough, -+ this.obfuscated, -+ this.clickEvent, -+ this.hoverEvent, -+ this.insertion - ); - } - -@@ -560,6 +620,7 @@ public class Style { - public static final MapCodec