From 201349f8def534c5a2351528429430aab8ef329b Mon Sep 17 00:00:00 2001 From: LexManos Date: Mon, 13 Jul 2020 13:12:41 -0700 Subject: [PATCH] Fix checkPatches task. Closes #6956 Fix patched in method using srg name. Closes #6965 Fix capabilities not being collected for ClientWorld. Closes #6966 Fix TagEmptyCondition using client side copy of tags instead of server. Closes #6949 Fix ExtendedButton using narrator text. Closes #6958, Closes #6959 Fix misaligned patch in RepairContainer. Closes #6950, Closes #6953 Fix LivingJumpEvent not being fired for players jumping horses. Closes #6929 Remove extra getToughness method in ArmorItem. Closes #6970 Remove GetCollisionBoxesEvent. Closes #6921 --- .../forge/tasks/CheckPatches.groovy | 31 ++++---- .../client/gui/screen/Screen.java.patch | 6 +- .../inventory/CreativeScreen.java.patch | 2 +- .../client/world/ClientWorld.java.patch | 2 +- .../horse/AbstractHorseEntity.java.patch | 10 ++- .../container/RepairContainer.java.patch | 17 ++++- .../net/minecraft/item/ArmorItem.java.patch | 11 --- .../conditions/TagEmptyCondition.java | 3 +- .../event/ForgeEventFactory.java | 7 -- .../event/world/GetCollisionBoxesEvent.java | 73 ------------------- .../fml/client/gui/widget/ExtendedButton.java | 2 +- src/main/resources/forge.exc | 1 + 12 files changed, 49 insertions(+), 116 deletions(-) delete mode 100644 src/main/java/net/minecraftforge/event/world/GetCollisionBoxesEvent.java diff --git a/buildSrc/src/main/groovy/net/minecraftforge/forge/tasks/CheckPatches.groovy b/buildSrc/src/main/groovy/net/minecraftforge/forge/tasks/CheckPatches.groovy index 31ff7995f5..7a09941755 100644 --- a/buildSrc/src/main/groovy/net/minecraftforge/forge/tasks/CheckPatches.groovy +++ b/buildSrc/src/main/groovy/net/minecraftforge/forge/tasks/CheckPatches.groovy @@ -6,6 +6,7 @@ import org.gradle.api.tasks.InputDirectory import org.gradle.api.tasks.TaskAction import java.nio.file.Files +import java.nio.file.Paths import java.util.regex.Pattern public class CheckPatches extends DefaultTask { @@ -15,14 +16,14 @@ public class CheckPatches extends DefaultTask { @TaskAction protected void exec() { def hasS2SArtifact = [ - "patches/minecraft/net/minecraft/client/renderer/ViewFrustum.java.patch", - "patches/minecraft/net/minecraft/data/BlockModelDefinition.java.patch" + Paths.get("patches/minecraft/net/minecraft/client/renderer/ViewFrustum.java.patch"), + Paths.get("patches/minecraft/net/minecraft/data/BlockModelDefinition.java.patch") ] def verified = true; project.fileTree(patchDir).each { patch -> - def patchPath = project.rootDir.toPath().relativize(patch.toPath()).toString() - verified &= verifyPatch(patch, autoFix, patchPath, hasS2SArtifact.contains(patchPath)) + def patchPath = project.rootDir.toPath().relativize(patch.toPath()) + verified &= verifyPatch(patch, autoFix, patchPath.toString(), hasS2SArtifact.contains(patchPath)) } if (!verified) @@ -61,19 +62,21 @@ public class CheckPatches extends DefaultTask { if (hunk_start_pattern.matcher(line).find()) { if (onlyWhiteSpace) { if (fix || hasS2SArtifact) { - logger.lifecycle("Removing white space hunk starting at {}, file: {}", hunksStart + 1, patchPath) + logger.lifecycle("Removing white space hunk starting at line {}, file: {}", hunksStart + 1, patchPath) def toRemove = i - hunksStart; while (toRemove-- > 0) newLines.remove(newLines.size() - 1) didFix = true } else { - logger.lifecycle("Patch contains only white space hunk starting at {}, file: {}", hunksStart + 1, patchPath) + logger.lifecycle("Patch contains only white space hunk starting at line {}, file: {}", hunksStart + 1, patchPath) hasProblem = true } } else { - whiteSpaceErrors.each { logger.lifecycle(it) } + if (!whiteSpaceErrors.empty) + hasProblem = true + whiteSpaceErrors.each { error -> logger.lifecycle(error) } whiteSpaceErrors.clear() } hunksStart = i @@ -101,7 +104,7 @@ public class CheckPatches extends DefaultTask { pMatcher.group(5) == cMatcher.group(5) && // field name pMatcher.group(3) == cMatcher.group(3) && // static (accessMap[pMatcher.group(2)] < accessMap[cMatcher.group(2)] || pMatcher.group(4) != cMatcher.group(4))) { - logger.lifecycle("Patch contains access changes or final removal at {}, file: {}", i + 1, patchPath) + logger.lifecycle("Patch contains access changes or final removal at line {}, file: {}", i + 1, patchPath) hasProblem = true } @@ -113,7 +116,7 @@ public class CheckPatches extends DefaultTask { pMatcher.group(5) == cMatcher.group(5) && // void name pMatcher.group(3) == cMatcher.group(3) && // static (accessMap[pMatcher.group(2)] < accessMap[cMatcher.group(2)] || pMatcher.group(4) != cMatcher.group(4))) { - logger.lifecycle("Patch contains access changes or final removal at {}, file: {}", i + 1, patchPath) + logger.lifecycle("Patch contains access changes or final removal at line {}, file: {}", i + 1, patchPath) hasProblem = true } @@ -125,7 +128,7 @@ public class CheckPatches extends DefaultTask { pMatcher.group(5) == cMatcher.group(5) && // class | interface pMatcher.group(3) == cMatcher.group(3) && // static (accessMap[pMatcher.group(2)] < accessMap[cMatcher.group(2)] || pMatcher.group(4) != cMatcher.group(4))) { - logger.lifecycle("Patch contains access changes or final removal at {}, file: {}", i + 1, patchPath) + logger.lifecycle("Patch contains access changes or final removal at line {}, file: {}", i + 1, patchPath) hasProblem = true } } @@ -152,7 +155,7 @@ public class CheckPatches extends DefaultTask { def nextLineChange = i + 1 < lines.size() && lines[i + 1].startsWithAny('+','-') if (!prevLineChange && !nextLineChange) { - whiteSpaceErrors.add(String.format("Patch contains white space change in valid hunk at %d (cannot auto fix), file: %s", i + 1, patchPath)) + whiteSpaceErrors.add(String.format("Patch contains white space change in valid hunk at line %d (cannot auto fix), file: %s", i + 1, patchPath)) } } @@ -179,18 +182,20 @@ public class CheckPatches extends DefaultTask { if (onlyWhiteSpace) { if (fix || hasS2SArtifact) { - logger.lifecycle("Removing white space hunk starting at {}, file: {}", hunksStart + 1, patchPath) + logger.lifecycle("Removing white space hunk starting at line {}, file: {}", hunksStart + 1, patchPath) def toRemove = i - hunksStart; while (toRemove-- > 0) newLines.remove(newLines.size() - 1) didFix = true } else { - logger.lifecycle("Patch contains only white space hunk starting at {}, file: {}", hunksStart + 1, patchPath) + logger.lifecycle("Patch contains only white space hunk starting at line {}, file: {}", hunksStart + 1, patchPath) hasProblem = true } } else { + if (!whiteSpaceErrors.empty) + hasProblem = true whiteSpaceErrors.each { error -> logger.lifecycle(error) } } diff --git a/patches/minecraft/net/minecraft/client/gui/screen/Screen.java.patch b/patches/minecraft/net/minecraft/client/gui/screen/Screen.java.patch index b408f720d5..eeb69c4b61 100644 --- a/patches/minecraft/net/minecraft/client/gui/screen/Screen.java.patch +++ b/patches/minecraft/net/minecraft/client/gui/screen/Screen.java.patch @@ -7,7 +7,7 @@ - this.func_238654_b_(p_230457_1_, this.func_231151_a_(p_230457_2_), p_230457_3_, p_230457_4_); + FontRenderer font = p_230457_2_.func_77973_b().getFontRenderer(p_230457_2_); + net.minecraftforge.fml.client.gui.GuiUtils.preItemToolTip(p_230457_2_); -+ this.func_238654_b_(p_230457_1_, this.func_231151_a_(p_230457_2_), p_230457_3_, p_230457_4_, (font == null ? this.field_230712_o_ : font)); ++ this.renderToolTip(p_230457_1_, this.func_231151_a_(p_230457_2_), p_230457_3_, p_230457_4_, (font == null ? this.field_230712_o_ : font)); + net.minecraftforge.fml.client.gui.GuiUtils.postItemToolTip(); } @@ -17,9 +17,9 @@ public void func_238654_b_(MatrixStack p_238654_1_, List p_238654_2_, int p_238654_3_, int p_238654_4_) { - if (!p_238654_2_.isEmpty()) { -+ this.func_238654_b_(p_238654_1_, p_238654_2_, p_238654_3_, p_238654_4_, field_230712_o_); ++ this.renderToolTip(p_238654_1_, p_238654_2_, p_238654_3_, p_238654_4_, field_230712_o_); + } -+ public void func_238654_b_(MatrixStack p_238654_1_, List p_238654_2_, int p_238654_3_, int p_238654_4_, FontRenderer font) { ++ public void renderToolTip(MatrixStack p_238654_1_, List p_238654_2_, int p_238654_3_, int p_238654_4_, FontRenderer font) { + net.minecraftforge.fml.client.gui.GuiUtils.drawHoveringText(p_238654_1_, p_238654_2_, p_238654_3_, p_238654_4_, field_230708_k_, field_230709_l_, -1, font); + if (false && !p_238654_2_.isEmpty()) { int i = 0; diff --git a/patches/minecraft/net/minecraft/client/gui/screen/inventory/CreativeScreen.java.patch b/patches/minecraft/net/minecraft/client/gui/screen/inventory/CreativeScreen.java.patch index 278562f2e8..c4ce4ad7c8 100644 --- a/patches/minecraft/net/minecraft/client/gui/screen/inventory/CreativeScreen.java.patch +++ b/patches/minecraft/net/minecraft/client/gui/screen/inventory/CreativeScreen.java.patch @@ -181,7 +181,7 @@ - this.func_238654_b_(p_230457_1_, list1, p_230457_3_, p_230457_4_); + net.minecraft.client.gui.FontRenderer font = p_230457_2_.func_77973_b().getFontRenderer(p_230457_2_); + net.minecraftforge.fml.client.gui.GuiUtils.preItemToolTip(p_230457_2_); -+ this.func_238654_b_(p_230457_1_, list1, p_230457_3_, p_230457_4_, (font == null ? this.field_230712_o_ : font)); ++ this.renderToolTip(p_230457_1_, list1, p_230457_3_, p_230457_4_, (font == null ? this.field_230712_o_ : font)); + net.minecraftforge.fml.client.gui.GuiUtils.postItemToolTip(); } else { super.func_230457_a_(p_230457_1_, p_230457_2_, p_230457_3_, p_230457_4_); diff --git a/patches/minecraft/net/minecraft/client/world/ClientWorld.java.patch b/patches/minecraft/net/minecraft/client/world/ClientWorld.java.patch index 7ca3f0bdc1..1cfcd711f9 100644 --- a/patches/minecraft/net/minecraft/client/world/ClientWorld.java.patch +++ b/patches/minecraft/net/minecraft/client/world/ClientWorld.java.patch @@ -4,7 +4,7 @@ this.func_239136_a_(new BlockPos(8, 64, 8)); this.func_72966_v(); this.func_72947_a(); -+ //this.gatherCapabilities(dimension.initCapabilities()); //TODO ++ this.gatherCapabilities(); + net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.event.world.WorldEvent.Load(this)); } diff --git a/patches/minecraft/net/minecraft/entity/passive/horse/AbstractHorseEntity.java.patch b/patches/minecraft/net/minecraft/entity/passive/horse/AbstractHorseEntity.java.patch index aa6b669d9f..18340129ba 100644 --- a/patches/minecraft/net/minecraft/entity/passive/horse/AbstractHorseEntity.java.patch +++ b/patches/minecraft/net/minecraft/entity/passive/horse/AbstractHorseEntity.java.patch @@ -20,7 +20,15 @@ } if (this.func_184207_aI() && this.field_190688_bE) { -@@ -1010,4 +1011,22 @@ +@@ -693,6 +694,7 @@ + this.func_213293_j(vector3d.field_72450_a, d1, vector3d.field_72449_c); + this.func_110255_k(true); + this.field_70160_al = true; ++ net.minecraftforge.common.ForgeHooks.onLivingJump(this); + if (f1 > 0.0F) { + float f2 = MathHelper.func_76126_a(this.field_70177_z * ((float)Math.PI / 180F)); + float f3 = MathHelper.func_76134_b(this.field_70177_z * ((float)Math.PI / 180F)); +@@ -1010,4 +1012,22 @@ this.func_230273_eI_(); return super.func_213386_a(p_213386_1_, p_213386_2_, p_213386_3_, p_213386_4_, p_213386_5_); } diff --git a/patches/minecraft/net/minecraft/inventory/container/RepairContainer.java.patch b/patches/minecraft/net/minecraft/inventory/container/RepairContainer.java.patch index 4b187ae6be..3bdf12faef 100644 --- a/patches/minecraft/net/minecraft/inventory/container/RepairContainer.java.patch +++ b/patches/minecraft/net/minecraft/inventory/container/RepairContainer.java.patch @@ -1,14 +1,23 @@ --- a/net/minecraft/inventory/container/RepairContainer.java +++ b/net/minecraft/inventory/container/RepairContainer.java -@@ -63,6 +63,8 @@ +@@ -48,6 +48,8 @@ + p_230301_1_.func_82242_a(-this.field_82854_e.func_221495_b()); + } ++ float breakChance = net.minecraftforge.common.ForgeHooks.onAnvilRepair(p_230301_1_, p_230301_2_, RepairContainer.this.field_234643_d_.func_70301_a(0), RepairContainer.this.field_234643_d_.func_70301_a(1)); ++ + this.field_234643_d_.func_70299_a(0, ItemStack.field_190927_a); + if (this.field_82856_l > 0) { + ItemStack itemstack = this.field_234643_d_.func_70301_a(1); +@@ -64,7 +66,7 @@ this.field_82854_e.func_221494_a(0); this.field_234644_e_.func_221486_a((p_234633_1_, p_234633_2_) -> { -+ float breakChance = net.minecraftforge.common.ForgeHooks.onAnvilRepair(p_230301_1_, p_230301_2_, RepairContainer.this.field_234643_d_.func_70301_a(0), RepairContainer.this.field_234643_d_.func_70301_a(1)); -+ BlockState blockstate = p_234633_1_.func_180495_p(p_234633_2_); - if (!p_230301_1_.field_71075_bZ.field_75098_d && blockstate.func_235714_a_(BlockTags.field_200572_k) && p_230301_1_.func_70681_au().nextFloat() < 0.12F) { +- if (!p_230301_1_.field_71075_bZ.field_75098_d && blockstate.func_235714_a_(BlockTags.field_200572_k) && p_230301_1_.func_70681_au().nextFloat() < 0.12F) { ++ if (!p_230301_1_.field_71075_bZ.field_75098_d && blockstate.func_235714_a_(BlockTags.field_200572_k) && p_230301_1_.func_70681_au().nextFloat() < breakChance) { BlockState blockstate1 = AnvilBlock.func_196433_f(blockstate); + if (blockstate1 == null) { + p_234633_1_.func_217377_a(p_234633_2_, false); @@ -96,8 +98,11 @@ Map map = EnchantmentHelper.func_82781_a(itemstack1); j = j + itemstack.func_82838_A() + (itemstack2.func_190926_b() ? 0 : itemstack2.func_82838_A()); diff --git a/patches/minecraft/net/minecraft/item/ArmorItem.java.patch b/patches/minecraft/net/minecraft/item/ArmorItem.java.patch index 0fa10b643f..05f0670485 100644 --- a/patches/minecraft/net/minecraft/item/ArmorItem.java.patch +++ b/patches/minecraft/net/minecraft/item/ArmorItem.java.patch @@ -9,14 +9,3 @@ builder.put(Attributes.field_233820_c_, new AttributeModifier(uuid, "Armor knockback resistance", (double)this.field_234655_c_, AttributeModifier.Operation.ADDITION)); } -@@ -113,6 +113,10 @@ - return this.field_77879_b; - } - -+ public float getToughness() { -+ return this.field_189415_e; -+ } -+ - public float func_234657_f_() { - return this.field_189415_e; - } diff --git a/src/main/java/net/minecraftforge/common/crafting/conditions/TagEmptyCondition.java b/src/main/java/net/minecraftforge/common/crafting/conditions/TagEmptyCondition.java index 748aad7161..7ddbb94d86 100644 --- a/src/main/java/net/minecraftforge/common/crafting/conditions/TagEmptyCondition.java +++ b/src/main/java/net/minecraftforge/common/crafting/conditions/TagEmptyCondition.java @@ -25,6 +25,7 @@ import net.minecraft.item.Item; import net.minecraft.tags.ITag; import net.minecraft.tags.ItemTags; import net.minecraft.tags.Tag; +import net.minecraft.tags.TagCollectionManager; import net.minecraft.util.JSONUtils; import net.minecraft.util.ResourceLocation; @@ -57,7 +58,7 @@ public class TagEmptyCondition implements ICondition @Override public boolean test() { - ITag tag = ItemTags.getCollection().get(tag_name); + ITag tag = TagCollectionManager.func_232928_e_().func_232925_b_().get(tag_name); return tag == null || tag.func_230236_b_().isEmpty(); } diff --git a/src/main/java/net/minecraftforge/event/ForgeEventFactory.java b/src/main/java/net/minecraftforge/event/ForgeEventFactory.java index 3ba4f56abf..1b456594ef 100644 --- a/src/main/java/net/minecraftforge/event/ForgeEventFactory.java +++ b/src/main/java/net/minecraftforge/event/ForgeEventFactory.java @@ -128,7 +128,6 @@ import net.minecraftforge.event.world.BlockEvent.EntityPlaceEvent; import net.minecraftforge.event.world.BlockEvent.NeighborNotifyEvent; import net.minecraftforge.event.world.ChunkWatchEvent; import net.minecraftforge.event.world.ExplosionEvent; -import net.minecraftforge.event.world.GetCollisionBoxesEvent; import net.minecraftforge.event.world.PistonEvent; import net.minecraftforge.event.world.SaplingGrowTreeEvent; import net.minecraftforge.event.world.SleepFinishedTimeEvent; @@ -672,12 +671,6 @@ public class ForgeEventFactory return !MinecraftForge.EVENT_BUS.post(new LivingDestroyBlockEvent(entity, pos, state)); } - public static boolean gatherCollisionBoxes(World world, Entity entity, AxisAlignedBB aabb, List outList) - { - MinecraftForge.EVENT_BUS.post(new GetCollisionBoxesEvent(world, entity, aabb, outList)); - return outList.isEmpty(); - } - public static boolean getMobGriefingEvent(World world, Entity entity) { EntityMobGriefingEvent event = new EntityMobGriefingEvent(entity); diff --git a/src/main/java/net/minecraftforge/event/world/GetCollisionBoxesEvent.java b/src/main/java/net/minecraftforge/event/world/GetCollisionBoxesEvent.java deleted file mode 100644 index 0b3572890c..0000000000 --- a/src/main/java/net/minecraftforge/event/world/GetCollisionBoxesEvent.java +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Minecraft Forge - * Copyright (c) 2016-2020. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation version 2.1 - * of the License. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -package net.minecraftforge.event.world; - -import net.minecraft.entity.Entity; -import net.minecraft.util.math.AxisAlignedBB; -import net.minecraft.world.World; -import net.minecraftforge.common.MinecraftForge; -import net.minecraftforge.eventbus.api.Cancelable; - -import javax.annotation.Nullable; -import java.util.List; - -/** - * This event is fired during {@link World#collidesWithAnyBlock(AxisAlignedBB)} - * and before returning the list in {@link World#getCollisionBoxes(Entity, AxisAlignedBB)}
- *
- * {@link #entity} contains the entity passed in the {@link World#getCollisionBoxes(Entity, AxisAlignedBB)}. Can be null. Calls from {@link World#collidesWithAnyBlock(AxisAlignedBB)} will be null.
- * {@link #aabb} contains the AxisAlignedBB passed in the method.
- * {@link #collisionBoxesList} contains the list of detected collision boxes intersecting with {@link #aabb}. The list can be modified.
- *
- * This event is not {@link Cancelable}.
- *
- * This event does not have a result. {@link HasResult}
- *
- * This event is fired on the {@link MinecraftForge#EVENT_BUS}.
- **/ -public class GetCollisionBoxesEvent extends WorldEvent -{ - private final Entity entity; - private final AxisAlignedBB aabb; - private final List collisionBoxesList; - - public GetCollisionBoxesEvent(World world, @Nullable Entity entity, AxisAlignedBB aabb, List collisionBoxesList) - { - super(world); - this.entity = entity; - this.aabb = aabb; - this.collisionBoxesList = collisionBoxesList; - } - - public Entity getEntity() - { - return entity; - } - - public AxisAlignedBB getAabb() - { - return aabb; - } - - public List getCollisionBoxesList() - { - return collisionBoxesList; - } -} diff --git a/src/main/java/net/minecraftforge/fml/client/gui/widget/ExtendedButton.java b/src/main/java/net/minecraftforge/fml/client/gui/widget/ExtendedButton.java index ae4ac9ee4d..7962f509f8 100644 --- a/src/main/java/net/minecraftforge/fml/client/gui/widget/ExtendedButton.java +++ b/src/main/java/net/minecraftforge/fml/client/gui/widget/ExtendedButton.java @@ -58,7 +58,7 @@ public class ExtendedButton extends Button GuiUtils.drawContinuousTexturedBox(field_230687_i_, this.field_230690_l_, this.field_230691_m_, 0, 46 + k * 20, this.field_230688_j_, this.field_230689_k_, 200, 20, 2, 3, 2, 2, this.func_230927_p_()); this.func_230441_a_(mStack, mc, mouseX, mouseY); - ITextComponent buttonText = this.func_230442_c_(); + ITextComponent buttonText = this.func_230458_i_(); int strWidth = mc.fontRenderer.func_238414_a_(buttonText); int ellipsisWidth = mc.fontRenderer.getStringWidth("..."); diff --git a/src/main/resources/forge.exc b/src/main/resources/forge.exc index 560a19f5a4..67fec542a0 100644 --- a/src/main/resources/forge.exc +++ b/src/main/resources/forge.exc @@ -4,6 +4,7 @@ net/minecraft/block/FlowerPotBlock.(Ljava/util/function/Supplier;Ljava/uti net/minecraft/block/PoweredRailBlock.(Lnet/minecraft/block/Block$Properties;Z)=|p_i48349_1_,isActivator net/minecraft/block/RedstoneWireBlock.canConnectTo(Lnet/minecraft/block/BlockState;Lnet/minecraft/world/IBlockReader;Lnet/minecraft/util/math/BlockPos;Lnet/minecraft/util/Direction;)Z=|p_176343_0_,world,pos,p_176343_1_ +net/minecraft/client/gui/screen/Screen.renderToolTip(Lcom/mojang/blaze3d/matrix/MatrixStack;Ljava/util/List;IILnet/minecraft/client/gui/FontRenderer;)V=|p_238654_1_,p_238654_2_,p_238654_3_,p_238654_4_,font net/minecraft/client/gui/ScreenManager.getScreenFactory(Lnet/minecraft/inventory/container/ContainerType;Lnet/minecraft/client/Minecraft;ILnet/minecraft/util/text/ITextComponent;)Ljava/util/Optional;=|p_216909_0_,p_216909_1_,p_216909_2_,p_216909_3_ net/minecraft/client/renderer/BlockModelRenderer.renderModel(Lnet/minecraft/world/ILightReader;Lnet/minecraft/client/renderer/model/IBakedModel;Lnet/minecraft/block/BlockState;Lnet/minecraft/util/math/BlockPos;Lcom/mojang/blaze3d/matrix/MatrixStack;Lcom/mojang/blaze3d/vertex/IVertexBuilder;ZLjava/util/Random;JILnet/minecraftforge/client/model/data/IModelData;)Z=|p_228802_1_,p_228802_2_,p_228802_3_,p_228802_4_,p_228802_5_,p_228802_6_,p_228802_7_,p_228802_8_,p_228802_9_,p_228802_11_,modelData