From e32b047d47a226ecf325147d8fbe0942eb3a6b84 Mon Sep 17 00:00:00 2001 From: ScarletRedMan Date: Sat, 28 Sep 2024 01:27:16 +0700 Subject: [PATCH] feat: implemented resource packs --- api/build.gradle | 6 ++++ .../ru/dragonestia/msb3/api/Bootstrap.java | 1 + .../dragonestia/msb3/api/ServerBootstrap.java | 5 ++++ .../api/resource/ResourcePackManager.java | 27 ++++++++++++++++++ api/src/main/resources/logo.png | Bin 0 -> 2203 bytes 5 files changed, 39 insertions(+) create mode 100644 api/src/main/java/ru/dragonestia/msb3/api/resource/ResourcePackManager.java create mode 100644 api/src/main/resources/logo.png diff --git a/api/build.gradle b/api/build.gradle index d85e034..4d24179 100644 --- a/api/build.gradle +++ b/api/build.gradle @@ -5,4 +5,10 @@ dependencies { api 'org.apache.logging.log4j:log4j-slf4j2-impl:2.24.0' api 'org.apache.logging.log4j:log4j-api:2.24.0' api 'org.apache.logging.log4j:log4j-core:2.19.0' + + api 'net.kyori:adventure-api:4.17.0' + api 'net.kyori:adventure-text-minimessage:4.17.0' + api 'team.unnamed:creative-api:1.7.3' + api 'team.unnamed:creative-serializer-minecraft:1.7.3' + api 'team.unnamed:creative-server:1.7.3' } diff --git a/api/src/main/java/ru/dragonestia/msb3/api/Bootstrap.java b/api/src/main/java/ru/dragonestia/msb3/api/Bootstrap.java index d941071..fd7518d 100644 --- a/api/src/main/java/ru/dragonestia/msb3/api/Bootstrap.java +++ b/api/src/main/java/ru/dragonestia/msb3/api/Bootstrap.java @@ -12,6 +12,7 @@ public class Bootstrap { FlatWorldModule.init(GameMode.ADVENTURE); + boot.getResourcePackManager().compile(); boot.start("0.0.0.0", 25565); } } diff --git a/api/src/main/java/ru/dragonestia/msb3/api/ServerBootstrap.java b/api/src/main/java/ru/dragonestia/msb3/api/ServerBootstrap.java index f2442e2..3f408bc 100644 --- a/api/src/main/java/ru/dragonestia/msb3/api/ServerBootstrap.java +++ b/api/src/main/java/ru/dragonestia/msb3/api/ServerBootstrap.java @@ -1,7 +1,9 @@ package ru.dragonestia.msb3.api; +import lombok.Getter; import lombok.extern.log4j.Log4j2; import net.minestom.server.MinecraftServer; +import ru.dragonestia.msb3.api.resource.ResourcePackManager; import java.net.InetSocketAddress; @@ -22,6 +24,7 @@ public class ServerBootstrap { }; private final MinecraftServer server; + @Getter private final ResourcePackManager resourcePackManager; public ServerBootstrap() { for (var line: LOGO) log.info(line); @@ -30,6 +33,8 @@ public class ServerBootstrap { MinecraftServer.setBrandName("Dragonestia"); + resourcePackManager = new ResourcePackManager(); + init(); } diff --git a/api/src/main/java/ru/dragonestia/msb3/api/resource/ResourcePackManager.java b/api/src/main/java/ru/dragonestia/msb3/api/resource/ResourcePackManager.java new file mode 100644 index 0000000..009d2dc --- /dev/null +++ b/api/src/main/java/ru/dragonestia/msb3/api/resource/ResourcePackManager.java @@ -0,0 +1,27 @@ +package ru.dragonestia.msb3.api.resource; + +import lombok.Getter; +import lombok.extern.log4j.Log4j2; +import team.unnamed.creative.ResourcePack; +import team.unnamed.creative.base.Writable; +import team.unnamed.creative.serialize.minecraft.MinecraftResourcePackWriter; + +import java.io.File; + +@Log4j2 +public class ResourcePackManager { + + @Getter private final ResourcePack resourcePack; + + public ResourcePackManager() { + resourcePack = ResourcePack.resourcePack(); + resourcePack.packMeta(34, "Dragonestia MSB3 - Resource pack"); + resourcePack.icon(Writable.resource(getClass().getClassLoader(), "logo.png")); + resourcePack.unknownFile("credits.txt", Writable.stringUtf8("dragonestia.ru")); + } + + public void compile() { + MinecraftResourcePackWriter.minecraft().writeToZipFile(new File("resource-pack.zip"), resourcePack); + log.info("Compiled resource pack. File: ./resource-pack.zip"); + } +} diff --git a/api/src/main/resources/logo.png b/api/src/main/resources/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..3bb80b8f6f34fd0381bd843f641506f14cd263e3 GIT binary patch literal 2203 zcmV;M2xRw(P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D2rx-RK~#8N?OIE0 zR8<)Mr}LgZ=mSR32qI!Yi-OUJ(m;$c2Hm;RpyTk@9GjM`=6nr{8xTGj~dDN$&n9cEw|I3&>N5AYyv1QjxJjLCw+KpXutVUD(lFPO=`m zy%S9r;C8t77BofPwBKQQQsnrB?jC_(sNtK`M*ZrKzG<7|z;T(1021b6^z`Fm@UvIog81a^#Zwjjox zrr_x@u0Ml>IDxo7i=}S|1nY4WM1H{6Iv@`Bei_!?9Z#s^KMHx7MZD(`_l*54$PRUO zN*euWJ}-Y^Ddd=yUmV2QhfoZi$QR@|=2;VX4d3ML1%bEv`{W@cJqu-dl0pl!f!sN) z0K=)2jO4O14RKV0#2ltni{N+<-eVt@MhfaRd=Y?d{TeL44sPwV8WSFgTLGq#yWnAZV;2 z-NG{gxQQWIwvW?kxqvmDE=ux9334)@RV4W{hvN(7id=y}B*Mh#bazFPV#|p(u&MKUtaAnFYiy53&1iY>OaN_d?Ez09HYozfJa;^wlVd1n#~}jCU?(QwDF;yn z9)>8~|C1o;)yOKV*M+d&V6izIF{9a>t3X+WMJ~EN*_qgcl(7v z@(H|`6Fj;E0Y^|f%)%>l0@QOBEUn$Zl>ooOy~~E2rd)5UgCXgMdomX^7QG8&>%U}k z@|(traUz?O6g;6Z07Qz{A?{*uCBPJ1{2N#&ZLWbG-9L>Eo)hHeEjHNPN6&{4G9fxp0?33}}N>NLXLPO%K3I zAEi?AC3=dn6qv+zIW{)5dCd_35xDW$ z*WD$LLx6?JH=ec29+RK_VO?<%B7Bw2s5v+AMF2k1T8BE|jlMp))3Ls9K=yvKw^w#W zm%f|hl!5LaF=EmSSQ>vYJLAcB1$=ofz&p3^4h*Oo?Sav?N zASA7OD+-}go%V_(w%LsN^H}l@`S2YfUqavj1bAn9TE%K3%*9)FYG@R)9eTcs{aWlN zSo9u44mp^~nvn1ozCIjf-152J9<29W7}KR00(>6CF|E#>0*Ub)ca|(`xb5u;cF529 zf*eD8%AYqj&AOJ7qG7{w(c+Loj`}y43%L zAH4CwWs%!udOk(qWAUqK&Aylw5#UCGFG=vfgth>tZ&|bjFn!CSEr97;7Ht7c-?C^6 dVEPt?$Uj|~RmEI>cm@Cf002ovPDHLkV1iM)29f{( literal 0 HcmV?d00001