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