diff --git a/fabric-object-builder-api-v1/src/main/java/net/fabricmc/fabric/api/object/builder/v1/entity/FabricEntityTypeBuilder.java b/fabric-object-builder-api-v1/src/main/java/net/fabricmc/fabric/api/object/builder/v1/entity/FabricEntityTypeBuilder.java index 757e776ef..5129a178f 100644 --- a/fabric-object-builder-api-v1/src/main/java/net/fabricmc/fabric/api/object/builder/v1/entity/FabricEntityTypeBuilder.java +++ b/fabric-object-builder-api-v1/src/main/java/net/fabricmc/fabric/api/object/builder/v1/entity/FabricEntityTypeBuilder.java @@ -34,7 +34,6 @@ import net.minecraft.world.Heightmap; import net.minecraft.world.World; import net.fabricmc.fabric.impl.object.builder.FabricEntityType; -import net.fabricmc.fabric.mixin.object.builder.SpawnRestrictionAccessor; /** * Extended version of {@link EntityType.Builder} with added registration for @@ -536,7 +535,7 @@ public class FabricEntityTypeBuilder<T extends Entity> { EntityType<T> type = super.build(); if (this.spawnPredicate != null) { - SpawnRestrictionAccessor.callRegister(type, this.restrictionLocation, this.restrictionHeightmap, this.spawnPredicate); + SpawnRestriction.register(type, this.restrictionLocation, this.restrictionHeightmap, this.spawnPredicate); } return type; diff --git a/fabric-object-builder-api-v1/src/main/java/net/fabricmc/fabric/mixin/object/builder/SpawnRestrictionAccessor.java b/fabric-object-builder-api-v1/src/main/java/net/fabricmc/fabric/mixin/object/builder/SpawnRestrictionAccessor.java deleted file mode 100644 index 0e6d70f57..000000000 --- a/fabric-object-builder-api-v1/src/main/java/net/fabricmc/fabric/mixin/object/builder/SpawnRestrictionAccessor.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright (c) 2016, 2017, 2018, 2019 FabricMC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package net.fabricmc.fabric.mixin.object.builder; - -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.gen.Invoker; - -import net.minecraft.entity.EntityType; -import net.minecraft.entity.SpawnRestriction; -import net.minecraft.entity.mob.MobEntity; -import net.minecraft.world.Heightmap; - -@Mixin(SpawnRestriction.class) -public interface SpawnRestrictionAccessor { - @Invoker - static <T extends MobEntity> void callRegister(EntityType<T> type, SpawnRestriction.Location location, Heightmap.Type heightmap, SpawnRestriction.SpawnPredicate<T> spawnPredicate) { - throw new AssertionError("This should not occur!"); - } -} diff --git a/fabric-object-builder-api-v1/src/main/resources/fabric-object-builder-api-v1.accesswidener b/fabric-object-builder-api-v1/src/main/resources/fabric-object-builder-api-v1.accesswidener index b176b8845..af0a9eb8a 100644 --- a/fabric-object-builder-api-v1/src/main/resources/fabric-object-builder-api-v1.accesswidener +++ b/fabric-object-builder-api-v1/src/main/resources/fabric-object-builder-api-v1.accesswidener @@ -7,5 +7,7 @@ accessible method net/minecraft/world/poi/PointOfInterestTypes register extendable class net/minecraft/block/entity/BlockEntityType$BlockEntityFactory +accessible method net/minecraft/entity/SpawnRestriction register (Lnet/minecraft/entity/EntityType;Lnet/minecraft/entity/SpawnRestriction$Location;Lnet/minecraft/world/Heightmap$Type;Lnet/minecraft/entity/SpawnRestriction$SpawnPredicate;)V + accessible field net/minecraft/village/VillagerType BIOME_TO_TYPE Ljava/util/Map; accessible method net/minecraft/village/VillagerType <init> (Ljava/lang/String;)V diff --git a/fabric-object-builder-api-v1/src/main/resources/fabric-object-builder-v1.mixins.json b/fabric-object-builder-api-v1/src/main/resources/fabric-object-builder-v1.mixins.json index a94baaeed..bebe477e7 100644 --- a/fabric-object-builder-api-v1/src/main/resources/fabric-object-builder-v1.mixins.json +++ b/fabric-object-builder-api-v1/src/main/resources/fabric-object-builder-v1.mixins.json @@ -10,7 +10,6 @@ "DefaultAttributeRegistryMixin", "DetectorRailBlockMixin", "MaterialBuilderAccessor", - "SpawnRestrictionAccessor", "TypeAwareTradeMixin" ], "injectors": { diff --git a/fabric-transitive-access-wideners-v1/src/main/resources/fabric-transitive-access-wideners-v1.accesswidener b/fabric-transitive-access-wideners-v1/src/main/resources/fabric-transitive-access-wideners-v1.accesswidener index 9403cc7c3..8536b5f15 100644 --- a/fabric-transitive-access-wideners-v1/src/main/resources/fabric-transitive-access-wideners-v1.accesswidener +++ b/fabric-transitive-access-wideners-v1/src/main/resources/fabric-transitive-access-wideners-v1.accesswidener @@ -24,6 +24,84 @@ transitive-accessible field net/minecraft/loot/LootPool bonusRolls Lnet/minecraf transitive-accessible field net/minecraft/loot/LootTable pools [Lnet/minecraft/loot/LootPool; transitive-accessible field net/minecraft/loot/LootTable functions [Lnet/minecraft/loot/function/LootFunction; +# Creating custom damage sources +transitive-accessible method net/minecraft/entity/damage/DamageSource <init> (Ljava/lang/String;)V +transitive-accessible method net/minecraft/entity/damage/DamageSource setBypassesArmor ()Lnet/minecraft/entity/damage/DamageSource; +transitive-accessible method net/minecraft/entity/damage/DamageSource setFallingBlock ()Lnet/minecraft/entity/damage/DamageSource; +transitive-accessible method net/minecraft/entity/damage/DamageSource setOutOfWorld ()Lnet/minecraft/entity/damage/DamageSource; +transitive-accessible method net/minecraft/entity/damage/DamageSource setUnblockable ()Lnet/minecraft/entity/damage/DamageSource; +transitive-accessible method net/minecraft/entity/damage/DamageSource setBypassesProtection ()Lnet/minecraft/entity/damage/DamageSource; +transitive-accessible method net/minecraft/entity/damage/DamageSource setFire ()Lnet/minecraft/entity/damage/DamageSource; + +# Villager trade factories +transitive-accessible class net/minecraft/village/TradeOffers$BuyForOneEmeraldFactory +transitive-accessible class net/minecraft/village/TradeOffers$SellItemFactory +transitive-accessible class net/minecraft/village/TradeOffers$SellSuspiciousStewFactory +transitive-accessible class net/minecraft/village/TradeOffers$ProcessItemFactory +transitive-accessible class net/minecraft/village/TradeOffers$SellEnchantedToolFactory +transitive-accessible class net/minecraft/village/TradeOffers$TypeAwareBuyForOneEmeraldFactory +transitive-accessible class net/minecraft/village/TradeOffers$SellPotionHoldingItemFactory +transitive-accessible class net/minecraft/village/TradeOffers$EnchantBookFactory +transitive-accessible class net/minecraft/village/TradeOffers$SellMapFactory +transitive-accessible class net/minecraft/village/TradeOffers$SellDyedArmorFactory + +# Registering custom entity spawn restrictions +transitive-accessible method net/minecraft/entity/SpawnRestriction register (Lnet/minecraft/entity/EntityType;Lnet/minecraft/entity/SpawnRestriction$Location;Lnet/minecraft/world/Heightmap$Type;Lnet/minecraft/entity/SpawnRestriction$SpawnPredicate;)V + +# Creating custom block materials +transitive-accessible method net/minecraft/block/Material$Builder burnable ()Lnet/minecraft/block/Material$Builder; +transitive-accessible method net/minecraft/block/Material$Builder destroyedByPiston ()Lnet/minecraft/block/Material$Builder; +transitive-accessible method net/minecraft/block/Material$Builder blocksPistons ()Lnet/minecraft/block/Material$Builder; + +# Item constructors +transitive-accessible method net/minecraft/item/AxeItem <init> (Lnet/minecraft/item/ToolMaterial;FFLnet/minecraft/item/Item$Settings;)V +transitive-accessible method net/minecraft/item/MusicDiscItem <init> (ILnet/minecraft/sound/SoundEvent;Lnet/minecraft/item/Item$Settings;I)V +transitive-accessible method net/minecraft/item/PickaxeItem <init> (Lnet/minecraft/item/ToolMaterial;IFLnet/minecraft/item/Item$Settings;)V + +# Item usage context constructors +transitive-accessible method net/minecraft/item/ItemUsageContext <init> (Lnet/minecraft/world/World;Lnet/minecraft/entity/player/PlayerEntity;Lnet/minecraft/util/Hand;Lnet/minecraft/item/ItemStack;Lnet/minecraft/util/hit/BlockHitResult;)V +transitive-accessible method net/minecraft/item/ItemPlacementContext <init> (Lnet/minecraft/world/World;Lnet/minecraft/entity/player/PlayerEntity;Lnet/minecraft/util/Hand;Lnet/minecraft/item/ItemStack;Lnet/minecraft/util/hit/BlockHitResult;)V + +# Recipe factories +transitive-accessible class net/minecraft/recipe/CookingRecipeSerializer$RecipeFactory +transitive-accessible class net/minecraft/recipe/CuttingRecipe$Serializer$RecipeFactory + +# Registering custom brewing recipes +transitive-accessible method net/minecraft/recipe/BrewingRecipeRegistry registerItemRecipe (Lnet/minecraft/item/Item;Lnet/minecraft/item/Item;Lnet/minecraft/item/Item;)V +transitive-accessible method net/minecraft/recipe/BrewingRecipeRegistry registerPotionType (Lnet/minecraft/item/Item;)V +transitive-accessible method net/minecraft/recipe/BrewingRecipeRegistry registerPotionRecipe (Lnet/minecraft/potion/Potion;Lnet/minecraft/item/Item;Lnet/minecraft/potion/Potion;)V + +# Registering custom scoreboard criteria +transitive-accessible method net/minecraft/scoreboard/ScoreboardCriterion create (Ljava/lang/String;ZLnet/minecraft/scoreboard/ScoreboardCriterion$RenderType;)Lnet/minecraft/scoreboard/ScoreboardCriterion; +transitive-accessible method net/minecraft/scoreboard/ScoreboardCriterion create (Ljava/lang/String;)Lnet/minecraft/scoreboard/ScoreboardCriterion; + +# Model part subclasses +transitive-accessible class net/minecraft/client/model/ModelPart$Vertex +transitive-accessible class net/minecraft/client/model/ModelPart$Quad + +# Creating custom render layers +transitive-accessible method net/minecraft/client/render/RenderLayer of (Lnet/minecraft/client/render/RenderPhase$Shader;)Lnet/minecraft/client/render/RenderLayer$MultiPhaseParameters; + +# Creating custom sensor types +transitive-accessible method net/minecraft/entity/ai/brain/sensor/SensorType <init> (Ljava/util/function/Supplier;)V + +# Creating custom activities +transitive-accessible method net/minecraft/entity/ai/brain/Activity <init> (Ljava/lang/String;)V + +# Living entity methods +transitive-accessible method net/minecraft/entity/LivingEntity damageArmor (Lnet/minecraft/entity/damage/DamageSource;F)V +transitive-accessible method net/minecraft/entity/LivingEntity damageHelmet (Lnet/minecraft/entity/damage/DamageSource;F)V +transitive-accessible method net/minecraft/entity/LivingEntity damageShield (F)V + +# Entity constructors +transitive-accessible method net/minecraft/entity/projectile/ProjectileEntity <init> (Lnet/minecraft/entity/EntityType;Lnet/minecraft/world/World;)V +transitive-accessible method net/minecraft/entity/projectile/FishingBobberEntity <init> (Lnet/minecraft/entity/EntityType;Lnet/minecraft/world/World;II)V + +# Miscellaneous other methods +transitive-accessible method net/minecraft/server/world/ServerWorld sendToPlayerIfNearby (Lnet/minecraft/server/network/ServerPlayerEntity;ZDDDLnet/minecraft/network/Packet;)Z +transitive-accessible method net/minecraft/text/TextColor getHexCode ()Ljava/lang/String; +transitive-accessible method net/minecraft/text/TranslatableTextContent getArg (I)Lnet/minecraft/text/StringVisitable; + # Creating block entity types transitive-extendable class net/minecraft/block/entity/BlockEntityType$BlockEntityFactory diff --git a/fabric-transitive-access-wideners-v1/template.accesswidener b/fabric-transitive-access-wideners-v1/template.accesswidener index 07f89aeab..15395744e 100644 --- a/fabric-transitive-access-wideners-v1/template.accesswidener +++ b/fabric-transitive-access-wideners-v1/template.accesswidener @@ -24,6 +24,84 @@ transitive-accessible field net/minecraft/loot/LootPool bonusRolls Lnet/minecraf transitive-accessible field net/minecraft/loot/LootTable pools [Lnet/minecraft/loot/LootPool; transitive-accessible field net/minecraft/loot/LootTable functions [Lnet/minecraft/loot/function/LootFunction; +# Creating custom damage sources +transitive-accessible method net/minecraft/entity/damage/DamageSource <init> (Ljava/lang/String;)V +transitive-accessible method net/minecraft/entity/damage/DamageSource setBypassesArmor ()Lnet/minecraft/entity/damage/DamageSource; +transitive-accessible method net/minecraft/entity/damage/DamageSource setFallingBlock ()Lnet/minecraft/entity/damage/DamageSource; +transitive-accessible method net/minecraft/entity/damage/DamageSource setOutOfWorld ()Lnet/minecraft/entity/damage/DamageSource; +transitive-accessible method net/minecraft/entity/damage/DamageSource setUnblockable ()Lnet/minecraft/entity/damage/DamageSource; +transitive-accessible method net/minecraft/entity/damage/DamageSource setBypassesProtection ()Lnet/minecraft/entity/damage/DamageSource; +transitive-accessible method net/minecraft/entity/damage/DamageSource setFire ()Lnet/minecraft/entity/damage/DamageSource; + +# Villager trade factories +transitive-accessible class net/minecraft/village/TradeOffers$BuyForOneEmeraldFactory +transitive-accessible class net/minecraft/village/TradeOffers$SellItemFactory +transitive-accessible class net/minecraft/village/TradeOffers$SellSuspiciousStewFactory +transitive-accessible class net/minecraft/village/TradeOffers$ProcessItemFactory +transitive-accessible class net/minecraft/village/TradeOffers$SellEnchantedToolFactory +transitive-accessible class net/minecraft/village/TradeOffers$TypeAwareBuyForOneEmeraldFactory +transitive-accessible class net/minecraft/village/TradeOffers$SellPotionHoldingItemFactory +transitive-accessible class net/minecraft/village/TradeOffers$EnchantBookFactory +transitive-accessible class net/minecraft/village/TradeOffers$SellMapFactory +transitive-accessible class net/minecraft/village/TradeOffers$SellDyedArmorFactory + +# Registering custom entity spawn restrictions +transitive-accessible method net/minecraft/entity/SpawnRestriction register (Lnet/minecraft/entity/EntityType;Lnet/minecraft/entity/SpawnRestriction$Location;Lnet/minecraft/world/Heightmap$Type;Lnet/minecraft/entity/SpawnRestriction$SpawnPredicate;)V + +# Creating custom block materials +transitive-accessible method net/minecraft/block/Material$Builder burnable ()Lnet/minecraft/block/Material$Builder; +transitive-accessible method net/minecraft/block/Material$Builder destroyedByPiston ()Lnet/minecraft/block/Material$Builder; +transitive-accessible method net/minecraft/block/Material$Builder blocksPistons ()Lnet/minecraft/block/Material$Builder; + +# Item constructors +transitive-accessible method net/minecraft/item/AxeItem <init> (Lnet/minecraft/item/ToolMaterial;FFLnet/minecraft/item/Item$Settings;)V +transitive-accessible method net/minecraft/item/MusicDiscItem <init> (ILnet/minecraft/sound/SoundEvent;Lnet/minecraft/item/Item$Settings;I)V +transitive-accessible method net/minecraft/item/PickaxeItem <init> (Lnet/minecraft/item/ToolMaterial;IFLnet/minecraft/item/Item$Settings;)V + +# Item usage context constructors +transitive-accessible method net/minecraft/item/ItemUsageContext <init> (Lnet/minecraft/world/World;Lnet/minecraft/entity/player/PlayerEntity;Lnet/minecraft/util/Hand;Lnet/minecraft/item/ItemStack;Lnet/minecraft/util/hit/BlockHitResult;)V +transitive-accessible method net/minecraft/item/ItemPlacementContext <init> (Lnet/minecraft/world/World;Lnet/minecraft/entity/player/PlayerEntity;Lnet/minecraft/util/Hand;Lnet/minecraft/item/ItemStack;Lnet/minecraft/util/hit/BlockHitResult;)V + +# Recipe factories +transitive-accessible class net/minecraft/recipe/CookingRecipeSerializer$RecipeFactory +transitive-accessible class net/minecraft/recipe/CuttingRecipe$Serializer$RecipeFactory + +# Registering custom brewing recipes +transitive-accessible method net/minecraft/recipe/BrewingRecipeRegistry registerItemRecipe (Lnet/minecraft/item/Item;Lnet/minecraft/item/Item;Lnet/minecraft/item/Item;)V +transitive-accessible method net/minecraft/recipe/BrewingRecipeRegistry registerPotionType (Lnet/minecraft/item/Item;)V +transitive-accessible method net/minecraft/recipe/BrewingRecipeRegistry registerPotionRecipe (Lnet/minecraft/potion/Potion;Lnet/minecraft/item/Item;Lnet/minecraft/potion/Potion;)V + +# Registering custom scoreboard criteria +transitive-accessible method net/minecraft/scoreboard/ScoreboardCriterion create (Ljava/lang/String;ZLnet/minecraft/scoreboard/ScoreboardCriterion$RenderType;)Lnet/minecraft/scoreboard/ScoreboardCriterion; +transitive-accessible method net/minecraft/scoreboard/ScoreboardCriterion create (Ljava/lang/String;)Lnet/minecraft/scoreboard/ScoreboardCriterion; + +# Model part subclasses +transitive-accessible class net/minecraft/client/model/ModelPart$Vertex +transitive-accessible class net/minecraft/client/model/ModelPart$Quad + +# Creating custom render layers +transitive-accessible method net/minecraft/client/render/RenderLayer of (Lnet/minecraft/client/render/RenderPhase$Shader;)Lnet/minecraft/client/render/RenderLayer$MultiPhaseParameters; + +# Creating custom sensor types +transitive-accessible method net/minecraft/entity/ai/brain/sensor/SensorType <init> (Ljava/util/function/Supplier;)V + +# Creating custom activities +transitive-accessible method net/minecraft/entity/ai/brain/Activity <init> (Ljava/lang/String;)V + +# Living entity methods +transitive-accessible method net/minecraft/entity/LivingEntity damageArmor (Lnet/minecraft/entity/damage/DamageSource;F)V +transitive-accessible method net/minecraft/entity/LivingEntity damageHelmet (Lnet/minecraft/entity/damage/DamageSource;F)V +transitive-accessible method net/minecraft/entity/LivingEntity damageShield (F)V + +# Entity constructors +transitive-accessible method net/minecraft/entity/projectile/ProjectileEntity <init> (Lnet/minecraft/entity/EntityType;Lnet/minecraft/world/World;)V +transitive-accessible method net/minecraft/entity/projectile/FishingBobberEntity <init> (Lnet/minecraft/entity/EntityType;Lnet/minecraft/world/World;II)V + +# Miscellaneous other methods +transitive-accessible method net/minecraft/server/world/ServerWorld sendToPlayerIfNearby (Lnet/minecraft/server/network/ServerPlayerEntity;ZDDDLnet/minecraft/network/Packet;)Z +transitive-accessible method net/minecraft/text/TextColor getHexCode ()Ljava/lang/String; +transitive-accessible method net/minecraft/text/TranslatableTextContent getArg (I)Lnet/minecraft/text/StringVisitable; + # Creating block entity types transitive-extendable class net/minecraft/block/entity/BlockEntityType$BlockEntityFactory