diff --git a/src/main/java/carpet/fakes/EntityInterface.java b/src/main/java/carpet/fakes/EntityInterface.java index cff3c98f..e75084e7 100644 --- a/src/main/java/carpet/fakes/EntityInterface.java +++ b/src/main/java/carpet/fakes/EntityInterface.java @@ -18,4 +18,5 @@ public interface EntityInterface void setDamageCallback(CarpetContext cc, String function, List extraArgs); void setRemovedCallback(CarpetContext cc, String function, List extraArgs); void setTickCallback(CarpetContext cc, String function, List extraArgs); + CarpetEventServer.ScheduledCall getTickCallback(); } diff --git a/src/main/java/carpet/mixins/Entity_scarpetEventsMixin.java b/src/main/java/carpet/mixins/Entity_scarpetEventsMixin.java index 61822c65..0359fb61 100644 --- a/src/main/java/carpet/mixins/Entity_scarpetEventsMixin.java +++ b/src/main/java/carpet/mixins/Entity_scarpetEventsMixin.java @@ -48,6 +48,12 @@ public abstract class Entity_scarpetEventsMixin implements EntityInterface tickCall = CarpetServer.scriptServer.events.makeTickCall(cc, function, extraArgs); } + @Override + public CarpetEventServer.ScheduledCall getTickCallback() + { + return tickCall; + } + @Override public void setDamageCallback(CarpetContext cc, String function, List extraArgs) { diff --git a/src/main/java/carpet/mixins/FallingBlockEntity_scarpetEventsMixin.java b/src/main/java/carpet/mixins/FallingBlockEntity_scarpetEventsMixin.java new file mode 100644 index 00000000..f7f65b26 --- /dev/null +++ b/src/main/java/carpet/mixins/FallingBlockEntity_scarpetEventsMixin.java @@ -0,0 +1,23 @@ +package carpet.mixins; + +import carpet.CarpetServer; +import carpet.fakes.EntityInterface; +import net.minecraft.entity.Entity; +import net.minecraft.entity.FallingBlockEntity; +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.CallbackInfo; + +@Mixin(FallingBlockEntity.class) +public class FallingBlockEntity_scarpetEventsMixin +{ + @Inject(method = "tick", at = @At("HEAD")) + private void onTickCall(CallbackInfo ci) + { + if (((EntityInterface)this).getTickCallback() != null) + { + CarpetServer.scriptServer.events.onEntityTick(((EntityInterface)this).getTickCallback(), (Entity) (Object) this); + } + } +} diff --git a/src/main/resources/carpet.mixins.json b/src/main/resources/carpet.mixins.json index 44523e3e..754a0fa5 100644 --- a/src/main/resources/carpet.mixins.json +++ b/src/main/resources/carpet.mixins.json @@ -128,6 +128,7 @@ "LivingEntity_scarpetEventsMixin", "DamageTracker_scarpetEventMixin", "ServerPlayerEntity_scarpetEventMixin", + "FallingBlockEntity_scarpetEventsMixin", "PistonBlock_movableTEMixin",