From f08489a1feac2510ed947573a65c43522b7b2d2a Mon Sep 17 00:00:00 2001 From: TGdoesCode Date: Fri, 23 Jan 2026 13:29:03 +0100 Subject: [PATCH] villager --- src/main/java/dev/tggamesyt/szar/Szar.java | 62 ++++++++++++++++++ .../szar/models/block/chemical_workbench.json | 28 ++++++++ .../assets/szar/textures/block/chemical_1.png | Bin 0 -> 3289 bytes .../assets/szar/textures/block/chemical_2.png | Bin 0 -> 2737 bytes .../assets/szar/textures/block/chemical_3.png | Bin 0 -> 3146 bytes .../assets/szar/textures/block/chemical_4.png | Bin 0 -> 3631 bytes .../szar/textures/block/chemical_bottom.png | Bin 0 -> 1515 bytes .../szar/textures/block/chemical_top.png | Bin 0 -> 1110 bytes .../villager/profession/drog_dealer.png | Bin 0 -> 1053 bytes 9 files changed, 90 insertions(+) create mode 100644 src/main/resources/assets/szar/models/block/chemical_workbench.json create mode 100644 src/main/resources/assets/szar/textures/block/chemical_1.png create mode 100644 src/main/resources/assets/szar/textures/block/chemical_2.png create mode 100644 src/main/resources/assets/szar/textures/block/chemical_3.png create mode 100644 src/main/resources/assets/szar/textures/block/chemical_4.png create mode 100644 src/main/resources/assets/szar/textures/block/chemical_bottom.png create mode 100644 src/main/resources/assets/szar/textures/block/chemical_top.png create mode 100644 src/main/resources/assets/szar/textures/entity/villager/profession/drog_dealer.png diff --git a/src/main/java/dev/tggamesyt/szar/Szar.java b/src/main/java/dev/tggamesyt/szar/Szar.java index e0c0a46..b29606c 100644 --- a/src/main/java/dev/tggamesyt/szar/Szar.java +++ b/src/main/java/dev/tggamesyt/szar/Szar.java @@ -1,5 +1,6 @@ package dev.tggamesyt.szar; +import com.google.common.collect.ImmutableSet; import net.fabricmc.api.ModInitializer; import net.fabricmc.fabric.api.event.lifecycle.v1.ServerTickEvents; import net.fabricmc.fabric.api.item.v1.FabricItemSettings; @@ -8,6 +9,7 @@ import net.fabricmc.fabric.api.message.v1.ServerMessageDecoratorEvent; import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.fabricmc.fabric.api.object.builder.v1.entity.FabricDefaultAttributeRegistry; import net.fabricmc.fabric.api.object.builder.v1.entity.FabricEntityTypeBuilder; +import net.fabricmc.fabric.api.object.builder.v1.world.poi.PointOfInterestHelper; import net.minecraft.advancement.Advancement; import net.minecraft.block.AbstractBlock; import net.minecraft.block.Block; @@ -20,10 +22,14 @@ import net.minecraft.entity.effect.StatusEffect; import net.minecraft.item.*; import net.minecraft.registry.Registries; import net.minecraft.registry.Registry; +import net.minecraft.registry.RegistryKey; import net.minecraft.server.network.ServerPlayerEntity; +import net.minecraft.sound.SoundEvents; import net.minecraft.text.Text; import net.minecraft.util.Formatting; import net.minecraft.util.Identifier; +import net.minecraft.village.VillagerProfession; +import net.minecraft.world.poi.PointOfInterestType; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -46,6 +52,8 @@ public class Szar implements ModInitializer { new FaszBlock(); public static final Identifier TOTEMPACKET = new Identifier(MOD_ID, "nwordpacket"); + public static PointOfInterestType CHEMICAL_WORKBENCH_POI; + public static VillagerProfession DROG_DEALER; public static final ItemGroup SZAR_GROUP = Registry.register( Registries.ITEM_GROUP, new Identifier(MOD_ID, "szar_group"), @@ -96,6 +104,58 @@ public class Szar implements ModInitializer { new Identifier(MOD_ID, "fasz"), FASZ_BLOCK ); + Registry.register( + Registries.BLOCK, + new Identifier(MOD_ID, "chemical_workbench"), + CHEMICAL_WORKBENCH + ); + + Registry.register( + Registries.ITEM, + new Identifier(MOD_ID, "chemical_workbench"), + new BlockItem(CHEMICAL_WORKBENCH, new FabricItemSettings()) + ); + CHEMICAL_WORKBENCH_POI = Registry.register( + Registries.POINT_OF_INTEREST_TYPE, + new Identifier(MOD_ID, "chemical_workbench_poi"), + new PointOfInterestType( + ImmutableSet.copyOf( + CHEMICAL_WORKBENCH + .getStateManager() + .getStates() + ), + 1, // max tickets + 1 // search distance + ) + ); + DROG_DEALER = Registry.register( + Registries.VILLAGER_PROFESSION, + new Identifier(MOD_ID, "drog_dealer"), + new VillagerProfession( + "drog_dealer", + entry -> entry.matchesKey( + RegistryKey.of( + Registries.POINT_OF_INTEREST_TYPE.getKey(), + new Identifier(MOD_ID, "chemical_workbench_poi") + ) + ), + entry -> entry.matchesKey( + RegistryKey.of( + Registries.POINT_OF_INTEREST_TYPE.getKey(), + new Identifier(MOD_ID, "chemical_workbench_poi") + ) + ), + ImmutableSet.of(), + ImmutableSet.of(), + SoundEvents.ENTITY_VILLAGER_WORK_CLERIC + ) + ); + PointOfInterestHelper.register( + new Identifier(MOD_ID, "chemical_workbench_poi"), + 1, + 1, + CHEMICAL_WORKBENCH + ); ServerMessageDecoratorEvent.EVENT.register((player, message) -> CompletableFuture.completedFuture( filterMessage(player, message) @@ -111,6 +171,8 @@ public class Szar implements ModInitializer { ); ServerTickEvents.END_SERVER_TICK.register(PlayerValueTimer::onServerTick); } + public static final Block CHEMICAL_WORKBENCH = + new Block(AbstractBlock.Settings.copy(Blocks.OAK_PLANKS)); public static final Map PLAYER_JOINT_LEVEL = new HashMap<>(); public static final Map PLAYER_ADDICTION_LEVEL = new HashMap<>(); public static final StatusEffect DROG_EFFECT = Registry.register( diff --git a/src/main/resources/assets/szar/models/block/chemical_workbench.json b/src/main/resources/assets/szar/models/block/chemical_workbench.json new file mode 100644 index 0000000..039a2a0 --- /dev/null +++ b/src/main/resources/assets/szar/models/block/chemical_workbench.json @@ -0,0 +1,28 @@ +{ + "format_version": "1.9.0", + "credit": "Made with Blockbench", + "texture_size": [64, 64], + "textures": { + "0": "szar:block/chemical_1", + "1": "szar:block/chemical_2", + "2": "szar:block/chemical_3", + "3": "szar:block/chemical_4", + "4": "szar:block/chemical_bottom", + "5": "szar:block/chemical_top", + "particle": "szar:block/chemical_1" + }, + "elements": [ + { + "from": [0, 0, 0], + "to": [16, 16, 16], + "faces": { + "north": {"uv": [0, 0, 16, 16], "texture": "#3"}, + "east": {"uv": [0, 0, 16, 16], "texture": "#2"}, + "south": {"uv": [0, 0, 16, 16], "texture": "#1"}, + "west": {"uv": [0, 0, 16, 16], "texture": "#0"}, + "up": {"uv": [15.73333, 16, 0, 0], "texture": "#5"}, + "down": {"uv": [16, 0, 0, 16], "texture": "#4"} + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/szar/textures/block/chemical_1.png b/src/main/resources/assets/szar/textures/block/chemical_1.png new file mode 100644 index 0000000000000000000000000000000000000000..71fe4e0b4e05320f100bee3859e0b5c863835432 GIT binary patch literal 3289 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/szar/textures/block/chemical_2.png b/src/main/resources/assets/szar/textures/block/chemical_2.png new file mode 100644 index 0000000000000000000000000000000000000000..909aec7929772cef995a77dea7706f3bd8481fb9 GIT binary patch literal 2737 zcmZ{mc{J4BAIHBWTRpN>lPw01N-_)4sO${Y5QWG(DjL#g24hXg7Llcqh{`e;BARTa zl*d@cw3vA;6PoPPFc0$B#&7(d&ad@I%d!AK;;D^=>AA4M?*)B#m8^IFF|vFfzs%tbHuH3o;v_n| z)ZXPHrBHX?sa@|C!j93>&EkHcLJUlvh+# z90F)+(Sv~zPDnFru!M5522SH1J(K<_O5?GO_q@GN%(Fzt>dK1X6cqxV+B(~PlIw0V zWvx-X29s&3#%$Vq%}8gCj@lj1v~DU9%Pq5#MabGrAvKECi^=+^%p?~~6_h$VwFAJU zHFOx<{`<$NvJE*{+UXnj8g*3_3_^xQvUjBUfscA=6zsYMWw`L%+4D*TEmLu|cm1d! ztDhO++P+C7Clw6rxn;)OBN3kFwNzh1+!oPY_|46{026AT+F8_@0)7&Q(J=$DiD+dD zU;CXYrehZ`AS;?5Nk~j(40+j~PfPBIz4Y;Pqoq^%fx7;&u7F*K5A-`fT(I;Fj6$Q) z?I{H(y(sx)_4!D>4-|ie9|=;SDAyP^O9qM(3}&crzUxGxqx&7pY%mv<#p84y9u9l z)Rfz1iQ56Z`y7X3=n6-olzIK7dU%Upl_Id<@gpXbDv7rx+Prax%V)S?wxwSj)p;rH z|DMyR%%G{2<87w27P(Od-Ff@mnlCS?{J9pWWc-TTsS9?+kjwZa>DX^seId~As8l)? zz4{FrrB}~AxEObnK2)+1nfSS$uKLi3qHT&^y)1#9bK;FW5#wG9M)QI-}}~(ph)Bx2jo?qYo(|S6y1;h4m@Dg9k<#4n-Mx z^3RB8H3;9Jup{fi>tZ=n|PuwDX1O1Lwv;!N2q-@K~}s={V)Htq7thmmUr zrCAYsukH6H2I;tTpoVKOBM-)HCvEZjtW_)0NN38ztjM1WdST^w6TkN_TN|5OjS8WI zJ~m(XxG7bukQY2dIgU5 zH#ZzGRj)s2$oLnms|%=q8IB@OWMH@5y{;*|lrw7dqIQZYUk+pUk!Jr?IWeHue1 zUQlk?2V@5?e|2_UIQ}9f{|}{BCGL-}3efwL$-XLUh<)Y4qvWW1H++cwE`dm-E zn8i11J?nq>SLv709-hEYD5jSk^f7+T3(Z7vwX}B!Ja%evm@?&UT1h7RtWV4srS!8? zA29|$T`7#2&N-Dn68N6au3vH6jFCol7NbGDA z|IHeT)uhnMpV-ys`SPOk6H*gnc%ys2(dvrr!4Z6B>t*@(i(z|LzxRhe?0OLEfzhL9n_2Aw>Os#y+y#Yk|E>7U9CGlTL0XE z0m@Uc_4&;OUk?O2CT57lS*5(8*HpRavj!@#rn@3*DsW^2=#(ve$w_IHog<4tU}p{MJc0Eg#!)chkezq&UA&T zr8w38I7t#Ie}6*$u&v)sfs2P>IVFd|0v3PLeP$V-M_>$BLV6;3AD7pCr%U}Kmn7Ou zN5+ja6C`>g`EM2HLkvJt&d$z>{Bjj$zu5z!S7Fm@9%@~6hr8Dbv$Q;~Mb{S5X_gW? z;Esq9HE^%X-Pv+%1z$&meh2gEv$BCFamTNFZ9-EIk=-+1NAB?tcDJ{7bacNGoGK&C$^D%|ZE0$+494UIx>OHt5)#al^7-n0<|V0Hl^wO%2?&Q!+Nbkz zcbTupqo-e~%Y+50@(a=q`Z1xTu2=T zsVN=@cB9>$fkHsDEl$|os@5sE&iFnk$j#}&ls(O6^1GNCaeWUVn6dzP}VW2uDfgA^Ie$k?-_v1^efTZ=7G zD4|hV5*{T+LsE<_ywiK0x6b>=bMCqKbI!fzbME(^@8|ouU&<*9BR*acUH}02jPW>Y zHWGhL&>r^sfTtvZ4Uz=BwK)Jp$pSzu2>>?PTd@oP2txtD7k2>A%maXf7jHIOX|oS_ zJWY*o!0xY6+;%$)0QTz`<4)QV-!HnDr-&K-b$RLZ>4?DvS+$KiNe%&z&*^#;ne=CM z8X8bM83fsz9z4@ck&ZAG(}>du1`f+(5qSB1&?F#HUrYhNk1Ri?k z)KvC(2>7;CMm>!7z150d6=$8YvDx~ei|EY#lTj|y?f@peFCyuciY;V_qx zV~D6j^roD}UG97at`{eVmDPlz=@d!*EfCPq%`g&f;nX9IC^MT`H)^87#@a-aT|Tsc z=yn+tiDY5ABlBBX@6gj%R-Xq)1??jHM05NS%|a1grGip|G|_WpZm#Hc+0r9!axO@zKt0Sc`{m}*Re;+&x#E>tb^G0Nv-W}4nwti|<9dPDFKuDA zFvvQ_$FJ`b40@rux~60iDK$DiF}Qpp*qq$0S|A7_1lRvCjWdbZyF#{-yhbwz190#F zSf0b%%qn5+6g-2zhwKvXxfeW<=|ji^{mFqQRca4n(=}<>W-2AfKbs)0&zvp(cGVu7 zVvouxQSnkO;Q}wj>IlZWi|VYl9`J!!XQo5=wv_kA4{Ukjq~Xj5exF7cFUXemSX`ps zS(S!x`R-zLqQ7Q?OJi*hX4FwT?t&(?MpU7RRblQCx&b_roqN-+zZR-u1 z(eJr31FcN{5?I^5zLS8d{N_XY6vT0jXAkPz?3oF@_OT|+OU~7L10s~U3~jj#kq=d z&+^n{YqvVyEq&h*QpRl2+kGCbyH;`QTx9XUjod5C@u-R5%KmWwnl#mp=Vw(}Z_aZ` zA~H=HkJGM?tkY`uU#|6p`mOvu^>eii|15**@ju}P5#aqGLTu@s*5XX0A^A09@gn%3 zOu1T=XkK6NLdC7)exYrPW^aQ3f;OsA9~7Pr#hRSvy&GP$T6qWGduleGV6~hP{nJyb z=Mp1vxkU6#xJiEpE_6vhO)x{fpfbCxl-AV~OHSfH#Oe&huTO4vN9U^l41cDjx3PRb z=+n#D?(60h%ig)^ZhxBEogJeSn+}t#Ep@i* zZJ!Se;5-*UK5uF|c686zs*P34_PM)y7`w815xcr?6KJADiiO?{Lar#R&Sf7$Eoz+c z-tX-je@o+i(Ad87&e_#L<+ja};Sa)kvAE{RfE864$I2lqt(LerlD&mls7mke+9h#A z+FHGrqmV}yH841kILsY#avBXqptbrIo=>LJmVerZ^TZ{bpw|Z~a@AoLT0d}k`o>o8 z%8Wq~#E;8nnY~%_8bmRk)RYbqL+wA@+-4Aeq5^K-G4i1EnwR4DGo^U4x6`yIlQXq*CI&*g1PuYZ` ztS>Hg19Y^?+;w*=lCb8M9v}P3GvT)*?xv`&tJCa`OG5h8 z&eyfJ)&sa3RZp}Y|5TpVy&~3df*J2d9MU3HS1wLg$q_C0CP$u`i^t*>$my&i-IF+L zWZK!gu&@+`>)*2-@rNs5I2qPa9t7|7)bpd|<;QQa=wfq+KE`@kC|Z&e7Ub%Gn}LVD z+Fc}a5S|Gc$7=X?$;o2nsyJKVLwDfb$5<&Pwh59RX641sLf&qAs`d z()b1NWzD$&o$r*EuQ8)PTEttf?5wJ;{kWRJAUvEBZyv&^BnJob^Ff=2#jdUL^~!Q5 zs=G$MVBTZSOUtzft+W%G3m_0?KCBPd94%UIycXnc@Y>h zM;CM}3b1s9;Sdsr@o`&vsIB5$hGkApmX&G5JHr_+PTJVD(T{I)W)6# z#Z1OIj^>SbNBk^- zcq(VY03TFLX)pYxL$;GEcD6BN{X-YPS|3F~9=VNhOf0>L&l*OP6mGTNXQdcub6>F( zI?ssd$(yj)8hB-*@J_eGXO{mZH3vX6?@ss7LJA8!QudAQ#eG!T=$FkDXht<`G zYn`8thVe`A9Gn@1C~CBtz~Q3OSy-XzVK=VmBwB zj2#%bByF7fetjp4K-~JE*~$teY^S9x7PKdm)l-$hQ6=ZmlBH^neI(;Ankp#GW9mmxC`}aV^RzVR{|NqpUgvxw|DBNC nTF}TQ$p5|}^qjwUNT`SZ#ee5?-EH<`a{yxl3tSD>{px=J;GVdp literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/szar/textures/block/chemical_4.png b/src/main/resources/assets/szar/textures/block/chemical_4.png new file mode 100644 index 0000000000000000000000000000000000000000..35632e607c1ac1975958fd5581fe17f06e54600d GIT binary patch literal 3631 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/szar/textures/block/chemical_top.png b/src/main/resources/assets/szar/textures/block/chemical_top.png new file mode 100644 index 0000000000000000000000000000000000000000..00a2ed5b0345b73c3383d568ceb3ecaaaaf5e4ae GIT binary patch literal 1110 zcmeAS@N?(olHy`uVBq!ia0vp^6(Gz3Bp77)Gx>m&Lb6AYF9SoB8UsT^3j@P1pisjL z28L1t28LG&3=CE?7#PG0=Ijcz0ZK3>dAqwX{BQ3+vmeM~FY)wsWq-ve&ckK3FGi-1 zfq~h|)5S3)SRvlS;2nO^UbMa$5bY-tQ1d5 z`l9nWM{(i3gnFc>BZ0dM3jXB}0Y#vBp=ED^_(b z*UglkXe~YOQ^;PS?gRPqp8~tn&;GKU|G-(?$n~#~-1!f>ZzuiUcU=3UP(f(zt%Qqt z%Nq1_YqG04qHFJbUf5U?BJ=%$f?4emUjCf(M=Y9WXvx{gE?G8xhC174Gfgft$)_uK zRXkd=qg_*N%c_+>P2Ik{i(KHV&2^RK?26duPYSO%q}ycs3Eh{{{&+S(dhY^Z_OtVH zmF?RV=ki|N!{+w&zoQ ztJiFYaeEBkGFUv;Or=AvD9E}i@o5-Yb+)AdBY z&N|OOzy##{+d9DIsO|oM1A50&W*rya7xbaBi0_nec;%6EMON8oG#8yRy(*Iwr|7(R zW~m0_>W){dSEdOT3zpt_vCWg=ZOHlH;Im3)*~V!Htz54kwbk>#`cz=HYUU~N;<^o@ ztk)OaH1vr$;(KPdEBoHmtGu)Jiah@K*f&y6{{b)S{?b@I_n4FVaR(fbY>TtDxH)jG{m%O=Fyz|mYO|0Nfy<9a z-_879wKAfrMuEZM*Mqdp5A*vct@&87^Hm%-g6T1G0`C;){`5Y5={S`?9W-Qeb z*NBpo#FA921GbWndt@GWa2ihTQy=%(P0} p8j`-ejsKd z)65)?uemd|oivZuli1SH%-G|}oa1}1ubr8j3ni3LLJ1|5*)2i{Cw@G;BV6d$e^k7F zwJm_%&+o+k_dN-mQ~jv?`jUTtds%EOFB*ZiQAKc-wbi?lBuM}L^E(IBp$+#;%mP5p zMxHRL04vR!u%WlPF8Wyj?r}Y%A4(wr4OY?YPeg#zbO928MjqDyU6TM4b%8-J$r!-V zuYO_z4BI}c0A5UklSU9A2oMCAZ2?Yw0D=HPfFMAr@oo2m0BDt%TW4H|#LNf)9RAv$ zZ25XC0}I7yc{LkVD-SIM+|7GOPT ziWh5bd5$Blfw8ziCcs&7l7u-pd6NJpxLoGgE`YkaM*^4#jzs`O`^1o2uk@J(Rvi6? z$<=LS$gJsnPyvb-CFlF&5A) zaCq=j?#h1s@=+c^p6|+fQ;2k;OgC1M69g$3f;1r8RXrDhJ~|}V!8u5G)mC&@ZCmp{ zCcG&vMmSa@&qbj6RzaA2pGs~8#uKG`H_izFbv%XkrgS$RNizkWKHidPF1@TCZFY=R zCWv<6NpDk|I7XVL%uahr$BfmhOS;}a0rX4PQZie4vrdnl^yNXI({4!6bVjiP0#IE~ zJq!0^*5I)NLL@%U0!ViDlm&nQjciPQuKk^$+#;%K0nk@k085-e7FGb!5|&ANI|~pg zGX1)81V2* literal 0 HcmV?d00001