package org.bukkit;

import com.bergerkiller.generated.net.minecraft.resources.MinecraftKeyHandle;

class World {

    public void playSound(Location loc, MinecraftKeyHandle sound, float volume, float pitch) {
#if version >= 1.13
        // Since 1.13 namespace can also be specified (MinecraftKey in packet)
        instance.playSound(loc, sound.toString(), volume, pitch);
#elseif version >= 1.9
        instance.playSound(loc, sound.getName(), volume, pitch);
#else
        net.minecraft.world.level.World worldHandle = ((org.bukkit.craftbukkit.CraftWorld) instance).getHandle();
        worldHandle.makeSound(loc.getX(), loc.getY(), loc.getZ(), sound.getName(), volume, pitch);
#endif
    }

#if version >= 1.17
    public int getMinHeight();
#else
    public int getMinHeight() {
        return 0;
    }
#endif

#if version >= 1.16.5
    public void setClearWeatherDuration(int duration);
#else
    public void setClearWeatherDuration(int duration) {
        // API does not exist yet. Implement a fallback.
        net.minecraft.world.level.World worldHandle = ((org.bukkit.craftbukkit.CraftWorld) instance).getHandle();

  #if version >= 1.16
        net.minecraft.server.level.WorldServer worldServerHandle = (net.minecraft.server.level.WorldServer) worldHandle;
        worldServerHandle.worldDataServer.a(duration);
  #elseif version >= 1.13
        worldHandle.getWorldData().g(duration);
  #else
        worldHandle.getWorldData().i(duration);
  #endif
    }
#endif
}
