From 63fd92a704baec66a577f8cf3d2353ab4b4524c9 Mon Sep 17 00:00:00 2001 From: DBotThePony Date: Fri, 19 Aug 2022 01:13:37 +0700 Subject: [PATCH] Make it compile --- .../ru/dbotthepony/mc/otm/datagen/DataGen.kt | 31 +-- .../mc/otm/datagen/MatteryLanguageProvider.kt | 13 +- .../mc/otm/datagen/blocks/Banks.kt | 2 +- .../blocks/MatteryBlockStateProvider.kt | 3 +- .../datagen/items/MatteryItemModelProvider.kt | 3 +- .../datagen/models/MatteryModelProvider.kt | 5 +- .../datagen/recipes/MatteryRecipeProvider.kt | 1 - .../mc/otm/OverdriveThatMatters.java | 5 +- .../mc/otm/capability/matter/MatterTask.java | 3 +- .../otm/capability/matter/PatternState.java | 3 +- .../dbotthepony/mc/otm/client/AndroidGui.java | 192 ------------------ .../mc/otm/client/render/RenderHelper.java | 7 +- .../otm/client/screen/MatterPanelScreen.java | 41 ++-- .../mc/otm/client/screen/MatteryScreen.java | 20 +- .../dbotthepony/mc/otm/registry/MRecipes.java | 27 ++- src/main/kotlin/ru/dbotthepony/mc/otm/Ext.kt | 14 +- .../kotlin/ru/dbotthepony/mc/otm/Ticker.kt | 12 +- .../dbotthepony/mc/otm/UnOverengineering.kt | 30 +++ .../mc/otm/android/AndroidFeatureType.kt | 20 +- .../mc/otm/android/AndroidResearch.kt | 3 - .../mc/otm/android/AndroidResearchBuilder.kt | 2 +- .../mc/otm/android/AndroidResearchType.kt | 20 +- .../block/entity/AndroidStationBlockEntity.kt | 2 +- .../block/entity/BatteryBankBlockEntity.kt | 1 - .../otm/block/entity/CargoCrateBlockEntity.kt | 2 +- .../entity/ChemicalGeneratorBlockEntity.kt | 3 +- .../block/entity/EnergyCounterBlockEntity.kt | 1 - .../GravitationStabilizerBlockEntity.kt | 2 +- .../block/entity/PatternStorageBlockEntity.kt | 2 +- .../otm/block/entity/PlatePressBlockEntity.kt | 2 +- .../mc/otm/block/entity/RedstoneSetting.kt | 4 +- .../otm/block/entity/blackhole/Explosions.kt | 6 +- .../entity/matter/MatterBottlerBlockEntity.kt | 2 +- .../matter/MatterCapacitorBankBlockEntity.kt | 2 +- .../matter/MatterDecomposerBlockEntity.kt | 2 +- .../entity/matter/MatterPanelBlockEntity.kt | 2 +- .../matter/MatterRecyclerBlockEntity.kt | 2 +- .../matter/MatterReplicatorBlockEntity.kt | 2 +- .../entity/matter/MatterScannerBlockEntity.kt | 2 +- .../entity/storage/DriveRackBlockEntity.kt | 2 +- .../entity/storage/DriveViewerBlockEntity.kt | 2 +- .../entity/storage/ItemMonitorBlockEntity.kt | 14 +- .../entity/storage/StorageBusBlockEntity.kt | 1 - .../block/entity/storage/StorageInterfaces.kt | 2 - .../StoragePowerSupplierBlockEntity.kt | 2 +- .../capability/android/AndroidCapability.kt | 4 +- .../android/AndroidCapabilityPlayer.kt | 8 +- .../mc/otm/capability/drive/DrivePool.kt | 4 +- .../dbotthepony/mc/otm/client/AndroidGui.kt | 186 +++++++++++++++++ .../dbotthepony/mc/otm/client/EventHandler.kt | 2 +- .../mc/otm/client/render/BlackHoleRenderer.kt | 7 +- .../client/render/EnergyCounterRenderer.kt | 2 +- .../render/GravitationStabilizerRenderer.kt | 2 +- .../otm/client/screen/AndroidStationScreen.kt | 2 +- .../client/screen/ChemicalGeneratorScreen.kt | 2 +- .../mc/otm/client/screen/DriveViewerScreen.kt | 2 +- .../otm/client/screen/EnergyCounterScreen.kt | 2 +- .../mc/otm/client/screen/ItemMonitorScreen.kt | 4 +- .../otm/client/screen/MatterBottlerScreen.kt | 2 +- .../mc/otm/client/screen/StorageBusScreen.kt | 2 +- .../client/screen/StorageExporterScreen.kt | 2 +- .../client/screen/StorageImporterScreen.kt | 2 +- .../screen/StoragePowerSupplierScreen.kt | 3 +- .../client/screen/panels/AbstractSlotPanel.kt | 9 +- .../otm/client/screen/panels/ButtonPanel.kt | 2 +- .../otm/client/screen/panels/EditBoxPanel.kt | 2 +- .../mc/otm/client/screen/panels/Label.kt | 2 +- .../client/screen/panels/NumberInputPanel.kt | 2 +- .../mc/otm/client/screen/widget/Gauges.kt | 2 +- .../mc/otm/compat/jei/JEIPlugin.kt | 4 +- .../mc/otm/compat/mekanism/Tooltips.kt | 2 +- .../ru/dbotthepony/mc/otm/core/Formatting.kt | 4 +- .../mc/otm/data/LootTableAppender.kt | 63 ++++-- .../ru/dbotthepony/mc/otm/item/BatteryItem.kt | 2 +- .../mc/otm/item/EnergySwordItem.kt | 1 - .../mc/otm/item/GravitationalDisruptorItem.kt | 2 +- .../mc/otm/item/MatterCapacitorItem.kt | 2 +- .../dbotthepony/mc/otm/item/MatterDustItem.kt | 2 +- .../mc/otm/item/PatternStorageItem.kt | 2 +- .../ru/dbotthepony/mc/otm/item/PillItem.kt | 2 +- .../otm/item/PortableCondensationDriveItem.kt | 22 +- .../item/PortableGravitationStabilizerItem.kt | 13 +- .../mc/otm/item/TritaniumArmorItem.kt | 10 +- .../mc/otm/item/weapon/AbstractWeaponItem.kt | 23 +-- .../mc/otm/item/weapon/PlasmaWeaponItem.kt | 6 +- .../dbotthepony/mc/otm/matter/MatterData.kt | 7 - .../mc/otm/matter/MatterRegistry.kt | 3 +- .../mc/otm/menu/data/NetworkedItemView.kt | 1 + .../ru/dbotthepony/mc/otm/recipe/Helpers.kt | 1 + .../mc/otm/recipe/PlatePressRecipe.kt | 8 +- .../mc/otm/registry/AndroidFeatures.kt | 2 +- .../mc/otm/registry/AndroidResearch.kt | 6 +- .../mc/otm/registry/DamageSources.kt | 2 +- .../dbotthepony/mc/otm/registry/LazyList.kt | 3 +- .../mc/otm/registry/LootModifiers.kt | 19 +- .../mc/otm/registry/MBlockEntities.kt | 2 +- .../ru/dbotthepony/mc/otm/registry/MBlocks.kt | 6 +- .../mc/otm/registry/MEntityTypes.kt | 2 +- .../ru/dbotthepony/mc/otm/registry/MItems.kt | 6 +- .../ru/dbotthepony/mc/otm/registry/MMenus.kt | 2 +- .../dbotthepony/mc/otm/registry/MRegistry.kt | 7 +- .../mc/otm/registry/RegistryEntryExt.kt | 3 +- .../mc/otm/storage/ItemStackWrapper.kt | 1 + 103 files changed, 538 insertions(+), 479 deletions(-) delete mode 100644 src/main/java/ru/dbotthepony/mc/otm/client/AndroidGui.java create mode 100644 src/main/kotlin/ru/dbotthepony/mc/otm/UnOverengineering.kt create mode 100644 src/main/kotlin/ru/dbotthepony/mc/otm/client/AndroidGui.kt diff --git a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/DataGen.kt b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/DataGen.kt index 4db9cab52..04113bddf 100644 --- a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/DataGen.kt +++ b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/DataGen.kt @@ -14,7 +14,7 @@ import net.minecraftforge.common.Tags import net.minecraftforge.common.loot.LootTableIdCondition import net.minecraftforge.eventbus.api.SubscribeEvent import net.minecraftforge.fml.common.Mod -import net.minecraftforge.forge.event.lifecycle.GatherDataEvent +import net.minecraftforge.data.event.GatherDataEvent import ru.dbotthepony.mc.otm.OverdriveThatMatters import ru.dbotthepony.mc.otm.block.* import ru.dbotthepony.mc.otm.block.entity.worker.WorkerState @@ -34,6 +34,7 @@ import ru.dbotthepony.mc.otm.datagen.models.BlockMatteryModelProvider import ru.dbotthepony.mc.otm.datagen.recipes.MatteryRecipeProvider import ru.dbotthepony.mc.otm.datagen.recipes.has import ru.dbotthepony.mc.otm.registry.* +import ru.dbotthepony.mc.otm.* @Mod.EventBusSubscriber(modid = DataGen.MOD_ID, bus = Mod.EventBusSubscriber.Bus.MOD) object DataGen { @@ -150,14 +151,14 @@ object DataGen { AddEnglishLanguage(languageProvider) - event.generator.addProvider(blockModelProvider) - event.generator.addProvider(itemModelProvider) - event.generator.addProvider(blockStateProvider) - event.generator.addProvider(recipeProvider) - event.generator.addProvider(MatterBankProvider(event)) - event.generator.addProvider(BatteryBankProvider(event)) - event.generator.addProvider(lootTableProvider) - event.generator.addProvider(lootModifier) + event.generator.addProvider(true, blockModelProvider) + event.generator.addProvider(true, itemModelProvider) + event.generator.addProvider(true, blockStateProvider) + event.generator.addProvider(true, recipeProvider) + event.generator.addProvider(true, MatterBankProvider(event)) + event.generator.addProvider(true, BatteryBankProvider(event)) + event.generator.addProvider(true, lootTableProvider) + event.generator.addProvider(true, lootModifier) decorativeCubeAll(MBlocks.CRATE_LIST) decorativeCubeAll(MBlocks.CARBON_FIBRE_BLOCK) @@ -696,37 +697,37 @@ object DataGen { } lootModifier.lambda { - it.add("dungeon_pill", LootTableBasicAppender.Companion, LootTableBasicAppender( + it.add("dungeon_pill", LootTableBasicAppender( arrayOf(LootTableIdCondition.Builder(ResourceLocation("chests/simple_dungeon")).build()), ItemStack(MItems.PILL_ANDROID, 1) to 0.1, ItemStack(MItems.PILL_HEAL, 2) to 0.5, )) - it.add("mineshaft_pill", LootTableBasicAppender.Companion, LootTableBasicAppender( + it.add("mineshaft_pill", LootTableBasicAppender( arrayOf(LootTableIdCondition.Builder(ResourceLocation("chests/abandoned_mineshaft")).build()), ItemStack(MItems.PILL_ANDROID, 1) to 0.1, ItemStack(MItems.PILL_HEAL, 1) to 0.25, )) - it.add("desert_pyramid_pill", LootTableBasicAppender.Companion, LootTableBasicAppender( + it.add("desert_pyramid_pill", LootTableBasicAppender( arrayOf(LootTableIdCondition.Builder(ResourceLocation("chests/abandoned_mineshaft")).build()), ItemStack(MItems.PILL_ANDROID, 1) to 0.05, ItemStack(MItems.PILL_HEAL, 1) to 0.3, )) - it.add("jungle_temple_pill", LootTableBasicAppender.Companion, LootTableBasicAppender( + it.add("jungle_temple_pill", LootTableBasicAppender( arrayOf(LootTableIdCondition.Builder(ResourceLocation("chests/jungle_temple")).build()), ItemStack(MItems.PILL_ANDROID, 1) to 0.1 )) - it.add("end_city_pill", LootTableBasicAppender.Companion, LootTableBasicAppender( + it.add("end_city_pill", LootTableBasicAppender( arrayOf(LootTableIdCondition.Builder(ResourceLocation("chests/end_city_treasure")).build()), ItemStack(MItems.PILL_ANDROID, 1) to 0.1, ItemStack(MItems.PILL_HUMANE, 1) to 0.2, ItemStack(MItems.PILL_OBLIVION, 1) to 0.4, )) - it.add("shipwreck_supply_pill", LootTableBasicAppender.Companion, LootTableBasicAppender( + it.add("shipwreck_supply_pill", LootTableBasicAppender( arrayOf(LootTableIdCondition.Builder(ResourceLocation("chests/shipwreck_supply")).build()), ItemStack(MItems.PILL_HUMANE, 1) to 0.3 )) diff --git a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/MatteryLanguageProvider.kt b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/MatteryLanguageProvider.kt index 2bebf1134..0a4228437 100644 --- a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/MatteryLanguageProvider.kt +++ b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/MatteryLanguageProvider.kt @@ -4,7 +4,8 @@ import com.google.common.collect.ImmutableList import com.google.common.collect.ImmutableMap import it.unimi.dsi.fastutil.objects.Object2ObjectArrayMap import net.minecraft.data.DataGenerator -import net.minecraft.network.chat.TranslatableComponent +import net.minecraft.network.chat.MutableComponent +import net.minecraft.network.chat.contents.TranslatableContents import net.minecraft.world.effect.MobEffect import net.minecraft.world.entity.EntityType import net.minecraft.world.item.Item @@ -20,8 +21,12 @@ import ru.dbotthepony.mc.otm.registry.ColoredDecorativeBlock private fun researchString(key: AndroidResearchType<*>): String { val displayName = key.displayName - if (displayName is TranslatableComponent) { - return displayName.key + if (displayName is MutableComponent) { + val content = displayName.contents + + if (content is TranslatableContents) { + return content.key + } } return key.displayId @@ -30,7 +35,7 @@ private fun researchString(key: AndroidResearchType<*>): String { class MatteryLanguageProvider(private val gen: DataGenerator) { private inner class Slave(language: String) : LanguageProvider(gen, OverdriveThatMatters.MOD_ID, language) { init { - gen.addProvider(this) + gen.addProvider(true, this) } override fun addTranslations() {} diff --git a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/blocks/Banks.kt b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/blocks/Banks.kt index 50b43f3e9..6fc3c2bb1 100644 --- a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/blocks/Banks.kt +++ b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/blocks/Banks.kt @@ -3,7 +3,7 @@ package ru.dbotthepony.mc.otm.datagen.blocks import net.minecraft.resources.ResourceLocation import net.minecraft.world.level.block.Block import net.minecraftforge.client.model.generators.BlockStateProvider -import net.minecraftforge.forge.event.lifecycle.GatherDataEvent +import net.minecraftforge.data.event.GatherDataEvent import ru.dbotthepony.mc.otm.block.BatteryBankBlock import ru.dbotthepony.mc.otm.block.RotatableMatteryBlock import ru.dbotthepony.mc.otm.datagen.DataGen diff --git a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/blocks/MatteryBlockStateProvider.kt b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/blocks/MatteryBlockStateProvider.kt index 4389884ec..add36a39e 100644 --- a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/blocks/MatteryBlockStateProvider.kt +++ b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/blocks/MatteryBlockStateProvider.kt @@ -5,13 +5,14 @@ import net.minecraft.world.level.block.Block import net.minecraft.world.level.block.state.BlockState import net.minecraftforge.client.model.generators.BlockStateProvider import net.minecraftforge.client.model.generators.ConfiguredModel -import net.minecraftforge.forge.event.lifecycle.GatherDataEvent +import net.minecraftforge.data.event.GatherDataEvent import ru.dbotthepony.mc.otm.block.RotatableMatteryBlock import ru.dbotthepony.mc.otm.block.entity.worker.WorkerState import ru.dbotthepony.mc.otm.datagen.DataGen import ru.dbotthepony.mc.otm.datagen.getValueNullable import ru.dbotthepony.mc.otm.datagen.toXRotBlockstate import ru.dbotthepony.mc.otm.datagen.toYRotBlockstate +import ru.dbotthepony.mc.otm.registryName typealias AdvancedBlockStateFunction = (BlockState, ConfiguredModel.Builder<*>, String) -> String? private data class AdvancedBlockStateEntry(val block: Block, val func: AdvancedBlockStateFunction) diff --git a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/items/MatteryItemModelProvider.kt b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/items/MatteryItemModelProvider.kt index a52ee7320..5962da99c 100644 --- a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/items/MatteryItemModelProvider.kt +++ b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/items/MatteryItemModelProvider.kt @@ -3,9 +3,10 @@ package ru.dbotthepony.mc.otm.datagen.items import net.minecraft.resources.ResourceLocation import net.minecraft.world.item.Item import net.minecraftforge.client.model.generators.ItemModelProvider -import net.minecraftforge.forge.event.lifecycle.GatherDataEvent +import net.minecraftforge.data.event.GatherDataEvent import org.apache.logging.log4j.LogManager import ru.dbotthepony.mc.otm.datagen.DataGen +import ru.dbotthepony.mc.otm.registryName private data class SimpleItemModel(val item: String, val path: ResourceLocation) { val traceback = IllegalArgumentException("Failed to register model") diff --git a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/models/MatteryModelProvider.kt b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/models/MatteryModelProvider.kt index 34c6cc619..cf68574cb 100644 --- a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/models/MatteryModelProvider.kt +++ b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/models/MatteryModelProvider.kt @@ -6,8 +6,9 @@ import net.minecraft.resources.ResourceLocation import net.minecraft.server.packs.PackType import net.minecraft.world.level.block.Block import net.minecraftforge.client.model.generators.ModelProvider -import net.minecraftforge.forge.event.lifecycle.GatherDataEvent +import net.minecraftforge.data.event.GatherDataEvent import ru.dbotthepony.mc.otm.datagen.DataGen +import ru.dbotthepony.mc.otm.registryName private typealias Callback = (MatteryModelProvider) -> Unit @@ -26,7 +27,7 @@ sealed class MatteryModelProvider(event: GatherDataEvent, folder: String) : Mode return factory.apply(destinationLocation).also { generatedModels[destinationLocation] = it val resource = existingFileHelper.getResource(sourceLocation, PackType.CLIENT_RESOURCES) - val stream = resource.inputStream + val stream = resource.open() val reader = stream.reader() try { diff --git a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/recipes/MatteryRecipeProvider.kt b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/recipes/MatteryRecipeProvider.kt index ab015b850..0889376e0 100644 --- a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/recipes/MatteryRecipeProvider.kt +++ b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/recipes/MatteryRecipeProvider.kt @@ -8,7 +8,6 @@ import net.minecraft.data.DataGenerator import net.minecraft.data.recipes.FinishedRecipe import net.minecraft.data.recipes.RecipeProvider import net.minecraft.resources.ResourceLocation -import net.minecraft.tags.Tag import net.minecraft.tags.TagKey import net.minecraft.world.item.Item import net.minecraft.world.item.crafting.Ingredient diff --git a/src/main/java/ru/dbotthepony/mc/otm/OverdriveThatMatters.java b/src/main/java/ru/dbotthepony/mc/otm/OverdriveThatMatters.java index f31eca465..912531798 100644 --- a/src/main/java/ru/dbotthepony/mc/otm/OverdriveThatMatters.java +++ b/src/main/java/ru/dbotthepony/mc/otm/OverdriveThatMatters.java @@ -48,7 +48,6 @@ public final class OverdriveThatMatters { public static final Logger LOGGER = LogManager.getLogger(); public static OverdriveThatMatters INSTANCE; - public AndroidGui ANDROID_GUI; private StorageStackType ITEM_STORAGE; public StorageStackType ITEM_STORAGE() { @@ -120,9 +119,7 @@ public final class OverdriveThatMatters { } private void setupClient(final FMLClientSetupEvent event) { - ANDROID_GUI = new AndroidGui(); - MinecraftForge.EVENT_BUS.register(ANDROID_GUI); - MinecraftForge.EVENT_BUS.register(AndroidGui.class); + MinecraftForge.EVENT_BUS.register(AndroidGui.INSTANCE); MinecraftForge.EVENT_BUS.register(EventHandlerKt.class); TritaniumArmorModel.register(); diff --git a/src/main/java/ru/dbotthepony/mc/otm/capability/matter/MatterTask.java b/src/main/java/ru/dbotthepony/mc/otm/capability/matter/MatterTask.java index 03823a922..75f4b0f14 100644 --- a/src/main/java/ru/dbotthepony/mc/otm/capability/matter/MatterTask.java +++ b/src/main/java/ru/dbotthepony/mc/otm/capability/matter/MatterTask.java @@ -11,6 +11,7 @@ import net.minecraft.world.item.Items; import net.minecraftforge.registries.ForgeRegistries; import net.minecraftforge.registries.ForgeRegistry; import net.minecraftforge.registries.RegistryManager; +import ru.dbotthepony.mc.otm.UnOverengineeringKt; import javax.annotation.Nullable; import javax.annotation.ParametersAreNonnullByDefault; @@ -73,7 +74,7 @@ public record MatterTask(UUID id, @Nullable UUID pattern, Item item, int in_prog tag.putLong("pattern_u", pattern.getMostSignificantBits()); } - tag.putString("item", Objects.requireNonNull(item.getRegistryName()).toString()); + tag.putString("item", Objects.requireNonNull(UnOverengineeringKt.getRegistryName(item)).toString()); tag.putInt("in_progress", in_progress); tag.putInt("finished", finished); tag.putInt("required", required); diff --git a/src/main/java/ru/dbotthepony/mc/otm/capability/matter/PatternState.java b/src/main/java/ru/dbotthepony/mc/otm/capability/matter/PatternState.java index 5c07494f0..7cdf85a33 100644 --- a/src/main/java/ru/dbotthepony/mc/otm/capability/matter/PatternState.java +++ b/src/main/java/ru/dbotthepony/mc/otm/capability/matter/PatternState.java @@ -9,6 +9,7 @@ import net.minecraft.world.item.ItemStack; import net.minecraftforge.registries.ForgeRegistries; import net.minecraftforge.registries.ForgeRegistry; import net.minecraftforge.registries.RegistryManager; +import ru.dbotthepony.mc.otm.UnOverengineeringKt; import javax.annotation.Nonnull; import javax.annotation.Nullable; @@ -44,7 +45,7 @@ public record PatternState(@Nonnull UUID id, @Nonnull Item item, double research tag.putLong("id_m", id.getMostSignificantBits()); tag.putLong("id_l", id.getLeastSignificantBits()); - tag.putString("item", Objects.requireNonNull(item.getRegistryName()).toString()); + tag.putString("item", Objects.requireNonNull(UnOverengineeringKt.getRegistryName(item)).toString()); tag.putDouble("research_percent", research); return tag; diff --git a/src/main/java/ru/dbotthepony/mc/otm/client/AndroidGui.java b/src/main/java/ru/dbotthepony/mc/otm/client/AndroidGui.java deleted file mode 100644 index bd933dfa4..000000000 --- a/src/main/java/ru/dbotthepony/mc/otm/client/AndroidGui.java +++ /dev/null @@ -1,192 +0,0 @@ -package ru.dbotthepony.mc.otm.client; - -import com.mojang.blaze3d.systems.RenderSystem; -import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.components.Button; -import net.minecraft.client.gui.screens.DeathScreen; -import net.minecraft.client.gui.screens.InBedChatScreen; -import net.minecraft.client.player.LocalPlayer; -import net.minecraft.network.chat.TranslatableComponent; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.effect.MobEffects; -import net.minecraft.world.entity.LivingEntity; -import net.minecraft.world.entity.player.Player; -import net.minecraftforge.client.event.ScreenEvent; -import net.minecraftforge.client.event.ScreenOpenEvent; -import net.minecraftforge.client.event.RenderGameOverlayEvent; -import net.minecraftforge.client.gui.ForgeIngameGui; -import net.minecraftforge.eventbus.api.EventPriority; -import net.minecraftforge.eventbus.api.SubscribeEvent; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import ru.dbotthepony.mc.otm.OverdriveThatMatters; -import ru.dbotthepony.mc.otm.capability.android.AndroidCapabilityPlayer; -import ru.dbotthepony.mc.otm.capability.android.IAndroidCapability; -import ru.dbotthepony.mc.otm.capability.MatteryCapability; - -import java.util.Optional; -import java.util.Random; - -public class AndroidGui { - private static final Minecraft mc = Minecraft.getInstance(); - private final ForgeIngameGui gui = mc.gui instanceof ForgeIngameGui ? (ForgeIngameGui) mc.gui : null; - - public static final ResourceLocation PLAYER_GUI_LOCATION = new ResourceLocation(OverdriveThatMatters.MOD_ID, "textures/gui/player_gui.png"); - - private AndroidCapabilityPlayer last_state; - - private static int known_button_x = -1; - private static int known_button_y = -1; - private static Button known_button; - private static InBedChatScreen known_button_screen; - private static final Random button_shaker = new Random(); - - @SubscribeEvent(priority = EventPriority.NORMAL) - @SuppressWarnings("unused") - public void onTick(ScreenEvent.DrawScreenEvent.Pre event) { - if (known_button_screen != null && known_button == null) { - for (var widget : known_button_screen.renderables) { - if (widget instanceof Button btn) { - known_button_x = btn.x; - known_button_y = btn.y; - known_button = btn; - break; - } - } - - if (known_button == null) { - known_button_screen = null; - } - } - - if (known_button_screen != null && known_button_screen != mc.screen) { - known_button_x = -1; - known_button_y = -1; - known_button = null; - known_button_screen = null; - } - - if (known_button_screen == null || mc.player == null) { - return; - } - - mc.player.getCapability(MatteryCapability.ANDROID).ifPresent(cap -> { - if (!((AndroidCapabilityPlayer) cap).getWillBecomeAndroid()) { - known_button.x = known_button_x; - known_button.y = known_button_y; - known_button_x = -1; - known_button_y = -1; - known_button = null; - known_button_screen = null; - return; - } - - int dispersion = (int) ((10.0 * Math.max(0, ((AndroidCapabilityPlayer) cap).getSleepTicks() - 20)) / (AndroidCapabilityPlayer.SLEEP_TICKS_LIMIT - 20)); - - known_button.x = known_button_x - dispersion / 2 + (int) (button_shaker.nextDouble() * dispersion); - known_button.y = known_button_y - dispersion / 2 + (int) (button_shaker.nextDouble() * dispersion); - }); - } - - @SubscribeEvent(priority = EventPriority.LOWEST) - @SuppressWarnings("unused") - public static void onOpenGUI(ScreenOpenEvent event) { - known_button_x = -1; - known_button_y = -1; - known_button = null; - known_button_screen = null; - - if (mc.player == null) - return; - - if (event.getScreen() instanceof DeathScreen screen) { - mc.player.getCapability(MatteryCapability.ANDROID).ifPresent(cap -> { - if (cap.isAndroid()) - screen.title = new TranslatableComponent("otm.death_reason"); - }); - } - - if (event.getScreen() instanceof InBedChatScreen screen) { - known_button_screen = screen; - - mc.player.getCapability(MatteryCapability.ANDROID).ifPresent(cap -> { - if (((AndroidCapabilityPlayer) cap).getWillBecomeAndroid()) { - known_button_screen = screen; - } - }); - } - } - - private static final Logger LOGGER = LogManager.getLogger(); - - @SubscribeEvent(priority = EventPriority.HIGH) - @SuppressWarnings("unused") - public void onLayerRenderEvent(RenderGameOverlayEvent.PreLayer event) { - if (event.getOverlay() != ForgeIngameGui.FOOD_LEVEL_ELEMENT && event.getOverlay() != ForgeIngameGui.AIR_LEVEL_ELEMENT) - return; - - LocalPlayer ply = mc.player; - - if (ply == null) - return; - - if ( - ply.getVehicle() instanceof LivingEntity || - mc.options.hideGui || - !mc.gameMode.canHurtPlayer() || - !(mc.getCameraEntity() instanceof Player) - ) - return; - - Optional lazy = ply.getCapability(MatteryCapability.ANDROID).resolve(); - AndroidCapabilityPlayer android = null; - - if (lazy.isPresent()) { - android = (AndroidCapabilityPlayer) lazy.get(); - } else if (!ply.isAlive()) { - android = last_state; - } - - if (android != null && android.isAndroid() && mc.gui instanceof ForgeIngameGui gui) { - event.setCanceled(true); - last_state = android; - - if (event.getOverlay() == ForgeIngameGui.AIR_LEVEL_ELEMENT) { - return; - } - - int y_offset = ply.hasEffect(MobEffects.HUNGER) ? 18 : 0; - - float level; - - if (android.getMaxBatteryLevel().isZero()) { - level = 0f; - } else { - level = android.getBatteryLevel().div(android.getMaxBatteryLevel()).toFloat(); - - if (level >= 0.98f) - level = 1f; - } - - gui.setupOverlayRenderState(true, false); - - RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, 1.0F); - RenderSystem.setShaderTexture(0, PLAYER_GUI_LOCATION); - - int width = event.getWindow().getGuiScaledWidth(); - int height = event.getWindow().getGuiScaledHeight(); - - int left = width / 2 + 10; - int top = height - gui.right_height; - - gui.right_height += 10; - - // Stack, x, y, blitOffset?, (float) image_x, (float) image_y, rect_x, rect_y, total_image_width, total_image_height - // Stack, x, y, image_x, image_y, rect_x, rect_y - gui.blit(event.getMatrixStack(), left, top, 0, y_offset, 80, 9); - - int shift_left = (int) Math.ceil(level * 79f - 0.5f); - gui.blit(event.getMatrixStack(), left + 79 - shift_left, top, 79 - shift_left, y_offset + 9, shift_left, 9); - } - } -} diff --git a/src/main/java/ru/dbotthepony/mc/otm/client/render/RenderHelper.java b/src/main/java/ru/dbotthepony/mc/otm/client/render/RenderHelper.java index 606bca5f1..223ad72e1 100644 --- a/src/main/java/ru/dbotthepony/mc/otm/client/render/RenderHelper.java +++ b/src/main/java/ru/dbotthepony/mc/otm/client/render/RenderHelper.java @@ -80,8 +80,8 @@ public class RenderHelper { builder.vertex(matrix, x + width, y + height, depth_z).uv(u1, v1).endVertex(); builder.vertex(matrix, x + width, y, depth_z).uv(u1, v0).endVertex(); builder.vertex(matrix, x, y, depth_z).uv(u0, v0).endVertex(); - builder.end(); - BufferUploader.end(builder); + + BufferUploader.draw(builder.end()); } public static void drawTexturedRectUV( @@ -143,8 +143,7 @@ public class RenderHelper { } } - builder.end(); - BufferUploader.end(builder); + BufferUploader.draw(builder.end()); } public static void colorSphere(PoseStack stack, float radius) { diff --git a/src/main/java/ru/dbotthepony/mc/otm/client/screen/MatterPanelScreen.java b/src/main/java/ru/dbotthepony/mc/otm/client/screen/MatterPanelScreen.java index 2ca8e2455..eb66d50d1 100644 --- a/src/main/java/ru/dbotthepony/mc/otm/client/screen/MatterPanelScreen.java +++ b/src/main/java/ru/dbotthepony/mc/otm/client/screen/MatterPanelScreen.java @@ -3,8 +3,6 @@ package ru.dbotthepony.mc.otm.client.screen; import net.minecraft.ChatFormatting; import net.minecraft.client.gui.components.EditBox; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TextComponent; -import net.minecraft.network.chat.TranslatableComponent; import net.minecraft.world.entity.player.Inventory; import net.minecraft.world.item.ItemStack; import ru.dbotthepony.mc.otm.capability.matter.MatterTask; @@ -19,6 +17,9 @@ import javax.annotation.Nullable; import java.util.ArrayList; import java.util.List; +import static ru.dbotthepony.mc.otm.UnOverengineeringKt.TextComponent; +import static ru.dbotthepony.mc.otm.UnOverengineeringKt.TranslatableComponent; + public class MatterPanelScreen extends MatteryScreen { private static final int MODAL_WIDTH = 213; private static final int MODAL_HEIGHT = 110; @@ -190,22 +191,22 @@ public class MatterPanelScreen extends MatteryScreen { } private List getTaskTooltip(List input, MatterTask task) { - input.add(new TranslatableComponent("otm.gui.matter_task.total", task.total()).withStyle(ChatFormatting.GRAY)); - input.add(new TranslatableComponent("otm.gui.matter_task.required", task.required()).withStyle(ChatFormatting.GRAY)); - input.add(new TranslatableComponent("otm.gui.matter_task.in_progress", task.in_progress()).withStyle(ChatFormatting.GRAY)); - input.add(new TranslatableComponent("otm.gui.matter_task.finished", task.finished()).withStyle(ChatFormatting.GRAY)); + input.add(TranslatableComponent("otm.gui.matter_task.total", task.total()).withStyle(ChatFormatting.GRAY)); + input.add(TranslatableComponent("otm.gui.matter_task.required", task.required()).withStyle(ChatFormatting.GRAY)); + input.add(TranslatableComponent("otm.gui.matter_task.in_progress", task.in_progress()).withStyle(ChatFormatting.GRAY)); + input.add(TranslatableComponent("otm.gui.matter_task.finished", task.finished()).withStyle(ChatFormatting.GRAY)); return input; } private List getPatternTooltip(List input, PatternState pattern) { - input.add(new TranslatableComponent("otm.item.pattern.research", String.format("%.2f", pattern.research() * 100d)).withStyle(ChatFormatting.AQUA)); + input.add(TranslatableComponent("otm.item.pattern.research", String.format("%.2f", pattern.research() * 100d)).withStyle(ChatFormatting.AQUA)); return input; } private void openTask(MatterTask task) { - var task_frame = new FramePanel(this, null, 0, 0, 170, 40, new TranslatableComponent("otm.container.matter_panel.task")) { + var task_frame = new FramePanel(this, null, 0, 0, 170, 40, TranslatableComponent("otm.container.matter_panel.task")) { @Override public void tick() { super.tick(); @@ -246,12 +247,12 @@ public class MatterPanelScreen extends MatteryScreen { slot.setDock(Dock.LEFT); - var button = new ButtonPanel(this, task_frame, 0, 0, 40, 20, new TranslatableComponent("otm.container.matter_panel.close")); + var button = new ButtonPanel(this, task_frame, 0, 0, 40, 20, TranslatableComponent("otm.container.matter_panel.close")); button.setDock(Dock.RIGHT); button.setDockMargin(2, 0, 0, 0); button.bind(task_frame::remove); - button = new ButtonPanel(this, task_frame, 0, 0, 80, 20, new TranslatableComponent("otm.container.matter_panel.cancel_task")); + button = new ButtonPanel(this, task_frame, 0, 0, 80, 20, TranslatableComponent("otm.container.matter_panel.cancel_task")); button.setDock(Dock.RIGHT); button.setDockMargin(2, 0, 0, 0); button.bind(() -> { @@ -264,7 +265,7 @@ public class MatterPanelScreen extends MatteryScreen { } private void openPattern(PatternState state) { - var pattern_frame = new FramePanel(this, null, 0, 0, MODAL_WIDTH, MODAL_HEIGHT, new TranslatableComponent("otm.container.matter_panel.label")){ + var pattern_frame = new FramePanel(this, null, 0, 0, MODAL_WIDTH, MODAL_HEIGHT, TranslatableComponent("otm.container.matter_panel.label")){ @Override public void tick() { super.tick(); @@ -309,7 +310,7 @@ public class MatterPanelScreen extends MatteryScreen { } }; - var input_amount = new EditBoxPanel(this, row_2, 0, 0, 10, 20, new TextComponent("Input amount")) { + var input_amount = new EditBoxPanel(this, row_2, 0, 0, 10, 20, TextComponent("Input amount")) { @Override protected void configureNew(@Nonnull EditBox widget, boolean recreation) { super.configureNew(widget, recreation); @@ -337,17 +338,17 @@ public class MatterPanelScreen extends MatteryScreen { } }; - var button = new ButtonPanel(this, row_1, 0, 0, 40, 20, new TranslatableComponent("otm.container.matter_panel.increase_by", 8)); + var button = new ButtonPanel(this, row_1, 0, 0, 40, 20, TranslatableComponent("otm.container.matter_panel.increase_by", 8)); button.bind(() -> input_amount.increase(8)); button.setDock(Dock.RIGHT); button.setDockMargin(2, 0, 0, 0); - button = new ButtonPanel(this, row_1, 0, 0, 40, 20, new TranslatableComponent("otm.container.matter_panel.increase_by", 64)); + button = new ButtonPanel(this, row_1, 0, 0, 40, 20, TranslatableComponent("otm.container.matter_panel.increase_by", 64)); button.setDock(Dock.RIGHT); button.bind(() -> input_amount.increase(64)); button.setDockMargin(2, 0, 0, 0); - button = new ButtonPanel(this, row_1, 0, 0, 40, 20, new TranslatableComponent("otm.container.matter_panel.increase_by", 256)); + button = new ButtonPanel(this, row_1, 0, 0, 40, 20, TranslatableComponent("otm.container.matter_panel.increase_by", 256)); button.setDock(Dock.RIGHT); button.bind(() -> input_amount.increase(256)); button.setDockMargin(2, 0, 0, 0); @@ -356,27 +357,27 @@ public class MatterPanelScreen extends MatteryScreen { slot.setDockMargin(0, 0, 4, 0); input_amount.setDock(Dock.FILL); - button = new ButtonPanel(this, row_3, 0, 0, 40, 20, new TranslatableComponent("otm.container.matter_panel.decrease_by", 8)); + button = new ButtonPanel(this, row_3, 0, 0, 40, 20, TranslatableComponent("otm.container.matter_panel.decrease_by", 8)); button.bind(() -> input_amount.increase(-8)); button.setDock(Dock.RIGHT); button.setDockMargin(2, 0, 0, 0); - button = new ButtonPanel(this, row_3, 0, 0, 40, 20, new TranslatableComponent("otm.container.matter_panel.decrease_by", 64)); + button = new ButtonPanel(this, row_3, 0, 0, 40, 20, TranslatableComponent("otm.container.matter_panel.decrease_by", 64)); button.setDock(Dock.RIGHT); button.bind(() -> input_amount.increase(-64)); button.setDockMargin(2, 0, 0, 0); - button = new ButtonPanel(this, row_3, 0, 0, 40, 20, new TranslatableComponent("otm.container.matter_panel.decrease_by", 256)); + button = new ButtonPanel(this, row_3, 0, 0, 40, 20, TranslatableComponent("otm.container.matter_panel.decrease_by", 256)); button.setDock(Dock.RIGHT); button.bind(() -> input_amount.increase(-256)); button.setDockMargin(2, 0, 0, 0); - button = new ButtonPanel(this, row_4, 0, 0, 40, 20, new TranslatableComponent("otm.container.matter_panel.cancel")); + button = new ButtonPanel(this, row_4, 0, 0, 40, 20, TranslatableComponent("otm.container.matter_panel.cancel")); button.setDock(Dock.RIGHT); button.bind(pattern_frame::remove); button.setDockMargin(2, 0, 0, 0); - button = new ButtonPanel(this, row_4, 0, 0, 82, 20, new TranslatableComponent("otm.container.matter_panel.send")); + button = new ButtonPanel(this, row_4, 0, 0, 82, 20, TranslatableComponent("otm.container.matter_panel.send")); button.setDock(Dock.RIGHT); button.bind(() -> { int value = 1; diff --git a/src/main/java/ru/dbotthepony/mc/otm/client/screen/MatteryScreen.java b/src/main/java/ru/dbotthepony/mc/otm/client/screen/MatteryScreen.java index c8acb860f..4cdbff3c3 100644 --- a/src/main/java/ru/dbotthepony/mc/otm/client/screen/MatteryScreen.java +++ b/src/main/java/ru/dbotthepony/mc/otm/client/screen/MatteryScreen.java @@ -20,6 +20,7 @@ import net.minecraft.world.inventory.ClickType; import net.minecraft.world.inventory.Slot; import net.minecraft.world.item.ItemStack; import net.minecraftforge.client.event.ContainerScreenEvent; +import net.minecraftforge.client.extensions.common.IClientItemExtensions; import ru.dbotthepony.mc.otm.menu.MatteryMenu; import ru.dbotthepony.mc.otm.menu.MatterySlot; import ru.dbotthepony.mc.otm.client.screen.panels.*; @@ -37,12 +38,11 @@ import static org.lwjgl.opengl.GL13.GL_TEXTURE0; /** * This class encapsulate most of logic for handling EditablePanel and it's children * It inherits AbstractContainerScreen, but most of methods of AbstractContainerScreen are re implemented or straight removed - * since they are present inside EditablePanel subclasses, therefore it inherits + * since they are present inside EditablePanel subclasses, therefore + * it inherits AbstractContainerScreen just for signature compatibility * - * It inherits AbstractContainerScreen just for signature compatibility - * - * Such as slots, they are not drawn inside MatteryScreen, but instead - * drawn by SlotPanel(s) + * Widgets such as slots are not drawn/interacted with using MatteryScreen, + * but are handled by appropriate panels * * @param type of menu, which extends MatteryMenu */ @@ -338,7 +338,7 @@ public abstract class MatteryScreen extends AbstractConta this.setBlitOffset(200); this.itemRenderer.blitOffset = 200.0F; - net.minecraft.client.gui.Font font = net.minecraftforge.client.RenderProperties.get(p_97783_).getFont(p_97783_); + net.minecraft.client.gui.Font font = p_97783_.getItem().getRenderPropertiesInternal() instanceof IClientItemExtensions ext ? ext.getFont(p_97783_, IClientItemExtensions.FontContext.TOOLTIP) : null; if (font == null) font = this.font; this.itemRenderer.renderAndDecorateItem(p_97783_, p_97784_, p_97785_); @@ -404,7 +404,7 @@ public abstract class MatteryScreen extends AbstractConta RenderSystem.depthFunc(GL_LESS); - net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new ContainerScreenEvent.DrawBackground(this, pose, mouse_x, mouse_y)); + net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new ContainerScreenEvent.Render.Background(this, pose, mouse_x, mouse_y)); RenderSystem.disableDepthTest(); @@ -416,7 +416,7 @@ public abstract class MatteryScreen extends AbstractConta RenderSystem.disableDepthTest(); - net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new ContainerScreenEvent.DrawForeground(this, pose, mouse_x, mouse_y)); + net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new ContainerScreenEvent.Render.Foreground(this, pose, mouse_x, mouse_y)); var itemstack = this.draggingItem.isEmpty() ? this.menu.getCarried() : this.draggingItem; @@ -559,7 +559,7 @@ public abstract class MatteryScreen extends AbstractConta public void onSlotMouseDragged(@Nonnull MatterySlot slot, int click_type) { ItemStack itemstack = this.menu.getCarried(); - if (this.clickedSlot != null && this.minecraft.options.touchscreen) { + if (this.clickedSlot != null && this.minecraft.options.touchscreen().get()) { if (click_type == 0 || click_type == 1) { if (this.draggingItem.isEmpty()) { if (slot != this.clickedSlot && !this.clickedSlot.getItem().isEmpty()) { @@ -621,7 +621,7 @@ public abstract class MatteryScreen extends AbstractConta return; } - if (this.clickedSlot != null && this.minecraft.options.touchscreen) { + if (this.clickedSlot != null && this.minecraft.options.touchscreen().get()) { if (p_97814_ == 0 || p_97814_ == 1) { if (this.draggingItem.isEmpty() && slot != this.clickedSlot) { this.draggingItem = this.clickedSlot.getItem(); diff --git a/src/main/java/ru/dbotthepony/mc/otm/registry/MRecipes.java b/src/main/java/ru/dbotthepony/mc/otm/registry/MRecipes.java index 9d85c76f7..7c7b9b2c4 100644 --- a/src/main/java/ru/dbotthepony/mc/otm/registry/MRecipes.java +++ b/src/main/java/ru/dbotthepony/mc/otm/registry/MRecipes.java @@ -4,9 +4,9 @@ import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.crafting.Recipe; import net.minecraft.world.item.crafting.RecipeSerializer; import net.minecraft.world.item.crafting.RecipeType; -import net.minecraftforge.event.RegistryEvent; -import net.minecraftforge.eventbus.api.SubscribeEvent; -import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent; +import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; +import net.minecraftforge.registries.DeferredRegister; +import net.minecraftforge.registries.ForgeRegistries; import ru.dbotthepony.mc.otm.OverdriveThatMatters; import ru.dbotthepony.mc.otm.recipe.PlatePressRecipe; import ru.dbotthepony.mc.otm.recipe.PlatePressRecipeFactory; @@ -19,10 +19,6 @@ public class MRecipes { this.name = name; } - private void register() { - net.minecraft.core.Registry.register(net.minecraft.core.Registry.RECIPE_TYPE, name, this); - } - @Override public String toString() { return name.toString(); @@ -31,15 +27,16 @@ public class MRecipes { public static final MatteryRecipeType PLATE_PRESS = new MatteryRecipeType<>(OverdriveThatMatters.loc(MNames.PLATE_PRESS)); - @SubscribeEvent - @SuppressWarnings("unused") - public static void register(final FMLCommonSetupEvent event) { - PLATE_PRESS.register(); + private static final DeferredRegister> registry = DeferredRegister.create(ForgeRegistries.RECIPE_SERIALIZERS, OverdriveThatMatters.MOD_ID); + private static final DeferredRegister> typesRegistry = DeferredRegister.create(ForgeRegistries.RECIPE_TYPES, OverdriveThatMatters.MOD_ID); + + static { + registry.register(MNames.PLATE_PRESS, () -> PlatePressRecipeFactory.INSTANCE); + typesRegistry.register(MNames.PLATE_PRESS, () -> PLATE_PRESS); } - @SubscribeEvent - @SuppressWarnings("unused") - public static void register(final RegistryEvent.Register> event) { - event.getRegistry().register(PlatePressRecipeFactory.INSTANCE); + public static void register() { + registry.register(FMLJavaModLoadingContext.get().getModEventBus()); + typesRegistry.register(FMLJavaModLoadingContext.get().getModEventBus()); } } diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/Ext.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/Ext.kt index b543630d7..35e8f29f8 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/Ext.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/Ext.kt @@ -4,28 +4,28 @@ package ru.dbotthepony.mc.otm import com.google.common.collect.ImmutableList -import com.google.gson.JsonArray import com.google.gson.JsonElement import com.google.gson.JsonObject -import net.minecraft.client.Minecraft import net.minecraft.core.BlockPos import net.minecraft.core.Direction import net.minecraft.core.Vec3i import net.minecraft.nbt.CompoundTag -import net.minecraft.nbt.ListTag import net.minecraft.nbt.LongArrayTag import net.minecraft.nbt.Tag +import net.minecraft.network.chat.MutableComponent +import net.minecraft.network.chat.contents.LiteralContents +import net.minecraft.network.chat.contents.TranslatableContents +import net.minecraft.resources.ResourceLocation import net.minecraft.world.Container import net.minecraft.world.entity.Entity -import net.minecraft.world.entity.LivingEntity +import net.minecraft.world.item.Item import net.minecraft.world.item.ItemStack import net.minecraft.world.phys.Vec3 import net.minecraftforge.common.util.LazyOptional -import net.minecraftforge.energy.CapabilityEnergy import net.minecraftforge.items.IItemHandler -import ru.dbotthepony.mc.otm.capability.MatteryCapability +import net.minecraftforge.registries.ForgeRegistries +import net.minecraftforge.registries.IForgeRegistry import java.util.* -import java.util.function.Consumer import kotlin.properties.ReadWriteProperty import kotlin.reflect.KProperty diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/Ticker.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/Ticker.kt index deb8c09c9..c4d4d5c0d 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/Ticker.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/Ticker.kt @@ -6,7 +6,7 @@ package ru.dbotthepony.mc.otm import net.minecraft.world.level.Level import net.minecraftforge.event.TickEvent import net.minecraftforge.event.TickEvent.ServerTickEvent -import net.minecraftforge.event.TickEvent.WorldTickEvent +import net.minecraftforge.event.TickEvent.LevelTickEvent import net.minecraftforge.event.server.ServerAboutToStartEvent import net.minecraftforge.event.server.ServerStoppedEvent import net.minecraftforge.event.server.ServerStoppingEvent @@ -118,9 +118,9 @@ fun addPostServerTickerOnce(ticker: ITickable) { } @SubscribeEvent(priority = EventPriority.LOWEST) -fun onWorldTick(event: WorldTickEvent) { +fun onWorldTick(event: LevelTickEvent) { if (event.phase === TickEvent.Phase.START) { - val it = preWorldTick[event.world] + val it = preWorldTick[event.level] if (it != null) { for (i in it.size - 1 downTo 0) { @@ -134,7 +134,7 @@ fun onWorldTick(event: WorldTickEvent) { } } - val it2 = preWorldTickOnce.remove(event.world) + val it2 = preWorldTickOnce.remove(event.level) if (it2 != null) { for (i in it2.size - 1 downTo 0) { @@ -143,7 +143,7 @@ fun onWorldTick(event: WorldTickEvent) { } } } else { - val it = postWorldTick[event.world] + val it = postWorldTick[event.level] if (it != null) { for (i in it.size - 1 downTo 0) { @@ -157,7 +157,7 @@ fun onWorldTick(event: WorldTickEvent) { } } - val it2 = postWorldTickOnce.remove(event.world) + val it2 = postWorldTickOnce.remove(event.level) if (it2 != null) { for (i in it2.size - 1 downTo 0) { diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/UnOverengineering.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/UnOverengineering.kt new file mode 100644 index 000000000..4a48fdd83 --- /dev/null +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/UnOverengineering.kt @@ -0,0 +1,30 @@ +package ru.dbotthepony.mc.otm + +import net.minecraft.network.FriendlyByteBuf +import net.minecraft.network.chat.MutableComponent +import net.minecraft.network.chat.contents.LiteralContents +import net.minecraft.network.chat.contents.TranslatableContents +import net.minecraft.resources.ResourceLocation +import net.minecraft.world.item.Item +import net.minecraft.world.level.block.Block +import net.minecraftforge.registries.ForgeRegistries +import net.minecraftforge.registries.IForgeRegistry + +// 1.19 being 1.19 +fun TranslatableComponent(key: String, vararg values: Any) = MutableComponent.create(TranslatableContents(key, *values)) +fun TextComponent(value: String) = MutableComponent.create(LiteralContents(value)) + +fun IForgeRegistry.getKeyNullable(value: T): ResourceLocation? { + val key = getResourceKey(value) + + if (key.isPresent) { + return key.get().location() + } + + return null +} + +val Item.registryName get() = ForgeRegistries.ITEMS.getKeyNullable(this) +val Block.registryName get() = ForgeRegistries.BLOCKS.getKeyNullable(this) + +fun FriendlyByteBuf.writeRegistryId(value: Item) = writeRegistryId(ForgeRegistries.ITEMS, value) diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/android/AndroidFeatureType.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/android/AndroidFeatureType.kt index 55bc40d72..b02ced6f2 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/android/AndroidFeatureType.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/android/AndroidFeatureType.kt @@ -1,11 +1,14 @@ package ru.dbotthepony.mc.otm.android import net.minecraft.network.chat.Component -import net.minecraft.network.chat.TranslatableComponent -import net.minecraftforge.registries.ForgeRegistryEntry +import net.minecraft.network.chat.ComponentContents +import net.minecraft.network.chat.MutableComponent +import net.minecraft.network.chat.contents.TranslatableContents import ru.dbotthepony.mc.otm.capability.android.AndroidCapability +import ru.dbotthepony.mc.otm.getKeyNullable +import ru.dbotthepony.mc.otm.registry.MRegistry -open class AndroidFeatureType : ForgeRegistryEntry> { +open class AndroidFeatureType { private val factory: (AndroidFeatureType, AndroidCapability) -> T constructor(factory: (AndroidCapability) -> T) : super() { @@ -22,8 +25,17 @@ open class AndroidFeatureType : ForgeRegistryEntry { @@ -13,7 +16,7 @@ fun interface AndroidResearchFactory { open class AndroidResearchType( protected val factory: AndroidResearchFactory -) : ForgeRegistryEntry>() { +) { open val prerequisites: List> get() = emptyList() open val blockedBy: List> get() = emptyList() @@ -47,6 +50,11 @@ open class AndroidResearchType( fun factory(capability: AndroidCapabilityPlayer) = factory.factory(this, capability) + val registryName by lazy { + check(IS_REGISTRY_INITIALIZED) { "Trying to access registryName too early!" } + MRegistry.ANDROID_RESEARCH.getKeyNullable(this) + } + val displayId by lazy { val registryName = registryName ?: throw NullPointerException("No registry name present") return@lazy "android_research.${registryName.namespace}.${registryName.path}".intern() @@ -56,8 +64,12 @@ open class AndroidResearchType( return@lazy "$displayId.description".intern() } + open val displayContents: ComponentContents by lazy { + TranslatableContents(displayId) + } + open val displayName: Component by lazy { - TranslatableComponent(displayId) + MutableComponent.create(displayContents) } open val displayDescription: List by lazy { diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/AndroidStationBlockEntity.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/AndroidStationBlockEntity.kt index 9c6bffc39..4f10b75bb 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/AndroidStationBlockEntity.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/AndroidStationBlockEntity.kt @@ -2,7 +2,6 @@ package ru.dbotthepony.mc.otm.block.entity import net.minecraft.core.BlockPos import net.minecraft.network.chat.Component -import net.minecraft.network.chat.TranslatableComponent import net.minecraft.world.MenuProvider import net.minecraft.world.entity.LivingEntity import net.minecraft.world.entity.player.Inventory @@ -10,6 +9,7 @@ import net.minecraft.world.entity.player.Player import net.minecraft.world.inventory.AbstractContainerMenu import net.minecraft.world.level.block.state.BlockState import net.minecraft.world.phys.AABB +import ru.dbotthepony.mc.otm.TranslatableComponent import ru.dbotthepony.mc.otm.capability.MatteryCapability import ru.dbotthepony.mc.otm.capability.WorkerEnergyStorage import ru.dbotthepony.mc.otm.core.ImpreciseFraction diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/BatteryBankBlockEntity.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/BatteryBankBlockEntity.kt index a0dfe7dde..359727733 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/BatteryBankBlockEntity.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/BatteryBankBlockEntity.kt @@ -5,7 +5,6 @@ import net.minecraft.core.BlockPos import net.minecraft.core.Direction import net.minecraft.nbt.CompoundTag import net.minecraft.network.chat.Component -import net.minecraft.network.chat.TranslatableComponent import net.minecraft.server.level.ServerLevel import net.minecraft.world.entity.player.Inventory import net.minecraft.world.entity.player.Player diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/CargoCrateBlockEntity.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/CargoCrateBlockEntity.kt index fcc7e3e6a..46019aa98 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/CargoCrateBlockEntity.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/CargoCrateBlockEntity.kt @@ -4,7 +4,6 @@ import net.minecraft.core.BlockPos import net.minecraft.core.Direction import net.minecraft.nbt.CompoundTag import net.minecraft.network.chat.Component -import net.minecraft.network.chat.TranslatableComponent import net.minecraft.world.entity.player.Inventory import net.minecraft.world.entity.player.Player import net.minecraft.world.inventory.AbstractContainerMenu @@ -13,6 +12,7 @@ import net.minecraft.world.level.block.state.BlockState import net.minecraftforge.common.capabilities.Capability import net.minecraftforge.common.util.LazyOptional import net.minecraftforge.items.CapabilityItemHandler +import ru.dbotthepony.mc.otm.TranslatableComponent import ru.dbotthepony.mc.otm.block.CargoCrateBlock import ru.dbotthepony.mc.otm.container.MatteryContainer import ru.dbotthepony.mc.otm.ifHas diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/ChemicalGeneratorBlockEntity.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/ChemicalGeneratorBlockEntity.kt index 9ad7edf79..a43753c26 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/ChemicalGeneratorBlockEntity.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/ChemicalGeneratorBlockEntity.kt @@ -5,7 +5,6 @@ import net.minecraft.core.Direction import net.minecraft.nbt.CompoundTag import net.minecraft.nbt.IntTag import net.minecraft.network.chat.Component -import net.minecraft.network.chat.TranslatableComponent import net.minecraft.world.entity.player.Inventory import net.minecraft.world.entity.player.Player import net.minecraft.world.inventory.AbstractContainerMenu @@ -196,7 +195,7 @@ class ChemicalGeneratorBlockEntity(pos: BlockPos, state: BlockState) : MatteryBl if (workingTicks == 0 && !isBlockedByRedstone && check) { if (!container[SLOT_INPUT].isEmpty) { val ticks = ForgeHooks.getBurnTime(container[SLOT_INPUT], null) - val residue = container[SLOT_INPUT].item.getContainerItem(container[SLOT_INPUT].copy().also { it.count = 1 }) + val residue = container[SLOT_INPUT].item.getCraftingRemainingItem(container[SLOT_INPUT].copy().also { it.count = 1 }) val canPutResidue = residue.isEmpty || container[SLOT_RESIDUE].isEmpty || ItemStack.isSameItemSameTags(container[SLOT_RESIDUE], residue) && container[SLOT_RESIDUE].count < container[2].maxStackSize if (canPutResidue && ticks >= 4 && (energy.batteryLevel < ImpreciseFraction.ONE || GENERATION_SPEED * (ticks / 4) + energy.batteryLevel <= energy.maxBatteryLevel)) { diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/EnergyCounterBlockEntity.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/EnergyCounterBlockEntity.kt index c0881a49c..94ef16f9f 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/EnergyCounterBlockEntity.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/EnergyCounterBlockEntity.kt @@ -9,7 +9,6 @@ import net.minecraft.nbt.IntTag import net.minecraft.nbt.ListTag import net.minecraft.network.FriendlyByteBuf import net.minecraft.network.chat.Component -import net.minecraft.network.chat.TranslatableComponent import net.minecraft.server.level.ServerLevel import net.minecraft.world.entity.player.Inventory import net.minecraft.world.entity.player.Player diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/GravitationStabilizerBlockEntity.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/GravitationStabilizerBlockEntity.kt index c1bf8aa28..bbeb3c1d6 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/GravitationStabilizerBlockEntity.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/GravitationStabilizerBlockEntity.kt @@ -3,13 +3,13 @@ package ru.dbotthepony.mc.otm.block.entity import net.minecraft.core.BlockPos import net.minecraft.core.SectionPos import net.minecraft.network.chat.Component -import net.minecraft.network.chat.TranslatableComponent import net.minecraft.world.entity.player.Inventory import net.minecraft.world.entity.player.Player import net.minecraft.world.level.Level import net.minecraft.world.level.block.Block import net.minecraft.world.level.block.state.BlockState import net.minecraft.world.phys.AABB +import ru.dbotthepony.mc.otm.TranslatableComponent import ru.dbotthepony.mc.otm.block.BlockGravitationStabilizer import ru.dbotthepony.mc.otm.block.BlockGravitationStabilizerLens import ru.dbotthepony.mc.otm.block.RotatableMatteryBlock diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/PatternStorageBlockEntity.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/PatternStorageBlockEntity.kt index 249098520..d531dbaa1 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/PatternStorageBlockEntity.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/PatternStorageBlockEntity.kt @@ -17,11 +17,11 @@ import ru.dbotthepony.mc.otm.menu.PatternStorageMenu import net.minecraft.MethodsReturnNonnullByDefault import net.minecraft.core.Direction import net.minecraft.network.chat.Component -import net.minecraft.network.chat.TranslatableComponent import net.minecraft.server.level.ServerLevel import net.minecraft.world.level.Level import net.minecraft.world.level.block.Block import net.minecraftforge.common.capabilities.Capability +import ru.dbotthepony.mc.otm.TranslatableComponent import ru.dbotthepony.mc.otm.capability.matter.* import ru.dbotthepony.mc.otm.graph.Graph6Node import ru.dbotthepony.mc.otm.graph.matter.IMatterGraphNode diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/PlatePressBlockEntity.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/PlatePressBlockEntity.kt index 1ddddf8f5..c02389e33 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/PlatePressBlockEntity.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/PlatePressBlockEntity.kt @@ -4,7 +4,6 @@ import net.minecraft.core.BlockPos import net.minecraft.core.Direction import net.minecraft.nbt.CompoundTag import net.minecraft.network.chat.Component -import net.minecraft.network.chat.TranslatableComponent import net.minecraft.world.entity.player.Inventory import net.minecraft.world.entity.player.Player import net.minecraft.world.inventory.AbstractContainerMenu @@ -13,6 +12,7 @@ import net.minecraft.world.level.block.state.BlockState import net.minecraftforge.common.capabilities.Capability import net.minecraftforge.common.util.LazyOptional import net.minecraftforge.items.CapabilityItemHandler +import ru.dbotthepony.mc.otm.TranslatableComponent import ru.dbotthepony.mc.otm.block.entity.worker.MatteryWorkerBlockEntity import ru.dbotthepony.mc.otm.block.entity.worker.WorkerJob import ru.dbotthepony.mc.otm.block.entity.worker.WorkerJobStatus diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/RedstoneSetting.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/RedstoneSetting.kt index 1334918da..bbc5a14a3 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/RedstoneSetting.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/RedstoneSetting.kt @@ -1,9 +1,9 @@ package ru.dbotthepony.mc.otm.block.entity import net.minecraft.network.chat.Component -import net.minecraft.network.chat.TranslatableComponent +import ru.dbotthepony.mc.otm.TranslatableComponent -enum class RedstoneSetting(val label: TranslatableComponent, val description: TranslatableComponent) { +enum class RedstoneSetting(val label: Component, val description: Component) { IGNORED(TranslatableComponent("otm.gui.redstone.ignored"), TranslatableComponent("otm.gui.redstone.ignored.description")), LOW(TranslatableComponent("otm.gui.redstone.low"), TranslatableComponent("otm.gui.redstone.low.description")), HIGH(TranslatableComponent("otm.gui.redstone.high"), TranslatableComponent("otm.gui.redstone.high.description")); diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/blackhole/Explosions.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/blackhole/Explosions.kt index ecc16137c..c5cb83b06 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/blackhole/Explosions.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/blackhole/Explosions.kt @@ -669,9 +669,9 @@ class ExplosionQueue(private val level: ServerLevel) : SavedData() { } @SubscribeEvent - fun onWorldTick(event: TickEvent.WorldTickEvent) { - if (event.phase == TickEvent.Phase.START && event.world is ServerLevel) { - queueForLevel(event.world as ServerLevel).tick() + fun onWorldTick(event: TickEvent.LevelTickEvent) { + if (event.phase == TickEvent.Phase.START && event.level is ServerLevel) { + queueForLevel(event.level as ServerLevel).tick() } } } diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/matter/MatterBottlerBlockEntity.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/matter/MatterBottlerBlockEntity.kt index ff6586ee9..7d42b525a 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/matter/MatterBottlerBlockEntity.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/matter/MatterBottlerBlockEntity.kt @@ -4,7 +4,6 @@ import net.minecraft.core.BlockPos import net.minecraft.core.Direction import net.minecraft.nbt.CompoundTag import net.minecraft.network.chat.Component -import net.minecraft.network.chat.TranslatableComponent import net.minecraft.server.level.ServerLevel import net.minecraft.world.entity.player.Inventory import net.minecraft.world.entity.player.Player @@ -16,6 +15,7 @@ import net.minecraft.world.level.block.state.BlockState import net.minecraftforge.common.capabilities.Capability import net.minecraftforge.common.util.LazyOptional import net.minecraftforge.items.CapabilityItemHandler +import ru.dbotthepony.mc.otm.TranslatableComponent import ru.dbotthepony.mc.otm.block.matter.MatterBottlerBlock import ru.dbotthepony.mc.otm.block.entity.MatteryPoweredBlockEntity import ru.dbotthepony.mc.otm.block.entity.worker.WorkerState diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/matter/MatterCapacitorBankBlockEntity.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/matter/MatterCapacitorBankBlockEntity.kt index 28386db29..5a87cf830 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/matter/MatterCapacitorBankBlockEntity.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/matter/MatterCapacitorBankBlockEntity.kt @@ -5,7 +5,6 @@ import net.minecraft.core.BlockPos import net.minecraft.core.Direction import net.minecraft.nbt.CompoundTag import net.minecraft.network.chat.Component -import net.minecraft.network.chat.TranslatableComponent import net.minecraft.server.level.ServerLevel import net.minecraft.world.entity.player.Inventory import net.minecraft.world.entity.player.Player @@ -16,6 +15,7 @@ import net.minecraft.world.level.block.Block import net.minecraft.world.level.block.state.BlockState import net.minecraftforge.common.capabilities.Capability import net.minecraftforge.common.util.LazyOptional +import ru.dbotthepony.mc.otm.TranslatableComponent import ru.dbotthepony.mc.otm.block.BatteryBankBlock import ru.dbotthepony.mc.otm.block.entity.MatteryBlockEntity import ru.dbotthepony.mc.otm.capability.MatteryCapability diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/matter/MatterDecomposerBlockEntity.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/matter/MatterDecomposerBlockEntity.kt index 49680d66f..1b97ca714 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/matter/MatterDecomposerBlockEntity.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/matter/MatterDecomposerBlockEntity.kt @@ -4,7 +4,6 @@ import net.minecraft.core.BlockPos import net.minecraft.core.Direction import net.minecraft.nbt.CompoundTag import net.minecraft.network.chat.Component -import net.minecraft.network.chat.TranslatableComponent import net.minecraft.server.level.ServerLevel import net.minecraft.world.entity.player.Inventory import net.minecraft.world.entity.player.Player @@ -16,6 +15,7 @@ import net.minecraftforge.common.capabilities.Capability import net.minecraftforge.common.util.LazyOptional import net.minecraftforge.items.CapabilityItemHandler import net.minecraftforge.items.IItemHandler +import ru.dbotthepony.mc.otm.TranslatableComponent import ru.dbotthepony.mc.otm.block.entity.worker.MatteryWorkerBlockEntity import ru.dbotthepony.mc.otm.block.entity.worker.WorkerJob import ru.dbotthepony.mc.otm.block.entity.worker.WorkerJobStatus diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/matter/MatterPanelBlockEntity.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/matter/MatterPanelBlockEntity.kt index 7903bc206..ac0da2868 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/matter/MatterPanelBlockEntity.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/matter/MatterPanelBlockEntity.kt @@ -20,10 +20,10 @@ import net.minecraft.nbt.CompoundTag import net.minecraft.nbt.ListTag import net.minecraft.nbt.Tag import net.minecraft.network.chat.Component -import net.minecraft.network.chat.TranslatableComponent import net.minecraft.server.level.ServerLevel import net.minecraft.world.level.Level import net.minecraftforge.common.capabilities.Capability +import ru.dbotthepony.mc.otm.TranslatableComponent import ru.dbotthepony.mc.otm.block.entity.MatteryBlockEntity import ru.dbotthepony.mc.otm.graph.Graph6Node import ru.dbotthepony.mc.otm.graph.matter.IMatterGraphNode diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/matter/MatterRecyclerBlockEntity.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/matter/MatterRecyclerBlockEntity.kt index a46bf89db..13c847970 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/matter/MatterRecyclerBlockEntity.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/matter/MatterRecyclerBlockEntity.kt @@ -4,7 +4,6 @@ import net.minecraft.core.BlockPos import net.minecraft.core.Direction import net.minecraft.nbt.CompoundTag import net.minecraft.network.chat.Component -import net.minecraft.network.chat.TranslatableComponent import net.minecraft.server.level.ServerLevel import net.minecraft.world.entity.player.Inventory import net.minecraft.world.entity.player.Player @@ -15,6 +14,7 @@ import net.minecraft.world.level.block.state.BlockState import net.minecraftforge.common.capabilities.Capability import net.minecraftforge.common.util.LazyOptional import net.minecraftforge.items.CapabilityItemHandler +import ru.dbotthepony.mc.otm.TranslatableComponent import ru.dbotthepony.mc.otm.block.entity.worker.MatteryWorkerBlockEntity import ru.dbotthepony.mc.otm.block.entity.worker.WorkerJob import ru.dbotthepony.mc.otm.block.entity.worker.WorkerJobStatus diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/matter/MatterReplicatorBlockEntity.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/matter/MatterReplicatorBlockEntity.kt index b65866f14..bdcdc5286 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/matter/MatterReplicatorBlockEntity.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/matter/MatterReplicatorBlockEntity.kt @@ -4,7 +4,6 @@ import net.minecraft.core.BlockPos import net.minecraft.core.Direction import net.minecraft.nbt.CompoundTag import net.minecraft.network.chat.Component -import net.minecraft.network.chat.TranslatableComponent import net.minecraft.server.level.ServerLevel import net.minecraft.world.entity.player.Inventory import net.minecraft.world.entity.player.Player @@ -14,6 +13,7 @@ import net.minecraft.world.level.block.state.BlockState import net.minecraftforge.common.capabilities.Capability import net.minecraftforge.common.util.LazyOptional import net.minecraftforge.items.CapabilityItemHandler +import ru.dbotthepony.mc.otm.TranslatableComponent import ru.dbotthepony.mc.otm.block.entity.worker.MatteryWorkerBlockEntity import ru.dbotthepony.mc.otm.block.entity.worker.WorkerJob import ru.dbotthepony.mc.otm.block.entity.worker.WorkerJobStatus diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/matter/MatterScannerBlockEntity.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/matter/MatterScannerBlockEntity.kt index 25781f836..020e67d48 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/matter/MatterScannerBlockEntity.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/matter/MatterScannerBlockEntity.kt @@ -4,7 +4,6 @@ import net.minecraft.core.BlockPos import net.minecraft.core.Direction import net.minecraft.nbt.CompoundTag import net.minecraft.network.chat.Component -import net.minecraft.network.chat.TranslatableComponent import net.minecraft.server.level.ServerLevel import net.minecraft.world.entity.player.Inventory import net.minecraft.world.entity.player.Player @@ -15,6 +14,7 @@ import net.minecraft.world.level.block.state.BlockState import net.minecraftforge.common.capabilities.Capability import net.minecraftforge.common.util.LazyOptional import net.minecraftforge.items.CapabilityItemHandler +import ru.dbotthepony.mc.otm.TranslatableComponent import ru.dbotthepony.mc.otm.block.entity.worker.MatteryWorkerBlockEntity import ru.dbotthepony.mc.otm.block.entity.worker.WorkerJob import ru.dbotthepony.mc.otm.block.entity.worker.WorkerJobStatus diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/storage/DriveRackBlockEntity.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/storage/DriveRackBlockEntity.kt index 8bdf0a313..2e2e46026 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/storage/DriveRackBlockEntity.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/storage/DriveRackBlockEntity.kt @@ -4,7 +4,6 @@ import net.minecraft.core.BlockPos import net.minecraft.core.Direction import net.minecraft.nbt.CompoundTag import net.minecraft.network.chat.Component -import net.minecraft.network.chat.TranslatableComponent import net.minecraft.server.level.ServerLevel import net.minecraft.world.entity.player.Inventory import net.minecraft.world.entity.player.Player @@ -14,6 +13,7 @@ import net.minecraft.world.level.Level import net.minecraft.world.level.block.state.BlockState import net.minecraftforge.common.capabilities.Capability import net.minecraftforge.common.util.LazyOptional +import ru.dbotthepony.mc.otm.TranslatableComponent import ru.dbotthepony.mc.otm.block.entity.MatteryPoweredBlockEntity import ru.dbotthepony.mc.otm.graph.storage.BasicStorageGraphNode import ru.dbotthepony.mc.otm.capability.MatteryCapability diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/storage/DriveViewerBlockEntity.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/storage/DriveViewerBlockEntity.kt index dadda42d9..eb83c3295 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/storage/DriveViewerBlockEntity.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/storage/DriveViewerBlockEntity.kt @@ -4,7 +4,6 @@ import net.minecraft.MethodsReturnNonnullByDefault import net.minecraft.core.BlockPos import net.minecraft.nbt.CompoundTag import net.minecraft.network.chat.Component -import net.minecraft.network.chat.TranslatableComponent import net.minecraft.world.entity.player.Inventory import net.minecraft.world.entity.player.Player import net.minecraft.world.inventory.AbstractContainerMenu @@ -12,6 +11,7 @@ import net.minecraft.world.item.ItemStack import net.minecraft.world.level.block.Block import net.minecraft.world.level.block.state.BlockState import ru.dbotthepony.mc.otm.OverdriveThatMatters +import ru.dbotthepony.mc.otm.TranslatableComponent import ru.dbotthepony.mc.otm.block.entity.MatteryPoweredBlockEntity import ru.dbotthepony.mc.otm.block.storage.DriveViewerBlock import ru.dbotthepony.mc.otm.block.entity.worker.WorkerState diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/storage/ItemMonitorBlockEntity.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/storage/ItemMonitorBlockEntity.kt index cbb109b60..739669a47 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/storage/ItemMonitorBlockEntity.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/storage/ItemMonitorBlockEntity.kt @@ -8,7 +8,6 @@ import net.minecraft.nbt.CompoundTag import net.minecraft.nbt.StringTag import net.minecraft.network.FriendlyByteBuf import net.minecraft.network.chat.Component -import net.minecraft.network.chat.TranslatableComponent import net.minecraft.server.level.ServerLevel import net.minecraft.server.level.ServerPlayer import net.minecraft.world.Container @@ -19,8 +18,6 @@ import net.minecraft.world.inventory.CraftingContainer import net.minecraft.world.item.ItemStack import net.minecraft.world.item.crafting.CraftingRecipe import net.minecraft.world.item.crafting.RecipeType -import net.minecraft.world.item.crafting.ShapedRecipe -import net.minecraft.world.item.crafting.ShapelessRecipe import net.minecraft.world.level.Level import net.minecraft.world.level.block.state.BlockState import net.minecraftforge.common.ForgeHooks @@ -29,6 +26,7 @@ import net.minecraftforge.common.util.INBTSerializable import net.minecraftforge.common.util.LazyOptional import net.minecraftforge.network.NetworkEvent import org.apache.logging.log4j.LogManager +import ru.dbotthepony.mc.otm.TranslatableComponent import ru.dbotthepony.mc.otm.block.entity.MatteryPoweredBlockEntity import ru.dbotthepony.mc.otm.capability.MatteryCapability import ru.dbotthepony.mc.otm.capability.WorkerEnergyStorage @@ -49,7 +47,7 @@ import kotlin.collections.HashMap import kotlin.collections.HashSet class ItemMonitorPlayerSettings : INBTSerializable { - enum class RefillSource(val component: TranslatableComponent) { + enum class RefillSource(val component: Component) { // Refill everything from system SYSTEM(TranslatableComponent("otm.gui.item_monitor.refill_source.system")), @@ -66,7 +64,7 @@ class ItemMonitorPlayerSettings : INBTSerializable { DO_NOT(TranslatableComponent("otm.gui.item_monitor.refill_source.do_not")), } - enum class ResultTarget(val component: TranslatableComponent) { + enum class ResultTarget(val component: Component) { // Everything goes into storage system ALL_SYSTEM(TranslatableComponent("otm.gui.item_monitor.result_target.all_system")), @@ -78,7 +76,7 @@ class ItemMonitorPlayerSettings : INBTSerializable { ALL_INVENTORY(TranslatableComponent("otm.gui.item_monitor.result_target.all_inventory")), } - enum class Amount(val component: TranslatableComponent) { + enum class Amount(val component: Component) { ONE(TranslatableComponent("otm.gui.item_monitor.amount.one")), STACK(TranslatableComponent("otm.gui.item_monitor.amount.stack")), FULL(TranslatableComponent("otm.gui.item_monitor.amount.full")) @@ -251,6 +249,10 @@ class ItemMonitorBlockEntity(p_155229_: BlockPos, p_155230_: BlockState) : override fun stillValid(p_38874_: Player): Boolean { return true } + + override fun quickMoveStack(p_38941_: Player, p_38942_: Int): ItemStack { + return ItemStack.EMPTY + } } private val craftingGridDummy = CraftingContainer(craftingMenu, 3, 3) diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/storage/StorageBusBlockEntity.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/storage/StorageBusBlockEntity.kt index 97bd99112..f6f5921aa 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/storage/StorageBusBlockEntity.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/storage/StorageBusBlockEntity.kt @@ -6,7 +6,6 @@ import net.minecraft.core.BlockPos import net.minecraft.core.Direction import net.minecraft.nbt.CompoundTag import net.minecraft.network.chat.Component -import net.minecraft.network.chat.TranslatableComponent import net.minecraft.server.level.ServerLevel import net.minecraft.world.entity.player.Inventory import net.minecraft.world.entity.player.Player diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/storage/StorageInterfaces.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/storage/StorageInterfaces.kt index 6a6f89155..729105d70 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/storage/StorageInterfaces.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/storage/StorageInterfaces.kt @@ -1,11 +1,9 @@ package ru.dbotthepony.mc.otm.block.entity.storage -import it.unimi.dsi.fastutil.longs.LongArraySet import net.minecraft.core.BlockPos import net.minecraft.core.Direction import net.minecraft.nbt.CompoundTag import net.minecraft.network.chat.Component -import net.minecraft.network.chat.TranslatableComponent import net.minecraft.server.level.ServerLevel import net.minecraft.world.entity.player.Inventory import net.minecraft.world.entity.player.Player diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/storage/StoragePowerSupplierBlockEntity.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/storage/StoragePowerSupplierBlockEntity.kt index 0fc105718..5194289da 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/storage/StoragePowerSupplierBlockEntity.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/storage/StoragePowerSupplierBlockEntity.kt @@ -4,7 +4,6 @@ import net.minecraft.core.BlockPos import net.minecraft.core.Direction import net.minecraft.nbt.CompoundTag import net.minecraft.network.chat.Component -import net.minecraft.network.chat.TranslatableComponent import net.minecraft.server.level.ServerLevel import net.minecraft.world.entity.player.Inventory import net.minecraft.world.entity.player.Player @@ -14,6 +13,7 @@ import net.minecraft.world.level.block.state.BlockState import net.minecraftforge.common.capabilities.Capability import net.minecraftforge.common.util.LazyOptional import ru.dbotthepony.mc.otm.OverdriveThatMatters +import ru.dbotthepony.mc.otm.TranslatableComponent import ru.dbotthepony.mc.otm.block.entity.MatteryPoweredBlockEntity import ru.dbotthepony.mc.otm.capability.MatteryCapability import ru.dbotthepony.mc.otm.capability.WorkerEnergyStorage diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/capability/android/AndroidCapability.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/capability/android/AndroidCapability.kt index 4828168bf..1e8b4a35b 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/capability/android/AndroidCapability.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/capability/android/AndroidCapability.kt @@ -26,7 +26,7 @@ import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent import net.minecraft.world.effect.MobEffects import net.minecraftforge.common.capabilities.Capability import net.minecraftforge.eventbus.api.SubscribeEvent -import net.minecraftforge.event.entity.living.LivingEvent.LivingUpdateEvent +import net.minecraftforge.event.entity.living.LivingEvent.LivingTickEvent import net.minecraftforge.eventbus.api.EventPriority import ru.dbotthepony.mc.otm.capability.IMatteryEnergyStorage import ru.dbotthepony.mc.otm.capability.extractEnergy @@ -417,7 +417,7 @@ open class AndroidCapability(final override val entity: LivingEntity) : ICapabil } @SubscribeEvent - fun onLivingTick(event: LivingUpdateEvent) { + fun onLivingTick(event: LivingTickEvent) { val ent = event.entity if (ent.level.isClientSide) { diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/capability/android/AndroidCapabilityPlayer.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/capability/android/AndroidCapabilityPlayer.kt index 437d0cabe..2b30c516a 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/capability/android/AndroidCapabilityPlayer.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/capability/android/AndroidCapabilityPlayer.kt @@ -4,7 +4,6 @@ import net.minecraft.ChatFormatting import net.minecraft.nbt.CompoundTag import net.minecraft.nbt.ListTag import net.minecraft.nbt.Tag -import net.minecraft.network.chat.TranslatableComponent import net.minecraft.resources.ResourceLocation import net.minecraft.server.level.ServerPlayer import net.minecraft.world.entity.Entity @@ -15,6 +14,7 @@ import net.minecraftforge.event.entity.player.PlayerEvent.Clone import net.minecraftforge.event.entity.player.PlayerEvent.PlayerChangedDimensionEvent import net.minecraftforge.eventbus.api.SubscribeEvent import net.minecraftforge.network.PacketDistributor +import ru.dbotthepony.mc.otm.TranslatableComponent import ru.dbotthepony.mc.otm.android.AndroidResearch import ru.dbotthepony.mc.otm.android.AndroidResearchType import ru.dbotthepony.mc.otm.capability.MatteryCapability @@ -318,13 +318,13 @@ class AndroidCapabilityPlayer(val ply: Player) : AndroidCapability(ply) { @SubscribeEvent fun onPlayerChangeDimensionEvent(event: PlayerChangedDimensionEvent) { - event.player.getCapability(MatteryCapability.ANDROID) + event.entity.getCapability(MatteryCapability.ANDROID) .ifPresentK { (it as AndroidCapabilityPlayer).invalidateNetworkState() } } @SubscribeEvent fun onPlayerCloneEvent(event: Clone) { - val it = event.player.android as AndroidCapabilityPlayer? ?: return + val it = event.entity.android as AndroidCapabilityPlayer? ?: return var resolver = event.original.getCapability(MatteryCapability.ANDROID) @@ -342,7 +342,7 @@ class AndroidCapabilityPlayer(val ply: Player) : AndroidCapability(ply) { if (original.willBecomeAndroid && event.isWasDeath) { original.becomeAndroid() - (event.player as? ServerPlayer)?.displayClientMessage(TranslatableComponent("otm.pill.message_finish").withStyle(ChatFormatting.DARK_RED), false) + (event.entity as? ServerPlayer)?.displayClientMessage(TranslatableComponent("otm.pill.message_finish").withStyle(ChatFormatting.DARK_RED), false) } it.deserializeNBT(original.serializeNBT()) diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/capability/drive/DrivePool.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/capability/drive/DrivePool.kt index bcb4e7bfb..93d67dbff 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/capability/drive/DrivePool.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/capability/drive/DrivePool.kt @@ -15,7 +15,7 @@ import net.minecraftforge.event.TickEvent.ServerTickEvent import net.minecraftforge.event.TickEvent import net.minecraftforge.event.server.ServerAboutToStartEvent import net.minecraftforge.event.server.ServerStoppingEvent -import net.minecraftforge.event.world.WorldEvent +import net.minecraftforge.event.level.LevelEvent import org.apache.logging.log4j.LogManager import ru.dbotthepony.mc.otm.SERVER_IS_DYING import java.io.File @@ -193,7 +193,7 @@ object DrivePool { } @SubscribeEvent - fun onWorldSave(event: WorldEvent.Save) { + fun onWorldSave(event: LevelEvent.Save) { writeBacklog() } diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/client/AndroidGui.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/client/AndroidGui.kt new file mode 100644 index 000000000..8ed8457ab --- /dev/null +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/client/AndroidGui.kt @@ -0,0 +1,186 @@ +package ru.dbotthepony.mc.otm.client + +import com.mojang.blaze3d.systems.RenderSystem +import net.minecraft.client.gui.components.Button +import net.minecraft.client.gui.screens.DeathScreen +import net.minecraft.client.gui.screens.InBedChatScreen +import net.minecraft.client.player.LocalPlayer +import net.minecraft.resources.ResourceLocation +import net.minecraft.world.effect.MobEffects +import net.minecraft.world.entity.LivingEntity +import net.minecraft.world.entity.player.Player +import net.minecraftforge.client.event.RenderGuiOverlayEvent +import net.minecraftforge.client.event.ScreenEvent +import net.minecraftforge.client.gui.overlay.ForgeGui +import net.minecraftforge.client.gui.overlay.GuiOverlayManager +import net.minecraftforge.eventbus.api.EventPriority +import net.minecraftforge.eventbus.api.SubscribeEvent +import ru.dbotthepony.mc.otm.OverdriveThatMatters +import ru.dbotthepony.mc.otm.TranslatableComponent +import ru.dbotthepony.mc.otm.capability.MatteryCapability +import ru.dbotthepony.mc.otm.capability.android +import ru.dbotthepony.mc.otm.capability.android.AndroidCapabilityPlayer +import ru.dbotthepony.mc.otm.ifPresentK +import java.util.* + +object AndroidGui { + val PLAYER_GUI_LOCATION = ResourceLocation(OverdriveThatMatters.MOD_ID, "textures/gui/player_gui.png") + + private var knownButtonX = -1 + private var knownButtonY = -1 + private var knownButton: Button? = null + private var knownButtonScreen: InBedChatScreen? = null + + private var lastState: AndroidCapabilityPlayer? = null + + private val button_shaker = Random() + + @SubscribeEvent + fun onScreenRender(event: ScreenEvent.Render.Pre) { + if (knownButtonScreen != null && knownButton == null) { + for (widget in knownButtonScreen!!.renderables) { + if (widget is Button) { + knownButtonX = widget.x + knownButtonY = widget.y + knownButton = widget + break + } + } + if (knownButton == null) { + knownButtonScreen = null + } + } + + if (knownButtonScreen != null && knownButtonScreen !== minecraft.screen) { + knownButtonX = -1 + knownButtonY = -1 + knownButton = null + knownButtonScreen = null + } + + if (knownButtonScreen == null || minecraft.player == null) { + return + } + + minecraft.player?.getCapability(MatteryCapability.ANDROID)?.ifPresentK { + if (!(it as AndroidCapabilityPlayer).willBecomeAndroid) { + knownButton!!.x = knownButtonX + knownButton!!.y = knownButtonY + knownButtonX = -1 + knownButtonY = -1 + knownButton = null + knownButtonScreen = null + return@ifPresentK + } + + val dispersion = (10.0 * Math.max(0, it.sleepTicks - 20) / (AndroidCapabilityPlayer.SLEEP_TICKS_LIMIT - 20)).toInt() + + knownButton!!.x = + knownButtonX - dispersion / 2 + (button_shaker.nextDouble() * dispersion).toInt() + knownButton!!.y = + knownButtonY - dispersion / 2 + (button_shaker.nextDouble() * dispersion).toInt() + } + } + + @SubscribeEvent(priority = EventPriority.LOWEST) + fun onOpenGUIEvent(event: ScreenEvent.Opening) { + knownButtonX = -1 + knownButtonY = -1 + knownButton = null + knownButtonScreen = null + + if (minecraft.player == null) return + + val screen = event.screen + + if (screen is DeathScreen) { + minecraft.player?.getCapability(MatteryCapability.ANDROID)?.ifPresentK { + if (it.isAndroid) screen.title = TranslatableComponent("otm.death_reason") + } + } + + if (screen is InBedChatScreen) { + knownButtonScreen = screen + + minecraft.player?.getCapability(MatteryCapability.ANDROID)?.ifPresentK { + if ((it as AndroidCapabilityPlayer).willBecomeAndroid) { + knownButtonScreen = screen + } + } + } + } + + private val FOOD_LEVEL_ELEMENT by lazy { + GuiOverlayManager.findOverlay(ResourceLocation("minecraft", "food_level")) + } + + private val AIR_LEVEL_ELEMENT by lazy { + GuiOverlayManager.findOverlay(ResourceLocation("minecraft", "air_level")) + } + + @SubscribeEvent(priority = EventPriority.HIGH) + fun onLayerRenderEvent(event: RenderGuiOverlayEvent.Pre) { + if (event.overlay != FOOD_LEVEL_ELEMENT && event.overlay != AIR_LEVEL_ELEMENT) { + return + } + + val ply: LocalPlayer = minecraft.player ?: return + + if (ply.vehicle is LivingEntity || + minecraft.options.hideGui || + minecraft.gameMode?.canHurtPlayer() == false || + minecraft.getCameraEntity() !is Player + ) { + return + } + + val lazy = ply.android + var android: AndroidCapabilityPlayer? = null + + if (lazy != null) { + android = lazy as AndroidCapabilityPlayer + } else if (!ply.isAlive) { + android = lastState + } + + val gui = minecraft.gui as? ForgeGui ?: return + + if (android != null && android.isAndroid) { + event.isCanceled = true + lastState = android + + if (event.overlay === AIR_LEVEL_ELEMENT) { + return + } + + val yOffset = if (ply.hasEffect(MobEffects.HUNGER)) 18 else 0 + var level: Float + + if (android.maxBatteryLevel.isZero) { + level = 0f + } else { + level = android.batteryLevel.div(android.maxBatteryLevel).toFloat() + + if (level >= 0.98f) + level = 1f + } + + gui.setupOverlayRenderState(true, false) + RenderSystem.setShaderColor(1.0f, 1.0f, 1.0f, 1.0f) + RenderSystem.setShaderTexture(0, PLAYER_GUI_LOCATION) + + val width = event.window.guiScaledWidth + val height = event.window.guiScaledHeight + val left = width / 2 + 10 + val top: Int = height - gui.rightHeight + gui.rightHeight += 10 + + // Stack, x, y, blitOffset?, (float) image_x, (float) image_y, rect_x, rect_y, total_image_width, total_image_height + // Stack, x, y, image_x, image_y, rect_x, rect_y + gui.blit(event.poseStack, left, top, 0, yOffset, 80, 9) + val leftPadding = Math.ceil((level * 79f - 0.5f).toDouble()).toInt() + + gui.blit(event.poseStack, left + 79 - leftPadding, top, 79 - leftPadding, yOffset + 9, leftPadding, 9) + } + } +} diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/client/EventHandler.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/client/EventHandler.kt index 60ec9442b..3ceda0d91 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/client/EventHandler.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/client/EventHandler.kt @@ -9,7 +9,7 @@ import ru.dbotthepony.mc.otm.registry.AndroidFeatures @SubscribeEvent @Suppress("unused") fun inputEvent(event: MovementInputUpdateEvent) { - val ply = event.player + val ply = event.entity val input = event.input val cap = ply.android as? AndroidCapabilityPlayer ?: return diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/client/render/BlackHoleRenderer.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/client/render/BlackHoleRenderer.kt index bd7e2bcc1..753e4a14f 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/client/render/BlackHoleRenderer.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/client/render/BlackHoleRenderer.kt @@ -9,9 +9,9 @@ import net.minecraft.client.renderer.MultiBufferSource import net.minecraft.client.renderer.blockentity.BeaconRenderer import net.minecraft.client.renderer.blockentity.BlockEntityRenderer import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider -import net.minecraft.network.chat.TranslatableComponent import net.minecraft.world.phys.Vec3 import org.lwjgl.opengl.GL30 +import ru.dbotthepony.mc.otm.TranslatableComponent import ru.dbotthepony.mc.otm.block.entity.GravitationStabilizerBlockEntity import ru.dbotthepony.mc.otm.block.entity.blackhole.BlackHoleBlockEntity import ru.dbotthepony.mc.otm.capability.MatteryCapability @@ -137,8 +137,9 @@ class BlackHoleRenderer(private val context: BlockEntityRendererProvider.Context poseStack.popPose() - builder.end() - BufferUploader.end(builder) + // builder.end() + // BufferUploader.end(builder) + BufferUploader.draw(builder.end()) RenderSystem.enableCull() } diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/client/render/EnergyCounterRenderer.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/client/render/EnergyCounterRenderer.kt index d627da4d7..d65f88ed8 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/client/render/EnergyCounterRenderer.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/client/render/EnergyCounterRenderer.kt @@ -6,7 +6,7 @@ import net.minecraft.client.renderer.MultiBufferSource import net.minecraft.client.renderer.blockentity.BlockEntityRenderer import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider import net.minecraft.core.Direction -import net.minecraft.network.chat.TranslatableComponent +import ru.dbotthepony.mc.otm.TranslatableComponent import ru.dbotthepony.mc.otm.block.EnergyCounterBlock import ru.dbotthepony.mc.otm.block.entity.EnergyCounterBlockEntity import ru.dbotthepony.mc.otm.core.RGBAColor diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/client/render/GravitationStabilizerRenderer.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/client/render/GravitationStabilizerRenderer.kt index 6d813d9e9..241f206f3 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/client/render/GravitationStabilizerRenderer.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/client/render/GravitationStabilizerRenderer.kt @@ -10,7 +10,7 @@ import net.minecraft.client.renderer.blockentity.BlockEntityRenderer import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider import net.minecraft.client.renderer.texture.OverlayTexture import net.minecraft.core.Direction -import net.minecraft.network.chat.TranslatableComponent +import ru.dbotthepony.mc.otm.TranslatableComponent import ru.dbotthepony.mc.otm.block.BlackHoleBlock import ru.dbotthepony.mc.otm.block.RotatableMatteryBlock import ru.dbotthepony.mc.otm.block.entity.GravitationStabilizerBlockEntity diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/AndroidStationScreen.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/AndroidStationScreen.kt index 8d3683bb0..86c8911d2 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/AndroidStationScreen.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/AndroidStationScreen.kt @@ -6,9 +6,9 @@ import net.minecraft.ChatFormatting import net.minecraft.client.Minecraft import net.minecraft.client.resources.sounds.SimpleSoundInstance import net.minecraft.network.chat.Component -import net.minecraft.network.chat.TranslatableComponent import net.minecraft.sounds.SoundEvents import net.minecraft.world.entity.player.Inventory +import ru.dbotthepony.mc.otm.TranslatableComponent import ru.dbotthepony.mc.otm.android.AndroidResearch import ru.dbotthepony.mc.otm.android.AndroidResearchType import ru.dbotthepony.mc.otm.capability.MatteryCapability diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/ChemicalGeneratorScreen.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/ChemicalGeneratorScreen.kt index 676fcd11f..05e071a9f 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/ChemicalGeneratorScreen.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/ChemicalGeneratorScreen.kt @@ -1,8 +1,8 @@ package ru.dbotthepony.mc.otm.client.screen import net.minecraft.network.chat.Component -import net.minecraft.network.chat.TranslatableComponent import net.minecraft.world.entity.player.Inventory +import ru.dbotthepony.mc.otm.TranslatableComponent import ru.dbotthepony.mc.otm.client.screen.panels.* import ru.dbotthepony.mc.otm.client.screen.widget.PowerGaugePanel import ru.dbotthepony.mc.otm.client.screen.widget.ProgressGaugePanel diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/DriveViewerScreen.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/DriveViewerScreen.kt index 8012f9768..0b32492b5 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/DriveViewerScreen.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/DriveViewerScreen.kt @@ -2,9 +2,9 @@ package ru.dbotthepony.mc.otm.client.screen import com.mojang.blaze3d.vertex.PoseStack import net.minecraft.network.chat.Component -import net.minecraft.network.chat.TranslatableComponent import net.minecraft.world.entity.player.Inventory import net.minecraft.world.item.ItemStack +import ru.dbotthepony.mc.otm.TranslatableComponent import ru.dbotthepony.mc.otm.client.screen.panels.* import ru.dbotthepony.mc.otm.client.screen.widget.PowerGaugePanel import ru.dbotthepony.mc.otm.item.PortableCondensationDriveItem diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/EnergyCounterScreen.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/EnergyCounterScreen.kt index 9f8470b63..4ceb4896f 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/EnergyCounterScreen.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/EnergyCounterScreen.kt @@ -1,8 +1,8 @@ package ru.dbotthepony.mc.otm.client.screen import net.minecraft.network.chat.Component -import net.minecraft.network.chat.TranslatableComponent import net.minecraft.world.entity.player.Inventory +import ru.dbotthepony.mc.otm.TranslatableComponent import ru.dbotthepony.mc.otm.client.screen.panels.* import ru.dbotthepony.mc.otm.core.formatPower import ru.dbotthepony.mc.otm.menu.EnergyCounterMenu diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/ItemMonitorScreen.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/ItemMonitorScreen.kt index d30a4a091..157d817da 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/ItemMonitorScreen.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/ItemMonitorScreen.kt @@ -4,11 +4,11 @@ import com.mojang.blaze3d.systems.RenderSystem import com.mojang.blaze3d.vertex.PoseStack import net.minecraft.ChatFormatting import net.minecraft.network.chat.Component -import net.minecraft.network.chat.TranslatableComponent import net.minecraft.world.entity.player.Inventory import net.minecraft.world.item.ItemStack import net.minecraft.world.item.Items import org.lwjgl.opengl.GL11 +import ru.dbotthepony.mc.otm.TranslatableComponent import ru.dbotthepony.mc.otm.block.entity.storage.ItemMonitorPlayerSettings import ru.dbotthepony.mc.otm.client.render.SkinGrid import ru.dbotthepony.mc.otm.client.render.UVWindingOrder @@ -16,11 +16,9 @@ import ru.dbotthepony.mc.otm.client.screen.panels.* import ru.dbotthepony.mc.otm.client.screen.widget.ProgressGaugePanel import ru.dbotthepony.mc.otm.core.equalDownDivision import ru.dbotthepony.mc.otm.core.formatReadableNumber -import ru.dbotthepony.mc.otm.core.formatSi import ru.dbotthepony.mc.otm.core.formatSiComponent import ru.dbotthepony.mc.otm.menu.ItemMonitorMenu import ru.dbotthepony.mc.otm.storage.ITEM_STORAGE -import java.text.NumberFormat class ItemMonitorScreen(menu: ItemMonitorMenu, inventory: Inventory, title: Component) : MatteryScreen(menu, inventory, title) { diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/MatterBottlerScreen.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/MatterBottlerScreen.kt index d37af67b3..15a02016b 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/MatterBottlerScreen.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/MatterBottlerScreen.kt @@ -1,8 +1,8 @@ package ru.dbotthepony.mc.otm.client.screen import net.minecraft.network.chat.Component -import net.minecraft.network.chat.TranslatableComponent import net.minecraft.world.entity.player.Inventory +import ru.dbotthepony.mc.otm.TranslatableComponent import ru.dbotthepony.mc.otm.client.screen.panels.ButtonPanel import ru.dbotthepony.mc.otm.client.screen.panels.FramePanel import ru.dbotthepony.mc.otm.client.screen.panels.SlotPanel diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/StorageBusScreen.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/StorageBusScreen.kt index e976385e3..7a15af8f4 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/StorageBusScreen.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/StorageBusScreen.kt @@ -1,8 +1,8 @@ package ru.dbotthepony.mc.otm.client.screen import net.minecraft.network.chat.Component -import net.minecraft.network.chat.TranslatableComponent import net.minecraft.world.entity.player.Inventory +import ru.dbotthepony.mc.otm.TranslatableComponent import ru.dbotthepony.mc.otm.client.screen.panels.CheckBoxLabelInputPanel import ru.dbotthepony.mc.otm.client.screen.panels.FilterSlotPanel import ru.dbotthepony.mc.otm.client.screen.panels.FramePanel diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/StorageExporterScreen.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/StorageExporterScreen.kt index ff4327a5a..d6db6c394 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/StorageExporterScreen.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/StorageExporterScreen.kt @@ -1,8 +1,8 @@ package ru.dbotthepony.mc.otm.client.screen import net.minecraft.network.chat.Component -import net.minecraft.network.chat.TranslatableComponent import net.minecraft.world.entity.player.Inventory +import ru.dbotthepony.mc.otm.TranslatableComponent import ru.dbotthepony.mc.otm.client.screen.panels.CheckBoxLabelInputPanel import ru.dbotthepony.mc.otm.client.screen.panels.FilterSlotPanel import ru.dbotthepony.mc.otm.client.screen.panels.FramePanel diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/StorageImporterScreen.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/StorageImporterScreen.kt index d54e451df..ffd545cfd 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/StorageImporterScreen.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/StorageImporterScreen.kt @@ -1,8 +1,8 @@ package ru.dbotthepony.mc.otm.client.screen import net.minecraft.network.chat.Component -import net.minecraft.network.chat.TranslatableComponent import net.minecraft.world.entity.player.Inventory +import ru.dbotthepony.mc.otm.TranslatableComponent import ru.dbotthepony.mc.otm.client.screen.panels.CheckBoxLabelInputPanel import ru.dbotthepony.mc.otm.client.screen.panels.FilterSlotPanel import ru.dbotthepony.mc.otm.client.screen.panels.FramePanel diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/StoragePowerSupplierScreen.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/StoragePowerSupplierScreen.kt index 59b67da35..010f08c5e 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/StoragePowerSupplierScreen.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/StoragePowerSupplierScreen.kt @@ -1,13 +1,12 @@ package ru.dbotthepony.mc.otm.client.screen import net.minecraft.network.chat.Component -import net.minecraft.network.chat.TranslatableComponent import net.minecraft.world.entity.player.Inventory +import ru.dbotthepony.mc.otm.TranslatableComponent import ru.dbotthepony.mc.otm.client.screen.panels.* import ru.dbotthepony.mc.otm.client.screen.widget.PowerGaugePanel import ru.dbotthepony.mc.otm.core.formatPower -import ru.dbotthepony.mc.otm.menu.StorageImporterMenu import ru.dbotthepony.mc.otm.menu.StoragePowerSupplierMenu class StoragePowerSupplierScreen(menu: StoragePowerSupplierMenu, inventory: Inventory, title: Component) : diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/panels/AbstractSlotPanel.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/panels/AbstractSlotPanel.kt index fe3c3ef74..c398c5486 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/panels/AbstractSlotPanel.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/panels/AbstractSlotPanel.kt @@ -2,11 +2,10 @@ package ru.dbotthepony.mc.otm.client.screen.panels import com.mojang.blaze3d.systems.RenderSystem import com.mojang.blaze3d.vertex.PoseStack -import net.minecraft.client.Minecraft import net.minecraft.client.renderer.GameRenderer import net.minecraft.network.chat.Component import net.minecraft.world.item.ItemStack -import net.minecraftforge.client.RenderProperties +import net.minecraftforge.client.extensions.common.IClientItemExtensions import org.lwjgl.opengl.GL11 import ru.dbotthepony.mc.otm.client.minecraft import ru.dbotthepony.mc.otm.core.RGBAColor @@ -91,7 +90,8 @@ abstract class AbstractSlotPanel @JvmOverloads constructor( val itemstack = getItemStack() if (!itemstack.isEmpty) { - val font = RenderProperties.get(itemstack).getFont(itemstack) + // val font = RenderProperties.get(itemstack).getFont(itemstack) + val font = (itemstack.item.renderPropertiesInternal as? IClientItemExtensions)?.getFont(itemstack, IClientItemExtensions.FontContext.TOOLTIP) // TODO: WHERE???????????? // GuiUtils.preItemToolTip(itemstack); @@ -100,7 +100,8 @@ abstract class AbstractSlotPanel @JvmOverloads constructor( getItemStackTooltip(itemstack), mouse_x.toInt(), mouse_y.toInt(), - font ?: screen.font + font ?: screen.font, + itemstack ) // GuiUtils.postItemToolTip(); diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/panels/ButtonPanel.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/panels/ButtonPanel.kt index 87a68c36a..b93877b76 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/panels/ButtonPanel.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/panels/ButtonPanel.kt @@ -7,8 +7,8 @@ import net.minecraft.client.gui.components.Button import net.minecraft.client.gui.components.Button.OnPress import net.minecraft.client.resources.sounds.SimpleSoundInstance import net.minecraft.network.chat.Component -import net.minecraft.network.chat.TextComponent import net.minecraft.sounds.SoundEvents +import ru.dbotthepony.mc.otm.TextComponent import ru.dbotthepony.mc.otm.client.minecraft import ru.dbotthepony.mc.otm.client.render.SkinElement import ru.dbotthepony.mc.otm.client.render.SkinGrid diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/panels/EditBoxPanel.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/panels/EditBoxPanel.kt index 3ccee4299..ab650f50b 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/panels/EditBoxPanel.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/panels/EditBoxPanel.kt @@ -2,7 +2,7 @@ package ru.dbotthepony.mc.otm.client.screen.panels import net.minecraft.client.gui.components.EditBox import net.minecraft.network.chat.Component -import net.minecraft.network.chat.TextComponent +import ru.dbotthepony.mc.otm.TextComponent import ru.dbotthepony.mc.otm.client.screen.MatteryScreen open class EditBoxPanel( diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/panels/Label.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/panels/Label.kt index 305eb3b19..9e0ccbfdd 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/panels/Label.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/panels/Label.kt @@ -2,7 +2,7 @@ package ru.dbotthepony.mc.otm.client.screen.panels import com.mojang.blaze3d.vertex.PoseStack import net.minecraft.network.chat.Component -import net.minecraft.network.chat.TextComponent +import ru.dbotthepony.mc.otm.TextComponent import ru.dbotthepony.mc.otm.core.RGBAColor import ru.dbotthepony.mc.otm.client.screen.MatteryScreen diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/panels/NumberInputPanel.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/panels/NumberInputPanel.kt index ca362c1ad..86410a442 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/panels/NumberInputPanel.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/panels/NumberInputPanel.kt @@ -1,7 +1,7 @@ package ru.dbotthepony.mc.otm.client.screen.panels import net.minecraft.network.chat.Component -import net.minecraft.network.chat.TextComponent +import ru.dbotthepony.mc.otm.TextComponent import ru.dbotthepony.mc.otm.client.screen.MatteryScreen import ru.dbotthepony.mc.otm.menu.widget.NumberPlayerInputWidget import java.math.BigDecimal diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/widget/Gauges.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/widget/Gauges.kt index 227c96514..a52d7040b 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/widget/Gauges.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/widget/Gauges.kt @@ -4,7 +4,7 @@ import com.mojang.blaze3d.systems.RenderSystem import com.mojang.blaze3d.vertex.PoseStack import net.minecraft.ChatFormatting import net.minecraft.network.chat.Component -import net.minecraft.network.chat.TranslatableComponent +import ru.dbotthepony.mc.otm.TranslatableComponent import ru.dbotthepony.mc.otm.client.render.RenderHelper import ru.dbotthepony.mc.otm.client.render.SkinElement import ru.dbotthepony.mc.otm.client.screen.MatteryScreen diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/compat/jei/JEIPlugin.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/compat/jei/JEIPlugin.kt index 8771775a6..0ff83d606 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/compat/jei/JEIPlugin.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/compat/jei/JEIPlugin.kt @@ -2,7 +2,7 @@ package ru.dbotthepony.mc.otm.compat.jei import mezz.jei.api.IModPlugin import mezz.jei.api.JeiPlugin -import mezz.jei.api.constants.VanillaRecipeCategoryUid +import mezz.jei.api.constants.RecipeTypes import mezz.jei.api.registration.IRecipeCatalystRegistration import net.minecraft.resources.ResourceLocation import net.minecraft.world.item.ItemStack @@ -20,6 +20,6 @@ class JEIPlugin : IModPlugin { } override fun registerRecipeCatalysts(registration: IRecipeCatalystRegistration) { - registration.addRecipeCatalyst(ItemStack(MBlocks.CHEMICAL_GENERATOR), VanillaRecipeCategoryUid.FUEL) + registration.addRecipeCatalyst(ItemStack(MBlocks.CHEMICAL_GENERATOR), RecipeTypes.FUELING) } } diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/compat/mekanism/Tooltips.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/compat/mekanism/Tooltips.kt index 2604b7f91..dc840a76d 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/compat/mekanism/Tooltips.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/compat/mekanism/Tooltips.kt @@ -2,9 +2,9 @@ package ru.dbotthepony.mc.otm.compat.mekanism import mekanism.common.registries.MekanismItems import net.minecraft.ChatFormatting -import net.minecraft.network.chat.TranslatableComponent import net.minecraftforge.event.entity.player.ItemTooltipEvent import net.minecraftforge.eventbus.api.SubscribeEvent +import ru.dbotthepony.mc.otm.TranslatableComponent import ru.dbotthepony.mc.otm.capability.isMekanismLoaded private val BLACKHOLE_IMMUNITY = TranslatableComponent("otm.item.blackhole_immunity").withStyle(ChatFormatting.DARK_GRAY) diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/core/Formatting.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/core/Formatting.kt index 4e0fe98c6..ecb9d6f78 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/core/Formatting.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/core/Formatting.kt @@ -2,8 +2,8 @@ package ru.dbotthepony.mc.otm.core import com.google.common.collect.ImmutableList import net.minecraft.network.chat.Component -import net.minecraft.network.chat.TextComponent -import net.minecraft.network.chat.TranslatableComponent +import ru.dbotthepony.mc.otm.TextComponent +import ru.dbotthepony.mc.otm.TranslatableComponent import java.math.BigDecimal import java.math.BigInteger diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/data/LootTableAppender.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/data/LootTableAppender.kt index ef62727bc..329a8a277 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/data/LootTableAppender.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/data/LootTableAppender.kt @@ -4,27 +4,47 @@ import com.google.common.collect.ImmutableList import com.google.gson.JsonArray import com.google.gson.JsonObject import com.google.gson.JsonParseException +import com.mojang.serialization.Codec +import com.mojang.serialization.DataResult +import com.mojang.serialization.DynamicOps +import it.unimi.dsi.fastutil.objects.ObjectArrayList import net.minecraft.resources.ResourceLocation import net.minecraft.world.item.ItemStack import net.minecraft.world.level.storage.loot.Deserializers import net.minecraft.world.level.storage.loot.LootContext import net.minecraft.world.level.storage.loot.LootPool import net.minecraft.world.level.storage.loot.predicates.LootItemCondition -import net.minecraftforge.common.loot.GlobalLootModifierSerializer +import net.minecraftforge.common.loot.IGlobalLootModifier import net.minecraftforge.common.loot.LootModifier import net.minecraftforge.registries.ForgeRegistries -import ru.dbotthepony.mc.otm.OverdriveThatMatters +import ru.dbotthepony.mc.otm.registryName + class LootTableAppender(conditions: Array, private vararg val pools: LootPool) : LootModifier(conditions) { - override fun doApply(generatedLoot: MutableList, context: LootContext): MutableList { + override fun doApply(generatedLoot: ObjectArrayList, context: LootContext): ObjectArrayList { pools.forEach { it.addRandomItems(generatedLoot::add, context) } return generatedLoot } - companion object : GlobalLootModifierSerializer() { + override fun codec(): Codec { + return Companion + } + + companion object : Codec { + override fun encode(input: LootTableAppender?, ops: DynamicOps?, prefix: T): DataResult { + return DataResult.error("NYI") + } + + override fun decode( + ops: DynamicOps?, + input: T + ): DataResult> { + return DataResult.error("NYI") + } + private val lootPoolGson = Deserializers.createLootTableSerializer().create() - override fun read( + /*override fun read( location: ResourceLocation, `object`: JsonObject, ailootcondition: Array @@ -41,11 +61,7 @@ class LootTableAppender(conditions: Array, private vararg val build = makeConditions(instance.conditions) build.add("pools", lootPoolGson.toJsonTree(instance.pools)) return build - } - - init { - registryName = ResourceLocation(OverdriveThatMatters.MOD_ID, "loot_appender") - } + }*/ } } @@ -54,7 +70,7 @@ class LootTableBasicAppender(conditions: Array, items: Li constructor(conditions: Array, vararg items: Pair) : this(conditions, items.toList()) - override fun doApply(generatedLoot: MutableList, context: LootContext): MutableList { + override fun doApply(generatedLoot: ObjectArrayList, context: LootContext): ObjectArrayList { for ((item, chance) in items) { if (context.random.nextDouble() <= chance) { generatedLoot.add(item.copy()) @@ -64,8 +80,23 @@ class LootTableBasicAppender(conditions: Array, items: Li return generatedLoot } - companion object : GlobalLootModifierSerializer() { - override fun read( + override fun codec(): Codec { + return Companion + } + + companion object : Codec { + override fun encode(input: LootTableBasicAppender?, ops: DynamicOps?, prefix: T): DataResult { + return DataResult.error("NYI") + } + + override fun decode( + ops: DynamicOps?, + input: T + ): DataResult> { + return DataResult.error("NYI") + } + + /*override fun read( location: ResourceLocation, obj: JsonObject, ailootcondition: Array @@ -108,10 +139,6 @@ class LootTableBasicAppender(conditions: Array, items: Li obj.add("entries", listing) return obj - } - - init { - registryName = ResourceLocation(OverdriveThatMatters.MOD_ID, "loot_appender_basic") - } + }*/ } } diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/item/BatteryItem.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/item/BatteryItem.kt index 8067d6d41..e392d9476 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/item/BatteryItem.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/item/BatteryItem.kt @@ -3,7 +3,6 @@ package ru.dbotthepony.mc.otm.item import net.minecraft.ChatFormatting import net.minecraft.nbt.CompoundTag import net.minecraft.network.chat.Component -import net.minecraft.network.chat.TranslatableComponent import net.minecraft.world.item.Item import net.minecraft.world.item.ItemStack import net.minecraft.world.item.Rarity @@ -11,6 +10,7 @@ import net.minecraft.world.item.TooltipFlag import net.minecraft.world.level.Level import net.minecraftforge.common.capabilities.ICapabilityProvider import ru.dbotthepony.mc.otm.OverdriveThatMatters +import ru.dbotthepony.mc.otm.TranslatableComponent import ru.dbotthepony.mc.otm.capability.EnergyCapacitorItem import ru.dbotthepony.mc.otm.capability.MatteryCapability import ru.dbotthepony.mc.otm.core.ImpreciseFraction diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/item/EnergySwordItem.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/item/EnergySwordItem.kt index ed8adeeb6..65217d3b0 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/item/EnergySwordItem.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/item/EnergySwordItem.kt @@ -6,7 +6,6 @@ import net.minecraft.ChatFormatting import net.minecraft.core.BlockPos import net.minecraft.nbt.CompoundTag import net.minecraft.network.chat.Component -import net.minecraft.network.chat.TranslatableComponent import net.minecraft.world.entity.EquipmentSlot import net.minecraft.world.entity.LivingEntity import net.minecraft.world.entity.ai.attributes.Attribute diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/item/GravitationalDisruptorItem.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/item/GravitationalDisruptorItem.kt index 8e2d644ec..31726c74a 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/item/GravitationalDisruptorItem.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/item/GravitationalDisruptorItem.kt @@ -3,12 +3,12 @@ package ru.dbotthepony.mc.otm.item import ru.dbotthepony.mc.otm.OverdriveThatMatters import net.minecraft.world.item.ItemStack import net.minecraft.world.item.TooltipFlag -import net.minecraft.network.chat.TranslatableComponent import net.minecraft.ChatFormatting import net.minecraft.network.chat.Component import net.minecraft.world.item.Item import net.minecraft.world.item.Rarity import net.minecraft.world.level.Level +import ru.dbotthepony.mc.otm.TranslatableComponent class GravitationalDisruptorItem : Item(Properties().tab(OverdriveThatMatters.INSTANCE.CREATIVE_TAB).stacksTo(1).rarity(Rarity.EPIC)) { diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/item/MatterCapacitorItem.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/item/MatterCapacitorItem.kt index 6fec41042..86fef7b4d 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/item/MatterCapacitorItem.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/item/MatterCapacitorItem.kt @@ -5,7 +5,6 @@ import net.minecraft.MethodsReturnNonnullByDefault import net.minecraft.core.Direction import net.minecraft.nbt.CompoundTag import net.minecraft.network.chat.Component -import net.minecraft.network.chat.TranslatableComponent import net.minecraft.world.item.Item import net.minecraft.world.item.ItemStack import net.minecraft.world.item.Rarity @@ -15,6 +14,7 @@ import net.minecraftforge.common.capabilities.Capability import net.minecraftforge.common.capabilities.ICapabilityProvider import net.minecraftforge.common.util.LazyOptional import ru.dbotthepony.mc.otm.OverdriveThatMatters +import ru.dbotthepony.mc.otm.TranslatableComponent import ru.dbotthepony.mc.otm.capability.MatteryCapability import ru.dbotthepony.mc.otm.capability.matter.IMatterHandler import ru.dbotthepony.mc.otm.capability.matter.MatterDirection diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/item/MatterDustItem.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/item/MatterDustItem.kt index 24f92dd35..e2bb0dc54 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/item/MatterDustItem.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/item/MatterDustItem.kt @@ -2,12 +2,12 @@ package ru.dbotthepony.mc.otm.item import net.minecraft.ChatFormatting import net.minecraft.network.chat.Component -import net.minecraft.network.chat.TranslatableComponent import net.minecraft.world.item.Item import net.minecraft.world.item.ItemStack import net.minecraft.world.item.TooltipFlag import net.minecraft.world.level.Level import ru.dbotthepony.mc.otm.OverdriveThatMatters +import ru.dbotthepony.mc.otm.TranslatableComponent import ru.dbotthepony.mc.otm.core.ImpreciseFraction import ru.dbotthepony.mc.otm.matter.IMatterItem import ru.dbotthepony.mc.otm.matter.MatterTuple diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/item/PatternStorageItem.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/item/PatternStorageItem.kt index 987ac14bf..8c15cc9e4 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/item/PatternStorageItem.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/item/PatternStorageItem.kt @@ -6,7 +6,6 @@ import net.minecraft.nbt.CompoundTag import net.minecraftforge.common.capabilities.ICapabilityProvider import net.minecraft.world.item.TooltipFlag import ru.dbotthepony.mc.otm.capability.MatteryCapability -import net.minecraft.network.chat.TranslatableComponent import net.minecraft.ChatFormatting import net.minecraftforge.common.util.LazyOptional import net.minecraft.nbt.ListTag @@ -15,6 +14,7 @@ import net.minecraft.network.chat.Component import net.minecraft.world.item.Item import net.minecraft.world.level.Level import net.minecraftforge.common.capabilities.Capability +import ru.dbotthepony.mc.otm.TranslatableComponent import ru.dbotthepony.mc.otm.capability.matter.* import ru.dbotthepony.mc.otm.ifHas import java.util.* diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/item/PillItem.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/item/PillItem.kt index 957cad193..ce792ed64 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/item/PillItem.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/item/PillItem.kt @@ -2,7 +2,6 @@ package ru.dbotthepony.mc.otm.item import net.minecraft.ChatFormatting import net.minecraft.network.chat.Component -import net.minecraft.network.chat.TranslatableComponent import net.minecraft.server.level.ServerPlayer import net.minecraft.world.InteractionHand import net.minecraft.world.InteractionResultHolder @@ -14,6 +13,7 @@ import net.minecraft.world.item.* import net.minecraft.world.level.Level import net.minecraftforge.common.util.FakePlayer import ru.dbotthepony.mc.otm.OverdriveThatMatters +import ru.dbotthepony.mc.otm.TranslatableComponent import ru.dbotthepony.mc.otm.capability.MatteryCapability import ru.dbotthepony.mc.otm.capability.android.AndroidCapabilityPlayer diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/item/PortableCondensationDriveItem.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/item/PortableCondensationDriveItem.kt index 435974578..20ecc6f35 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/item/PortableCondensationDriveItem.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/item/PortableCondensationDriveItem.kt @@ -12,10 +12,7 @@ import ru.dbotthepony.mc.otm.capability.MatteryCapability import net.minecraft.world.item.TooltipFlag import net.minecraft.ChatFormatting import net.minecraft.core.Direction -import net.minecraft.nbt.ListTag -import net.minecraft.nbt.Tag import net.minecraft.network.chat.Component -import net.minecraft.network.chat.TextComponent import net.minecraft.stats.Stats import net.minecraft.world.item.Item import net.minecraft.world.level.Level @@ -23,6 +20,7 @@ import net.minecraftforge.common.capabilities.Capability import net.minecraftforge.event.ForgeEventFactory import net.minecraftforge.eventbus.api.SubscribeEvent import net.minecraftforge.event.entity.player.EntityItemPickupEvent +import ru.dbotthepony.mc.otm.TextComponent import ru.dbotthepony.mc.otm.capability.drive.DrivePool import ru.dbotthepony.mc.otm.container.ItemFilter import ru.dbotthepony.mc.otm.core.ImpreciseFraction @@ -105,14 +103,14 @@ class PortableCondensationDriveItem(capacity: Int) : @SubscribeEvent fun onPickupEvent(event: EntityItemPickupEvent) { - if (event.item.owner != null && event.item.owner != event.player.uuid && event.item.age < 200) { + if (event.item.owner != null && event.item.owner != event.entity.uuid && event.item.age < 200) { return } var amount = event.item.item.count val item = event.item.item.item - for (stack in event.player.inventory.items) { + for (stack in event.entity.inventory.items) { val drive = stack.item if (drive is PortableCondensationDriveItem) { @@ -131,21 +129,21 @@ class PortableCondensationDriveItem(capacity: Int) : copy.count -= remaining.count event.isCanceled = true - ForgeEventFactory.firePlayerItemPickupEvent(event.player, event.item, copy) + ForgeEventFactory.firePlayerItemPickupEvent(event.entity, event.item, copy) if (remaining.count > 0) { event.item.item.count = remaining.count - event.player.take(event.item, amount - remaining.count) + event.entity.take(event.item, amount - remaining.count) - event.player.awardStat(Stats.ITEM_PICKED_UP.get(item), amount - remaining.count) - event.player.onItemPickup(event.item) + event.entity.awardStat(Stats.ITEM_PICKED_UP.get(item), amount - remaining.count) + event.entity.onItemPickup(event.item) amount = remaining.count } else { - event.player.take(event.item, amount) + event.entity.take(event.item, amount) - event.player.awardStat(Stats.ITEM_PICKED_UP.get(item), amount) - event.player.onItemPickup(event.item) + event.entity.awardStat(Stats.ITEM_PICKED_UP.get(item), amount) + event.entity.onItemPickup(event.item) event.item.discard() doBreak = true diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/item/PortableGravitationStabilizerItem.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/item/PortableGravitationStabilizerItem.kt index a2c9cad26..bf7522b40 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/item/PortableGravitationStabilizerItem.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/item/PortableGravitationStabilizerItem.kt @@ -3,15 +3,16 @@ package ru.dbotthepony.mc.otm.item import net.minecraft.ChatFormatting import net.minecraft.client.model.HumanoidModel import net.minecraft.network.chat.Component -import net.minecraft.network.chat.TranslatableComponent import net.minecraft.sounds.SoundEvent +import net.minecraft.sounds.SoundEvents import net.minecraft.world.entity.EquipmentSlot import net.minecraft.world.entity.LivingEntity import net.minecraft.world.item.* import net.minecraft.world.item.crafting.Ingredient import net.minecraft.world.level.Level -import net.minecraftforge.client.IItemRenderProperties +import net.minecraftforge.client.extensions.common.IClientItemExtensions import ru.dbotthepony.mc.otm.OverdriveThatMatters +import ru.dbotthepony.mc.otm.TranslatableComponent import ru.dbotthepony.mc.otm.client.model.GravitationStabilizerModel import java.util.function.Consumer @@ -19,7 +20,7 @@ private object GravitationStabilizerArmorMaterial : ArmorMaterial { override fun getDurabilityForSlot(p_40410_: EquipmentSlot) = 0 override fun getDefenseForSlot(p_40411_: EquipmentSlot) = 3 override fun getEnchantmentValue() = 0 - override fun getEquipSound(): SoundEvent? = null + override fun getEquipSound(): SoundEvent = SoundEvents.ARMOR_EQUIP_GENERIC override fun getRepairIngredient(): Ingredient = Ingredient.EMPTY const val ID = "${OverdriveThatMatters.MOD_ID}:gravitation_stabilizer" @@ -29,8 +30,8 @@ private object GravitationStabilizerArmorMaterial : ArmorMaterial { override fun getKnockbackResistance() = 0f } -private object GravitationStabilizerArmorRenderProperties : IItemRenderProperties { - override fun getArmorModel( +private object GravitationStabilizerArmorRenderProperties : IClientItemExtensions { + override fun getHumanoidArmorModel( entityLiving: LivingEntity, itemStack: ItemStack, armorSlot: EquipmentSlot, @@ -41,7 +42,7 @@ private object GravitationStabilizerArmorRenderProperties : IItemRenderPropertie } class ItemPortableGravitationStabilizer : ArmorItem(GravitationStabilizerArmorMaterial, EquipmentSlot.CHEST, Properties().stacksTo(1).rarity(Rarity.RARE).tab(OverdriveThatMatters.INSTANCE.CREATIVE_TAB)) { - override fun initializeClient(consumer: Consumer) { + override fun initializeClient(consumer: Consumer) { super.initializeClient(consumer) consumer.accept(GravitationStabilizerArmorRenderProperties) } diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/item/TritaniumArmorItem.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/item/TritaniumArmorItem.kt index d30ce23ce..769950726 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/item/TritaniumArmorItem.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/item/TritaniumArmorItem.kt @@ -11,7 +11,7 @@ import net.minecraft.world.item.ArmorMaterial import net.minecraft.world.item.ItemStack import net.minecraft.world.item.Rarity import net.minecraft.world.item.crafting.Ingredient -import net.minecraftforge.client.IItemRenderProperties +import net.minecraftforge.client.extensions.common.IClientItemExtensions import ru.dbotthepony.mc.otm.OverdriveThatMatters import ru.dbotthepony.mc.otm.client.model.TritaniumArmorModel import ru.dbotthepony.mc.otm.registry.MItemTags @@ -41,7 +41,7 @@ private object TritaniumArmorMaterial : ArmorMaterial { } override fun getEnchantmentValue() = 9 - override fun getEquipSound(): SoundEvent = SoundEvents.ARMOR_EQUIP_GENERIC + override fun getEquipSound(): SoundEvent = SoundEvents.ARMOR_EQUIP_IRON override fun getRepairIngredient(): Ingredient = Ingredient.of(MItemTags.INGOT_TRITANIUM) const val ID = "${OverdriveThatMatters.MOD_ID}:tritanium_armor" @@ -51,8 +51,8 @@ private object TritaniumArmorMaterial : ArmorMaterial { override fun getKnockbackResistance() = 0.2f } -private object TritaniumArmorRenderProperties : IItemRenderProperties { - override fun getArmorModel( +private object TritaniumArmorRenderProperties : IClientItemExtensions { + override fun getHumanoidArmorModel( entityLiving: LivingEntity, itemStack: ItemStack, armorSlot: EquipmentSlot, @@ -67,7 +67,7 @@ private object TritaniumArmorRenderProperties : IItemRenderProperties { } class ItemTritaniumArmor(slot: EquipmentSlot) : ArmorItem(TritaniumArmorMaterial, slot, Properties().stacksTo(1).rarity(Rarity.RARE).tab(OverdriveThatMatters.INSTANCE.CREATIVE_TAB)) { - override fun initializeClient(consumer: Consumer) { + override fun initializeClient(consumer: Consumer) { super.initializeClient(consumer) consumer.accept(TritaniumArmorRenderProperties) } diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/item/weapon/AbstractWeaponItem.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/item/weapon/AbstractWeaponItem.kt index 9a3f7e2c2..544122bf4 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/item/weapon/AbstractWeaponItem.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/item/weapon/AbstractWeaponItem.kt @@ -16,15 +16,14 @@ import net.minecraft.world.item.Item import net.minecraft.world.item.ItemStack import net.minecraft.world.item.Rarity import net.minecraft.world.level.block.state.BlockState -import net.minecraftforge.client.event.EntityViewRenderEvent import net.minecraftforge.client.event.InputEvent import net.minecraftforge.client.event.RenderHandEvent import net.minecraftforge.client.event.RenderPlayerEvent +import net.minecraftforge.client.event.ViewportEvent import net.minecraftforge.event.TickEvent import net.minecraftforge.eventbus.api.SubscribeEvent import net.minecraftforge.fml.LogicalSide import net.minecraftforge.network.NetworkEvent -import org.lwjgl.opengl.GL30 import ru.dbotthepony.mc.otm.* import ru.dbotthepony.mc.otm.capability.matteryEnergy import ru.dbotthepony.mc.otm.client.font @@ -280,7 +279,7 @@ abstract class AbstractWeaponItem(val tables: KClass, ra @SubscribeEvent @Suppress("unused") - fun fovHook(event: EntityViewRenderEvent.FieldOfView) { + fun fovHook(event: ViewportEvent.ComputeFov) { val player = event.camera.entity as? Player ?: return val it = (player.mainHandItem.item as? AbstractWeaponItem<*>) @@ -293,7 +292,7 @@ abstract class AbstractWeaponItem(val tables: KClass, ra val interp = linearInterpolation( it.ironSightsProgress( player.mainHandItem, - event.partialTicks + event.partialTick ) * 1.7 - 0.6, 1.0, it.ironSightsFOV ) @@ -314,7 +313,7 @@ abstract class AbstractWeaponItem(val tables: KClass, ra @SubscribeEvent @Suppress("unused") fun playerRenderHook(event: RenderPlayerEvent.Pre) { - if (event.player.mainHandItem.item is AbstractWeaponItem<*> && event.player.offhandItem.isEmpty) { + if (event.entity.mainHandItem.item is AbstractWeaponItem<*> && event.entity.offhandItem.isEmpty) { event.renderer.model.rightArmPose = HumanoidModel.ArmPose.BOW_AND_ARROW event.renderer.model.leftArmPose = HumanoidModel.ArmPose.EMPTY } @@ -322,7 +321,7 @@ abstract class AbstractWeaponItem(val tables: KClass, ra @SubscribeEvent @Suppress("unused") - fun clickHook(event: InputEvent.ClickInputEvent) { + fun clickHook(event: InputEvent.InteractionKeyMappingTriggered) { val player = Minecraft.getInstance().player!! if (player.mainHandItem.item is AbstractWeaponItem<*> && player.offhandItem.isEmpty && event.isAttack) { @@ -378,11 +377,11 @@ abstract class AbstractWeaponItem(val tables: KClass, ra val player = Minecraft.getInstance().player!! val pose = event.poseStack - val itemInHandRenderer = Minecraft.getInstance().itemInHandRenderer + val itemInHandRenderer = Minecraft.getInstance().itemRenderer pose.pushPose() - val progress = item.ironSightsProgress(stack, event.partialTicks.toDouble()) + val progress = item.ironSightsProgress(stack, event.partialTick.toDouble()) val (x, y, z) = linearInterpolation( // 1.0 - event.equipProgress.toDouble(), @@ -429,15 +428,15 @@ abstract class AbstractWeaponItem(val tables: KClass, ra pose.mulPose(Vector3f.YP.rotation(yaw.toFloat())) pose.mulPose(Vector3f.XP.rotation(pitch.toFloat())) - itemInHandRenderer.renderItem( - player, + /*itemInHandRenderer.render( + // player, stack, ItemTransforms.TransformType.FIRST_PERSON_RIGHT_HAND, false, pose, event.multiBufferSource, event.packedLight - ) + )*/ if (item is PlasmaWeaponItem<*>) { // RenderSystem.setShader(GameRenderer::getPositionColorShader) @@ -468,7 +467,7 @@ abstract class AbstractWeaponItem(val tables: KClass, ra RenderHelper.setDrawColor(heatBackground) RenderHelper.drawRect(pose, -1f, -1f, 9f, 32f) - val heat = item.heatProgress(stack, event.partialTicks.toDouble()).toFloat() + val heat = item.heatProgress(stack, event.partialTick.toDouble()).toFloat() RenderHelper.setDrawColor(linearInterpolation(heat, initialHeatColor, finalHeatColor)) RenderHelper.drawRect(pose, 0f, 30f * (1f - heat), 7f, 30f * heat) } diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/item/weapon/PlasmaWeaponItem.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/item/weapon/PlasmaWeaponItem.kt index f2f463a57..277a81ef7 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/item/weapon/PlasmaWeaponItem.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/item/weapon/PlasmaWeaponItem.kt @@ -4,7 +4,6 @@ import net.minecraft.ChatFormatting import net.minecraft.core.Direction import net.minecraft.nbt.CompoundTag import net.minecraft.network.chat.Component -import net.minecraft.network.chat.TranslatableComponent import net.minecraft.server.level.ServerPlayer import net.minecraft.sounds.SoundSource import net.minecraft.world.entity.player.Player @@ -16,15 +15,12 @@ import net.minecraftforge.common.capabilities.ICapabilityProvider import net.minecraftforge.common.util.INBTSerializable import net.minecraftforge.common.util.LazyOptional import net.minecraftforge.energy.CapabilityEnergy +import ru.dbotthepony.mc.otm.* import ru.dbotthepony.mc.otm.capability.* import ru.dbotthepony.mc.otm.core.ImpreciseFraction import ru.dbotthepony.mc.otm.core.bezierCurve import ru.dbotthepony.mc.otm.core.formatPower -import ru.dbotthepony.mc.otm.doubles -import ru.dbotthepony.mc.otm.ifPresentK -import ru.dbotthepony.mc.otm.ints import ru.dbotthepony.mc.otm.registry.MSoundEvents -import ru.dbotthepony.mc.otm.set import kotlin.reflect.KClass class PlasmaWeaponEnergy(val itemStack: ItemStack, private val innerCapacity: ImpreciseFraction) : diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/matter/MatterData.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/matter/MatterData.kt index 1d9e6d295..decea93ad 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/matter/MatterData.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/matter/MatterData.kt @@ -1,7 +1,6 @@ package ru.dbotthepony.mc.otm.matter import net.minecraft.tags.ItemTags -import net.minecraft.tags.Tag import net.minecraft.tags.TagKey import net.minecraft.world.item.Item import net.minecraft.world.item.Items @@ -122,12 +121,6 @@ private fun make(tag: ITag, value: ImpreciseFraction, complexity: Double = } } -private fun make(tag: Tag, value: ImpreciseFraction, complexity: Double = defaultComplexity(value)) { - for (item in tag.values) { - make(item, value, complexity) - } -} - private fun make(tag: TagKey, value: ImpreciseFraction, complexity: Double = defaultComplexity(value)) { val resolved = ForgeRegistries.ITEMS.tags()?.getTag(tag) diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/matter/MatterRegistry.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/matter/MatterRegistry.kt index 0ef33a077..b924c038d 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/matter/MatterRegistry.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/matter/MatterRegistry.kt @@ -4,7 +4,6 @@ import com.mojang.blaze3d.platform.InputConstants import net.minecraft.ChatFormatting import net.minecraft.client.Minecraft import net.minecraft.network.FriendlyByteBuf -import net.minecraft.network.chat.TranslatableComponent import net.minecraft.server.dedicated.DedicatedServer import net.minecraft.world.item.Item import net.minecraft.world.item.ItemStack @@ -17,12 +16,14 @@ import net.minecraftforge.network.NetworkEvent import net.minecraftforge.network.PacketDistributor import org.lwjgl.glfw.GLFW import ru.dbotthepony.mc.otm.OverdriveThatMatters +import ru.dbotthepony.mc.otm.TranslatableComponent import ru.dbotthepony.mc.otm.capability.MatteryCapability import ru.dbotthepony.mc.otm.capability.drive.IMatteryDrive import ru.dbotthepony.mc.otm.core.* import ru.dbotthepony.mc.otm.network.MatteryNetworking import ru.dbotthepony.mc.otm.orNull import ru.dbotthepony.mc.otm.storage.ItemStackWrapper +import ru.dbotthepony.mc.otm.writeRegistryId import java.math.BigInteger import java.util.function.Supplier diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/menu/data/NetworkedItemView.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/menu/data/NetworkedItemView.kt index 43eeed33f..30aeb2451 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/menu/data/NetworkedItemView.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/menu/data/NetworkedItemView.kt @@ -17,6 +17,7 @@ import ru.dbotthepony.mc.otm.core.writeBigInteger import ru.dbotthepony.mc.otm.menu.MatteryMenu import ru.dbotthepony.mc.otm.network.MatteryNetworking import ru.dbotthepony.mc.otm.network.SetCarriedPacket +import ru.dbotthepony.mc.otm.registryName import ru.dbotthepony.mc.otm.storage.* import java.math.BigInteger import java.util.* diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/recipe/Helpers.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/recipe/Helpers.kt index 906d9d832..613795358 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/recipe/Helpers.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/recipe/Helpers.kt @@ -7,6 +7,7 @@ import net.minecraft.resources.ResourceLocation import net.minecraft.world.item.ItemStack import net.minecraft.world.item.Items import net.minecraftforge.registries.ForgeRegistries +import ru.dbotthepony.mc.otm.registryName import ru.dbotthepony.mc.otm.set fun stackFromJson(obj: JsonElement, field: String = ""): ItemStack { diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/recipe/PlatePressRecipe.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/recipe/PlatePressRecipe.kt index 4dcd81ba5..e4e7dfd37 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/recipe/PlatePressRecipe.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/recipe/PlatePressRecipe.kt @@ -12,13 +12,13 @@ import net.minecraft.world.item.crafting.Recipe import net.minecraft.world.item.crafting.RecipeSerializer import net.minecraft.world.item.crafting.RecipeType import net.minecraft.world.level.Level -import net.minecraftforge.registries.ForgeRegistryEntry import org.apache.logging.log4j.LogManager import ru.dbotthepony.mc.otm.OverdriveThatMatters import ru.dbotthepony.mc.otm.block.entity.PlatePressBlockEntity import ru.dbotthepony.mc.otm.get import ru.dbotthepony.mc.otm.registry.MNames import ru.dbotthepony.mc.otm.registry.MRecipes +import ru.dbotthepony.mc.otm.registryName class PlatePressRecipe( private val id: ResourceLocation, @@ -82,14 +82,10 @@ class PlatePressRecipe( override fun getType(): RecipeType = MRecipes.PLATE_PRESS } -object PlatePressRecipeFactory : ForgeRegistryEntry>(), RecipeSerializer { +object PlatePressRecipeFactory : RecipeSerializer { private val EMPTY = PlatePressRecipe(ResourceLocation(OverdriveThatMatters.MOD_ID, "empty"), Ingredient.EMPTY, Ingredient.EMPTY, 1) private val LOGGER = LogManager.getLogger() - init { - registryName = OverdriveThatMatters.loc(MNames.PLATE_PRESS) - } - override fun fromJson(loc: ResourceLocation, obj: JsonObject): PlatePressRecipe { val input = try { Ingredient.fromJson(obj["input"] ?: throw IllegalStateException("Recipe $loc has no input field defined")) diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/registry/AndroidFeatures.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/registry/AndroidFeatures.kt index c4aef02f1..ee09c6589 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/registry/AndroidFeatures.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/registry/AndroidFeatures.kt @@ -8,7 +8,7 @@ import ru.dbotthepony.mc.otm.android.DummyAndroidFeature import ru.dbotthepony.mc.otm.android.feature.* object AndroidFeatures { - private val registry = DeferredRegister.create(AndroidFeatureType::class.java, OverdriveThatMatters.MOD_ID) + private val registry = DeferredRegister.create(MRegistry.ANDROID_FEATURES, OverdriveThatMatters.MOD_ID) val AIR_BAGS: AndroidFeatureType<*> by registry.register(MNames.AIR_BAGS) { AndroidFeatureType(::DummyAndroidFeature) } val STEP_ASSIST: AndroidFeatureType<*> by registry.register(MNames.STEP_ASSIST) { AndroidFeatureType(::StepAssistFeature) } diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/registry/AndroidResearch.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/registry/AndroidResearch.kt index d461c8e19..1ebea2d54 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/registry/AndroidResearch.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/registry/AndroidResearch.kt @@ -3,13 +3,13 @@ package ru.dbotthepony.mc.otm.registry -import net.minecraft.network.chat.TextComponent -import net.minecraft.network.chat.TranslatableComponent import net.minecraft.resources.ResourceLocation import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext import net.minecraftforge.registries.DeferredRegister import net.minecraftforge.registries.RegistryObject import ru.dbotthepony.mc.otm.OverdriveThatMatters +import ru.dbotthepony.mc.otm.TextComponent +import ru.dbotthepony.mc.otm.TranslatableComponent import ru.dbotthepony.mc.otm.android.AndroidResearchBuilder import ru.dbotthepony.mc.otm.android.AndroidResearchType import ru.dbotthepony.mc.otm.android.feature.NanobotsArmor @@ -74,7 +74,7 @@ object AndroidResearch { ICON_EXTENDED_REACH = grid.next() } - private val registry = DeferredRegister.create(AndroidResearchType::class.java, OverdriveThatMatters.MOD_ID) + private val registry = DeferredRegister.create(MRegistry.ANDROID_RESEARCH, OverdriveThatMatters.MOD_ID) internal fun register() { registry.register(FMLJavaModLoadingContext.get().modEventBus) diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/registry/DamageSources.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/registry/DamageSources.kt index 2de599c70..e2c54aa84 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/registry/DamageSources.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/registry/DamageSources.kt @@ -1,12 +1,12 @@ package ru.dbotthepony.mc.otm.registry import net.minecraft.network.chat.Component -import net.minecraft.network.chat.TranslatableComponent import net.minecraft.world.damagesource.DamageSource import net.minecraft.world.entity.Entity import net.minecraft.world.entity.LivingEntity import net.minecraft.world.item.ItemStack import net.minecraft.world.phys.Vec3 +import ru.dbotthepony.mc.otm.TranslatableComponent class ImmutableDamageSource(private val parent: DamageSource) : DamageSource(parent.msgId) { override fun equals(other: Any?): Boolean { diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/registry/LazyList.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/registry/LazyList.kt index 00a7ea3a4..d4824ebdb 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/registry/LazyList.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/registry/LazyList.kt @@ -2,7 +2,6 @@ package ru.dbotthepony.mc.otm.registry import com.google.common.collect.ImmutableSet import net.minecraft.world.item.DyeColor -import net.minecraftforge.registries.IForgeRegistryEntry import net.minecraftforge.registries.RegistryObject class LazyList(private vararg val getters: () -> T) : AbstractList() { @@ -26,7 +25,7 @@ class LazyMap(vararg mValues: Pair T>) : AbstractMap() { override val entries: Set> = ImmutableSet.copyOf(mValues.map { Entry(it.first, it.second) }) } -class RegistryObjectList>(private vararg val getters: RegistryObject) : AbstractList() { +class RegistryObjectList(private vararg val getters: RegistryObject) : AbstractList() { constructor(getters: List>) : this(*getters.toTypedArray()) override val size: Int diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/registry/LootModifiers.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/registry/LootModifiers.kt index 27c1fa72d..150e03fa0 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/registry/LootModifiers.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/registry/LootModifiers.kt @@ -1,15 +1,20 @@ package ru.dbotthepony.mc.otm.registry -import net.minecraftforge.common.loot.GlobalLootModifierSerializer -import net.minecraftforge.event.RegistryEvent -import net.minecraftforge.eventbus.api.SubscribeEvent +import com.mojang.serialization.Codec +import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext +import net.minecraftforge.registries.DeferredRegister +import net.minecraftforge.registries.ForgeRegistries +import ru.dbotthepony.mc.otm.OverdriveThatMatters import ru.dbotthepony.mc.otm.data.LootTableAppender import ru.dbotthepony.mc.otm.data.LootTableBasicAppender object LootModifiers { - @SubscribeEvent - fun register(event: RegistryEvent.Register>) { - event.registry.register(LootTableAppender.Companion) - event.registry.register(LootTableBasicAppender.Companion) + private val registry = DeferredRegister.create(ForgeRegistries.Keys.GLOBAL_LOOT_MODIFIER_SERIALIZERS, OverdriveThatMatters.MOD_ID) + + val LOOT_TABLE_APPENDER: Codec by registry.register("loot_table_appender") { LootTableAppender.Companion } + val LOOT_TABLE_BASIC_APPENDER: Codec by registry.register("loot_table_appender") { LootTableBasicAppender.Companion } + + internal fun register() { + registry.register(FMLJavaModLoadingContext.get().modEventBus) } } diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MBlockEntities.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MBlockEntities.kt index bc6c1b354..e25008302 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MBlockEntities.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MBlockEntities.kt @@ -18,7 +18,7 @@ import ru.dbotthepony.mc.otm.client.render.EnergyCounterRenderer import ru.dbotthepony.mc.otm.client.render.GravitationStabilizerRenderer object MBlockEntities { - private val registry = DeferredRegister.create(ForgeRegistries.BLOCK_ENTITIES, OverdriveThatMatters.MOD_ID) + private val registry = DeferredRegister.create(ForgeRegistries.BLOCK_ENTITY_TYPES, OverdriveThatMatters.MOD_ID) val ANDROID_STATION: BlockEntityType<*> by registry.register(MNames.ANDROID_STATION) { BlockEntityType.Builder.of(::AndroidStationBlockEntity, MBlocks.ANDROID_STATION).build(null) } val BATTERY_BANK: BlockEntityType<*> by registry.register(MNames.BATTERY_BANK) { BlockEntityType.Builder.of(::BatteryBankBlockEntity, MBlocks.BATTERY_BANK).build(null) } diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MBlocks.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MBlocks.kt index 93c53cf7e..c9953f140 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MBlocks.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MBlocks.kt @@ -6,7 +6,7 @@ import net.minecraft.client.renderer.RenderType import net.minecraft.util.valueproviders.UniformInt import net.minecraft.world.item.DyeColor import net.minecraft.world.level.block.Block -import net.minecraft.world.level.block.OreBlock +import net.minecraft.world.level.block.DropExperienceBlock import net.minecraft.world.level.block.SoundType import net.minecraft.world.level.block.state.BlockBehaviour import net.minecraft.world.level.material.Material @@ -73,14 +73,14 @@ object MBlocks { val GRAVITATION_STABILIZER: Block by registry.register(MNames.GRAVITATION_STABILIZER) { BlockGravitationStabilizer() } val GRAVITATION_STABILIZER_LENS: Block by registry.register(MNames.GRAVITATION_STABILIZER_LENS) { BlockGravitationStabilizerLens() } - val TRITANIUM_ORE: Block by registry.register(MNames.TRITANIUM_ORE) { OreBlock( + val TRITANIUM_ORE: Block by registry.register(MNames.TRITANIUM_ORE) { DropExperienceBlock( BlockBehaviour.Properties.of(Material.STONE) .strength(3.25f, 6.0f) .requiresCorrectToolForDrops(), UniformInt.of(0, 3) ) } - val DEEPSLATE_TRITANIUM_ORE: Block by registry.register(MNames.DEEPSLATE_TRITANIUM_ORE) { OreBlock( + val DEEPSLATE_TRITANIUM_ORE: Block by registry.register(MNames.DEEPSLATE_TRITANIUM_ORE) { DropExperienceBlock( BlockBehaviour.Properties.of(Material.STONE) .strength(4.75f, 6.5f) .requiresCorrectToolForDrops(), diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MEntityTypes.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MEntityTypes.kt index e31c46751..97cfcfc29 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MEntityTypes.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MEntityTypes.kt @@ -14,7 +14,7 @@ import ru.dbotthepony.mc.otm.client.render.entity.PlasmaProjectileRenderer import ru.dbotthepony.mc.otm.entity.PlasmaProjectile object MEntityTypes { - private val registry: DeferredRegister> = DeferredRegister.create(ForgeRegistries.ENTITIES, OverdriveThatMatters.MOD_ID) + private val registry: DeferredRegister> = DeferredRegister.create(ForgeRegistries.ENTITY_TYPES, OverdriveThatMatters.MOD_ID) val PLASMA: EntityType<*> by registry.register(MNames.PLASMA) { EntityType.Builder.of({ _, level -> PlasmaProjectile(level) }, MobCategory.MISC).sized(0.4f, 0.4f).build(MNames.PLASMA) diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MItems.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MItems.kt index c82afb3df..9eb0f9f22 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MItems.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MItems.kt @@ -3,22 +3,18 @@ package ru.dbotthepony.mc.otm.registry import net.minecraft.ChatFormatting import net.minecraft.network.chat.Component -import net.minecraft.network.chat.TranslatableComponent import net.minecraft.tags.BlockTags import net.minecraft.world.entity.EquipmentSlot import net.minecraft.world.food.FoodProperties import net.minecraft.world.item.* import net.minecraft.world.item.crafting.Ingredient import net.minecraft.world.level.Level -import net.minecraft.world.level.block.Block -import net.minecraft.world.level.block.SoundType -import net.minecraft.world.level.block.state.BlockBehaviour -import net.minecraft.world.level.material.Material import net.minecraftforge.common.ForgeTier import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext import net.minecraftforge.registries.DeferredRegister import net.minecraftforge.registries.ForgeRegistries import ru.dbotthepony.mc.otm.OverdriveThatMatters +import ru.dbotthepony.mc.otm.TranslatableComponent import ru.dbotthepony.mc.otm.core.ImpreciseFraction import ru.dbotthepony.mc.otm.item.* import ru.dbotthepony.mc.otm.item.weapon.PlasmaRifleItem diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MMenus.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MMenus.kt index 335422e49..b852df79f 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MMenus.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MMenus.kt @@ -11,7 +11,7 @@ import ru.dbotthepony.mc.otm.client.screen.* import ru.dbotthepony.mc.otm.menu.* object MMenus { - private val registry = DeferredRegister.create(ForgeRegistries.CONTAINERS, OverdriveThatMatters.MOD_ID) + private val registry = DeferredRegister.create(ForgeRegistries.MENU_TYPES, OverdriveThatMatters.MOD_ID) val ANDROID_STATION: MenuType<*> by registry.register(MNames.ANDROID_STATION) { MenuType(::AndroidStationMenu) } val BATTERY_BANK: MenuType<*> by registry.register(MNames.BATTERY_BANK) { MenuType(::BatteryBankMenu) } diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MRegistry.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MRegistry.kt index 4f326bd43..578385c84 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MRegistry.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MRegistry.kt @@ -431,13 +431,13 @@ object MRegistry { private fun register(event: NewRegistryEvent) { features.write(RegistryBuilder>().let { it.setName(ResourceLocation(OverdriveThatMatters.MOD_ID, "android_features")) - it.type = AndroidFeatureType::class.java + // it.type = AndroidFeatureType::class.java event.create(it) }) research.write(RegistryBuilder>().let { it.setName(ResourceLocation(OverdriveThatMatters.MOD_ID, "android_research")) - it.type = AndroidResearchType::class.java + // it.type = AndroidResearchType::class.java event.create(it) }) } @@ -517,5 +517,8 @@ object MRegistry { AndroidFeatures.register() AndroidResearch.register() MSoundEvents.register() + LootModifiers.register() + + MRecipes.register() } } diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/registry/RegistryEntryExt.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/registry/RegistryEntryExt.kt index e622d4d88..85b9e3f8a 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/registry/RegistryEntryExt.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/registry/RegistryEntryExt.kt @@ -1,9 +1,8 @@ package ru.dbotthepony.mc.otm.registry -import net.minecraftforge.registries.IForgeRegistryEntry import net.minecraftforge.registries.RegistryObject import kotlin.reflect.KProperty -operator fun > RegistryObject.getValue(thisRef: Any, property: KProperty<*>): T { +operator fun RegistryObject.getValue(thisRef: Any, property: KProperty<*>): T { return get() } diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/storage/ItemStackWrapper.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/storage/ItemStackWrapper.kt index 91e693804..c8c046fa2 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/storage/ItemStackWrapper.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/storage/ItemStackWrapper.kt @@ -7,6 +7,7 @@ import net.minecraftforge.registries.ForgeRegistries import net.minecraftforge.registries.ForgeRegistry import org.jetbrains.annotations.ApiStatus import ru.dbotthepony.mc.otm.core.* +import ru.dbotthepony.mc.otm.registryName import java.math.BigInteger /**