diff --git a/common/src/main/java/io/github/flemmli97/flan/api/PermissionRegistry.java b/common/src/main/java/io/github/flemmli97/flan/api/PermissionRegistry.java index 687d102..ed9c261 100644 --- a/common/src/main/java/io/github/flemmli97/flan/api/PermissionRegistry.java +++ b/common/src/main/java/io/github/flemmli97/flan/api/PermissionRegistry.java @@ -53,6 +53,7 @@ public class PermissionRegistry { public static ClaimPermission TARGETBLOCK = register(new ClaimPermission("TARGETBLOCK", () -> new ItemStack(Items.TARGET), "Permission to trigger target blocks")); public static ClaimPermission PROJECTILES = register(new ClaimPermission("PROJECTILES", () -> new ItemStack(Items.ARROW), "Permission to let shot projectiles", "interact with blocks (e.g. arrow on button)")); public static ClaimPermission TRAMPLE = register(new ClaimPermission("TRAMPLE", () -> new ItemStack(Items.FARMLAND), "Permission to enable block trampling", "(farmland, turtle eggs)")); + public static ClaimPermission FROSTWALKER = register(new ClaimPermission("FROSTWALKER", () -> new ItemStack(Items.LEATHER_BOOTS), "Permission for frostwalker to activate")); public static ClaimPermission PORTAL = register(new ClaimPermission("PORTAL", () -> new ItemStack(Items.OBSIDIAN), true, "Permission to use nether portals")); public static ClaimPermission RAID = register(new ClaimPermission("RAID", Raid::getOminousBanner, "Permission to trigger raids in claim.", "Wont prevent raids (just) outside")); public static ClaimPermission BOAT = register(new ClaimPermission("BOAT", () -> new ItemStack(Items.OAK_BOAT), "Permission to sit in boats")); diff --git a/common/src/main/java/io/github/flemmli97/flan/event/EntityInteractEvents.java b/common/src/main/java/io/github/flemmli97/flan/event/EntityInteractEvents.java index 4e3469f..797dd6b 100644 --- a/common/src/main/java/io/github/flemmli97/flan/event/EntityInteractEvents.java +++ b/common/src/main/java/io/github/flemmli97/flan/event/EntityInteractEvents.java @@ -334,4 +334,12 @@ public class EntityInteractEvents { cons.accept(claim); } } + + public static boolean canFrostwalkerFreeze(ServerWorld world, BlockPos pos, LivingEntity entity) { + if (entity instanceof ServerPlayerEntity) { + IPermissionContainer claim = ClaimStorage.get(world).getForPermissionCheck(pos); + return claim.canInteract((ServerPlayerEntity) entity, PermissionRegistry.FROSTWALKER, pos, false); + } + return true; + } } diff --git a/common/src/main/java/io/github/flemmli97/flan/mixin/AbstractBlockStateMixin.java b/common/src/main/java/io/github/flemmli97/flan/mixin/AbstractBlockStateMixin.java index 68d146d..8ec3eb1 100644 --- a/common/src/main/java/io/github/flemmli97/flan/mixin/AbstractBlockStateMixin.java +++ b/common/src/main/java/io/github/flemmli97/flan/mixin/AbstractBlockStateMixin.java @@ -16,7 +16,7 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; public abstract class AbstractBlockStateMixin { @Inject(method = "onEntityCollision", at = @At(value = "HEAD"), cancellable = true) - public void collision(World world, BlockPos pos, Entity entity, CallbackInfo info) { + private void collision(World world, BlockPos pos, Entity entity, CallbackInfo info) { if (BlockInteractEvents.cancelEntityBlockCollision(this.asBlockState(), world, pos, entity)) { info.cancel(); } diff --git a/common/src/main/java/io/github/flemmli97/flan/mixin/EndermanPlaceMixin.java b/common/src/main/java/io/github/flemmli97/flan/mixin/EndermanPlaceMixin.java index e182459..b6c2c77 100644 --- a/common/src/main/java/io/github/flemmli97/flan/mixin/EndermanPlaceMixin.java +++ b/common/src/main/java/io/github/flemmli97/flan/mixin/EndermanPlaceMixin.java @@ -12,7 +12,7 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; @Mixin(targets = "net/minecraft/entity/mob/EndermanEntity$PlaceBlockGoal") -public class EndermanPlaceMixin { +public abstract class EndermanPlaceMixin { @Shadow private EndermanEntity enderman; diff --git a/common/src/main/java/io/github/flemmli97/flan/mixin/EntityMixin.java b/common/src/main/java/io/github/flemmli97/flan/mixin/EntityMixin.java index f04cddf..850ef33 100644 --- a/common/src/main/java/io/github/flemmli97/flan/mixin/EntityMixin.java +++ b/common/src/main/java/io/github/flemmli97/flan/mixin/EntityMixin.java @@ -13,7 +13,7 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; public abstract class EntityMixin { @Inject(method = "fall", at = @At(value = "INVOKE", target = "Lnet/minecraft/block/Block;onLandedUpon(Lnet/minecraft/world/World;Lnet/minecraft/util/math/BlockPos;Lnet/minecraft/entity/Entity;F)V"), cancellable = true) - public void fallOnBlock(double heightDifference, boolean onGround, BlockState landedState, BlockPos landedPosition, CallbackInfo info) { + private void fallOnBlock(double heightDifference, boolean onGround, BlockState landedState, BlockPos landedPosition, CallbackInfo info) { if (BlockInteractEvents.preventFallOn((Entity) (Object) this, heightDifference, onGround, landedState, landedPosition)) info.cancel(); } diff --git a/common/src/main/java/io/github/flemmli97/flan/mixin/FireBlockMixin.java b/common/src/main/java/io/github/flemmli97/flan/mixin/FireBlockMixin.java index c10bbb2..baeef43 100644 --- a/common/src/main/java/io/github/flemmli97/flan/mixin/FireBlockMixin.java +++ b/common/src/main/java/io/github/flemmli97/flan/mixin/FireBlockMixin.java @@ -18,14 +18,14 @@ import java.util.Random; public abstract class FireBlockMixin { @Inject(method = "scheduledTick", at = @At(value = "INVOKE", target = "Lnet/minecraft/server/world/ServerWorld;getGameRules()Lnet/minecraft/world/GameRules;"), cancellable = true) - public void tick(BlockState state, ServerWorld world, BlockPos pos, Random random, CallbackInfo info) { + private void tick(BlockState state, ServerWorld world, BlockPos pos, Random random, CallbackInfo info) { if (!WorldEvents.canFireSpread(world, pos)) { info.cancel(); } } @Inject(method = "getBurnChance(Lnet/minecraft/world/WorldView;Lnet/minecraft/util/math/BlockPos;)I", at = @At(value = "HEAD"), cancellable = true) - public void burn(WorldView worldView, BlockPos pos, CallbackInfoReturnable info) { + private void burn(WorldView worldView, BlockPos pos, CallbackInfoReturnable info) { if (worldView instanceof ServerWorld && !WorldEvents.canFireSpread((ServerWorld) worldView, pos)) { info.setReturnValue(0); info.cancel(); diff --git a/common/src/main/java/io/github/flemmli97/flan/mixin/FluidMixin.java b/common/src/main/java/io/github/flemmli97/flan/mixin/FluidMixin.java index 5777202..5e91a19 100644 --- a/common/src/main/java/io/github/flemmli97/flan/mixin/FluidMixin.java +++ b/common/src/main/java/io/github/flemmli97/flan/mixin/FluidMixin.java @@ -17,8 +17,8 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; public abstract class FluidMixin { @Inject(method = "canFlow", at = @At(value = "HEAD"), cancellable = true) - public void crossClaimFlow(BlockView world, BlockPos fluidPos, BlockState fluidBlockState, Direction flowDirection, BlockPos flowTo, - BlockState flowToBlockState, FluidState fluidState, Fluid fluid, CallbackInfoReturnable info) { + private void crossClaimFlow(BlockView world, BlockPos fluidPos, BlockState fluidBlockState, Direction flowDirection, BlockPos flowTo, + BlockState flowToBlockState, FluidState fluidState, Fluid fluid, CallbackInfoReturnable info) { if (!WorldEvents.canFlow(fluidBlockState, world, fluidPos, flowDirection)) { info.setReturnValue(false); info.cancel(); diff --git a/common/src/main/java/io/github/flemmli97/flan/mixin/FrostWalkerMixin.java b/common/src/main/java/io/github/flemmli97/flan/mixin/FrostWalkerMixin.java new file mode 100644 index 0000000..9667144 --- /dev/null +++ b/common/src/main/java/io/github/flemmli97/flan/mixin/FrostWalkerMixin.java @@ -0,0 +1,23 @@ +package io.github.flemmli97.flan.mixin; + +import io.github.flemmli97.flan.event.EntityInteractEvents; +import net.minecraft.block.BlockState; +import net.minecraft.enchantment.FrostWalkerEnchantment; +import net.minecraft.entity.LivingEntity; +import net.minecraft.server.world.ServerWorld; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.WorldView; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Redirect; + +@Mixin(FrostWalkerEnchantment.class) +public abstract class FrostWalkerMixin { + + @Redirect(method = "freezeWater", at = @At(value = "INVOKE", target = "Lnet/minecraft/block/BlockState;canPlaceAt(Lnet/minecraft/world/WorldView;Lnet/minecraft/util/math/BlockPos;)Z")) + private static boolean freeze(BlockState state, WorldView world, BlockPos pos, LivingEntity entity) { + if (world instanceof ServerWorld && !EntityInteractEvents.canFrostwalkerFreeze((ServerWorld) world, pos, entity)) + return false; + return state.canPlaceAt(world, pos); + } +} diff --git a/common/src/main/java/io/github/flemmli97/flan/mixin/ItemEntityMixin.java b/common/src/main/java/io/github/flemmli97/flan/mixin/ItemEntityMixin.java index 8ed778f..e42bc78 100644 --- a/common/src/main/java/io/github/flemmli97/flan/mixin/ItemEntityMixin.java +++ b/common/src/main/java/io/github/flemmli97/flan/mixin/ItemEntityMixin.java @@ -13,7 +13,7 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import java.util.UUID; @Mixin(ItemEntity.class) -public class ItemEntityMixin implements IOwnedItem { +public abstract class ItemEntityMixin implements IOwnedItem { @Unique private UUID playerOrigin; diff --git a/common/src/main/java/io/github/flemmli97/flan/mixin/ItemStackMixin.java b/common/src/main/java/io/github/flemmli97/flan/mixin/ItemStackMixin.java index b347ab2..75d4e63 100644 --- a/common/src/main/java/io/github/flemmli97/flan/mixin/ItemStackMixin.java +++ b/common/src/main/java/io/github/flemmli97/flan/mixin/ItemStackMixin.java @@ -13,7 +13,7 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; public abstract class ItemStackMixin { @Inject(method = "useOnBlock", at = @At(value = "HEAD"), cancellable = true) - public void blockUse(ItemUsageContext context, CallbackInfoReturnable info) { + private void blockUse(ItemUsageContext context, CallbackInfoReturnable info) { ActionResult result = ItemInteractEvents.onItemUseBlock(context); if (result != ActionResult.PASS) { info.setReturnValue(result); diff --git a/common/src/main/java/io/github/flemmli97/flan/mixin/PlayerMixin.java b/common/src/main/java/io/github/flemmli97/flan/mixin/PlayerMixin.java index d91685b..33084ed 100644 --- a/common/src/main/java/io/github/flemmli97/flan/mixin/PlayerMixin.java +++ b/common/src/main/java/io/github/flemmli97/flan/mixin/PlayerMixin.java @@ -20,7 +20,7 @@ public abstract class PlayerMixin { } @Inject(method = "collideWithEntity", at = @At(value = "HEAD"), cancellable = true) - public void entityCollide(Entity entity, CallbackInfo info) { + private void entityCollide(Entity entity, CallbackInfo info) { if (!EntityInteractEvents.canCollideWith((PlayerEntity) (Object) this, entity)) { info.cancel(); } diff --git a/common/src/main/java/io/github/flemmli97/flan/mixin/RaidManagerMixin.java b/common/src/main/java/io/github/flemmli97/flan/mixin/RaidManagerMixin.java index af3f5ca..4b8c342 100644 --- a/common/src/main/java/io/github/flemmli97/flan/mixin/RaidManagerMixin.java +++ b/common/src/main/java/io/github/flemmli97/flan/mixin/RaidManagerMixin.java @@ -10,10 +10,10 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; @Mixin(RaidManager.class) -public class RaidManagerMixin { +public abstract class RaidManagerMixin { @Inject(method = "startRaid", at = @At(value = "HEAD"), cancellable = true) - public void checkRaid(ServerPlayerEntity player, CallbackInfoReturnable info) { + private void checkRaid(ServerPlayerEntity player, CallbackInfoReturnable info) { if (!WorldEvents.canStartRaid(player)) { info.setReturnValue(null); info.cancel(); diff --git a/common/src/main/java/io/github/flemmli97/flan/mixin/TurtleEggMixin.java b/common/src/main/java/io/github/flemmli97/flan/mixin/TurtleEggMixin.java index 1b068f9..552510e 100644 --- a/common/src/main/java/io/github/flemmli97/flan/mixin/TurtleEggMixin.java +++ b/common/src/main/java/io/github/flemmli97/flan/mixin/TurtleEggMixin.java @@ -14,7 +14,7 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; public abstract class TurtleEggMixin { @Inject(method = "onSteppedOn", at = @At(value = "HEAD"), cancellable = true) - public void collision(World world, BlockPos pos, Entity entity, CallbackInfo info) { + private void collision(World world, BlockPos pos, Entity entity, CallbackInfo info) { if (BlockInteractEvents.canBreakTurtleEgg(world, pos, entity)) { info.cancel(); } diff --git a/common/src/main/resources/flan.mixins.json b/common/src/main/resources/flan.mixins.json index b932edd..00c37dc 100644 --- a/common/src/main/resources/flan.mixins.json +++ b/common/src/main/resources/flan.mixins.json @@ -20,7 +20,8 @@ "EndermanPickupMixin", "EndermanPlaceMixin", "IItemAccessor", - "IHungerAccessor" + "IHungerAccessor", + "FrostWalkerMixin" ], "server": [ ], diff --git a/fabric/src/main/java/io/github/flemmli97/flan/fabric/mixin/EntityDamageMixin.java b/fabric/src/main/java/io/github/flemmli97/flan/fabric/mixin/EntityDamageMixin.java index f632b88..5db6423 100644 --- a/fabric/src/main/java/io/github/flemmli97/flan/fabric/mixin/EntityDamageMixin.java +++ b/fabric/src/main/java/io/github/flemmli97/flan/fabric/mixin/EntityDamageMixin.java @@ -20,7 +20,7 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; public abstract class EntityDamageMixin { @Inject(method = "damage", at = @At(value = "HEAD"), cancellable = true) - public void onDamage(DamageSource source, float amount, CallbackInfoReturnable info) { + private void onDamage(DamageSource source, float amount, CallbackInfoReturnable info) { if (EntityInteractEvents.preventDamage((Entity) (Object) this, source)) { info.setReturnValue(false); info.cancel(); diff --git a/fabric/src/main/java/io/github/flemmli97/flan/fabric/mixin/FabricFireMixin.java b/fabric/src/main/java/io/github/flemmli97/flan/fabric/mixin/FabricFireMixin.java index 9a6cabe..efca142 100644 --- a/fabric/src/main/java/io/github/flemmli97/flan/fabric/mixin/FabricFireMixin.java +++ b/fabric/src/main/java/io/github/flemmli97/flan/fabric/mixin/FabricFireMixin.java @@ -13,10 +13,10 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import java.util.Random; @Mixin(FireBlock.class) -public class FabricFireMixin { +public abstract class FabricFireMixin { @Inject(method = "trySpreadingFire", at = @At(value = "HEAD"), cancellable = true) - public void spread(World world, BlockPos pos, int spreadFactor, Random rand, int currentAge, CallbackInfo info) { + private void spread(World world, BlockPos pos, int spreadFactor, Random rand, int currentAge, CallbackInfo info) { if (!world.isClient && !WorldEvents.canFireSpread((ServerWorld) world, pos)) { info.cancel(); } diff --git a/fabric/src/main/java/io/github/flemmli97/flan/fabric/mixin/PistonMixin.java b/fabric/src/main/java/io/github/flemmli97/flan/fabric/mixin/PistonMixin.java index ebec7f1..3b0130a 100644 --- a/fabric/src/main/java/io/github/flemmli97/flan/fabric/mixin/PistonMixin.java +++ b/fabric/src/main/java/io/github/flemmli97/flan/fabric/mixin/PistonMixin.java @@ -12,7 +12,7 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; @Mixin(PistonBlock.class) -public class PistonMixin { +public abstract class PistonMixin { @Inject(method = "isMovable", at = @At(value = "HEAD"), cancellable = true) private static void checkMovable(BlockState blockState, World world, BlockPos blockPos, Direction direction, boolean canBreak, Direction pistonDir, CallbackInfoReturnable info) { diff --git a/fabric/src/main/java/io/github/flemmli97/flan/fabric/mixin/PlayerDropMixin.java b/fabric/src/main/java/io/github/flemmli97/flan/fabric/mixin/PlayerDropMixin.java index 176c179..799eabf 100644 --- a/fabric/src/main/java/io/github/flemmli97/flan/fabric/mixin/PlayerDropMixin.java +++ b/fabric/src/main/java/io/github/flemmli97/flan/fabric/mixin/PlayerDropMixin.java @@ -13,7 +13,7 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; public abstract class PlayerDropMixin { @Inject(method = "dropItem(Lnet/minecraft/item/ItemStack;ZZ)Lnet/minecraft/entity/ItemEntity;", at = @At(value = "HEAD"), cancellable = true) - public void drop(ItemStack stack, boolean throwRandomly, boolean retainOwnership, CallbackInfoReturnable info) { + private void drop(ItemStack stack, boolean throwRandomly, boolean retainOwnership, CallbackInfoReturnable info) { if (!EntityInteractEvents.canDropItem((PlayerEntity) (Object) this, stack)) { info.setReturnValue(null); info.cancel(); diff --git a/fabric/src/main/java/io/github/flemmli97/flan/fabric/mixin/ProjectileMixin.java b/fabric/src/main/java/io/github/flemmli97/flan/fabric/mixin/ProjectileMixin.java index 87dab84..b2efd24 100644 --- a/fabric/src/main/java/io/github/flemmli97/flan/fabric/mixin/ProjectileMixin.java +++ b/fabric/src/main/java/io/github/flemmli97/flan/fabric/mixin/ProjectileMixin.java @@ -17,7 +17,7 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; public abstract class ProjectileMixin { @Inject(method = "onCollision", at = @At(value = "HEAD"), cancellable = true) - public void collision(HitResult hitResult, CallbackInfo info) { + private void collision(HitResult hitResult, CallbackInfo info) { if (EntityInteractEvents.projectileHit((ProjectileEntity) (Object) this, hitResult)) { info.cancel(); } diff --git a/fabric/src/main/java/io/github/flemmli97/flan/fabric/mixin/ServerPlayNetworkHandlerMixin.java b/fabric/src/main/java/io/github/flemmli97/flan/fabric/mixin/ServerPlayNetworkHandlerMixin.java index 6745706..a93be99 100644 --- a/fabric/src/main/java/io/github/flemmli97/flan/fabric/mixin/ServerPlayNetworkHandlerMixin.java +++ b/fabric/src/main/java/io/github/flemmli97/flan/fabric/mixin/ServerPlayNetworkHandlerMixin.java @@ -23,7 +23,7 @@ public abstract class ServerPlayNetworkHandlerMixin { private ServerPlayerEntity player; @Inject(method = "onPlayerInteractEntity", at = @At(value = "INVOKE", target = "Lnet/minecraft/server/network/ServerPlayerEntity;interact(Lnet/minecraft/entity/Entity;Lnet/minecraft/util/Hand;)Lnet/minecraft/util/ActionResult;"), cancellable = true) - public void onPlayerInteractEntity(PlayerInteractEntityC2SPacket packet, CallbackInfo info) { + private void onPlayerInteractEntity(PlayerInteractEntityC2SPacket packet, CallbackInfo info) { World world = this.player.getEntityWorld(); Entity entity = packet.getEntity(world); if (entity != null) { diff --git a/fabric/src/main/java/io/github/flemmli97/flan/fabric/mixin/SpawnHelperMixin.java b/fabric/src/main/java/io/github/flemmli97/flan/fabric/mixin/SpawnHelperMixin.java index b4f2741..16087ec 100644 --- a/fabric/src/main/java/io/github/flemmli97/flan/fabric/mixin/SpawnHelperMixin.java +++ b/fabric/src/main/java/io/github/flemmli97/flan/fabric/mixin/SpawnHelperMixin.java @@ -10,7 +10,7 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; @Mixin(SpawnHelper.class) -public class SpawnHelperMixin { +public abstract class SpawnHelperMixin { @Inject(method = "isValidSpawn", at = @At(value = "INVOKE", target = "Lnet/minecraft/entity/mob/MobEntity;canSpawn(Lnet/minecraft/world/WorldAccess;Lnet/minecraft/entity/SpawnReason;)Z"), cancellable = true) private static void isValidSpawn(ServerWorld world, MobEntity entity, double squaredDistance, CallbackInfoReturnable info) { diff --git a/fabric/src/main/java/io/github/flemmli97/flan/fabric/mixin/WitherMixin.java b/fabric/src/main/java/io/github/flemmli97/flan/fabric/mixin/WitherMixin.java index 286b53b..2b9bb1f 100644 --- a/fabric/src/main/java/io/github/flemmli97/flan/fabric/mixin/WitherMixin.java +++ b/fabric/src/main/java/io/github/flemmli97/flan/fabric/mixin/WitherMixin.java @@ -15,7 +15,7 @@ public abstract class WitherMixin { private int field_7082; @Inject(method = "mobTick", at = @At(value = "HEAD")) - public void preventClaimDmg(CallbackInfo info) { + private void preventClaimDmg(CallbackInfo info) { if (!EntityInteractEvents.witherCanDestroy((WitherEntity) (Object) this)) this.field_7082 = -1; } diff --git a/fabric/src/main/java/io/github/flemmli97/flan/fabric/mixin/XpEntityMixin.java b/fabric/src/main/java/io/github/flemmli97/flan/fabric/mixin/XpEntityMixin.java index 6e243ed..7a756f9 100644 --- a/fabric/src/main/java/io/github/flemmli97/flan/fabric/mixin/XpEntityMixin.java +++ b/fabric/src/main/java/io/github/flemmli97/flan/fabric/mixin/XpEntityMixin.java @@ -9,10 +9,10 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @Mixin(ExperienceOrbEntity.class) -public class XpEntityMixin { +public abstract class XpEntityMixin { @Inject(method = "onPlayerCollision", at = @At(value = "HEAD"), cancellable = true) - public void collision(PlayerEntity player, CallbackInfo info) { + private void collision(PlayerEntity player, CallbackInfo info) { if (EntityInteractEvents.xpAbsorb(player)) { info.cancel(); } diff --git a/forge/src/main/java/io/github/flemmli97/flan/forge/mixin/ForgeFireMixin.java b/forge/src/main/java/io/github/flemmli97/flan/forge/mixin/ForgeFireMixin.java index 100a808..8704ecc 100644 --- a/forge/src/main/java/io/github/flemmli97/flan/forge/mixin/ForgeFireMixin.java +++ b/forge/src/main/java/io/github/flemmli97/flan/forge/mixin/ForgeFireMixin.java @@ -14,10 +14,10 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import java.util.Random; @Mixin(FireBlock.class) -public class ForgeFireMixin { +public abstract class ForgeFireMixin { @Inject(method = "tryCatchFire", at = @At(value = "HEAD"), cancellable = true) - public void spread(World world, BlockPos pos, int spreadFactor, Random rand, int currentAge, Direction dir, CallbackInfo info) { + private void spread(World world, BlockPos pos, int spreadFactor, Random rand, int currentAge, Direction dir, CallbackInfo info) { if (!world.isClient && !WorldEvents.canFireSpread((ServerWorld) world, pos)) { info.cancel(); }