From ab871001875f285e3b53be93352a8b2dd561f4a7 Mon Sep 17 00:00:00 2001 From: paulevsGitch Date: Wed, 27 Apr 2022 13:07:28 +0300 Subject: [PATCH] Removed most redirects, moved Enchantment Table mixin, cleanup --- gradle.properties | 2 +- src/main/java/ru/bclib/api/PostInitAPI.java | 9 +++- .../ru/bclib/api/biomes/BCLBiomeBuilder.java | 10 ++-- .../java/ru/bclib/api/biomes/BiomeAPI.java | 21 +++++++-- .../bclib/api/features/BCLFeatureBuilder.java | 2 - .../ru/bclib/api/tag/CommonBlockTags.java | 1 - src/main/java/ru/bclib/api/tag/TagAPI.java | 1 - .../java/ru/bclib/blocks/BaseLeavesBlock.java | 1 - .../java/ru/bclib/blocks/BaseOreBlock.java | 5 -- .../java/ru/bclib/blocks/BasePlantBlock.java | 6 --- .../ru/bclib/blocks/BaseTerrainBlock.java | 1 - .../ru/bclib/blocks/SimpleLeavesBlock.java | 1 - .../ru/bclib/blocks/UnderwaterPlantBlock.java | 6 --- .../ru/bclib/blocks/UpDownPlantBlock.java | 4 -- .../ru/bclib/integration/ModIntegration.java | 3 -- .../ru/bclib/interfaces/SurvivesOnTags.java | 1 - .../client/EnchantingTableBlockMixin.java | 27 ----------- .../BiomeGenerationSettingsAccessor.java | 1 - .../mixin/common/BlockStateBaseMixin.java | 22 +++++++++ .../mixin/common/DiggerItemAccessor.java | 6 --- .../mixin/common/DimensionTypeMixin.java | 7 --- .../common/EnchantingTableBlockMixin.java | 25 ++++++++++ .../ru/bclib/mixin/common/ItemStackMixin.java | 22 +++++++++ .../common/NoiseBasedChunkGeneratorMixin.java | 8 +++- .../mixin/common/RecipeManagerMixin.java | 1 - .../bclib/mixin/common/ServerLevelMixin.java | 2 - .../common/StructureFeaturesAccessor.java | 1 - .../common/SurfaceRulesContextAccessor.java | 1 - .../common/shears/BeehiveBlockMixin.java | 20 +++++--- .../shears/DiggingEnchantmentMixin.java | 10 ++-- .../shears/ItemPredicateBuilderMixin.java | 7 ++- .../mixin/common/shears/MushroomCowMixin.java | 16 ++++--- .../common/shears/PumpkinBlockMixin.java | 20 +++++--- .../bclib/mixin/common/shears/SheepMixin.java | 16 ++++--- .../mixin/common/shears/SnowGolemMixin.java | 16 ++++--- .../common/shears/TripWireBlockMixin.java | 17 ++++--- .../java/ru/bclib/recipes/AnvilRecipe.java | 3 -- .../java/ru/bclib/recipes/GridRecipe.java | 1 - .../ru/bclib/recipes/SmithingTableRecipe.java | 1 - .../java/ru/bclib/util/MethodReplace.java | 46 +++++++++++++++++++ .../java/ru/bclib/world/biomes/BCLBiome.java | 4 -- .../world/generator/BCLibEndBiomeSource.java | 3 -- .../generator/BCLibNetherBiomeSource.java | 1 - src/main/resources/bclib.accesswidener | 2 +- src/main/resources/bclib.mixins.client.json | 1 - src/main/resources/bclib.mixins.common.json | 11 +++-- 46 files changed, 239 insertions(+), 153 deletions(-) delete mode 100644 src/main/java/ru/bclib/mixin/client/EnchantingTableBlockMixin.java create mode 100644 src/main/java/ru/bclib/mixin/common/BlockStateBaseMixin.java create mode 100644 src/main/java/ru/bclib/mixin/common/EnchantingTableBlockMixin.java create mode 100644 src/main/java/ru/bclib/mixin/common/ItemStackMixin.java create mode 100644 src/main/java/ru/bclib/util/MethodReplace.java diff --git a/gradle.properties b/gradle.properties index 4cb5d820..b918de25 100644 --- a/gradle.properties +++ b/gradle.properties @@ -11,7 +11,7 @@ loader_version= 0.13.3 fabric_version = 0.48.0+1.18.2 # Mod Properties -mod_version = 1.4.3 +mod_version = 1.4.4 maven_group = ru.bclib archives_base_name = bclib diff --git a/src/main/java/ru/bclib/api/PostInitAPI.java b/src/main/java/ru/bclib/api/PostInitAPI.java index ea2ceb3b..4e8c4644 100644 --- a/src/main/java/ru/bclib/api/PostInitAPI.java +++ b/src/main/java/ru/bclib/api/PostInitAPI.java @@ -24,7 +24,14 @@ import ru.bclib.config.Configs; import ru.bclib.interfaces.PostInitable; import ru.bclib.interfaces.RenderLayerProvider; import ru.bclib.interfaces.TagProvider; -import ru.bclib.interfaces.tools.*; +import ru.bclib.interfaces.tools.AddMineableAxe; +import ru.bclib.interfaces.tools.AddMineableHammer; +import ru.bclib.interfaces.tools.AddMineableHoe; +import ru.bclib.interfaces.tools.AddMineablePickaxe; +import ru.bclib.interfaces.tools.AddMineableShears; +import ru.bclib.interfaces.tools.AddMineableShovel; +import ru.bclib.interfaces.tools.AddMineableSword; +import ru.bclib.interfaces.tools.PreventMineableAdd; import ru.bclib.registry.BaseBlockEntities; import java.util.List; diff --git a/src/main/java/ru/bclib/api/biomes/BCLBiomeBuilder.java b/src/main/java/ru/bclib/api/biomes/BCLBiomeBuilder.java index 87b18ddc..9076a1d3 100644 --- a/src/main/java/ru/bclib/api/biomes/BCLBiomeBuilder.java +++ b/src/main/java/ru/bclib/api/biomes/BCLBiomeBuilder.java @@ -1,7 +1,6 @@ package ru.bclib.api.biomes; import com.google.common.collect.Lists; -import com.google.common.collect.Maps; import net.fabricmc.fabric.api.biome.v1.BiomeModifications; import net.minecraft.core.Holder; import net.minecraft.core.HolderSet; @@ -15,10 +14,16 @@ import net.minecraft.tags.TagKey; import net.minecraft.util.Mth; import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.Mob; -import net.minecraft.world.level.biome.*; +import net.minecraft.world.level.biome.AmbientAdditionsSettings; +import net.minecraft.world.level.biome.AmbientMoodSettings; +import net.minecraft.world.level.biome.AmbientParticleSettings; +import net.minecraft.world.level.biome.Biome; import net.minecraft.world.level.biome.Biome.BiomeBuilder; import net.minecraft.world.level.biome.Biome.BiomeCategory; import net.minecraft.world.level.biome.Biome.Precipitation; +import net.minecraft.world.level.biome.BiomeGenerationSettings; +import net.minecraft.world.level.biome.BiomeSpecialEffects; +import net.minecraft.world.level.biome.MobSpawnSettings; import net.minecraft.world.level.biome.MobSpawnSettings.SpawnerData; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; @@ -45,7 +50,6 @@ import java.util.List; import java.util.Map; import java.util.function.BiFunction; import java.util.function.Consumer; -import java.util.stream.Collectors; public class BCLBiomeBuilder { @FunctionalInterface diff --git a/src/main/java/ru/bclib/api/biomes/BiomeAPI.java b/src/main/java/ru/bclib/api/biomes/BiomeAPI.java index 24787fde..0a8e584c 100644 --- a/src/main/java/ru/bclib/api/biomes/BiomeAPI.java +++ b/src/main/java/ru/bclib/api/biomes/BiomeAPI.java @@ -25,7 +25,11 @@ import net.minecraft.world.entity.MobCategory; import net.minecraft.world.level.Level; import net.minecraft.world.level.LevelAccessor; import net.minecraft.world.level.WorldGenLevel; -import net.minecraft.world.level.biome.*; +import net.minecraft.world.level.biome.Biome; +import net.minecraft.world.level.biome.BiomeGenerationSettings; +import net.minecraft.world.level.biome.BiomeSource; +import net.minecraft.world.level.biome.Biomes; +import net.minecraft.world.level.biome.Climate; import net.minecraft.world.level.biome.MobSpawnSettings.SpawnerData; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.state.BlockState; @@ -43,12 +47,15 @@ import net.minecraft.world.level.levelgen.feature.ConfiguredFeature; import net.minecraft.world.level.levelgen.feature.ConfiguredStructureFeature; import net.minecraft.world.level.levelgen.feature.Feature; import net.minecraft.world.level.levelgen.placement.PlacedFeature; -import net.minecraft.world.level.levelgen.structure.StructureSet; import org.apache.commons.lang3.mutable.MutableInt; import org.jetbrains.annotations.Nullable; import ru.bclib.BCLib; import ru.bclib.entity.BCLEntityWrapper; -import ru.bclib.interfaces.*; +import ru.bclib.interfaces.BiomeSourceAccessor; +import ru.bclib.interfaces.NoiseGeneratorSettingsProvider; +import ru.bclib.interfaces.SurfaceMaterialProvider; +import ru.bclib.interfaces.SurfaceProvider; +import ru.bclib.interfaces.SurfaceRuleProvider; import ru.bclib.mixin.common.BiomeGenerationSettingsAccessor; import ru.bclib.mixin.common.MobSpawnSettingsAccessor; import ru.bclib.util.CollectionsUtil; @@ -59,8 +66,14 @@ import ru.bclib.world.biomes.VanillaBiomeSettings; import ru.bclib.world.features.BCLFeature; import ru.bclib.world.generator.BiomePicker; -import java.util.*; +import java.util.HashSet; +import java.util.List; +import java.util.Map; import java.util.Map.Entry; +import java.util.Objects; +import java.util.Optional; +import java.util.Random; +import java.util.Set; import java.util.function.BiConsumer; import java.util.function.Supplier; import java.util.stream.Collectors; diff --git a/src/main/java/ru/bclib/api/features/BCLFeatureBuilder.java b/src/main/java/ru/bclib/api/features/BCLFeatureBuilder.java index d0b39889..ab710c0b 100644 --- a/src/main/java/ru/bclib/api/features/BCLFeatureBuilder.java +++ b/src/main/java/ru/bclib/api/features/BCLFeatureBuilder.java @@ -4,14 +4,12 @@ import net.minecraft.data.worldgen.placement.PlacementUtils; import net.minecraft.resources.ResourceLocation; import net.minecraft.util.valueproviders.UniformInt; import net.minecraft.world.level.levelgen.GenerationStep.Decoration; -import net.minecraft.world.level.levelgen.feature.ConfiguredFeature; import net.minecraft.world.level.levelgen.feature.Feature; import net.minecraft.world.level.levelgen.feature.configurations.FeatureConfiguration; import net.minecraft.world.level.levelgen.placement.BiomeFilter; import net.minecraft.world.level.levelgen.placement.CountOnEveryLayerPlacement; import net.minecraft.world.level.levelgen.placement.CountPlacement; import net.minecraft.world.level.levelgen.placement.InSquarePlacement; -import net.minecraft.world.level.levelgen.placement.PlacedFeature; import net.minecraft.world.level.levelgen.placement.PlacementModifier; import net.minecraft.world.level.levelgen.placement.RarityFilter; import ru.bclib.world.features.BCLFeature; diff --git a/src/main/java/ru/bclib/api/tag/CommonBlockTags.java b/src/main/java/ru/bclib/api/tag/CommonBlockTags.java index 6401a0d8..6fb30a7d 100644 --- a/src/main/java/ru/bclib/api/tag/CommonBlockTags.java +++ b/src/main/java/ru/bclib/api/tag/CommonBlockTags.java @@ -1,7 +1,6 @@ package ru.bclib.api.tag; import net.minecraft.tags.TagKey; -import net.minecraft.world.item.Item; import net.minecraft.world.level.block.Block; public class CommonBlockTags { diff --git a/src/main/java/ru/bclib/api/tag/TagAPI.java b/src/main/java/ru/bclib/api/tag/TagAPI.java index 98d08a9f..7396a7cb 100644 --- a/src/main/java/ru/bclib/api/tag/TagAPI.java +++ b/src/main/java/ru/bclib/api/tag/TagAPI.java @@ -3,7 +3,6 @@ package ru.bclib.api.tag; import com.google.common.collect.Maps; import com.google.common.collect.Sets; import net.minecraft.core.Registry; -import net.minecraft.data.BuiltinRegistries; import net.minecraft.resources.ResourceLocation; import net.minecraft.server.packs.resources.ResourceManager; import net.minecraft.tags.Tag; diff --git a/src/main/java/ru/bclib/blocks/BaseLeavesBlock.java b/src/main/java/ru/bclib/blocks/BaseLeavesBlock.java index 8daaee2f..12b2e2b6 100644 --- a/src/main/java/ru/bclib/blocks/BaseLeavesBlock.java +++ b/src/main/java/ru/bclib/blocks/BaseLeavesBlock.java @@ -18,7 +18,6 @@ import net.minecraft.world.level.storage.loot.LootContext; import net.minecraft.world.level.storage.loot.parameters.LootContextParams; import ru.bclib.api.tag.NamedBlockTags; import ru.bclib.api.tag.NamedItemTags; -import ru.bclib.api.tag.NamedMineableTags; import ru.bclib.api.tag.TagAPI.TagLocation; import ru.bclib.client.render.BCLRenderLayer; import ru.bclib.interfaces.BlockModelProvider; diff --git a/src/main/java/ru/bclib/blocks/BaseOreBlock.java b/src/main/java/ru/bclib/blocks/BaseOreBlock.java index ceb8fe03..38cbef1a 100644 --- a/src/main/java/ru/bclib/blocks/BaseOreBlock.java +++ b/src/main/java/ru/bclib/blocks/BaseOreBlock.java @@ -11,7 +11,6 @@ import net.minecraft.world.item.TieredItem; import net.minecraft.world.item.enchantment.EnchantmentHelper; import net.minecraft.world.item.enchantment.Enchantments; import net.minecraft.world.level.ItemLike; -import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.OreBlock; import net.minecraft.world.level.block.SoundType; import net.minecraft.world.level.block.state.BlockState; @@ -19,11 +18,7 @@ import net.minecraft.world.level.material.Material; import net.minecraft.world.level.material.MaterialColor; import net.minecraft.world.level.storage.loot.LootContext; import net.minecraft.world.level.storage.loot.parameters.LootContextParams; -import ru.bclib.api.tag.NamedCommonBlockTags; -import ru.bclib.api.tag.NamedMineableTags; -import ru.bclib.api.tag.TagAPI; import ru.bclib.interfaces.BlockModelProvider; -import ru.bclib.interfaces.TagProvider; import ru.bclib.util.LootUtil; import ru.bclib.util.MHelper; diff --git a/src/main/java/ru/bclib/blocks/BasePlantBlock.java b/src/main/java/ru/bclib/blocks/BasePlantBlock.java index ca88ba50..78c1b235 100644 --- a/src/main/java/ru/bclib/blocks/BasePlantBlock.java +++ b/src/main/java/ru/bclib/blocks/BasePlantBlock.java @@ -10,7 +10,6 @@ import net.minecraft.core.Direction; import net.minecraft.resources.ResourceLocation; import net.minecraft.server.level.ServerLevel; import net.minecraft.world.entity.item.ItemEntity; -import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.enchantment.EnchantmentHelper; import net.minecraft.world.item.enchantment.Enchantments; @@ -31,16 +30,11 @@ import net.minecraft.world.phys.Vec3; import net.minecraft.world.phys.shapes.CollisionContext; import net.minecraft.world.phys.shapes.VoxelShape; import org.jetbrains.annotations.Nullable; -import ru.bclib.api.tag.NamedMineableTags; -import ru.bclib.api.tag.TagAPI.TagLocation; import ru.bclib.client.models.BasePatterns; import ru.bclib.client.models.ModelsHelper; import ru.bclib.client.models.PatternsHelper; import ru.bclib.client.render.BCLRenderLayer; import ru.bclib.interfaces.RenderLayerProvider; -import ru.bclib.interfaces.TagProvider; -import ru.bclib.interfaces.tools.AddMineableHoe; -import ru.bclib.interfaces.tools.AddMineableShears; import ru.bclib.items.tool.BaseShearsItem; import java.util.List; diff --git a/src/main/java/ru/bclib/blocks/BaseTerrainBlock.java b/src/main/java/ru/bclib/blocks/BaseTerrainBlock.java index aa98e969..d28aafb4 100644 --- a/src/main/java/ru/bclib/blocks/BaseTerrainBlock.java +++ b/src/main/java/ru/bclib/blocks/BaseTerrainBlock.java @@ -3,7 +3,6 @@ package ru.bclib.blocks; import com.google.common.collect.Maps; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; -import net.fabricmc.fabric.api.datagen.v1.provider.FabricTagProvider; import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.minecraft.client.renderer.block.model.BlockModel; import net.minecraft.client.resources.model.UnbakedModel; diff --git a/src/main/java/ru/bclib/blocks/SimpleLeavesBlock.java b/src/main/java/ru/bclib/blocks/SimpleLeavesBlock.java index 7aca9c59..50ffe3df 100644 --- a/src/main/java/ru/bclib/blocks/SimpleLeavesBlock.java +++ b/src/main/java/ru/bclib/blocks/SimpleLeavesBlock.java @@ -9,7 +9,6 @@ import net.minecraft.world.level.material.Material; import net.minecraft.world.level.material.MaterialColor; import ru.bclib.api.tag.NamedBlockTags; import ru.bclib.api.tag.NamedItemTags; -import ru.bclib.api.tag.NamedMineableTags; import ru.bclib.api.tag.TagAPI.TagLocation; import ru.bclib.client.render.BCLRenderLayer; import ru.bclib.interfaces.RenderLayerProvider; diff --git a/src/main/java/ru/bclib/blocks/UnderwaterPlantBlock.java b/src/main/java/ru/bclib/blocks/UnderwaterPlantBlock.java index a85a92be..4b651d63 100644 --- a/src/main/java/ru/bclib/blocks/UnderwaterPlantBlock.java +++ b/src/main/java/ru/bclib/blocks/UnderwaterPlantBlock.java @@ -6,7 +6,6 @@ import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.server.level.ServerLevel; import net.minecraft.world.entity.item.ItemEntity; -import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.enchantment.EnchantmentHelper; import net.minecraft.world.item.enchantment.Enchantments; @@ -30,13 +29,8 @@ import net.minecraft.world.level.storage.loot.parameters.LootContextParams; import net.minecraft.world.phys.Vec3; import net.minecraft.world.phys.shapes.CollisionContext; import net.minecraft.world.phys.shapes.VoxelShape; -import ru.bclib.api.tag.NamedMineableTags; -import ru.bclib.api.tag.TagAPI.TagLocation; import ru.bclib.client.render.BCLRenderLayer; import ru.bclib.interfaces.RenderLayerProvider; -import ru.bclib.interfaces.TagProvider; -import ru.bclib.interfaces.tools.AddMineableHoe; -import ru.bclib.interfaces.tools.AddMineableShears; import ru.bclib.items.tool.BaseShearsItem; import java.util.List; diff --git a/src/main/java/ru/bclib/blocks/UpDownPlantBlock.java b/src/main/java/ru/bclib/blocks/UpDownPlantBlock.java index 34cf92f3..fe9a8b18 100644 --- a/src/main/java/ru/bclib/blocks/UpDownPlantBlock.java +++ b/src/main/java/ru/bclib/blocks/UpDownPlantBlock.java @@ -5,7 +5,6 @@ import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.world.entity.player.Player; -import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.enchantment.EnchantmentHelper; import net.minecraft.world.item.enchantment.Enchantments; @@ -24,11 +23,8 @@ import net.minecraft.world.level.storage.loot.LootContext; import net.minecraft.world.level.storage.loot.parameters.LootContextParams; import net.minecraft.world.phys.shapes.CollisionContext; import net.minecraft.world.phys.shapes.VoxelShape; -import ru.bclib.api.tag.NamedMineableTags; -import ru.bclib.api.tag.TagAPI.TagLocation; import ru.bclib.client.render.BCLRenderLayer; import ru.bclib.interfaces.RenderLayerProvider; -import ru.bclib.interfaces.TagProvider; import ru.bclib.interfaces.tools.AddMineableHoe; import ru.bclib.interfaces.tools.AddMineableShears; import ru.bclib.items.tool.BaseShearsItem; diff --git a/src/main/java/ru/bclib/integration/ModIntegration.java b/src/main/java/ru/bclib/integration/ModIntegration.java index 77838b24..09754517 100644 --- a/src/main/java/ru/bclib/integration/ModIntegration.java +++ b/src/main/java/ru/bclib/integration/ModIntegration.java @@ -6,9 +6,6 @@ import net.minecraft.core.Registry; import net.minecraft.data.BuiltinRegistries; import net.minecraft.resources.ResourceKey; import net.minecraft.resources.ResourceLocation; -import net.minecraft.tags.BlockTags; -import net.minecraft.tags.ItemTags; -import net.minecraft.tags.Tag; import net.minecraft.tags.TagKey; import net.minecraft.world.item.Item; import net.minecraft.world.level.biome.Biome; diff --git a/src/main/java/ru/bclib/interfaces/SurvivesOnTags.java b/src/main/java/ru/bclib/interfaces/SurvivesOnTags.java index fbd9d614..f4bee6b5 100644 --- a/src/main/java/ru/bclib/interfaces/SurvivesOnTags.java +++ b/src/main/java/ru/bclib/interfaces/SurvivesOnTags.java @@ -5,7 +5,6 @@ import net.minecraft.tags.TagKey; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Blocks; -import net.minecraft.world.level.block.NetherrackBlock; import net.minecraft.world.level.block.state.BlockState; import java.util.Comparator; diff --git a/src/main/java/ru/bclib/mixin/client/EnchantingTableBlockMixin.java b/src/main/java/ru/bclib/mixin/client/EnchantingTableBlockMixin.java deleted file mode 100644 index db8ddd23..00000000 --- a/src/main/java/ru/bclib/mixin/client/EnchantingTableBlockMixin.java +++ /dev/null @@ -1,27 +0,0 @@ -package ru.bclib.mixin.client; - -import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.Blocks; -import net.minecraft.world.level.block.EnchantmentTableBlock; -import net.minecraft.world.level.block.state.BlockState; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Redirect; -import ru.bclib.api.tag.CommonBlockTags; - -@Mixin(EnchantmentTableBlock.class) -public abstract class EnchantingTableBlockMixin extends Block { - public EnchantingTableBlockMixin(Properties settings) { - super(settings); - } - - @Redirect(method = "isValidBookShelf", at = @At( - value = "INVOKE", - target = "Lnet/minecraft/world/level/block/state/BlockState;is(Lnet/minecraft/world/level/block/Block;)Z"), - require = -1, - expect = -1 - ) - private static boolean bclib_isBookshelf(BlockState state, Block block) { - return block == Blocks.BOOKSHELF ? state.is(CommonBlockTags.BOOKSHELVES) : state.is(block); - } -} diff --git a/src/main/java/ru/bclib/mixin/common/BiomeGenerationSettingsAccessor.java b/src/main/java/ru/bclib/mixin/common/BiomeGenerationSettingsAccessor.java index 91f929b1..5060858c 100644 --- a/src/main/java/ru/bclib/mixin/common/BiomeGenerationSettingsAccessor.java +++ b/src/main/java/ru/bclib/mixin/common/BiomeGenerationSettingsAccessor.java @@ -3,7 +3,6 @@ package ru.bclib.mixin.common; import net.minecraft.core.HolderSet; import net.minecraft.world.level.biome.BiomeGenerationSettings; import net.minecraft.world.level.levelgen.GenerationStep; -import net.minecraft.world.level.levelgen.GenerationStep.Carving; import net.minecraft.world.level.levelgen.carver.ConfiguredWorldCarver; import net.minecraft.world.level.levelgen.feature.ConfiguredFeature; import net.minecraft.world.level.levelgen.placement.PlacedFeature; diff --git a/src/main/java/ru/bclib/mixin/common/BlockStateBaseMixin.java b/src/main/java/ru/bclib/mixin/common/BlockStateBaseMixin.java new file mode 100644 index 00000000..196e5a4a --- /dev/null +++ b/src/main/java/ru/bclib/mixin/common/BlockStateBaseMixin.java @@ -0,0 +1,22 @@ +package ru.bclib.mixin.common; + +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.state.BlockBehaviour.BlockStateBase; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; +import ru.bclib.util.MethodReplace; + +import java.util.function.Function; + +@Mixin(BlockStateBase.class) +public class BlockStateBaseMixin { + @Inject(method = "is(Lnet/minecraft/world/level/block/Block;)Z", at = @At("HEAD"), cancellable = true) + private void bclib_replaceFunction(Block block, CallbackInfoReturnable info) { + Function replacement = MethodReplace.getBlockReplace(block); + if (replacement != null) { + info.setReturnValue(replacement.apply(BlockStateBase.class.cast(this))); + } + } +} diff --git a/src/main/java/ru/bclib/mixin/common/DiggerItemAccessor.java b/src/main/java/ru/bclib/mixin/common/DiggerItemAccessor.java index 8102ce94..a3a8f925 100644 --- a/src/main/java/ru/bclib/mixin/common/DiggerItemAccessor.java +++ b/src/main/java/ru/bclib/mixin/common/DiggerItemAccessor.java @@ -3,16 +3,10 @@ package ru.bclib.mixin.common; import net.minecraft.tags.TagKey; import net.minecraft.world.item.DiggerItem; import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.levelgen.placement.PlacedFeature; -import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Mutable; -import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.gen.Accessor; -import java.util.List; -import java.util.function.Supplier; - @Mixin(DiggerItem.class) public interface DiggerItemAccessor { @Accessor("blocks") diff --git a/src/main/java/ru/bclib/mixin/common/DimensionTypeMixin.java b/src/main/java/ru/bclib/mixin/common/DimensionTypeMixin.java index 7618432a..27a5e8d4 100644 --- a/src/main/java/ru/bclib/mixin/common/DimensionTypeMixin.java +++ b/src/main/java/ru/bclib/mixin/common/DimensionTypeMixin.java @@ -1,20 +1,13 @@ package ru.bclib.mixin.common; import com.mojang.serialization.Lifecycle; -import net.minecraft.core.MappedRegistry; import net.minecraft.core.Registry; import net.minecraft.core.RegistryAccess; import net.minecraft.core.WritableRegistry; -import net.minecraft.world.level.biome.Biome; -import net.minecraft.world.level.biome.BiomeSource; -import net.minecraft.world.level.biome.MultiNoiseBiomeSource; import net.minecraft.world.level.dimension.DimensionType; import net.minecraft.world.level.dimension.LevelStem; import net.minecraft.world.level.levelgen.NoiseBasedChunkGenerator; import net.minecraft.world.level.levelgen.NoiseGeneratorSettings; -import net.minecraft.world.level.levelgen.structure.StructureSet; -import net.minecraft.world.level.levelgen.synth.NormalNoise; -import org.jetbrains.annotations.NotNull; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; diff --git a/src/main/java/ru/bclib/mixin/common/EnchantingTableBlockMixin.java b/src/main/java/ru/bclib/mixin/common/EnchantingTableBlockMixin.java new file mode 100644 index 00000000..6e868a0f --- /dev/null +++ b/src/main/java/ru/bclib/mixin/common/EnchantingTableBlockMixin.java @@ -0,0 +1,25 @@ +package ru.bclib.mixin.common; + +import net.minecraft.core.BlockPos; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.EnchantmentTableBlock; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; +import ru.bclib.api.tag.CommonBlockTags; +import ru.bclib.util.MethodReplace; + +@Mixin(EnchantmentTableBlock.class) +public abstract class EnchantingTableBlockMixin extends Block { + public EnchantingTableBlockMixin(Properties settings) { + super(settings); + } + + @Inject(method = "isValidBookShelf(Lnet/minecraft/world/level/Level;Lnet/minecraft/core/BlockPos;Lnet/minecraft/core/BlockPos;)Z", at = @At("HEAD"), cancellable = true) + private static void bclib_isBookshelf(Level level, BlockPos blockPos, BlockPos blockPos2, CallbackInfoReturnable info) { + if (level.getBlockState(blockPos2).is(CommonBlockTags.BOOKSHELVES) && level.isEmptyBlock(blockPos.offset(blockPos2.getX() / 2, blockPos2.getY(), blockPos2.getZ() / 2))) info.setReturnValue(true); + } +} diff --git a/src/main/java/ru/bclib/mixin/common/ItemStackMixin.java b/src/main/java/ru/bclib/mixin/common/ItemStackMixin.java new file mode 100644 index 00000000..c52d34fb --- /dev/null +++ b/src/main/java/ru/bclib/mixin/common/ItemStackMixin.java @@ -0,0 +1,22 @@ +package ru.bclib.mixin.common; + +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; +import ru.bclib.util.MethodReplace; + +import java.util.function.Function; + +@Mixin(ItemStack.class) +public class ItemStackMixin { + @Inject(method = "is(Lnet/minecraft/world/item/Item;)Z", at = @At("HEAD"), cancellable = true) + private void bclib_replaceFunction(Item item, CallbackInfoReturnable info) { + Function replacement = MethodReplace.getItemReplace(item); + if (replacement != null) { + info.setReturnValue(replacement.apply(ItemStack.class.cast(this))); + } + } +} diff --git a/src/main/java/ru/bclib/mixin/common/NoiseBasedChunkGeneratorMixin.java b/src/main/java/ru/bclib/mixin/common/NoiseBasedChunkGeneratorMixin.java index f2e20e72..29832e8c 100644 --- a/src/main/java/ru/bclib/mixin/common/NoiseBasedChunkGeneratorMixin.java +++ b/src/main/java/ru/bclib/mixin/common/NoiseBasedChunkGeneratorMixin.java @@ -9,7 +9,12 @@ import net.minecraft.world.level.biome.Climate; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.chunk.ChunkAccess; -import net.minecraft.world.level.levelgen.*; +import net.minecraft.world.level.levelgen.Aquifer; +import net.minecraft.world.level.levelgen.Beardifier; +import net.minecraft.world.level.levelgen.NoiseBasedChunkGenerator; +import net.minecraft.world.level.levelgen.NoiseChunk; +import net.minecraft.world.level.levelgen.NoiseGeneratorSettings; +import net.minecraft.world.level.levelgen.NoiseRouter; import net.minecraft.world.level.levelgen.blending.Blender; import net.minecraft.world.level.levelgen.carver.CarvingContext; import org.spongepowered.asm.mixin.Final; @@ -21,7 +26,6 @@ import ru.bclib.interfaces.SurfaceProvider; import java.lang.reflect.Constructor; import java.util.Optional; -import java.util.function.Supplier; @Mixin(NoiseBasedChunkGenerator.class) public abstract class NoiseBasedChunkGeneratorMixin implements SurfaceProvider, NoiseGeneratorSettingsProvider { diff --git a/src/main/java/ru/bclib/mixin/common/RecipeManagerMixin.java b/src/main/java/ru/bclib/mixin/common/RecipeManagerMixin.java index 10c85644..d9c20209 100644 --- a/src/main/java/ru/bclib/mixin/common/RecipeManagerMixin.java +++ b/src/main/java/ru/bclib/mixin/common/RecipeManagerMixin.java @@ -1,6 +1,5 @@ package ru.bclib.mixin.common; -import net.minecraft.Util; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.Container; import net.minecraft.world.item.crafting.Recipe; diff --git a/src/main/java/ru/bclib/mixin/common/ServerLevelMixin.java b/src/main/java/ru/bclib/mixin/common/ServerLevelMixin.java index 15d46beb..0a05905d 100644 --- a/src/main/java/ru/bclib/mixin/common/ServerLevelMixin.java +++ b/src/main/java/ru/bclib/mixin/common/ServerLevelMixin.java @@ -6,11 +6,9 @@ import net.minecraft.server.MinecraftServer; import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.progress.ChunkProgressListener; import net.minecraft.util.profiling.ProfilerFiller; -import net.minecraft.world.level.CustomSpawner; import net.minecraft.world.level.Level; import net.minecraft.world.level.chunk.ChunkGenerator; import net.minecraft.world.level.dimension.DimensionType; -import net.minecraft.world.level.storage.LevelStorageSource; import net.minecraft.world.level.storage.LevelStorageSource.LevelStorageAccess; import net.minecraft.world.level.storage.ServerLevelData; import net.minecraft.world.level.storage.WritableLevelData; diff --git a/src/main/java/ru/bclib/mixin/common/StructureFeaturesAccessor.java b/src/main/java/ru/bclib/mixin/common/StructureFeaturesAccessor.java index 5ba97fdd..37d5ad91 100644 --- a/src/main/java/ru/bclib/mixin/common/StructureFeaturesAccessor.java +++ b/src/main/java/ru/bclib/mixin/common/StructureFeaturesAccessor.java @@ -3,7 +3,6 @@ package ru.bclib.mixin.common; import net.minecraft.core.Holder; import net.minecraft.data.worldgen.StructureFeatures; import net.minecraft.resources.ResourceKey; -import net.minecraft.world.level.levelgen.GenerationStep; import net.minecraft.world.level.levelgen.feature.ConfiguredStructureFeature; import net.minecraft.world.level.levelgen.feature.StructureFeature; import net.minecraft.world.level.levelgen.feature.configurations.FeatureConfiguration; diff --git a/src/main/java/ru/bclib/mixin/common/SurfaceRulesContextAccessor.java b/src/main/java/ru/bclib/mixin/common/SurfaceRulesContextAccessor.java index 2e2e93be..9a0b11fb 100644 --- a/src/main/java/ru/bclib/mixin/common/SurfaceRulesContextAccessor.java +++ b/src/main/java/ru/bclib/mixin/common/SurfaceRulesContextAccessor.java @@ -1,7 +1,6 @@ package ru.bclib.mixin.common; import net.minecraft.core.Holder; -import net.minecraft.resources.ResourceKey; import net.minecraft.world.level.biome.Biome; import net.minecraft.world.level.chunk.ChunkAccess; import net.minecraft.world.level.levelgen.NoiseChunk; diff --git a/src/main/java/ru/bclib/mixin/common/shears/BeehiveBlockMixin.java b/src/main/java/ru/bclib/mixin/common/shears/BeehiveBlockMixin.java index 9dc7ed3f..c39e4f92 100644 --- a/src/main/java/ru/bclib/mixin/common/shears/BeehiveBlockMixin.java +++ b/src/main/java/ru/bclib/mixin/common/shears/BeehiveBlockMixin.java @@ -1,17 +1,25 @@ package ru.bclib.mixin.common.shears; -import net.minecraft.world.item.Item; -import net.minecraft.world.item.ItemStack; +import net.minecraft.core.BlockPos; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.Items; +import net.minecraft.world.level.Level; import net.minecraft.world.level.block.BeehiveBlock; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.phys.BlockHitResult; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Redirect; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; import ru.bclib.items.tool.BaseShearsItem; +import ru.bclib.util.MethodReplace; @Mixin(BeehiveBlock.class) public class BeehiveBlockMixin { - @Redirect(method="use", at=@At(value="INVOKE", target="Lnet/minecraft/world/item/ItemStack;is(Lnet/minecraft/world/item/Item;)Z")) - public boolean bn_useProxy(ItemStack itemStack, Item item){ - return BaseShearsItem.isShear(itemStack, item); + @Inject(method = "use(Lnet/minecraft/world/level/block/state/BlockState;Lnet/minecraft/world/level/Level;Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/entity/player/Player;Lnet/minecraft/world/InteractionHand;Lnet/minecraft/world/phys/BlockHitResult;)Lnet/minecraft/world/InteractionResult;", at = @At("HEAD")) + private void bclib_isShears(BlockState blockState, Level level, BlockPos blockPos, Player player, InteractionHand interactionHand, BlockHitResult blockHitResult, CallbackInfoReturnable info) { + MethodReplace.addItemReplace(Items.SHEARS, BaseShearsItem::isShear); } } diff --git a/src/main/java/ru/bclib/mixin/common/shears/DiggingEnchantmentMixin.java b/src/main/java/ru/bclib/mixin/common/shears/DiggingEnchantmentMixin.java index 47354537..1bafcdab 100644 --- a/src/main/java/ru/bclib/mixin/common/shears/DiggingEnchantmentMixin.java +++ b/src/main/java/ru/bclib/mixin/common/shears/DiggingEnchantmentMixin.java @@ -1,17 +1,17 @@ package ru.bclib.mixin.common.shears; -import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.enchantment.DiggingEnchantment; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Redirect; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; import ru.bclib.items.tool.BaseShearsItem; @Mixin(DiggingEnchantment.class) public class DiggingEnchantmentMixin { - @Redirect(method="canEnchant", at=@At(value="INVOKE", target="Lnet/minecraft/world/item/ItemStack;is(Lnet/minecraft/world/item/Item;)Z")) - public boolean bn_mobInteractProxy(ItemStack itemStack, Item item){ - return BaseShearsItem.isShear(itemStack, item); + @Inject(method = "canEnchant(Lnet/minecraft/world/item/ItemStack;)Z", at = @At("HEAD"), cancellable = true) + private void bclib_isShears(ItemStack itemStack, CallbackInfoReturnable info) { + if (BaseShearsItem.isShear(itemStack)) info.setReturnValue(true); } } diff --git a/src/main/java/ru/bclib/mixin/common/shears/ItemPredicateBuilderMixin.java b/src/main/java/ru/bclib/mixin/common/shears/ItemPredicateBuilderMixin.java index eed9de92..676126c1 100644 --- a/src/main/java/ru/bclib/mixin/common/shears/ItemPredicateBuilderMixin.java +++ b/src/main/java/ru/bclib/mixin/common/shears/ItemPredicateBuilderMixin.java @@ -17,14 +17,13 @@ import java.util.Set; @Mixin(ItemPredicate.class) public abstract class ItemPredicateBuilderMixin { - @Shadow @Final private @Nullable Set items; @Inject(method = "matches", at = @At("HEAD"), cancellable = true) - void bclib_of(ItemStack itemStack, CallbackInfoReturnable cir) { + void bclib_isShears(ItemStack itemStack, CallbackInfoReturnable info) { if (this.items != null && this.items.size() == 1 && this.items.contains(Items.SHEARS)) { - if (itemStack.is(CommonItemTags.SHEARS) ){ - cir.setReturnValue(true); + if (itemStack.is(CommonItemTags.SHEARS)) { + info.setReturnValue(true); } } } diff --git a/src/main/java/ru/bclib/mixin/common/shears/MushroomCowMixin.java b/src/main/java/ru/bclib/mixin/common/shears/MushroomCowMixin.java index d58d93c1..9b454932 100644 --- a/src/main/java/ru/bclib/mixin/common/shears/MushroomCowMixin.java +++ b/src/main/java/ru/bclib/mixin/common/shears/MushroomCowMixin.java @@ -1,17 +1,21 @@ package ru.bclib.mixin.common.shears; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.animal.MushroomCow; -import net.minecraft.world.item.Item; -import net.minecraft.world.item.ItemStack; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.Items; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Redirect; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; import ru.bclib.items.tool.BaseShearsItem; +import ru.bclib.util.MethodReplace; @Mixin(MushroomCow.class) public class MushroomCowMixin { - @Redirect(method="mobInteract", at=@At(value="INVOKE", target="Lnet/minecraft/world/item/ItemStack;is(Lnet/minecraft/world/item/Item;)Z")) - public boolean bn_mobInteractProxy(ItemStack itemStack, Item item){ - return BaseShearsItem.isShear(itemStack, item); + @Inject(method = "mobInteract(Lnet/minecraft/world/entity/player/Player;Lnet/minecraft/world/InteractionHand;)Lnet/minecraft/world/InteractionResult;", at = @At("HEAD")) + private void bclib_isShears(Player player, InteractionHand interactionHand, CallbackInfoReturnable info) { + MethodReplace.addItemReplace(Items.SHEARS, BaseShearsItem::isShear); } } diff --git a/src/main/java/ru/bclib/mixin/common/shears/PumpkinBlockMixin.java b/src/main/java/ru/bclib/mixin/common/shears/PumpkinBlockMixin.java index deb7fc08..56e6198a 100644 --- a/src/main/java/ru/bclib/mixin/common/shears/PumpkinBlockMixin.java +++ b/src/main/java/ru/bclib/mixin/common/shears/PumpkinBlockMixin.java @@ -1,17 +1,25 @@ package ru.bclib.mixin.common.shears; -import net.minecraft.world.item.Item; -import net.minecraft.world.item.ItemStack; +import net.minecraft.core.BlockPos; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.Items; +import net.minecraft.world.level.Level; import net.minecraft.world.level.block.PumpkinBlock; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.phys.BlockHitResult; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Redirect; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; import ru.bclib.items.tool.BaseShearsItem; +import ru.bclib.util.MethodReplace; @Mixin(PumpkinBlock.class) public abstract class PumpkinBlockMixin { - @Redirect(method="use", at=@At(value="INVOKE", target="Lnet/minecraft/world/item/ItemStack;is(Lnet/minecraft/world/item/Item;)Z")) - public boolean bn_useProxy(ItemStack itemStack, Item item){ - return BaseShearsItem.isShear(itemStack, item); + @Inject(method = "use", at = @At("HEAD")) + private void bclib_isShears(BlockState blockState, Level level, BlockPos blockPos, Player player, InteractionHand interactionHand, BlockHitResult blockHitResult, CallbackInfoReturnable info) { + MethodReplace.addItemReplace(Items.SHEARS, BaseShearsItem::isShear); } } diff --git a/src/main/java/ru/bclib/mixin/common/shears/SheepMixin.java b/src/main/java/ru/bclib/mixin/common/shears/SheepMixin.java index 77e42736..d4205297 100644 --- a/src/main/java/ru/bclib/mixin/common/shears/SheepMixin.java +++ b/src/main/java/ru/bclib/mixin/common/shears/SheepMixin.java @@ -1,17 +1,21 @@ package ru.bclib.mixin.common.shears; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.animal.Sheep; -import net.minecraft.world.item.Item; -import net.minecraft.world.item.ItemStack; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.Items; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Redirect; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; import ru.bclib.items.tool.BaseShearsItem; +import ru.bclib.util.MethodReplace; @Mixin(Sheep.class) public class SheepMixin { - @Redirect(method="mobInteract", at=@At(value="INVOKE", target="Lnet/minecraft/world/item/ItemStack;is(Lnet/minecraft/world/item/Item;)Z")) - public boolean bn_mobInteractProxy(ItemStack itemStack, Item item){ - return BaseShearsItem.isShear(itemStack, item); + @Inject(method = "mobInteract(Lnet/minecraft/world/entity/player/Player;Lnet/minecraft/world/InteractionHand;)Lnet/minecraft/world/InteractionResult;", at = @At("HEAD")) + private void bclib_isShears(Player player, InteractionHand interactionHand, CallbackInfoReturnable info) { + MethodReplace.addItemReplace(Items.SHEARS, BaseShearsItem::isShear); } } diff --git a/src/main/java/ru/bclib/mixin/common/shears/SnowGolemMixin.java b/src/main/java/ru/bclib/mixin/common/shears/SnowGolemMixin.java index f6fc2f6a..691ac2c1 100644 --- a/src/main/java/ru/bclib/mixin/common/shears/SnowGolemMixin.java +++ b/src/main/java/ru/bclib/mixin/common/shears/SnowGolemMixin.java @@ -1,17 +1,21 @@ package ru.bclib.mixin.common.shears; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.animal.SnowGolem; -import net.minecraft.world.item.Item; -import net.minecraft.world.item.ItemStack; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.Items; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Redirect; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; import ru.bclib.items.tool.BaseShearsItem; +import ru.bclib.util.MethodReplace; @Mixin(SnowGolem.class) public class SnowGolemMixin { - @Redirect(method="mobInteract", at=@At(value="INVOKE", target="Lnet/minecraft/world/item/ItemStack;is(Lnet/minecraft/world/item/Item;)Z")) - public boolean bn_mobInteractProxy(ItemStack itemStack, Item item){ - return BaseShearsItem.isShear(itemStack, item); + @Inject(method = "mobInteract(Lnet/minecraft/world/entity/player/Player;Lnet/minecraft/world/InteractionHand;)Lnet/minecraft/world/InteractionResult;", at = @At("HEAD")) + private void bclib_isShears(Player player, InteractionHand interactionHand, CallbackInfoReturnable info) { + MethodReplace.addItemReplace(Items.SHEARS, BaseShearsItem::isShear); } } diff --git a/src/main/java/ru/bclib/mixin/common/shears/TripWireBlockMixin.java b/src/main/java/ru/bclib/mixin/common/shears/TripWireBlockMixin.java index acc98049..80c3d886 100644 --- a/src/main/java/ru/bclib/mixin/common/shears/TripWireBlockMixin.java +++ b/src/main/java/ru/bclib/mixin/common/shears/TripWireBlockMixin.java @@ -1,17 +1,22 @@ package ru.bclib.mixin.common.shears; -import net.minecraft.world.item.Item; -import net.minecraft.world.item.ItemStack; +import net.minecraft.core.BlockPos; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.Items; +import net.minecraft.world.level.Level; import net.minecraft.world.level.block.TripWireBlock; +import net.minecraft.world.level.block.state.BlockState; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Redirect; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import ru.bclib.items.tool.BaseShearsItem; +import ru.bclib.util.MethodReplace; @Mixin(TripWireBlock.class) public class TripWireBlockMixin { - @Redirect(method="playerWillDestroy", at=@At(value="INVOKE", target="Lnet/minecraft/world/item/ItemStack;is(Lnet/minecraft/world/item/Item;)Z")) - public boolean bn_useProxy(ItemStack itemStack, Item item){ - return BaseShearsItem.isShear(itemStack, item); + @Inject(method = "playerWillDestroy(Lnet/minecraft/world/level/Level;Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/level/block/state/BlockState;Lnet/minecraft/world/entity/player/Player;)V", at = @At("HEAD")) + private void bclib_isShears(Level level, BlockPos blockPos, BlockState blockState, Player player, CallbackInfo info) { + MethodReplace.addItemReplace(Items.SHEARS, BaseShearsItem::isShear); } } diff --git a/src/main/java/ru/bclib/recipes/AnvilRecipe.java b/src/main/java/ru/bclib/recipes/AnvilRecipe.java index c40ca868..403c739f 100644 --- a/src/main/java/ru/bclib/recipes/AnvilRecipe.java +++ b/src/main/java/ru/bclib/recipes/AnvilRecipe.java @@ -4,15 +4,12 @@ import com.google.gson.JsonObject; import com.mojang.brigadier.exceptions.CommandSyntaxException; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; -import net.fabricmc.fabric.api.datagen.v1.provider.FabricTagProvider; import net.minecraft.core.NonNullList; import net.minecraft.core.Registry; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.TagParser; import net.minecraft.network.FriendlyByteBuf; import net.minecraft.resources.ResourceLocation; -import net.minecraft.tags.ItemTags; -import net.minecraft.tags.Tag; import net.minecraft.tags.TagKey; import net.minecraft.util.GsonHelper; import net.minecraft.world.Container; diff --git a/src/main/java/ru/bclib/recipes/GridRecipe.java b/src/main/java/ru/bclib/recipes/GridRecipe.java index 3af5b4d1..1c56e7ed 100644 --- a/src/main/java/ru/bclib/recipes/GridRecipe.java +++ b/src/main/java/ru/bclib/recipes/GridRecipe.java @@ -3,7 +3,6 @@ package ru.bclib.recipes; import com.google.common.collect.Maps; import net.minecraft.core.NonNullList; import net.minecraft.resources.ResourceLocation; -import net.minecraft.tags.Tag; import net.minecraft.tags.TagKey; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; diff --git a/src/main/java/ru/bclib/recipes/SmithingTableRecipe.java b/src/main/java/ru/bclib/recipes/SmithingTableRecipe.java index a981d18a..ca86fbee 100644 --- a/src/main/java/ru/bclib/recipes/SmithingTableRecipe.java +++ b/src/main/java/ru/bclib/recipes/SmithingTableRecipe.java @@ -1,7 +1,6 @@ package ru.bclib.recipes; import net.minecraft.resources.ResourceLocation; -import net.minecraft.tags.Tag; import net.minecraft.tags.TagKey; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; diff --git a/src/main/java/ru/bclib/util/MethodReplace.java b/src/main/java/ru/bclib/util/MethodReplace.java new file mode 100644 index 00000000..5816d76b --- /dev/null +++ b/src/main/java/ru/bclib/util/MethodReplace.java @@ -0,0 +1,46 @@ +package ru.bclib.util; + +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.state.BlockBehaviour.BlockStateBase; +import org.jetbrains.annotations.Nullable; + +import java.util.function.Function; + +public class MethodReplace { + private static Function itemReplace; + private static Function blockReplace; + private static Block block; + private static Item item; + + public static void addItemReplace(Item item, Function itemReplace) { + MethodReplace.itemReplace = itemReplace; + MethodReplace.item = item; + } + + public static void addBlockReplace(Block block, Function blockReplace) { + MethodReplace.blockReplace = blockReplace; + MethodReplace.block = block; + } + + @Nullable + public static Function getItemReplace(Item item) { + if (MethodReplace.item != item) { + return null; + } + Function replace = itemReplace; + itemReplace = null; + return replace; + } + + @Nullable + public static Function getBlockReplace(Block block) { + if (MethodReplace.block != block) { + return null; + } + Function replace = blockReplace; + blockReplace = null; + return replace; + } +} diff --git a/src/main/java/ru/bclib/world/biomes/BCLBiome.java b/src/main/java/ru/bclib/world/biomes/BCLBiome.java index c5f5b5fd..7e7164da 100644 --- a/src/main/java/ru/bclib/world/biomes/BCLBiome.java +++ b/src/main/java/ru/bclib/world/biomes/BCLBiome.java @@ -1,6 +1,5 @@ package ru.bclib.world.biomes; -import com.google.common.collect.Lists; import com.google.common.collect.Maps; import com.google.common.collect.Sets; import net.minecraft.core.Holder; @@ -10,11 +9,8 @@ import net.minecraft.resources.ResourceKey; import net.minecraft.resources.ResourceLocation; import net.minecraft.tags.TagKey; import net.minecraft.world.level.biome.Biome; -import net.minecraft.world.level.levelgen.GenerationStep.Decoration; import net.minecraft.world.level.levelgen.SurfaceRules; import net.minecraft.world.level.levelgen.SurfaceRules.RuleSource; -import net.minecraft.world.level.levelgen.feature.ConfiguredStructureFeature; -import net.minecraft.world.level.levelgen.placement.PlacedFeature; import org.jetbrains.annotations.Nullable; import ru.bclib.BCLib; import ru.bclib.api.biomes.BiomeAPI; diff --git a/src/main/java/ru/bclib/world/generator/BCLibEndBiomeSource.java b/src/main/java/ru/bclib/world/generator/BCLibEndBiomeSource.java index 95c7aac5..db6561ef 100644 --- a/src/main/java/ru/bclib/world/generator/BCLibEndBiomeSource.java +++ b/src/main/java/ru/bclib/world/generator/BCLibEndBiomeSource.java @@ -1,13 +1,10 @@ package ru.bclib.world.generator; -import com.mojang.datafixers.kinds.Applicative; import com.mojang.serialization.Codec; -import com.mojang.serialization.MapCodec; import com.mojang.serialization.codecs.RecordCodecBuilder; import net.minecraft.core.Holder; import net.minecraft.core.Registry; import net.minecraft.resources.RegistryOps; -import net.minecraft.resources.ResourceKey; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.level.biome.Biome; import net.minecraft.world.level.biome.Biome.BiomeCategory; diff --git a/src/main/java/ru/bclib/world/generator/BCLibNetherBiomeSource.java b/src/main/java/ru/bclib/world/generator/BCLibNetherBiomeSource.java index 4cd6338f..f655a914 100644 --- a/src/main/java/ru/bclib/world/generator/BCLibNetherBiomeSource.java +++ b/src/main/java/ru/bclib/world/generator/BCLibNetherBiomeSource.java @@ -5,7 +5,6 @@ import com.mojang.serialization.codecs.RecordCodecBuilder; import net.minecraft.core.Holder; import net.minecraft.core.Registry; import net.minecraft.resources.RegistryOps; -import net.minecraft.resources.ResourceKey; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.level.biome.Biome; import net.minecraft.world.level.biome.Biome.BiomeCategory; diff --git a/src/main/resources/bclib.accesswidener b/src/main/resources/bclib.accesswidener index 5a5692b6..e178b76b 100644 --- a/src/main/resources/bclib.accesswidener +++ b/src/main/resources/bclib.accesswidener @@ -8,4 +8,4 @@ accessible class net/minecraft/world/level/levelgen/SurfaceRules$Condition accessible class net/minecraft/world/level/levelgen/SurfaceRules$SurfaceRule accessible class net/minecraft/world/level/levelgen/SurfaceRules$LazyXZCondition accessible class net/minecraft/world/level/levelgen/SurfaceRules$LazyCondition -accessible class net/minecraft/world/level/levelgen/SurfaceRules$SequenceRuleSource \ No newline at end of file +accessible class net/minecraft/world/level/levelgen/SurfaceRules$SequenceRuleSource diff --git a/src/main/resources/bclib.mixins.client.json b/src/main/resources/bclib.mixins.client.json index 041d5576..a68b5df7 100644 --- a/src/main/resources/bclib.mixins.client.json +++ b/src/main/resources/bclib.mixins.client.json @@ -4,7 +4,6 @@ "package": "ru.bclib.mixin.client", "compatibilityLevel": "JAVA_17", "client": [ - "EnchantingTableBlockMixin", "ClientRecipeBookMixin", "ModelManagerMixin", "TextureAtlasMixin", diff --git a/src/main/resources/bclib.mixins.common.json b/src/main/resources/bclib.mixins.common.json index 52029a3f..a1250712 100644 --- a/src/main/resources/bclib.mixins.common.json +++ b/src/main/resources/bclib.mixins.common.json @@ -11,22 +11,26 @@ "NoiseBasedChunkGeneratorMixin", "NoiseGeneratorSettingsMixin", "SurfaceRulesContextAccessor", + "EnchantingTableBlockMixin", "shears.TripWireBlockMixin", + "StructureFeaturesAccessor", "MobSpawnSettingsAccessor", + "StructureFeatureAccessor", "shears.BeehiveBlockMixin", "shears.PumpkinBlockMixin", "shears.MushroomCowMixin", "ComposterBlockAccessor", "PotionBrewingAccessor", "RecipeManagerAccessor", - "DiggerItemAccessor", "shears.SnowGolemMixin", "MinecraftServerMixin", "NetherBiomeDataMixin", "PistonBaseBlockMixin", "TheEndBiomeDataMixin", + "BlockStateBaseMixin", "ChunkGeneratorMixin", "WorldGenRegionMixin", + "DiggerItemAccessor", "DimensionTypeMixin", "RecipeManagerMixin", "RecipeManagerMixin", @@ -39,11 +43,10 @@ "BiomeSourceMixin", "AnvilBlockMixin", "AnvilMenuMixin", + "ItemStackMixin", "TagLoaderMixin", - "MainMixin", "BiomeAccessor", - "StructureFeatureAccessor", - "StructureFeaturesAccessor" + "MainMixin" ], "injectors": { "defaultRequire": 1