Spaces:
Paused
Paused
File size: 5,920 Bytes
9f4cc8b 167887d 9f4cc8b 71d3637 9f4cc8b f7b0db6 9f4cc8b b42297e f7b0db6 9f4cc8b 9f7e929 b42297e 9f7e929 b42297e 9f7e929 b42297e 9f7e929 9f4cc8b b42297e 9f4cc8b 9f7e929 9f4cc8b 9f7e929 9f4cc8b 9f7e929 9f4cc8b 9f7e929 9f4cc8b 9f7e929 9f4cc8b 9f7e929 9f4cc8b 9f7e929 9f4cc8b 9f7e929 9f4cc8b 9f7e929 9f4cc8b 9f7e929 9f4cc8b 42c5fbf 9f4cc8b b42297e 9f4cc8b b42297e 9f4cc8b b42297e 9f4cc8b b42297e 953c409 b42297e |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 |
FROM eclipse-temurin:17-jdk-jammy
# Установка необходимых пакетов
RUN apt-get update && apt-get install -y \
git \
python3 \
python3-pip \
wget \
unzip \
&& rm -rf /var/lib/apt/lists/*
# Создание рабочей директории
WORKDIR /workspace
# Создание структуры мода
RUN mkdir -p src/main/java/com/freecam/mod src/main/resources
# Создание settings.gradle
RUN echo 'pluginManagement {\n\
repositories {\n\
maven {\n\
name = "Fabric"\n\
url = "https://maven.fabricmc.net/"\n\
}\n\
mavenCentral()\n\
gradlePluginPortal()\n\
}\n\
}\n\
\n\
rootProject.name = "freecam-minecraft-mod"' > settings.gradle
# Создание gradle.properties
RUN echo 'org.gradle.jvmargs=-Xmx3G\n\
org.gradle.daemon=false\n\
\n\
minecraft_version=1.20.1\n\
yarn_mappings=1.20.1+build.10\n\
loader_version=0.15.0\n\
\n\
fabric_version=0.92.0+1.20.1\n\
\n\
mod_version=1.0.0\n\
maven_group=com.freecam\n\
archives_base_name=freecam' > gradle.properties
# Создание build.gradle
RUN echo 'plugins {\n\
id "fabric-loom" version "1.7-SNAPSHOT"\n\
id "maven-publish"\n\
}\n\
\n\
version = project.mod_version\n\
group = project.maven_group\n\
\n\
base {\n\
archivesName = project.archives_base_name\n\
}\n\
\n\
repositories {\n\
mavenCentral()\n\
}\n\
\n\
dependencies {\n\
minecraft "com.mojang:minecraft:${project.minecraft_version}"\n\
mappings "net.fabricmc:yarn:${project.yarn_mappings}:v2"\n\
modImplementation "net.fabricmc:fabric-loader:${project.loader_version}"\n\
modImplementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}"\n\
}\n\
\n\
processResources {\n\
inputs.property "version", project.version\n\
\n\
filesMatching("fabric.mod.json") {\n\
expand "version": project.version\n\
}\n\
}\n\
\n\
tasks.withType(JavaCompile).configureEach {\n\
it.options.release = 17\n\
}\n\
\n\
java {\n\
withSourcesJar()\n\
\n\
sourceCompatibility = JavaVersion.VERSION_17\n\
targetCompatibility = JavaVersion.VERSION_17\n\
}\n\
\n\
jar {\n\
from("LICENSE") {\n\
rename { "${it}_${project.base.archivesName.get()}"}\n\
}\n\
}' > build.gradle
# Создание основного класса мода
RUN echo 'package com.freecam.mod;\n\
\n\
import net.fabricmc.api.ClientModInitializer;\n\
import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents;\n\
import net.fabricmc.fabric.api.client.keybinding.v1.KeyBindingHelper;\n\
import net.minecraft.client.MinecraftClient;\n\
import net.minecraft.client.option.KeyBinding;\n\
import net.minecraft.client.util.InputUtil;\n\
import org.lwjgl.glfw.GLFW;\n\
\n\
public class FreeCamMod implements ClientModInitializer {\n\
private static KeyBinding freecamKey;\n\
private static boolean freecamActive = false;\n\
private static double savedX, savedY, savedZ;\n\
private static float savedYaw, savedPitch;\n\
\n\
@Override\n\
public void onInitializeClient() {\n\
freecamKey = KeyBindingHelper.registerKeyBinding(new KeyBinding(\n\
"key.freecam.toggle",\n\
InputUtil.Type.KEYSYM,\n\
GLFW.GLFW_KEY_H,\n\
"category.freecam"\n\
));\n\
\n\
ClientTickEvents.END_CLIENT_TICK.register(client -> {\n\
if (freecamKey.wasPressed() && client.player != null) {\n\
if (InputUtil.isKeyPressed(MinecraftClient.getInstance().getWindow().getHandle(), GLFW.GLFW_KEY_LEFT_CONTROL)) {\n\
toggleFreecam(client);\n\
}\n\
}\n\
});\n\
}\n\
\n\
private void toggleFreecam(MinecraftClient client) {\n\
if (client.player == null) return;\n\
\n\
freecamActive = !freecamActive;\n\
\n\
if (freecamActive) {\n\
savedX = client.player.getX();\n\
savedY = client.player.getY();\n\
savedZ = client.player.getZ();\n\
savedYaw = client.player.getYaw();\n\
savedPitch = client.player.getPitch();\n\
client.player.noClip = true;\n\
} else {\n\
client.player.setPosition(savedX, savedY, savedZ);\n\
client.player.setYaw(savedYaw);\n\
client.player.setPitch(savedPitch);\n\
client.player.noClip = false;\n\
}\n\
}\n\
}' > src/main/java/com/freecam/mod/FreeCamMod.java
# Создание fabric.mod.json
RUN echo '{\n\
"schemaVersion": 1,\n\
"id": "freecam",\n\
"version": "${version}",\n\
"name": "FreeCam Mod",\n\
"description": "FreeCam with Ctrl+H",\n\
"authors": ["Author"],\n\
"contact": {},\n\
"license": "MIT",\n\
"environment": "client",\n\
"entrypoints": {\n\
"client": [\n\
"com.freecam.mod.FreeCamMod"\n\
]\n\
},\n\
"depends": {\n\
"fabricloader": ">=0.15.0",\n\
"minecraft": "~1.20.1",\n\
"java": ">=17",\n\
"fabric-api": "*"\n\
}\n\
}' > src/main/resources/fabric.mod.json
# Установка Gradle 8.8
RUN wget https://services.gradle.org/distributions/gradle-8.8-bin.zip && \
unzip gradle-8.8-bin.zip && \
rm gradle-8.8-bin.zip && \
mv gradle-8.8 /opt/gradle
ENV PATH="/opt/gradle/bin:${PATH}"
# Сборка мода
RUN gradle build --no-daemon
# Копирование JAR в доступное место
RUN mkdir -p /download && \
find build/libs -name "*.jar" ! -name "*-sources.jar" -exec cp {} /download/freecam-mod.jar \;
# Создание простого Python HTTP сервера
RUN echo 'from http.server import HTTPServer, SimpleHTTPRequestHandler\n\
import os\n\
os.chdir("/download")\n\
server = HTTPServer(("0.0.0.0", 7860), SimpleHTTPRequestHandler)\n\
print("Server running on port 7860")\n\
server.serve_forever()' > /server.py
EXPOSE 7860
CMD ["python3", "/server.py"] |