diff --git a/Dockerfile b/Dockerfile index 4cc70a4f5..ff7b24d3e 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,11 +1,15 @@ # # Build Image # +ARG ALPINE_VERSION=3.15.0 -FROM alpine:latest as builder +FROM alpine:${ALPINE_VERSION} AS alpine -# Add the git repo -ADD . /git/mapcrafter +# +# Build environment +# + +FROM alpine as buildenv # Dependencies needed for building Mapcrafter # (not sure how many of these are actually needed) @@ -19,6 +23,15 @@ RUN apk add \ libjpeg-turbo-dev \ boost-dev +# +# Build Mapcrafter from source +# + +FROM buildenv as builder + +# Add the git repo +ADD . /git/mapcrafter + # Build mapcrafter from source RUN cd /git/mapcrafter && \ mkdir build && cd build && \ @@ -27,12 +40,11 @@ RUN cd /git/mapcrafter && \ mkdir /tmp/mapcrafter && \ make DESTDIR=/tmp/mapcrafter install - # # Final Image # -FROM alpine:latest +FROM alpine # Mapcrafter, built in previous stage COPY --from=builder /tmp/mapcrafter/ / @@ -50,4 +62,5 @@ RUN apk add \ # Entrypoint ADD entrypoint.sh / +ADD marker_entrypoint.sh / ENTRYPOINT ["/entrypoint.sh"] diff --git a/MCVERSION b/MCVERSION index 03ff89716..adc97d8e2 100644 --- a/MCVERSION +++ b/MCVERSION @@ -1 +1 @@ -1.16 \ No newline at end of file +1.18 diff --git a/mapcrafter-cron/Dockerfile b/mapcrafter-cron/Dockerfile new file mode 100644 index 000000000..ca76b025a --- /dev/null +++ b/mapcrafter-cron/Dockerfile @@ -0,0 +1,4 @@ +FROM mapcrafter-fix:118 + +ADD generate_map.sh / +ENTRYPOINT ["/usr/sbin/crond", "-f", "-l", "8"] diff --git a/mapcrafter-cron/crontab b/mapcrafter-cron/crontab new file mode 100644 index 000000000..8f14acbbc --- /dev/null +++ b/mapcrafter-cron/crontab @@ -0,0 +1,2 @@ +# min hour day month weekday command +*/15 * * * * /generate_map.sh diff --git a/mapcrafter-cron/docker-compose.yml b/mapcrafter-cron/docker-compose.yml new file mode 100644 index 000000000..f06410eaf --- /dev/null +++ b/mapcrafter-cron/docker-compose.yml @@ -0,0 +1,12 @@ +version: "3.9" +services: + mapcrafter-cron: + image: mapcrafter-cron:118 + container_name: mapcrafter_hc_fabric118 + environment: + - threads=16 + volumes: + - ./crontab:/etc/crontabs/root + - /var/www:/output + - /etc/mapcrafter/config:/config + - /home/minecraft/1.18.0:/world diff --git a/mapcrafter-cron/generate_map.sh b/mapcrafter-cron/generate_map.sh new file mode 100755 index 000000000..8f10d6398 --- /dev/null +++ b/mapcrafter-cron/generate_map.sh @@ -0,0 +1,5 @@ +#!/bin/sh + +/marker_entrypoint.sh -c /config/render.conf +/entrypoint.sh -b -j $threads -c /config/render.conf + diff --git a/marker_entrypoint.sh b/marker_entrypoint.sh new file mode 100755 index 000000000..82e7efa76 --- /dev/null +++ b/marker_entrypoint.sh @@ -0,0 +1,9 @@ +#!/bin/sh + +USER_ID=${LOCAL_USER_ID:-1000} +echo "Running as user $USER_ID" + +useradd --shell /bin/sh -u $USER_ID -o -d /home/user -m user +mkdir -p /home/user && chown -R user:user /home/user + +su -c "/usr/local/bin/mapcrafter_markers $*" user diff --git a/src/mapcraftercore/mc/worldentities.cpp b/src/mapcraftercore/mc/worldentities.cpp index 97e78fb01..622a43c75 100644 --- a/src/mapcraftercore/mc/worldentities.cpp +++ b/src/mapcraftercore/mc/worldentities.cpp @@ -235,12 +235,12 @@ void WorldEntitiesCache::update(util::IProgressHandler* progress) { const std::vector& data = region.getChunkData(*chunk_it); nbt.readNBT(reinterpret_cast(&data[0]), data.size(), mc::nbt::Compression::ZLIB); - - nbt::TagCompound& level = nbt.findTag("Level"); - if (!level.hasTag("TileEntities")) { + + if (!nbt.hasTag("block_entities")) { continue; } - nbt::TagList& entities = level.findTag("TileEntities"); + + nbt::TagList& entities = nbt.findTag("block_entities"); for (auto entity_it = entities.payload.begin(); entity_it != entities.payload.end(); ++entity_it) { nbt::TagCompound entity = (*entity_it)->cast();