From af9b863edad6d577c56722ee378e34523415c9a5 Mon Sep 17 00:00:00 2001 From: Robocraft999 <59525378+Robocraft999@users.noreply.github.com> Date: Thu, 24 Oct 2024 03:29:49 +0200 Subject: [PATCH] Port to 1.20.1 Forge (47.3.0+) (#590) --- build.gradle | 18 +- gradle.properties | 10 +- .../machines/api/codec/CodecExtensions.java | 2 +- .../api/codec/DoubleStreamExtensions.java | 4 +- .../api/dimension/CompactDimension.java | 6 +- .../datagen/AdvancementGenerator.java | 206 ------------------ .../machines/datagen/BlockLootGenerator.java | 108 ++++----- .../machines/datagen/DataGenUtil.java | 19 +- .../machines/datagen/DataGeneration.java | 31 ++- .../datagen/DatapackRegisteredStuff.java | 109 +++++++++ .../machines/datagen/ItemModelGenerator.java | 6 +- .../machines/datagen/LevelBiomeGenerator.java | 146 ------------- .../machines/datagen/RecipeGenerator.java | 15 +- .../machines/datagen/StateGenerator.java | 74 ++++++- .../datagen/TunnelWallStateGenerator.java | 5 +- .../datagen/lang/BaseLangGenerator.java | 7 +- .../datagen/lang/EnglishLangGenerator.java | 8 +- .../datagen/tags/BlockTagGenerator.java | 12 +- .../datagen/tags/ItemTagGenerator.java | 15 +- .../compactmods/machines/CompactMachines.java | 11 +- .../trigger/BasicPlayerAdvTrigger.java | 7 +- .../trigger/HowDidYouGetHereTrigger.java | 7 +- .../machines/client/CreativeTabs.java | 66 ++++++ .../gui/PersonalShrinkingDeviceScreen.java | 12 +- .../machines/client/gui/guide/GuidePage.java | 24 +- .../client/gui/guide/GuideSection.java | 19 +- .../gui/widget/AbstractCMGuiWidget.java | 19 +- .../client/gui/widget/PSDIconButton.java | 10 +- .../widget/ScrollableWrappedTextWidget.java | 6 +- .../client/level/EmptyLevelEntityGetter.java | 5 +- .../machines/client/level/RenderingLevel.java | 17 +- .../machines/client/level/TemplateChunk.java | 14 +- .../client/level/TemplateChunkProvider.java | 2 +- .../machines/client/shader/CM4Shaders.java | 4 +- .../util/TransformingVertexBuilder.java | 4 +- .../subcommand/CMGiveMachineSubcommand.java | 2 +- .../CMReaddDimensionSubcommand.java | 4 +- .../command/subcommand/CMRoomsSubcommand.java | 8 +- .../subcommand/CMSummarySubcommand.java | 10 +- .../command/subcommand/SpawnSubcommand.java | 2 +- .../elements/MachineTunnelElement.java | 3 +- .../machines/config/ServerConfig.java | 2 +- .../compactmods/machines/core/Registries.java | 8 +- .../machines/core/ServerEventHandler.java | 2 +- .../machines/core/UIRegistration.java | 2 +- .../machines/dimension/Dimension.java | 4 +- .../machines/dimension/VoidAirBlock.java | 13 +- .../machines/graph/DimensionGraphNode.java | 4 +- .../machines/location/LevelBlockPosition.java | 10 +- .../location/PreciseDimensionalPosition.java | 9 +- .../machines/machine/CompactMachineBlock.java | 5 +- .../machines/machine/Machines.java | 7 +- .../machines/room/RoomEventHandler.java | 14 +- .../dev/compactmods/machines/room/Rooms.java | 2 +- .../room/client/MachineRoomScreen.java | 32 +-- .../network/InitialRoomBlockDataPacket.java | 3 +- .../PlayerRequestedTeleportPacket.java | 6 +- .../shrinking/PersonalShrinkingDevice.java | 2 +- .../machines/shrinking/Shrinking.java | 1 - .../machines/tunnel/TunnelItem.java | 5 +- .../compactmods/machines/tunnel/Tunnels.java | 6 +- .../upgrade/ChunkloadUpgradeItem.java | 4 +- .../machines/upgrade/MachineRoomUpgrades.java | 1 - .../upgrade/command/CMUpgradeRoomCommand.java | 4 +- .../upgrade/command/RoomUpgradeArgument.java | 2 +- .../util/CompactStructureGenerator.java | 5 +- .../machines/util/DimensionUtil.java | 10 +- .../compactmods/machines/util/PlayerUtil.java | 2 +- .../dev/compactmods/machines/wall/Walls.java | 10 +- .../test/core/CompactMachinesTests.java | 5 +- .../tunnel/definitions/FluidTunnel.java | 6 +- .../tunnel/definitions/ForgeEnergyTunnel.java | 6 +- .../tunnel/definitions/ItemTunnel.java | 6 +- 73 files changed, 595 insertions(+), 660 deletions(-) delete mode 100644 src/datagen/java/dev/compactmods/machines/datagen/AdvancementGenerator.java create mode 100644 src/datagen/java/dev/compactmods/machines/datagen/DatapackRegisteredStuff.java delete mode 100644 src/datagen/java/dev/compactmods/machines/datagen/LevelBiomeGenerator.java create mode 100644 src/main/java/dev/compactmods/machines/client/CreativeTabs.java diff --git a/build.gradle b/build.gradle index e4200dd8..66456eaa 100644 --- a/build.gradle +++ b/build.gradle @@ -243,8 +243,9 @@ repositories { // location of the maven that hosts JEI files maven { - name "Progwml Repo" - url "https://dvs1.progwml6.com/files/maven" + // location of the maven that hosts JEI files since January 2023 + name = "Jared's maven" + url = "https://maven.blamejared.com/" } // TheOneProbe @@ -270,15 +271,16 @@ dependencies { runtimeOnly fg.deobf("mezz.jei:jei-${jei_mc_version}-forge:${jei_version}") // The One Probe - implementation(fg.deobf("curse.maven:theoneprobe-245211:3927520")) + implementation(fg.deobf("curse.maven:theoneprobe-245211:4629624")) if (!System.getenv().containsKey("CI") && include_test_mods.equals("true")) { // Nicephore - Screenshots and Stuff - runtimeOnly(fg.deobf("curse.maven:nicephore-401014:3879841")) + //runtimeOnly(fg.deobf("curse.maven:nicephore-401014:3879841")) // Testing Mods - Trash Cans, Pipez, Create, Refined Pipes, Pretty Pipes, Refined Storage - runtimeOnly(fg.deobf("curse.maven:SuperMartijn642-454372:3910759")) - runtimeOnly(fg.deobf("curse.maven:trashcans-394535:3871885")) + runtimeOnly(fg.deobf("curse.maven:SuperMartijn642Core-454372:5668859")) + runtimeOnly(fg.deobf("curse.maven:SuperMartijn642Config-438332:4715408")) + runtimeOnly(fg.deobf("curse.maven:trashcans-394535:4665996")) // runtimeOnly(fg.deobf("curse.maven:flywheel-486392:3871082")) // runtimeOnly(fg.deobf("curse.maven:create-328085:3737418")) @@ -302,8 +304,8 @@ dependencies { // runtimeOnly(fg.deobf("curse.maven:ftbchunks-314906:3780113")) // Mekanism + Mek Generators - Tunnel testing - runtimeOnly(fg.deobf("curse.maven:mekanism-268560:3922056")) - runtimeOnly(fg.deobf("curse.maven:mekanismgenerators-268566:3922058")) + runtimeOnly(fg.deobf("curse.maven:mekanism-268560:5662583")) + runtimeOnly(fg.deobf("curse.maven:mekanismgenerators-268566:5662587")) // Soul Shards (FTB) // runtimeOnly(fg.deobf("curse.maven:polylib-576589:3751528")) diff --git a/gradle.properties b/gradle.properties index 2439531c..15442903 100644 --- a/gradle.properties +++ b/gradle.properties @@ -3,15 +3,15 @@ org.gradle.jvmargs=-Xmx3G org.gradle.daemon=false -minecraft_version=1.19.2 -forge_version=43.0.8 -parchment_version=2022.08.10-1.19.2 +minecraft_version=1.20.1 +forge_version=47.3.0 +parchment_version=2023.09.03-1.20.1 mod_id=compactmachines # Dependencies and Libs -jei_mc_version=1.19.2 -jei_version=11.2.0.247 +jei_mc_version=1.20.1 +jei_version=15.18.0.79 #top_version=1.16-3.1.4-22 # Curseforge diff --git a/src/api/java/dev/compactmods/machines/api/codec/CodecExtensions.java b/src/api/java/dev/compactmods/machines/api/codec/CodecExtensions.java index 7d881276..259c8f29 100644 --- a/src/api/java/dev/compactmods/machines/api/codec/CodecExtensions.java +++ b/src/api/java/dev/compactmods/machines/api/codec/CodecExtensions.java @@ -17,7 +17,7 @@ public abstract class CodecExtensions { try { return DataResult.success(UUID.fromString(s)); } catch (Exception ex) { - return DataResult.error("Not a valid UUID: " + s + " (" + ex.getMessage() + ")"); + return DataResult.error(() -> "Not a valid UUID: " + s + " (" + ex.getMessage() + ")"); } }, UUID::toString).stable(); diff --git a/src/api/java/dev/compactmods/machines/api/codec/DoubleStreamExtensions.java b/src/api/java/dev/compactmods/machines/api/codec/DoubleStreamExtensions.java index c00465cb..0087405c 100644 --- a/src/api/java/dev/compactmods/machines/api/codec/DoubleStreamExtensions.java +++ b/src/api/java/dev/compactmods/machines/api/codec/DoubleStreamExtensions.java @@ -32,7 +32,7 @@ public static DataResult fixedDoubleSize(DoubleStream stream, int limi double[] limited = stream.limit(limit + 1).toArray(); if (limited.length != limit) { String s = "Input is not a list of " + limit + " doubles"; - return limited.length >= limit ? DataResult.error(s, Arrays.copyOf(limited, limit)) : DataResult.error(s); + return limited.length >= limit ? DataResult.error(() -> s, Arrays.copyOf(limited, limit)) : DataResult.error(() -> s); } else { return DataResult.success(limited); } @@ -44,7 +44,7 @@ public static DataResult getDoubleStream(final DynamicOps o if (list.stream().allMatch(element -> ops.getNumberValue(element).result().isPresent())) { return DataResult.success(list.stream().mapToDouble(element -> ops.getNumberValue(element).result().get().doubleValue())); } - return DataResult.error("Some elements are not doubles: " + input); + return DataResult.error(() -> "Some elements are not doubles: " + input); }); } } diff --git a/src/api/java/dev/compactmods/machines/api/dimension/CompactDimension.java b/src/api/java/dev/compactmods/machines/api/dimension/CompactDimension.java index 60a436f6..29cc3cf3 100644 --- a/src/api/java/dev/compactmods/machines/api/dimension/CompactDimension.java +++ b/src/api/java/dev/compactmods/machines/api/dimension/CompactDimension.java @@ -1,6 +1,8 @@ package dev.compactmods.machines.api.dimension; import net.minecraft.core.Registry; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.core.registries.Registries; import net.minecraft.resources.ResourceKey; import net.minecraft.resources.ResourceLocation; import net.minecraft.server.MinecraftServer; @@ -13,10 +15,10 @@ public abstract class CompactDimension { public static final ResourceKey LEVEL_KEY = ResourceKey - .create(Registry.DIMENSION_REGISTRY, new ResourceLocation(MOD_ID, "compact_world")); + .create(Registries.DIMENSION, new ResourceLocation(MOD_ID, "compact_world")); public static final ResourceKey DIM_TYPE_KEY = ResourceKey - .create(Registry.DIMENSION_TYPE_REGISTRY, new ResourceLocation(MOD_ID, "compact_world")); + .create(Registries.DIMENSION_TYPE, new ResourceLocation(MOD_ID, "compact_world")); private CompactDimension() {} diff --git a/src/datagen/java/dev/compactmods/machines/datagen/AdvancementGenerator.java b/src/datagen/java/dev/compactmods/machines/datagen/AdvancementGenerator.java deleted file mode 100644 index 800b1e3e..00000000 --- a/src/datagen/java/dev/compactmods/machines/datagen/AdvancementGenerator.java +++ /dev/null @@ -1,206 +0,0 @@ -package dev.compactmods.machines.datagen; - -import com.google.common.collect.Sets; -import com.google.gson.Gson; -import com.google.gson.GsonBuilder; -import dev.compactmods.machines.CompactMachines; -import dev.compactmods.machines.advancement.trigger.BasicPlayerAdvTrigger; -import dev.compactmods.machines.advancement.trigger.HowDidYouGetHereTrigger; -import dev.compactmods.machines.api.core.Advancements; -import dev.compactmods.machines.api.core.Constants; -import dev.compactmods.machines.i18n.TranslationUtil; -import dev.compactmods.machines.machine.Machines; -import dev.compactmods.machines.shrinking.Shrinking; -import dev.compactmods.machines.wall.Walls; -import net.minecraft.advancements.Advancement; -import net.minecraft.advancements.DisplayInfo; -import net.minecraft.advancements.FrameType; -import net.minecraft.advancements.critereon.ImpossibleTrigger; -import net.minecraft.advancements.critereon.InventoryChangeTrigger; -import net.minecraft.data.CachedOutput; -import net.minecraft.data.DataGenerator; -import net.minecraft.data.DataProvider; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.item.Item; -import net.minecraft.world.item.ItemStack; - -import javax.annotation.Nonnull; -import java.io.IOException; -import java.nio.file.Path; -import java.util.Set; -import java.util.function.Consumer; -import java.util.function.Supplier; - -public class AdvancementGenerator implements DataProvider { - - private static final Gson GSON = (new GsonBuilder()).setPrettyPrinting().create(); - private final DataGenerator generator; - - public AdvancementGenerator(DataGenerator gen) { - this.generator = gen; - } - - @Override - public void run(@Nonnull CachedOutput cache) { - Path path = this.generator.getOutputFolder(); - Set set = Sets.newHashSet(); - Consumer consumer = (adv) -> { - if (!set.add(adv.getId())) { - throw new IllegalStateException("Duplicate advancement " + adv.getId()); - } else { - Path path1 = path.resolve("data/" + adv.getId().getNamespace() + "/advancements/" + adv.getId().getPath() + ".json"); - - try { - DataProvider.saveStable(cache, adv.deconstruct().serializeToJson(), path1); - } catch (IOException ioexception) { - CompactMachines.LOGGER.error("Couldn't save advancement {}", path1, ioexception); - } - - } - }; - - generateAdvancements(consumer); - } - - private ResourceLocation modLoc(String i) { - return new ResourceLocation(Constants.MOD_ID, i); - } - - private void generateAdvancements(Consumer consumer) { - - final Advancement root = Advancement.Builder.advancement() - .addCriterion("root", new ImpossibleTrigger.TriggerInstance()) - .display(new DisplayBuilder() - .frame(FrameType.TASK) - .background(modLoc("textures/block/wall.png")) - .item(new ItemStack(Machines.MACHINE_BLOCK_ITEM_NORMAL.get())) - .id(Advancements.ROOT) - .toast(false).hidden(false).chat(false) - .build()) - .save(consumer, modLoc("root").toString()); - - Advancement.Builder.advancement() - .parent(root) - .addCriterion("got_stuck", HowDidYouGetHereTrigger.Instance.create()) - .display(new DisplayBuilder() - .frame(FrameType.CHALLENGE) - .item(new ItemStack(Shrinking.PERSONAL_SHRINKING_DEVICE.get())) - .id(Advancements.HOW_DID_YOU_GET_HERE) - .toast(false).hidden(true) - .build()) - .save(consumer, Advancements.HOW_DID_YOU_GET_HERE.toString()); - - Advancement.Builder.advancement() - .parent(root) - .addCriterion("recursion", BasicPlayerAdvTrigger.Instance.create(Advancements.RECURSIVE_ROOMS)) - .display(new DisplayBuilder() - .frame(FrameType.CHALLENGE) - .item(new ItemStack(Shrinking.PERSONAL_SHRINKING_DEVICE.get())) - .id(Advancements.RECURSIVE_ROOMS) - .toast(false).hidden(true) - .build()) - .save(consumer, Advancements.RECURSIVE_ROOMS.toString()); - - Advancement.Builder.advancement() - .parent(root) - .addCriterion("obtained_wall", InventoryChangeTrigger.TriggerInstance.hasItems(Walls.BLOCK_BREAKABLE_WALL.get())) - .display(new DisplayBuilder() - .frame(FrameType.TASK) - .item(new ItemStack(Walls.BLOCK_BREAKABLE_WALL.get())) - .id(Advancements.FOUNDATIONS) - .build()) - .save(consumer, Advancements.FOUNDATIONS.toString()); - - final Advancement psd = Advancement.Builder.advancement() - .parent(root) - .addCriterion("obtained_psd", InventoryChangeTrigger.TriggerInstance.hasItems(Shrinking.PERSONAL_SHRINKING_DEVICE.get())) - .display(new DisplayBuilder() - .frame(FrameType.TASK) - .item(new ItemStack(Shrinking.PERSONAL_SHRINKING_DEVICE.get())) - .id(Advancements.GOT_SHRINKING_DEVICE) - .build()) - .save(consumer, Advancements.GOT_SHRINKING_DEVICE.toString()); - - machineAdvancement(consumer, psd, Advancements.CLAIMED_TINY_MACHINE, Machines.MACHINE_BLOCK_ITEM_TINY); - machineAdvancement(consumer, psd, Advancements.CLAIMED_SMALL_MACHINE, Machines.MACHINE_BLOCK_ITEM_SMALL); - machineAdvancement(consumer, psd, Advancements.CLAIMED_NORMAL_MACHINE, Machines.MACHINE_BLOCK_ITEM_NORMAL); - machineAdvancement(consumer, psd, Advancements.CLAIMED_LARGE_MACHINE, Machines.MACHINE_BLOCK_ITEM_LARGE); - machineAdvancement(consumer, psd, Advancements.CLAIMED_GIANT_MACHINE, Machines.MACHINE_BLOCK_ITEM_GIANT); - machineAdvancement(consumer, psd, Advancements.CLAIMED_MAX_MACHINE, Machines.MACHINE_BLOCK_ITEM_MAXIMUM); - } - - private void machineAdvancement(Consumer consumer, Advancement root, ResourceLocation advancement, Supplier item) { - Advancement.Builder.advancement() - .parent(root) - .addCriterion("claimed_machine", BasicPlayerAdvTrigger.Instance.create(advancement)) - .display(new DisplayBuilder() - .frame(FrameType.TASK) - .item(new ItemStack(item.get())) - .id(advancement) - .build()) - .save(consumer, advancement.toString()); - } - - @Override - public String getName() { - return "CompactMachinesAdvancements"; - } - - private static class DisplayBuilder { - - private ItemStack stack; - private ResourceLocation translationId; - private boolean showToast = true; - private boolean showInChat = true; - private boolean isHidden = false; - private ResourceLocation background = null; - private FrameType frame = FrameType.TASK; - - public DisplayBuilder() { - } - - public DisplayInfo build() { - return new DisplayInfo(stack, - TranslationUtil.advancementTitle(translationId), - TranslationUtil.advancementDesc(translationId), - background, - frame, - showToast, showInChat, isHidden); - } - - public DisplayBuilder item(ItemStack item) { - stack = item; - return this; - } - - public DisplayBuilder id(ResourceLocation transId) { - translationId = transId; - return this; - } - - public DisplayBuilder toast(boolean toast) { - this.showToast = toast; - return this; - } - - public DisplayBuilder chat(boolean chat) { - this.showInChat = chat; - return this; - } - - public DisplayBuilder hidden(boolean hidden) { - this.isHidden = hidden; - return this; - } - - public DisplayBuilder background(ResourceLocation resource) { - this.background = resource; - return this; - } - - public DisplayBuilder frame(FrameType frame) { - this.frame = frame; - return this; - } - } -} diff --git a/src/datagen/java/dev/compactmods/machines/datagen/BlockLootGenerator.java b/src/datagen/java/dev/compactmods/machines/datagen/BlockLootGenerator.java index 53118ec3..b869110b 100644 --- a/src/datagen/java/dev/compactmods/machines/datagen/BlockLootGenerator.java +++ b/src/datagen/java/dev/compactmods/machines/datagen/BlockLootGenerator.java @@ -1,94 +1,70 @@ package dev.compactmods.machines.datagen; import com.google.common.collect.ImmutableList; -import com.mojang.datafixers.util.Pair; import dev.compactmods.machines.machine.Machines; import dev.compactmods.machines.room.data.CopyRoomBindingFunction; import dev.compactmods.machines.wall.Walls; -import net.minecraft.data.DataGenerator; -import net.minecraft.data.loot.BlockLoot; -import net.minecraft.data.loot.LootTableProvider; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.data.loot.BlockLootSubProvider; +import net.minecraft.world.flag.FeatureFlags; import net.minecraft.world.item.Item; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.storage.loot.LootPool; import net.minecraft.world.level.storage.loot.LootTable; -import net.minecraft.world.level.storage.loot.LootTables; -import net.minecraft.world.level.storage.loot.ValidationContext; import net.minecraft.world.level.storage.loot.entries.LootItem; -import net.minecraft.world.level.storage.loot.parameters.LootContextParamSet; -import net.minecraft.world.level.storage.loot.parameters.LootContextParamSets; import net.minecraft.world.level.storage.loot.predicates.ExplosionCondition; import net.minecraft.world.level.storage.loot.providers.number.ConstantValue; import net.minecraftforge.registries.RegistryObject; -import javax.annotation.Nonnull; -import java.util.List; -import java.util.Map; -import java.util.function.BiConsumer; -import java.util.function.Consumer; -import java.util.function.Supplier; +import java.util.Collections; -public class BlockLootGenerator extends LootTableProvider { +public class BlockLootGenerator extends BlockLootSubProvider { - public BlockLootGenerator(DataGenerator dataGeneratorIn) { - super(dataGeneratorIn); + public BlockLootGenerator() { + super(Collections.emptySet(), FeatureFlags.REGISTRY.allFlags()); } @Override - protected List>>, LootContextParamSet>> getTables() { - return ImmutableList.of(Pair.of(Blocks::new, LootContextParamSets.BLOCK)); - } + protected void generate() { + this.add(Walls.BLOCK_BREAKABLE_WALL.get(), LootTable.lootTable().withPool(LootPool + .lootPool() + .name(Walls.BLOCK_BREAKABLE_WALL.getId().toString()) + .setRolls(ConstantValue.exactly(1)) + .when(ExplosionCondition.survivesExplosion()) + .add(LootItem.lootTableItem(Walls.ITEM_BREAKABLE_WALL.get())))); - @Override - protected void validate(Map map, @Nonnull ValidationContext val) { - map.forEach((name, table) -> LootTables.validate(val, name, table)); + // Compact Machines + registerCompactMachineBlockDrops(Machines.MACHINE_BLOCK_TINY, Machines.MACHINE_BLOCK_ITEM_TINY); + registerCompactMachineBlockDrops(Machines.MACHINE_BLOCK_SMALL, Machines.MACHINE_BLOCK_ITEM_SMALL); + registerCompactMachineBlockDrops(Machines.MACHINE_BLOCK_NORMAL, Machines.MACHINE_BLOCK_ITEM_NORMAL); + registerCompactMachineBlockDrops(Machines.MACHINE_BLOCK_LARGE, Machines.MACHINE_BLOCK_ITEM_LARGE); + registerCompactMachineBlockDrops(Machines.MACHINE_BLOCK_GIANT, Machines.MACHINE_BLOCK_ITEM_GIANT); + registerCompactMachineBlockDrops(Machines.MACHINE_BLOCK_MAXIMUM, Machines.MACHINE_BLOCK_ITEM_MAXIMUM); } - private static class Blocks extends BlockLoot { - @Override - protected void addTables() { - this.add(Walls.BLOCK_BREAKABLE_WALL.get(), LootTable.lootTable().withPool(LootPool - .lootPool() - .name(Walls.BLOCK_BREAKABLE_WALL.getId().toString()) - .setRolls(ConstantValue.exactly(1)) - .when(ExplosionCondition.survivesExplosion()) - .add(LootItem.lootTableItem(Walls.ITEM_BREAKABLE_WALL.get())))); - - // Compact Machines - registerCompactMachineBlockDrops(Machines.MACHINE_BLOCK_TINY, Machines.MACHINE_BLOCK_ITEM_TINY); - registerCompactMachineBlockDrops(Machines.MACHINE_BLOCK_SMALL, Machines.MACHINE_BLOCK_ITEM_SMALL); - registerCompactMachineBlockDrops(Machines.MACHINE_BLOCK_NORMAL, Machines.MACHINE_BLOCK_ITEM_NORMAL); - registerCompactMachineBlockDrops(Machines.MACHINE_BLOCK_LARGE, Machines.MACHINE_BLOCK_ITEM_LARGE); - registerCompactMachineBlockDrops(Machines.MACHINE_BLOCK_GIANT, Machines.MACHINE_BLOCK_ITEM_GIANT); - registerCompactMachineBlockDrops(Machines.MACHINE_BLOCK_MAXIMUM, Machines.MACHINE_BLOCK_ITEM_MAXIMUM); - } + private void registerCompactMachineBlockDrops(RegistryObject block, RegistryObject item) { + LootPool.Builder builder = LootPool.lootPool() + .name(block.getId().toString()) + .setRolls(ConstantValue.exactly(1)) + .when(ExplosionCondition.survivesExplosion()) + .apply(CopyRoomBindingFunction.binding()) + .add(LootItem.lootTableItem(item.get())); - private void registerCompactMachineBlockDrops(RegistryObject block, RegistryObject item) { - LootPool.Builder builder = LootPool.lootPool() - .name(block.getId().toString()) - .setRolls(ConstantValue.exactly(1)) - .when(ExplosionCondition.survivesExplosion()) - .apply(CopyRoomBindingFunction.binding()) - .add(LootItem.lootTableItem(item.get())); - - this.add(block.get(), LootTable.lootTable().withPool(builder)); - } + this.add(block.get(), LootTable.lootTable().withPool(builder)); + } - @Override - protected Iterable getKnownBlocks() { - return ImmutableList.of( - // Breakable Walls - Walls.BLOCK_BREAKABLE_WALL.get(), + @Override + protected Iterable getKnownBlocks() { + return ImmutableList.of( + // Breakable Walls + Walls.BLOCK_BREAKABLE_WALL.get(), - // Compact Machines - Machines.MACHINE_BLOCK_TINY.get(), - Machines.MACHINE_BLOCK_SMALL.get(), - Machines.MACHINE_BLOCK_NORMAL.get(), - Machines.MACHINE_BLOCK_LARGE.get(), - Machines.MACHINE_BLOCK_GIANT.get(), - Machines.MACHINE_BLOCK_MAXIMUM.get() - ); - } + // Compact Machines + Machines.MACHINE_BLOCK_TINY.get(), + Machines.MACHINE_BLOCK_SMALL.get(), + Machines.MACHINE_BLOCK_NORMAL.get(), + Machines.MACHINE_BLOCK_LARGE.get(), + Machines.MACHINE_BLOCK_GIANT.get(), + Machines.MACHINE_BLOCK_MAXIMUM.get() + ); } } diff --git a/src/datagen/java/dev/compactmods/machines/datagen/DataGenUtil.java b/src/datagen/java/dev/compactmods/machines/datagen/DataGenUtil.java index 8db1e7fd..b95bcb78 100644 --- a/src/datagen/java/dev/compactmods/machines/datagen/DataGenUtil.java +++ b/src/datagen/java/dev/compactmods/machines/datagen/DataGenUtil.java @@ -33,14 +33,8 @@ public static BiConsumer makeWriter(Gson gson, @Nonnull fileLocation = fileLocation.resolve(path + ".json"); - try { - //noinspection OptionalGetWithoutIsPresent - DataProvider.saveStable(cache, codec.encodeStart(JsonOps.INSTANCE, resource).result().get(), fileLocation); - - set.put(regName, resource); - } catch (IOException ioe) { - CompactMachines.LOGGER.error("Couldn't save resource {}", fileLocation, ioe); - } + DataProvider.saveStable(cache, codec.encodeStart(JsonOps.INSTANCE, resource).result().get(), fileLocation); + set.put(regName, resource); } }; } @@ -59,13 +53,10 @@ static BiConsumer makeCustomWriter(Gson gson, @Nonnull fileLocation = fileLocation.resolve(path + ".json"); - try { - DataProvider.saveStable(cache, writer.apply(resource), fileLocation); - set.put(regName, resource); - } catch (IOException ioe) { - CompactMachines.LOGGER.error("Couldn't save resource {}", fileLocation, ioe); - } + DataProvider.saveStable(cache, writer.apply(resource), fileLocation); + set.put(regName, resource); + } }; } diff --git a/src/datagen/java/dev/compactmods/machines/datagen/DataGeneration.java b/src/datagen/java/dev/compactmods/machines/datagen/DataGeneration.java index 5b01302f..ba58ec7c 100644 --- a/src/datagen/java/dev/compactmods/machines/datagen/DataGeneration.java +++ b/src/datagen/java/dev/compactmods/machines/datagen/DataGeneration.java @@ -1,36 +1,47 @@ package dev.compactmods.machines.datagen; import dev.compactmods.machines.CompactMachines; +import dev.compactmods.machines.api.core.Constants; import dev.compactmods.machines.datagen.lang.EnglishLangGenerator; import dev.compactmods.machines.datagen.lang.RussianLangGenerator; import dev.compactmods.machines.datagen.tags.BlockTagGenerator; import dev.compactmods.machines.datagen.tags.ItemTagGenerator; +import net.minecraft.data.loot.LootTableProvider; +import net.minecraft.world.level.storage.loot.parameters.LootContextParamSets; import net.minecraftforge.data.event.GatherDataEvent; import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.fml.common.Mod; -@Mod.EventBusSubscriber(modid = CompactMachines.MOD_ID, bus = Mod.EventBusSubscriber.Bus.MOD) +import java.util.Collections; +import java.util.List; + +@Mod.EventBusSubscriber(modid = Constants.MOD_ID, bus = Mod.EventBusSubscriber.Bus.MOD) public class DataGeneration { @SubscribeEvent public static void gatherData(GatherDataEvent event) { final var helper = event.getExistingFileHelper(); final var generator = event.getGenerator(); + final var packOut = generator.getPackOutput(); + final var holderLookup = event.getLookupProvider(); // Server - generator.addProvider(event.includeServer(), new LevelBiomeGenerator(generator)); - generator.addProvider(event.includeServer(), new BlockLootGenerator(generator)); - generator.addProvider(event.includeServer(), new RecipeGenerator(generator)); - generator.addProvider(event.includeServer(), new AdvancementGenerator(generator)); + generator.addProvider(event.includeServer(), new DatapackRegisteredStuff(packOut, holderLookup)); + generator.addProvider(event.includeServer(), new LootTableProvider( + packOut, + Collections.emptySet(), + List.of(new LootTableProvider.SubProviderEntry(BlockLootGenerator::new, LootContextParamSets.BLOCK)) + )); + generator.addProvider(event.includeServer(), new RecipeGenerator(packOut)); - final var blocks = new BlockTagGenerator(generator, helper); + final var blocks = new BlockTagGenerator(packOut, helper, holderLookup); generator.addProvider(event.includeServer(), blocks); - generator.addProvider(event.includeServer(), new ItemTagGenerator(generator, blocks, helper)); + generator.addProvider(event.includeServer(), new ItemTagGenerator(packOut, blocks, holderLookup)); // Client - generator.addProvider(event.includeClient(), new StateGenerator(generator, helper)); - generator.addProvider(event.includeClient(), new TunnelWallStateGenerator(generator, helper)); - generator.addProvider(event.includeClient(), new ItemModelGenerator(generator, helper)); + generator.addProvider(event.includeClient(), new StateGenerator(packOut, helper)); + //generator.addProvider(event.includeClient(), new TunnelWallStateGenerator(packOut, helper)); + generator.addProvider(event.includeClient(), new ItemModelGenerator(packOut, helper)); generator.addProvider(event.includeClient(), new EnglishLangGenerator(generator)); generator.addProvider(event.includeClient(), new RussianLangGenerator(generator)); diff --git a/src/datagen/java/dev/compactmods/machines/datagen/DatapackRegisteredStuff.java b/src/datagen/java/dev/compactmods/machines/datagen/DatapackRegisteredStuff.java new file mode 100644 index 00000000..5acec1a9 --- /dev/null +++ b/src/datagen/java/dev/compactmods/machines/datagen/DatapackRegisteredStuff.java @@ -0,0 +1,109 @@ +package dev.compactmods.machines.datagen; + +import dev.compactmods.machines.api.core.Constants; +import dev.compactmods.machines.api.dimension.CompactDimension; +import dev.compactmods.machines.dimension.Dimension; +import net.minecraft.core.HolderLookup; +import net.minecraft.core.RegistrySetBuilder; +import net.minecraft.core.registries.Registries; +import net.minecraft.data.PackOutput; +import net.minecraft.data.worldgen.BiomeDefaultFeatures; +import net.minecraft.data.worldgen.BootstapContext; +import net.minecraft.resources.ResourceKey; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.util.FastColor; +import net.minecraft.world.level.biome.Biome; +import net.minecraft.world.level.biome.BiomeGenerationSettings; +import net.minecraft.world.level.biome.BiomeSpecialEffects; +import net.minecraft.world.level.biome.MobSpawnSettings; +import net.minecraft.world.level.dimension.DimensionType; +import net.minecraft.world.level.dimension.LevelStem; +import net.minecraft.world.level.levelgen.FlatLevelSource; +import net.minecraft.world.level.levelgen.flat.FlatLayerInfo; +import net.minecraft.world.level.levelgen.flat.FlatLevelGeneratorSettings; +import net.minecraftforge.common.data.DatapackBuiltinEntriesProvider; + +import java.util.Collections; +import java.util.List; +import java.util.Optional; +import java.util.Set; +import java.util.concurrent.CompletableFuture; + +public class DatapackRegisteredStuff extends DatapackBuiltinEntriesProvider { + private static final ResourceLocation COMPACT_BIOME = new ResourceLocation(Constants.MOD_ID, "machine"); + private static final int DIMENSION_HEIGHT = 48; + + private static final RegistrySetBuilder BUILDER = new RegistrySetBuilder() + .add(Registries.BIOME, DatapackRegisteredStuff::generateBiomes) + .add(Registries.DIMENSION_TYPE, DatapackRegisteredStuff::generateDimensionTypes) + .add(Registries.LEVEL_STEM, DatapackRegisteredStuff::generateDimensions); + //.add(RoomTemplate.REGISTRY_KEY, DatapackRegisteredStuff::addRoomTemplates); + + DatapackRegisteredStuff(PackOutput packOutput, CompletableFuture registries) { + super(packOutput, registries, BUILDER, Set.of(Constants.MOD_ID)); + } + + private static void generateBiomes(BootstapContext ctx) { + var spawnBuilder = new MobSpawnSettings.Builder(); + BiomeDefaultFeatures.plainsSpawns(spawnBuilder); + var spawns = spawnBuilder.build(); + + final Biome compactBiome = new Biome.BiomeBuilder() + .downfall(0) + .generationSettings(BiomeGenerationSettings.EMPTY) + .mobSpawnSettings(spawns) + .hasPrecipitation(false) + .temperature(0.8f) + .temperatureAdjustment(Biome.TemperatureModifier.NONE) + .specialEffects(new BiomeSpecialEffects.Builder() + .fogColor(12638463) + .waterColor(4159204) + .waterFogColor(329011) + .skyColor(0xFF000000) + .build()) + .build(); + + ctx.register(ResourceKey.create(Registries.BIOME, COMPACT_BIOME), compactBiome); + } + + private static void generateDimensionTypes(BootstapContext ctx) { + ctx.register(CompactDimension.DIM_TYPE_KEY, new DimensionTypeBuilder() + .bedWorks(false) + .respawnAnchorWorks(false) + .fixedTime(18000L) + .natural(false) + .raids(false) + .heightBounds(0, DIMENSION_HEIGHT) + .build()); + } + + private static void generateDimensions(BootstapContext ctx) { + final var biomes = ctx.lookup(Registries.BIOME); + final var dimTypes = ctx.lookup(Registries.DIMENSION_TYPE); + + final var cmBiome = biomes.getOrThrow(ResourceKey.create(Registries.BIOME, COMPACT_BIOME)); + + var flatSettings = new FlatLevelGeneratorSettings(Optional.empty(), cmBiome, Collections.emptyList()) + .withBiomeAndLayers( + List.of(new FlatLayerInfo(DIMENSION_HEIGHT, Dimension.BLOCK_MACHINE_VOID_AIR.get())), + Optional.empty(), + cmBiome + ); + + var stem = new LevelStem(dimTypes.getOrThrow(CompactDimension.DIM_TYPE_KEY), new FlatLevelSource(flatSettings)); + ctx.register(ResourceKey.create(Registries.LEVEL_STEM, CompactDimension.LEVEL_KEY.location()), stem); + } + + /*private static void addRoomTemplates(BootstapContext ctx) { + roomTemplate(ctx, "tiny", new RoomTemplate(3, FastColor.ARGB32.color(255, 201, 91, 19))); + roomTemplate(ctx, "small", new RoomTemplate(5, FastColor.ARGB32.color(255, 212, 210, 210))); + roomTemplate(ctx, "normal", new RoomTemplate(7, FastColor.ARGB32.color(255, 251, 242, 54))); + roomTemplate(ctx, "large", new RoomTemplate(9, FastColor.ARGB32.color(255, 33, 27, 46))); + roomTemplate(ctx, "giant", new RoomTemplate(11, FastColor.ARGB32.color(255, 67, 214, 205))); + roomTemplate(ctx, "colossal", new RoomTemplate(13, FastColor.ARGB32.color(255, 66, 63, 66))); + } + + private static void roomTemplate(BootstapContext ctx, String name, RoomTemplate template) { + ctx.register(ResourceKey.create(RoomTemplate.REGISTRY_KEY, new ResourceLocation(Constants.MOD_ID, name)), template); + }*/ +} diff --git a/src/datagen/java/dev/compactmods/machines/datagen/ItemModelGenerator.java b/src/datagen/java/dev/compactmods/machines/datagen/ItemModelGenerator.java index f2665fef..14a532ee 100644 --- a/src/datagen/java/dev/compactmods/machines/datagen/ItemModelGenerator.java +++ b/src/datagen/java/dev/compactmods/machines/datagen/ItemModelGenerator.java @@ -3,14 +3,14 @@ import dev.compactmods.machines.api.core.Constants; import dev.compactmods.machines.api.room.RoomSize; import dev.compactmods.machines.upgrade.MachineRoomUpgrades; -import net.minecraft.data.DataGenerator; +import net.minecraft.data.PackOutput; import net.minecraftforge.client.model.generators.ItemModelProvider; import net.minecraftforge.common.data.ExistingFileHelper; public class ItemModelGenerator extends ItemModelProvider { - public ItemModelGenerator(DataGenerator generator, ExistingFileHelper existingFileHelper) { - super(generator, Constants.MOD_ID, existingFileHelper); + public ItemModelGenerator(PackOutput packOutput, ExistingFileHelper existingFileHelper) { + super(packOutput, Constants.MOD_ID, existingFileHelper); } @Override diff --git a/src/datagen/java/dev/compactmods/machines/datagen/LevelBiomeGenerator.java b/src/datagen/java/dev/compactmods/machines/datagen/LevelBiomeGenerator.java deleted file mode 100644 index 7c1a5cf9..00000000 --- a/src/datagen/java/dev/compactmods/machines/datagen/LevelBiomeGenerator.java +++ /dev/null @@ -1,146 +0,0 @@ -package dev.compactmods.machines.datagen; - -import com.google.common.collect.ImmutableSet; -import com.google.common.collect.Maps; -import com.google.gson.Gson; -import com.google.gson.GsonBuilder; -import com.google.gson.JsonElement; -import com.google.gson.JsonObject; -import com.mojang.serialization.JsonOps; -import dev.compactmods.machines.CompactMachines; -import dev.compactmods.machines.api.core.Constants; -import dev.compactmods.machines.api.dimension.CompactDimension; -import dev.compactmods.machines.dimension.Dimension; -import net.minecraft.core.Holder; -import net.minecraft.core.Registry; -import net.minecraft.core.RegistryAccess; -import net.minecraft.data.*; -import net.minecraft.data.worldgen.BiomeDefaultFeatures; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.level.biome.Biome; -import net.minecraft.world.level.biome.BiomeGenerationSettings; -import net.minecraft.world.level.biome.BiomeSpecialEffects; -import net.minecraft.world.level.biome.MobSpawnSettings; -import net.minecraft.world.level.chunk.ChunkGenerator; -import net.minecraft.world.level.dimension.DimensionType; -import net.minecraft.world.level.dimension.LevelStem; -import net.minecraft.world.level.levelgen.FlatLevelSource; -import net.minecraft.world.level.levelgen.flat.FlatLayerInfo; -import net.minecraft.world.level.levelgen.flat.FlatLevelGeneratorSettings; - -import javax.annotation.Nonnull; -import java.nio.file.Path; -import java.util.HashMap; -import java.util.Optional; -import java.util.function.BiConsumer; - -public class LevelBiomeGenerator implements DataProvider { - private static final Gson GSON = (new GsonBuilder()).setPrettyPrinting().create(); - private final DataGenerator generator; - - private final ResourceLocation COMPACT_BIOME = new ResourceLocation(Constants.MOD_ID, "machine"); - - LevelBiomeGenerator(DataGenerator generator) { - this.generator = generator; - } - - @Override - public void run(@Nonnull CachedOutput cache) { - Path data = this.generator.getOutputFolder(); - - HashMap biomes = Maps.newHashMap(); - HashMap dims = Maps.newHashMap(); - HashMap dimTypes = Maps.newHashMap(); - - var biomeWriter = DataGenUtil.makeWriter(GSON, cache, data, ImmutableSet.of("worldgen", "biome"), Biome.DIRECT_CODEC, biomes); - - var dimTypeWriter = DataGenUtil.makeWriter(GSON, cache, data, ImmutableSet.of("dimension_type"), DimensionType.DIRECT_CODEC, dimTypes); - - var dimWriter = DataGenUtil.makeCustomWriter(GSON, cache, data, ImmutableSet.of("dimension"), this::writeFlatDimension, dims); - - writeBiomes(biomeWriter); - writeDimensionTypes(dimTypeWriter); - writeDimensions(biomes, dimTypes, dimWriter); - } - - private JsonElement writeFlatDimension(LevelStem dimension) { - JsonObject d = new JsonObject(); - - d.addProperty("type", CompactDimension.LEVEL_KEY.location().toString()); - - var gen = ChunkGenerator.CODEC.encodeStart(JsonOps.INSTANCE, dimension.generator()) - .getOrThrow(false, CompactMachines.LOGGER::error) - .getAsJsonObject(); - - // transform the chunk generator to add the type reference to the flat gen - var fls = Registry.CHUNK_GENERATOR.getResourceKey(FlatLevelSource.CODEC); - fls.ifPresent(genType -> gen.addProperty("type", genType.location().toString())); - - // transform the full biome object into a reference - var settings = gen.get("settings").getAsJsonObject(); - settings.remove("biome"); - settings.addProperty("biome", this.COMPACT_BIOME.toString()); - - d.add("generator", gen); - - return d; - } - - private void writeDimensions(HashMap biomes, HashMap dimTypes, BiConsumer consumer) { - - RegistryAccess.Frozen reg = RegistryAccess.BUILTIN.get(); - final var ssreg = reg.registryOrThrow(Registry.STRUCTURE_SET_REGISTRY); - - var flatSettings = new FlatLevelGeneratorSettings(Optional.empty(), BuiltinRegistries.BIOME); - - flatSettings.setBiome(Holder.direct(biomes.get(COMPACT_BIOME))); - flatSettings.getLayersInfo().add(new FlatLayerInfo(dimTypes.get(CompactDimension.LEVEL_KEY.location()).height(), Dimension.BLOCK_MACHINE_VOID_AIR.get())); - flatSettings.updateLayers(); - - var stem = new LevelStem(Holder.direct(dimTypes.get(CompactDimension.LEVEL_KEY.location())), new FlatLevelSource(ssreg, flatSettings)); - consumer.accept(stem, CompactDimension.LEVEL_KEY.location()); - } - - private void writeDimensionTypes(BiConsumer consumer) { - final DimensionType dim = new DimensionTypeBuilder() - .bedWorks(false) - .respawnAnchorWorks(false) - .fixedTime(18000L) - .natural(false) - .raids(false) - .heightBounds(0, 256) - .build(); - - consumer.accept(dim, CompactDimension.LEVEL_KEY.location()); - } - - private void writeBiomes(BiConsumer biomeWriter) { - var spawnBuilder = new MobSpawnSettings.Builder(); - BiomeDefaultFeatures.plainsSpawns(spawnBuilder); - var spawns = spawnBuilder.build(); - - final Biome compactBiome = new Biome.BiomeBuilder() - .downfall(0) - .generationSettings(BiomeGenerationSettings.EMPTY) - .mobSpawnSettings(spawns) - .precipitation(Biome.Precipitation.NONE) - .temperature(0.8f) - .temperatureAdjustment(Biome.TemperatureModifier.NONE) - .specialEffects(new BiomeSpecialEffects.Builder() - .fogColor(12638463) - .waterColor(4159204) - .waterFogColor(329011) - .skyColor(0xFF000000) - .build()) - .build(); - - biomeWriter.accept(compactBiome, COMPACT_BIOME); - } - - - - @Override - public String getName() { - return Constants.MOD_ID + ":levelgen"; - } -} diff --git a/src/datagen/java/dev/compactmods/machines/datagen/RecipeGenerator.java b/src/datagen/java/dev/compactmods/machines/datagen/RecipeGenerator.java index 1baa86c5..ee1baf19 100644 --- a/src/datagen/java/dev/compactmods/machines/datagen/RecipeGenerator.java +++ b/src/datagen/java/dev/compactmods/machines/datagen/RecipeGenerator.java @@ -6,8 +6,11 @@ import dev.compactmods.machines.shrinking.Shrinking; import dev.compactmods.machines.tunnel.Tunnels; import dev.compactmods.machines.wall.Walls; +import net.minecraft.core.HolderLookup; import net.minecraft.data.DataGenerator; +import net.minecraft.data.PackOutput; import net.minecraft.data.recipes.FinishedRecipe; +import net.minecraft.data.recipes.RecipeCategory; import net.minecraft.data.recipes.RecipeProvider; import net.minecraft.data.recipes.ShapedRecipeBuilder; import net.minecraft.tags.TagKey; @@ -24,13 +27,13 @@ import java.util.function.Consumer; public class RecipeGenerator extends RecipeProvider { - public RecipeGenerator(DataGenerator generatorIn) { - super(generatorIn); + public RecipeGenerator(PackOutput packOut) { + super(packOut); } @Override - protected void buildCraftingRecipes(@NotNull Consumer consumer) { - ShapedRecipeBuilder.shaped(Walls.ITEM_BREAKABLE_WALL.get(), 8) + protected void buildRecipes(@NotNull Consumer consumer) { + ShapedRecipeBuilder.shaped(RecipeCategory.BUILDING_BLOCKS, Walls.ITEM_BREAKABLE_WALL.get(), 8) .pattern("DDD") .pattern("D D") .pattern("DDD") @@ -38,7 +41,7 @@ protected void buildCraftingRecipes(@NotNull Consumer consumer) .unlockedBy("picked_up_deepslate", RecipeProvider.has(Tags.Items.COBBLESTONE_DEEPSLATE)) .save(consumer); - ShapedRecipeBuilder.shaped(Shrinking.PERSONAL_SHRINKING_DEVICE.get()) + ShapedRecipeBuilder.shaped(RecipeCategory.TOOLS, Shrinking.PERSONAL_SHRINKING_DEVICE.get()) .pattern(" P ") .pattern("EBE") .pattern(" I ") @@ -87,7 +90,7 @@ private void addMachineRecipes(Consumer consumer) { protected void registerMachineRecipe(Consumer consumer, ItemLike out, TagKey center) { Item wall = Walls.ITEM_BREAKABLE_WALL.get(); - ShapedRecipeBuilder recipe = ShapedRecipeBuilder.shaped(out) + ShapedRecipeBuilder recipe = ShapedRecipeBuilder.shaped(RecipeCategory.MISC, out) .pattern("WWW"); if (center != null) diff --git a/src/datagen/java/dev/compactmods/machines/datagen/StateGenerator.java b/src/datagen/java/dev/compactmods/machines/datagen/StateGenerator.java index 27d16036..69c034e0 100644 --- a/src/datagen/java/dev/compactmods/machines/datagen/StateGenerator.java +++ b/src/datagen/java/dev/compactmods/machines/datagen/StateGenerator.java @@ -3,15 +3,22 @@ import dev.compactmods.machines.api.core.Constants; import dev.compactmods.machines.api.room.RoomSize; import dev.compactmods.machines.machine.CompactMachineBlock; +import dev.compactmods.machines.tunnel.TunnelWallBlock; +import dev.compactmods.machines.tunnel.Tunnels; import dev.compactmods.machines.wall.Walls; -import net.minecraft.data.DataGenerator; +import net.minecraft.core.Direction; +import net.minecraft.data.PackOutput; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.level.block.Block; +import net.minecraftforge.client.model.generators.BlockModelBuilder; import net.minecraftforge.client.model.generators.BlockStateProvider; import net.minecraftforge.client.model.generators.ConfiguredModel; +import net.minecraftforge.client.model.generators.ModelBuilder; import net.minecraftforge.common.data.ExistingFileHelper; public class StateGenerator extends BlockStateProvider { - public StateGenerator(DataGenerator gen, ExistingFileHelper exFileHelper) { - super(gen, Constants.MOD_ID, exFileHelper); + public StateGenerator(PackOutput packOutput, ExistingFileHelper exFileHelper) { + super(packOutput, Constants.MOD_ID, exFileHelper); } @Override @@ -32,5 +39,66 @@ protected void registerStatesAndModels() { .modelFile(mod) .build()); } + + //Tunnels + Block block = Tunnels.BLOCK_TUNNEL_WALL.get(); + + generateTunnelBaseModel(); + + for (Direction dir : Direction.values()) { + + String typedTunnelDirectional = "tunnels/" + dir.getSerializedName(); + models() + .withExistingParent(typedTunnelDirectional, modLoc("tunnels/base")) + .texture("wall", modLoc("block/" + typedTunnelDirectional)) + .renderType(mcLoc("cutout")); // NamedRenderTypeManager + + + /* + If we ever do one-side has the texture again + int x = dir == Direction.DOWN ? 180 : dir.getAxis().isHorizontal() ? 90 : 0; + int y = dir.getAxis().isVertical() ? 0 : (((int) dir.getHorizontalAngle()) + 180) % 360; + */ + + getVariantBuilder(block) + .partialState() + .with(TunnelWallBlock.CONNECTED_SIDE, dir) + .setModels( + ConfiguredModel.builder() + .modelFile(models().getExistingFile(modLoc(typedTunnelDirectional))) + .build() + ); + + } + } + + private void generateTunnelBaseModel() { + BlockModelBuilder base = models() + .withExistingParent("tunnels/base", new ResourceLocation("minecraft", "block/block")) + .texture("tunnel", modLoc("block/tunnels/tunnel")) + .texture("indicator", modLoc("block/tunnels/indicator")); + + addFullCubeWithTexture(base, "#wall", -1); + addFullCubeWithTexture(base, "#tunnel", 0); + addFullCubeWithTexture(base, "#indicator", 1); + } + + private void addFullCubeWithTexture(BlockModelBuilder base, String texture, int tintIndex) { + base.element() + .from(0, 0, 0) + .to(16, 16, 16) + .allFaces((direction, faceBuilder) -> { + ModelBuilder.ElementBuilder.FaceBuilder f = faceBuilder + .uvs(0, 0, 16, 16) + .cullface(direction); + + if (tintIndex > -1) + f.tintindex(tintIndex); + + f.texture(texture) + + .end(); + }) + .end(); } } diff --git a/src/datagen/java/dev/compactmods/machines/datagen/TunnelWallStateGenerator.java b/src/datagen/java/dev/compactmods/machines/datagen/TunnelWallStateGenerator.java index b2fb109f..5dcd2603 100644 --- a/src/datagen/java/dev/compactmods/machines/datagen/TunnelWallStateGenerator.java +++ b/src/datagen/java/dev/compactmods/machines/datagen/TunnelWallStateGenerator.java @@ -6,6 +6,7 @@ import dev.compactmods.machines.tunnel.Tunnels; import net.minecraft.core.Direction; import net.minecraft.data.DataGenerator; +import net.minecraft.data.PackOutput; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.level.block.Block; import net.minecraftforge.client.model.generators.BlockModelBuilder; @@ -15,8 +16,8 @@ import net.minecraftforge.common.data.ExistingFileHelper; public class TunnelWallStateGenerator extends BlockStateProvider { - public TunnelWallStateGenerator(DataGenerator gen, ExistingFileHelper exFileHelper) { - super(gen, Constants.MOD_ID, exFileHelper); + public TunnelWallStateGenerator(PackOutput packOutput, ExistingFileHelper exFileHelper) { + super(packOutput, Constants.MOD_ID, exFileHelper); } @Override diff --git a/src/datagen/java/dev/compactmods/machines/datagen/lang/BaseLangGenerator.java b/src/datagen/java/dev/compactmods/machines/datagen/lang/BaseLangGenerator.java index 7a38eaeb..00d1a6e3 100644 --- a/src/datagen/java/dev/compactmods/machines/datagen/lang/BaseLangGenerator.java +++ b/src/datagen/java/dev/compactmods/machines/datagen/lang/BaseLangGenerator.java @@ -9,6 +9,7 @@ import dev.compactmods.machines.i18n.TranslationUtil; import dev.compactmods.machines.machine.CompactMachineBlock; import dev.compactmods.machines.tunnel.Tunnels; +import net.minecraft.Util; import net.minecraft.core.Direction; import net.minecraft.data.DataGenerator; import net.minecraft.resources.ResourceLocation; @@ -23,7 +24,7 @@ public abstract class BaseLangGenerator extends LanguageProvider { private final String locale; public BaseLangGenerator(DataGenerator gen, String locale) { - super(gen, Constants.MOD_ID, locale); + super(gen.getPackOutput(), Constants.MOD_ID, locale); this.locale = locale; } @@ -65,6 +66,10 @@ void addUpgradeItem(Supplier upgrade, String translation) { add(u.getTranslationKey(), translation); } + protected void addCreativeTab(ResourceLocation id, String translation) { + add(Util.makeDescriptionId("itemGroup", id), translation); + } + protected void addAdvancementTranslations() { advancement(Advancements.FOUNDATIONS) .title("Foundations") diff --git a/src/datagen/java/dev/compactmods/machines/datagen/lang/EnglishLangGenerator.java b/src/datagen/java/dev/compactmods/machines/datagen/lang/EnglishLangGenerator.java index 5bdba4ed..2ba690cd 100644 --- a/src/datagen/java/dev/compactmods/machines/datagen/lang/EnglishLangGenerator.java +++ b/src/datagen/java/dev/compactmods/machines/datagen/lang/EnglishLangGenerator.java @@ -6,7 +6,7 @@ import dev.compactmods.machines.api.core.Tooltips; import dev.compactmods.machines.api.room.RoomSize; import dev.compactmods.machines.api.room.upgrade.RoomUpgrade; -import dev.compactmods.machines.dimension.VoidAirBlock; +import dev.compactmods.machines.client.CreativeTabs; import dev.compactmods.machines.shrinking.Shrinking; import dev.compactmods.machines.tunnel.Tunnels; import dev.compactmods.machines.upgrade.MachineRoomUpgrades; @@ -24,6 +24,8 @@ public EnglishLangGenerator(DataGenerator gen) { protected void addTranslations() { super.addTranslations(); + addCreativeTab(CreativeTabs.MAIN_RL, "Compact Machines"); + addMessage(Messages.CANNOT_ENTER_MACHINE, "You fumble with the shrinking device, to no avail. It refuses to work."); addMessage(Messages.NO_MACHINE_DATA, "No machine data loaded; report this."); addMessage(Messages.ROOM_SPAWNPOINT_SET, "New spawn point set."); @@ -107,8 +109,6 @@ protected void addTranslations() { addMessage(Messages.UNKNOWN_ROOM_CHUNK, "Unknown room at %s; please verify it exists."); - add("itemGroup." + Constants.MOD_ID, "Compact Machines"); - add("biome." + Constants.MOD_ID + ".machine", "Compact Machine"); add("compactmachines.psd.pages.machines.title", "Compact Machines"); @@ -120,7 +120,7 @@ protected void addTranslations() { add("jei.compactmachines.machines", "Machines are used to make pocket dimensions. Craft a machine and place it in world, then use a Personal Shrinking Device to go inside."); add("jei.compactmachines.shrinking_device", "Use the Personal Shrinking Device (PSD) on a machine in order to enter a compact space. " + "You can also right click it in the overworld for more info."); - add("death.attack." + VoidAirBlock.DAMAGE_SOURCE.msgId, "%1$s failed to enter the void"); + //add("death.attack." + VoidAirBlock.DAMAGE_SOURCE.msgId, "%1$s failed to enter the void"); } @Override diff --git a/src/datagen/java/dev/compactmods/machines/datagen/tags/BlockTagGenerator.java b/src/datagen/java/dev/compactmods/machines/datagen/tags/BlockTagGenerator.java index a5c2ee62..f0921dc3 100644 --- a/src/datagen/java/dev/compactmods/machines/datagen/tags/BlockTagGenerator.java +++ b/src/datagen/java/dev/compactmods/machines/datagen/tags/BlockTagGenerator.java @@ -3,21 +3,23 @@ import dev.compactmods.machines.api.core.Constants; import dev.compactmods.machines.machine.Machines; import dev.compactmods.machines.wall.Walls; -import net.minecraft.data.DataGenerator; -import net.minecraft.data.tags.BlockTagsProvider; +import net.minecraft.core.HolderLookup; +import net.minecraft.data.PackOutput; import net.minecraft.tags.BlockTags; +import net.minecraftforge.common.data.BlockTagsProvider; import net.minecraftforge.common.data.ExistingFileHelper; import java.util.Set; +import java.util.concurrent.CompletableFuture; public class BlockTagGenerator extends BlockTagsProvider { - public BlockTagGenerator(DataGenerator generator, ExistingFileHelper files) { - super(generator, Constants.MOD_ID, files); + public BlockTagGenerator(PackOutput packOut, ExistingFileHelper files, CompletableFuture lookup) { + super(packOut, lookup, Constants.MOD_ID, files); } @Override - public void addTags() { + protected void addTags(HolderLookup.Provider provider) { var machines = Set.of(Machines.MACHINE_BLOCK_TINY.get(), Machines.MACHINE_BLOCK_SMALL.get(), Machines.MACHINE_BLOCK_NORMAL.get(), diff --git a/src/datagen/java/dev/compactmods/machines/datagen/tags/ItemTagGenerator.java b/src/datagen/java/dev/compactmods/machines/datagen/tags/ItemTagGenerator.java index 3b629bff..df2058b9 100644 --- a/src/datagen/java/dev/compactmods/machines/datagen/tags/ItemTagGenerator.java +++ b/src/datagen/java/dev/compactmods/machines/datagen/tags/ItemTagGenerator.java @@ -1,21 +1,20 @@ package dev.compactmods.machines.datagen.tags; import dev.compactmods.machines.api.core.CMTags; -import dev.compactmods.machines.api.core.Constants; import dev.compactmods.machines.upgrade.MachineRoomUpgrades; -import net.minecraft.data.DataGenerator; -import net.minecraft.data.tags.BlockTagsProvider; +import net.minecraft.core.HolderLookup; +import net.minecraft.data.PackOutput; import net.minecraft.data.tags.ItemTagsProvider; -import net.minecraftforge.common.data.ExistingFileHelper; -import org.jetbrains.annotations.Nullable; + +import java.util.concurrent.CompletableFuture; public class ItemTagGenerator extends ItemTagsProvider { - public ItemTagGenerator(DataGenerator gen, BlockTagsProvider blockTags, @Nullable ExistingFileHelper files) { - super(gen, blockTags, Constants.MOD_ID, files); + public ItemTagGenerator(PackOutput packOut, BlockTagGenerator blocks, CompletableFuture lookups) { + super(packOut, lookups, blocks.contentsGetter()); } @Override - protected void addTags() { + protected void addTags(HolderLookup.Provider provider) { var upgradeTag = tag(CMTags.ROOM_UPGRADE_ITEM); upgradeTag.add(MachineRoomUpgrades.CHUNKLOADER.get()); diff --git a/src/main/java/dev/compactmods/machines/CompactMachines.java b/src/main/java/dev/compactmods/machines/CompactMachines.java index 9c009b6f..510262b0 100644 --- a/src/main/java/dev/compactmods/machines/CompactMachines.java +++ b/src/main/java/dev/compactmods/machines/CompactMachines.java @@ -1,6 +1,7 @@ package dev.compactmods.machines; import dev.compactmods.machines.api.core.Constants; +import dev.compactmods.machines.client.CreativeTabs; import dev.compactmods.machines.command.Commands; import dev.compactmods.machines.config.CommonConfig; import dev.compactmods.machines.config.EnableVanillaRecipesConfigCondition; @@ -41,14 +42,6 @@ public class CompactMachines { public static final Logger LOGGER = LogManager.getLogger(); public static final Marker CONN_MARKER = MarkerManager.getMarker("cm_connections"); - public static final CreativeModeTab COMPACT_MACHINES_ITEMS = new CreativeModeTab(Constants.MOD_ID) { - @Override - public @Nonnull - ItemStack makeIcon() { - return new ItemStack(Machines.MACHINE_BLOCK_ITEM_NORMAL.get()); - } - }; - public CompactMachines() { Registries.setup(); preparePackages(); @@ -68,6 +61,7 @@ public CompactMachines() { private static void doRegistration() { var bus = FMLJavaModLoadingContext.get().getModEventBus(); + Registries.TABS.register(bus); Registries.BLOCKS.register(bus); Registries.ITEMS.register(bus); Registries.BLOCK_ENTITIES.register(bus); @@ -86,6 +80,7 @@ private static void preparePackages() { Walls.prepare(); Tunnels.prepare(); Shrinking.prepare(); + CreativeTabs.prepare(); UIRegistration.prepare(); Dimension.prepare(); diff --git a/src/main/java/dev/compactmods/machines/advancement/trigger/BasicPlayerAdvTrigger.java b/src/main/java/dev/compactmods/machines/advancement/trigger/BasicPlayerAdvTrigger.java index 34a8ef2b..1111193c 100644 --- a/src/main/java/dev/compactmods/machines/advancement/trigger/BasicPlayerAdvTrigger.java +++ b/src/main/java/dev/compactmods/machines/advancement/trigger/BasicPlayerAdvTrigger.java @@ -2,6 +2,7 @@ import com.google.gson.JsonObject; import net.minecraft.advancements.critereon.AbstractCriterionTriggerInstance; +import net.minecraft.advancements.critereon.ContextAwarePredicate; import net.minecraft.advancements.critereon.DeserializationContext; import net.minecraft.advancements.critereon.EntityPredicate; import net.minecraft.resources.ResourceLocation; @@ -21,17 +22,17 @@ public ResourceLocation getId() { @Override public Instance createInstance(JsonObject json, DeserializationContext conditions) { - return new Instance(this.advancementId, EntityPredicate.Composite.fromJson(json, "player", conditions)); + return new Instance(this.advancementId, EntityPredicate.fromJson(json, "player", conditions)); } public static class Instance extends AbstractCriterionTriggerInstance { - public Instance(ResourceLocation advId, EntityPredicate.Composite player) { + public Instance(ResourceLocation advId, ContextAwarePredicate player) { super(advId, player); } public static Instance create(ResourceLocation advancement) { - return new Instance(advancement, EntityPredicate.Composite.ANY); + return new Instance(advancement, EntityPredicate.wrap(EntityPredicate.ANY)); } } } diff --git a/src/main/java/dev/compactmods/machines/advancement/trigger/HowDidYouGetHereTrigger.java b/src/main/java/dev/compactmods/machines/advancement/trigger/HowDidYouGetHereTrigger.java index 6407bcf7..41136e66 100644 --- a/src/main/java/dev/compactmods/machines/advancement/trigger/HowDidYouGetHereTrigger.java +++ b/src/main/java/dev/compactmods/machines/advancement/trigger/HowDidYouGetHereTrigger.java @@ -3,6 +3,7 @@ import com.google.gson.JsonObject; import dev.compactmods.machines.api.core.Advancements; import net.minecraft.advancements.critereon.AbstractCriterionTriggerInstance; +import net.minecraft.advancements.critereon.ContextAwarePredicate; import net.minecraft.advancements.critereon.EntityPredicate; import net.minecraft.advancements.critereon.DeserializationContext; import net.minecraft.resources.ResourceLocation; @@ -16,17 +17,17 @@ public ResourceLocation getId() { @Override public Instance createInstance(JsonObject json, DeserializationContext conditions) { - return new Instance(EntityPredicate.Composite.fromJson(json, "player", conditions)); + return new Instance(EntityPredicate.fromJson(json, "player", conditions)); } public static class Instance extends AbstractCriterionTriggerInstance { - public Instance(EntityPredicate.Composite player) { + public Instance(ContextAwarePredicate player) { super(Advancements.HOW_DID_YOU_GET_HERE, player); } public static Instance create() { - return new Instance(EntityPredicate.Composite.ANY); + return new Instance(EntityPredicate.wrap(EntityPredicate.ANY)); } } } diff --git a/src/main/java/dev/compactmods/machines/client/CreativeTabs.java b/src/main/java/dev/compactmods/machines/client/CreativeTabs.java new file mode 100644 index 00000000..b3f07434 --- /dev/null +++ b/src/main/java/dev/compactmods/machines/client/CreativeTabs.java @@ -0,0 +1,66 @@ +package dev.compactmods.machines.client; + +import dev.compactmods.machines.api.core.Constants; +import dev.compactmods.machines.core.Registries; +import dev.compactmods.machines.machine.Machines; +import dev.compactmods.machines.shrinking.Shrinking; +import dev.compactmods.machines.tunnel.TunnelItem; +import dev.compactmods.machines.tunnel.Tunnels; +import dev.compactmods.machines.tunnel.definitions.ItemTunnel; +import dev.compactmods.machines.wall.Walls; +import net.minecraft.network.chat.Component; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.item.CreativeModeTab; +import net.minecraft.world.item.Item; +import net.minecraftforge.registries.RegistryObject; + +import java.util.Arrays; + +public class CreativeTabs { + public static ResourceLocation MAIN_RL = new ResourceLocation(Constants.MOD_ID, "main"); + + public static final RegistryObject TAB = Registries.TABS.register("main", + () -> CreativeModeTab.builder() + .icon(() -> Machines.MACHINE_BLOCK_ITEM_NORMAL.get().getDefaultInstance()) + .displayItems(CreativeTabs::fillItems) + .title(Component.translatableWithFallback("itemGroup.compactmachines.main", "Compact Machines")) + .build() + ); + + private static void fillItems(CreativeModeTab.ItemDisplayParameters params, CreativeModeTab.Output output) { + + /*final var lookup = params.holders().lookupOrThrow(RoomTemplate.REGISTRY_KEY); + final var machines = lookup.listElements() + .map(k -> Machines.Items.forNewRoom(k.key().location(), k.value())) + .toList();*/ + final var machines = Arrays + .stream(new Item[]{ + Machines.MACHINE_BLOCK_ITEM_TINY.get(), + Machines.MACHINE_BLOCK_ITEM_SMALL.get(), + Machines.MACHINE_BLOCK_ITEM_NORMAL.get(), + Machines.MACHINE_BLOCK_ITEM_LARGE.get(), + Machines.MACHINE_BLOCK_ITEM_GIANT.get(), + Machines.MACHINE_BLOCK_ITEM_MAXIMUM.get() + }) + .map(Item::getDefaultInstance) + .toList(); + output.acceptAll(machines, CreativeModeTab.TabVisibility.PARENT_AND_SEARCH_TABS); + + output.accept(Shrinking.PERSONAL_SHRINKING_DEVICE.get(), CreativeModeTab.TabVisibility.PARENT_AND_SEARCH_TABS); + output.accept(Walls.ITEM_BREAKABLE_WALL.get(), CreativeModeTab.TabVisibility.PARENT_AND_SEARCH_TABS); + output.accept(Walls.ITEM_SOLID_WALL.get(), CreativeModeTab.TabVisibility.PARENT_AND_SEARCH_TABS); + + var tunnels = Tunnels.TUNNEL_DEF_REGISTRY + .get() + .getValues() + .stream() + .filter(d -> d != Tunnels.UNKNOWN.get()) + .map(TunnelItem::createStack) + .toList(); + output.acceptAll(tunnels); + } + + public static void prepare() { + + } +} diff --git a/src/main/java/dev/compactmods/machines/client/gui/PersonalShrinkingDeviceScreen.java b/src/main/java/dev/compactmods/machines/client/gui/PersonalShrinkingDeviceScreen.java index d54120ff..57196466 100644 --- a/src/main/java/dev/compactmods/machines/client/gui/PersonalShrinkingDeviceScreen.java +++ b/src/main/java/dev/compactmods/machines/client/gui/PersonalShrinkingDeviceScreen.java @@ -5,6 +5,7 @@ import dev.compactmods.machines.api.core.Constants; import dev.compactmods.machines.client.gui.guide.GuideSection; import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.GuiGraphics; import net.minecraft.client.gui.screens.Screen; import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; @@ -68,8 +69,9 @@ public boolean mouseClicked(double mouseX, double mouseY, int button) { } @Override - public void render(PoseStack matrixStack, int mouseX, int mouseY, float partialTicks) { - this.renderBackground(matrixStack); + public void render(GuiGraphics graphics, int mouseX, int mouseY, float partialTicks) { + PoseStack matrixStack = graphics.pose(); + this.renderBackground(graphics); RenderSystem.clearColor(1, 1, 1, 1); int relX = (this.width - WIDTH) / 2; @@ -81,19 +83,19 @@ public void render(PoseStack matrixStack, int mouseX, int mouseY, float partialT matrixStack.translate(relX, relY, 0); RenderSystem.setShaderTexture(0, GUI); - this.blit(matrixStack, 0, 0, 0, 0, WIDTH, HEIGHT); + graphics.blit(GUI, 0, 0, 0, 0, WIDTH, HEIGHT); matrixStack.popPose(); matrixStack.pushPose(); matrixStack.translate(relX + 15, relY + 14, 10); if(currentSection != null) { - currentSection.render(matrixStack, mouseX - relX - 15, mouseY - relY - 14, partialTicks); + currentSection.render(graphics, mouseX - relX - 15, mouseY - relY - 14, partialTicks); } matrixStack.popPose(); - super.render(matrixStack, mouseX, mouseY, partialTicks); + super.render(graphics, mouseX, mouseY, partialTicks); } @Override diff --git a/src/main/java/dev/compactmods/machines/client/gui/guide/GuidePage.java b/src/main/java/dev/compactmods/machines/client/gui/guide/GuidePage.java index 16819d5b..cc3ecec7 100644 --- a/src/main/java/dev/compactmods/machines/client/gui/guide/GuidePage.java +++ b/src/main/java/dev/compactmods/machines/client/gui/guide/GuidePage.java @@ -7,8 +7,8 @@ import net.minecraft.ChatFormatting; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.Font; -import net.minecraft.client.gui.GuiComponent; -import net.minecraft.client.gui.components.Widget; +import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.gui.components.Renderable; import net.minecraft.client.gui.components.events.GuiEventListener; import net.minecraft.network.chat.Component; @@ -16,7 +16,7 @@ import java.util.List; import java.util.Optional; -public class GuidePage implements Widget, GuiEventListener { +public class GuidePage implements Renderable, GuiEventListener { protected final List widgets; @@ -28,15 +28,15 @@ public GuidePage() { } @Override - public void render(PoseStack ms, int mouseX, int mouseY, float partialTicks) { + public void render(GuiGraphics graphics, int mouseX, int mouseY, float partialTicks) { Font fr = Minecraft.getInstance().font; - GuiComponent.drawString(ms, fr, + graphics.drawString(fr, Component.translatable(Constants.MOD_ID + ".psd.pages.machines.title") .withStyle(ChatFormatting.GOLD), 2, 2, 0); - for(Widget comp : widgets) - comp.render(ms, mouseX, mouseY, partialTicks); + for(Renderable renderable : widgets) + renderable.render(graphics, mouseX, mouseY, partialTicks); } public Optional getWidgetByPosition(double mouseX, double mouseY) { @@ -61,6 +61,16 @@ public boolean mouseScrolled(double mouseX, double mouseY, double delta) { .orElse(false); } + @Override + public void setFocused(boolean b) { + + } + + @Override + public boolean isFocused() { + return true; + } + @Override public boolean mouseClicked(double mouseX, double mouseY, int button) { return getWidgetByPosition(mouseX, mouseY) diff --git a/src/main/java/dev/compactmods/machines/client/gui/guide/GuideSection.java b/src/main/java/dev/compactmods/machines/client/gui/guide/GuideSection.java index dab2ea68..209188a8 100644 --- a/src/main/java/dev/compactmods/machines/client/gui/guide/GuideSection.java +++ b/src/main/java/dev/compactmods/machines/client/gui/guide/GuideSection.java @@ -1,13 +1,14 @@ package dev.compactmods.machines.client.gui.guide; import com.mojang.blaze3d.vertex.PoseStack; +import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.gui.components.Renderable; import net.minecraft.client.gui.components.events.GuiEventListener; -import net.minecraft.client.gui.components.Widget; import java.util.ArrayList; import java.util.List; -public class GuideSection implements Widget, GuiEventListener { +public class GuideSection implements Renderable, GuiEventListener { private final List pages; private final int currentPageIndex = 0; private final GuidePage currentPage; @@ -19,9 +20,9 @@ public GuideSection() { } @Override - public void render(PoseStack matrixStack, int mouseX, int mouseY, float partialTicks) { + public void render(GuiGraphics graphics, int mouseX, int mouseY, float partialTicks) { if(this.currentPage != null) - currentPage.render(matrixStack, mouseX, mouseY, partialTicks); + currentPage.render(graphics, mouseX, mouseY, partialTicks); } @Override @@ -45,4 +46,14 @@ public boolean mouseScrolled(double mouseX, double mouseY, double delta) { return false; } + + @Override + public void setFocused(boolean b) { + + } + + @Override + public boolean isFocused() { + return true; + } } diff --git a/src/main/java/dev/compactmods/machines/client/gui/widget/AbstractCMGuiWidget.java b/src/main/java/dev/compactmods/machines/client/gui/widget/AbstractCMGuiWidget.java index 344e1492..29c1a28e 100644 --- a/src/main/java/dev/compactmods/machines/client/gui/widget/AbstractCMGuiWidget.java +++ b/src/main/java/dev/compactmods/machines/client/gui/widget/AbstractCMGuiWidget.java @@ -1,12 +1,13 @@ package dev.compactmods.machines.client.gui.widget; -import com.mojang.blaze3d.vertex.PoseStack; +import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.gui.components.Renderable; import net.minecraft.client.gui.components.events.GuiEventListener; -import net.minecraft.client.gui.components.Widget; -public class AbstractCMGuiWidget implements Widget, GuiEventListener { +public class AbstractCMGuiWidget implements Renderable, GuiEventListener { protected final int x, y, width, height; + protected boolean focused; protected AbstractCMGuiWidget(int x, int y, int width, int height) { this.x = x; @@ -16,7 +17,7 @@ protected AbstractCMGuiWidget(int x, int y, int width, int height) { } @Override - public void render(PoseStack matrixStack, int mouseX, int mouseY, float partialTicks) { + public void render(GuiGraphics graphics, int mouseX, int mouseY, float partialTicks) { } @@ -24,4 +25,14 @@ public void render(PoseStack matrixStack, int mouseX, int mouseY, float partialT public boolean isMouseOver(double mouseX, double mouseY) { return mouseX >= this.x && mouseY >= this.y && mouseX < this.x + this.width && mouseY < this.y + this.height; } + + @Override + public void setFocused(boolean b) { + this.focused = b; + } + + @Override + public boolean isFocused() { + return this.focused; + } } diff --git a/src/main/java/dev/compactmods/machines/client/gui/widget/PSDIconButton.java b/src/main/java/dev/compactmods/machines/client/gui/widget/PSDIconButton.java index 0d0f4fb4..93a38927 100644 --- a/src/main/java/dev/compactmods/machines/client/gui/widget/PSDIconButton.java +++ b/src/main/java/dev/compactmods/machines/client/gui/widget/PSDIconButton.java @@ -5,6 +5,7 @@ import dev.compactmods.machines.room.client.MachineRoomScreen; import dev.compactmods.machines.room.network.PlayerRequestedTeleportPacket; import dev.compactmods.machines.shrinking.Shrinking; +import net.minecraft.client.gui.GuiGraphics; import net.minecraft.client.gui.components.Button; import net.minecraft.network.chat.Component; import net.minecraft.world.item.ItemStack; @@ -21,12 +22,11 @@ public PSDIconButton(MachineRoomScreen parent, int xPos, int yPos) { } @Override - public void render(@NotNull PoseStack pose, int mouseX, int mouseY, float partialTicks) { - super.render(pose, mouseX, mouseY, partialTicks); + public void render(@NotNull GuiGraphics graphics, int mouseX, int mouseY, float partialTicks) { + super.render(graphics, mouseX, mouseY, partialTicks); - this.parent.getMinecraft().getItemRenderer().renderAndDecorateItem( - new ItemStack(Shrinking.PERSONAL_SHRINKING_DEVICE.get()), - x + 2, y + 2, 40); + graphics.renderItem(new ItemStack(Shrinking.PERSONAL_SHRINKING_DEVICE.get()), + getX() + 2, getY() + 2, 40); } private static void onClicked(Button button) { diff --git a/src/main/java/dev/compactmods/machines/client/gui/widget/ScrollableWrappedTextWidget.java b/src/main/java/dev/compactmods/machines/client/gui/widget/ScrollableWrappedTextWidget.java index 22f9a197..49258c8b 100644 --- a/src/main/java/dev/compactmods/machines/client/gui/widget/ScrollableWrappedTextWidget.java +++ b/src/main/java/dev/compactmods/machines/client/gui/widget/ScrollableWrappedTextWidget.java @@ -3,6 +3,7 @@ import com.mojang.blaze3d.vertex.PoseStack; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.Font; +import net.minecraft.client.gui.GuiGraphics; import net.minecraft.client.resources.language.I18n; import net.minecraft.network.chat.Component; import net.minecraft.util.FormattedCharSequence; @@ -51,7 +52,8 @@ private void recalculate() { } @Override - public void render(PoseStack matrixStack, int mouseX, int mouseY, float partialTicks) { + public void render(GuiGraphics graphics, int mouseX, int mouseY, float partialTicks) { + PoseStack matrixStack = graphics.pose(); matrixStack.pushPose(); matrixStack.translate(x, y, 10); @@ -60,7 +62,7 @@ public void render(PoseStack matrixStack, int mouseX, int mouseY, float partialT try { for (int y = lineIndexStart; y <= lineIndexStart + maxLinesToShow; y++) { FormattedCharSequence s = lines.get(y); - fr.drawShadow(matrixStack, s, 0, (y - lineIndexStart) * (charSize + 4), 0xFFFFFF); + graphics.drawString(fr, s, 0, (y - lineIndexStart) * (charSize + 4), 0xFFFFFF, true); } } diff --git a/src/main/java/dev/compactmods/machines/client/level/EmptyLevelEntityGetter.java b/src/main/java/dev/compactmods/machines/client/level/EmptyLevelEntityGetter.java index 1c42fa2b..9878a3df 100644 --- a/src/main/java/dev/compactmods/machines/client/level/EmptyLevelEntityGetter.java +++ b/src/main/java/dev/compactmods/machines/client/level/EmptyLevelEntityGetter.java @@ -1,5 +1,6 @@ package dev.compactmods.machines.client.level; +import net.minecraft.util.AbortableIterationConsumer; import net.minecraft.world.entity.Entity; import net.minecraft.world.level.entity.EntityTypeTest; import net.minecraft.world.level.entity.LevelEntityGetter; @@ -29,7 +30,7 @@ public Iterable getAll() { } @Override - public void get(EntityTypeTest p_156935_, Consumer p_156936_) { + public void get(EntityTypeTest p_156935_, AbortableIterationConsumer p_156936_) { } @@ -39,7 +40,7 @@ public void get(AABB p_156937_, Consumer p_156938_) { } @Override - public void get(EntityTypeTest p_156932_, AABB p_156933_, Consumer p_156934_) { + public void get(EntityTypeTest p_156932_, AABB p_156933_, AbortableIterationConsumer p_156934_) { } } diff --git a/src/main/java/dev/compactmods/machines/client/level/RenderingLevel.java b/src/main/java/dev/compactmods/machines/client/level/RenderingLevel.java index f542184d..8e401e71 100644 --- a/src/main/java/dev/compactmods/machines/client/level/RenderingLevel.java +++ b/src/main/java/dev/compactmods/machines/client/level/RenderingLevel.java @@ -2,12 +2,14 @@ import net.minecraft.client.Minecraft; import net.minecraft.core.*; -import net.minecraft.data.BuiltinRegistries; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.core.registries.Registries; import net.minecraft.sounds.SoundEvent; import net.minecraft.sounds.SoundSource; import net.minecraft.util.profiling.InactiveProfiler; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.player.Player; +import net.minecraft.world.flag.FeatureFlagSet; import net.minecraft.world.item.crafting.RecipeManager; import net.minecraft.world.level.Level; import net.minecraft.world.level.LightLayer; @@ -37,7 +39,7 @@ public class RenderingLevel extends Level { private final TemplateChunkProvider chunkProvider; public RenderingLevel(StructureTemplate blocks) { - super(new FakeSpawnInfo(), Level.OVERWORLD, BuiltinRegistries.DIMENSION_TYPE.getHolderOrThrow(BuiltinDimensionTypes.OVERWORLD), + super(new FakeSpawnInfo(), Level.OVERWORLD, Minecraft.getInstance().level.registryAccess(), Minecraft.getInstance().level.registryAccess().registryOrThrow(Registries.DIMENSION_TYPE).getHolderOrThrow(BuiltinDimensionTypes.OVERWORLD), () -> InactiveProfiler.INSTANCE, true, false, 0, 1000000); if(!blocks.palettes.isEmpty()) { @@ -60,12 +62,12 @@ public void sendBlockUpdated(BlockPos p_46612_, BlockState p_46613_, BlockState } @Override - public void playSeededSound(@Nullable Player p_220363_, double p_220364_, double p_220365_, double p_220366_, SoundEvent p_220367_, SoundSource p_220368_, float p_220369_, float p_220370_, long p_220371_) { + public void playSeededSound(@Nullable Player player, double v, double v1, double v2, Holder holder, SoundSource soundSource, float v3, float v4, long l) { } @Override - public void playSeededSound(@Nullable Player p_220372_, Entity p_220373_, SoundEvent p_220374_, SoundSource p_220375_, float p_220376_, float p_220377_, long p_220378_) { + public void playSeededSound(@Nullable Player player, Entity entity, Holder holder, SoundSource soundSource, float v, float v1, long l) { } @@ -161,6 +163,11 @@ public RegistryAccess registryAccess() { return Minecraft.getInstance().level.registryAccess(); } + @Override + public FeatureFlagSet enabledFeatures() { + return null; + } + @Override public float getShade(Direction p_45522_, boolean p_45523_) { return 1; @@ -173,7 +180,7 @@ public List players() { @Override public Holder getUncachedNoiseBiome(int p_204159_, int p_204160_, int p_204161_) { - return Holder.direct(registryAccess().registryOrThrow(Registry.BIOME_REGISTRY).getOrThrow(Biomes.PLAINS)); + return Holder.direct(registryAccess().registryOrThrow(Registries.BIOME).getOrThrow(Biomes.PLAINS)); } @Override diff --git a/src/main/java/dev/compactmods/machines/client/level/TemplateChunk.java b/src/main/java/dev/compactmods/machines/client/level/TemplateChunk.java index b96442fc..0e659c02 100644 --- a/src/main/java/dev/compactmods/machines/client/level/TemplateChunk.java +++ b/src/main/java/dev/compactmods/machines/client/level/TemplateChunk.java @@ -46,18 +46,18 @@ public TemplateChunk(RenderingLevel worldIn, ChunkPos chunkPos, Map ticker = eb.getTicker(worldIn, blockInfo.state, tile.getType()); + if(blockInfo.state().getBlock() instanceof EntityBlock eb) { + final BlockEntityTicker ticker = eb.getTicker(worldIn, blockInfo.state(), tile.getType()); if(ticker != null) this.tickers.put(pos, (BlockEntityTicker) ticker); } diff --git a/src/main/java/dev/compactmods/machines/client/level/TemplateChunkProvider.java b/src/main/java/dev/compactmods/machines/client/level/TemplateChunkProvider.java index e7492524..425eb851 100644 --- a/src/main/java/dev/compactmods/machines/client/level/TemplateChunkProvider.java +++ b/src/main/java/dev/compactmods/machines/client/level/TemplateChunkProvider.java @@ -38,7 +38,7 @@ public TemplateChunkProvider(List blocks, HashMap blockInfo = new HashMap<>(); blocks.forEach(sbi -> { - blockInfo.put(sbi.pos, sbi); + blockInfo.put(sbi.pos(), sbi); }); chunks = loadChunkData(blockInfo, world, shouldShow); diff --git a/src/main/java/dev/compactmods/machines/client/shader/CM4Shaders.java b/src/main/java/dev/compactmods/machines/client/shader/CM4Shaders.java index 00d48510..9078b323 100644 --- a/src/main/java/dev/compactmods/machines/client/shader/CM4Shaders.java +++ b/src/main/java/dev/compactmods/machines/client/shader/CM4Shaders.java @@ -22,12 +22,12 @@ public class CM4Shaders public static void registerShaders(final RegisterShadersEvent ev) throws IOException { ev.registerShader( - new ShaderInstance(ev.getResourceManager(), new ResourceLocation(MOD_ID, "block_fullbright"), DefaultVertexFormat.BLOCK), + new ShaderInstance(ev.getResourceProvider(), new ResourceLocation(MOD_ID, "block_fullbright"), DefaultVertexFormat.BLOCK), shader -> blockFullbrightShader = shader ); ev.registerShader( - new ShaderInstance(ev.getResourceManager(), new ResourceLocation(MOD_ID, "wall"), DefaultVertexFormat.BLOCK), + new ShaderInstance(ev.getResourceProvider(), new ResourceLocation(MOD_ID, "wall"), DefaultVertexFormat.BLOCK), shader -> wallShader = shader ); } diff --git a/src/main/java/dev/compactmods/machines/client/util/TransformingVertexBuilder.java b/src/main/java/dev/compactmods/machines/client/util/TransformingVertexBuilder.java index 58592063..0047ebe0 100644 --- a/src/main/java/dev/compactmods/machines/client/util/TransformingVertexBuilder.java +++ b/src/main/java/dev/compactmods/machines/client/util/TransformingVertexBuilder.java @@ -14,12 +14,12 @@ import com.mojang.blaze3d.vertex.VertexConsumer; import com.mojang.blaze3d.vertex.VertexFormat; import com.mojang.blaze3d.vertex.VertexFormatElement; -import com.mojang.math.Vector3f; -import com.mojang.math.Vector4f; import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.RenderType; import net.minecraft.world.phys.Vec2; import net.minecraft.world.phys.Vec3; +import org.joml.Vector3f; +import org.joml.Vector4f; import javax.annotation.Nonnull; import javax.annotation.Nullable; diff --git a/src/main/java/dev/compactmods/machines/command/subcommand/CMGiveMachineSubcommand.java b/src/main/java/dev/compactmods/machines/command/subcommand/CMGiveMachineSubcommand.java index 4e6cbe82..4fc6a3dc 100644 --- a/src/main/java/dev/compactmods/machines/command/subcommand/CMGiveMachineSubcommand.java +++ b/src/main/java/dev/compactmods/machines/command/subcommand/CMGiveMachineSubcommand.java @@ -53,7 +53,7 @@ private static int giveMachine(CommandContext ctx) throws Co if(!player.addItem(newItem)) { src.sendFailure(TranslationUtil.command(CMCommands.CANNOT_GIVE_MACHINE)); } else { - src.sendSuccess(TranslationUtil.command(CMCommands.MACHINE_GIVEN, player.getDisplayName()), true); + src.sendSuccess(() -> TranslationUtil.command(CMCommands.MACHINE_GIVEN, player.getDisplayName()), true); } } catch (NonexistentRoomException e) { CompactMachines.LOGGER.fatal(e); diff --git a/src/main/java/dev/compactmods/machines/command/subcommand/CMReaddDimensionSubcommand.java b/src/main/java/dev/compactmods/machines/command/subcommand/CMReaddDimensionSubcommand.java index 2e41b7c2..163b53eb 100644 --- a/src/main/java/dev/compactmods/machines/command/subcommand/CMReaddDimensionSubcommand.java +++ b/src/main/java/dev/compactmods/machines/command/subcommand/CMReaddDimensionSubcommand.java @@ -24,11 +24,11 @@ private static int exec(CommandContext ctx) throws CommandSy var compactLevel = serv.getLevel(CompactDimension.LEVEL_KEY); if (compactLevel == null) { - src.sendSuccess(TranslationUtil.command(CMCommands.LEVEL_NOT_FOUND).withStyle(ChatFormatting.RED), false); + src.sendSuccess(() -> TranslationUtil.command(CMCommands.LEVEL_NOT_FOUND).withStyle(ChatFormatting.RED), false); DimensionUtil.createAndRegisterWorldAndDimension(serv); } else { - src.sendSuccess(TranslationUtil.command(CMCommands.LEVEL_REGISTERED).withStyle(ChatFormatting.DARK_GREEN), false); + src.sendSuccess(() -> TranslationUtil.command(CMCommands.LEVEL_REGISTERED).withStyle(ChatFormatting.DARK_GREEN), false); } return 0; diff --git a/src/main/java/dev/compactmods/machines/command/subcommand/CMRoomsSubcommand.java b/src/main/java/dev/compactmods/machines/command/subcommand/CMRoomsSubcommand.java index 425f386a..99b53dba 100644 --- a/src/main/java/dev/compactmods/machines/command/subcommand/CMRoomsSubcommand.java +++ b/src/main/java/dev/compactmods/machines/command/subcommand/CMRoomsSubcommand.java @@ -55,7 +55,7 @@ private static int fetchByMachineBlock(CommandContext ctx) t if(level.getBlockEntity(block) instanceof CompactMachineBlockEntity be) { be.getConnectedRoom().ifPresent(room -> { final var m = TranslationUtil.message(Messages.MACHINE_ROOM_INFO, block, b.getSize(), room); - ctx.getSource().sendSuccess(m, false); + ctx.getSource().sendSuccess(() -> m, false); }); } @@ -67,7 +67,7 @@ private static int findByContainingPlayer(CommandContext ctx final var server = ctx.getSource().getServer(); final var playerChunk = player.chunkPosition(); - final var playerLevel = player.getLevel(); + final var playerLevel = player.level(); if (!playerLevel.dimension().equals(CompactDimension.LEVEL_KEY)) { throw new CommandRuntimeException(TranslationUtil.command(CMCommands.WRONG_DIMENSION)); @@ -76,7 +76,7 @@ private static int findByContainingPlayer(CommandContext ctx try { final var roomSize = Rooms.sizeOf(server, playerChunk); final var m = TranslationUtil.message(Messages.PLAYER_ROOM_INFO, player.getDisplayName(), playerChunk.toString(), roomSize); - ctx.getSource().sendSuccess(m, false); + ctx.getSource().sendSuccess(() -> m, false); } catch (NonexistentRoomException e) { CompactMachines.LOGGER.error("Player is inside an unregistered chunk ({}) in the compact world.", playerChunk, e); final var tc = Component.literal("%s, %s".formatted(playerChunk.x, playerChunk.z)) @@ -97,7 +97,7 @@ public static int findByOwner(CommandContext ctx) throws Com rooms.streamRooms() .filter(r -> r.getOwner().equals(owner.getUUID())) .forEach(data -> { - ctx.getSource().sendSuccess(Component.literal("Room: " + new ChunkPos(data.getCenter())), false); + ctx.getSource().sendSuccess(() -> Component.literal("Room: " + new ChunkPos(data.getCenter())), false); }); return 0; diff --git a/src/main/java/dev/compactmods/machines/command/subcommand/CMSummarySubcommand.java b/src/main/java/dev/compactmods/machines/command/subcommand/CMSummarySubcommand.java index 7bea8f7d..5cc549bd 100644 --- a/src/main/java/dev/compactmods/machines/command/subcommand/CMSummarySubcommand.java +++ b/src/main/java/dev/compactmods/machines/command/subcommand/CMSummarySubcommand.java @@ -27,9 +27,9 @@ private static int exec(CommandContext ctx) { var compactLevel = serv.getLevel(CompactDimension.LEVEL_KEY); if (compactLevel != null) { - src.sendSuccess(TranslationUtil.command(CMCommands.LEVEL_REGISTERED).withStyle(ChatFormatting.DARK_GREEN), false); + src.sendSuccess(() -> TranslationUtil.command(CMCommands.LEVEL_REGISTERED).withStyle(ChatFormatting.DARK_GREEN), false); } else { - src.sendSuccess(TranslationUtil.command(CMCommands.LEVEL_NOT_FOUND).withStyle(ChatFormatting.RED), false); + src.sendSuccess(() -> TranslationUtil.command(CMCommands.LEVEL_NOT_FOUND).withStyle(ChatFormatting.RED), false); } HashMap, Long> levelCounts = new HashMap<>(); @@ -38,18 +38,18 @@ private static int exec(CommandContext ctx) { long numRegistered = machineData.getMachines().count(); if(numRegistered > 0) { - src.sendSuccess(TranslationUtil.command(CMCommands.MACHINE_REG_DIM, sl.dimension().toString(), numRegistered), false); + src.sendSuccess(() -> TranslationUtil.command(CMCommands.MACHINE_REG_DIM, sl.dimension().toString(), numRegistered), false); levelCounts.put(sl.dimension(), numRegistered); } }); long grandTotal = levelCounts.values().stream().reduce(0L, Long::sum); - src.sendSuccess(TranslationUtil.command(CMCommands.MACHINE_REG_TOTAL, grandTotal).withStyle(ChatFormatting.GOLD), false); + src.sendSuccess(() -> TranslationUtil.command(CMCommands.MACHINE_REG_TOTAL, grandTotal).withStyle(ChatFormatting.GOLD), false); final var roomData = CompactRoomData.get(compactLevel); long numRegistered = roomData.stream().count(); - src.sendSuccess(TranslationUtil.command(CMCommands.ROOM_REG_COUNT, numRegistered), false); + src.sendSuccess(() -> TranslationUtil.command(CMCommands.ROOM_REG_COUNT, numRegistered), false); return 0; } diff --git a/src/main/java/dev/compactmods/machines/command/subcommand/SpawnSubcommand.java b/src/main/java/dev/compactmods/machines/command/subcommand/SpawnSubcommand.java index 271d662b..c6fa4193 100644 --- a/src/main/java/dev/compactmods/machines/command/subcommand/SpawnSubcommand.java +++ b/src/main/java/dev/compactmods/machines/command/subcommand/SpawnSubcommand.java @@ -33,7 +33,7 @@ private static int resetRoomSpawn(CommandContext ctx) { try { Rooms.resetSpawn(serv, roomPos); - src.sendSuccess(TranslationUtil.command(CMCommands.SPAWN_CHANGED_SUCCESSFULLY, "%s, %s".formatted(roomPos.x, roomPos.z)), true); + src.sendSuccess(() -> TranslationUtil.command(CMCommands.SPAWN_CHANGED_SUCCESSFULLY, "%s, %s".formatted(roomPos.x, roomPos.z)), true); return 0; } catch (NonexistentRoomException e) { src.sendFailure(TranslationUtil.command(CMCommands.ROOM_NOT_FOUND, "%s, %s".formatted(roomPos.x, roomPos.z))); diff --git a/src/main/java/dev/compactmods/machines/compat/theoneprobe/elements/MachineTunnelElement.java b/src/main/java/dev/compactmods/machines/compat/theoneprobe/elements/MachineTunnelElement.java index 395e951c..e691d92b 100644 --- a/src/main/java/dev/compactmods/machines/compat/theoneprobe/elements/MachineTunnelElement.java +++ b/src/main/java/dev/compactmods/machines/compat/theoneprobe/elements/MachineTunnelElement.java @@ -2,12 +2,13 @@ import com.mojang.blaze3d.vertex.PoseStack; import mcjty.theoneprobe.api.IElement; +import net.minecraft.client.gui.GuiGraphics; import net.minecraft.network.FriendlyByteBuf; import net.minecraft.resources.ResourceLocation; public class MachineTunnelElement implements IElement { @Override - public void render(PoseStack poseStack, int i, int i1) { + public void render(GuiGraphics graphics, int i, int i1) { } diff --git a/src/main/java/dev/compactmods/machines/config/ServerConfig.java b/src/main/java/dev/compactmods/machines/config/ServerConfig.java index 8623d19c..57c98496 100644 --- a/src/main/java/dev/compactmods/machines/config/ServerConfig.java +++ b/src/main/java/dev/compactmods/machines/config/ServerConfig.java @@ -51,7 +51,7 @@ private static void generateConfig() { MACHINE_FLOOR_Y = builder .comment("The Y-dimension to spawn machine floors at.") - .defineInRange("floor", 40, 10, 200); + .defineInRange("floor", 0, 0, 20); ALLOWED_OUTSIDE_MACHINE = builder .comment("Specify if we want to damage player's that managed to escape the boundries") diff --git a/src/main/java/dev/compactmods/machines/core/Registries.java b/src/main/java/dev/compactmods/machines/core/Registries.java index bc5d3391..54129582 100644 --- a/src/main/java/dev/compactmods/machines/core/Registries.java +++ b/src/main/java/dev/compactmods/machines/core/Registries.java @@ -6,9 +6,11 @@ import dev.compactmods.machines.graph.IGraphNodeType; import net.minecraft.commands.synchronization.ArgumentTypeInfo; import net.minecraft.core.Registry; +import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.resources.ResourceKey; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.inventory.MenuType; +import net.minecraft.world.item.CreativeModeTab; import net.minecraft.world.item.Item; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.entity.BlockEntityType; @@ -25,6 +27,8 @@ public class Registries { public static final DeferredRegister ITEMS = DeferredRegister.create(ForgeRegistries.ITEMS, MOD_ID); public static final DeferredRegister> BLOCK_ENTITIES = DeferredRegister.create(ForgeRegistries.BLOCK_ENTITY_TYPES, MOD_ID); + public static final DeferredRegister TABS = DeferredRegister.create(BuiltInRegistries.CREATIVE_MODE_TAB.key(), MOD_ID); + // Tunnels public static final ResourceLocation TYPES_REG_KEY = new ResourceLocation(MOD_ID, "tunnel_types"); public static final DeferredRegister TUNNEL_DEFINITIONS = DeferredRegister.create(TYPES_REG_KEY, MOD_ID); @@ -46,10 +50,10 @@ public class Registries { public static final DeferredRegister EDGE_TYPES = DeferredRegister.create(EDGES_REG_KEY, MOD_ID); // Commands - public static final DeferredRegister> COMMAND_ARGUMENT_TYPES = DeferredRegister.create(Registry.COMMAND_ARGUMENT_TYPE_REGISTRY, MOD_ID); + public static final DeferredRegister> COMMAND_ARGUMENT_TYPES = DeferredRegister.create(BuiltInRegistries.COMMAND_ARGUMENT_TYPE.key(), MOD_ID); // LootFunctions - public static final DeferredRegister LOOT_FUNCS = DeferredRegister.create(Registry.LOOT_FUNCTION_REGISTRY, MOD_ID); + public static final DeferredRegister LOOT_FUNCS = DeferredRegister.create(BuiltInRegistries.LOOT_FUNCTION_TYPE.key(), MOD_ID); public static void setup() { diff --git a/src/main/java/dev/compactmods/machines/core/ServerEventHandler.java b/src/main/java/dev/compactmods/machines/core/ServerEventHandler.java index d0b650fe..2caac35f 100644 --- a/src/main/java/dev/compactmods/machines/core/ServerEventHandler.java +++ b/src/main/java/dev/compactmods/machines/core/ServerEventHandler.java @@ -57,7 +57,7 @@ public static void onWorldLoaded(final LevelEvent.Load evt) { @SubscribeEvent public static void onPlayerLogin(final PlayerEvent.PlayerLoggedInEvent evt) { final var player = evt.getEntity(); - if(player.level.dimension().equals(CompactDimension.LEVEL_KEY) && player instanceof ServerPlayer sp) { + if(player.level().dimension().equals(CompactDimension.LEVEL_KEY) && player instanceof ServerPlayer sp) { // Send a fake world border to the player instead of the "real" one in overworld sp.connection.send(new ClientboundInitializeBorderPacket(new WorldBorder())); } diff --git a/src/main/java/dev/compactmods/machines/core/UIRegistration.java b/src/main/java/dev/compactmods/machines/core/UIRegistration.java index 32269272..98a53c80 100644 --- a/src/main/java/dev/compactmods/machines/core/UIRegistration.java +++ b/src/main/java/dev/compactmods/machines/core/UIRegistration.java @@ -11,7 +11,7 @@ public class UIRegistration { public static final RegistryObject> MACHINE_MENU = Registries.CONTAINERS.register("machine", () -> IForgeMenuType.create( ((windowId, inv, data) -> { data.readBlockPos(); - final var mach = data.readWithCodec(LevelBlockPosition.CODEC); + final var mach = data.readJsonWithCodec(LevelBlockPosition.CODEC); final var room = data.readChunkPos(); final boolean hasName = data.readBoolean(); final var roomName = hasName ? data.readUtf() : "Room Preview"; diff --git a/src/main/java/dev/compactmods/machines/dimension/Dimension.java b/src/main/java/dev/compactmods/machines/dimension/Dimension.java index 8f915e9a..a2406ea7 100644 --- a/src/main/java/dev/compactmods/machines/dimension/Dimension.java +++ b/src/main/java/dev/compactmods/machines/dimension/Dimension.java @@ -20,11 +20,11 @@ public class Dimension { // ================================================================================================================ @Deprecated(forRemoval = true) public static final ResourceKey COMPACT_DIMENSION = ResourceKey - .create(Registry.DIMENSION_REGISTRY, new ResourceLocation(MOD_ID, "compact_world")); + .create(net.minecraft.core.registries.Registries.DIMENSION, new ResourceLocation(MOD_ID, "compact_world")); @Deprecated(forRemoval = true) public static final ResourceKey COMPACT_DIMENSION_DIM_TYPE = ResourceKey - .create(Registry.DIMENSION_TYPE_REGISTRY, new ResourceLocation(MOD_ID, "compact_world")); + .create(net.minecraft.core.registries.Registries.DIMENSION_TYPE, new ResourceLocation(MOD_ID, "compact_world")); public static void prepare() { diff --git a/src/main/java/dev/compactmods/machines/dimension/VoidAirBlock.java b/src/main/java/dev/compactmods/machines/dimension/VoidAirBlock.java index 04fcac69..46a391a4 100644 --- a/src/main/java/dev/compactmods/machines/dimension/VoidAirBlock.java +++ b/src/main/java/dev/compactmods/machines/dimension/VoidAirBlock.java @@ -14,16 +14,21 @@ import net.minecraft.world.level.block.AirBlock; import net.minecraft.world.level.block.state.BlockBehaviour; import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.level.material.Material; import static dev.compactmods.machines.api.core.Constants.MOD_ID; public class VoidAirBlock extends AirBlock { - final public static DamageSource DAMAGE_SOURCE = new DamageSource(MOD_ID + "_voidair"); + //final public static DamageSource DAMAGE_SOURCE = new DamageSource(MOD_ID + "_voidair"); public VoidAirBlock() { - super(BlockBehaviour.Properties.of(Material.AIR).noCollission().air().noLootTable()); + super(BlockBehaviour.Properties.of() + .noCollission() + .air() + .strength(-1.0F, 3600000.0F) + .noLootTable() + .forceSolidOn() + ); } @@ -37,7 +42,7 @@ public void entityInside(BlockState pState, Level pLevel, BlockPos pPos, Entity player.addEffect(new MobEffectInstance(MobEffects.POISON, 5 * 20)); player.addEffect(new MobEffectInstance(MobEffects.BLINDNESS, 5 * 20)); - player.hurt(DAMAGE_SOURCE, 1); + player.hurt(pLevel.damageSources().fellOutOfWorld(), 1); PlayerUtil.howDidYouGetThere(player); player.getCapability(RoomCapabilities.ROOM_HISTORY).ifPresent(IRoomHistory::clear); diff --git a/src/main/java/dev/compactmods/machines/graph/DimensionGraphNode.java b/src/main/java/dev/compactmods/machines/graph/DimensionGraphNode.java index 0d222409..653504ef 100644 --- a/src/main/java/dev/compactmods/machines/graph/DimensionGraphNode.java +++ b/src/main/java/dev/compactmods/machines/graph/DimensionGraphNode.java @@ -2,14 +2,14 @@ import com.mojang.serialization.Codec; import com.mojang.serialization.codecs.RecordCodecBuilder; -import net.minecraft.core.Registry; +import net.minecraft.core.registries.Registries; import net.minecraft.resources.ResourceKey; import net.minecraft.world.level.Level; public record DimensionGraphNode(ResourceKey dimension) implements IGraphNode { public static final Codec CODEC = RecordCodecBuilder.create(i -> i.group( - ResourceKey.codec(Registry.DIMENSION_REGISTRY).fieldOf("dim").forGetter(DimensionGraphNode::dimension) + ResourceKey.codec(Registries.DIMENSION).fieldOf("dim").forGetter(DimensionGraphNode::dimension) ).apply(i, DimensionGraphNode::new)); @Override diff --git a/src/main/java/dev/compactmods/machines/location/LevelBlockPosition.java b/src/main/java/dev/compactmods/machines/location/LevelBlockPosition.java index 53f0c770..a32635c1 100644 --- a/src/main/java/dev/compactmods/machines/location/LevelBlockPosition.java +++ b/src/main/java/dev/compactmods/machines/location/LevelBlockPosition.java @@ -8,7 +8,7 @@ import dev.compactmods.machines.api.location.IDimensionalBlockPosition; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; -import net.minecraft.core.Registry; +import net.minecraft.core.registries.Registries; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.NbtOps; import net.minecraft.nbt.Tag; @@ -33,7 +33,7 @@ public class LevelBlockPosition implements INBTSerializable, IDimen private Vec2 rotation; public static final Codec CODEC = RecordCodecBuilder.create(i -> i.group( - ResourceKey.codec(Registry.DIMENSION_REGISTRY).fieldOf("dim").forGetter(LevelBlockPosition::getDimension), + ResourceKey.codec(Registries.DIMENSION).fieldOf("dim").forGetter(LevelBlockPosition::getDimension), CodecExtensions.VECTOR3D.fieldOf("pos").forGetter(LevelBlockPosition::getExactPosition), CodecExtensions.VECTOR2.optionalFieldOf("rot", Vec2.ZERO).forGetter(x -> x.rotation) ).apply(i, LevelBlockPosition::new)); @@ -66,7 +66,7 @@ public LevelBlockPosition(ResourceKey dim, Vec3 pos, Vec2 rotation) { } public static LevelBlockPosition fromEntity(LivingEntity entity) { - return new LevelBlockPosition(entity.level.dimension(), entity.position(), entity.getRotationVector()); + return new LevelBlockPosition(entity.level().dimension(), entity.position(), entity.getRotationVector()); } public ServerLevel level(@Nonnull MinecraftServer server) { @@ -85,7 +85,7 @@ public IDimensionalBlockPosition relative(Direction direction) { public boolean isLoaded(MinecraftServer server) { final var level = level(server); - return level.isLoaded(new BlockPos(position)); + return level.isLoaded(getBlockPosition()); } public static LevelBlockPosition fromNBT(CompoundTag nbt) { @@ -126,7 +126,7 @@ public Optional getRotation() { } public BlockPos getBlockPosition() { - return new BlockPos(position.x, position.y, position.z); + return new BlockPos((int)position.x, (int)position.y, (int)position.z); } @Override diff --git a/src/main/java/dev/compactmods/machines/location/PreciseDimensionalPosition.java b/src/main/java/dev/compactmods/machines/location/PreciseDimensionalPosition.java index 8f7f067c..b42983f7 100644 --- a/src/main/java/dev/compactmods/machines/location/PreciseDimensionalPosition.java +++ b/src/main/java/dev/compactmods/machines/location/PreciseDimensionalPosition.java @@ -7,6 +7,7 @@ import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Registry; +import net.minecraft.core.registries.Registries; import net.minecraft.resources.ResourceKey; import net.minecraft.server.MinecraftServer; import net.minecraft.server.level.ServerLevel; @@ -21,7 +22,7 @@ public final class PreciseDimensionalPosition implements IDimensionalPosition { public static final Codec CODEC = RecordCodecBuilder.create(i -> i.group( - ResourceKey.codec(Registry.DIMENSION_REGISTRY).fieldOf("dim").forGetter(PreciseDimensionalPosition::dimension), + ResourceKey.codec(Registries.DIMENSION).fieldOf("dim").forGetter(PreciseDimensionalPosition::dimension), CodecExtensions.VECTOR3D.fieldOf("pos").forGetter(PreciseDimensionalPosition::position), CodecExtensions.VECTOR3D.optionalFieldOf("rot", Vec3.ZERO).forGetter(x -> x.rotation) ).apply(i, PreciseDimensionalPosition::new)); @@ -43,12 +44,12 @@ public PreciseDimensionalPosition(ResourceKey dimension, Vec3 position, V } public static PreciseDimensionalPosition fromPlayer(Player player) { - return new PreciseDimensionalPosition(player.level.dimension(), player.position(), player.getLookAngle()); + return new PreciseDimensionalPosition(player.level().dimension(), player.position(), player.getLookAngle()); } @Override public BlockPos getBlockPosition() { - return new BlockPos(position.x, position.y, position.z); + return new BlockPos((int) position.x, (int) position.y, (int) position.z); } @Override @@ -83,7 +84,7 @@ public Optional getRotation() { @Override public boolean isLoaded(MinecraftServer serv) { - return level(serv).isLoaded(new BlockPos(position)); + return level(serv).isLoaded(getBlockPosition()); } public ResourceKey dimension() { diff --git a/src/main/java/dev/compactmods/machines/machine/CompactMachineBlock.java b/src/main/java/dev/compactmods/machines/machine/CompactMachineBlock.java index df2631f4..5df9f324 100644 --- a/src/main/java/dev/compactmods/machines/machine/CompactMachineBlock.java +++ b/src/main/java/dev/compactmods/machines/machine/CompactMachineBlock.java @@ -28,6 +28,7 @@ import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Registry; +import net.minecraft.core.registries.Registries; import net.minecraft.nbt.CompoundTag; import net.minecraft.resources.ResourceLocation; import net.minecraft.server.MinecraftServer; @@ -58,7 +59,7 @@ public class CompactMachineBlock extends Block implements EntityBlock { - public static final TagKey TAG = TagKey.create(Registry.BLOCK_REGISTRY, new ResourceLocation(Constants.MOD_ID, "machine")); + public static final TagKey TAG = TagKey.create(Registries.BLOCK, new ResourceLocation(Constants.MOD_ID, "machine")); private final RoomSize size; @@ -201,7 +202,7 @@ public InteractionResult use(BlockState state, Level level, BlockPos pos, Player final var roomName = Rooms.getRoomName(server, room); NetworkHooks.openScreen((ServerPlayer) player, MachineRoomMenu.makeProvider(server, room, machine.getLevelPosition()), (buf) -> { buf.writeBlockPos(pos); - buf.writeWithCodec(LevelBlockPosition.CODEC, machine.getLevelPosition()); + buf.writeJsonWithCodec(LevelBlockPosition.CODEC, machine.getLevelPosition()); buf.writeChunkPos(room); roomName.ifPresentOrElse(name -> { buf.writeBoolean(true); diff --git a/src/main/java/dev/compactmods/machines/machine/Machines.java b/src/main/java/dev/compactmods/machines/machine/Machines.java index 76d25be8..2ae91337 100644 --- a/src/main/java/dev/compactmods/machines/machine/Machines.java +++ b/src/main/java/dev/compactmods/machines/machine/Machines.java @@ -7,19 +7,17 @@ import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockBehaviour; -import net.minecraft.world.level.material.Material; import net.minecraftforge.registries.RegistryObject; import java.util.function.Supplier; public class Machines { static final BlockBehaviour.Properties MACHINE_BLOCK_PROPS = BlockBehaviour.Properties - .of(Material.METAL) + .of() .strength(8.0F, 20.0F) .requiresCorrectToolForDrops(); - static final Supplier MACHINE_ITEM_PROPS = () -> new Item.Properties() - .tab(CompactMachines.COMPACT_MACHINES_ITEMS); + static final Supplier MACHINE_ITEM_PROPS = Item.Properties::new; public static final RegistryObject MACHINE_BLOCK_TINY = Registries.BLOCKS.register("machine_tiny", () -> new CompactMachineBlock(RoomSize.TINY, MACHINE_BLOCK_PROPS)); @@ -61,7 +59,6 @@ public class Machines { () -> new CompactMachineItem(MACHINE_BLOCK_MAXIMUM.get(), MACHINE_ITEM_PROPS.get())); - public static final RegistryObject> MACHINE_TILE_ENTITY = Registries.BLOCK_ENTITIES.register("compact_machine", () -> BlockEntityType.Builder.of(CompactMachineBlockEntity::new, MACHINE_BLOCK_TINY.get(), MACHINE_BLOCK_SMALL.get(), MACHINE_BLOCK_NORMAL.get(), diff --git a/src/main/java/dev/compactmods/machines/room/RoomEventHandler.java b/src/main/java/dev/compactmods/machines/room/RoomEventHandler.java index 768f9840..e24b696f 100644 --- a/src/main/java/dev/compactmods/machines/room/RoomEventHandler.java +++ b/src/main/java/dev/compactmods/machines/room/RoomEventHandler.java @@ -16,7 +16,7 @@ import net.minecraftforge.event.entity.EntityEvent; import net.minecraftforge.event.entity.EntityJoinLevelEvent; import net.minecraftforge.event.entity.EntityTeleportEvent; -import net.minecraftforge.event.entity.living.LivingSpawnEvent; +import net.minecraftforge.event.entity.living.MobSpawnEvent; import net.minecraftforge.eventbus.api.Event; import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.fml.common.Mod; @@ -29,10 +29,10 @@ public static void entityJoined(final EntityJoinLevelEvent evt) { Entity ent = evt.getEntity(); // Early exit if spawning in non-CM dimensions - if ((ent instanceof Player) || !ent.level.dimension().equals(CompactDimension.LEVEL_KEY)) return; + if ((ent instanceof Player) || !ent.level().dimension().equals(CompactDimension.LEVEL_KEY)) return; // no-op clients, we only care about blocking server spawns - if(ent.level.isClientSide) return; + if(ent.level().isClientSide) return; if (!positionInsideRoom(ent, ent.position())) { evt.setCanceled(true); @@ -40,13 +40,13 @@ public static void entityJoined(final EntityJoinLevelEvent evt) { } @SubscribeEvent - public static void onCheckSpawn(final LivingSpawnEvent.CheckSpawn evt) { + public static void onCheckSpawn(final MobSpawnEvent evt) { Vec3 target = new Vec3(evt.getX(), evt.getY(), evt.getZ()); Entity ent = evt.getEntity(); // Early exit if spawning in non-CM dimensions - if (!ent.level.dimension().equals(CompactDimension.LEVEL_KEY)) return; + if (!ent.level().dimension().equals(CompactDimension.LEVEL_KEY)) return; if (!positionInsideRoom(ent, target)) evt.setResult(Event.Result.DENY); } @@ -55,7 +55,7 @@ public static void onCheckSpawn(final LivingSpawnEvent.CheckSpawn evt) { public static void onEntityTeleport(final EntityTeleportEvent evt) { // Allow teleport commands, we don't want to trap people anywhere if (evt instanceof EntityTeleportEvent.TeleportCommand) return; - if(!evt.getEntity().level.dimension().equals(CompactDimension.LEVEL_KEY)) return; + if(!evt.getEntity().level().dimension().equals(CompactDimension.LEVEL_KEY)) return; Entity ent = evt.getEntity(); doEntityTeleportHandle(evt, evt.getTarget(), ent); @@ -71,7 +71,7 @@ public static void onEntityTeleport(final EntityTeleportEvent evt) { * @return True if position is inside a room; false otherwise. */ private static boolean positionInsideRoom(Entity entity, Vec3 target) { - final var level = entity.level; + final var level = entity.level(); if (!level.dimension().equals(CompactDimension.LEVEL_KEY)) return false; if (level instanceof ServerLevel compactDim) { diff --git a/src/main/java/dev/compactmods/machines/room/Rooms.java b/src/main/java/dev/compactmods/machines/room/Rooms.java index dde8e3fb..a9083c7c 100644 --- a/src/main/java/dev/compactmods/machines/room/Rooms.java +++ b/src/main/java/dev/compactmods/machines/room/Rooms.java @@ -81,7 +81,7 @@ public static StructureTemplate getInternalBlocks(MinecraftServer server, ChunkP final var bounds = roomInfo.getRoomBounds(); final int inside = roomInfo.getSize().getInternalSize(); - tem.fillFromWorld(compactDim, new BlockPos(bounds.minX, bounds.minY - 1, bounds.minZ), + tem.fillFromWorld(compactDim, new BlockPos((int)bounds.minX, (int)bounds.minY - 1, (int)bounds.minZ), new Vec3i(inside, inside + 1, inside), false, null); return tem; diff --git a/src/main/java/dev/compactmods/machines/room/client/MachineRoomScreen.java b/src/main/java/dev/compactmods/machines/room/client/MachineRoomScreen.java index 52feacf7..92a8c8e5 100644 --- a/src/main/java/dev/compactmods/machines/room/client/MachineRoomScreen.java +++ b/src/main/java/dev/compactmods/machines/room/client/MachineRoomScreen.java @@ -2,8 +2,8 @@ import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.vertex.PoseStack; -import com.mojang.math.Matrix4f; -import com.mojang.math.Vector3f; +import com.mojang.blaze3d.vertex.VertexSorting; +import com.mojang.math.Axis; import dev.compactmods.machines.api.core.Constants; import dev.compactmods.machines.client.gui.widget.PSDIconButton; import dev.compactmods.machines.client.level.RenderingLevel; @@ -16,7 +16,7 @@ import dev.compactmods.machines.room.network.RoomNetworkHandler; import dev.compactmods.machines.shrinking.Shrinking; import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.screens.Screen; +import net.minecraft.client.gui.GuiGraphics; import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen; import net.minecraft.client.renderer.LightTexture; import net.minecraft.client.renderer.texture.OverlayTexture; @@ -28,6 +28,7 @@ import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.levelgen.structure.templatesystem.StructurePlaceSettings; import net.minecraftforge.client.model.data.ModelData; +import org.joml.Matrix4f; public class MachineRoomScreen extends AbstractContainerScreen { @@ -85,26 +86,27 @@ public boolean mouseDragged(double mx, double my, int mButton, double dx, double } @Override - protected void renderLabels(PoseStack pose, int mouseX, int mouseY) { + protected void renderLabels(GuiGraphics graphics, int mouseX, int mouseY) { + PoseStack pose = graphics.pose(); pose.pushPose(); pose.translate(0, 0, 500); pose.translate(this.imageWidth / 2f, 0, 0); var p = Component.literal(menu.getRoomName()); - Screen.drawCenteredString(pose, font, p, 0, this.titleLabelY, 0xFFFFFFFF); + graphics.drawCenteredString(font, p, 0, this.titleLabelY, 0xFFFFFFFF); var room = menu.getRoom(); var rt = Component.literal("(%s, %s)".formatted(room.x, room.z)); pose.scale(0.8f, 0.8f, 0.8f); - Screen.drawCenteredString(pose, font, rt, 0,this.titleLabelY + font.lineHeight + 2, 0xFFCCCCCC); + graphics.drawCenteredString(font, rt, 0,this.titleLabelY + font.lineHeight + 2, 0xFFCCCCCC); pose.popPose(); } @Override - public void render(PoseStack pose, int mouseX, int mouseY, float partial) { - this.renderBackground(pose); - super.render(pose, mouseX, mouseY, partial); + public void render(GuiGraphics graphics, int mouseX, int mouseY, float partial) { + this.renderBackground(graphics); + super.render(graphics, mouseX, mouseY, partial); var buffer = SuperRenderTypeBuffer.getInstance(); @@ -114,9 +116,11 @@ public void render(PoseStack pose, int mouseX, int mouseY, float partial) { // has to be outside of MS transforms, important for vertex sorting Matrix4f matrix4f = new Matrix4f(RenderSystem.getProjectionMatrix()); - matrix4f.multiplyWithTranslation(0, 0, 800); - RenderSystem.setProjectionMatrix(matrix4f); + //matrix4f.multiplyWithTranslation(0, 0, 800); + matrix4f.translate(0, 0, 800); + RenderSystem.setProjectionMatrix(matrix4f, VertexSorting.ORTHOGRAPHIC_Z); + PoseStack pose = graphics.pose(); PoseStack.Pose lastEntryBeforeTry = pose.last(); var cam = minecraft.cameraEntity; @@ -149,8 +153,8 @@ public void render(PoseStack pose, int mouseX, int mouseY, float partial) { pose.scale(zoom, -zoom, zoom); - pose.mulPose(Vector3f.XP.rotationDegrees((float) rotateY)); - pose.mulPose(Vector3f.YP.rotationDegrees((float) rotateX)); + pose.mulPose(Axis.XP.rotationDegrees((float) rotateY)); + pose.mulPose(Axis.YP.rotationDegrees((float) rotateX)); final var tSize = struct.getSize(); final float s = tSize.getX() / 2f; @@ -211,7 +215,7 @@ public void render(PoseStack pose, int mouseX, int mouseY, float partial) { } @Override - protected void renderBg(PoseStack pose, float p_97788_, int p_97789_, int p_97790_) { + protected void renderBg(GuiGraphics graphics, float p_97788_, int p_97789_, int p_97790_) { RenderSystem.setShaderTexture(0, new ResourceLocation(Constants.MOD_ID, "textures/gui/room_menu.png")); int i = (this.width - this.imageWidth) / 2; diff --git a/src/main/java/dev/compactmods/machines/room/network/InitialRoomBlockDataPacket.java b/src/main/java/dev/compactmods/machines/room/network/InitialRoomBlockDataPacket.java index 51106c81..d4f430b0 100644 --- a/src/main/java/dev/compactmods/machines/room/network/InitialRoomBlockDataPacket.java +++ b/src/main/java/dev/compactmods/machines/room/network/InitialRoomBlockDataPacket.java @@ -1,5 +1,6 @@ package dev.compactmods.machines.room.network; +import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.FriendlyByteBuf; import net.minecraft.world.level.levelgen.structure.templatesystem.StructureTemplate; @@ -12,7 +13,7 @@ public record InitialRoomBlockDataPacket(StructureTemplate blocks) { public static InitialRoomBlockDataPacket fromNetwork(FriendlyByteBuf buf) { final var nbt = buf.readNbt(); final var struct = new StructureTemplate(); - struct.load(nbt); + struct.load(BuiltInRegistries.BLOCK.asLookup(), nbt); return new InitialRoomBlockDataPacket(struct); } diff --git a/src/main/java/dev/compactmods/machines/room/network/PlayerRequestedTeleportPacket.java b/src/main/java/dev/compactmods/machines/room/network/PlayerRequestedTeleportPacket.java index 45ebf790..f0c0df41 100644 --- a/src/main/java/dev/compactmods/machines/room/network/PlayerRequestedTeleportPacket.java +++ b/src/main/java/dev/compactmods/machines/room/network/PlayerRequestedTeleportPacket.java @@ -13,11 +13,11 @@ public record PlayerRequestedTeleportPacket(LevelBlockPosition machine, ChunkPos room) { public PlayerRequestedTeleportPacket(FriendlyByteBuf buf) { - this(buf.readWithCodec(LevelBlockPosition.CODEC), buf.readChunkPos()); + this(buf.readJsonWithCodec(LevelBlockPosition.CODEC), buf.readChunkPos()); } public void encode(FriendlyByteBuf buf) { - buf.writeWithCodec(LevelBlockPosition.CODEC, machine); + buf.writeJsonWithCodec(LevelBlockPosition.CODEC, machine); buf.writeChunkPos(room); } @@ -25,7 +25,7 @@ public boolean handle(Supplier ctx) { ctx.get().enqueueWork(() -> { final var player = ctx.get().getSender(); try { - PlayerUtil.teleportPlayerIntoMachine(player.level, player, machine.getBlockPosition()); + PlayerUtil.teleportPlayerIntoMachine(player.level(), player, machine.getBlockPosition()); } catch (MissingDimensionException e) { CompactMachines.LOGGER.error("Failed to teleport player into machine.", e); } diff --git a/src/main/java/dev/compactmods/machines/shrinking/PersonalShrinkingDevice.java b/src/main/java/dev/compactmods/machines/shrinking/PersonalShrinkingDevice.java index 8e284929..f6f30923 100644 --- a/src/main/java/dev/compactmods/machines/shrinking/PersonalShrinkingDevice.java +++ b/src/main/java/dev/compactmods/machines/shrinking/PersonalShrinkingDevice.java @@ -61,7 +61,7 @@ public InteractionResultHolder use(Level world, Player player, Intera } if (world instanceof ServerLevel && player instanceof ServerPlayer serverPlayer) { - ServerLevel playerDim = serverPlayer.getLevel(); + ServerLevel playerDim = serverPlayer.serverLevel(); if (playerDim.dimension().equals(CompactDimension.LEVEL_KEY)) { if (player.isShiftKeyDown()) { ChunkPos machineChunk = new ChunkPos(player.blockPosition()); diff --git a/src/main/java/dev/compactmods/machines/shrinking/Shrinking.java b/src/main/java/dev/compactmods/machines/shrinking/Shrinking.java index 99b2db8b..434c9a1f 100644 --- a/src/main/java/dev/compactmods/machines/shrinking/Shrinking.java +++ b/src/main/java/dev/compactmods/machines/shrinking/Shrinking.java @@ -9,7 +9,6 @@ public class Shrinking { public static final RegistryObject PERSONAL_SHRINKING_DEVICE = Registries.ITEMS.register("personal_shrinking_device", () -> new PersonalShrinkingDevice(new Item.Properties() - .tab(CompactMachines.COMPACT_MACHINES_ITEMS) .stacksTo(1))); public static void prepare() { diff --git a/src/main/java/dev/compactmods/machines/tunnel/TunnelItem.java b/src/main/java/dev/compactmods/machines/tunnel/TunnelItem.java index 2d554e7d..635e25d6 100644 --- a/src/main/java/dev/compactmods/machines/tunnel/TunnelItem.java +++ b/src/main/java/dev/compactmods/machines/tunnel/TunnelItem.java @@ -92,7 +92,8 @@ public void appendHoverText(@Nonnull ItemStack stack, @Nullable Level worldIn, L }); } - @Override + + /*@Override public void fillItemCategory(CreativeModeTab group, NonNullList items) { if (this.allowedIn(group)) { IForgeRegistry definitions = Tunnels.TUNNEL_DEF_REGISTRY.get(); @@ -104,7 +105,7 @@ public void fillItemCategory(CreativeModeTab group, NonNullList items items.add(withDef); }); } - } + }*/ public static Optional getDefinition(ItemStack stack) { CompoundTag defTag = stack.getOrCreateTagElement("definition"); diff --git a/src/main/java/dev/compactmods/machines/tunnel/Tunnels.java b/src/main/java/dev/compactmods/machines/tunnel/Tunnels.java index b464efd2..1782dfaf 100644 --- a/src/main/java/dev/compactmods/machines/tunnel/Tunnels.java +++ b/src/main/java/dev/compactmods/machines/tunnel/Tunnels.java @@ -13,8 +13,6 @@ import net.minecraft.world.level.block.SoundType; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockBehaviour; -import net.minecraft.world.level.material.Material; -import net.minecraft.world.level.material.MaterialColor; import net.minecraftforge.registries.IForgeRegistry; import net.minecraftforge.registries.RegistryBuilder; import net.minecraftforge.registries.RegistryObject; @@ -43,7 +41,7 @@ public static TunnelDefinition getDefinition(ResourceLocation id) { public static final RegistryObject UNKNOWN = Registries.TUNNEL_DEFINITIONS.register("unknown", UnknownTunnel::new); public static final RegistryObject ITEM_TUNNEL = Registries.ITEMS.register("tunnel", () -> - new TunnelItem(new Item.Properties().tab(CompactMachines.COMPACT_MACHINES_ITEMS))); + new TunnelItem(new Item.Properties())); // ================================================================================================================ // TUNNEL TYPE DEFINITIONS @@ -58,7 +56,7 @@ public static TunnelDefinition getDefinition(ResourceLocation id) { // TUNNEL BLOCKS / TILES // ================================================================================================================ public static final RegistryObject BLOCK_TUNNEL_WALL = Registries.BLOCKS.register("tunnel_wall", () -> - new TunnelWallBlock(BlockBehaviour.Properties.of(Material.METAL, MaterialColor.CLAY) + new TunnelWallBlock(BlockBehaviour.Properties.of() .strength(-1.0F, 3600000.8F) .sound(SoundType.METAL) .lightLevel((state) -> 15))); diff --git a/src/main/java/dev/compactmods/machines/upgrade/ChunkloadUpgradeItem.java b/src/main/java/dev/compactmods/machines/upgrade/ChunkloadUpgradeItem.java index e06800f5..2d90c2bd 100644 --- a/src/main/java/dev/compactmods/machines/upgrade/ChunkloadUpgradeItem.java +++ b/src/main/java/dev/compactmods/machines/upgrade/ChunkloadUpgradeItem.java @@ -10,7 +10,7 @@ public class ChunkloadUpgradeItem extends RoomUpgradeItem { public ChunkloadUpgradeItem(Properties props) { super(props); } - @Override + /*@Override public void fillItemCategory(CreativeModeTab tab, NonNullList stacks) { if(!allowedIn(tab)) return; @@ -19,7 +19,7 @@ public void fillItemCategory(CreativeModeTab tab, NonNullList stacks) info.putString(RoomUpgradeHelper.NBT_UPGRADE_ID, ChunkloadUpgrade.REG_ID.toString()); stacks.add(stack); - } + }*/ @Override public RoomUpgrade getUpgradeType() { return MachineRoomUpgrades.CHUNKLOAD.get(); diff --git a/src/main/java/dev/compactmods/machines/upgrade/MachineRoomUpgrades.java b/src/main/java/dev/compactmods/machines/upgrade/MachineRoomUpgrades.java index 3cbe1bb4..236fa086 100644 --- a/src/main/java/dev/compactmods/machines/upgrade/MachineRoomUpgrades.java +++ b/src/main/java/dev/compactmods/machines/upgrade/MachineRoomUpgrades.java @@ -18,7 +18,6 @@ public class MachineRoomUpgrades { public static final RegistryObject CHUNKLOAD = Registries.UPGRADES.register(ChunkloadUpgrade.REG_ID.getPath(), ChunkloadUpgrade::new); public static final RegistryObject CHUNKLOADER = Registries.ITEMS.register("chunkloader_upgrade", () -> new ChunkloadUpgradeItem(new Item.Properties() - .tab(CompactMachines.COMPACT_MACHINES_ITEMS) .stacksTo(1))); public static void prepare() { diff --git a/src/main/java/dev/compactmods/machines/upgrade/command/CMUpgradeRoomCommand.java b/src/main/java/dev/compactmods/machines/upgrade/command/CMUpgradeRoomCommand.java index 1964a789..12d7ab55 100644 --- a/src/main/java/dev/compactmods/machines/upgrade/command/CMUpgradeRoomCommand.java +++ b/src/main/java/dev/compactmods/machines/upgrade/command/CMUpgradeRoomCommand.java @@ -71,7 +71,7 @@ private static int addToCurrentRoom(CommandContext ctx) thro if (added) { upgrade.onAdded(level, currChunk); - src.sendSuccess(TranslationUtil.message(Messages.UPGRADE_APPLIED), true); + src.sendSuccess(() -> TranslationUtil.message(Messages.UPGRADE_APPLIED), true); } else { src.sendFailure(TranslationUtil.message(Messages.UPGRADE_ADD_FAILED)); } @@ -113,7 +113,7 @@ private static int removeFromCurrentRoom(CommandContext ctx) if (removed) { upgrade.onRemoved(level, currChunk); - src.sendSuccess(TranslationUtil.message(Messages.UPGRADE_REMOVED), true); + src.sendSuccess(() -> TranslationUtil.message(Messages.UPGRADE_REMOVED), true); } else { src.sendFailure(TranslationUtil.message(Messages.UPGRADE_REM_FAILED)); } diff --git a/src/main/java/dev/compactmods/machines/upgrade/command/RoomUpgradeArgument.java b/src/main/java/dev/compactmods/machines/upgrade/command/RoomUpgradeArgument.java index c3ddfff1..4bdabfb9 100644 --- a/src/main/java/dev/compactmods/machines/upgrade/command/RoomUpgradeArgument.java +++ b/src/main/java/dev/compactmods/machines/upgrade/command/RoomUpgradeArgument.java @@ -30,7 +30,7 @@ private RoomUpgradeArgument() { public static Optional getUpgrade(CommandContext stack, String argName) throws CommandSyntaxException { final var UPGRADES = MachineRoomUpgrades.REGISTRY.get(); - ResourceKey resourcekey = getRegistryType(stack, argName, Registries.ROOM_UPGRADES_REG_KEY, ERROR_INVALID_UPGRADE); + ResourceKey resourcekey = getRegistryKey(stack, argName, Registries.ROOM_UPGRADES_REG_KEY, ERROR_INVALID_UPGRADE); return Optional.ofNullable(UPGRADES.getValue(resourcekey.location())); } diff --git a/src/main/java/dev/compactmods/machines/util/CompactStructureGenerator.java b/src/main/java/dev/compactmods/machines/util/CompactStructureGenerator.java index 2933df52..1e2e314a 100644 --- a/src/main/java/dev/compactmods/machines/util/CompactStructureGenerator.java +++ b/src/main/java/dev/compactmods/machines/util/CompactStructureGenerator.java @@ -5,6 +5,7 @@ import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Vec3i; +import net.minecraft.util.Mth; import net.minecraft.world.level.LevelAccessor; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.phys.AABB; @@ -118,9 +119,9 @@ public static void generateCompactStructure(LevelAccessor world, Vec3i dimension public static BlockPos cornerFromSize(Vec3i dimensions, BlockPos cubeFloorCenter) { Vec3i offset = new Vec3i( - -Math.floor(dimensions.getX() / 2f), + -Mth.floor(dimensions.getX() / 2f), 1, - -Math.floor(dimensions.getZ() / 2f) + -Mth.floor(dimensions.getZ() / 2f) ); return cubeFloorCenter.offset(offset); diff --git a/src/main/java/dev/compactmods/machines/util/DimensionUtil.java b/src/main/java/dev/compactmods/machines/util/DimensionUtil.java index 2ed5942a..5e2aa53a 100644 --- a/src/main/java/dev/compactmods/machines/util/DimensionUtil.java +++ b/src/main/java/dev/compactmods/machines/util/DimensionUtil.java @@ -4,8 +4,8 @@ import dev.compactmods.machines.CompactMachines; import dev.compactmods.machines.api.dimension.CompactDimension; import net.minecraft.core.Registry; +import net.minecraft.core.registries.Registries; import net.minecraft.resources.RegistryOps; -import net.minecraft.resources.RegistryResourceAccess; import net.minecraft.resources.ResourceKey; import net.minecraft.server.MinecraftServer; import net.minecraft.server.level.ServerLevel; @@ -29,7 +29,7 @@ public static void createAndRegisterWorldAndDimension(final MinecraftServer serv final ServerLevel overworld = server.getLevel(Level.OVERWORLD); // dimension keys have a 1:1 relationship with dimension keys, they have the same IDs as well - final ResourceKey dimensionKey = ResourceKey.create(Registry.LEVEL_STEM_REGISTRY, CompactDimension.LEVEL_KEY.location()); + final ResourceKey dimensionKey = ResourceKey.create(Registries.LEVEL_STEM, CompactDimension.LEVEL_KEY.location()); final var serverResources = server.getResourceManager(); @@ -37,13 +37,13 @@ public static void createAndRegisterWorldAndDimension(final MinecraftServer serv if (FMLEnvironment.production && !doLevelFileBackup(server)) return; var reg = server.registryAccess(); - var cmDimType = reg.registryOrThrow(Registry.DIMENSION_TYPE_REGISTRY) + var cmDimType = reg.registryOrThrow(Registries.DIMENSION_TYPE) .get(CompactDimension.DIM_TYPE_KEY); var ops = RegistryOps.create(JsonOps.INSTANCE, reg); - var resourceAccess = RegistryResourceAccess.forResourceManager(serverResources); - var dims = resourceAccess.listResources(Registry.DIMENSION_REGISTRY); + /*var resourceAccess = RegistryResourceAccess.forResourceManager(serverResources); + var dims = resourceAccess.listResources(Registries.DIMENSION_TYPE);*/ // TODO - Revisit // resourceAccess.getResource(Registration.COMPACT_DIMENSION).ifPresent(lev -> { diff --git a/src/main/java/dev/compactmods/machines/util/PlayerUtil.java b/src/main/java/dev/compactmods/machines/util/PlayerUtil.java index 784577d8..e228b53b 100644 --- a/src/main/java/dev/compactmods/machines/util/PlayerUtil.java +++ b/src/main/java/dev/compactmods/machines/util/PlayerUtil.java @@ -55,7 +55,7 @@ public static void teleportPlayerIntoMachine(Level machineLevel, Player player, boolean grantAdvancement = targetRoom.isEmpty(); targetRoom.ifPresent(room -> { - if (player.level.dimension().equals(CompactDimension.LEVEL_KEY) && player.chunkPosition().equals(room)) { + if (player.level().dimension().equals(CompactDimension.LEVEL_KEY) && player.chunkPosition().equals(room)) { if (player instanceof ServerPlayer sp) { AdvancementTriggers.RECURSIVE_ROOMS.trigger(sp); } diff --git a/src/main/java/dev/compactmods/machines/wall/Walls.java b/src/main/java/dev/compactmods/machines/wall/Walls.java index 045670f9..ae444ae7 100644 --- a/src/main/java/dev/compactmods/machines/wall/Walls.java +++ b/src/main/java/dev/compactmods/machines/wall/Walls.java @@ -1,30 +1,26 @@ package dev.compactmods.machines.wall; -import dev.compactmods.machines.CompactMachines; import dev.compactmods.machines.core.Registries; import net.minecraft.world.item.Item; 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.minecraft.world.level.material.MaterialColor; import net.minecraftforge.registries.RegistryObject; import java.util.function.Supplier; public class Walls { - static final Supplier WALL_ITEM_PROPS = () -> new Item.Properties() - .tab(CompactMachines.COMPACT_MACHINES_ITEMS); + static final Supplier WALL_ITEM_PROPS = Item.Properties::new; public static final RegistryObject BLOCK_SOLID_WALL = Registries.BLOCKS.register("solid_wall", () -> - new SolidWallBlock(BlockBehaviour.Properties.of(Material.METAL, MaterialColor.CLAY) + new SolidWallBlock(BlockBehaviour.Properties.of() .strength(-1.0F, 3600000.8F) .sound(SoundType.METAL) .lightLevel((state) -> 15))); public static final RegistryObject ITEM_SOLID_WALL = Registries.ITEMS.register("solid_wall", () -> new ItemBlockWall(BLOCK_SOLID_WALL.get(), WALL_ITEM_PROPS.get())); public static final RegistryObject BLOCK_BREAKABLE_WALL = Registries.BLOCKS.register("wall", () -> - new BreakableWallBlock(BlockBehaviour.Properties.of(Material.METAL) + new BreakableWallBlock(BlockBehaviour.Properties.of() .strength(3.0f, 128.0f) .requiresCorrectToolForDrops())); public static final RegistryObject ITEM_BREAKABLE_WALL = Registries.ITEMS.register("wall", () -> diff --git a/src/test/java/dev/compactmods/machines/test/core/CompactMachinesTests.java b/src/test/java/dev/compactmods/machines/test/core/CompactMachinesTests.java index 1b93f65a..1525fdcb 100644 --- a/src/test/java/dev/compactmods/machines/test/core/CompactMachinesTests.java +++ b/src/test/java/dev/compactmods/machines/test/core/CompactMachinesTests.java @@ -2,6 +2,8 @@ import dev.compactmods.machines.CompactMachines; import dev.compactmods.machines.api.core.Constants; +import dev.compactmods.machines.client.CreativeTabs; +import dev.compactmods.machines.core.Registries; import dev.compactmods.machines.test.TestBatches; import net.minecraft.gametest.framework.GameTest; import net.minecraft.gametest.framework.GameTestHelper; @@ -15,7 +17,8 @@ public class CompactMachinesTests { @GameTest(template = "empty_1x1", batch = TestBatches.CODEC_TESTS) public static void canSerializeVector3d(final GameTestHelper test) { try { - var icon = CompactMachines.COMPACT_MACHINES_ITEMS.makeIcon(); + var icon = CreativeTabs.TAB.get().getIconItem(); + //var icon = CompactMachines.COMPACT_MACHINES_ITEMS.makeIcon(); if(icon.isEmpty()) test.fail("Mod creative tab icon is wrong."); } diff --git a/src/tunnels/java/dev/compactmods/machines/tunnel/definitions/FluidTunnel.java b/src/tunnels/java/dev/compactmods/machines/tunnel/definitions/FluidTunnel.java index 0c17e47b..05cfb0e2 100644 --- a/src/tunnels/java/dev/compactmods/machines/tunnel/definitions/FluidTunnel.java +++ b/src/tunnels/java/dev/compactmods/machines/tunnel/definitions/FluidTunnel.java @@ -9,9 +9,9 @@ import net.minecraft.nbt.CompoundTag; import net.minecraft.util.FastColor; import net.minecraftforge.common.capabilities.Capability; +import net.minecraftforge.common.capabilities.ForgeCapabilities; import net.minecraftforge.common.util.INBTSerializable; import net.minecraftforge.common.util.LazyOptional; -import net.minecraftforge.fluids.capability.CapabilityFluidHandler; import net.minecraftforge.fluids.capability.IFluidHandler; import net.minecraftforge.fluids.capability.templates.FluidTank; @@ -25,12 +25,12 @@ public int ringColor() { @Override public ImmutableSet> getSupportedCapabilities() { - return ImmutableSet.of(CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY); + return ImmutableSet.of(ForgeCapabilities.FLUID_HANDLER); } @Override public LazyOptional getCapability(Capability type, FluidTunnel.Instance instance) { - if(type == CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY) + if(type == ForgeCapabilities.FLUID_HANDLER) return instance.lazy().cast(); return LazyOptional.empty(); diff --git a/src/tunnels/java/dev/compactmods/machines/tunnel/definitions/ForgeEnergyTunnel.java b/src/tunnels/java/dev/compactmods/machines/tunnel/definitions/ForgeEnergyTunnel.java index 000c906a..ace1ef37 100644 --- a/src/tunnels/java/dev/compactmods/machines/tunnel/definitions/ForgeEnergyTunnel.java +++ b/src/tunnels/java/dev/compactmods/machines/tunnel/definitions/ForgeEnergyTunnel.java @@ -9,9 +9,9 @@ import net.minecraft.nbt.CompoundTag; import net.minecraft.util.FastColor; import net.minecraftforge.common.capabilities.Capability; +import net.minecraftforge.common.capabilities.ForgeCapabilities; import net.minecraftforge.common.util.INBTSerializable; import net.minecraftforge.common.util.LazyOptional; -import net.minecraftforge.energy.CapabilityEnergy; import net.minecraftforge.energy.EnergyStorage; import net.minecraftforge.energy.IEnergyStorage; @@ -25,12 +25,12 @@ public int ringColor() { @Override public ImmutableSet> getSupportedCapabilities() { - return ImmutableSet.of(CapabilityEnergy.ENERGY); + return ImmutableSet.of(ForgeCapabilities.ENERGY); } @Override public LazyOptional getCapability(Capability type, Instance instance) { - if (type == CapabilityEnergy.ENERGY) { + if (type == ForgeCapabilities.ENERGY) { return instance.lazy().cast(); } diff --git a/src/tunnels/java/dev/compactmods/machines/tunnel/definitions/ItemTunnel.java b/src/tunnels/java/dev/compactmods/machines/tunnel/definitions/ItemTunnel.java index bd9ffa61..7d1bf3cd 100644 --- a/src/tunnels/java/dev/compactmods/machines/tunnel/definitions/ItemTunnel.java +++ b/src/tunnels/java/dev/compactmods/machines/tunnel/definitions/ItemTunnel.java @@ -14,9 +14,9 @@ import net.minecraft.world.Containers; import net.minecraft.world.item.ItemStack; import net.minecraftforge.common.capabilities.Capability; +import net.minecraftforge.common.capabilities.ForgeCapabilities; import net.minecraftforge.common.util.INBTSerializable; import net.minecraftforge.common.util.LazyOptional; -import net.minecraftforge.items.CapabilityItemHandler; import net.minecraftforge.items.IItemHandler; import net.minecraftforge.items.ItemStackHandler; @@ -38,7 +38,7 @@ public Instance newInstance(BlockPos pos, Direction side) { @Override public ImmutableSet> getSupportedCapabilities() { - return ImmutableSet.of(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY); + return ImmutableSet.of(ForgeCapabilities.ITEM_HANDLER); } /** @@ -49,7 +49,7 @@ public ImmutableSet> getSupportedCapabilities() { */ @Override public LazyOptional getCapability(Capability capType, Instance instance) { - if (capType == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY) { + if (capType == ForgeCapabilities.ITEM_HANDLER) { return instance.lazy(); }