FROM docker.io/eclipse-temurin:25-jre-alpine
EXPOSE 25565

ENV MINECRAFT_VERSION=26.2

VOLUME /mnt
WORKDIR /data
RUN apk add --no-cache curl jq
RUN curl -s "https://fill.papermc.io/v3/projects/paper/versions/$MINECRAFT_VERSION/builds/latest" \
	| jq -r '.downloads."server:default".url' \
	| xargs curl -o server.jar

RUN mkdir -p /data/plugins
RUN wget -P /data/plugins \
    https://download.luckperms.net/1652/bukkit/loader/LuckPerms-Bukkit-5.5.65.jar \
    https://hangarcdn.papermc.io/plugins/ViaVersion/ViaVersion/versions/5.11.0/PAPER/ViaVersion-5.11.0.jar \
    https://hangarcdn.papermc.io/plugins/ViaVersion/ViaBackwards/versions/5.11.0/PAPER/ViaBackwards-5.11.0.jar
COPY ./plugins/LuckPerms /data/plugins

COPY --chmod=755 entrypoint.sh /entrypoint.sh
COPY ./server.properties /data
RUN mkdir -p /data/config
COPY ./paper-global.yml /data/config
COPY ./ops.json /data

RUN printf eula=true > eula.txt
RUN java -Xms3072M -Xmx3072M --add-modules=jdk.incubator.vector -XX:+UseG1GC \
  -XX:+ParallelRefProcEnabled -XX:MaxGCPauseMillis=200 \
  -XX:+UnlockExperimentalVMOptions -XX:+DisableExplicitGC -XX:+AlwaysPreTouch \
  -XX:G1HeapWastePercent=5 -XX:G1MixedGCCountTarget=4 \
  -XX:InitiatingHeapOccupancyPercent=15 -XX:G1MixedGCLiveThresholdPercent=90 \
  -XX:G1RSetUpdatingPauseTimePercent=5 -XX:SurvivorRatio=32 \
  -XX:+PerfDisableSharedMem -XX:MaxTenuringThreshold=1 \
  -Dusing.aikars.flags=https://mcflags.emc.gs \-Daikars.new.flags=true \
  -XX:G1NewSizePercent=30 -XX:G1MaxNewSizePercent=40 -XX:G1HeapRegionSize=8M \
  -XX:G1ReservePercent=20 -jar server.jar --nogui --initSettings
 
ENTRYPOINT ["/entrypoint.sh"]
CMD ["java", "-Xms3072M", "-Xmx3072M", "--add-modules=jdk.incubator.vector", \
  "-XX:+UseG1GC", "-XX:+ParallelRefProcEnabled", "-XX:MaxGCPauseMillis=200", \
  "-XX:+UnlockExperimentalVMOptions", "-XX:+DisableExplicitGC", \
  "-XX:+AlwaysPreTouch", "-XX:G1HeapWastePercent=5", "-XX:G1MixedGCCountTarget=4", \
  "-XX:InitiatingHeapOccupancyPercent=15", "-XX:G1MixedGCLiveThresholdPercent=90", \
  "-XX:G1RSetUpdatingPauseTimePercent=5", "-XX:SurvivorRatio=32", \
  "-XX:+PerfDisableSharedMem", "-XX:MaxTenuringThreshold=1", \
  "-Dusing.aikars.flags=https://mcflags.emc.gs", "-Daikars.new.flags=true", \
  "-XX:G1NewSizePercent=30", "-XX:G1MaxNewSizePercent=40", \
  "-XX:G1HeapRegionSize=8M", "-XX:G1ReservePercent=20", \
  "-jar", "server.jar", "--nogui"]
