diff --git a/src/main/java/carpet/CarpetSettings.java b/src/main/java/carpet/CarpetSettings.java index 12ba0c24..5fc49231 100644 --- a/src/main/java/carpet/CarpetSettings.java +++ b/src/main/java/carpet/CarpetSettings.java @@ -10,6 +10,8 @@ import carpet.utils.Messenger; import carpet.utils.SpawnChunks; import net.minecraft.block.Block; import net.minecraft.block.Blocks; +import net.minecraft.entity.Entity; +import net.minecraft.entity.player.PlayerEntity; import net.minecraft.server.MinecraftServer; import net.minecraft.server.command.ServerCommandSource; import net.minecraft.server.dedicated.DedicatedServer; @@ -803,6 +805,11 @@ public class CarpetSettings category = {CREATIVE, CLIENT} ) public static boolean creativeNoClip = false; + public static boolean isCreativeFlying(Entity entity) + { + // #todo replace after merger to 1.17 + return CarpetSettings.creativeNoClip && entity instanceof PlayerEntity && (((PlayerEntity) entity).isCreative()) && ((PlayerEntity) entity).abilities.flying; + } @Rule( diff --git a/src/main/java/carpet/mixins/EndGatewayBlockEntity_creativeNoClipMixin.java b/src/main/java/carpet/mixins/EndGatewayBlockEntity_creativeNoClipMixin.java new file mode 100644 index 00000000..8d3703d0 --- /dev/null +++ b/src/main/java/carpet/mixins/EndGatewayBlockEntity_creativeNoClipMixin.java @@ -0,0 +1,19 @@ +package carpet.mixins; + +import carpet.CarpetSettings; +import net.minecraft.block.entity.EndGatewayBlockEntity; +import net.minecraft.entity.Entity; +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.callback.CallbackInfoReturnable; + +@Mixin(EndGatewayBlockEntity.class) +public class EndGatewayBlockEntity_creativeNoClipMixin +{ + @Inject(method = "method_30276", cancellable = true, at = @At("HEAD")) + private static void checkFlyingCreative(Entity entity, CallbackInfoReturnable cir) + { + if (CarpetSettings.isCreativeFlying(entity)) cir.setReturnValue(false); + } +} diff --git a/src/main/resources/carpet.mixins.json b/src/main/resources/carpet.mixins.json index bc85dd1b..7a8ab8b9 100644 --- a/src/main/resources/carpet.mixins.json +++ b/src/main/resources/carpet.mixins.json @@ -204,6 +204,7 @@ "BlockItem_creativeNoClipMixin", "WallStandingBlockItem_creativeNoClipMixin", "ShulkerBoxBlockEntity_creativeNoClipMixin", + "EndGatewayBlockEntity_creativeNoClipMixin", "LivingEntity_creativeFlyMixin" ],