Skip to content

Commit

Permalink
we have working localized time dilation :3
Browse files Browse the repository at this point in the history
  • Loading branch information
CammiePone committed Jan 20, 2025
1 parent e745a4f commit e54dac4
Show file tree
Hide file tree
Showing 5 changed files with 95 additions and 84 deletions.

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
package dev.cammiescorner.arcanuscontinuum.mixin.client;

import net.minecraft.client.Minecraft;
import net.minecraft.client.Timer;
import net.minecraft.client.player.LocalPlayer;
import net.minecraft.world.phys.Vec3;
import org.spongepowered.asm.mixin.*;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;

@Mixin(Timer.class)
public abstract class TimerMixin {
@Shadow @Final @Mutable private float msPerTick;
@Unique float ticksPerSecond;

@Inject(method = "<init>", at = @At("TAIL"))
private void captureTickRate(float ticksPerSecond, long lastMs, CallbackInfo info) {
this.ticksPerSecond = ticksPerSecond;
}

@Inject(method = "advanceTime", at = @At("HEAD"))
private void slowDownTicks(long gameTime, CallbackInfoReturnable<Integer> info) {
LocalPlayer player = Minecraft.getInstance().player;

// TODO tie to being in a time dilation entity
if(player != null && player.position().distanceTo(new Vec3(0, 146, 0)) < 16)
msPerTick = 1000f / (ticksPerSecond / 2f);
else
msPerTick = 1000f / ticksPerSecond;
}
}
Original file line number Diff line number Diff line change
@@ -1,14 +1,21 @@
package dev.cammiescorner.arcanuscontinuum.mixin.common;

import net.minecraft.world.entity.Entity;
import net.minecraft.world.phys.Vec3;
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.ModifyVariable;

@Mixin(Entity.class)
public class EntityMixin {
public abstract class EntityMixin {
@Shadow public abstract Vec3 position();

@ModifyVariable(method = "playSound(Lnet/minecraft/sounds/SoundEvent;FF)V", at = @At("HEAD"), argsOnly = true, ordinal = 1)
private float pitchDown(float pitch) {
return pitch * 0.5f; // TODO tie to being in a time dilation entity
if(position().distanceTo(new Vec3(0, 146, 0)) < 16)
return pitch * 0.5f; // TODO tie to being in a time dilation entity

return pitch;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import net.minecraft.world.level.Level;
import net.minecraft.world.level.dimension.DimensionType;
import net.minecraft.world.level.storage.WritableLevelData;
import net.minecraft.world.phys.Vec3;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;

Expand All @@ -26,7 +27,7 @@ public abstract class ServerLevelMixin extends Level {
))
private boolean slowTime(ServerLevel instance, Consumer<?> consumer, Entity entity) {
// TODO tie to being in a time dilation entity
if(getGameTime() % 2 == 0) {
if(entity.position().distanceTo(new Vec3(0, 146, 0)) < 16 && getGameTime() % 2 == 0) {
entity.setOldPosAndRot();
entity.tickCount++;
return false;
Expand Down
102 changes: 51 additions & 51 deletions src/main/resources/arcanuscontinuum.mixins.json
Original file line number Diff line number Diff line change
@@ -1,54 +1,54 @@
{
"required": true,
"minVersion": "0.8",
"package": "dev.cammiescorner.arcanuscontinuum.mixin",
"plugin": "dev.cammiescorner.arcanuscontinuum.ArcanusMixinConfig",
"compatibilityLevel": "JAVA_${java_version}",
"mixins": [
"common.AbstractArrowMixin",
"common.ArmorStandMixin",
"common.BlockStateBaseMixin",
"common.EnderDragonPartMixin",
"common.EntityGetterMixin",
"common.EntityMixin",
"common.ExplosionMixin",
"common.FallingBlockMixin",
"common.FoodDataMixin",
"common.ItemEntityMixin",
"common.ItemStackMixin",
"common.LecternBlockEntityMixin",
"common.LevelMixin",
"common.LivingEntityMixin",
"common.MenuTypeMixin",
"common.MilkBucketItemMixin",
"common.MobMixin",
"common.PistonBaseBlockMixin",
"common.PlayerListMixin",
"common.PlayerMixin",
"common.ServerLevelMixin",
"common.ThrowableProjectileMixin",
"compat.pehkui.LivingEntityMixin",
"datagen.AdvancementBuilderMixin",
"datagen.FabricDynamicRegistryProviderEntriesMixin",
"datagen.RegistrySetBuilderMixin"
],
"client": [
"client.AbstractClientPlayerMixin",
"client.ClientLevelMixin",
"client.CraftingScreenMixin",
"client.GuiMixin",
"client.HumanoidModelMixin",
"client.ItemInHandLayerMixin",
"client.ItemInHandRendererMixin",
"client.ItemRendererMixin",
"client.LevelRendererMixin",
"client.LivingEntityRendererMixin",
"client.MinecraftMixin",
"client.MouseHandlerMixin",
"client.PlayerRendererMixin",
"client.RenderTargetMixin"
],
"injectors": {
"defaultRequire": 1
"required": true,
"minVersion": "0.8",
"package": "dev.cammiescorner.arcanuscontinuum.mixin",
"plugin": "dev.cammiescorner.arcanuscontinuum.ArcanusMixinConfig",
"compatibilityLevel": "JAVA_${java_version}",
"mixins": [
"common.AbstractArrowMixin",
"common.ArmorStandMixin",
"common.BlockStateBaseMixin",
"common.EnderDragonPartMixin",
"common.EntityGetterMixin",
"common.EntityMixin",
"common.ExplosionMixin",
"common.FallingBlockMixin",
"common.FoodDataMixin",
"common.ItemEntityMixin",
"common.ItemStackMixin",
"common.LecternBlockEntityMixin",
"common.LevelMixin",
"common.LivingEntityMixin",
"common.MenuTypeMixin",
"common.MilkBucketItemMixin",
"common.MobMixin",
"common.PistonBaseBlockMixin",
"common.PlayerListMixin",
"common.PlayerMixin",
"common.ServerLevelMixin",
"common.ThrowableProjectileMixin",
"compat.pehkui.LivingEntityMixin",
"datagen.AdvancementBuilderMixin",
"datagen.FabricDynamicRegistryProviderEntriesMixin",
"datagen.RegistrySetBuilderMixin"
],
"client": [
"client.ClientLevelMixin",
"client.CraftingScreenMixin",
"client.GuiMixin",
"client.HumanoidModelMixin",
"client.ItemInHandLayerMixin",
"client.ItemInHandRendererMixin",
"client.ItemRendererMixin",
"client.LevelRendererMixin",
"client.LivingEntityRendererMixin",
"client.MinecraftMixin",
"client.MouseHandlerMixin",
"client.PlayerRendererMixin",
"client.RenderTargetMixin",
"client.TimerMixin"
],
"injectors": {
"defaultRequire": 1
}
}

0 comments on commit e54dac4

Please sign in to comment.