Skip to content

Commit 0a8de54

Browse files
committed
new: cactus crop hitboxes
closes Sk1erLLC#149
1 parent 3b2f14c commit 0a8de54

File tree

4 files changed

+67
-0
lines changed

4 files changed

+67
-0
lines changed

src/main/java/club/sk1er/patcher/hooks/CropUtilities.java

+13
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,8 @@ public class CropUtilities {
4646
new AxisAlignedBB(0.0D, 0.0D, 0.0D, 1.0D, 0.875D, 1.0D)
4747
};
4848

49+
public static final AxisAlignedBB CACTUS_BOX = new AxisAlignedBB(0.0625, 0.0, 0.0625, 0.9375, 1.0, 0.9375);
50+
4951
public static void updateCropsMaxY(World world, BlockPos pos, Block block) {
5052
final IBlockState blockState = world.getBlockState(pos);
5153
final Integer ageValue = blockState.getValue(BlockCrops.AGE);
@@ -69,5 +71,16 @@ public static void updateWartMaxY(World world, BlockPos pos, Block block) {
6971
: .25F
7072
);
7173
}
74+
75+
public static void updateCactusBox(Block block) {
76+
block.setBlockBounds(
77+
(float) CACTUS_BOX.minX,
78+
(float) CACTUS_BOX.minY,
79+
(float) CACTUS_BOX.minZ,
80+
(float) CACTUS_BOX.maxX,
81+
(float) CACTUS_BOX.maxY,
82+
(float) CACTUS_BOX.maxZ
83+
);
84+
}
7285
//#endif
7386
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
package club.sk1er.patcher.mixins.features.cropheight;
2+
3+
import club.sk1er.patcher.config.PatcherConfig;
4+
import club.sk1er.patcher.hooks.CropUtilities;
5+
import net.minecraft.block.BlockCactus;
6+
import net.minecraft.util.AxisAlignedBB;
7+
import net.minecraft.util.BlockPos;
8+
import net.minecraft.util.MovingObjectPosition;
9+
import net.minecraft.util.Vec3;
10+
import net.minecraft.world.World;
11+
import org.spongepowered.asm.mixin.Mixin;
12+
import org.spongepowered.asm.mixin.injection.At;
13+
import org.spongepowered.asm.mixin.injection.Inject;
14+
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
15+
16+
@Mixin(BlockCactus.class)
17+
public class BlockCactusMixin_CropHitbox extends BlockMixin_CropHitbox {
18+
//#if MC==10809
19+
@Inject(method = "getSelectedBoundingBox", at = @At("HEAD"))
20+
public void patcher$getSelectedBoundingBox(World worldIn, BlockPos pos, CallbackInfoReturnable<AxisAlignedBB> cir) {
21+
if (PatcherConfig.futureHitBoxes) {
22+
CropUtilities.updateCactusBox(worldIn.getBlockState(pos).getBlock());
23+
}
24+
}
25+
26+
@Override
27+
public void collisionRayTrace(World worldIn, BlockPos pos, Vec3 start, Vec3 end, CallbackInfoReturnable<MovingObjectPosition> cir) {
28+
if (PatcherConfig.futureHitBoxes) {
29+
CropUtilities.updateCactusBox(worldIn.getBlockState(pos).getBlock());
30+
}
31+
}
32+
//#endif
33+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package club.sk1er.patcher.mixins.features.cropheight;
2+
3+
import net.minecraft.block.Block;
4+
import net.minecraft.util.BlockPos;
5+
import net.minecraft.util.MovingObjectPosition;
6+
import net.minecraft.util.Vec3;
7+
import net.minecraft.world.World;
8+
import org.spongepowered.asm.mixin.Mixin;
9+
import org.spongepowered.asm.mixin.injection.At;
10+
import org.spongepowered.asm.mixin.injection.Inject;
11+
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
12+
13+
@Mixin(Block.class)
14+
public class BlockMixin_CropHitbox {
15+
@Inject(method = "collisionRayTrace", at = @At("HEAD"))
16+
public void collisionRayTrace(World worldIn, BlockPos pos, Vec3 start, Vec3 end, CallbackInfoReturnable<MovingObjectPosition> cir) {
17+
18+
}
19+
}

src/main/resources/patcher.mixins.json

+2
Original file line numberDiff line numberDiff line change
@@ -172,7 +172,9 @@
172172
"features.TileEntitySkullRendererMixin_CancelRender",
173173
"features.containeropacity.GuiChestMixin_ContainerOpacity",
174174
"features.containeropacity.GuiInventoryMixin_ContainerOpacity",
175+
"features.cropheight.BlockCactusMixin_CropHitbox",
175176
"features.cropheight.BlockCropsMixin_CropHeight",
177+
"features.cropheight.BlockMixin_CropHitbox",
176178
"features.cropheight.BlockNetherWartMixin_CropHeight",
177179
"features.disableenchantglint.LayerArmorBaseMixin_DisableEnchantGlint",
178180
"features.disableenchantglint.RenderItemMixin_DisableEnchantGlint",

0 commit comments

Comments
 (0)