FROM ubuntu:latest AS builder

# Install Paper dependencies
RUN apt-get update && apt-get install -y \
    curl \
    wget \
    jq \
    bash \
    gnupg \
    ca-certificates \
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/*

WORKDIR /minecraft

# Fetch the latest PaperMC version and build dynamically
RUN PAPER_VERSION=$(curl -s https://papermc.io/api/v2/projects/paper | jq -r '.versions[-1]') \
    && PAPER_BUILD=$(curl -s https://papermc.io/api/v2/projects/paper/versions/$PAPER_VERSION | jq -r '.builds[-1]') \
    && wget -O paper.jar https://papermc.io/api/v2/projects/paper/versions/$PAPER_VERSION/builds/$PAPER_BUILD/downloads/paper-$PAPER_VERSION-$PAPER_BUILD.jar

# Accept EULA
RUN echo "eula=true" > eula.txt

FROM alpine:latest AS runner

COPY --from=builder /minecraft /minecraft

RUN apk add --no-cache openjdk21-jre eudev libstdc++

RUN addgroup -S mcgroup && adduser -S mcuser -G mcgroup -s /bin/sh \ 
    && chown -R mcuser:mcgroup /minecraft \
    && chmod g+s /minecraft

WORKDIR /minecraft

EXPOSE 25565
EXPOSE 8123

CMD /bin/sh -c ' \
    echo Fixing ownership of minecraft directory... && \
    chown -R mcuser:mcgroup /minecraft && \
    echo Starting minecraft server as mcuser && \
    su - mcuser -c "cd /minecraft/ && java -Xmx2G -Xms512M -jar /minecraft/paper.jar nogui"'