From 0dd5fc8bd841f7112e94c862fe4c60b71e1f3759 Mon Sep 17 00:00:00 2001 From: gnembon Date: Thu, 11 Jul 2019 14:42:59 -0300 Subject: [PATCH 1/3] 1.14.4-pre5 --- gradle.properties | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gradle.properties b/gradle.properties index 0868e05f..af183cea 100644 --- a/gradle.properties +++ b/gradle.properties @@ -4,8 +4,8 @@ org.gradle.jvmargs=-Xmx1G # Fabric Properties # check these on https://fabricmc.net/use # or better: https://modmuss50.me/fabric.html - minecraft_version=1.14.4-pre4 - yarn_mappings=1.14.4-pre4+build.1 + minecraft_version=1.14.4-pre5 + yarn_mappings=1.14.4-pre5+build.1 loader_version=0.4.8+build.155 # Mod Properties From 6e2ee7605fc3f4b3882a1b00099d79d4b5f8c234 Mon Sep 17 00:00:00 2001 From: gnembon Date: Thu, 11 Jul 2019 14:43:49 -0300 Subject: [PATCH 2/3] better handling of unknown exceptions --- src/main/java/carpet/script/Expression.java | 42 ++++++++++++++++++++- src/main/java/carpet/script/Fluff.java | 28 ++++++++++++++ 2 files changed, 69 insertions(+), 1 deletion(-) diff --git a/src/main/java/carpet/script/Expression.java b/src/main/java/carpet/script/Expression.java index 70a7c762..88ac9cac 100644 --- a/src/main/java/carpet/script/Expression.java +++ b/src/main/java/carpet/script/Expression.java @@ -506,6 +506,14 @@ public class Expression implements Cloneable { throw new ExpressionException(e, token, "Your math is wrong, "+exc.getMessage()); } + catch (ExitStatement exit) + { + throw exit; + } + catch (Exception exc) + { + throw new ExpressionException(e, token, "Error while evaluating expression: "+exc.getMessage()); + } } }); } @@ -532,6 +540,14 @@ public class Expression implements Cloneable { throw new ExpressionException(e, t, "Your math is wrong, "+exc.getMessage()); } + catch (ExitStatement exit) + { + throw exit; + } + catch (Exception exc) + { + throw new ExpressionException(e, t, "Error while evaluating expression: "+exc.getMessage()); + } } }); } @@ -557,6 +573,14 @@ public class Expression implements Cloneable { throw new ExpressionException(e, token, "Your math is wrong, "+exc.getMessage()); } + catch (ExitStatement exit) + { + throw exit; + } + catch (Exception exc) + { + throw new ExpressionException(e, token, "Error while evaluating expression: "+exc.getMessage()); + } } }); } @@ -663,6 +687,14 @@ public class Expression implements Cloneable { throw new ExpressionException(e, t, "Your math is wrong, "+exc.getMessage()); } + catch (ExitStatement exit) + { + throw exit; + } + catch (Exception exc) + { + throw new ExpressionException(e, t, "Error while evaluating expression: "+exc.getMessage()); + } } }); } @@ -725,7 +757,7 @@ public class Expression implements Cloneable { retVal = returnStatement.retval; } - catch (ThrowStatement throwStatement) + catch (ThrowStatement throwStatement) // might not be really necessary { retVal = throwStatement.retval; rethrow = true; @@ -738,6 +770,14 @@ public class Expression implements Cloneable { throw new ExpressionException(function_context, t, "Your math is wrong, "+exc.getMessage()); } + catch (ExitStatement exit) + { + throw exit; + } + catch (Exception exc) + { + throw new ExpressionException(e, t, "Error while evaluating expression: "+exc.getMessage()); + } for (String global: globals) { LazyValue lv = newFrame.getVariable(global); diff --git a/src/main/java/carpet/script/Fluff.java b/src/main/java/carpet/script/Fluff.java index c8d55378..082ecfdd 100644 --- a/src/main/java/carpet/script/Fluff.java +++ b/src/main/java/carpet/script/Fluff.java @@ -108,6 +108,18 @@ public abstract class Fluff { throw new ExpressionException(e, t, exc.getMessage()); } + catch (ArithmeticException exc) + { + throw new ExpressionException(e, t, "Your math is wrong, "+exc.getMessage()); + } + catch (Expression.ExitStatement exit) + { + throw exit; + } + catch (Exception exc) + { + throw new ExpressionException(e, t, "Error while evaluating expression: "+exc.getMessage()); + } } } @@ -154,6 +166,14 @@ public abstract class Fluff { throw new ExpressionException(e, t, "Your math is wrong, "+exc.getMessage()); } + catch (Expression.ExitStatement exit) + { + throw exit; + } + catch (Exception exc) + { + throw new ExpressionException(e, t, "Error while evaluating expression: "+exc.getMessage()); + } } } @@ -182,6 +202,14 @@ public abstract class Fluff { throw new ExpressionException(e, t, "Your math is wrong, "+exc.getMessage()); } + catch (Expression.ExitStatement exit) + { + throw exit; + } + catch (Exception exc) + { + throw new ExpressionException(e, t, "Error while evaluating expression: "+exc.getMessage()); + } } @Override From 99835f34741312ff2804a50480b24688648a9feb Mon Sep 17 00:00:00 2001 From: gnembon Date: Thu, 11 Jul 2019 17:09:55 -0300 Subject: [PATCH 3/3] better handling of unknown exceptions --- .../carpet/mixins/Entity_horseFixMixin.java | 35 +++++++++++++++++++ .../java/carpet/settings/CarpetSettings.java | 7 ++++ src/main/resources/carpet.mixins.json | 2 ++ 3 files changed, 44 insertions(+) create mode 100644 src/main/java/carpet/mixins/Entity_horseFixMixin.java diff --git a/src/main/java/carpet/mixins/Entity_horseFixMixin.java b/src/main/java/carpet/mixins/Entity_horseFixMixin.java new file mode 100644 index 00000000..685c21a4 --- /dev/null +++ b/src/main/java/carpet/mixins/Entity_horseFixMixin.java @@ -0,0 +1,35 @@ +package carpet.mixins; + +import carpet.settings.CarpetSettings; +import net.minecraft.client.network.packet.EntityPositionS2CPacket; +import net.minecraft.entity.Entity; +import net.minecraft.entity.mob.MobEntity; +import net.minecraft.server.world.ServerWorld; +import net.minecraft.world.World; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(Entity.class) +public abstract class Entity_horseFixMixin +{ + @Shadow private Entity vehicle; + + @Shadow public abstract World getEntityWorld(); + + @Inject(method = "stopRiding", at = @At("HEAD")) + private void resetNavigation(CallbackInfo ci) + { + if (vehicle != null && vehicle instanceof MobEntity && CarpetSettings.horseWanderingFix) + { + ((MobEntity) vehicle).getNavigation().stop(); + if (!getEntityWorld().isClient) + { + ((ServerWorld) getEntityWorld()).method_14178().sendToNearbyPlayers((Entity)(Object)this, new EntityPositionS2CPacket(vehicle)); + } + } + } + +} diff --git a/src/main/java/carpet/settings/CarpetSettings.java b/src/main/java/carpet/settings/CarpetSettings.java index 1d46be6e..89416edf 100644 --- a/src/main/java/carpet/settings/CarpetSettings.java +++ b/src/main/java/carpet/settings/CarpetSettings.java @@ -401,4 +401,11 @@ public class CarpetSettings @Rule(desc = "Spawning requires much less CPU and Memory", category = OPTIMIZATION) public static boolean lagFreeSpawning = false; + + @Rule( + desc = "Prevents horses and other mobs to wander into the distance after dismounting", + extra = "Fixes issues with various Joergens wandering off and disappearing client-side", + category = BUGFIX + ) + public static boolean horseWanderingFix = false; } diff --git a/src/main/resources/carpet.mixins.json b/src/main/resources/carpet.mixins.json index 3c35b4a8..3fb50f52 100644 --- a/src/main/resources/carpet.mixins.json +++ b/src/main/resources/carpet.mixins.json @@ -81,6 +81,8 @@ "Entity_portalSuffocationMixin", "PortalForcer_portalSuffocationMixin", + "Entity_horseFixMixin", + "HopperBlockEntityMixin", "ContainerMixin", "ClientConnectionMixin",