From 8297000b886ab792c7513b75a8a742e7edcca8e7 Mon Sep 17 00:00:00 2001 From: gnembon Date: Fri, 11 Jun 2021 00:20:09 -0300 Subject: [PATCH 1/7] Fixes clingon messaging with broken argument lists. Fixes #638. --- src/main/java/carpet/script/CarpetScriptHost.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/carpet/script/CarpetScriptHost.java b/src/main/java/carpet/script/CarpetScriptHost.java index 9bdf1490..8621f913 100644 --- a/src/main/java/carpet/script/CarpetScriptHost.java +++ b/src/main/java/carpet/script/CarpetScriptHost.java @@ -378,7 +378,7 @@ public class CarpetScriptHost extends ScriptHost } catch (CommandSyntaxException e) { - notifier.accept(Messenger.c("Error when handling of setting up custom argument types: "+e.getMessage())); + notifier.accept(Messenger.c("r Error when handling of setting up custom argument types: "+e.getMessage())); return false; } if (appConfig.get(StringValue.of("commands")) != null) From 7ee313134e1aa20c9a2a9afd64749c45e9bc4345 Mon Sep 17 00:00:00 2001 From: gnembon Date: Fri, 11 Jun 2021 00:37:45 -0300 Subject: [PATCH 2/7] Pulling in from empty list container returns null like for other containers. Fixes #660 --- src/main/java/carpet/script/value/ListValue.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/main/java/carpet/script/value/ListValue.java b/src/main/java/carpet/script/value/ListValue.java index 886019d4..2b0abd56 100644 --- a/src/main/java/carpet/script/value/ListValue.java +++ b/src/main/java/carpet/script/value/ListValue.java @@ -437,7 +437,15 @@ public class ListValue extends AbstractListValue implements ContainerValueInterf public Value get(Value value) { long index = NumericValue.asNumber(value, "'address' to a list index").getLong(); - return items.get(normalizeIndex(index, items.size())); + try + { + return items.get(normalizeIndex(index, items.size())); + } + catch (ArithmeticException are) + { + if (items.isEmpty()) return Value.NULL; + throw are; + } } @Override From a7770abf9d5e0898fb0505f6318a860cffab733e Mon Sep 17 00:00:00 2001 From: gnembon Date: Fri, 11 Jun 2021 00:39:40 -0300 Subject: [PATCH 3/7] better --- src/main/java/carpet/script/value/ListValue.java | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/src/main/java/carpet/script/value/ListValue.java b/src/main/java/carpet/script/value/ListValue.java index 2b0abd56..e0ab33f4 100644 --- a/src/main/java/carpet/script/value/ListValue.java +++ b/src/main/java/carpet/script/value/ListValue.java @@ -437,15 +437,9 @@ public class ListValue extends AbstractListValue implements ContainerValueInterf public Value get(Value value) { long index = NumericValue.asNumber(value, "'address' to a list index").getLong(); - try - { - return items.get(normalizeIndex(index, items.size())); - } - catch (ArithmeticException are) - { - if (items.isEmpty()) return Value.NULL; - throw are; - } + int size = items.size(); + if (size == 0) return Value.NULL; + return items.get(normalizeIndex(index, size)); } @Override From c36f9bfb9f056500b33274176f053ad958364c0f Mon Sep 17 00:00:00 2001 From: gnembon Date: Fri, 11 Jun 2021 00:42:49 -0300 Subject: [PATCH 4/7] better --- src/main/java/carpet/script/value/ListValue.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/main/java/carpet/script/value/ListValue.java b/src/main/java/carpet/script/value/ListValue.java index e0ab33f4..25e1be8b 100644 --- a/src/main/java/carpet/script/value/ListValue.java +++ b/src/main/java/carpet/script/value/ListValue.java @@ -436,10 +436,9 @@ public class ListValue extends AbstractListValue implements ContainerValueInterf @Override public Value get(Value value) { - long index = NumericValue.asNumber(value, "'address' to a list index").getLong(); int size = items.size(); if (size == 0) return Value.NULL; - return items.get(normalizeIndex(index, size)); + return items.get(normalizeIndex(NumericValue.asNumber(value, "'address' to a list index").getLong(), size)); } @Override From 0f03e6e3bdb87ece529d203a7f2c45186c015e98 Mon Sep 17 00:00:00 2001 From: gnembon Date: Fri, 11 Jun 2021 03:15:17 -0300 Subject: [PATCH 5/7] creativeNoClip player are not affected by opening shulkers. Fixes #878 --- ...kerBoxBlockEntity_creativeNoClipMixin.java | 25 +++++++++++++++++++ src/main/resources/carpet.mixins.json | 1 + 2 files changed, 26 insertions(+) create mode 100644 src/main/java/carpet/mixins/ShulkerBoxBlockEntity_creativeNoClipMixin.java diff --git a/src/main/java/carpet/mixins/ShulkerBoxBlockEntity_creativeNoClipMixin.java b/src/main/java/carpet/mixins/ShulkerBoxBlockEntity_creativeNoClipMixin.java new file mode 100644 index 00000000..d3deec9c --- /dev/null +++ b/src/main/java/carpet/mixins/ShulkerBoxBlockEntity_creativeNoClipMixin.java @@ -0,0 +1,25 @@ +package carpet.mixins; + +import carpet.CarpetSettings; +import net.minecraft.block.entity.ShulkerBoxBlockEntity; +import net.minecraft.block.piston.PistonBehavior; +import net.minecraft.entity.Entity; +import net.minecraft.entity.player.PlayerEntity; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Redirect; + +@Mixin(ShulkerBoxBlockEntity.class) +public class ShulkerBoxBlockEntity_creativeNoClipMixin +{ + @Redirect(method = "pushEntities", at = @At( + value = "INVOKE", + target = "Lnet/minecraft/entity/Entity;getPistonBehavior()Lnet/minecraft/block/piston/PistonBehavior;" + )) + private PistonBehavior getPistonBehaviourOfNoClipPlayers(Entity entity) + { + if (CarpetSettings.creativeNoClip && entity instanceof PlayerEntity && (((PlayerEntity) entity).isCreative()) && ((PlayerEntity) entity).abilities.flying) + return PistonBehavior.IGNORE; + return entity.getPistonBehavior(); + } +} diff --git a/src/main/resources/carpet.mixins.json b/src/main/resources/carpet.mixins.json index dfc7ee5a..bc85dd1b 100644 --- a/src/main/resources/carpet.mixins.json +++ b/src/main/resources/carpet.mixins.json @@ -203,6 +203,7 @@ "PistonBlockEntity_playerHandlingMixin", "BlockItem_creativeNoClipMixin", "WallStandingBlockItem_creativeNoClipMixin", + "ShulkerBoxBlockEntity_creativeNoClipMixin", "LivingEntity_creativeFlyMixin" ], From d29adf3a4875c34b04cbb2f7b4ff2a3ae3061025 Mon Sep 17 00:00:00 2001 From: gnembon Date: Fri, 11 Jun 2021 03:41:44 -0300 Subject: [PATCH 6/7] whatever, Fixes #895 --- src/main/java/carpet/script/CarpetScriptHost.java | 7 ++----- src/main/java/carpet/script/Expression.java | 1 + 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/src/main/java/carpet/script/CarpetScriptHost.java b/src/main/java/carpet/script/CarpetScriptHost.java index 8621f913..4022714d 100644 --- a/src/main/java/carpet/script/CarpetScriptHost.java +++ b/src/main/java/carpet/script/CarpetScriptHost.java @@ -743,11 +743,8 @@ public class CarpetScriptHost extends ScriptHost { case VARIABLE: LazyValue var = getGlobalVariable(tok.surface); - if (var != null) - { - argv.add(var); - break; - } + if (var != null) argv.add(var); + break; case STRINGPARAM: argv.add((c, t) -> new StringValue(tok.surface)); sign = ""; diff --git a/src/main/java/carpet/script/Expression.java b/src/main/java/carpet/script/Expression.java index b1a62fcc..285c2135 100644 --- a/src/main/java/carpet/script/Expression.java +++ b/src/main/java/carpet/script/Expression.java @@ -852,6 +852,7 @@ public class Expression { outputQueue.add(stack.pop()); } + break; case MARKER: if ("$".equals(token.surface)) { From 1a925315540ec112f9c44b580075bbf6740d7170 Mon Sep 17 00:00:00 2001 From: altrisi Date: Sun, 13 Jun 2021 04:02:33 +0200 Subject: [PATCH 7/7] Compact fabric initialization code (#918) --- src/main/java/carpet/CarpetServer.java | 17 ++++------------- src/main/resources/fabric.mod.json | 4 ++-- 2 files changed, 6 insertions(+), 15 deletions(-) diff --git a/src/main/java/carpet/CarpetServer.java b/src/main/java/carpet/CarpetServer.java index 00b7ca93..276b9e8a 100644 --- a/src/main/java/carpet/CarpetServer.java +++ b/src/main/java/carpet/CarpetServer.java @@ -1,6 +1,5 @@ package carpet; - import java.util.ArrayList; import java.util.List; import java.util.Random; @@ -37,8 +36,11 @@ import net.minecraft.server.command.ServerCommandSource; import net.minecraft.server.MinecraftServer; import net.minecraft.server.network.ServerPlayerEntity; -public class CarpetServer implements ClientModInitializer,DedicatedServerModInitializer // static for now - easier to handle all around the code, its one anyways +public class CarpetServer // static for now - easier to handle all around the code, its one anyways { + public static final ClientModInitializer CLIENT_INITIALIZER = CarpetServer::onGameStarted; + public static final DedicatedServerModInitializer SERVER_INITIALIZER = CarpetServer::onGameStarted; + public static final Random rand = new Random(); public static MinecraftServer minecraft_server; private static CommandDispatcher currentCommandDispatcher; @@ -46,17 +48,6 @@ public class CarpetServer implements ClientModInitializer,DedicatedServerModInit public static SettingsManager settingsManager; public static final List extensions = new ArrayList<>(); - @Override - public void onInitializeClient() - { - CarpetServer.onGameStarted(); - } - @Override - public void onInitializeServer() - { - CarpetServer.onGameStarted(); - } - // Separate from onServerLoaded, because a server can be loaded multiple times in singleplayer /** * Registers a {@link CarpetExtension} to be managed by Carpet.
diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index 863aef23..ecf360d9 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -20,10 +20,10 @@ "environment": "*", "entrypoints": { "client": [ - "carpet.CarpetServer" + "carpet.CarpetServer::CLIENT_INITIALIZER" ], "server": [ - "carpet.CarpetServer" + "carpet.CarpetServer::SERVER_INITIALIZER" ] }, "mixins": [