From 9a5614de6549a91b6d2e1b68a1df17eb9a05c019 Mon Sep 17 00:00:00 2001 From: DBotThePony Date: Sun, 16 Mar 2025 17:29:13 +0700 Subject: [PATCH 1/2] Don't drop experience capsules when keepInventory is enabled --- .../java/ru/dbotthepony/mc/otm/mixin/MixinLivingEntity.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/ru/dbotthepony/mc/otm/mixin/MixinLivingEntity.java b/src/main/java/ru/dbotthepony/mc/otm/mixin/MixinLivingEntity.java index 5ddfd3c17..23a6aafc4 100644 --- a/src/main/java/ru/dbotthepony/mc/otm/mixin/MixinLivingEntity.java +++ b/src/main/java/ru/dbotthepony/mc/otm/mixin/MixinLivingEntity.java @@ -3,6 +3,7 @@ package ru.dbotthepony.mc.otm.mixin; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.player.Player; +import net.minecraft.world.level.GameRules; import net.neoforged.neoforge.event.EventHooks; import org.jetbrains.annotations.Nullable; import org.spongepowered.asm.mixin.Mixin; @@ -28,7 +29,7 @@ public class MixinLivingEntity { at = @At("HEAD"), cancellable = true) public void dropExperience(@Nullable Entity killer, CallbackInfo hook) { - if (((Object) this) instanceof Player player && ServerConfig.INSTANCE.getDROP_EXPERIENCE_CAPSULES()) { + if (((Object) this) instanceof Player player && ServerConfig.INSTANCE.getDROP_EXPERIENCE_CAPSULES() && !player.level().getGameRules().getBoolean(GameRules.RULE_KEEPINVENTORY)) { hook.cancel(); var android = ((IMatteryPlayer) player).getOtmPlayer(); From 5b68a6c7ba4857cb1e0eba73d6b8d4aceaae5df5 Mon Sep 17 00:00:00 2001 From: DBotThePony Date: Mon, 17 Mar 2025 11:23:34 +0700 Subject: [PATCH 2/2] Add "quick move" to/from storage graphics --- .../mc/otm/client/render/WidgetLocation.kt | 2 +- .../mc/otm/client/render/Widgets18.kt | 8 +++++++- .../textures/gui/widgets/storage_controls.png | Bin 1071 -> 1371 bytes .../textures/gui/widgets/storage_controls.xcf | Bin 11478 -> 15956 bytes 4 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/client/render/WidgetLocation.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/client/render/WidgetLocation.kt index 76ca2623a..bbd38299b 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/client/render/WidgetLocation.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/client/render/WidgetLocation.kt @@ -5,7 +5,7 @@ import ru.dbotthepony.mc.otm.client.render.sprites.MatteryAtlas import ru.dbotthepony.mc.otm.core.ResourceLocation object WidgetLocation { - val STORAGE_CONTROLS = MatteryAtlas(ResourceLocation(OverdriveThatMatters.MOD_ID, "textures/gui/widgets/storage_controls.png"), 90f, 72f) + val STORAGE_CONTROLS = MatteryAtlas(ResourceLocation(OverdriveThatMatters.MOD_ID, "textures/gui/widgets/storage_controls.png"), 90f, 90f) val WIDGET_18 = MatteryAtlas(ResourceLocation(OverdriveThatMatters.MOD_ID, "textures/gui/widgets/widget_18.png"), 72f, 72f) val WIDGET_15 = MatteryAtlas(ResourceLocation(OverdriveThatMatters.MOD_ID, "textures/gui/widgets/widget_15.png"), 60f, 60f) val WIDGET_8 = MatteryAtlas(ResourceLocation(OverdriveThatMatters.MOD_ID, "textures/gui/widgets/widget_8.png"), 64f, 32f) diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/client/render/Widgets18.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/client/render/Widgets18.kt index 06bab6193..21aa5a69c 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/client/render/Widgets18.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/client/render/Widgets18.kt @@ -6,7 +6,7 @@ import ru.dbotthepony.mc.otm.core.immutableMap import ru.dbotthepony.mc.otm.core.math.RelativeSide object Widgets18 { - private val storageGrid = WidgetLocation.STORAGE_CONTROLS.grid(rows = 4, columns = 5) + private val storageGrid = WidgetLocation.STORAGE_CONTROLS.grid(rows = 5, columns = 5) val SORT_DESCENDING = storageGrid.next() val SORT_ASCENDING = storageGrid.next() @@ -24,6 +24,12 @@ object Widgets18 { val PLAY = storageGrid.next() val STOP = storageGrid.next() val SORT_NOW = storageGrid.next() + val MOVE_EVERYTHING_TO_STORAGE = storageGrid.next() + val MOVE_EVERYTHING_FROM_STORAGE = storageGrid.next() + val RESTOCK_TO_STORAGE = storageGrid.next() + val RESTOCK_FROM_STORAGE = storageGrid.next() + val RESTOCK_WITH_MOVE_TO_STORAGE = storageGrid.next() + val RESTOCK_WITH_MOVE_FROM_STORAGE = storageGrid.next() private val miscGrid = WidgetLocation.WIDGET_18.grid(4, 4) diff --git a/src/main/resources/assets/overdrive_that_matters/textures/gui/widgets/storage_controls.png b/src/main/resources/assets/overdrive_that_matters/textures/gui/widgets/storage_controls.png index 0c33af3f2bb17a5f806efa7c82d70f66f9efde76..054f10becee5be6977e92b4c905e07d6cb286bcb 100644 GIT binary patch delta 1312 zcmV+*1>gFw2-^yf7YbSk1^@s6IH*Aaks%x&P!xqvQ>7x6B6bjU$WWc^q9Tr^ibb$c z+6t{Yn7ol&Ab#<}FMz%#=}Ha$-qCKgLwEO#+08!GV(aYRuy%6}JfE-Re3IIGn zxk5(IQ7cXdAe=?r8EJaJd5v zKk1SoIe(I$N+=eA_cQvYJTP<%^sl*dYoFuv0m#yTS z5r3&%o*JJMG5hgUdz5h;Tiok&Bj&sHV)juj4u%I}h%{X!DSo1cAXsyBr z1q%QG00000&_GL5O?D4@Se58d%^$lJL0UaV9CewbF4^lsS^*MAHE005x!8dJLTPCa*tx;VXFub_&#Uaz)y zsv{i7QqRJWJ}cwz@1N$^j}K#vF`wUm%;o;hmYz9hp*j9IiIb^H?`TZw^CMjDZ}VmT zU(7{O-%H8n_~WF`#vDt{fSgmM8WF8|s#H?^styrrQaXO+~b!j3_NA%Gy9+zxHG_%7Jde8|Xng&*fMf%_QdU*#~ zRxwAH>_oKaqIXMlsYOh>s3M}d`AYa7eGt*a>QbYmKZU%LMla<($TB5ahE4;4=AO2K4+Pb7{q-LQx^i03vfo%23%h?OOU_?&pkpbHW| za$R=$jdRIifoFz{Y&uRHA{I+sEO#+08!GWEaad6`%6}JfE-Re3IIGniARSlF3y8BgX=2P$4;f@IUz7TeCPb z?Is0dK<|rfe@p;@U7*#l?eAmTZk+)BXW&Zf_-jpI{*&}ZM++YTL)*Z`bw`u;fXf|V zwQCxAr+sAAl_NYWW5@I0Pn3l)dip?!NB6{ae%S z-w$G{}w{XfO3AvD5g{&M&U0 zcYph2j!`Lz=vuT}R++?JB^}Z%qxbSV`qvV4wpzN6S+jJcgOM&lsiv0nRYOwA&O)+< zr?{F-Xr#hIoW!R^I>ZGF#ffainWbabZ4J?0g%1S_000000JtERmZY@N{ldVf#ir!}Z*h*Gk=$(OVz^ET!gS(-j{&5x!* zbW4pcHTktfX#BLE)UX*kr*)bS&~-Ds6Nx4HJKB_1LmV;Sv*Ud)4Ln{s@bDu&Wx3?4 z!c!|i>F*H=eK%`!dIxm+O$iPF004OBk5~Cw6`M4b@gk|Ux83^TuKM7chLEeto_`@9 zb|w0(<}dvf!CFbJOt$65|E4J|JsUx*S9&fH{rCDQWczQ1chKTl#=6~QX)c}KdC9{H zWcQY`ZS@JPGRDoC$ZJj<{!QfSig8pR47=AcV`N*$WU-5PuKs5F@XH)!S^q7&;+_Ej z002A-UMCvBSb{_LAfh3AAkmOLfIDa^tAP;>*^NYN@a9nP}u-U_?Xq gKn+a diff --git a/src/main/resources/assets/overdrive_that_matters/textures/gui/widgets/storage_controls.xcf b/src/main/resources/assets/overdrive_that_matters/textures/gui/widgets/storage_controls.xcf index 894ea7b4b51d74b4b16bcdc5200851e7e5f64c4b..3dbdd5d0e433eb90145f6929a9148a7ce041b823 100644 GIT binary patch literal 15956 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 W^S>(jxWhtg85{QL);jF$RR0Clymbly delta 676 zcmcaob1ia$sFVi-1WW@`fDtX@(#lLsJgRWrJdR-9JdvBv%f>M?@$ZDo z@LvUM=YI>cJVvQ*^9w~UCMKbMFhz_)lP?O2GYNg#oT0LliAi)VOoB=DBuF=t=)=w7 z>a&=bBx>O@5;K8JamJ0C)wQ-WF-d2^C8XOxS~#WW!7Pl|%blE{mjl9^6ZDc8ndJQ7 ziseB1#F*roHviCMiqGdR&QbTgkN2NRR#BDf+=P}qnuX