From cf6eb2c7d6c36678a0b8900212625acf7b8e3f45 Mon Sep 17 00:00:00 2001 From: gnembon Date: Tue, 22 Jun 2021 00:35:03 -0300 Subject: [PATCH 1/3] issues with mocked inventories, fixes #946 --- .../java/carpet/script/utils/EquipmentInventory.java | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/src/main/java/carpet/script/utils/EquipmentInventory.java b/src/main/java/carpet/script/utils/EquipmentInventory.java index 723157c5..79f9cf68 100644 --- a/src/main/java/carpet/script/utils/EquipmentInventory.java +++ b/src/main/java/carpet/script/utils/EquipmentInventory.java @@ -48,7 +48,7 @@ public class EquipmentInventory implements Inventory catch (IndexOutOfBoundsException ignored) { //going out of the index should be really exceptional - return null; + return ItemStack.EMPTY; } return mob.getEquippedStack(slotSlot); } @@ -64,11 +64,9 @@ public class EquipmentInventory implements Inventory catch (IndexOutOfBoundsException ignored) { //going out of the index should be really exceptional - return null; + return ItemStack.EMPTY; } - ItemStack stack = mob.getEquippedStack(slotSlot); - stack.decrement(amount); - return stack; + return mob.getEquippedStack(slotSlot).split(amount); } @Override @@ -82,7 +80,7 @@ public class EquipmentInventory implements Inventory catch (IndexOutOfBoundsException ignored) { //going out of the index should be really exceptional - return null; + return ItemStack.EMPTY; } ItemStack previous = mob.getEquippedStack(slotSlot); mob.equipStack(slotSlot, ItemStack.EMPTY); From 28374b977be5d1968c4784216f166119b9623c9a Mon Sep 17 00:00:00 2001 From: gnembon Date: Tue, 22 Jun 2021 01:05:13 -0300 Subject: [PATCH 2/3] interrupting of unexising warp will message. Fixes #944 --- src/main/java/carpet/helpers/TickSpeed.java | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/main/java/carpet/helpers/TickSpeed.java b/src/main/java/carpet/helpers/TickSpeed.java index d3e81523..ffee2e27 100644 --- a/src/main/java/carpet/helpers/TickSpeed.java +++ b/src/main/java/carpet/helpers/TickSpeed.java @@ -108,9 +108,13 @@ public class TickSpeed { tick_warp_callback = null; if (source != tick_warp_sender) tick_warp_sender = null; - finish_time_warp(); - tick_warp_sender = null; - return Messenger.c("gi Warp interrupted"); + if (time_bias > 0) + { + finish_time_warp(); + tick_warp_sender = null; + return Messenger.c("gi Warp interrupted"); + } + return Messenger.c("ri No warp in progress"); } if (time_bias > 0) { From 00ab7c160131d434740b0f4a09c1040c17875f8a Mon Sep 17 00:00:00 2001 From: gnembon Date: Tue, 22 Jun 2021 01:27:17 -0300 Subject: [PATCH 3/3] flying in end gateways in cretiveNoClip won't teleport. fixes #943 --- src/main/java/carpet/CarpetSettings.java | 7 +++++++ ...atewayBlockEntity_creativeNoClipMixin.java | 19 +++++++++++++++++++ src/main/resources/carpet.mixins.json | 1 + 3 files changed, 27 insertions(+) create mode 100644 src/main/java/carpet/mixins/EndGatewayBlockEntity_creativeNoClipMixin.java 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" ],