From 5fb948fb355d765b4be88ffdd194bff3fa7d3ec0 Mon Sep 17 00:00:00 2001 From: tterrag Date: Fri, 21 Jun 2019 19:34:58 -0400 Subject: [PATCH 1/7] Fix #5805 ModelBakeEvent does not fire --- .../client/renderer/model/ModelManager.java.patch | 8 ++++++++ .../java/net/minecraftforge/client/ForgeHooksClient.java | 2 +- .../net/minecraftforge/client/event/ModelBakeEvent.java | 7 ++++--- .../java/net/minecraftforge/client/model/ModelLoader.java | 2 +- 4 files changed, 14 insertions(+), 5 deletions(-) diff --git a/patches/minecraft/net/minecraft/client/renderer/model/ModelManager.java.patch b/patches/minecraft/net/minecraft/client/renderer/model/ModelManager.java.patch index 3070d9a441..1db5930104 100644 --- a/patches/minecraft/net/minecraft/client/renderer/model/ModelManager.java.patch +++ b/patches/minecraft/net/minecraft/client/renderer/model/ModelManager.java.patch @@ -26,3 +26,11 @@ p_212854_2_.func_219897_b(); return modelbakery; } +@@ -47,6 +53,7 @@ + p_212853_1_.func_217844_a(p_212853_3_); + this.field_174958_a = p_212853_1_.func_217846_a(); + this.field_174955_d = this.field_174958_a.get(ModelBakery.field_177604_a); ++ net.minecraftforge.client.ForgeHooksClient.onModelBake(this, this.field_174958_a, (net.minecraftforge.client.model.ModelLoader) p_212853_1_); + p_212853_3_.func_219895_b("cache"); + this.field_174957_c.func_178124_c(); + p_212853_3_.func_76319_b(); diff --git a/src/main/java/net/minecraftforge/client/ForgeHooksClient.java b/src/main/java/net/minecraftforge/client/ForgeHooksClient.java index 539f1476f9..34b35db1c3 100644 --- a/src/main/java/net/minecraftforge/client/ForgeHooksClient.java +++ b/src/main/java/net/minecraftforge/client/ForgeHooksClient.java @@ -371,7 +371,7 @@ public class ForgeHooksClient MinecraftForge.EVENT_BUS.post(new EntityViewRenderEvent.RenderFogEvent(fogRenderer, renderer, info, partial, mode, distance)); } - public static void onModelBake(ModelManager modelManager, Map modelRegistry, ModelLoader modelLoader) + public static void onModelBake(ModelManager modelManager, Map modelRegistry, ModelLoader modelLoader) { MinecraftForge.EVENT_BUS.post(new ModelBakeEvent(modelManager, modelRegistry, modelLoader)); modelLoader.onPostBakeEvent(modelRegistry); diff --git a/src/main/java/net/minecraftforge/client/event/ModelBakeEvent.java b/src/main/java/net/minecraftforge/client/event/ModelBakeEvent.java index b45b9bdad1..658cf62f43 100644 --- a/src/main/java/net/minecraftforge/client/event/ModelBakeEvent.java +++ b/src/main/java/net/minecraftforge/client/event/ModelBakeEvent.java @@ -24,6 +24,7 @@ import java.util.Map; import net.minecraft.client.renderer.model.IBakedModel; import net.minecraft.client.renderer.model.ModelManager; import net.minecraft.client.renderer.model.ModelResourceLocation; +import net.minecraft.util.ResourceLocation; import net.minecraftforge.client.model.ModelLoader; /** @@ -34,10 +35,10 @@ import net.minecraftforge.client.model.ModelLoader; public class ModelBakeEvent extends net.minecraftforge.eventbus.api.Event { private final ModelManager modelManager; - private final Map modelRegistry; + private final Map modelRegistry; private final ModelLoader modelLoader; - public ModelBakeEvent(ModelManager modelManager, Map modelRegistry, ModelLoader modelLoader) + public ModelBakeEvent(ModelManager modelManager, Map modelRegistry, ModelLoader modelLoader) { this.modelManager = modelManager; this.modelRegistry = modelRegistry; @@ -49,7 +50,7 @@ public class ModelBakeEvent extends net.minecraftforge.eventbus.api.Event return modelManager; } - public Map getModelRegistry() + public Map getModelRegistry() { return modelRegistry; } diff --git a/src/main/java/net/minecraftforge/client/model/ModelLoader.java b/src/main/java/net/minecraftforge/client/model/ModelLoader.java index 532b77ba2f..ef415efa31 100644 --- a/src/main/java/net/minecraftforge/client/model/ModelLoader.java +++ b/src/main/java/net/minecraftforge/client/model/ModelLoader.java @@ -943,7 +943,7 @@ public final class ModelLoader extends ModelBakery /** * Internal, do not use. */ - public void onPostBakeEvent(Map modelRegistry) + public void onPostBakeEvent(Map modelRegistry) { IBakedModel missingModel = modelRegistry.get(MODEL_MISSING); for(Map.Entry entry : loadingExceptions.entrySet()) From 8c3e51153853083280c1abd5459c3815b12bdb0b Mon Sep 17 00:00:00 2001 From: tterrag Date: Fri, 21 Jun 2019 19:35:32 -0400 Subject: [PATCH 2/7] Make sure test mods load, fix BlockstateRetextureTest --- .../debug/block/MaterialFogColorTest.java | 4 +-- .../debug/block/PathNodeTypeTest.java | 2 +- .../debug/chat/ClientCommandTest.java | 2 +- .../client/model/BlockstateRetextureTest.java | 34 ++++++++++--------- src/test/resources/META-INF/mods.toml | 2 ++ 5 files changed, 24 insertions(+), 20 deletions(-) diff --git a/src/test/java/net/minecraftforge/debug/block/MaterialFogColorTest.java b/src/test/java/net/minecraftforge/debug/block/MaterialFogColorTest.java index 9585768a0c..ae2f092d73 100644 --- a/src/test/java/net/minecraftforge/debug/block/MaterialFogColorTest.java +++ b/src/test/java/net/minecraftforge/debug/block/MaterialFogColorTest.java @@ -40,8 +40,8 @@ import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent; import net.minecraftforge.registries.ObjectHolder; import net.minecraftforge.eventbus.api.SubscribeEvent; -@Mod(MaterialFogColorTest.MODID) -@Mod.EventBusSubscriber +//@Mod(MaterialFogColorTest.MODID) +//@Mod.EventBusSubscriber public class MaterialFogColorTest { static final String MODID = "fog_color_in_material_test"; diff --git a/src/test/java/net/minecraftforge/debug/block/PathNodeTypeTest.java b/src/test/java/net/minecraftforge/debug/block/PathNodeTypeTest.java index 1d5a53f9f3..2f62ccd07e 100644 --- a/src/test/java/net/minecraftforge/debug/block/PathNodeTypeTest.java +++ b/src/test/java/net/minecraftforge/debug/block/PathNodeTypeTest.java @@ -42,7 +42,7 @@ public class PathNodeTypeTest @ObjectHolder(BLOCK_ID) - private static final Block TEST_BLOCK = null; + private static Block TEST_BLOCK = null; @SubscribeEvent public static void register(RegistryEvent.Register event) diff --git a/src/test/java/net/minecraftforge/debug/chat/ClientCommandTest.java b/src/test/java/net/minecraftforge/debug/chat/ClientCommandTest.java index 5f8b7584e1..786d47ca4b 100644 --- a/src/test/java/net/minecraftforge/debug/chat/ClientCommandTest.java +++ b/src/test/java/net/minecraftforge/debug/chat/ClientCommandTest.java @@ -32,7 +32,7 @@ import java.util.Arrays; import java.util.Collections; import java.util.List; -@Mod("client_command_test") +//@Mod("client_command_test") public class ClientCommandTest { /* diff --git a/src/test/java/net/minecraftforge/debug/client/model/BlockstateRetextureTest.java b/src/test/java/net/minecraftforge/debug/client/model/BlockstateRetextureTest.java index 27a27ddf9c..8ed23d8ce6 100644 --- a/src/test/java/net/minecraftforge/debug/client/model/BlockstateRetextureTest.java +++ b/src/test/java/net/minecraftforge/debug/client/model/BlockstateRetextureTest.java @@ -25,35 +25,37 @@ import com.google.common.collect.ImmutableMap; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.model.IBakedModel; +import net.minecraft.client.renderer.model.ModelBakery; import net.minecraft.client.renderer.model.ModelResourceLocation; import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.client.renderer.vertex.DefaultVertexFormats; import net.minecraft.util.ResourceLocation; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.client.event.ModelBakeEvent; +import net.minecraftforge.client.model.BasicState; import net.minecraftforge.client.model.IModel; import net.minecraftforge.client.model.ModelLoaderRegistry; +import net.minecraftforge.common.model.TRSRTransformation; import net.minecraftforge.fml.common.Mod; -//@Mod(modid = BlockstateRetextureTest.MODID, name = "BlockstateRetextureTest", version = BlockstateRetextureTest.VERSION, acceptableRemoteVersions = "*", clientSideOnly = true) +@Mod(BlockstateRetextureTest.MODID) public class BlockstateRetextureTest { public static final String MODID = "forge_blockstate_retexture_test"; - public static final String VERSION = "1.0"; - static final boolean ENABLED = false; + static final boolean ENABLED = true; - private static ResourceLocation fenceName = new ResourceLocation("minecraft", "fence"); - private static ModelResourceLocation fenceLocation = new ModelResourceLocation(fenceName, "east=true,north=false,south=false,west=true"); + private static ResourceLocation fenceName = new ResourceLocation("minecraft", "oak_fence"); + private static ModelResourceLocation fenceLocation = new ModelResourceLocation(fenceName, "east=true,north=false,south=false,waterlogged=false,west=true"); private static ResourceLocation stoneName = new ResourceLocation("minecraft", "stone"); - private static ModelResourceLocation stoneLocation = new ModelResourceLocation(stoneName, "normal"); + private static ModelResourceLocation stoneLocation = new ModelResourceLocation(stoneName, ""); private static Function textureGetter = location -> { assert location != null; - return Minecraft.getMinecraft().getTextureMapBlocks().getAtlasSprite(location.toString()); + return Minecraft.getInstance().getTextureMap().getAtlasSprite(location.toString()); }; - //@Mod.EventBusSubscriber(modid = MODID, value = Side.CLIENT) + @Mod.EventBusSubscriber(modid = MODID, value = Dist.CLIENT) public static class ClientEvents { @net.minecraftforge.eventbus.api.SubscribeEvent @@ -64,16 +66,16 @@ public class BlockstateRetextureTest return; } - IModel fence = ModelLoaderRegistry.getModelOrLogError(fenceLocation, "Error loading fence model"); - IModel stone = ModelLoaderRegistry.getModelOrLogError(stoneLocation, "Error loading planks model"); - IModel retexturedFence = fence.retexture(ImmutableMap.of("texture", "blocks/log_oak")); - IModel retexturedStone = stone.retexture(ImmutableMap.of("all", "blocks/diamond_block")); + IModel fence = ModelLoaderRegistry.getModelOrLogError(fenceLocation, "Error loading fence model"); + IModel stone = ModelLoaderRegistry.getModelOrLogError(stoneLocation, "Error loading stone model"); + IModel retexturedFence = fence.retexture(ImmutableMap.of("texture", "blocks/log_oak")); + IModel retexturedStone = stone.retexture(ImmutableMap.of("all", "blocks/diamond_block")); - IBakedModel fenceResult = retexturedFence.bake(fence.getDefaultState(), DefaultVertexFormats.BLOCK, textureGetter); - IBakedModel stoneResult = retexturedStone.bake(stone.getDefaultState(), DefaultVertexFormats.BLOCK, textureGetter); + IBakedModel fenceResult = retexturedFence.bake(event.getModelLoader(), textureGetter, new BasicState(fence.getDefaultState(), true), DefaultVertexFormats.ITEM); + IBakedModel stoneResult = retexturedStone.bake(event.getModelLoader(), textureGetter, new BasicState(stone.getDefaultState(), true), DefaultVertexFormats.ITEM); - event.getModelRegistry().putObject(fenceLocation, fenceResult); - event.getModelRegistry().putObject(stoneLocation, stoneResult); + event.getModelRegistry().put(fenceLocation, fenceResult); + event.getModelRegistry().put(stoneLocation, ModelLoaderRegistry.getMissingModel().bake(event.getModelLoader(), textureGetter, new BasicState(TRSRTransformation.identity(), false), DefaultVertexFormats.ITEM)); } } } diff --git a/src/test/resources/META-INF/mods.toml b/src/test/resources/META-INF/mods.toml index 625fc3b05d..d0ba0e7efd 100644 --- a/src/test/resources/META-INF/mods.toml +++ b/src/test/resources/META-INF/mods.toml @@ -5,6 +5,8 @@ loaderVersion="[2.0,)" modId="forgedebugmodeldata" #[[mods]] # modId="forgedebugmodelloaderregistry" +[[mods]] + modId="forge_blockstate_retexture_test" [[mods]] modId="containertypetest" [[mods]] From 9c74a31ca20f16b18f9c17e7a0198f03dd805569 Mon Sep 17 00:00:00 2001 From: tterrag Date: Fri, 21 Jun 2019 19:47:23 -0400 Subject: [PATCH 3/7] Fix bad patch breaking armor dyeing --- .../minecraft/item/crafting/ArmorDyeRecipe.java.patch | 9 --------- 1 file changed, 9 deletions(-) diff --git a/patches/minecraft/net/minecraft/item/crafting/ArmorDyeRecipe.java.patch b/patches/minecraft/net/minecraft/item/crafting/ArmorDyeRecipe.java.patch index 2c309f4ad8..6bc31dcb29 100644 --- a/patches/minecraft/net/minecraft/item/crafting/ArmorDyeRecipe.java.patch +++ b/patches/minecraft/net/minecraft/item/crafting/ArmorDyeRecipe.java.patch @@ -1,14 +1,5 @@ --- a/net/minecraft/item/crafting/ArmorDyeRecipe.java +++ b/net/minecraft/item/crafting/ArmorDyeRecipe.java -@@ -31,7 +31,7 @@ - - itemstack = itemstack1; - } else { -- if (!(itemstack1.func_77973_b() instanceof DyeItem)) { -+ if (!(itemstack.func_77973_b() instanceof DyeItem)) { - return false; - } - @@ -74,7 +74,6 @@ } } From 45bc487fc0b5cc191c6ef622fca9c73bf8d39fe3 Mon Sep 17 00:00:00 2001 From: tterrag Date: Fri, 21 Jun 2019 19:48:00 -0400 Subject: [PATCH 4/7] Fix #5686 ArmorLayer still calls deprecated getArmorResource --- .../client/renderer/entity/layers/ArmorLayer.java.patch | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/patches/minecraft/net/minecraft/client/renderer/entity/layers/ArmorLayer.java.patch b/patches/minecraft/net/minecraft/client/renderer/entity/layers/ArmorLayer.java.patch index 1e8c02f6a5..79ec68b8b7 100644 --- a/patches/minecraft/net/minecraft/client/renderer/entity/layers/ArmorLayer.java.patch +++ b/patches/minecraft/net/minecraft/client/renderer/entity/layers/ArmorLayer.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/client/renderer/entity/layers/ArmorLayer.java +++ b/net/minecraft/client/renderer/entity/layers/ArmorLayer.java -@@ -55,12 +55,13 @@ +@@ -55,24 +55,25 @@ ArmorItem armoritem = (ArmorItem)itemstack.func_77973_b(); if (armoritem.func_185083_B_() == p_188361_9_) { A a = this.func_215337_a(p_188361_9_); @@ -16,7 +16,12 @@ int i = ((DyeableArmorItem)armoritem).func_200886_f(itemstack); float f = (float)(i >> 16 & 255) / 255.0F; float f1 = (float)(i >> 8 & 255) / 255.0F; -@@ -72,7 +73,7 @@ + float f2 = (float)(i & 255) / 255.0F; + GlStateManager.color4f(this.field_177184_f * f, this.field_177185_g * f1, this.field_177192_h * f2, this.field_177187_e); + a.func_78088_a(p_188361_1_, p_188361_2_, p_188361_3_, p_188361_5_, p_188361_6_, p_188361_7_, p_188361_8_); +- this.func_215333_a(this.func_177178_a(armoritem, flag, "overlay")); ++ this.func_215333_a(this.getArmorResource(p_188361_1_, itemstack, p_188361_9_, "overlay")); + } GlStateManager.color4f(this.field_177184_f, this.field_177185_g, this.field_177192_h, this.field_177187_e); a.func_78088_a(p_188361_1_, p_188361_2_, p_188361_3_, p_188361_5_, p_188361_6_, p_188361_7_, p_188361_8_); From 19059b054e7ba2f9b98f4c4299b9751cd48779b8 Mon Sep 17 00:00:00 2001 From: tterrag Date: Fri, 21 Jun 2019 20:23:26 -0400 Subject: [PATCH 5/7] Fix #5810 incorrect cullface on some models --- .../net/minecraft/client/renderer/model/BlockModel.java.patch | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/patches/minecraft/net/minecraft/client/renderer/model/BlockModel.java.patch b/patches/minecraft/net/minecraft/client/renderer/model/BlockModel.java.patch index 52a2da2538..9edde51d02 100644 --- a/patches/minecraft/net/minecraft/client/renderer/model/BlockModel.java.patch +++ b/patches/minecraft/net/minecraft/client/renderer/model/BlockModel.java.patch @@ -57,7 +57,7 @@ + simplebakedmodel$builder.func_177648_a(makeBakedQuad(blockpart, blockpartface, textureatlassprite1, direction, p_217644_4_)); } else { - simplebakedmodel$builder.func_177650_a(p_217644_4_.func_188048_b().func_177523_a(blockpartface.field_178244_b), func_217645_a(blockpart, blockpartface, textureatlassprite1, direction, p_217644_4_)); -+ simplebakedmodel$builder.func_177650_a(p_217644_4_.getState().apply(java.util.Optional.empty()).map(trsr -> trsr.rotate(direction)).orElse(direction), makeBakedQuad(blockpart, blockpartface, textureatlassprite1, direction, p_217644_4_)); ++ simplebakedmodel$builder.func_177650_a(p_217644_4_.getState().apply(java.util.Optional.empty()).map(trsr -> trsr.rotate(blockpartface.field_178244_b)).orElse(blockpartface.field_178244_b), makeBakedQuad(blockpart, blockpartface, textureatlassprite1, direction, p_217644_4_)); } } } From 656ff25ae14e465bab6f2775615136c0fbc22952 Mon Sep 17 00:00:00 2001 From: tterrag Date: Fri, 21 Jun 2019 20:29:04 -0400 Subject: [PATCH 6/7] Fix #5768 add access to MainWindow object in RenderGameOverlayEvent --- .../client/event/RenderGameOverlayEvent.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/main/java/net/minecraftforge/client/event/RenderGameOverlayEvent.java b/src/main/java/net/minecraftforge/client/event/RenderGameOverlayEvent.java index 80680be8c5..dd600bb41c 100644 --- a/src/main/java/net/minecraftforge/client/event/RenderGameOverlayEvent.java +++ b/src/main/java/net/minecraftforge/client/event/RenderGameOverlayEvent.java @@ -33,6 +33,11 @@ public class RenderGameOverlayEvent extends Event { return partialTicks; } + + public MainWindow getWindow() + { + return window; + } public ElementType getType() { @@ -66,17 +71,20 @@ public class RenderGameOverlayEvent extends Event } private final float partialTicks; + private final MainWindow window; private final ElementType type; - public RenderGameOverlayEvent(float partialTicks, MainWindow resolution) + public RenderGameOverlayEvent(float partialTicks, MainWindow window) { this.partialTicks = partialTicks; + this.window = window; this.type = null; } private RenderGameOverlayEvent(RenderGameOverlayEvent parent, ElementType type) { this.partialTicks = parent.getPartialTicks(); + this.window = parent.getWindow(); this.type = type; } From 5a3b3751475268ccb8c4a8da875c76cba6473f95 Mon Sep 17 00:00:00 2001 From: tterrag Date: Fri, 21 Jun 2019 21:15:56 -0400 Subject: [PATCH 7/7] Fix #5612 add entity to ISelectionContext --- .../shapes/EntitySelectionContext.java.patch | 35 +++++++++++++++++++ .../math/shapes/ISelectionContext.java.patch | 11 ++++++ .../extensions/IForgeSelectionContext.java | 13 +++++++ src/main/resources/forge.exc | 2 ++ 4 files changed, 61 insertions(+) create mode 100644 patches/minecraft/net/minecraft/util/math/shapes/EntitySelectionContext.java.patch create mode 100644 patches/minecraft/net/minecraft/util/math/shapes/ISelectionContext.java.patch create mode 100644 src/main/java/net/minecraftforge/common/extensions/IForgeSelectionContext.java diff --git a/patches/minecraft/net/minecraft/util/math/shapes/EntitySelectionContext.java.patch b/patches/minecraft/net/minecraft/util/math/shapes/EntitySelectionContext.java.patch new file mode 100644 index 0000000000..6984ae7860 --- /dev/null +++ b/patches/minecraft/net/minecraft/util/math/shapes/EntitySelectionContext.java.patch @@ -0,0 +1,35 @@ +--- a/net/minecraft/util/math/shapes/EntitySelectionContext.java ++++ b/net/minecraft/util/math/shapes/EntitySelectionContext.java +@@ -18,6 +18,11 @@ + private final Item field_216382_d; + + protected EntitySelectionContext(boolean p_i51181_1_, double p_i51181_2_, Item p_i51181_4_) { ++ this(null, p_i51181_1_, p_i51181_2_, p_i51181_4_); ++ } ++ ++ protected EntitySelectionContext(@javax.annotation.Nullable Entity entityIn, boolean p_i51181_1_, double p_i51181_2_, Item p_i51181_4_) { ++ this.entity = entityIn; + this.field_216380_b = p_i51181_1_; + this.field_216381_c = p_i51181_2_; + this.field_216382_d = p_i51181_4_; +@@ -25,7 +30,7 @@ + + @Deprecated + protected EntitySelectionContext(Entity p_i51182_1_) { +- this(p_i51182_1_.func_70093_af(), p_i51182_1_.func_174813_aQ().field_72338_b, p_i51182_1_ instanceof LivingEntity ? ((LivingEntity)p_i51182_1_).func_184614_ca().func_77973_b() : Items.field_190931_a); ++ this(p_i51182_1_, p_i51182_1_.func_70093_af(), p_i51182_1_.func_174813_aQ().field_72338_b, p_i51182_1_ instanceof LivingEntity ? ((LivingEntity)p_i51182_1_).func_184614_ca().func_77973_b() : Items.field_190931_a); + } + + public boolean func_216375_a(Item p_216375_1_) { +@@ -39,4 +44,11 @@ + public boolean func_216378_a(VoxelShape p_216378_1_, BlockPos p_216378_2_, boolean p_216378_3_) { + return this.field_216381_c > (double)p_216378_2_.func_177956_o() + p_216378_1_.func_197758_c(Direction.Axis.Y) - (double)1.0E-5F; + } ++ ++ private final @javax.annotation.Nullable Entity entity; ++ ++ @Override ++ public @javax.annotation.Nullable Entity getEntity() { ++ return entity; ++ } + } diff --git a/patches/minecraft/net/minecraft/util/math/shapes/ISelectionContext.java.patch b/patches/minecraft/net/minecraft/util/math/shapes/ISelectionContext.java.patch new file mode 100644 index 0000000000..13cd00bf6c --- /dev/null +++ b/patches/minecraft/net/minecraft/util/math/shapes/ISelectionContext.java.patch @@ -0,0 +1,11 @@ +--- a/net/minecraft/util/math/shapes/ISelectionContext.java ++++ b/net/minecraft/util/math/shapes/ISelectionContext.java +@@ -4,7 +4,7 @@ + import net.minecraft.item.Item; + import net.minecraft.util.math.BlockPos; + +-public interface ISelectionContext { ++public interface ISelectionContext extends net.minecraftforge.common.extensions.IForgeSelectionContext { + static ISelectionContext func_216377_a() { + return EntitySelectionContext.field_216379_a; + } diff --git a/src/main/java/net/minecraftforge/common/extensions/IForgeSelectionContext.java b/src/main/java/net/minecraftforge/common/extensions/IForgeSelectionContext.java new file mode 100644 index 0000000000..61e539df91 --- /dev/null +++ b/src/main/java/net/minecraftforge/common/extensions/IForgeSelectionContext.java @@ -0,0 +1,13 @@ +package net.minecraftforge.common.extensions; + +import javax.annotation.Nullable; + +import net.minecraft.entity.Entity; + +public interface IForgeSelectionContext +{ + default @Nullable Entity getEntity() + { + return null; + } +} diff --git a/src/main/resources/forge.exc b/src/main/resources/forge.exc index 80fcb5fc32..aa22b54e7a 100644 --- a/src/main/resources/forge.exc +++ b/src/main/resources/forge.exc @@ -75,3 +75,5 @@ net/minecraft/world/storage/loot/LootEntryEmpty.(II[Lnet/minecraft/world/s net/minecraft/world/storage/loot/LootEntryItem.(Lnet/minecraft/item/Item;II[Lnet/minecraft/world/storage/loot/functions/LootFunction;[Lnet/minecraft/world/storage/loot/conditions/LootCondition;Ljava/lang/String;)V=|p_i46644_1_,p_i46644_2_,p_i46644_3_,p_i46644_4_,p_i46644_5_,entryName net/minecraft/world/storage/loot/LootEntryTable.(Lnet/minecraft/util/ResourceLocation;II[Lnet/minecraft/world/storage/loot/conditions/LootCondition;Ljava/lang/String;)V=|p_i46639_1_,p_i46639_2_,p_i46639_3_,p_i46639_4_,entryName net/minecraft/world/storage/loot/LootPool.([Lnet/minecraft/world/storage/loot/LootEntry;[Lnet/minecraft/world/storage/loot/conditions/LootCondition;Lnet/minecraft/world/storage/loot/RandomValueRange;Lnet/minecraft/world/storage/loot/RandomValueRange;Ljava/lang/String;)V=|p_i46643_1_,p_i46643_2_,p_i46643_3_,p_i46643_4_ + +net/minecraft/util/shapes/EntitySelectionContext.(Lnet/minecraft/entity/Entity;ZDLnet/minecraft/item/Item;)V=|entity,p_i51181_1_,p_i51181_2_,p_i51181_4_ \ No newline at end of file