From 09298051a4008ec65d19b02e6ea36de814d0bbce Mon Sep 17 00:00:00 2001 From: IzzelAliz Date: Sun, 17 May 2020 10:05:23 +0800 Subject: [PATCH] Add missing cactus block damage source, partially address #6 --- .../mixin/core/block/CactusBlockMixin.java | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/arclight-coremod/src/main/java/io/izzel/arclight/mixin/core/block/CactusBlockMixin.java b/arclight-coremod/src/main/java/io/izzel/arclight/mixin/core/block/CactusBlockMixin.java index 9b38ec97..02930411 100644 --- a/arclight-coremod/src/main/java/io/izzel/arclight/mixin/core/block/CactusBlockMixin.java +++ b/arclight-coremod/src/main/java/io/izzel/arclight/mixin/core/block/CactusBlockMixin.java @@ -2,12 +2,16 @@ package io.izzel.arclight.mixin.core.block; import net.minecraft.block.BlockState; import net.minecraft.block.CactusBlock; +import net.minecraft.entity.Entity; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; +import org.bukkit.craftbukkit.v1_14_R1.block.CraftBlock; import org.bukkit.craftbukkit.v1_14_R1.event.CraftEventFactory; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.Redirect; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @Mixin(CactusBlock.class) public class CactusBlockMixin { @@ -16,4 +20,14 @@ public class CactusBlockMixin { public boolean arclight$blockGrow(World world, BlockPos pos, BlockState state) { return CraftEventFactory.handleBlockGrowEvent(world, pos, state); } + + @Inject(method = "onEntityCollision", at = @At("HEAD")) + private void arclight$cactusDamage1(BlockState state, World worldIn, BlockPos pos, Entity entityIn, CallbackInfo ci) { + CraftEventFactory.blockDamage = CraftBlock.at(worldIn, pos); + } + + @Inject(method = "onEntityCollision", at = @At("RETURN")) + private void arclight$cactusDamage2(BlockState state, World worldIn, BlockPos pos, Entity entityIn, CallbackInfo ci) { + CraftEventFactory.blockDamage = null; + } }