mirror of
https://github.com/FabricMC/fabric.git
synced 2025-02-16 19:59:56 -05:00
parent
23d88c8099
commit
d8d7804af0
3 changed files with 11 additions and 20 deletions
|
@ -35,4 +35,9 @@ public abstract class ServerWorldMixin {
|
|||
private void startWorldTick(BooleanSupplier shouldKeepTicking, CallbackInfo ci) {
|
||||
ServerTickEvents.START_WORLD_TICK.invoker().onStartTick((ServerWorld) (Object) this);
|
||||
}
|
||||
|
||||
@Inject(method = "tick", at = @At("TAIL"))
|
||||
private void endWorldTick(BooleanSupplier shouldKeepTicking, CallbackInfo ci) {
|
||||
ServerTickEvents.END_WORLD_TICK.invoker().onEndTick((ServerWorld) (Object) this);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -22,16 +22,11 @@ import java.util.Set;
|
|||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.Shadow;
|
||||
import org.spongepowered.asm.mixin.Unique;
|
||||
import org.spongepowered.asm.mixin.injection.At;
|
||||
import org.spongepowered.asm.mixin.injection.Inject;
|
||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||
|
||||
import net.minecraft.server.world.ServerWorld;
|
||||
import net.minecraft.util.profiler.Profiler;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraft.world.chunk.WorldChunk;
|
||||
|
||||
import net.fabricmc.fabric.api.event.lifecycle.v1.ServerTickEvents;
|
||||
import net.fabricmc.fabric.impl.event.lifecycle.LoadedChunksCache;
|
||||
|
||||
@Mixin(World.class)
|
||||
|
@ -45,13 +40,6 @@ public abstract class WorldMixin implements LoadedChunksCache {
|
|||
@Unique
|
||||
private final Set<WorldChunk> loadedChunks = new HashSet<>();
|
||||
|
||||
@Inject(at = @At("RETURN"), method = "tickBlockEntities")
|
||||
protected void tickWorldAfterBlockEntities(CallbackInfo ci) {
|
||||
if (!this.isClient()) {
|
||||
ServerTickEvents.END_WORLD_TICK.invoker().onEndTick((ServerWorld) (Object) this);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public Set<WorldChunk> fabric_getLoadedChunks() {
|
||||
return this.loadedChunks;
|
||||
|
|
|
@ -26,19 +26,17 @@ import net.minecraft.client.world.ClientWorld;
|
|||
import net.fabricmc.api.EnvType;
|
||||
import net.fabricmc.api.Environment;
|
||||
import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents;
|
||||
import net.fabricmc.fabric.mixin.event.lifecycle.WorldMixin;
|
||||
|
||||
@Environment(EnvType.CLIENT)
|
||||
@Mixin(ClientWorld.class)
|
||||
public abstract class ClientWorldMixin extends WorldMixin {
|
||||
// We override our injection on the clientworld so only the client world's tick invocations will run
|
||||
@Override
|
||||
protected void tickWorldAfterBlockEntities(CallbackInfo ci) {
|
||||
ClientTickEvents.END_WORLD_TICK.invoker().onEndTick((ClientWorld) (Object) this);
|
||||
}
|
||||
|
||||
public abstract class ClientWorldMixin {
|
||||
@Inject(method = "tickEntities", at = @At("HEAD"))
|
||||
private void startWorldTick(CallbackInfo ci) {
|
||||
ClientTickEvents.START_WORLD_TICK.invoker().onStartTick((ClientWorld) (Object) this);
|
||||
}
|
||||
|
||||
@Inject(method = "tickEntities", at = @At("TAIL"))
|
||||
protected void endWorldTick(CallbackInfo ci) {
|
||||
ClientTickEvents.END_WORLD_TICK.invoker().onEndTick((ClientWorld) (Object) this);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue