package net.fabricmc.fabric.mixin.event.lifecycle;

import java.util.HashSet;
import java.util.Set;
import net.fabricmc.fabric.impl.event.lifecycle.LoadedChunksCache;
import net.minecraft.class_1937;
import net.minecraft.class_2818;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.Unique;

@Mixin({class_1937.class})
public abstract class WorldMixin implements LoadedChunksCache {
   @Unique
   private final Set<class_2818> loadedChunks = new HashSet();

   @Shadow
   public abstract boolean method_8608();

   public Set<class_2818> fabric_getLoadedChunks() {
      return this.loadedChunks;
   }

   public void fabric_markLoaded(class_2818 chunk) {
      this.loadedChunks.add(chunk);
   }

   public void fabric_markUnloaded(class_2818 chunk) {
      this.loadedChunks.remove(chunk);
   }
}
