From 4683874075048275b95d7e69a74d0f87b34e0222 Mon Sep 17 00:00:00 2001 From: Capozi Date: Fri, 16 May 2025 20:21:45 -0400 Subject: [PATCH 01/28] Not usable but fabric is bitchy --- build.gradle | 31 +++++++++---------- gradle.properties | 10 +++--- qodana.yaml | 31 +++++++++++++++++++ .../common/entity/PlayerRemainsEntity.java | 1 - 4 files changed, 51 insertions(+), 22 deletions(-) create mode 100644 qodana.yaml diff --git a/build.gradle b/build.gradle index 9cba286..cdfa466 100644 --- a/build.gradle +++ b/build.gradle @@ -11,21 +11,19 @@ base { } repositories { - repositories { - maven { - name = "TerraformersMC" - url = "https://maven.terraformersmc.com/" - } - maven { - name = "Ladysnake Libs" - url = 'https://maven.ladysnake.org/releases' - } - maven { - url "https://cursemaven.com" - } - maven { - url = "https://api.modrinth.com/maven" - } + maven { + name = "TerraformersMC" + url = "https://maven.terraformersmc.com/" + } + maven { + name = "Ladysnake Libs" + url = 'https://maven.ladysnake.org/releases' + } + maven { + url "https://cursemaven.com" + } + maven { + url = "https://api.modrinth.com/maven" } } @@ -43,10 +41,11 @@ dependencies { // Fabric API. This is technically optional, but you probably want it anyway. modImplementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}" - include modImplementation("dev.onyxstudios.cardinal-components-api:cardinal-components-base:${project.cca_version}") + include modImplementation("dev.onyxstudios.cardinal-components-api:cardinal-components-base:${project.cca_version}") include modImplementation("dev.onyxstudios.cardinal-components-api:cardinal-components-entity:${project.cca_version}") include modImplementation("dev.onyxstudios.cardinal-components-api:cardinal-components-world:${project.cca_version}") include modImplementation("dev.emi:trinkets:${project.trinkets_version}") + } processResources { diff --git a/gradle.properties b/gradle.properties index 41c411e..61893bd 100644 --- a/gradle.properties +++ b/gradle.properties @@ -4,18 +4,18 @@ org.gradle.parallel=true # Fabric Properties # check these on https://fabricmc.net/develop -minecraft_version=1.19.2 -yarn_mappings=1.19.2+build.28 +minecraft_version=1.20.1 +yarn_mappings=1.20.1+build.10 loader_version=0.16.14 loom_version=1.10-SNAPSHOT # Mod Properties -mod_version=0.1.3-1.19.2 +mod_version=1.0.0 maven_group=net.capozi.demise -archives_base_name=demise +archives_base_name=demsie # Dependencies -fabric_version=0.77.0+1.19.2 +fabric_version=0.92.5+1.20.1 trinkets_version=3.4.1 # Cardinal Components diff --git a/qodana.yaml b/qodana.yaml new file mode 100644 index 0000000..654508c --- /dev/null +++ b/qodana.yaml @@ -0,0 +1,31 @@ +#-------------------------------------------------------------------------------# +# Qodana analysis is configured by qodana.yaml file # +# https://www.jetbrains.com/help/qodana/qodana-yaml.html # +#-------------------------------------------------------------------------------# +version: "1.0" + +#Specify inspection profile for code analysis +profile: + name: qodana.starter + +#Enable inspections +#include: +# - name: + +#Disable inspections +#exclude: +# - name: +# paths: +# - + +projectJDK: "17" #(Applied in CI/CD pipeline) + +#Execute shell command before Qodana execution (Applied in CI/CD pipeline) +#bootstrap: sh ./prepare-qodana.sh + +#Install IDE plugins before Qodana execution (Applied in CI/CD pipeline) +#plugins: +# - id: #(plugin id can be found at https://plugins.jetbrains.com) + +#Specify Qodana linter for analysis (Applied in CI/CD pipeline) +linter: jetbrains/qodana-jvm-community:2025.1 diff --git a/src/main/java/net/capozi/demise/common/entity/PlayerRemainsEntity.java b/src/main/java/net/capozi/demise/common/entity/PlayerRemainsEntity.java index 9e05562..b11d45c 100644 --- a/src/main/java/net/capozi/demise/common/entity/PlayerRemainsEntity.java +++ b/src/main/java/net/capozi/demise/common/entity/PlayerRemainsEntity.java @@ -18,7 +18,6 @@ import net.minecraft.util.Identifier; import net.minecraft.util.collection.DefaultedList; import net.minecraft.world.World; -import net.minecraft.world.event.GameEvent; import org.jetbrains.annotations.Nullable; import java.util.Collections; From eb5ad18014106af4abe88d587a2df44192ec90f1 Mon Sep 17 00:00:00 2001 From: Capozi Date: Sat, 17 May 2025 19:18:15 -0400 Subject: [PATCH 02/28] demise alpha 1.20.1 port --- gradle.properties | 4 +- .../entity/PlayerRemainsEntityRenderer.java | 2 - .../demise/mixin/LivingEntityMixin.java | 70 +++++++++++-------- .../demise/mixin/PlayerEntityMixin.java | 10 +-- src/main/resources/fabric.mod.json | 2 +- 5 files changed, 45 insertions(+), 43 deletions(-) diff --git a/gradle.properties b/gradle.properties index 61893bd..8f94414 100644 --- a/gradle.properties +++ b/gradle.properties @@ -6,7 +6,7 @@ org.gradle.parallel=true # check these on https://fabricmc.net/develop minecraft_version=1.20.1 yarn_mappings=1.20.1+build.10 -loader_version=0.16.14 +loader_version=0.16.10 loom_version=1.10-SNAPSHOT # Mod Properties @@ -16,7 +16,7 @@ archives_base_name=demsie # Dependencies fabric_version=0.92.5+1.20.1 -trinkets_version=3.4.1 +trinkets_version=3.7.2 # Cardinal Components cca_version = 5.0.2 \ No newline at end of file diff --git a/src/main/java/net/capozi/demise/common/entity/PlayerRemainsEntityRenderer.java b/src/main/java/net/capozi/demise/common/entity/PlayerRemainsEntityRenderer.java index d24117e..38cd8d4 100644 --- a/src/main/java/net/capozi/demise/common/entity/PlayerRemainsEntityRenderer.java +++ b/src/main/java/net/capozi/demise/common/entity/PlayerRemainsEntityRenderer.java @@ -28,8 +28,6 @@ public void render(PlayerRemainsEntity entity, float yaw, float tickDelta, Matri ItemRenderer itemRenderer = MinecraftClient.getInstance().getItemRenderer(); ItemStack stack = new ItemStack(Items.SKELETON_SKULL); float angle = (entity.getWorld().getTime() + tickDelta) * 2.5f; - BakedModel model = itemRenderer.getModel(stack, entity.getWorld(), null, 0); - Transformation groundTransform = model.getTransformation().ground; matrixStack.push(); matrixStack.scale(1.5f, 1.5f, 1.5f); diff --git a/src/main/java/net/capozi/demise/mixin/LivingEntityMixin.java b/src/main/java/net/capozi/demise/mixin/LivingEntityMixin.java index bec9e4e..c3558d1 100644 --- a/src/main/java/net/capozi/demise/mixin/LivingEntityMixin.java +++ b/src/main/java/net/capozi/demise/mixin/LivingEntityMixin.java @@ -2,14 +2,16 @@ import net.capozi.demise.TrinketsHelper; import net.capozi.demise.common.GameruleRegistry; +import net.capozi.demise.common.TwoHanded; import net.capozi.demise.common.entity.EntityTypeRegistry; import net.capozi.demise.common.entity.PlayerRemainsEntity; import net.fabricmc.loader.api.FabricLoader; import net.minecraft.entity.LivingEntity; import net.minecraft.entity.damage.DamageSource; import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.ItemStack; +import net.minecraft.item.Items; import net.minecraft.world.GameRules; -import net.minecraft.world.World; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; @@ -18,42 +20,50 @@ @Mixin(LivingEntity.class) public abstract class LivingEntityMixin { - @Shadow - public abstract World getWorld(); - @Inject( - method = "damage", - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/entity/LivingEntity;onDeath(Lnet/minecraft/entity/damage/DamageSource;)V" - ) - ) + + @Shadow protected abstract void consumeItem(); + + @Inject(method = "getOffHandStack", at = @At("HEAD"), cancellable = true) + public void grimoire$getOffHandStack(CallbackInfoReturnable cir) { + if((LivingEntity)(Object)this instanceof PlayerEntity player) { + if(player.getMainHandStack().getItem() instanceof TwoHanded) cir.setReturnValue(new ItemStack(Items.AIR)); + } + } + @Inject(method = "damage", at = @At(value = "INVOKE", target = "Lnet/minecraft/entity/LivingEntity;onDeath(Lnet/minecraft/entity/damage/DamageSource;)V")) private void grimoire$onDeath(DamageSource source, float amount, CallbackInfoReturnable cir) { - if (!((Object)this instanceof PlayerEntity player)) return; + if(((LivingEntity)(Object)this).getWorld().getGameRules().getBoolean(GameruleRegistry.CREATE_GRAVE) && (Object)this instanceof PlayerEntity player) { + if(player.getWorld().getGameRules().getBoolean(GameRules.KEEP_INVENTORY)) return; + + PlayerRemainsEntity playerRemainsEntity = new PlayerRemainsEntity(EntityTypeRegistry.PLAYER_REMAINS_TYPE, player.getWorld()); + playerRemainsEntity.setPosition(player.getPos()); - if (getWorld().getGameRules().getBoolean(GameruleRegistry.CREATE_GRAVE)) { - if (player.getWorld().getGameRules().getBoolean(GameRules.KEEP_INVENTORY)) return; + playerRemainsEntity.resetInventory(); - PlayerRemainsEntity remains = new PlayerRemainsEntity(EntityTypeRegistry.PLAYER_REMAINS_TYPE, player.getWorld()); - remains.setPosition(player.getPos()); - remains.resetInventory(); + for(int i = 0;i remains.addInventoryStack(stack.copy())); - player.getInventory().offHand.forEach(stack -> remains.addInventoryStack(stack.copy())); - player.getInventory().armor.forEach(stack -> remains.addInventoryStack(stack.copy())); + for(int i = 0;i=0.16.11", + "fabricloader": ">=0.16.10", "minecraft": "~1.20.1", "java": ">=17", "fabric-api": "*" From 443496af7f9eba61a0ace449c98135db42978253 Mon Sep 17 00:00:00 2001 From: Capozi Date: Thu, 17 Jul 2025 14:56:55 -0400 Subject: [PATCH 03/28] Skull is now properly skulling --- .../common/entity/PlayerRemainsEntity.class | Bin 0 -> 9034 bytes .../common/entity/PlayerRemainsEntityModel.class | Bin 0 -> 2128 bytes .../entity/PlayerRemainsEntityRenderer.class | Bin 0 -> 4841 bytes gradle.properties | 2 +- .../common/entity/PlayerRemainsEntity.java | 12 +++--------- 5 files changed, 4 insertions(+), 10 deletions(-) create mode 100644 build/classes/java/main/net/capozi/demise/common/entity/PlayerRemainsEntity.class create mode 100644 build/classes/java/main/net/capozi/demise/common/entity/PlayerRemainsEntityModel.class create mode 100644 build/classes/java/main/net/capozi/demise/common/entity/PlayerRemainsEntityRenderer.class diff --git a/build/classes/java/main/net/capozi/demise/common/entity/PlayerRemainsEntity.class b/build/classes/java/main/net/capozi/demise/common/entity/PlayerRemainsEntity.class new file mode 100644 index 0000000000000000000000000000000000000000..0bebf20e4c6b636d9f3465f83cd5a0a274d4633d GIT binary patch literal 9034 zcmb_h349dib^m|Tijh{M!&t@$#Ep#(V2uI!5H^U_0s>vp%90^X$w)h(vGfL@Y~%v zzW3h$-S7MK(pNt79Dw^&B8nQ+8i<&v!y1KcS-Tj^I9YopZ=EZ~>}=5~F2;tO1t)tx zp>Gt{9CETw@qUHFokLZZy9*~4=j^`Ff(yBPIu)Ce@4l|dDC*H*AZnr!row(XQ?OoGBHEh;JMQ^j-HB3)$XcOIR0(kVMnyxXzEz)lml;dX^sx#21py1w=K5yiUW ziIK$kVEpXx=wxCzF*0#BIhIHaDBKa!__cV^hn?s$&~2gzyA_VS1{BYUK9&mI6l$$h zN@0GLWLPm%NUOequajZ-nuv*2J4!Y>H8L7Mb+kWz>g;$TIhdU2ABiW{968N|=Ra}9 zeiH|TqOC-6Y;5B*=$~Y6K0m|y)JShJ-dPy!yuy|WXL+;< zT?YCLykRx&bGlx~+_LR1k75i-6BBqqA?g&8S=)M;t%XU{*>y(x!IX&y!Ajgr5H5-C z77Cjxa0Hu41Kx;lFz_Z5--xpc?d94AR?;I*A)a=qgo4r{Efdq2QD{o#b91E_VlgEo z-J)z0=j6SSatbq6KGlF(I0hav@i5W~x0cJ&(R0GevLrMN_YaPoJ<&hHI@KO>m%oe! zX$)BtIn23Q>y|W_by?gKj+qs@aP_F@Rn5qoD1dqzl7H-W3L7h|=#$Zt3kn;`wb5^n z<}L`efk)|vD({oCj-5`qOCDnrt+Hey@1$sQcg%cP1v?=kV+qKuJzARbR7lQMLCuZj2K zeGTJV!kOG0Q*!I-;j7bzZu>Bvlv#GE%6J+m z1APMn1ECnuF(}wwPLlg?#8W1o#xiSSVa~dcb+r;0AzDv!_kEvKvNl{Z@eDpgWvMee zY3HEluX4-Q-Y_YJIfarI9S@* z*m0Zlpflr-Pf7h)id6-Mx^T$WmXy$)|RD#wDwiUfQ;*cei6 z_$?E^EiIsKCT&~!D1H~eXW;iu`~m)uu3gEoxIg`K0%@=%QQYBwZ7HvGw#qZk#Gl6> z8~B2WKf#|WtS>j4AB|*G+dnv7*+KjjMA(c!m!SU(arJ7>qUjgxe9_?^iF>aG{3ZU% zz?V$?HU5Uxq+GgNIrD57b>oA_PfQSAh;3;Fh1cNkO#Ho=r$sh~GAK^u_4HuiAGs$f zXYDz0!Jc(!%-E#+>${QBJly}_+2r7v1p6}ws3zhr6s>G=(n`F@7jsfp)OWZN>t9n8plX4=kAxckbrL%A6%J!$0~x%VDM zin9(~bWrpCDmSkb7In=bd*#ZmZ!gWcm&WVX0pS9_WxxSk{48@YtpX_{sv6)fwL}~Plzx)0CUIfj<*VXSHW6k{Ovo| zb%vB~jZx?h3GtLHD?zS*Xp%JrZ-QQhs+u@bSsAx>t7D9I9f!l#oae84Co7$OhWegc zMTu%yLa24JO0BJ^fNmNGMkGmqSv|c*B{y8%Rt?QTe+lX8n5J@=aufH%em-k`q>F?g zg%VFZtsI5XiUzL{ehul|oVVQ*BDzlRJ|hKv3L`_E2QE@b=V;)@yq(D{*xp0-;MZz= z^c|V&xze1mvSWI?^FV=_yeF*g4dO=PE$X(vVLLmo@Yb)b@!d#N$O&HmE9=ENju*2t zgWSN>vWZq6DpeEU`7p=7%yh6 zyo`;^r_)kf$z)5IiPXO`Mon~Je?F7TOAwN=KM?Byix2g2AX)X6dT-f_*U<@DDIxL5 zyfZgvr@W{bSjDk=S%#KLGL$N^EEMcwgsM%koQre^k?x63ye`op#v#d)W>IQ2Ow-eL z-0oG+H@>6cxIrJAFU-2#uhqS=Q%4t%rRSX#EiQZXpx3&iDY0fNo3&<%COrn1TilhtHUmw=y<^qAZ45gJ6=jO&ubgCq-bBFVKCg zPIBtVSowzsoP3cxk*IrGa?Ftv=k;#tmz_-Sm8piU&q z!c|Wkx%u+WQ?ZSEr5Y&w1HU)mpYYGT{uho$HTYM4cr48Of7AE>j!nGg**>5D2cHyC z%m2Xo?w;LOp}Hf>FuGfNm(X+#H$RQ`C;6@x|H<#Qi12$8DL3HeSP~C2VV6#;zso zX~P}*;!e50!evT>Sw|JXlS>0T(2AV|a~l=k&bK_L^cbF`=o+qS?(VsYgFW5LxaS(~ z6NPFtk7f^${o=P@?2XBp!c(M~NUpTe1osEa(o z>o@b0iab&K1j$@CZKh4gf}4~Bbo@c=LN9f@i%{;yJ|4e{mfbXU8#bvrwMN@uzYlA_ zGE_Zbkb`PaoaI#`uNzTw9lH#Sy~5*SrA*c2A^to~A<>iWS;F~cWR~&B3z)w|s|4;Z zT%tyS`^8Jx5xoDVOSn0B|IHU+Ea7ceXoYubRrOsrZ@+zN3Ew3_;Huhvik?yC^zKrh~>Ujp=r*IL6dGSGo=g~a8dl^4;5o<2L`lV;_;nQ@?NBH?DKR?RP zC;9e?tGF^E&*{sbn!5bzb1TWUfoTPd(qm(c=30o zmT{F@=r?9}2bVm184d5KQI}u+!U|3|x+Ym}rkHmRvhbXykTZ;^DF*tRe5_IaIiZbZ zNb+x=Z}5E@wen&rQh%NBw!FfaSMqlOE|xkFAHG>jaEnQu$5$5< zbqjf|^ZnIFMTJRIxR$xhWRnV{Se5Jm!zPcRQn%uBBo{P$_$!QRTYDwPf>>q)q_sZj zdc5S39^q;cV~QdhUGs+ZNoyW%)iHfLnW|lvaHTe=jUKlzQX?r2Qvq&L6zE9iN7EHv z{!GWmaFc$`2g`VIYR{EDbn7qN8 zA}z7N47)&2J<8C0jDh(U4gLUO9l#FN;dO{9UyUhG4T4q;Iv7lx(jic*L!cFr>$sJH zdW##cQd>6o=8IEdF<(mnH3Kwk!M6u27%Z=z1?4Qwv*0ipO87TwhRnwo12x-?h<7s0 zAJ+`suGZ-5(&+2b=%t=go785HbuWJfYfU5^B<~KutMR$jc$J6YuSAkW+9-de#26cQ zcVELVhxL4qW+auHOMFI#+NL9g&(wCcLxV8fx~_I|C9_7|#-@2YuUXgIAa?}I)2je< z3GjNc$})a)rH#2Jc`v2CPs?_*uHKWa)GpOYc>;Yec?plmHT+H(_Xh&B5s%i**e+u0 zRy`h$!&F~P*!V1(PcPw*uHw(atS$y@S>_qFTL7p%N`MHU!~BS=)rvN5{rHe(;W}6O zR#d88vmk-*+?cw%NM=T`_>`&QCFbJ{@3CDxym5R|jY_v7QfFh1FdOPh*XY z6eI9c;gP2`OSb|BJ#v@gyrtuoWnmo&C5-PO2SZ$~qgdUm`aGS5eN~4)vkLn|>OL`( ky5BcjkD#lD@UsD>O9*R}gjkI_qWbw8C1IyJss_;Te+pE9VgLXD literal 0 HcmV?d00001 diff --git a/build/classes/java/main/net/capozi/demise/common/entity/PlayerRemainsEntityModel.class b/build/classes/java/main/net/capozi/demise/common/entity/PlayerRemainsEntityModel.class new file mode 100644 index 0000000000000000000000000000000000000000..daf8c232f107635fc9c8f96ffb431f7212eac20d GIT binary patch literal 2128 zcmbVNTW=FN6h3b5AuK5il~dKkX;D?Eh}5ErMiofBI1@MV?u@5$oY3+g z_!~UK3#@oRJnxTM@!2zllFn9YBH43%`~02H=bZfe->1(+G*1g<8ly~svK7ivp3!Y3 zj2B8Je9bqF=Lb?K<7uJVLVGZ!+3~`tEduYc8?0KJQNAvfGz*L}(=!`oDpILHh^*Z@X)a#>_z*_rcc+^b@077Tf1r(QE0o zMJRj1^P@0~)UJnX0pAh&nFzU5z1Yz*RcX9H$1C(RonUlt1c*edQcsvg)d@t8(R}RZ zA-U9+?Qdp-QFaOXGdi|{7kk8PVc4_Xwug12ArS2%2~HEH}Vn8X3ki2qL<_KgfYV0FD!ZnWH9H{AcbmL7^p@@xog z#P(98di_vnMDFez7J;LsZ^L0O9U=WTM#TXz4?LNEH=|r2J6!{n8jv6Y3<4g>i%i5C zq!9|S)e8DhEyshcF7on3N0@#2#OUVqAv2KC)Uc>YU5OLzdvI4*h3Q7^HLiImjL;CM zv@Sb}+mgZPZM`{CB-a+wRZg@@$b`d1u0B#w+PE&SM}6&!WoZ-hLP~9Mxpm_&K7h>U zp7l{!L(xzJ*^|iKMWrI+q89%D;z(@r76K;pJ-#JThX+zeDgv zm^p_Lvt<&!h1)?Z*tub-s)KqGFD6j-=y|%};NdS_bPO5&3M=D)Ct+osbqQ9^S(jnu z_t0QKi)mb;sf5NG>@3;c!!%Ah8ZYC;Jv6S;wS>kr%_KBt>3TwA4pvO#w{J9VI2zUk z50>+pZo(?2P%F{z^hZK%(qV!gs}`%pf2i=zdG%fN)73=?dJ811psRqk;N!E`ztGVu zQxn;V+(iBZ9UJznyyvaP_q~;!u_E0@JCi2_Lu$*=9W0E|UHa2~@6mmHkAnIGw3?tg G&3^?%VI$B0 literal 0 HcmV?d00001 diff --git a/build/classes/java/main/net/capozi/demise/common/entity/PlayerRemainsEntityRenderer.class b/build/classes/java/main/net/capozi/demise/common/entity/PlayerRemainsEntityRenderer.class new file mode 100644 index 0000000000000000000000000000000000000000..453855d4e622f6d5571f4d72b70181164f9a24d2 GIT binary patch literal 4841 zcmcgwYjYFV8Geo>Yb~(`V;mfXO9+@E+ewy`1V{u1V_Bde8)F-%khbYsK9bkoi?X{? zY?3x@Xqu3OwB(8*N$F)Kd~EYUq-Ca)PyNtIXZjcV7y1J-dC#t7ON$IK(_oMHa`rv% z<$15i|N7?d{{V0pf0od~aM0wgl2eP;c}*zJgXSi6}X!*9alAToFS3uZ7x5sFDZm|$#?*p88!$O zE;m+icw#j+RS-3zR_eDTB|ONmwNd3|stH%k%}4PNwn*42V;i=H6DQAPvkdWoP0NhQjBe}@ZhwSfPtbYGWaOGMw_R;o=ShL{F7!y)E#n8+!>~^% zvc{NXXd}#?vuu5aVcTtBy(B&;-e=OV7kv`?Wju<<$dpF2>nIr{;yI}qt{AF2tBk0wtu1(PQ@#{S&TRO|S3Z~hG7jJ%L#vZh zbrKOtq|+31kt6@1{G=Zt>5xpBN{JP9ZPj#i)%EC7sTAee;jh2`cMO9#CSgcM3d7{5 zIkl`Rx@s1L;8{}J(M*z?NcE;7NB*|7be;H0$S`zSc0rl53|%>0BCfWnS!OlZM89MT|WehH8&Y)S)d5RY(qJ);|-fXk|1npjo$vBO1@`q8@YtO+TMp}$d==5?X~}SD)hzJBB3Pd40x`V()SbPUk-5 zFfq(Smte>+VKF2{tgNwqtwc_juWweJ=6WVSW^;$!&Tuv8o@y}oEh`Avif+v@`9GpA zV4TN`GHg(%i1^wwT=Vr^BMixO`aUUKl2OJ>lmnu~lM_oeIeF^dln$n#hi+y@cqp$? zWHJl~z1JAg4Zf^}LU4@fouW!U+$C^9F_jhfG^P{o0H)sKchi@svQ}?2i&}C62r?IqXiCS(x z#dTMuk&Al3N}GMOxu(ryo`x+kiLBHU0_@4=463HCQhunB>sn!!Qk7AEl|@ge;lQBW zk>hRsgA8qT#E8bQJ+O0`)^8p}NZnpUK)bgvq86*pzZeX;YLGQ_kNc8tG)IhZch;I2 zQ*ElHG;I*Z1FNX#M^N(aDRtq_4DOR<(Fv_!s($tOZ@^VebG#n@T6`SxHm)&2{gS`N zP2LP}Z{h}$0~D6A39Dr1cv=%7x1-77ux8WaVicveIbNbFXz+|#)*LbJ51OXsdJ`K3 zfgjv?b=uZ)Mov+S8XdvPnr)c|MXShyvZ|Lz(nB6XLBh$!A}6BAP&P9>I!Q^FF->j{ z>8j&!N5XX)1Mf7pRTILGxSHO9nkC_n)kE@Kj;~F*&F^uF0A$1C_bz0pSe0CG6czqY1USC0yp6Y0i%w75tN4t=o_rKl33DWl2b@ICIXay%LI2D)TZC_v_6c5K+ zABcp+tJu#%6`ZZ$1tBO$3;BPdv#(z~_=FYA32Q^1wfjkPU@O|_OxlI*G?48;g23B{ zopch~g|p~^LC3^*X!SB39Nl1s$XMZ850YQuHBO)@0X;R9U4yR@e*cb zs<;vsKFduWOHxJ Date: Thu, 17 Jul 2025 15:05:36 -0400 Subject: [PATCH 04/28] Delete build directory bc it uploaded for sum reason --- .../common/entity/PlayerRemainsEntity.class | Bin 9034 -> 0 bytes .../common/entity/PlayerRemainsEntityModel.class | Bin 2128 -> 0 bytes .../entity/PlayerRemainsEntityRenderer.class | Bin 4841 -> 0 bytes 3 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 build/classes/java/main/net/capozi/demise/common/entity/PlayerRemainsEntity.class delete mode 100644 build/classes/java/main/net/capozi/demise/common/entity/PlayerRemainsEntityModel.class delete mode 100644 build/classes/java/main/net/capozi/demise/common/entity/PlayerRemainsEntityRenderer.class diff --git a/build/classes/java/main/net/capozi/demise/common/entity/PlayerRemainsEntity.class b/build/classes/java/main/net/capozi/demise/common/entity/PlayerRemainsEntity.class deleted file mode 100644 index 0bebf20e4c6b636d9f3465f83cd5a0a274d4633d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9034 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 diff --git a/build/classes/java/main/net/capozi/demise/common/entity/PlayerRemainsEntityModel.class b/build/classes/java/main/net/capozi/demise/common/entity/PlayerRemainsEntityModel.class deleted file mode 100644 index daf8c232f107635fc9c8f96ffb431f7212eac20d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2128 zcmbVNTW=FN6h3b5AuK5il~dKkX;D?Eh}5ErMiofBI1@MV?u@5$oY3+g z_!~UK3#@oRJnxTM@!2zllFn9YBH43%`~02H=bZfe->1(+G*1g<8ly~svK7ivp3!Y3 zj2B8Je9bqF=Lb?K<7uJVLVGZ!+3~`tEduYc8?0KJQNAvfGz*L}(=!`oDpILHh^*Z@X)a#>_z*_rcc+^b@077Tf1r(QE0o zMJRj1^P@0~)UJnX0pAh&nFzU5z1Yz*RcX9H$1C(RonUlt1c*edQcsvg)d@t8(R}RZ zA-U9+?Qdp-QFaOXGdi|{7kk8PVc4_Xwug12ArS2%2~HEH}Vn8X3ki2qL<_KgfYV0FD!ZnWH9H{AcbmL7^p@@xog z#P(98di_vnMDFez7J;LsZ^L0O9U=WTM#TXz4?LNEH=|r2J6!{n8jv6Y3<4g>i%i5C zq!9|S)e8DhEyshcF7on3N0@#2#OUVqAv2KC)Uc>YU5OLzdvI4*h3Q7^HLiImjL;CM zv@Sb}+mgZPZM`{CB-a+wRZg@@$b`d1u0B#w+PE&SM}6&!WoZ-hLP~9Mxpm_&K7h>U zp7l{!L(xzJ*^|iKMWrI+q89%D;z(@r76K;pJ-#JThX+zeDgv zm^p_Lvt<&!h1)?Z*tub-s)KqGFD6j-=y|%};NdS_bPO5&3M=D)Ct+osbqQ9^S(jnu z_t0QKi)mb;sf5NG>@3;c!!%Ah8ZYC;Jv6S;wS>kr%_KBt>3TwA4pvO#w{J9VI2zUk z50>+pZo(?2P%F{z^hZK%(qV!gs}`%pf2i=zdG%fN)73=?dJ811psRqk;N!E`ztGVu zQxn;V+(iBZ9UJznyyvaP_q~;!u_E0@JCi2_Lu$*=9W0E|UHa2~@6mmHkAnIGw3?tg G&3^?%VI$B0 diff --git a/build/classes/java/main/net/capozi/demise/common/entity/PlayerRemainsEntityRenderer.class b/build/classes/java/main/net/capozi/demise/common/entity/PlayerRemainsEntityRenderer.class deleted file mode 100644 index 453855d4e622f6d5571f4d72b70181164f9a24d2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4841 zcmcgwYjYFV8Geo>Yb~(`V;mfXO9+@E+ewy`1V{u1V_Bde8)F-%khbYsK9bkoi?X{? zY?3x@Xqu3OwB(8*N$F)Kd~EYUq-Ca)PyNtIXZjcV7y1J-dC#t7ON$IK(_oMHa`rv% z<$15i|N7?d{{V0pf0od~aM0wgl2eP;c}*zJgXSi6}X!*9alAToFS3uZ7x5sFDZm|$#?*p88!$O zE;m+icw#j+RS-3zR_eDTB|ONmwNd3|stH%k%}4PNwn*42V;i=H6DQAPvkdWoP0NhQjBe}@ZhwSfPtbYGWaOGMw_R;o=ShL{F7!y)E#n8+!>~^% zvc{NXXd}#?vuu5aVcTtBy(B&;-e=OV7kv`?Wju<<$dpF2>nIr{;yI}qt{AF2tBk0wtu1(PQ@#{S&TRO|S3Z~hG7jJ%L#vZh zbrKOtq|+31kt6@1{G=Zt>5xpBN{JP9ZPj#i)%EC7sTAee;jh2`cMO9#CSgcM3d7{5 zIkl`Rx@s1L;8{}J(M*z?NcE;7NB*|7be;H0$S`zSc0rl53|%>0BCfWnS!OlZM89MT|WehH8&Y)S)d5RY(qJ);|-fXk|1npjo$vBO1@`q8@YtO+TMp}$d==5?X~}SD)hzJBB3Pd40x`V()SbPUk-5 zFfq(Smte>+VKF2{tgNwqtwc_juWweJ=6WVSW^;$!&Tuv8o@y}oEh`Avif+v@`9GpA zV4TN`GHg(%i1^wwT=Vr^BMixO`aUUKl2OJ>lmnu~lM_oeIeF^dln$n#hi+y@cqp$? zWHJl~z1JAg4Zf^}LU4@fouW!U+$C^9F_jhfG^P{o0H)sKchi@svQ}?2i&}C62r?IqXiCS(x z#dTMuk&Al3N}GMOxu(ryo`x+kiLBHU0_@4=463HCQhunB>sn!!Qk7AEl|@ge;lQBW zk>hRsgA8qT#E8bQJ+O0`)^8p}NZnpUK)bgvq86*pzZeX;YLGQ_kNc8tG)IhZch;I2 zQ*ElHG;I*Z1FNX#M^N(aDRtq_4DOR<(Fv_!s($tOZ@^VebG#n@T6`SxHm)&2{gS`N zP2LP}Z{h}$0~D6A39Dr1cv=%7x1-77ux8WaVicveIbNbFXz+|#)*LbJ51OXsdJ`K3 zfgjv?b=uZ)Mov+S8XdvPnr)c|MXShyvZ|Lz(nB6XLBh$!A}6BAP&P9>I!Q^FF->j{ z>8j&!N5XX)1Mf7pRTILGxSHO9nkC_n)kE@Kj;~F*&F^uF0A$1C_bz0pSe0CG6czqY1USC0yp6Y0i%w75tN4t=o_rKl33DWl2b@ICIXay%LI2D)TZC_v_6c5K+ zABcp+tJu#%6`ZZ$1tBO$3;BPdv#(z~_=FYA32Q^1wfjkPU@O|_OxlI*G?48;g23B{ zopch~g|p~^LC3^*X!SB39Nl1s$XMZ850YQuHBO)@0X;R9U4yR@e*cb zs<;vsKFduWOHxJ Date: Sat, 1 Nov 2025 01:04:44 -0400 Subject: [PATCH 05/28] fixed dupe glitch --- .gitignore | 5 +++++ gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 43764 bytes gradle/wrapper/gradle-wrapper.properties | 7 ++++++ gradlew | 6 +++--- gradlew.bat | 4 ++-- .../common/entity/PlayerRemainsEntity.java | 20 +++++++++++++++++- 6 files changed, 36 insertions(+), 6 deletions(-) create mode 100644 .gitignore create mode 100644 gradle/wrapper/gradle-wrapper.jar create mode 100644 gradle/wrapper/gradle-wrapper.properties diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..f7a59df --- /dev/null +++ b/.gitignore @@ -0,0 +1,5 @@ +.gradle +build +resources +run +.idea \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..1b33c55baabb587c669f562ae36f953de2481846 GIT binary patch literal 43764 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 Date: Mon, 3 Nov 2025 17:58:45 -0500 Subject: [PATCH 06/28] fix crahs --- build.gradle | 3 --- gradle.properties | 2 +- src/main/java/net/capozi/demise/mixin/LivingEntityMixin.java | 3 ++- 3 files changed, 3 insertions(+), 5 deletions(-) diff --git a/build.gradle b/build.gradle index cdfa466..6a02bfb 100644 --- a/build.gradle +++ b/build.gradle @@ -41,9 +41,6 @@ dependencies { // Fabric API. This is technically optional, but you probably want it anyway. modImplementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}" - include modImplementation("dev.onyxstudios.cardinal-components-api:cardinal-components-base:${project.cca_version}") - include modImplementation("dev.onyxstudios.cardinal-components-api:cardinal-components-entity:${project.cca_version}") - include modImplementation("dev.onyxstudios.cardinal-components-api:cardinal-components-world:${project.cca_version}") include modImplementation("dev.emi:trinkets:${project.trinkets_version}") } diff --git a/gradle.properties b/gradle.properties index 7ce6d83..a14666e 100644 --- a/gradle.properties +++ b/gradle.properties @@ -10,7 +10,7 @@ loader_version=0.16.10 loom_version=1.10-SNAPSHOT # Mod Properties -mod_version=0.1.4r +mod_version=0.1.4.3 maven_group=net.capozi.demise archives_base_name=demsie diff --git a/src/main/java/net/capozi/demise/mixin/LivingEntityMixin.java b/src/main/java/net/capozi/demise/mixin/LivingEntityMixin.java index c3558d1..300e75b 100644 --- a/src/main/java/net/capozi/demise/mixin/LivingEntityMixin.java +++ b/src/main/java/net/capozi/demise/mixin/LivingEntityMixin.java @@ -31,7 +31,8 @@ public abstract class LivingEntityMixin { } @Inject(method = "damage", at = @At(value = "INVOKE", target = "Lnet/minecraft/entity/LivingEntity;onDeath(Lnet/minecraft/entity/damage/DamageSource;)V")) private void grimoire$onDeath(DamageSource source, float amount, CallbackInfoReturnable cir) { - if(((LivingEntity)(Object)this).getWorld().getGameRules().getBoolean(GameruleRegistry.CREATE_GRAVE) && (Object)this instanceof PlayerEntity player) { + if((Object)this instanceof PlayerEntity player) { + if(!((LivingEntity)(Object)this).getWorld().getGameRules().getBoolean(GameruleRegistry.CREATE_GRAVE)) return; if(player.getWorld().getGameRules().getBoolean(GameRules.KEEP_INVENTORY)) return; PlayerRemainsEntity playerRemainsEntity = new PlayerRemainsEntity(EntityTypeRegistry.PLAYER_REMAINS_TYPE, player.getWorld()); From 7a245bff22fd6cd3a58d4f3d2deb76b51a05750d Mon Sep 17 00:00:00 2001 From: Capozi Date: Wed, 19 Nov 2025 21:26:01 -0500 Subject: [PATCH 07/28] you were an isle unto thyself --- gradle.properties | 2 +- .../common/entity/PlayerRemainsEntity.java | 18 ++++++++++++++---- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/gradle.properties b/gradle.properties index a14666e..0991d6e 100644 --- a/gradle.properties +++ b/gradle.properties @@ -10,7 +10,7 @@ loader_version=0.16.10 loom_version=1.10-SNAPSHOT # Mod Properties -mod_version=0.1.4.3 +mod_version=0.1.4.4 maven_group=net.capozi.demise archives_base_name=demsie diff --git a/src/main/java/net/capozi/demise/common/entity/PlayerRemainsEntity.java b/src/main/java/net/capozi/demise/common/entity/PlayerRemainsEntity.java index 5b0365f..0a21495 100644 --- a/src/main/java/net/capozi/demise/common/entity/PlayerRemainsEntity.java +++ b/src/main/java/net/capozi/demise/common/entity/PlayerRemainsEntity.java @@ -13,6 +13,7 @@ import net.minecraft.nbt.NbtCompound; import net.minecraft.screen.GenericContainerScreenHandler; import net.minecraft.screen.ScreenHandler; +import net.minecraft.server.network.ServerPlayerEntity; import net.minecraft.util.ActionResult; import net.minecraft.util.Arm; import net.minecraft.util.Hand; @@ -189,15 +190,24 @@ public void setLootTableSeed(long lootTableSeed) { public void markDirty() { } - + @Override + public void onDeath(DamageSource damageSource) { + super.onDeath(damageSource); + PlayerEntity player = MinecraftClient.getInstance().player; + if (player.currentScreenHandler != player.playerScreenHandler) { + if (player.currentScreenHandler instanceof GenericContainerScreenHandler handler) { + closeHandleScreen(); + } + } + } @Override public void tick() { + super.tick(); if(!this.isAlive()) { - PlayerEntity player = MinecraftClient.getInstance().player; + PlayerEntity player = MinecraftClient.getInstance().player; if (player.currentScreenHandler != player.playerScreenHandler) { - // Check if the open inventory belongs to THIS horse if (player.currentScreenHandler instanceof GenericContainerScreenHandler handler) { - this.closeHandleScreen(); + closeHandleScreen(); } } } From 1e7f020189434219c6c29f47c90fb86965bd5f2c Mon Sep 17 00:00:00 2001 From: Capozi Date: Tue, 9 Dec 2025 14:05:14 -0500 Subject: [PATCH 08/28] fixing duping --- gradle.properties | 2 +- .../common/entity/PlayerRemainsEntity.java | 47 ++++++++----------- 2 files changed, 21 insertions(+), 28 deletions(-) diff --git a/gradle.properties b/gradle.properties index 0991d6e..b5c9ce8 100644 --- a/gradle.properties +++ b/gradle.properties @@ -10,7 +10,7 @@ loader_version=0.16.10 loom_version=1.10-SNAPSHOT # Mod Properties -mod_version=0.1.4.4 +mod_version=0.1.4.5 maven_group=net.capozi.demise archives_base_name=demsie diff --git a/src/main/java/net/capozi/demise/common/entity/PlayerRemainsEntity.java b/src/main/java/net/capozi/demise/common/entity/PlayerRemainsEntity.java index 0a21495..93e5466 100644 --- a/src/main/java/net/capozi/demise/common/entity/PlayerRemainsEntity.java +++ b/src/main/java/net/capozi/demise/common/entity/PlayerRemainsEntity.java @@ -19,9 +19,12 @@ import net.minecraft.util.Hand; import net.minecraft.util.Identifier; import net.minecraft.util.collection.DefaultedList; +import net.minecraft.util.math.Box; +import net.minecraft.util.math.Vec3d; import net.minecraft.world.World; import org.jetbrains.annotations.Nullable; import java.util.Collections; +import java.util.List; public class PlayerRemainsEntity extends LivingEntity implements VehicleInventory { private static final int MAX_SIZE = 27*2; // Maximum inventory size @@ -50,11 +53,27 @@ public void writeCustomDataToNbt(NbtCompound nbt) { } @Override public boolean damage(DamageSource source, float amount) { - if(source.getAttacker() instanceof PlayerEntity player) { + if (source.getAttacker() instanceof PlayerEntity player) { if(player.isSneaking()) { if(getEntityWorld().isClient) return true; this.dropInventory(); this.clearInventory(); + Vec3d center = this.getPos(); + double radius = 10.0; + Box box = new Box( + center.x - radius, center.y - (radius/2), center.z - radius, + center.x + radius, center.y + (radius/2), center.z + radius + ); + List entities = this.getWorld().getEntitiesByClass( + LivingEntity.class, + box, + e -> e.squaredDistanceTo(center) <= radius * radius + ); + for (LivingEntity entity : entities) { + if (entity instanceof ServerPlayerEntity playerEntity) { + playerEntity.closeHandledScreen(); + } + } this.discard(); return true; } @@ -190,30 +209,4 @@ public void setLootTableSeed(long lootTableSeed) { public void markDirty() { } - @Override - public void onDeath(DamageSource damageSource) { - super.onDeath(damageSource); - PlayerEntity player = MinecraftClient.getInstance().player; - if (player.currentScreenHandler != player.playerScreenHandler) { - if (player.currentScreenHandler instanceof GenericContainerScreenHandler handler) { - closeHandleScreen(); - } - } - } - @Override - public void tick() { - super.tick(); - if(!this.isAlive()) { - PlayerEntity player = MinecraftClient.getInstance().player; - if (player.currentScreenHandler != player.playerScreenHandler) { - if (player.currentScreenHandler instanceof GenericContainerScreenHandler handler) { - closeHandleScreen(); - } - } - } - } - protected void closeHandleScreen() { - PlayerEntity player = MinecraftClient.getInstance().player; - player.currentScreenHandler = player.playerScreenHandler; - } } From 96caf5dbee87eefa1ee0fededffa80942bdd491c Mon Sep 17 00:00:00 2001 From: Capozi Date: Wed, 10 Dec 2025 08:39:35 -0500 Subject: [PATCH 09/28] desc updates --- src/main/resources/assets/demsie/icon.png | Bin 3820 -> 0 bytes src/main/resources/demsie.mixins.json | 12 ------------ src/main/resources/fabric.mod.json | 4 ++-- 3 files changed, 2 insertions(+), 14 deletions(-) delete mode 100644 src/main/resources/assets/demsie/icon.png delete mode 100644 src/main/resources/demsie.mixins.json diff --git a/src/main/resources/assets/demsie/icon.png b/src/main/resources/assets/demsie/icon.png deleted file mode 100644 index 5929b6eb9b8923fa28e0b86b074d6bbeac9c97c0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3820 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 FzX3g=R}}yN diff --git a/src/main/resources/demsie.mixins.json b/src/main/resources/demsie.mixins.json deleted file mode 100644 index 2042053..0000000 --- a/src/main/resources/demsie.mixins.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "required": true, - "package": "net.capozi.demise.mixin", - "compatibilityLevel": "JAVA_17", - "mixins": [ - "LivingEntityMixin", - "PlayerEntityMixin" - ], - "injectors": { - "defaultRequire": 1 - } -} \ No newline at end of file diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index da8b580..13f1f21 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -12,7 +12,7 @@ "sources": "https://github.com/FabricMC/fabric-example-mod" }, "license": "GPL v3.0", - "icon": "assets/demsie/icon.png", + "icon": "assets/demise/icon.png", "environment": "*", "entrypoints": { "main": [ @@ -26,7 +26,7 @@ ] }, "mixins": [ - "demsie.mixins.json" + "demise.mixins.json" ], "depends": { "fabricloader": ">=0.16.10", From 5fb5de674a1d0fa79252bf0a352a1dca545a3e5b Mon Sep 17 00:00:00 2001 From: Capozi Date: Wed, 10 Dec 2025 11:03:22 -0500 Subject: [PATCH 10/28] Update EntityTypeRegistry.java --- .../net/capozi/demise/common/entity/EntityTypeRegistry.java | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/main/java/net/capozi/demise/common/entity/EntityTypeRegistry.java b/src/main/java/net/capozi/demise/common/entity/EntityTypeRegistry.java index a7efcc7..6cc6789 100644 --- a/src/main/java/net/capozi/demise/common/entity/EntityTypeRegistry.java +++ b/src/main/java/net/capozi/demise/common/entity/EntityTypeRegistry.java @@ -11,10 +11,7 @@ public class EntityTypeRegistry { //public static final EntityModelLayer PLAYER_REMAINS_MODEL_LAYER = new EntityModelLayer(Grimoire.id("player_remains"), "main"); - public static final EntityType PLAYER_REMAINS_TYPE = Registry.register(Registries.ENTITY_TYPE, - Demise.id("player_remains"), - FabricEntityTypeBuilder.create(SpawnGroup.MISC, PlayerRemainsEntity::new).dimensions(EntityDimensions.changing(0.8f, 0.8f)).build()); - + public static final EntityType PLAYER_REMAINS_TYPE = Registry.register(Registries.ENTITY_TYPE, Demise.id("player_remains"), FabricEntityTypeBuilder.create(SpawnGroup.MISC, PlayerRemainsEntity::new).dimensions(EntityDimensions.changing(0.8f, 0.8f)).build()); public static void register() { FabricDefaultAttributeRegistry.register(PLAYER_REMAINS_TYPE, PlayerRemainsEntity.createAttributes()); } From 31f372927a44325a023e2fdea5a43fb040544f13 Mon Sep 17 00:00:00 2001 From: Capozi Date: Sun, 11 Jan 2026 14:49:31 -0500 Subject: [PATCH 11/28] fixing jittery animation --- .../entity/PlayerRemainsEntityRenderer.java | 25 +++++++++---------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/src/main/java/net/capozi/demise/common/entity/PlayerRemainsEntityRenderer.java b/src/main/java/net/capozi/demise/common/entity/PlayerRemainsEntityRenderer.java index 38cd8d4..4500f9b 100644 --- a/src/main/java/net/capozi/demise/common/entity/PlayerRemainsEntityRenderer.java +++ b/src/main/java/net/capozi/demise/common/entity/PlayerRemainsEntityRenderer.java @@ -14,33 +14,32 @@ import net.minecraft.item.ItemStack; import net.minecraft.item.Items; import net.minecraft.util.Identifier; +import net.minecraft.util.math.RotationAxis; import org.joml.Quaternionf; +import static java.lang.Math.abs; +import static java.lang.Math.sin; + @Environment(EnvType.CLIENT) public class PlayerRemainsEntityRenderer extends LivingEntityRenderer> { public PlayerRemainsEntityRenderer(EntityRendererFactory.Context ctx) { super(ctx, new PlayerRemainsEntityModel<>(), 0.3f); } - + ItemRenderer itemRenderer = MinecraftClient.getInstance().getItemRenderer(); @Override public void render(PlayerRemainsEntity entity, float yaw, float tickDelta, MatrixStack matrixStack, VertexConsumerProvider vertexConsumers, int light) { - ItemRenderer itemRenderer = MinecraftClient.getInstance().getItemRenderer(); ItemStack stack = new ItemStack(Items.SKELETON_SKULL); - float angle = (entity.getWorld().getTime() + tickDelta) * 2.5f; - matrixStack.push(); - matrixStack.scale(1.5f, 1.5f, 1.5f); - matrixStack.translate(0, 0.25, 0); - matrixStack.translate(0, Math.sin((entity.getWorld().getTime() + tickDelta)*0.1f)*0.1f, 0); - matrixStack.multiply(new Quaternionf().fromAxisAngleDeg(0, 1, 0, angle)); - + matrixStack.scale(1.7f, 1.7f, 1.7f); + matrixStack.translate(0, 0.2, 0); + matrixStack.translate(0, (abs(sin((float)entity.age / 15) + 1) / 7), 0); + matrixStack.multiply(RotationAxis.POSITIVE_Y.rotation((float)entity.age / 20)); itemRenderer.renderItem(stack, ModelTransformationMode.GROUND, false, matrixStack, vertexConsumers, light, 0, itemRenderer.getModel(stack, entity.getWorld(), null, 0)); - matrixStack.pop(); - if(entity.getCustomName() != null) { - this.renderLabelIfPresent(entity, entity.getCustomName(), matrixStack, vertexConsumers, light); - } + if(entity.getCustomName() != null) { + this.renderLabelIfPresent(entity, entity.getCustomName(), matrixStack, vertexConsumers, light); + } } @Override From 3dce930eb4ac3c4a23ed29f9e9b359c4ba346e9c Mon Sep 17 00:00:00 2001 From: Capozi Date: Sun, 11 Jan 2026 15:41:40 -0500 Subject: [PATCH 12/28] forgor to register things --- gradle.properties | 2 +- src/main/java/net/capozi/demise/Demise.java | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index b5c9ce8..734e5b6 100644 --- a/gradle.properties +++ b/gradle.properties @@ -10,7 +10,7 @@ loader_version=0.16.10 loom_version=1.10-SNAPSHOT # Mod Properties -mod_version=0.1.4.5 +mod_version=0.1.7-1.20.1 maven_group=net.capozi.demise archives_base_name=demsie diff --git a/src/main/java/net/capozi/demise/Demise.java b/src/main/java/net/capozi/demise/Demise.java index c1aa188..9b2051b 100644 --- a/src/main/java/net/capozi/demise/Demise.java +++ b/src/main/java/net/capozi/demise/Demise.java @@ -1,5 +1,6 @@ package net.capozi.demise; +import net.capozi.demise.common.GameruleRegistry; import net.capozi.demise.common.entity.EntityTypeRegistry; import net.fabricmc.api.ModInitializer; import net.minecraft.util.Identifier; @@ -13,6 +14,7 @@ public class Demise implements ModInitializer { @Override public void onInitialize() { EntityTypeRegistry.register(); + GameruleRegistry.register(); } public static Identifier id(String name) { return Identifier.of(MOD_ID, name); From 4e93855e6af5c83953526391cd6be304b1ab4968 Mon Sep 17 00:00:00 2001 From: Capozi Date: Thu, 15 Jan 2026 20:17:21 -0500 Subject: [PATCH 13/28] new rendering options --- .../demise/common/GameruleRegistry.java | 1 + .../common/entity/PlayerRemainsEntity.java | 15 +++-------- .../entity/PlayerRemainsEntityRenderer.java | 25 ++++++++++++++++--- .../demise/mixin/LivingEntityMixin.java | 2 +- 4 files changed, 27 insertions(+), 16 deletions(-) diff --git a/src/main/java/net/capozi/demise/common/GameruleRegistry.java b/src/main/java/net/capozi/demise/common/GameruleRegistry.java index 4df9eaf..cdaf9d6 100644 --- a/src/main/java/net/capozi/demise/common/GameruleRegistry.java +++ b/src/main/java/net/capozi/demise/common/GameruleRegistry.java @@ -7,6 +7,7 @@ public class GameruleRegistry { public static final GameRules.Key SAVE_TRINKETS = GameRuleRegistry.register("saveTrinkets", GameRules.Category.PLAYER, GameRuleFactory.createBooleanRule(true)); public static final GameRules.Key CREATE_GRAVE = GameRuleRegistry.register("createGraves", GameRules.Category.PLAYER, GameRuleFactory.createBooleanRule(true)); + public static final GameRules.Key RENDER_AS_HEADS = GameRuleRegistry.register("render_graves_as_player_heads", GameRules.Category.PLAYER, GameRuleFactory.createBooleanRule(false)); public static void register() { diff --git a/src/main/java/net/capozi/demise/common/entity/PlayerRemainsEntity.java b/src/main/java/net/capozi/demise/common/entity/PlayerRemainsEntity.java index 93e5466..9f4a8da 100644 --- a/src/main/java/net/capozi/demise/common/entity/PlayerRemainsEntity.java +++ b/src/main/java/net/capozi/demise/common/entity/PlayerRemainsEntity.java @@ -1,6 +1,5 @@ package net.capozi.demise.common.entity; -import net.minecraft.client.MinecraftClient; import net.minecraft.entity.*; import net.minecraft.entity.attribute.DefaultAttributeContainer; import net.minecraft.entity.attribute.EntityAttributes; @@ -27,9 +26,9 @@ import java.util.List; public class PlayerRemainsEntity extends LivingEntity implements VehicleInventory { + public PlayerEntity playerFor; private static final int MAX_SIZE = 27*2; // Maximum inventory size private DefaultedList inventory; - public PlayerRemainsEntity(EntityType entityType, World world) { super(entityType, world); this.setInvulnerable(true); @@ -175,9 +174,7 @@ public ItemStack getEquippedStack(EquipmentSlot slot) { return new ItemStack(Items.AIR); } @Override - public void equipStack(EquipmentSlot slot, ItemStack stack) { - - } + public void equipStack(EquipmentSlot slot, ItemStack stack) {} @Override public Arm getMainArm() { return Arm.RIGHT; @@ -202,11 +199,7 @@ protected void initDataTracker() { @Override public void setLootTableId(@Nullable Identifier lootTableId) {} @Override - public void setLootTableSeed(long lootTableSeed) { - - } + public void setLootTableSeed(long lootTableSeed) {} @Override - public void markDirty() { - - } + public void markDirty() {} } diff --git a/src/main/java/net/capozi/demise/common/entity/PlayerRemainsEntityRenderer.java b/src/main/java/net/capozi/demise/common/entity/PlayerRemainsEntityRenderer.java index 4500f9b..3d4eb4b 100644 --- a/src/main/java/net/capozi/demise/common/entity/PlayerRemainsEntityRenderer.java +++ b/src/main/java/net/capozi/demise/common/entity/PlayerRemainsEntityRenderer.java @@ -1,5 +1,7 @@ package net.capozi.demise.common.entity; +import com.mojang.authlib.GameProfile; +import net.capozi.demise.common.GameruleRegistry; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.client.MinecraftClient; @@ -11,12 +13,13 @@ import net.minecraft.client.render.model.json.ModelTransformationMode; import net.minecraft.client.render.model.json.Transformation; import net.minecraft.client.util.math.MatrixStack; +import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; import net.minecraft.item.Items; +import net.minecraft.nbt.NbtCompound; +import net.minecraft.nbt.NbtHelper; import net.minecraft.util.Identifier; import net.minecraft.util.math.RotationAxis; -import org.joml.Quaternionf; - import static java.lang.Math.abs; import static java.lang.Math.sin; @@ -25,17 +28,31 @@ public class PlayerRemainsEntityRenderer extends LivingEntityRenderer(), 0.3f); } - ItemRenderer itemRenderer = MinecraftClient.getInstance().getItemRenderer(); + public static ItemStack createPlayerHead(GameProfile profile) { + ItemStack stack = new ItemStack(Items.PLAYER_HEAD); + NbtCompound skullOwner = new NbtCompound(); + NbtHelper.writeGameProfile(skullOwner, profile); + stack.getOrCreateNbt().put("SkullOwner", skullOwner); + return stack; + } + public static ItemStack getHead(PlayerEntity player) { + return createPlayerHead(player.getGameProfile()); + } @Override public void render(PlayerRemainsEntity entity, float yaw, float tickDelta, MatrixStack matrixStack, VertexConsumerProvider vertexConsumers, int light) { ItemStack stack = new ItemStack(Items.SKELETON_SKULL); + ItemStack headStack = getHead(entity.playerFor); matrixStack.push(); matrixStack.scale(1.7f, 1.7f, 1.7f); matrixStack.translate(0, 0.2, 0); matrixStack.translate(0, (abs(sin((float)entity.age / 15) + 1) / 7), 0); matrixStack.multiply(RotationAxis.POSITIVE_Y.rotation((float)entity.age / 20)); - itemRenderer.renderItem(stack, ModelTransformationMode.GROUND, false, matrixStack, vertexConsumers, light, 0, itemRenderer.getModel(stack, entity.getWorld(), null, 0)); + if (entity.getWorld().getGameRules().getBoolean(GameruleRegistry.RENDER_AS_HEADS)) { + itemRenderer.renderItem(headStack, ModelTransformationMode.GROUND, false, matrixStack, vertexConsumers, light, 0, itemRenderer.getModel(stack, entity.getWorld(), null, 0)); + } else { + itemRenderer.renderItem(stack, ModelTransformationMode.GROUND, false, matrixStack, vertexConsumers, light, 0, itemRenderer.getModel(stack, entity.getWorld(), null, 0)); + } matrixStack.pop(); if(entity.getCustomName() != null) { this.renderLabelIfPresent(entity, entity.getCustomName(), matrixStack, vertexConsumers, light); diff --git a/src/main/java/net/capozi/demise/mixin/LivingEntityMixin.java b/src/main/java/net/capozi/demise/mixin/LivingEntityMixin.java index 300e75b..31235d7 100644 --- a/src/main/java/net/capozi/demise/mixin/LivingEntityMixin.java +++ b/src/main/java/net/capozi/demise/mixin/LivingEntityMixin.java @@ -61,8 +61,8 @@ public abstract class LivingEntityMixin { } playerRemainsEntity.setCustomName(player.getDisplayName()); + playerRemainsEntity.playerFor = player; playerRemainsEntity.setCustomNameVisible(true); - player.getWorld().spawnEntity(playerRemainsEntity); player.getInventory().clear(); } From 56043df0bbd0076579da01cd0c392fe0d11ddcf3 Mon Sep 17 00:00:00 2001 From: Capozi Date: Thu, 15 Jan 2026 22:35:31 -0500 Subject: [PATCH 14/28] trying to cook and burning the food --- .../demise/common/entity/PlayerRemainsEntity.java | 11 ++++++++++- .../common/entity/PlayerRemainsEntityRenderer.java | 8 ++++++-- .../net/capozi/demise/mixin/LivingEntityMixin.java | 12 +++--------- .../net/capozi/demise/mixin/PlayerEntityMixin.java | 2 +- 4 files changed, 20 insertions(+), 13 deletions(-) diff --git a/src/main/java/net/capozi/demise/common/entity/PlayerRemainsEntity.java b/src/main/java/net/capozi/demise/common/entity/PlayerRemainsEntity.java index 9f4a8da..4c91bac 100644 --- a/src/main/java/net/capozi/demise/common/entity/PlayerRemainsEntity.java +++ b/src/main/java/net/capozi/demise/common/entity/PlayerRemainsEntity.java @@ -29,11 +29,20 @@ public class PlayerRemainsEntity extends LivingEntity implements VehicleInventor public PlayerEntity playerFor; private static final int MAX_SIZE = 27*2; // Maximum inventory size private DefaultedList inventory; - public PlayerRemainsEntity(EntityType entityType, World world) { + protected PlayerRemainsEntity(EntityType entityType, World world) { super(entityType, world); this.setInvulnerable(true); this.inventory = DefaultedList.ofSize(MAX_SIZE, ItemStack.EMPTY); } + private PlayerRemainsEntity(EntityType entityType, World world, PlayerEntity player) { + super(entityType, world); + this.setInvulnerable(true); + this.playerFor = player; + this.inventory = DefaultedList.ofSize(MAX_SIZE, ItemStack.EMPTY); + } + public static PlayerRemainsEntity create(EntityType type, World world, PlayerEntity player) { + return new PlayerRemainsEntity(type, world, player); + } public static DefaultAttributeContainer.Builder createAttributes() { return LivingEntity.createLivingAttributes() .add(EntityAttributes.GENERIC_MOVEMENT_SPEED, 0f) diff --git a/src/main/java/net/capozi/demise/common/entity/PlayerRemainsEntityRenderer.java b/src/main/java/net/capozi/demise/common/entity/PlayerRemainsEntityRenderer.java index 3d4eb4b..020d360 100644 --- a/src/main/java/net/capozi/demise/common/entity/PlayerRemainsEntityRenderer.java +++ b/src/main/java/net/capozi/demise/common/entity/PlayerRemainsEntityRenderer.java @@ -42,14 +42,18 @@ public static ItemStack getHead(PlayerEntity player) { @Override public void render(PlayerRemainsEntity entity, float yaw, float tickDelta, MatrixStack matrixStack, VertexConsumerProvider vertexConsumers, int light) { ItemStack stack = new ItemStack(Items.SKELETON_SKULL); - ItemStack headStack = getHead(entity.playerFor); matrixStack.push(); matrixStack.scale(1.7f, 1.7f, 1.7f); matrixStack.translate(0, 0.2, 0); matrixStack.translate(0, (abs(sin((float)entity.age / 15) + 1) / 7), 0); matrixStack.multiply(RotationAxis.POSITIVE_Y.rotation((float)entity.age / 20)); if (entity.getWorld().getGameRules().getBoolean(GameruleRegistry.RENDER_AS_HEADS)) { - itemRenderer.renderItem(headStack, ModelTransformationMode.GROUND, false, matrixStack, vertexConsumers, light, 0, itemRenderer.getModel(stack, entity.getWorld(), null, 0)); + try { + ItemStack headStack = getHead(entity.playerFor); + itemRenderer.renderItem(headStack, ModelTransformationMode.GROUND, false, matrixStack, vertexConsumers, light, 0, itemRenderer.getModel(stack, entity.getWorld(), null, 0)); + } catch (Exception e) { + itemRenderer.renderItem(stack, ModelTransformationMode.GROUND, false, matrixStack, vertexConsumers, light, 0, itemRenderer.getModel(stack, entity.getWorld(), null, 0)); + } } else { itemRenderer.renderItem(stack, ModelTransformationMode.GROUND, false, matrixStack, vertexConsumers, light, 0, itemRenderer.getModel(stack, entity.getWorld(), null, 0)); } diff --git a/src/main/java/net/capozi/demise/mixin/LivingEntityMixin.java b/src/main/java/net/capozi/demise/mixin/LivingEntityMixin.java index 31235d7..9b61a0e 100644 --- a/src/main/java/net/capozi/demise/mixin/LivingEntityMixin.java +++ b/src/main/java/net/capozi/demise/mixin/LivingEntityMixin.java @@ -24,29 +24,25 @@ public abstract class LivingEntityMixin { @Shadow protected abstract void consumeItem(); @Inject(method = "getOffHandStack", at = @At("HEAD"), cancellable = true) - public void grimoire$getOffHandStack(CallbackInfoReturnable cir) { + public void demise$getOffHandStack(CallbackInfoReturnable cir) { if((LivingEntity)(Object)this instanceof PlayerEntity player) { if(player.getMainHandStack().getItem() instanceof TwoHanded) cir.setReturnValue(new ItemStack(Items.AIR)); } } @Inject(method = "damage", at = @At(value = "INVOKE", target = "Lnet/minecraft/entity/LivingEntity;onDeath(Lnet/minecraft/entity/damage/DamageSource;)V")) - private void grimoire$onDeath(DamageSource source, float amount, CallbackInfoReturnable cir) { + private void demise$onDeath(DamageSource source, float amount, CallbackInfoReturnable cir) { if((Object)this instanceof PlayerEntity player) { if(!((LivingEntity)(Object)this).getWorld().getGameRules().getBoolean(GameruleRegistry.CREATE_GRAVE)) return; if(player.getWorld().getGameRules().getBoolean(GameRules.KEEP_INVENTORY)) return; - - PlayerRemainsEntity playerRemainsEntity = new PlayerRemainsEntity(EntityTypeRegistry.PLAYER_REMAINS_TYPE, player.getWorld()); + PlayerRemainsEntity playerRemainsEntity = PlayerRemainsEntity.create(EntityTypeRegistry.PLAYER_REMAINS_TYPE, player.getWorld(), player); playerRemainsEntity.setPosition(player.getPos()); - playerRemainsEntity.resetInventory(); - for(int i = 0;i Date: Fri, 16 Jan 2026 20:02:47 -0500 Subject: [PATCH 15/28] sync --- .../common/entity/PlayerRemainsEntity.java | 9 +++++++++ .../entity/PlayerRemainsEntityRenderer.java | 18 ++---------------- 2 files changed, 11 insertions(+), 16 deletions(-) diff --git a/src/main/java/net/capozi/demise/common/entity/PlayerRemainsEntity.java b/src/main/java/net/capozi/demise/common/entity/PlayerRemainsEntity.java index 4c91bac..1ae81f0 100644 --- a/src/main/java/net/capozi/demise/common/entity/PlayerRemainsEntity.java +++ b/src/main/java/net/capozi/demise/common/entity/PlayerRemainsEntity.java @@ -1,5 +1,6 @@ package net.capozi.demise.common.entity; +import com.mojang.authlib.GameProfile; import net.minecraft.entity.*; import net.minecraft.entity.attribute.DefaultAttributeContainer; import net.minecraft.entity.attribute.EntityAttributes; @@ -10,6 +11,7 @@ import net.minecraft.inventory.Inventories; import net.minecraft.item.*; import net.minecraft.nbt.NbtCompound; +import net.minecraft.nbt.NbtHelper; import net.minecraft.screen.GenericContainerScreenHandler; import net.minecraft.screen.ScreenHandler; import net.minecraft.server.network.ServerPlayerEntity; @@ -49,6 +51,13 @@ public static DefaultAttributeContainer.Builder createAttributes() { .add(EntityAttributes.GENERIC_KNOCKBACK_RESISTANCE, 100f) .add(EntityAttributes.GENERIC_FOLLOW_RANGE, 0f); } + public ItemStack createPlayerHead() { + ItemStack stack = new ItemStack(Items.PLAYER_HEAD); + NbtCompound skullOwner = new NbtCompound(); + NbtHelper.writeGameProfile(skullOwner, playerFor.getGameProfile()); + stack.getOrCreateNbt().put("SkullOwner", skullOwner); + return stack; + } @Override public void readCustomDataFromNbt(NbtCompound nbt) { super.readCustomDataFromNbt(nbt); diff --git a/src/main/java/net/capozi/demise/common/entity/PlayerRemainsEntityRenderer.java b/src/main/java/net/capozi/demise/common/entity/PlayerRemainsEntityRenderer.java index 020d360..1849c21 100644 --- a/src/main/java/net/capozi/demise/common/entity/PlayerRemainsEntityRenderer.java +++ b/src/main/java/net/capozi/demise/common/entity/PlayerRemainsEntityRenderer.java @@ -29,16 +29,7 @@ public PlayerRemainsEntityRenderer(EntityRendererFactory.Context ctx) { super(ctx, new PlayerRemainsEntityModel<>(), 0.3f); } ItemRenderer itemRenderer = MinecraftClient.getInstance().getItemRenderer(); - public static ItemStack createPlayerHead(GameProfile profile) { - ItemStack stack = new ItemStack(Items.PLAYER_HEAD); - NbtCompound skullOwner = new NbtCompound(); - NbtHelper.writeGameProfile(skullOwner, profile); - stack.getOrCreateNbt().put("SkullOwner", skullOwner); - return stack; - } - public static ItemStack getHead(PlayerEntity player) { - return createPlayerHead(player.getGameProfile()); - } + @Override public void render(PlayerRemainsEntity entity, float yaw, float tickDelta, MatrixStack matrixStack, VertexConsumerProvider vertexConsumers, int light) { ItemStack stack = new ItemStack(Items.SKELETON_SKULL); @@ -48,12 +39,7 @@ public void render(PlayerRemainsEntity entity, float yaw, float tickDelta, Matri matrixStack.translate(0, (abs(sin((float)entity.age / 15) + 1) / 7), 0); matrixStack.multiply(RotationAxis.POSITIVE_Y.rotation((float)entity.age / 20)); if (entity.getWorld().getGameRules().getBoolean(GameruleRegistry.RENDER_AS_HEADS)) { - try { - ItemStack headStack = getHead(entity.playerFor); - itemRenderer.renderItem(headStack, ModelTransformationMode.GROUND, false, matrixStack, vertexConsumers, light, 0, itemRenderer.getModel(stack, entity.getWorld(), null, 0)); - } catch (Exception e) { - itemRenderer.renderItem(stack, ModelTransformationMode.GROUND, false, matrixStack, vertexConsumers, light, 0, itemRenderer.getModel(stack, entity.getWorld(), null, 0)); - } + itemRenderer.renderItem(entity.createPlayerHead(), ModelTransformationMode.GROUND, false, matrixStack, vertexConsumers, light, 0, itemRenderer.getModel(entity.createPlayerHead(), entity.getWorld(), null, 0)); } else { itemRenderer.renderItem(stack, ModelTransformationMode.GROUND, false, matrixStack, vertexConsumers, light, 0, itemRenderer.getModel(stack, entity.getWorld(), null, 0)); } From 2cab8c969eb914a1bdeba0559f168ca0ac19b489 Mon Sep 17 00:00:00 2001 From: Capozi Date: Thu, 22 Jan 2026 19:34:04 -0500 Subject: [PATCH 16/28] sync changes --- gradle.properties | 2 +- src/main/java/net/capozi/demise/Demise.java | 3 ++- .../java/net/capozi/demise/common/GameruleRegistry.java | 1 - .../capozi/demise/common/entity/PlayerRemainsEntity.java | 8 ++++---- .../common/entity/PlayerRemainsEntityRenderer.java | 9 +++------ 5 files changed, 10 insertions(+), 13 deletions(-) diff --git a/gradle.properties b/gradle.properties index 734e5b6..c3cda6c 100644 --- a/gradle.properties +++ b/gradle.properties @@ -10,7 +10,7 @@ loader_version=0.16.10 loom_version=1.10-SNAPSHOT # Mod Properties -mod_version=0.1.7-1.20.1 +mod_version=0.1.8-1.20.1 maven_group=net.capozi.demise archives_base_name=demsie diff --git a/src/main/java/net/capozi/demise/Demise.java b/src/main/java/net/capozi/demise/Demise.java index 9b2051b..6c5ba3a 100644 --- a/src/main/java/net/capozi/demise/Demise.java +++ b/src/main/java/net/capozi/demise/Demise.java @@ -1,5 +1,7 @@ package net.capozi.demise; +import com.mojang.serialization.Codec; +import com.mojang.serialization.codecs.RecordCodecBuilder; import net.capozi.demise.common.GameruleRegistry; import net.capozi.demise.common.entity.EntityTypeRegistry; import net.fabricmc.api.ModInitializer; @@ -10,7 +12,6 @@ public class Demise implements ModInitializer { public static final String MOD_ID = "demise"; public static final Logger LOGGER = LoggerFactory.getLogger(MOD_ID); - @Override public void onInitialize() { EntityTypeRegistry.register(); diff --git a/src/main/java/net/capozi/demise/common/GameruleRegistry.java b/src/main/java/net/capozi/demise/common/GameruleRegistry.java index cdaf9d6..4df9eaf 100644 --- a/src/main/java/net/capozi/demise/common/GameruleRegistry.java +++ b/src/main/java/net/capozi/demise/common/GameruleRegistry.java @@ -7,7 +7,6 @@ public class GameruleRegistry { public static final GameRules.Key SAVE_TRINKETS = GameRuleRegistry.register("saveTrinkets", GameRules.Category.PLAYER, GameRuleFactory.createBooleanRule(true)); public static final GameRules.Key CREATE_GRAVE = GameRuleRegistry.register("createGraves", GameRules.Category.PLAYER, GameRuleFactory.createBooleanRule(true)); - public static final GameRules.Key RENDER_AS_HEADS = GameRuleRegistry.register("render_graves_as_player_heads", GameRules.Category.PLAYER, GameRuleFactory.createBooleanRule(false)); public static void register() { diff --git a/src/main/java/net/capozi/demise/common/entity/PlayerRemainsEntity.java b/src/main/java/net/capozi/demise/common/entity/PlayerRemainsEntity.java index 1ae81f0..ca489e9 100644 --- a/src/main/java/net/capozi/demise/common/entity/PlayerRemainsEntity.java +++ b/src/main/java/net/capozi/demise/common/entity/PlayerRemainsEntity.java @@ -1,10 +1,14 @@ package net.capozi.demise.common.entity; import com.mojang.authlib.GameProfile; +import net.capozi.demise.common.GameruleRegistry; import net.minecraft.entity.*; import net.minecraft.entity.attribute.DefaultAttributeContainer; import net.minecraft.entity.attribute.EntityAttributes; import net.minecraft.entity.damage.DamageSource; +import net.minecraft.entity.data.DataTracker; +import net.minecraft.entity.data.TrackedData; +import net.minecraft.entity.data.TrackedDataHandlerRegistry; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.entity.player.PlayerInventory; import net.minecraft.entity.vehicle.VehicleInventory; @@ -205,10 +209,6 @@ public boolean isPushable() { public boolean isPushedByFluids() { return true; } - @Override - protected void initDataTracker() { - super.initDataTracker(); - } //region// No clue // @Override public @Nullable Identifier getLootTableId() { diff --git a/src/main/java/net/capozi/demise/common/entity/PlayerRemainsEntityRenderer.java b/src/main/java/net/capozi/demise/common/entity/PlayerRemainsEntityRenderer.java index 1849c21..ac68d1d 100644 --- a/src/main/java/net/capozi/demise/common/entity/PlayerRemainsEntityRenderer.java +++ b/src/main/java/net/capozi/demise/common/entity/PlayerRemainsEntityRenderer.java @@ -18,6 +18,7 @@ import net.minecraft.item.Items; import net.minecraft.nbt.NbtCompound; import net.minecraft.nbt.NbtHelper; +import net.minecraft.server.network.ServerPlayerEntity; import net.minecraft.util.Identifier; import net.minecraft.util.math.RotationAxis; import static java.lang.Math.abs; @@ -34,15 +35,11 @@ public PlayerRemainsEntityRenderer(EntityRendererFactory.Context ctx) { public void render(PlayerRemainsEntity entity, float yaw, float tickDelta, MatrixStack matrixStack, VertexConsumerProvider vertexConsumers, int light) { ItemStack stack = new ItemStack(Items.SKELETON_SKULL); matrixStack.push(); - matrixStack.scale(1.7f, 1.7f, 1.7f); + matrixStack.scale(1.5f, 1.5f, 1.5f); matrixStack.translate(0, 0.2, 0); matrixStack.translate(0, (abs(sin((float)entity.age / 15) + 1) / 7), 0); matrixStack.multiply(RotationAxis.POSITIVE_Y.rotation((float)entity.age / 20)); - if (entity.getWorld().getGameRules().getBoolean(GameruleRegistry.RENDER_AS_HEADS)) { - itemRenderer.renderItem(entity.createPlayerHead(), ModelTransformationMode.GROUND, false, matrixStack, vertexConsumers, light, 0, itemRenderer.getModel(entity.createPlayerHead(), entity.getWorld(), null, 0)); - } else { - itemRenderer.renderItem(stack, ModelTransformationMode.GROUND, false, matrixStack, vertexConsumers, light, 0, itemRenderer.getModel(stack, entity.getWorld(), null, 0)); - } + itemRenderer.renderItem(stack, ModelTransformationMode.GROUND, false, matrixStack, vertexConsumers, light, 0, itemRenderer.getModel(stack, entity.getWorld(), null, 0)); matrixStack.pop(); if(entity.getCustomName() != null) { this.renderLabelIfPresent(entity, entity.getCustomName(), matrixStack, vertexConsumers, light); From 0348b6ee7be076b665fb7a2e038f55f01f39fc3e Mon Sep 17 00:00:00 2001 From: Capozi Date: Sat, 24 Jan 2026 23:32:30 -0500 Subject: [PATCH 17/28] Update PlayerRemainsEntity.java --- .../common/entity/PlayerRemainsEntity.java | 37 ++++++++++++++++--- 1 file changed, 31 insertions(+), 6 deletions(-) diff --git a/src/main/java/net/capozi/demise/common/entity/PlayerRemainsEntity.java b/src/main/java/net/capozi/demise/common/entity/PlayerRemainsEntity.java index ca489e9..428c523 100644 --- a/src/main/java/net/capozi/demise/common/entity/PlayerRemainsEntity.java +++ b/src/main/java/net/capozi/demise/common/entity/PlayerRemainsEntity.java @@ -19,6 +19,8 @@ import net.minecraft.screen.GenericContainerScreenHandler; import net.minecraft.screen.ScreenHandler; import net.minecraft.server.network.ServerPlayerEntity; +import net.minecraft.sound.SoundCategory; +import net.minecraft.sound.SoundEvents; import net.minecraft.util.ActionResult; import net.minecraft.util.Arm; import net.minecraft.util.Hand; @@ -55,13 +57,12 @@ public static DefaultAttributeContainer.Builder createAttributes() { .add(EntityAttributes.GENERIC_KNOCKBACK_RESISTANCE, 100f) .add(EntityAttributes.GENERIC_FOLLOW_RANGE, 0f); } - public ItemStack createPlayerHead() { - ItemStack stack = new ItemStack(Items.PLAYER_HEAD); - NbtCompound skullOwner = new NbtCompound(); - NbtHelper.writeGameProfile(skullOwner, playerFor.getGameProfile()); - stack.getOrCreateNbt().put("SkullOwner", skullOwner); - return stack; + + @Override + public boolean isGlowing() { + return true; } + @Override public void readCustomDataFromNbt(NbtCompound nbt) { super.readCustomDataFromNbt(nbt); @@ -135,6 +136,30 @@ public void addInventoryStack(ItemStack stack) { } } @Override + public void onPlayerCollision(PlayerEntity player) { + if (this.getWorld().isClient) return; + if (!player.getGameProfile().getName().equals(playerFor.getEntityName())) return; + + for (int i = 0; i < inventory.size(); i++) { + if (!player.getInventory().insertStack(inventory.get(i))) { + player.dropItem(inventory.get(i), false); + } else { + this.getWorld().playSound( + null, + player.getX(), + player.getY(), + player.getZ(), + SoundEvents.ENTITY_ITEM_PICKUP, + SoundCategory.PLAYERS, + 0.2F, + (player.getSoundPitch() - player.getSoundPitch()) * 0.7F + 1.0F * 2.0F + ); + } + } + + discard(); + } + @Override public DefaultedList getInventory() { return inventory; } From 4a735026ebdab94ddff708b3da4fcab19e0e80af Mon Sep 17 00:00:00 2001 From: Capozi Date: Sun, 1 Feb 2026 11:59:36 -0500 Subject: [PATCH 18/28] Update gradle.properties --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index c3cda6c..cab31d2 100644 --- a/gradle.properties +++ b/gradle.properties @@ -12,7 +12,7 @@ loom_version=1.10-SNAPSHOT # Mod Properties mod_version=0.1.8-1.20.1 maven_group=net.capozi.demise -archives_base_name=demsie +archives_base_name=demise # Dependencies fabric_version=0.92.5+1.20.1 From 8916b71452dcb713bf1e62e3f61e1ec8369906eb Mon Sep 17 00:00:00 2001 From: Capozi Date: Mon, 9 Feb 2026 11:22:15 -0500 Subject: [PATCH 19/28] Update fabric.mod.json --- src/main/resources/fabric.mod.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index 13f1f21..cd416ce 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -32,7 +32,8 @@ "fabricloader": ">=0.16.10", "minecraft": "~1.20.1", "java": ">=17", - "fabric-api": "*" + "fabric-api": "*", + "dotzip": ">=1.1.3.1a" }, "suggests": { "another-mod": "*" From ae42fccac9b1aa4619df4f4f9499427d0a816887 Mon Sep 17 00:00:00 2001 From: Capozi Date: Sat, 14 Feb 2026 00:13:41 -0500 Subject: [PATCH 20/28] Update PlayerEntityMixin.java --- src/main/java/net/capozi/demise/mixin/PlayerEntityMixin.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main/java/net/capozi/demise/mixin/PlayerEntityMixin.java b/src/main/java/net/capozi/demise/mixin/PlayerEntityMixin.java index 06f2170..4bf528b 100644 --- a/src/main/java/net/capozi/demise/mixin/PlayerEntityMixin.java +++ b/src/main/java/net/capozi/demise/mixin/PlayerEntityMixin.java @@ -2,6 +2,7 @@ import net.capozi.demise.common.GameruleRegistry; import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.world.GameRules; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; @@ -11,6 +12,7 @@ public class PlayerEntityMixin { @Inject(method = "dropInventory", at = @At("HEAD"), cancellable = true) public void demise$dropInventory(CallbackInfo ci) { + if (((PlayerEntity)(Object)this).getWorld().getGameRules().getBoolean(GameRules.KEEP_INVENTORY)) return; if(((PlayerEntity)(Object)this).getWorld().getGameRules().getBoolean(GameruleRegistry.CREATE_GRAVE)) ci.cancel(); } } From cc1767e1685b35c281d6119b712931688ab71171 Mon Sep 17 00:00:00 2001 From: Capozi Date: Sat, 18 Apr 2026 01:55:04 -0400 Subject: [PATCH 21/28] Update fabric.mod.json --- src/main/resources/fabric.mod.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index cd416ce..354a400 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -2,7 +2,7 @@ "schemaVersion": 1, "id": "demise", "version": "${version}", - "name": "demsie", + "name": "§4Demise", "description": "Death is an Inconvenience! Why not Fix That?", "authors": [ "Capozi" From 797f5bed030c3ac0bc0939b487dd0a37fc8a15ca Mon Sep 17 00:00:00 2001 From: Capozi Date: Sat, 18 Apr 2026 19:35:48 -0400 Subject: [PATCH 22/28] build,gradle --- build.gradle | 2 ++ gradle.properties | 3 ++- src/main/resources/fabric.mod.json | 3 +-- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/build.gradle b/build.gradle index 6a02bfb..ec402f9 100644 --- a/build.gradle +++ b/build.gradle @@ -25,6 +25,7 @@ repositories { maven { url = "https://api.modrinth.com/maven" } + maven {url = "https://api.modrinth.com/maven" } } fabricApi { @@ -38,6 +39,7 @@ dependencies { minecraft "com.mojang:minecraft:${project.minecraft_version}" mappings "net.fabricmc:yarn:${project.yarn_mappings}:v2" modImplementation "net.fabricmc:fabric-loader:${project.loader_version}" + modImplementation "maven.modrinth:dotzip:${project.dotzip_version}" // Fabric API. This is technically optional, but you probably want it anyway. modImplementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}" diff --git a/gradle.properties b/gradle.properties index cab31d2..f9623a6 100644 --- a/gradle.properties +++ b/gradle.properties @@ -19,4 +19,5 @@ fabric_version=0.92.5+1.20.1 trinkets_version=3.7.2 # Cardinal Components -cca_version = 5.0.2 \ No newline at end of file +cca_version = 5.0.2 +dotzip_version=1.2.2.1d-1.20.1 \ No newline at end of file diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index 354a400..65ecb96 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -32,8 +32,7 @@ "fabricloader": ">=0.16.10", "minecraft": "~1.20.1", "java": ">=17", - "fabric-api": "*", - "dotzip": ">=1.1.3.1a" + "fabric-api": "*" }, "suggests": { "another-mod": "*" From f78c93453706f63ce037e0b27f14a5b4e26305ed Mon Sep 17 00:00:00 2001 From: Capozi Date: Sat, 18 Apr 2026 21:04:40 -0400 Subject: [PATCH 23/28] Update PlayerRemainsEntity.java --- .../net/capozi/demise/common/entity/PlayerRemainsEntity.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/capozi/demise/common/entity/PlayerRemainsEntity.java b/src/main/java/net/capozi/demise/common/entity/PlayerRemainsEntity.java index 428c523..d18ec03 100644 --- a/src/main/java/net/capozi/demise/common/entity/PlayerRemainsEntity.java +++ b/src/main/java/net/capozi/demise/common/entity/PlayerRemainsEntity.java @@ -138,8 +138,8 @@ public void addInventoryStack(ItemStack stack) { @Override public void onPlayerCollision(PlayerEntity player) { if (this.getWorld().isClient) return; + if (this.playerFor == null) return; if (!player.getGameProfile().getName().equals(playerFor.getEntityName())) return; - for (int i = 0; i < inventory.size(); i++) { if (!player.getInventory().insertStack(inventory.get(i))) { player.dropItem(inventory.get(i), false); From a17a5549a2b40a650b9d394e152600232b649b46 Mon Sep 17 00:00:00 2001 From: Capozi Date: Sat, 18 Apr 2026 21:05:01 -0400 Subject: [PATCH 24/28] Update gradle.properties --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index f9623a6..15696f0 100644 --- a/gradle.properties +++ b/gradle.properties @@ -10,7 +10,7 @@ loader_version=0.16.10 loom_version=1.10-SNAPSHOT # Mod Properties -mod_version=0.1.8-1.20.1 +mod_version=0.1.8b-1.20.1 maven_group=net.capozi.demise archives_base_name=demise From f4c8fb2d773d35ec63d1a8751e3416881a70ca83 Mon Sep 17 00:00:00 2001 From: Capozi Date: Mon, 1 Jun 2026 18:09:50 -0400 Subject: [PATCH 25/28] hopefull fixing for the last time --- gradle.properties | 2 +- .../common/entity/PlayerRemainsEntity.java | 43 ++++++++---------- .../demise/mixin/LivingEntityMixin.java | 14 +++--- .../demise/mixin/PlayerEntityMixin.java | 2 +- src/main/resources/assets/demise/icon.png | Bin 3420 -> 0 bytes src/main/resources/fabric.mod.json | 1 - 6 files changed, 26 insertions(+), 36 deletions(-) delete mode 100644 src/main/resources/assets/demise/icon.png diff --git a/gradle.properties b/gradle.properties index 15696f0..0638b8a 100644 --- a/gradle.properties +++ b/gradle.properties @@ -10,7 +10,7 @@ loader_version=0.16.10 loom_version=1.10-SNAPSHOT # Mod Properties -mod_version=0.1.8b-1.20.1 +mod_version=0.1.9a-1.20.1-indev maven_group=net.capozi.demise archives_base_name=demise diff --git a/src/main/java/net/capozi/demise/common/entity/PlayerRemainsEntity.java b/src/main/java/net/capozi/demise/common/entity/PlayerRemainsEntity.java index d18ec03..e241aec 100644 --- a/src/main/java/net/capozi/demise/common/entity/PlayerRemainsEntity.java +++ b/src/main/java/net/capozi/demise/common/entity/PlayerRemainsEntity.java @@ -2,6 +2,8 @@ import com.mojang.authlib.GameProfile; import net.capozi.demise.common.GameruleRegistry; +import net.minecraft.block.BlockState; +import net.minecraft.block.NetherPortalBlock; import net.minecraft.entity.*; import net.minecraft.entity.attribute.DefaultAttributeContainer; import net.minecraft.entity.attribute.EntityAttributes; @@ -35,7 +37,7 @@ public class PlayerRemainsEntity extends LivingEntity implements VehicleInventory { public PlayerEntity playerFor; - private static final int MAX_SIZE = 27*2; // Maximum inventory size + private static final int MAX_SIZE = 27*2; private DefaultedList inventory; protected PlayerRemainsEntity(EntityType entityType, World world) { super(entityType, world); @@ -80,22 +82,6 @@ public boolean damage(DamageSource source, float amount) { if(getEntityWorld().isClient) return true; this.dropInventory(); this.clearInventory(); - Vec3d center = this.getPos(); - double radius = 10.0; - Box box = new Box( - center.x - radius, center.y - (radius/2), center.z - radius, - center.x + radius, center.y + (radius/2), center.z + radius - ); - List entities = this.getWorld().getEntitiesByClass( - LivingEntity.class, - box, - e -> e.squaredDistanceTo(center) <= radius * radius - ); - for (LivingEntity entity : entities) { - if (entity instanceof ServerPlayerEntity playerEntity) { - playerEntity.closeHandledScreen(); - } - } this.discard(); return true; } @@ -116,8 +102,14 @@ public ActionResult interact(PlayerEntity player, Hand hand) { return ActionResult.PASS; } this.open(player); - return ActionResult.SUCCESS; // Prevent further interaction processing + return ActionResult.SUCCESS; } + + @Override + public boolean canUsePortals() { + return false; + } + @Override protected void dropInventory() { for (ItemStack stack : inventory) { @@ -135,14 +127,15 @@ public void addInventoryStack(ItemStack stack) { } } } + @Override public void onPlayerCollision(PlayerEntity player) { if (this.getWorld().isClient) return; if (this.playerFor == null) return; - if (!player.getGameProfile().getName().equals(playerFor.getEntityName())) return; - for (int i = 0; i < inventory.size(); i++) { - if (!player.getInventory().insertStack(inventory.get(i))) { - player.dropItem(inventory.get(i), false); + if (player != playerFor) return; + for (ItemStack stack : inventory) { + if (!player.getInventory().insertStack(stack)) { + player.dropItem(stack, true); } else { this.getWorld().playSound( null, @@ -156,7 +149,7 @@ public void onPlayerCollision(PlayerEntity player) { ); } } - + this.clear(); discard(); } @Override @@ -228,11 +221,11 @@ public Arm getMainArm() { } @Override public boolean isPushable() { - return true; + return false; } @Override public boolean isPushedByFluids() { - return true; + return false; } //region// No clue // @Override diff --git a/src/main/java/net/capozi/demise/mixin/LivingEntityMixin.java b/src/main/java/net/capozi/demise/mixin/LivingEntityMixin.java index 9b61a0e..1e1f10c 100644 --- a/src/main/java/net/capozi/demise/mixin/LivingEntityMixin.java +++ b/src/main/java/net/capozi/demise/mixin/LivingEntityMixin.java @@ -20,9 +20,6 @@ @Mixin(LivingEntity.class) public abstract class LivingEntityMixin { - - @Shadow protected abstract void consumeItem(); - @Inject(method = "getOffHandStack", at = @At("HEAD"), cancellable = true) public void demise$getOffHandStack(CallbackInfoReturnable cir) { if((LivingEntity)(Object)this instanceof PlayerEntity player) { @@ -46,7 +43,6 @@ public abstract class LivingEntityMixin { for(int i = 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 diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index 65ecb96..bcc32f6 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -8,7 +8,6 @@ "Capozi" ], "contact": { - "homepage": "https://fabricmc.net/", "sources": "https://github.com/FabricMC/fabric-example-mod" }, "license": "GPL v3.0", From ac2e31af4257f5ba70a97e051bfa16c7c0d4ca18 Mon Sep 17 00:00:00 2001 From: Capozi Date: Sat, 6 Jun 2026 19:11:45 -0400 Subject: [PATCH 26/28] Update PlayerRemainsEntity.java --- .../demise/common/entity/PlayerRemainsEntity.java | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/src/main/java/net/capozi/demise/common/entity/PlayerRemainsEntity.java b/src/main/java/net/capozi/demise/common/entity/PlayerRemainsEntity.java index e241aec..8a8b4d5 100644 --- a/src/main/java/net/capozi/demise/common/entity/PlayerRemainsEntity.java +++ b/src/main/java/net/capozi/demise/common/entity/PlayerRemainsEntity.java @@ -1,26 +1,17 @@ package net.capozi.demise.common.entity; -import com.mojang.authlib.GameProfile; -import net.capozi.demise.common.GameruleRegistry; -import net.minecraft.block.BlockState; -import net.minecraft.block.NetherPortalBlock; import net.minecraft.entity.*; import net.minecraft.entity.attribute.DefaultAttributeContainer; import net.minecraft.entity.attribute.EntityAttributes; import net.minecraft.entity.damage.DamageSource; -import net.minecraft.entity.data.DataTracker; -import net.minecraft.entity.data.TrackedData; -import net.minecraft.entity.data.TrackedDataHandlerRegistry; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.entity.player.PlayerInventory; import net.minecraft.entity.vehicle.VehicleInventory; import net.minecraft.inventory.Inventories; import net.minecraft.item.*; import net.minecraft.nbt.NbtCompound; -import net.minecraft.nbt.NbtHelper; import net.minecraft.screen.GenericContainerScreenHandler; import net.minecraft.screen.ScreenHandler; -import net.minecraft.server.network.ServerPlayerEntity; import net.minecraft.sound.SoundCategory; import net.minecraft.sound.SoundEvents; import net.minecraft.util.ActionResult; @@ -28,12 +19,9 @@ import net.minecraft.util.Hand; import net.minecraft.util.Identifier; import net.minecraft.util.collection.DefaultedList; -import net.minecraft.util.math.Box; -import net.minecraft.util.math.Vec3d; import net.minecraft.world.World; import org.jetbrains.annotations.Nullable; import java.util.Collections; -import java.util.List; public class PlayerRemainsEntity extends LivingEntity implements VehicleInventory { public PlayerEntity playerFor; From e8df0a3b620f3231c91e72d59e60d8187675ec3f Mon Sep 17 00:00:00 2001 From: Capozi Date: Sat, 6 Jun 2026 19:22:20 -0400 Subject: [PATCH 27/28] dotzip dependency --- build.gradle | 3 +-- libs/dotzip-1.2.3.0a-1.20.1.jar | Bin 0 -> 74284 bytes .../common/entity/PlayerRemainsEntity.java | 25 ------------------ 3 files changed, 1 insertion(+), 27 deletions(-) create mode 100644 libs/dotzip-1.2.3.0a-1.20.1.jar diff --git a/build.gradle b/build.gradle index ec402f9..0ef7ad8 100644 --- a/build.gradle +++ b/build.gradle @@ -39,12 +39,11 @@ dependencies { minecraft "com.mojang:minecraft:${project.minecraft_version}" mappings "net.fabricmc:yarn:${project.yarn_mappings}:v2" modImplementation "net.fabricmc:fabric-loader:${project.loader_version}" - modImplementation "maven.modrinth:dotzip:${project.dotzip_version}" // Fabric API. This is technically optional, but you probably want it anyway. modImplementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}" include modImplementation("dev.emi:trinkets:${project.trinkets_version}") - + modImplementation fileTree(dir: 'libs', include: ['*.jar']) } processResources { diff --git a/libs/dotzip-1.2.3.0a-1.20.1.jar b/libs/dotzip-1.2.3.0a-1.20.1.jar new file mode 100644 index 0000000000000000000000000000000000000000..29eb4468c34e7564a73730357cfcf855b3bc97f3 GIT binary patch literal 74284 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

`BF?j3qx^w`#_Qeq%cp^ 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

)LUjJ6 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 literal 0 HcmV?d00001 diff --git a/src/main/java/net/capozi/demise/common/entity/PlayerRemainsEntity.java b/src/main/java/net/capozi/demise/common/entity/PlayerRemainsEntity.java index 8a8b4d5..259e46b 100644 --- a/src/main/java/net/capozi/demise/common/entity/PlayerRemainsEntity.java +++ b/src/main/java/net/capozi/demise/common/entity/PlayerRemainsEntity.java @@ -115,31 +115,6 @@ public void addInventoryStack(ItemStack stack) { } } } - - @Override - public void onPlayerCollision(PlayerEntity player) { - if (this.getWorld().isClient) return; - if (this.playerFor == null) return; - if (player != playerFor) return; - for (ItemStack stack : inventory) { - if (!player.getInventory().insertStack(stack)) { - player.dropItem(stack, true); - } else { - this.getWorld().playSound( - null, - player.getX(), - player.getY(), - player.getZ(), - SoundEvents.ENTITY_ITEM_PICKUP, - SoundCategory.PLAYERS, - 0.2F, - (player.getSoundPitch() - player.getSoundPitch()) * 0.7F + 1.0F * 2.0F - ); - } - } - this.clear(); - discard(); - } @Override public DefaultedList getInventory() { return inventory; From 45377455b4cb5ec4650ca80cda931434cc187727 Mon Sep 17 00:00:00 2001 From: Capozi Date: Sat, 6 Jun 2026 19:38:31 -0400 Subject: [PATCH 28/28] Update gradle.properties --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 0638b8a..f693c59 100644 --- a/gradle.properties +++ b/gradle.properties @@ -10,7 +10,7 @@ loader_version=0.16.10 loom_version=1.10-SNAPSHOT # Mod Properties -mod_version=0.1.9a-1.20.1-indev +mod_version=0.1.9a-1.20.1 maven_group=net.capozi.demise archives_base_name=demise