Add many more transitive access wideners ()

- `DamageSource` constructor and methods made accessible - supersedes 
- `SpawnRestriction` method `register` made accessible - allows `SpawnRestrictionAccessor` mixin to be removed
- `TradeOffers` trade factory inner classes made accessible
- `Material$Builder` methods made accessible (except `lightPassesThrough` method as that would break binary compat in `FabricMaterialBuilder`
- Fixed `generateAccessWideners` task for TAWs module so it can now find the jar
- `AxeItem`, `MusicDiscItem`, and `PickaxeItem` constructors made accessible
- `ItemUsageContext` and `ItemPlacementContext` alternate constructors made accessible - allows passing a `null` PlayerEntity
- `Factory` inner classes of both `CookingRecipeSerializer` and `CuttingRecipeSerializer` made accessible
- `BrewingRecipeRegistry` methods `registerItemRecipe`, `registerPotionType`, and `registerPotionRecipe` made accessible
- `ScoreboardCriterion` `create` methods made accessible
- `ModelPart` inner classes `Vertex` and `Quad` made accessible
- `RenderLayer` `of` method made accessible
- `SensorType` and `Activity` constructors made accessible
- `LivingEntity` methods `damageArmor`, `damageHelmet`, and `damageShield` made accessible
- `ProjectileEntity` constructor made accessible
- `FishingBobberEntity` alternate constructor made accessible - allows passing luck of the sea or lure levels for custom fishing bobbers
- `ServerWorld` method `sendToPlayerIfNearby` made accessible
- `TextColor` method `getHexCode` made accessible
- `TranslatableTextContent` method `getArg` made accessible
This commit is contained in:
Shnupbups 2022-08-16 03:41:18 +10:00 committed by GitHub
parent b20e3339f9
commit 42d99c329d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 159 additions and 36 deletions
fabric-object-builder-api-v1/src/main
fabric-transitive-access-wideners-v1

View file

@ -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;

View file

@ -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!");
}
}

View file

@ -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

View file

@ -10,7 +10,6 @@
"DefaultAttributeRegistryMixin",
"DetectorRailBlockMixin",
"MaterialBuilderAccessor",
"SpawnRestrictionAccessor",
"TypeAwareTradeMixin"
],
"injectors": {

View file

@ -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

View file

@ -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