From 11e66d50a4c8de53b574057c613384c2587c0447 Mon Sep 17 00:00:00 2001 From: DBotThePony Date: Tue, 2 Jan 2024 00:53:33 +0700 Subject: [PATCH] Make main source set compile against 1.19.2 --- .../mc/otm/OverdriveThatMatters.java | 32 ++- .../mc/otm/client/model/ExosuitModel.java | 3 - .../mixin/MixinAbstractHurtingProjectile.java | 3 +- .../mc/otm/mixin/MixinGameRenderer.java | 5 +- .../mc/otm/core/util/ItemSorter.kt | 23 +- .../mc/otm/registry/MCreativeTabs.kt | 218 ++++++++---------- 6 files changed, 143 insertions(+), 141 deletions(-) diff --git a/src/main/java/ru/dbotthepony/mc/otm/OverdriveThatMatters.java b/src/main/java/ru/dbotthepony/mc/otm/OverdriveThatMatters.java index 424e15699..423b89f6d 100644 --- a/src/main/java/ru/dbotthepony/mc/otm/OverdriveThatMatters.java +++ b/src/main/java/ru/dbotthepony/mc/otm/OverdriveThatMatters.java @@ -2,8 +2,11 @@ package ru.dbotthepony.mc.otm; import kotlin.KotlinVersion; import net.minecraft.MethodsReturnNonnullByDefault; +import net.minecraft.core.NonNullList; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.Entity; +import net.minecraft.world.item.CreativeModeTab; +import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.crafting.Ingredient; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraftforge.api.distmarker.Dist; @@ -84,14 +87,38 @@ public final class OverdriveThatMatters { } } + public final CreativeModeTab CREATIVE_TAB = new CreativeModeTab("otm") { + @Override + public ItemStack makeIcon() { + return new ItemStack(MItems.INSTANCE.getBATTERY_CREATIVE(), 1); + } + + @Override + public void fillItemList(NonNullList p_40778_) { + MCreativeTabsKt.getMainTabContents().fillIn(p_40778_); + } + }; + + public final CreativeModeTab CREATIVE_TAB_DECORATIVE = new CreativeModeTab("otm_decorative") { + @Override + public ItemStack makeIcon() { + return new ItemStack(MRegistry.INSTANCE.getVENT().getItem(), 1); + } + + @Override + public void fillItemList(NonNullList p_40778_) { + MCreativeTabsKt.getDecorativeTabContents().fillIn(p_40778_); + } + }; + public static OverdriveThatMatters INSTANCE; public static ResourceLocation loc(String path) { return new ResourceLocation(MOD_ID, path); } private static void checkIfKotlinIsInstalled() { - if (!KotlinVersion.CURRENT.isAtLeast(1, 9, 0)) { - throw new UnsupportedClassVersionError("Installed kotlin version is " + KotlinVersion.CURRENT + ", when at least 1.9.0 is required."); + if (!KotlinVersion.CURRENT.isAtLeast(1, 8, 0)) { + throw new UnsupportedClassVersionError("Installed kotlin version is " + KotlinVersion.CURRENT + ", when at least 1.8.0 is required."); } } @@ -135,7 +162,6 @@ public final class OverdriveThatMatters { modBus.addListener(EventPriority.NORMAL, AndroidAbilityKeyMapping.INSTANCE::register); modBus.addListener(EventPriority.NORMAL, TritaniumArmorModel::register); modBus.addListener(EventPriority.NORMAL, GravitationStabilizerModel::register); - modBus.addListener(EventPriority.NORMAL, MCreativeTabs.INSTANCE::register); modBus.addListener(EventPriority.NORMAL, BatteryBankRenderer.Companion::onRegisterAdditionalModels); modBus.addListener(EventPriority.NORMAL, MatterBatteryBankRenderer.Companion::onRegisterAdditionalModels); diff --git a/src/main/java/ru/dbotthepony/mc/otm/client/model/ExosuitModel.java b/src/main/java/ru/dbotthepony/mc/otm/client/model/ExosuitModel.java index 3fef0651e..03f095fcb 100644 --- a/src/main/java/ru/dbotthepony/mc/otm/client/model/ExosuitModel.java +++ b/src/main/java/ru/dbotthepony/mc/otm/client/model/ExosuitModel.java @@ -21,11 +21,8 @@ import net.minecraft.client.renderer.entity.layers.RenderLayer; import net.minecraft.client.renderer.entity.player.PlayerRenderer; import net.minecraft.resources.ResourceLocation; import net.minecraftforge.client.event.RenderPlayerEvent; -import org.joml.Vector3f; -import org.joml.Vector4f; import ru.dbotthepony.mc.otm.OverdriveThatMatters; import ru.dbotthepony.mc.otm.capability.MatteryCapability; -import ru.dbotthepony.mc.otm.network.SmokeParticlesPacket; import javax.annotation.Nonnull; import java.util.Set; diff --git a/src/main/java/ru/dbotthepony/mc/otm/mixin/MixinAbstractHurtingProjectile.java b/src/main/java/ru/dbotthepony/mc/otm/mixin/MixinAbstractHurtingProjectile.java index aa61faf9a..ee3d5dccd 100644 --- a/src/main/java/ru/dbotthepony/mc/otm/mixin/MixinAbstractHurtingProjectile.java +++ b/src/main/java/ru/dbotthepony/mc/otm/mixin/MixinAbstractHurtingProjectile.java @@ -3,6 +3,7 @@ package ru.dbotthepony.mc.otm.mixin; import net.minecraft.sounds.SoundSource; import net.minecraft.world.damagesource.DamageSource; import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.player.Player; import net.minecraft.world.entity.projectile.AbstractHurtingProjectile; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; @@ -29,7 +30,7 @@ public class MixinAbstractHurtingProjectile { AbstractHurtingProjectile proj = (AbstractHurtingProjectile)(Object)this; if (cap.isAndroid() && proj.getOwner() != entity) { - entity.level.playSound(entity, proj.blockPosition(), MSoundEvents.INSTANCE.getANDROID_PROJ_PARRY(), SoundSource.PLAYERS, 1.0f, 0.95f + entity.level.random.nextFloat() * 0.1f); + entity.level.playSound((Player) entity, proj.blockPosition(), MSoundEvents.INSTANCE.getANDROID_PROJ_PARRY(), SoundSource.PLAYERS, 1.0f, 0.95f + entity.level.random.nextFloat() * 0.1f); } }); } diff --git a/src/main/java/ru/dbotthepony/mc/otm/mixin/MixinGameRenderer.java b/src/main/java/ru/dbotthepony/mc/otm/mixin/MixinGameRenderer.java index 53c0c3d30..3658c7693 100644 --- a/src/main/java/ru/dbotthepony/mc/otm/mixin/MixinGameRenderer.java +++ b/src/main/java/ru/dbotthepony/mc/otm/mixin/MixinGameRenderer.java @@ -1,6 +1,7 @@ package ru.dbotthepony.mc.otm.mixin; import net.minecraft.client.renderer.GameRenderer; +import net.minecraft.server.packs.resources.ResourceManager; import net.minecraft.server.packs.resources.ResourceProvider; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; @@ -23,10 +24,10 @@ public class MixinGameRenderer { } @Inject( - method = "reloadShaders(Lnet/minecraft/server/packs/resources/ResourceProvider;)V", + method = "reloadShaders(Lnet/minecraft/server/packs/resources/ResourceManager;)V", at = @At("HEAD") ) - private void reloadShaders(ResourceProvider p_250719_, CallbackInfo ci) { + private void reloadShaders(ResourceManager p_250719_, CallbackInfo ci) { RenderHelperKt.reloadShaders(p_250719_); } } diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/core/util/ItemSorter.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/core/util/ItemSorter.kt index 0b4a15aff..3c8fdc20f 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/core/util/ItemSorter.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/core/util/ItemSorter.kt @@ -2,19 +2,17 @@ package ru.dbotthepony.mc.otm.core.util import it.unimi.dsi.fastutil.objects.Reference2IntFunction import it.unimi.dsi.fastutil.objects.Reference2IntOpenHashMap +import net.minecraft.core.NonNullList import net.minecraft.network.chat.Component import net.minecraft.network.chat.MutableComponent -import net.minecraft.world.item.CreativeModeTabs +import net.minecraft.world.item.CreativeModeTab import net.minecraft.world.item.Item import net.minecraft.world.item.ItemStack -import net.minecraftforge.common.CreativeModeTabRegistry -import ru.dbotthepony.mc.otm.client.minecraft import ru.dbotthepony.mc.otm.client.render.IGUIRenderable import ru.dbotthepony.mc.otm.core.TranslatableComponent import ru.dbotthepony.mc.otm.core.nullsFirst import ru.dbotthepony.mc.otm.core.nullsLast import ru.dbotthepony.mc.otm.core.registryName -import ru.dbotthepony.mc.otm.core.suppliers import ru.dbotthepony.mc.otm.matter.MatterManager import ru.dbotthepony.mc.otm.storage.ItemStorageStack import ru.dbotthepony.mc.otm.client.render.Widgets18 @@ -42,9 +40,12 @@ object CreativeMenuItemComparator : Comparator { private fun doRebuild() { var i = 0 - for (tab in CreativeModeTabRegistry.getSortedCreativeModeTabs()) { - for (item in tab.displayItems) { - item2index.computeIfAbsent(item.item, Reference2IntFunction { i++ }) + for (tab in CreativeModeTab.TABS) { + val output = NonNullList.create() + tab.fillItemList(output) + + output.forEach { + item2index.computeIfAbsent(it.item, Reference2IntFunction { i++ }) } } } @@ -52,14 +53,6 @@ object CreativeMenuItemComparator : Comparator { private fun rebuild() { if (item2index.isEmpty()) { doRebuild() - - if (item2index.isEmpty()) { - val player = minecraft.player ?: return - // creative tabs were not populated yet - CreativeModeTabs.tryRebuildTabContents(player.connection.enabledFeatures(), false /* operator tabs */) - - doRebuild() - } } } diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MCreativeTabs.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MCreativeTabs.kt index e73002ea4..a8aff6368 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MCreativeTabs.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MCreativeTabs.kt @@ -1,34 +1,117 @@ package ru.dbotthepony.mc.otm.registry -import net.minecraft.resources.ResourceLocation -import net.minecraft.world.item.CreativeModeTab +import net.minecraft.core.NonNullList import net.minecraft.world.item.DyeColor import net.minecraft.world.item.Item import net.minecraft.world.item.ItemStack +import net.minecraft.world.level.ItemLike import net.minecraft.world.level.material.Fluids import net.minecraftforge.common.capabilities.ForgeCapabilities -import net.minecraftforge.event.CreativeModeTabEvent import net.minecraftforge.fluids.FluidStack import net.minecraftforge.fluids.capability.IFluidHandler import net.minecraftforge.registries.ForgeRegistries -import ru.dbotthepony.mc.otm.OverdriveThatMatters import ru.dbotthepony.mc.otm.capability.matter.matter import ru.dbotthepony.mc.otm.capability.matteryEnergy -import ru.dbotthepony.mc.otm.core.TranslatableComponent import ru.dbotthepony.mc.otm.core.ifPresentK import ru.dbotthepony.mc.otm.core.registryName -import ru.dbotthepony.mc.otm.core.util.CreativeMenuItemComparator -import ru.dbotthepony.mc.otm.core.util.WriteOnce -import ru.dbotthepony.mc.otm.registry.MItems.BATTERY_CREATIVE -private fun CreativeModeTab.Output.accept(values: Collection) { - for (item in values) { - accept(item) +class CreativeTabOutput { + private val items = ArrayList() + + fun accept(value: ItemLike) { + items.add(ItemStack(value.asItem())) } -} -private fun CreativeModeTab.Output.base(values: Map) { - accept(values[null]!!) + fun accept(value: ItemStack) { + items.add(value) + } + + fun fillIn(into: NonNullList) { + items.forEach { into.add(it.copy()) } + } + + fun accept(values: Collection) { + for (item in values) { + accept(item) + } + } + + fun base(values: Map) { + accept(values[null]!!) + } + + fun colored(values: Map) { + accept(values[DyeColor.WHITE]!!) + accept(values[DyeColor.ORANGE]!!) + accept(values[DyeColor.MAGENTA]!!) + accept(values[DyeColor.LIGHT_BLUE]!!) + accept(values[DyeColor.YELLOW]!!) + accept(values[DyeColor.LIME]!!) + accept(values[DyeColor.PINK]!!) + accept(values[DyeColor.GRAY]!!) + accept(values[DyeColor.LIGHT_GRAY]!!) + accept(values[DyeColor.CYAN]!!) + accept(values[DyeColor.PURPLE]!!) + accept(values[DyeColor.BLUE]!!) + accept(values[DyeColor.BROWN]!!) + accept(values[DyeColor.GREEN]!!) + accept(values[DyeColor.RED]!!) + accept(values[DyeColor.BLACK]!!) + } + + fun all(values: Map) { + base(values) + colored(values) + } + + fun energized(value: Item) { + accept(value) + + val stack = ItemStack(value, 1) + val energy = stack.matteryEnergy ?: throw IllegalArgumentException("${value.registryName} does not implement mattery energy capability") + energy.fillBattery() + + if (ItemStack(value, 1).matteryEnergy!!.batteryLevel != energy.batteryLevel) + accept(stack) + } + + fun energized(values: Iterable) { + for (value in values) { + energized(value) + } + } + + fun mattery(value: Item) { + accept(value) + + val stack = ItemStack(value, 1) + val matter = stack.matter ?: throw IllegalArgumentException("${value.registryName} does not implement matter capability") + + matter.fillMatter() + + if (ItemStack(value, 1).matter!!.storedMatter != matter.storedMatter) + accept(stack) + } + + fun mattery(values: Iterable) { + for (value in values) { + mattery(value) + } + } + + fun fluids(value: Item) { + accept(value) + + for (fluid in ForgeRegistries.FLUIDS.values) { + if (fluid != Fluids.EMPTY && fluid.isSource(fluid.defaultFluidState())) { + accept(ItemStack(value, 1).also { + it.getCapability(ForgeCapabilities.FLUID_HANDLER_ITEM).ifPresentK { + it.fill(FluidStack(fluid, it.getTankCapacity(0)), IFluidHandler.FluidAction.EXECUTE) + } + }) + } + } + } } private val colorOrder = listOf( @@ -51,80 +134,7 @@ private val colorOrder = listOf( DyeColor.BLACK, ) -private fun CreativeModeTab.Output.colored(values: Map) { - accept(values[DyeColor.WHITE]!!) - accept(values[DyeColor.ORANGE]!!) - accept(values[DyeColor.MAGENTA]!!) - accept(values[DyeColor.LIGHT_BLUE]!!) - accept(values[DyeColor.YELLOW]!!) - accept(values[DyeColor.LIME]!!) - accept(values[DyeColor.PINK]!!) - accept(values[DyeColor.GRAY]!!) - accept(values[DyeColor.LIGHT_GRAY]!!) - accept(values[DyeColor.CYAN]!!) - accept(values[DyeColor.PURPLE]!!) - accept(values[DyeColor.BLUE]!!) - accept(values[DyeColor.BROWN]!!) - accept(values[DyeColor.GREEN]!!) - accept(values[DyeColor.RED]!!) - accept(values[DyeColor.BLACK]!!) -} - -private fun CreativeModeTab.Output.all(values: Map) { - base(values) - colored(values) -} - -private fun CreativeModeTab.Output.energized(value: Item) { - accept(value) - - val stack = ItemStack(value, 1) - val energy = stack.matteryEnergy ?: throw IllegalArgumentException("${value.registryName} does not implement mattery energy capability") - energy.fillBattery() - - if (ItemStack(value, 1).matteryEnergy!!.batteryLevel != energy.batteryLevel) - accept(stack) -} - -private fun CreativeModeTab.Output.energized(values: Iterable) { - for (value in values) { - energized(value) - } -} - -private fun CreativeModeTab.Output.mattery(value: Item) { - accept(value) - - val stack = ItemStack(value, 1) - val matter = stack.matter ?: throw IllegalArgumentException("${value.registryName} does not implement matter capability") - - matter.fillMatter() - - if (ItemStack(value, 1).matter!!.storedMatter != matter.storedMatter) - accept(stack) -} - -private fun CreativeModeTab.Output.mattery(values: Iterable) { - for (value in values) { - mattery(value) - } -} - -private fun CreativeModeTab.Output.fluids(value: Item) { - accept(value) - - for (fluid in ForgeRegistries.FLUIDS.values) { - if (fluid != Fluids.EMPTY && fluid.isSource(fluid.defaultFluidState())) { - accept(ItemStack(value, 1).also { - it.getCapability(ForgeCapabilities.FLUID_HANDLER_ITEM).ifPresentK { - it.fill(FluidStack(fluid, it.getTankCapacity(0)), IFluidHandler.FluidAction.EXECUTE) - } - }) - } - } -} - -private fun addMainCreativeTabItems(consumer: CreativeModeTab.Output) { +private fun addMainCreativeTabItems(consumer: CreativeTabOutput) { with(consumer) { accept(MItems.ENERGY_CABLES.values) accept(MItems.MACHINES) @@ -211,7 +221,7 @@ private fun addMainCreativeTabItems(consumer: CreativeModeTab.Output) { } } -private fun addDecorativeTabItems(consumer: CreativeModeTab.Output) { +private fun addDecorativeTabItems(consumer: CreativeTabOutput) { with(consumer) { accept(MItems.LABORATORY_LAMP) accept(MItems.LABORATORY_LAMP_INVERTED) @@ -267,31 +277,5 @@ private fun addDecorativeTabItems(consumer: CreativeModeTab.Output) { } } -object MCreativeTabs { - var MAIN by WriteOnce() - private set - var DECORATIVE by WriteOnce() - private set - - fun register(event: CreativeModeTabEvent.Register) { - CreativeMenuItemComparator.invalidate() - - MAIN = event.registerCreativeModeTab(ResourceLocation(OverdriveThatMatters.MOD_ID, "main")) { - it.icon { ItemStack(BATTERY_CREATIVE, 1) } - it.title(TranslatableComponent("itemGroup.otm")) - - it.displayItems { _, consumer, hasPerms -> - addMainCreativeTabItems(consumer) - } - } - - DECORATIVE = event.registerCreativeModeTab(ResourceLocation(OverdriveThatMatters.MOD_ID, "decorative")) { - it.icon { ItemStack(MRegistry.VENT.item, 1) } - it.title(TranslatableComponent("itemGroup.otm_decorative")) - - it.displayItems { _, consumer, hasPerms -> - addDecorativeTabItems(consumer) - } - } - } -} +val MainTabContents = CreativeTabOutput().also { addMainCreativeTabItems(it) } +val DecorativeTabContents = CreativeTabOutput().also { addDecorativeTabItems(it) }