From e551d92fa9ba131e1231df958eec976fabdba59d Mon Sep 17 00:00:00 2001 From: DragonEggBedrockBreaking <68545280+DragonEggBedrockBreaking@users.noreply.github.com> Date: Mon, 28 Oct 2024 16:18:35 +0000 Subject: [PATCH] Update to 1.21.2/1.21.3 --- build.gradle.kts | 10 ++-- .../config/data/DataDefinitions.java | 53 +++++++++---------- .../config/data/DataUtils.java | 8 +-- .../config/data/SqlManager.java | 7 +-- .../config/gui/WorldgenConfigScreen.java | 6 +-- .../function/MixinRedstoneWireBlock.java | 4 +- .../interaction/MixinBlockStateBase.java | 5 +- .../redstone_timings/MixinObserverBlock.java | 2 +- .../mixin/feature/enchantment/MixinBlock.java | 2 +- .../entity/breeding/MixinVillager.java | 24 ++++----- .../entity/experience/MixinLivingEntity.java | 5 +- .../other/MixinDragonStrafePlayerPhase.java | 6 +-- .../feature/entity/other/MixinEntity.java | 19 ++++++- .../feature/entity/other/MixinPainting.java | 4 +- .../feature/entity/other/MixinPlayer.java | 5 +- .../entity/other/MixinServerLevel.java | 24 --------- .../entity/player/hunger/MixinFoodData.java | 2 +- .../player/hunger/MixinFoodProperties.java | 36 +++++++++++++ .../entity/player/hunger/MixinPlayer.java | 15 ------ .../entity/spawning/MixinBaseSpawner.java | 11 +--- .../spawning/spawning/MixinCatSpawner.java | 2 +- .../item/food/MixinFoodProperties.java | 40 ++++++++++++++ .../mixin/feature/item/food/MixinPlayer.java | 46 ---------------- .../other/MixinAbstractCauldronBlock.java | 6 +-- ...eBlockEntity.java => MixinFuelValues.java} | 12 ++--- .../item/potion/MixinPotionContents.java | 32 +++++++++++ .../feature/item/potion/MixinPotionItem.java | 29 ---------- .../item/potion/MixinThrownPotion.java | 12 ----- .../feature/misc/MixinServerRecipeBook.java | 18 +++---- .../mixin/util/MixinPlayerList.java | 2 +- common/src/main/resources/vanilla_disable.aw | 3 +- .../resources/vanilla_disable.mixins.json | 8 +-- .../resources/META-INF/accesstransformer.cfg | 3 +- 33 files changed, 223 insertions(+), 238 deletions(-) delete mode 100644 common/src/main/java/uk/debb/vanilla_disable/mixin/feature/entity/other/MixinServerLevel.java create mode 100644 common/src/main/java/uk/debb/vanilla_disable/mixin/feature/entity/player/hunger/MixinFoodProperties.java create mode 100644 common/src/main/java/uk/debb/vanilla_disable/mixin/feature/item/food/MixinFoodProperties.java delete mode 100644 common/src/main/java/uk/debb/vanilla_disable/mixin/feature/item/food/MixinPlayer.java rename common/src/main/java/uk/debb/vanilla_disable/mixin/feature/item/other/{MixinAbstractFurnaceBlockEntity.java => MixinFuelValues.java} (70%) create mode 100644 common/src/main/java/uk/debb/vanilla_disable/mixin/feature/item/potion/MixinPotionContents.java delete mode 100644 common/src/main/java/uk/debb/vanilla_disable/mixin/feature/item/potion/MixinPotionItem.java diff --git a/build.gradle.kts b/build.gradle.kts index 391788c7..f069c07c 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -14,9 +14,9 @@ val MAVEN_GROUP by extra { "uk.debb" } val LICENSE by extra { "MPL-2.0" } val MOD_VERSION by extra { "4.0.3" } -val MINECRAFT_VERSION by extra { "1.21.1" } -val MINECRAFT_VERSION_RANGE_FABRIC by extra { ">=1.21" } -val MINECRAFT_VERSION_RANGE_NEOFORGE by extra { "[1.21,1.22)" } +val MINECRAFT_VERSION by extra { "1.21.3" } +val MINECRAFT_VERSION_RANGE_FABRIC by extra { ">=1.21.2" } +val MINECRAFT_VERSION_RANGE_NEOFORGE by extra { "[1.21.2,1.22)" } val H2_VERSION by extra { "2.3.232" } val ASM_VERSION by extra { "9.7.1" } val PARCHMENT_MC_VERSION by extra { "1.21" } @@ -25,8 +25,8 @@ val MIXIN_EXTRAS_VERSION by extra { "0.4.1" } val FABRIC_MIXIN_VERSION by extra { "0.15.4+mixin.0.8.7" } val FABRIC_LOADER_VERSION by extra { "0.16.8" } val FABRIC_LOADER_VERSION_RANGE by extra { ">=0.15.10" } -val NEOFORGE_VERSION by extra { "21.1.72"} -val NEOFORGE_LOADER_VERSION_RANGE by extra { ">=21.1.0" } +val NEOFORGE_VERSION by extra { "21.3.4-beta"} +val NEOFORGE_LOADER_VERSION_RANGE by extra { ">=21.2.0-beta" } allprojects { apply(plugin = "java") diff --git a/common/src/main/java/uk/debb/vanilla_disable/config/data/DataDefinitions.java b/common/src/main/java/uk/debb/vanilla_disable/config/data/DataDefinitions.java index 06037f52..62969d8e 100644 --- a/common/src/main/java/uk/debb/vanilla_disable/config/data/DataDefinitions.java +++ b/common/src/main/java/uk/debb/vanilla_disable/config/data/DataDefinitions.java @@ -21,18 +21,16 @@ import net.minecraft.server.MinecraftServer; import net.minecraft.stats.StatType; import net.minecraft.stats.Stats; +import net.minecraft.tags.ItemTags; import net.minecraft.world.damagesource.DamageType; import net.minecraft.world.effect.MobEffect; import net.minecraft.world.effect.MobEffects; -import net.minecraft.world.entity.Entity; -import net.minecraft.world.entity.EntityType; -import net.minecraft.world.entity.LivingEntity; -import net.minecraft.world.entity.MobCategory; +import net.minecraft.world.entity.*; import net.minecraft.world.entity.animal.Animal; import net.minecraft.world.entity.decoration.PaintingVariant; -import net.minecraft.world.entity.npc.Villager; import net.minecraft.world.entity.npc.VillagerProfession; import net.minecraft.world.entity.npc.VillagerType; +import net.minecraft.world.entity.vehicle.AbstractBoat; import net.minecraft.world.food.FoodProperties; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; @@ -42,8 +40,8 @@ import net.minecraft.world.item.enchantment.Enchantment; import net.minecraft.world.level.biome.Biome; import net.minecraft.world.level.block.*; -import net.minecraft.world.level.block.entity.AbstractFurnaceBlockEntity; import net.minecraft.world.level.block.entity.BlockEntityType; +import net.minecraft.world.level.block.entity.FuelValues; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.levelgen.placement.PlacedFeature; import net.minecraft.world.level.levelgen.structure.Structure; @@ -52,7 +50,6 @@ import java.util.Arrays; import java.util.List; -import java.util.Map; import java.util.Objects; import static uk.debb.vanilla_disable.config.data.DataType.*; @@ -87,22 +84,22 @@ public class DataDefinitions { public static void populateRegistries() { RegistryAccess registryAccess = server.registryAccess(); - blockRegistry = registryAccess.registryOrThrow(Registries.BLOCK); - biomeRegistry = registryAccess.registryOrThrow(Registries.BIOME); - blockEntityRegistry = registryAccess.registryOrThrow(Registries.BLOCK_ENTITY_TYPE); - customStatRegistry = registryAccess.registryOrThrow(Registries.CUSTOM_STAT); - damageTypeRegistry = registryAccess.registryOrThrow(Registries.DAMAGE_TYPE); - enchantmentRegistry = registryAccess.registryOrThrow(Registries.ENCHANTMENT); - entityTypeRegistry = registryAccess.registryOrThrow(Registries.ENTITY_TYPE); - itemRegistry = registryAccess.registryOrThrow(Registries.ITEM); - mobEffectRegistry = registryAccess.registryOrThrow(Registries.MOB_EFFECT); - paintingVariantRegistry = registryAccess.registryOrThrow(Registries.PAINTING_VARIANT); - placedFeatureRegistry = registryAccess.registryOrThrow(Registries.PLACED_FEATURE); - potionRegistry = registryAccess.registryOrThrow(Registries.POTION); - statTypeRegistry = registryAccess.registryOrThrow(Registries.STAT_TYPE); - structureRegistry = registryAccess.registryOrThrow(Registries.STRUCTURE); - villagerProfessionRegistry = registryAccess.registryOrThrow(Registries.VILLAGER_PROFESSION); - villagerTypeRegistry = registryAccess.registryOrThrow(Registries.VILLAGER_TYPE); + blockRegistry = registryAccess.lookupOrThrow(Registries.BLOCK); + biomeRegistry = registryAccess.lookupOrThrow(Registries.BIOME); + blockEntityRegistry = registryAccess.lookupOrThrow(Registries.BLOCK_ENTITY_TYPE); + customStatRegistry = registryAccess.lookupOrThrow(Registries.CUSTOM_STAT); + damageTypeRegistry = registryAccess.lookupOrThrow(Registries.DAMAGE_TYPE); + enchantmentRegistry = registryAccess.lookupOrThrow(Registries.ENCHANTMENT); + entityTypeRegistry = registryAccess.lookupOrThrow(Registries.ENTITY_TYPE); + itemRegistry = registryAccess.lookupOrThrow(Registries.ITEM); + mobEffectRegistry = registryAccess.lookupOrThrow(Registries.MOB_EFFECT); + paintingVariantRegistry = registryAccess.lookupOrThrow(Registries.PAINTING_VARIANT); + placedFeatureRegistry = registryAccess.lookupOrThrow(Registries.PLACED_FEATURE); + potionRegistry = registryAccess.lookupOrThrow(Registries.POTION); + statTypeRegistry = registryAccess.lookupOrThrow(Registries.STAT_TYPE); + structureRegistry = registryAccess.lookupOrThrow(Registries.STRUCTURE); + villagerProfessionRegistry = registryAccess.lookupOrThrow(Registries.VILLAGER_PROFESSION); + villagerTypeRegistry = registryAccess.lookupOrThrow(Registries.VILLAGER_TYPE); } public static void populateCols() { @@ -306,7 +303,7 @@ private static void populateRows() { put(Objects.requireNonNull(entityTypeRegistry.getKey(entityType)).toString(), new Object2ObjectOpenHashMap<>() {{ Entity entity = null; if (!entityType.equals(EntityType.ENDER_DRAGON)) { - entity = entityType.create(server.overworld()); + entity = entityType.create(server.overworld(), EntitySpawnReason.COMMAND); } put("can_player_interact", "true"); @@ -376,7 +373,7 @@ private static void populateRows() { villagerTypeRegistry.keySet().forEach(type -> put(lightCleanup(type) + "_type", "true")); put("can_breed", "true"); itemRegistry.forEach(item -> { - boolean villagerWants = Villager.WANTED_ITEMS.contains(item); + boolean villagerWants = item.getDefaultInstance().is(ItemTags.VILLAGER_PICKS_UP); put("can_breed_with_" + lightCleanup(Objects.requireNonNull(itemRegistry.getKey(item)).toString()), String.valueOf(villagerWants)); @@ -431,7 +428,7 @@ private static void populateRows() { put("can_exist", "true"); - if (entityType.equals(EntityType.BOAT)) { + if (entity instanceof AbstractBoat) { put("alpha_behaviour", "false"); } @@ -561,6 +558,7 @@ private static void populateRows() { put("can_be_placed_by_command", "true"); }})); }}); + FuelValues fuelValues = server.overworld().fuelValues(); rowData.put("items", new Object2ObjectOpenHashMap<>() {{ itemRegistry.forEach((item) -> put(Objects.requireNonNull(itemRegistry.getKey(item)).toString(), new Object2ObjectOpenHashMap<>() {{ @@ -602,8 +600,7 @@ private static void populateRows() { put("cauldron_interaction", "true"); } - Map fuels = AbstractFurnaceBlockEntity.getFuel(); - put("fuel_duration", String.valueOf(fuels.getOrDefault(item, 0))); + put("fuel_duration", String.valueOf(fuelValues.values.getOrDefault(item, 0))); put("can_break_blocks_in_creative", String.valueOf(!(item instanceof SwordItem))); put("can_be_given_by_command", "true"); diff --git a/common/src/main/java/uk/debb/vanilla_disable/config/data/DataUtils.java b/common/src/main/java/uk/debb/vanilla_disable/config/data/DataUtils.java index 592ba7fb..b0399c7a 100644 --- a/common/src/main/java/uk/debb/vanilla_disable/config/data/DataUtils.java +++ b/common/src/main/java/uk/debb/vanilla_disable/config/data/DataUtils.java @@ -69,13 +69,13 @@ private static boolean hasBiome(ResourceKey level, Holder biome) { } public static Holder getDefaultBiome(Holder biome) { - if (server == null) return biomeRegistry.getHolderOrThrow(Biomes.PLAINS); + if (server == null) return Holder.direct(biomeRegistry.getValueOrThrow(Biomes.PLAINS)); if (hasBiome(Level.NETHER, biome)) { - return biomeRegistry.getHolderOrThrow(Biomes.NETHER_WASTES); + return Holder.direct(biomeRegistry.getValueOrThrow(Biomes.NETHER_WASTES)); } else if (hasBiome(Level.END, biome)) { - return biomeRegistry.getHolderOrThrow(Biomes.THE_END); + return Holder.direct(biomeRegistry.getValueOrThrow(Biomes.THE_END)); } - return biomeRegistry.getHolderOrThrow(Biomes.PLAINS); + return Holder.direct(biomeRegistry.getValueOrThrow(Biomes.PLAINS)); } public static Holder getBiome(Holder original) { diff --git a/common/src/main/java/uk/debb/vanilla_disable/config/data/SqlManager.java b/common/src/main/java/uk/debb/vanilla_disable/config/data/SqlManager.java index 4bb307f0..d5e4352e 100644 --- a/common/src/main/java/uk/debb/vanilla_disable/config/data/SqlManager.java +++ b/common/src/main/java/uk/debb/vanilla_disable/config/data/SqlManager.java @@ -22,7 +22,7 @@ import java.sql.*; import java.util.List; import java.util.Map; -import java.util.Objects; +import java.util.Optional; import java.util.Scanner; import java.util.stream.Collectors; @@ -229,8 +229,9 @@ private static List getRawBreedingItems(String row) { String columnName = resultSetMetaData.getColumnName(i); if (columnName.startsWith("can_breed_with_")) { if (resultSet.getBoolean(columnName)) { - items.add(Objects.requireNonNull(itemRegistry.get(ResourceLocation.bySeparator( - columnName.replace("can_breed_with_", "minecraft:"), ':')))); + Optional item = itemRegistry.getOptional(ResourceLocation.bySeparator( + columnName.replace("can_breed_with_", "minecraft:"), ':')); + item.ifPresent(items::add); } } } diff --git a/common/src/main/java/uk/debb/vanilla_disable/config/gui/WorldgenConfigScreen.java b/common/src/main/java/uk/debb/vanilla_disable/config/gui/WorldgenConfigScreen.java index 1bfdc470..c5b704ec 100644 --- a/common/src/main/java/uk/debb/vanilla_disable/config/gui/WorldgenConfigScreen.java +++ b/common/src/main/java/uk/debb/vanilla_disable/config/gui/WorldgenConfigScreen.java @@ -48,9 +48,9 @@ public WorldgenConfigScreen(CreateWorldScreen lastScreen) { @Override protected void init() { RegistryAccess.Frozen registryAccess = this.lastScreen.getUiState().getSettings().worldgenRegistries().compositeAccess(); - DataDefinitions.biomeRegistry = registryAccess.registryOrThrow(Registries.BIOME); - DataDefinitions.structureRegistry = registryAccess.registryOrThrow(Registries.STRUCTURE); - DataDefinitions.placedFeatureRegistry = registryAccess.registryOrThrow(Registries.PLACED_FEATURE); + DataDefinitions.biomeRegistry = registryAccess.lookupOrThrow(Registries.BIOME); + DataDefinitions.structureRegistry = registryAccess.lookupOrThrow(Registries.STRUCTURE); + DataDefinitions.placedFeatureRegistry = registryAccess.lookupOrThrow(Registries.PLACED_FEATURE); tabNavigationBar = TabNavigationBar.builder(this.tabManager, this.width) .addTabs( diff --git a/common/src/main/java/uk/debb/vanilla_disable/mixin/feature/block/function/MixinRedstoneWireBlock.java b/common/src/main/java/uk/debb/vanilla_disable/mixin/feature/block/function/MixinRedstoneWireBlock.java index 865d3190..79c95ded 100644 --- a/common/src/main/java/uk/debb/vanilla_disable/mixin/feature/block/function/MixinRedstoneWireBlock.java +++ b/common/src/main/java/uk/debb/vanilla_disable/mixin/feature/block/function/MixinRedstoneWireBlock.java @@ -14,8 +14,8 @@ @Mixin(RedStoneWireBlock.class) public abstract class MixinRedstoneWireBlock { - @ModifyReturnValue(method = "getWireSignal", at = @At("RETURN")) - private int vanillaDisable$getWireSignal(int original) { + @ModifyReturnValue(method = "getBlockSignal", at = @At("RETURN")) + private int vanillaDisable$getBlockSignal(int original) { if (!SqlManager.getBoolean("blocks", "minecraft:redstone_wire", "works")) { return 0; } diff --git a/common/src/main/java/uk/debb/vanilla_disable/mixin/feature/block/interaction/MixinBlockStateBase.java b/common/src/main/java/uk/debb/vanilla_disable/mixin/feature/block/interaction/MixinBlockStateBase.java index e0f5ecd7..e2e6759a 100644 --- a/common/src/main/java/uk/debb/vanilla_disable/mixin/feature/block/interaction/MixinBlockStateBase.java +++ b/common/src/main/java/uk/debb/vanilla_disable/mixin/feature/block/interaction/MixinBlockStateBase.java @@ -11,7 +11,6 @@ import com.llamalad7.mixinextras.injector.wrapoperation.Operation; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; -import net.minecraft.world.ItemInteractionResult; import net.minecraft.world.MenuProvider; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; @@ -40,12 +39,12 @@ public abstract class MixinBlockStateBase { } @WrapMethod(method = "useItemOn") - private ItemInteractionResult vanillaDisable$useItemOn(ItemStack stack, Level level, Player player, InteractionHand hand, BlockHitResult hitResult, Operation original) { + private InteractionResult vanillaDisable$useItemOn(ItemStack stack, Level level, Player player, InteractionHand hand, BlockHitResult hitResult, Operation original) { String block = DataUtils.getKeyFromBlockRegistry(this.getBlock()); if (SqlManager.getBoolean("blocks", block, "can_interact")) { return original.call(stack, level, player, hand, hitResult); } - return ItemInteractionResult.FAIL; + return InteractionResult.FAIL; } @ModifyReturnValue(method = "getMenuProvider", at = @At("RETURN")) diff --git a/common/src/main/java/uk/debb/vanilla_disable/mixin/feature/block/redstone_timings/MixinObserverBlock.java b/common/src/main/java/uk/debb/vanilla_disable/mixin/feature/block/redstone_timings/MixinObserverBlock.java index 99c0b644..cdb436f9 100644 --- a/common/src/main/java/uk/debb/vanilla_disable/mixin/feature/block/redstone_timings/MixinObserverBlock.java +++ b/common/src/main/java/uk/debb/vanilla_disable/mixin/feature/block/redstone_timings/MixinObserverBlock.java @@ -18,7 +18,7 @@ public abstract class MixinObserverBlock { method = "startSignal", at = @At( value = "INVOKE", - target = "Lnet/minecraft/world/level/LevelAccessor;scheduleTick(Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/level/block/Block;I)V" + target = "Lnet/minecraft/world/level/ScheduledTickAccess;scheduleTick(Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/level/block/Block;I)V" ), index = 2 ) diff --git a/common/src/main/java/uk/debb/vanilla_disable/mixin/feature/enchantment/MixinBlock.java b/common/src/main/java/uk/debb/vanilla_disable/mixin/feature/enchantment/MixinBlock.java index 88b0cedb..a45fed47 100644 --- a/common/src/main/java/uk/debb/vanilla_disable/mixin/feature/enchantment/MixinBlock.java +++ b/common/src/main/java/uk/debb/vanilla_disable/mixin/feature/enchantment/MixinBlock.java @@ -19,7 +19,7 @@ public abstract class MixinBlock { method = "getDrops(Lnet/minecraft/world/level/block/state/BlockState;Lnet/minecraft/server/level/ServerLevel;Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/level/block/entity/BlockEntity;Lnet/minecraft/world/entity/Entity;Lnet/minecraft/world/item/ItemStack;)Ljava/util/List;", at = @At( value = "INVOKE", - target = "Lnet/minecraft/world/level/storage/loot/LootParams$Builder;withParameter(Lnet/minecraft/world/level/storage/loot/parameters/LootContextParam;Ljava/lang/Object;)Lnet/minecraft/world/level/storage/loot/LootParams$Builder;", + target = "Lnet/minecraft/world/level/storage/loot/LootParams$Builder;withParameter(Lnet/minecraft/util/context/ContextKey;Ljava/lang/Object;)Lnet/minecraft/world/level/storage/loot/LootParams$Builder;", ordinal = 1 ), index = 1 diff --git a/common/src/main/java/uk/debb/vanilla_disable/mixin/feature/entity/breeding/MixinVillager.java b/common/src/main/java/uk/debb/vanilla_disable/mixin/feature/entity/breeding/MixinVillager.java index 841166e6..707eb28e 100644 --- a/common/src/main/java/uk/debb/vanilla_disable/mixin/feature/entity/breeding/MixinVillager.java +++ b/common/src/main/java/uk/debb/vanilla_disable/mixin/feature/entity/breeding/MixinVillager.java @@ -6,26 +6,26 @@ package uk.debb.vanilla_disable.mixin.feature.entity.breeding; -import com.llamalad7.mixinextras.injector.ModifyExpressionValue; +import com.llamalad7.mixinextras.injector.ModifyReturnValue; +import net.minecraft.server.level.ServerLevel; import net.minecraft.world.entity.npc.Villager; +import net.minecraft.world.entity.npc.VillagerData; import net.minecraft.world.item.ItemStack; import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; import uk.debb.vanilla_disable.config.data.DataUtils; import uk.debb.vanilla_disable.config.data.SqlManager; @Mixin(Villager.class) public abstract class MixinVillager { - @ModifyExpressionValue( - method = "wantsToPickUp", - at = @At( - value = "INVOKE", - target = "Ljava/util/Set;contains(Ljava/lang/Object;)Z" - ) - ) - private boolean vanillaDisable$contains(boolean original, ItemStack stack) { - String name = "can_breed_with_" + DataUtils.lightCleanup(DataUtils.getKeyFromItemRegistry(stack.getItem())); - return SqlManager.getBoolean("entities", "minecraft:villager", name) - && ((Villager) (Object) this).getInventory().canAddItem(stack); + @Shadow public abstract VillagerData getVillagerData(); + + @ModifyReturnValue(method = "wantsToPickUp", at = @At("RETURN")) + private boolean vanillaDisable$wantsToPickUp(boolean original, ServerLevel serverLevel, ItemStack itemStack) { + String name = "can_breed_with_" + DataUtils.lightCleanup(DataUtils.getKeyFromItemRegistry(itemStack.getItem())); + return (SqlManager.getBoolean("entities", "minecraft:villager", name) || + this.getVillagerData().getProfession().requestedItems().contains(itemStack.getItem())) && + ((Villager) (Object) this).getInventory().canAddItem(itemStack); } } diff --git a/common/src/main/java/uk/debb/vanilla_disable/mixin/feature/entity/experience/MixinLivingEntity.java b/common/src/main/java/uk/debb/vanilla_disable/mixin/feature/entity/experience/MixinLivingEntity.java index 63c885d4..db6e56a2 100644 --- a/common/src/main/java/uk/debb/vanilla_disable/mixin/feature/entity/experience/MixinLivingEntity.java +++ b/common/src/main/java/uk/debb/vanilla_disable/mixin/feature/entity/experience/MixinLivingEntity.java @@ -8,6 +8,7 @@ import com.llamalad7.mixinextras.injector.wrapmethod.WrapMethod; import com.llamalad7.mixinextras.injector.wrapoperation.Operation; +import net.minecraft.server.level.ServerLevel; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.LivingEntity; import org.spongepowered.asm.mixin.Mixin; @@ -17,10 +18,10 @@ @Mixin(LivingEntity.class) public abstract class MixinLivingEntity { @WrapMethod(method = "dropExperience") - private void vanillaDisable$dropExperience(Entity entity, Operation original) { + private void vanillaDisable$dropExperience(ServerLevel serverLevel, Entity entity, Operation original) { String entity_str = DataUtils.getKeyFromEntityTypeRegistry(((LivingEntity) (Object) this).getType()); if (SqlManager.getBoolean("entities", entity_str, "can_drop_xp")) { - original.call(entity); + original.call(serverLevel, entity); } } } diff --git a/common/src/main/java/uk/debb/vanilla_disable/mixin/feature/entity/other/MixinDragonStrafePlayerPhase.java b/common/src/main/java/uk/debb/vanilla_disable/mixin/feature/entity/other/MixinDragonStrafePlayerPhase.java index d469a8a6..7e2e2f8f 100644 --- a/common/src/main/java/uk/debb/vanilla_disable/mixin/feature/entity/other/MixinDragonStrafePlayerPhase.java +++ b/common/src/main/java/uk/debb/vanilla_disable/mixin/feature/entity/other/MixinDragonStrafePlayerPhase.java @@ -7,9 +7,9 @@ package uk.debb.vanilla_disable.mixin.feature.entity.other; import com.llamalad7.mixinextras.injector.v2.WrapWithCondition; +import net.minecraft.server.level.ServerLevel; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.boss.enderdragon.phases.DragonStrafePlayerPhase; -import net.minecraft.world.level.Level; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import uk.debb.vanilla_disable.config.data.SqlManager; @@ -20,10 +20,10 @@ public abstract class MixinDragonStrafePlayerPhase { method = "doServerTick", at = @At( value = "INVOKE", - target = "Lnet/minecraft/world/level/Level;addFreshEntity(Lnet/minecraft/world/entity/Entity;)Z" + target = "Lnet/minecraft/server/level/ServerLevel;addFreshEntity(Lnet/minecraft/world/entity/Entity;)Z" ) ) - private boolean vanillaDisable$addFreshEntity(Level instance, Entity entity) { + private boolean vanillaDisable$addFreshEntity(ServerLevel instance, Entity entity) { return SqlManager.getBoolean("entities", "minecraft:ender_dragon", "can_shoot_fireballs"); } } diff --git a/common/src/main/java/uk/debb/vanilla_disable/mixin/feature/entity/other/MixinEntity.java b/common/src/main/java/uk/debb/vanilla_disable/mixin/feature/entity/other/MixinEntity.java index 20e0a78a..dc63bdd4 100644 --- a/common/src/main/java/uk/debb/vanilla_disable/mixin/feature/entity/other/MixinEntity.java +++ b/common/src/main/java/uk/debb/vanilla_disable/mixin/feature/entity/other/MixinEntity.java @@ -9,6 +9,7 @@ import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.vehicle.Boat; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.state.BlockState; @@ -17,6 +18,7 @@ import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; +import uk.debb.vanilla_disable.config.data.DataUtils; import uk.debb.vanilla_disable.config.data.SqlManager; @Mixin(Entity.class) @@ -26,11 +28,17 @@ public abstract class MixinEntity { @Shadow private Level level; + @Shadow + public abstract void discard(); + + @Shadow + public abstract EntityType getType(); + @SuppressWarnings("deprecation") @Inject(method = "onInsideBlock", at = @At("HEAD")) private void vanillaDisable$onInsideBlock(CallbackInfo ci) { if (((Entity) (Object) this) instanceof Boat boat && SqlManager.getBoolean("entities", "minecraft:boat", "alpha_behaviour")) { - if (!boat.checkInWater()) { + if (!boat.isInWaterOrBubble()) { boat.hurt(this.level.damageSources().generic(), Float.MAX_VALUE); } else { for (Direction direction : Direction.Plane.HORIZONTAL) { @@ -42,4 +50,13 @@ public abstract class MixinEntity { } } } + + @Inject(method = "checkDespawn", at = @At("HEAD"), cancellable = true) + private void vanillaDisable$checkDespawn(CallbackInfo ci) { + String entityName = DataUtils.getKeyFromEntityTypeRegistry(this.getType()); + if (!SqlManager.getBoolean("entities", entityName, "can_exist")) { + this.discard(); + ci.cancel(); + } + } } diff --git a/common/src/main/java/uk/debb/vanilla_disable/mixin/feature/entity/other/MixinPainting.java b/common/src/main/java/uk/debb/vanilla_disable/mixin/feature/entity/other/MixinPainting.java index d7d50520..8aba9cdf 100644 --- a/common/src/main/java/uk/debb/vanilla_disable/mixin/feature/entity/other/MixinPainting.java +++ b/common/src/main/java/uk/debb/vanilla_disable/mixin/feature/entity/other/MixinPainting.java @@ -17,14 +17,12 @@ import uk.debb.vanilla_disable.config.data.DataUtils; import uk.debb.vanilla_disable.config.data.SqlManager; -import java.util.Objects; - @Mixin(Painting.class) public abstract class MixinPainting { @ModifyReturnValue(method = "getVariant()Lnet/minecraft/core/Holder;", at = @At("RETURN")) private Holder vanillaDisable$getVariant(Holder original) { if (!SqlManager.getBoolean("entities", "minecraft:painting", DataUtils.lightCleanup(original.value().assetId()) + "_painting")) { - return new Holder.Direct<>(Objects.requireNonNull(DataDefinitions.paintingVariantRegistry.get(PaintingVariants.KEBAB))); + return new Holder.Direct<>(DataDefinitions.paintingVariantRegistry.getValueOrThrow(PaintingVariants.KEBAB)); } return original; } diff --git a/common/src/main/java/uk/debb/vanilla_disable/mixin/feature/entity/other/MixinPlayer.java b/common/src/main/java/uk/debb/vanilla_disable/mixin/feature/entity/other/MixinPlayer.java index e7aade07..d78d5b57 100644 --- a/common/src/main/java/uk/debb/vanilla_disable/mixin/feature/entity/other/MixinPlayer.java +++ b/common/src/main/java/uk/debb/vanilla_disable/mixin/feature/entity/other/MixinPlayer.java @@ -10,6 +10,7 @@ import com.llamalad7.mixinextras.injector.wrapmethod.WrapMethod; import com.llamalad7.mixinextras.injector.wrapoperation.Operation; import net.minecraft.core.component.DataComponents; +import net.minecraft.server.level.ServerLevel; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; import net.minecraft.world.damagesource.DamageSource; @@ -31,9 +32,9 @@ @Mixin(Player.class) public abstract class MixinPlayer { @ModifyReturnValue(method = "isInvulnerableTo", at = @At(value = "RETURN")) - private boolean vanillaDisable$isInvulnerableTo(boolean original, DamageSource source) { + private boolean vanillaDisable$isInvulnerableTo(boolean original, ServerLevel serverLevel, DamageSource damageSource) { return original || !SqlManager.getBoolean("entities", "minecraft:player", - DataUtils.lightCleanup(Objects.requireNonNull(DataDefinitions.damageTypeRegistry.getKey(source.type()))) + "_damage"); + DataUtils.lightCleanup(Objects.requireNonNull(DataDefinitions.damageTypeRegistry.getKey(damageSource.type()))) + "_damage"); } @SuppressWarnings("ConstantConditions") diff --git a/common/src/main/java/uk/debb/vanilla_disable/mixin/feature/entity/other/MixinServerLevel.java b/common/src/main/java/uk/debb/vanilla_disable/mixin/feature/entity/other/MixinServerLevel.java deleted file mode 100644 index 72e0eb9c..00000000 --- a/common/src/main/java/uk/debb/vanilla_disable/mixin/feature/entity/other/MixinServerLevel.java +++ /dev/null @@ -1,24 +0,0 @@ -/* - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at https://mozilla.org/MPL/2.0/. - */ - -package uk.debb.vanilla_disable.mixin.feature.entity.other; - -import com.llamalad7.mixinextras.injector.ModifyReturnValue; -import net.minecraft.server.level.ServerLevel; -import net.minecraft.world.entity.Entity; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; -import uk.debb.vanilla_disable.config.data.DataUtils; -import uk.debb.vanilla_disable.config.data.SqlManager; - -@Mixin(ServerLevel.class) -public abstract class MixinServerLevel { - @ModifyReturnValue(method = "shouldDiscardEntity", at = @At("RETURN")) - private boolean vanillaDisable$shouldDiscardEntity(boolean original, Entity entity) { - String entityName = DataUtils.getKeyFromEntityTypeRegistry(entity.getType()); - return original || !SqlManager.getBoolean("entities", entityName, "can_exist"); - } -} diff --git a/common/src/main/java/uk/debb/vanilla_disable/mixin/feature/entity/player/hunger/MixinFoodData.java b/common/src/main/java/uk/debb/vanilla_disable/mixin/feature/entity/player/hunger/MixinFoodData.java index 51aa4df8..897d3437 100644 --- a/common/src/main/java/uk/debb/vanilla_disable/mixin/feature/entity/player/hunger/MixinFoodData.java +++ b/common/src/main/java/uk/debb/vanilla_disable/mixin/feature/entity/player/hunger/MixinFoodData.java @@ -19,7 +19,7 @@ public abstract class MixinFoodData { method = "tick", at = @At( value = "INVOKE", - target = "Lnet/minecraft/world/level/Level;getDifficulty()Lnet/minecraft/world/Difficulty;" + target = "Lnet/minecraft/server/level/ServerLevel;getDifficulty()Lnet/minecraft/world/Difficulty;" ) ) private Difficulty vanillaDisable$getDifficulty(Difficulty original) { diff --git a/common/src/main/java/uk/debb/vanilla_disable/mixin/feature/entity/player/hunger/MixinFoodProperties.java b/common/src/main/java/uk/debb/vanilla_disable/mixin/feature/entity/player/hunger/MixinFoodProperties.java new file mode 100644 index 00000000..27c6e202 --- /dev/null +++ b/common/src/main/java/uk/debb/vanilla_disable/mixin/feature/entity/player/hunger/MixinFoodProperties.java @@ -0,0 +1,36 @@ +/* + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at https://mozilla.org/MPL/2.0/. + */ + +package uk.debb.vanilla_disable.mixin.feature.entity.player.hunger; + +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.food.FoodProperties; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.component.Consumable; +import net.minecraft.world.level.Level; +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.CallbackInfo; +import uk.debb.vanilla_disable.config.data.DataUtils; +import uk.debb.vanilla_disable.config.data.SqlManager; + +@Mixin(FoodProperties.class) +public abstract class MixinFoodProperties { + @Inject( + method = "onConsume", + at = @At( + value = "INVOKE", + target = "Lnet/minecraft/world/food/FoodData;eat(Lnet/minecraft/world/food/FoodProperties;)V" + ) + ) + private void vanillaDisable$onConsume(Level level, LivingEntity livingEntity, ItemStack itemStack, Consumable consumable, CallbackInfo ci) { + int nutrition = SqlManager.getInt("items", DataUtils.getKeyFromItemRegistry(itemStack.getItem()), "nutrition"); + if (SqlManager.getBoolean("entities", "minecraft:player", "beta_hunger")) { + livingEntity.setHealth(livingEntity.getHealth() + nutrition); + } + } +} diff --git a/common/src/main/java/uk/debb/vanilla_disable/mixin/feature/entity/player/hunger/MixinPlayer.java b/common/src/main/java/uk/debb/vanilla_disable/mixin/feature/entity/player/hunger/MixinPlayer.java index 7da677ea..45f180f9 100644 --- a/common/src/main/java/uk/debb/vanilla_disable/mixin/feature/entity/player/hunger/MixinPlayer.java +++ b/common/src/main/java/uk/debb/vanilla_disable/mixin/feature/entity/player/hunger/MixinPlayer.java @@ -9,27 +9,12 @@ import com.llamalad7.mixinextras.injector.ModifyExpressionValue; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.player.Player; -import net.minecraft.world.food.FoodProperties; -import net.minecraft.world.item.ItemStack; -import net.minecraft.world.level.Level; 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 uk.debb.vanilla_disable.config.data.DataUtils; import uk.debb.vanilla_disable.config.data.SqlManager; @Mixin(Player.class) public abstract class MixinPlayer { - @Inject(method = "eat", at = @At("HEAD")) - private void vanillaDisable$eat(Level level, ItemStack food, FoodProperties foodProperties, CallbackInfoReturnable cir) { - LivingEntity livingEntity = (LivingEntity) (Object) this; - if (foodProperties != null && SqlManager.getBoolean("entities", "minecraft:player", "beta_hunger")) { - int nutrition = SqlManager.getInt("items", DataUtils.getKeyFromItemRegistry(food.getItem()), "nutrition"); - livingEntity.setHealth(livingEntity.getHealth() + nutrition); - } - } - @ModifyExpressionValue( method = "canEat", at = @At( diff --git a/common/src/main/java/uk/debb/vanilla_disable/mixin/feature/entity/spawning/MixinBaseSpawner.java b/common/src/main/java/uk/debb/vanilla_disable/mixin/feature/entity/spawning/MixinBaseSpawner.java index 7d40a887..d58e03e4 100644 --- a/common/src/main/java/uk/debb/vanilla_disable/mixin/feature/entity/spawning/MixinBaseSpawner.java +++ b/common/src/main/java/uk/debb/vanilla_disable/mixin/feature/entity/spawning/MixinBaseSpawner.java @@ -8,14 +8,10 @@ import com.llamalad7.mixinextras.injector.ModifyExpressionValue; import net.minecraft.core.BlockPos; -import net.minecraft.nbt.CompoundTag; import net.minecraft.server.level.ServerLevel; -import net.minecraft.util.RandomSource; import net.minecraft.world.entity.Entity; -import net.minecraft.world.entity.EntityType; import net.minecraft.world.level.BaseSpawner; import net.minecraft.world.level.Level; -import net.minecraft.world.level.SpawnData; import org.jetbrains.annotations.Nullable; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; @@ -23,12 +19,10 @@ import uk.debb.vanilla_disable.config.data.DataUtils; import uk.debb.vanilla_disable.config.data.SqlManager; -import java.util.function.Function; - @Mixin(BaseSpawner.class) public abstract class MixinBaseSpawner { @Shadow - protected abstract SpawnData getOrCreateNextSpawnData(@Nullable Level arg, RandomSource arg2, BlockPos arg3); + public abstract @Nullable Entity getOrCreateDisplayEntity(Level level, BlockPos pos); @ModifyExpressionValue( method = "serverTick", @@ -38,8 +32,7 @@ public abstract class MixinBaseSpawner { ) ) private boolean vanillaDisable$isNearPlayer(boolean original, ServerLevel serverLevel, BlockPos pos) { - CompoundTag compoundTag = this.getOrCreateNextSpawnData(serverLevel, serverLevel.getRandom(), pos).getEntityToSpawn(); - Entity entity = EntityType.loadEntityRecursive(compoundTag, serverLevel, Function.identity()); + Entity entity = this.getOrCreateDisplayEntity(serverLevel, pos); if (entity != null) { String entityType = DataUtils.getKeyFromEntityTypeRegistry(entity.getType()); if (!SqlManager.getBoolean("entities", entityType, "spawner")) { diff --git a/common/src/main/java/uk/debb/vanilla_disable/mixin/feature/entity/spawning/spawning/MixinCatSpawner.java b/common/src/main/java/uk/debb/vanilla_disable/mixin/feature/entity/spawning/spawning/MixinCatSpawner.java index 64018958..33ababef 100644 --- a/common/src/main/java/uk/debb/vanilla_disable/mixin/feature/entity/spawning/spawning/MixinCatSpawner.java +++ b/common/src/main/java/uk/debb/vanilla_disable/mixin/feature/entity/spawning/spawning/MixinCatSpawner.java @@ -19,7 +19,7 @@ public abstract class MixinCatSpawner { method = "spawnCat", at = @At( value = "INVOKE", - target = "Lnet/minecraft/world/entity/EntityType;create(Lnet/minecraft/world/level/Level;)Lnet/minecraft/world/entity/Entity;" + target = "Lnet/minecraft/world/entity/EntityType;create(Lnet/minecraft/world/level/Level;Lnet/minecraft/world/entity/EntitySpawnReason;)Lnet/minecraft/world/entity/Entity;" ) ) private Entity vanillaDisable$create(Entity original) { diff --git a/common/src/main/java/uk/debb/vanilla_disable/mixin/feature/item/food/MixinFoodProperties.java b/common/src/main/java/uk/debb/vanilla_disable/mixin/feature/item/food/MixinFoodProperties.java new file mode 100644 index 00000000..fd04be1c --- /dev/null +++ b/common/src/main/java/uk/debb/vanilla_disable/mixin/feature/item/food/MixinFoodProperties.java @@ -0,0 +1,40 @@ +/* + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at https://mozilla.org/MPL/2.0/. + */ + +package uk.debb.vanilla_disable.mixin.feature.item.food; + +import com.llamalad7.mixinextras.injector.wrapoperation.Operation; +import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.food.FoodData; +import net.minecraft.world.food.FoodProperties; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.component.Consumable; +import net.minecraft.world.level.Level; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import uk.debb.vanilla_disable.config.data.DataUtils; +import uk.debb.vanilla_disable.config.data.SqlManager; + +@Mixin(value = FoodProperties.class, priority = 999) +public abstract class MixinFoodProperties { + @Shadow + public abstract boolean canAlwaysEat(); + + @WrapOperation( + method = "onConsume", + at = @At( + value = "INVOKE", + target = "Lnet/minecraft/world/food/FoodData;eat(Lnet/minecraft/world/food/FoodProperties;)V" + ) + ) + private void vanillaDisable$onConsume(FoodData instance, FoodProperties foodProperties, Operation original, Level level, LivingEntity livingEntity, ItemStack itemStack, Consumable consumable) { + int nutrition = SqlManager.getInt("items", DataUtils.getKeyFromItemRegistry(itemStack.getItem()), "nutrition"); + double saturation = SqlManager.getDouble("items", DataUtils.getKeyFromItemRegistry(itemStack.getItem()), "saturation"); + instance.eat(new FoodProperties(nutrition, (float) saturation, canAlwaysEat())); + } +} diff --git a/common/src/main/java/uk/debb/vanilla_disable/mixin/feature/item/food/MixinPlayer.java b/common/src/main/java/uk/debb/vanilla_disable/mixin/feature/item/food/MixinPlayer.java deleted file mode 100644 index 2d50e5d0..00000000 --- a/common/src/main/java/uk/debb/vanilla_disable/mixin/feature/item/food/MixinPlayer.java +++ /dev/null @@ -1,46 +0,0 @@ -/* - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at https://mozilla.org/MPL/2.0/. - */ - -package uk.debb.vanilla_disable.mixin.feature.item.food; - -import com.llamalad7.mixinextras.injector.v2.WrapWithCondition; -import net.minecraft.world.entity.player.Player; -import net.minecraft.world.food.FoodData; -import net.minecraft.world.food.FoodProperties; -import net.minecraft.world.item.ItemStack; -import net.minecraft.world.level.Level; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; -import uk.debb.vanilla_disable.config.data.DataUtils; -import uk.debb.vanilla_disable.config.data.SqlManager; - -@Mixin(Player.class) -public abstract class MixinPlayer { - @Shadow - public abstract FoodData getFoodData(); - - @Inject(method = "eat", at = @At("HEAD")) - private void vanillaDisable$eat(Level level, ItemStack itemStack, FoodProperties foodProperties, CallbackInfoReturnable cir) { - String name = DataUtils.getKeyFromItemRegistry(itemStack.getItem()); - int nutrition = SqlManager.getInt("items", name, "nutrition"); - float saturation = (float) SqlManager.getDouble("items", name, "saturation"); - this.getFoodData().eat(nutrition, saturation); - } - - @WrapWithCondition( - method = "eat", - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/world/food/FoodData;eat(Lnet/minecraft/world/food/FoodProperties;)V" - ) - ) - private boolean vanillaDisable$eat1(FoodData instance, FoodProperties foodProperties) { - return false; - } -} diff --git a/common/src/main/java/uk/debb/vanilla_disable/mixin/feature/item/other/MixinAbstractCauldronBlock.java b/common/src/main/java/uk/debb/vanilla_disable/mixin/feature/item/other/MixinAbstractCauldronBlock.java index e5bdeacb..be849e8a 100644 --- a/common/src/main/java/uk/debb/vanilla_disable/mixin/feature/item/other/MixinAbstractCauldronBlock.java +++ b/common/src/main/java/uk/debb/vanilla_disable/mixin/feature/item/other/MixinAbstractCauldronBlock.java @@ -8,7 +8,7 @@ import net.minecraft.core.BlockPos; import net.minecraft.world.InteractionHand; -import net.minecraft.world.ItemInteractionResult; +import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.Level; @@ -25,10 +25,10 @@ @Mixin(AbstractCauldronBlock.class) public abstract class MixinAbstractCauldronBlock { @Inject(method = "useItemOn", at = @At("HEAD"), cancellable = true) - private void vanillaDisable$useItemOn(ItemStack itemStack, BlockState blockState, Level level, BlockPos blockPos, Player player, InteractionHand interactionHand, BlockHitResult blockHitResult, CallbackInfoReturnable cir) { + private void vanillaDisable$useItemOn(ItemStack itemStack, BlockState blockState, Level level, BlockPos blockPos, Player player, InteractionHand interactionHand, BlockHitResult blockHitResult, CallbackInfoReturnable cir) { String name = DataUtils.getKeyFromItemRegistry(itemStack.getItem()); if (!SqlManager.getBoolean("items", name, "cauldron_interaction")) { - cir.setReturnValue(ItemInteractionResult.FAIL); + cir.setReturnValue(InteractionResult.FAIL); } } } diff --git a/common/src/main/java/uk/debb/vanilla_disable/mixin/feature/item/other/MixinAbstractFurnaceBlockEntity.java b/common/src/main/java/uk/debb/vanilla_disable/mixin/feature/item/other/MixinFuelValues.java similarity index 70% rename from common/src/main/java/uk/debb/vanilla_disable/mixin/feature/item/other/MixinAbstractFurnaceBlockEntity.java rename to common/src/main/java/uk/debb/vanilla_disable/mixin/feature/item/other/MixinFuelValues.java index b9c5d141..f2d95372 100644 --- a/common/src/main/java/uk/debb/vanilla_disable/mixin/feature/item/other/MixinAbstractFurnaceBlockEntity.java +++ b/common/src/main/java/uk/debb/vanilla_disable/mixin/feature/item/other/MixinFuelValues.java @@ -8,16 +8,16 @@ import com.llamalad7.mixinextras.injector.ModifyReturnValue; import net.minecraft.world.item.ItemStack; -import net.minecraft.world.level.block.entity.AbstractFurnaceBlockEntity; +import net.minecraft.world.level.block.entity.FuelValues; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import uk.debb.vanilla_disable.config.data.DataUtils; import uk.debb.vanilla_disable.config.data.SqlManager; -@Mixin(AbstractFurnaceBlockEntity.class) -public abstract class MixinAbstractFurnaceBlockEntity { +@Mixin(FuelValues.class) +public abstract class MixinFuelValues { @ModifyReturnValue(method = "isFuel", at = @At("RETURN")) - private static boolean vanillaDisable$isFuel(boolean original, ItemStack stack) { + private boolean vanillaDisable$isFuel(boolean original, ItemStack stack) { String item = DataUtils.getKeyFromItemRegistry(stack.getItem()); if (SqlManager.getInt("items", item, "fuel_duration") <= 0) { return false; @@ -25,8 +25,8 @@ public abstract class MixinAbstractFurnaceBlockEntity { return original; } - @ModifyReturnValue(method = "getBurnDuration", at = @At("RETURN")) - private int vanillaDisable$getBurnDuration(int original, ItemStack fuel) { + @ModifyReturnValue(method = "burnDuration", at = @At("RETURN")) + private int vanillaDisable$BurnDuration(int original, ItemStack fuel) { String item = DataUtils.getKeyFromItemRegistry(fuel.getItem()); return SqlManager.getInt("items", item, "fuel_duration"); } diff --git a/common/src/main/java/uk/debb/vanilla_disable/mixin/feature/item/potion/MixinPotionContents.java b/common/src/main/java/uk/debb/vanilla_disable/mixin/feature/item/potion/MixinPotionContents.java new file mode 100644 index 00000000..915af981 --- /dev/null +++ b/common/src/main/java/uk/debb/vanilla_disable/mixin/feature/item/potion/MixinPotionContents.java @@ -0,0 +1,32 @@ +/* + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at https://mozilla.org/MPL/2.0/. + */ + +package uk.debb.vanilla_disable.mixin.feature.item.potion; + +import com.llamalad7.mixinextras.injector.v2.WrapWithCondition; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.alchemy.PotionContents; +import net.minecraft.world.item.component.Consumable; +import net.minecraft.world.level.Level; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import uk.debb.vanilla_disable.config.data.DataUtils; + +@Mixin(PotionContents.class) +public abstract class MixinPotionContents { + @WrapWithCondition( + method = "onConsume", + at = @At( + value = "INVOKE", + target = "Lnet/minecraft/world/item/alchemy/PotionContents;applyToLivingEntity(Lnet/minecraft/world/entity/LivingEntity;)V" + ) + ) + private boolean vanillaDisable$onConsume(PotionContents instance, LivingEntity livingEntity, Level level, LivingEntity livingEntity1, ItemStack itemStack, Consumable consumable) { + String item = DataUtils.getKeyFromItemRegistry(itemStack.getItem()); + return !DataUtils.getPotionContents(instance, item).equals(PotionContents.EMPTY); + } +} diff --git a/common/src/main/java/uk/debb/vanilla_disable/mixin/feature/item/potion/MixinPotionItem.java b/common/src/main/java/uk/debb/vanilla_disable/mixin/feature/item/potion/MixinPotionItem.java deleted file mode 100644 index 6d49d262..00000000 --- a/common/src/main/java/uk/debb/vanilla_disable/mixin/feature/item/potion/MixinPotionItem.java +++ /dev/null @@ -1,29 +0,0 @@ -/* - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at https://mozilla.org/MPL/2.0/. - */ - -package uk.debb.vanilla_disable.mixin.feature.item.potion; - -import com.llamalad7.mixinextras.injector.ModifyExpressionValue; -import net.minecraft.world.item.PotionItem; -import net.minecraft.world.item.alchemy.PotionContents; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; -import uk.debb.vanilla_disable.config.data.DataUtils; - -@Mixin(PotionItem.class) -public abstract class MixinPotionItem { - @ModifyExpressionValue( - method = "finishUsingItem", - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/world/item/ItemStack;getOrDefault(Lnet/minecraft/core/component/DataComponentType;Ljava/lang/Object;)Ljava/lang/Object;" - ) - ) - private Object vanillaDisable$getOrDefault(Object original) { - String item = DataUtils.getKeyFromItemRegistry((PotionItem) (Object) this); - return DataUtils.getPotionContents((PotionContents) original, item); - } -} diff --git a/common/src/main/java/uk/debb/vanilla_disable/mixin/feature/item/potion/MixinThrownPotion.java b/common/src/main/java/uk/debb/vanilla_disable/mixin/feature/item/potion/MixinThrownPotion.java index 34cd239a..ac1b5458 100644 --- a/common/src/main/java/uk/debb/vanilla_disable/mixin/feature/item/potion/MixinThrownPotion.java +++ b/common/src/main/java/uk/debb/vanilla_disable/mixin/feature/item/potion/MixinThrownPotion.java @@ -15,18 +15,6 @@ @Mixin(ThrownPotion.class) public abstract class MixinThrownPotion { - @ModifyExpressionValue( - method = "onHitBlock", - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/world/item/ItemStack;getOrDefault(Lnet/minecraft/core/component/DataComponentType;Ljava/lang/Object;)Ljava/lang/Object;" - ) - ) - private Object vanillaDisable$getOrDefault1(Object original) { - String item = DataUtils.getKeyFromItemRegistry(((ThrownPotion) (Object) this).getItem().getItem()); - return DataUtils.getPotionContents((PotionContents) original, item); - } - @ModifyExpressionValue( method = "onHit", at = @At( diff --git a/common/src/main/java/uk/debb/vanilla_disable/mixin/feature/misc/MixinServerRecipeBook.java b/common/src/main/java/uk/debb/vanilla_disable/mixin/feature/misc/MixinServerRecipeBook.java index b8ba4d1e..3218923b 100644 --- a/common/src/main/java/uk/debb/vanilla_disable/mixin/feature/misc/MixinServerRecipeBook.java +++ b/common/src/main/java/uk/debb/vanilla_disable/mixin/feature/misc/MixinServerRecipeBook.java @@ -9,31 +9,29 @@ import com.llamalad7.mixinextras.injector.wrapmethod.WrapMethod; import com.llamalad7.mixinextras.injector.wrapoperation.Operation; import net.minecraft.nbt.ListTag; -import net.minecraft.network.protocol.game.ClientboundRecipePacket; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.ResourceKey; import net.minecraft.server.level.ServerPlayer; import net.minecraft.stats.ServerRecipeBook; -import net.minecraft.world.item.crafting.RecipeHolder; -import net.minecraft.world.item.crafting.RecipeManager; +import net.minecraft.world.item.crafting.Recipe; import org.spongepowered.asm.mixin.Mixin; import uk.debb.vanilla_disable.config.data.SqlManager; -import java.util.List; import java.util.function.Consumer; +import java.util.function.Predicate; @Mixin(ServerRecipeBook.class) public class MixinServerRecipeBook { @WrapMethod(method = "loadRecipes") - private void vanillaDisable$loadRecipes(ListTag tags, Consumer> recipeConsumer, RecipeManager recipeManager, Operation original) { + private void vanillaDisable$loadRecipes(ListTag listTag, Consumer>> consumer, Predicate>> predicate, Operation original) { if (SqlManager.getBoolean("misc", "recipe_book", "enabled")) { - original.call(tags, recipeConsumer, recipeManager); + original.call(listTag, consumer, predicate); } } - @WrapMethod(method = "sendRecipes") - private void vanillaDisable$sendRecipes(ClientboundRecipePacket.State state, ServerPlayer player, List recipes, Operation original) { + @WrapMethod(method = "sendInitialRecipeBook") + private void vanillaDisable$sendInitialRecipeBook(ServerPlayer player, Operation original) { if (SqlManager.getBoolean("misc", "recipe_book", "enabled")) { - original.call(state, player, recipes); + original.call(player); } } } diff --git a/common/src/main/java/uk/debb/vanilla_disable/mixin/util/MixinPlayerList.java b/common/src/main/java/uk/debb/vanilla_disable/mixin/util/MixinPlayerList.java index 382f5160..35462fe4 100644 --- a/common/src/main/java/uk/debb/vanilla_disable/mixin/util/MixinPlayerList.java +++ b/common/src/main/java/uk/debb/vanilla_disable/mixin/util/MixinPlayerList.java @@ -18,6 +18,6 @@ public abstract class MixinPlayerList { ) private boolean vanillaDisable$sendCommands(Commands instance, ServerPlayer player) { String placementMethod = Thread.currentThread().getStackTrace()[4].getMethodName(); - return !(placementMethod.equals("changeDimension") || placementMethod.equals("method_5731")); + return !(placementMethod.equals("teleport") || placementMethod.equals("method_61275")); } } diff --git a/common/src/main/resources/vanilla_disable.aw b/common/src/main/resources/vanilla_disable.aw index 70d5c22c..e640d37a 100644 --- a/common/src/main/resources/vanilla_disable.aw +++ b/common/src/main/resources/vanilla_disable.aw @@ -1,10 +1,8 @@ accessWidener v1 named accessible field net/minecraft/world/level/block/DispenserBlock DISPENSER_REGISTRY Ljava/util/Map; -accessible field net/minecraft/world/entity/npc/Villager WANTED_ITEMS Ljava/util/Set; accessible method net/minecraft/world/level/block/FireBlock getBurnOdds (Lnet/minecraft/world/level/block/state/BlockState;)I accessible method net/minecraft/world/level/block/FireBlock getIgniteOdds (Lnet/minecraft/world/level/block/state/BlockState;)I -accessible method net/minecraft/world/entity/vehicle/Boat checkInWater ()Z accessible class net/minecraft/world/entity/animal/Cat$CatTemptGoal accessible class net/minecraft/world/entity/animal/Ocelot$OcelotTemptGoal accessible field net/minecraft/world/level/biome/BiomeSource possibleBiomes Ljava/util/function/Supplier; @@ -25,3 +23,4 @@ accessible field net/minecraft/client/gui/components/Checkbox selected Z accessible field net/minecraft/world/level/block/state/BlockBehaviour$BlockStateBase pushReaction Lnet/minecraft/world/level/material/PushReaction; accessible field net/minecraft/world/item/enchantment/ItemEnchantments enchantments Lit/unimi/dsi/fastutil/objects/Object2IntOpenHashMap; mutable field net/minecraft/world/item/enchantment/ItemEnchantments enchantments Lit/unimi/dsi/fastutil/objects/Object2IntOpenHashMap; +accessible field net/minecraft/world/level/block/entity/FuelValues values Lit/unimi/dsi/fastutil/objects/Object2IntSortedMap; diff --git a/common/src/main/resources/vanilla_disable.mixins.json b/common/src/main/resources/vanilla_disable.mixins.json index 19988c4d..70a7e3fb 100644 --- a/common/src/main/resources/vanilla_disable.mixins.json +++ b/common/src/main/resources/vanilla_disable.mixins.json @@ -69,7 +69,6 @@ "feature.entity.other.MixinMob", "feature.entity.other.MixinPainting", "feature.entity.other.MixinPlayer", - "feature.entity.other.MixinServerLevel", "feature.entity.other.MixinServerPlayer", "feature.entity.other.MixinSummonCommand", "feature.entity.other.MixinVillagerData", @@ -78,6 +77,7 @@ "feature.entity.player.MixinEntity", "feature.entity.player.hunger.MixinCakeBlock", "feature.entity.player.hunger.MixinFoodData", + "feature.entity.player.hunger.MixinFoodProperties", "feature.entity.player.hunger.MixinItem", "feature.entity.player.hunger.MixinPlayer", "feature.entity.spawning.MixinBaseSpawner", @@ -97,17 +97,17 @@ "feature.item.creative_breaking.MixinItem", "feature.item.creative_breaking.MixinSwordItem", "feature.item.food.MixinCakeBlock", - "feature.item.food.MixinPlayer", + "feature.item.food.MixinFoodProperties", "feature.item.function.MixinItemStack", "feature.item.function.MixinLivingEntity", "feature.item.function.MixinSpectralArrow", "feature.item.other.MixinAbstractCauldronBlock", - "feature.item.other.MixinAbstractFurnaceBlockEntity", "feature.item.other.MixinDispenserBlock", + "feature.item.other.MixinFuelValues", "feature.item.other.MixinGiveCommand", "feature.item.other.MixinItemStack", "feature.item.potion.MixinArrow", - "feature.item.potion.MixinPotionItem", + "feature.item.potion.MixinPotionContents", "feature.item.potion.MixinThrownPotion", "feature.item.spam.MixinBowItem", "feature.item.spam.MixinCrossbowItem", diff --git a/neoforge/src/main/resources/META-INF/accesstransformer.cfg b/neoforge/src/main/resources/META-INF/accesstransformer.cfg index d5ba02fc..caa4bff0 100644 --- a/neoforge/src/main/resources/META-INF/accesstransformer.cfg +++ b/neoforge/src/main/resources/META-INF/accesstransformer.cfg @@ -1,8 +1,6 @@ public net.minecraft.world.level.block.DispenserBlock DISPENSER_REGISTRY -public net.minecraft.world.entity.npc.Villager WANTED_ITEMS public net.minecraft.world.level.block.FireBlock getBurnOdds(Lnet/minecraft/world/level/block/state/BlockState;)I public net.minecraft.world.level.block.FireBlock getIgniteOdds(Lnet/minecraft/world/level/block/state/BlockState;)I -public net.minecraft.world.entity.vehicle.Boat checkInWater()Z public net.minecraft.world.entity.animal.Cat$CatTemptGoal public net.minecraft.world.entity.animal.Ocelot$OcelotTemptGoal public net.minecraft.world.level.biome.BiomeSource possibleBiomes @@ -22,3 +20,4 @@ public net.minecraft.client.gui.screens.worldselection.CreateWorldScreen$MoreTab public net.minecraft.client.gui.components.Checkbox selected public net.minecraft.world.level.block.state.BlockBehaviour$BlockStateBase pushReaction public-f net.minecraft.world.item.enchantment.ItemEnchantments enchantments +public net.minecraft.world.level.block.entity.FuelValues values