diff --git a/gradle.properties b/gradle.properties index 1061cfe1..a14365df 100644 --- a/gradle.properties +++ b/gradle.properties @@ -3,15 +3,15 @@ org.gradle.jvmargs=-Xmx3G org.gradle.daemon=false -minecraft_version=1.19 +minecraft_version=1.19.1 loader_version=0.14.8 -fabric_version=0.58.0+1.19 +fabric_version=0.58.5+1.19.1 mod_id=compactmachines # Dependencies and Libs -jei_mc_version=1.19 -jei_version=11.0.0.222 +jei_mc_version=1.19.1 +jei_version=11.2.0.241 rei_version=9.1.517 top_version=1.19-6.0.0 port_lib_version=2.0.422 diff --git a/src/api/java/dev/compactmods/machines/api/core/Advancements.java b/src/api/java/dev/compactmods/machines/api/core/Advancements.java index bc8c231a..3adc0cf1 100644 --- a/src/api/java/dev/compactmods/machines/api/core/Advancements.java +++ b/src/api/java/dev/compactmods/machines/api/core/Advancements.java @@ -2,7 +2,7 @@ import net.minecraft.resources.ResourceLocation; -public class Advancements { +public abstract class Advancements { public static final ResourceLocation HOW_DID_YOU_GET_HERE = new ResourceLocation(Constants.MOD_ID, "how_did_you_get_here"); public static final ResourceLocation ROOT = new ResourceLocation(Constants.MOD_ID, "root"); public static final ResourceLocation FOUNDATIONS = new ResourceLocation(Constants.MOD_ID, "foundations"); diff --git a/src/api/java/dev/compactmods/machines/api/core/CMCommands.java b/src/api/java/dev/compactmods/machines/api/core/CMCommands.java index 64641e62..ca10c206 100644 --- a/src/api/java/dev/compactmods/machines/api/core/CMCommands.java +++ b/src/api/java/dev/compactmods/machines/api/core/CMCommands.java @@ -2,7 +2,7 @@ import net.minecraft.resources.ResourceLocation; -public class CMCommands { +public abstract class CMCommands { public static final ResourceLocation LEVEL_REGISTERED = new ResourceLocation(Constants.MOD_ID, "level_registered"); public static final ResourceLocation LEVEL_NOT_FOUND = new ResourceLocation(Constants.MOD_ID, "level_not_found"); diff --git a/src/api/java/dev/compactmods/machines/api/core/CMTags.java b/src/api/java/dev/compactmods/machines/api/core/CMTags.java index c18f3cf7..ff1d6db9 100644 --- a/src/api/java/dev/compactmods/machines/api/core/CMTags.java +++ b/src/api/java/dev/compactmods/machines/api/core/CMTags.java @@ -6,7 +6,7 @@ import net.minecraft.tags.TagKey; import net.minecraft.world.item.Item; -public class CMTags { +public abstract class CMTags { public static final TagKey ROOM_UPGRADE_ITEM = TagKey.create(Registry.ITEM_REGISTRY, new ResourceLocation(Constants.MOD_ID, "room_upgrade")); } diff --git a/src/api/java/dev/compactmods/machines/api/core/Constants.java b/src/api/java/dev/compactmods/machines/api/core/Constants.java index 7b901b4c..09b0af61 100644 --- a/src/api/java/dev/compactmods/machines/api/core/Constants.java +++ b/src/api/java/dev/compactmods/machines/api/core/Constants.java @@ -1,12 +1,8 @@ package dev.compactmods.machines.api.core; -import net.minecraft.resources.ResourceLocation; - public abstract class Constants { public static final String MOD_ID = "compactmachines"; - public static final ResourceLocation TUNNEL_ID = new ResourceLocation(MOD_ID, "tunnel"); - public static final ResourceLocation STORAGE_TYPE_REGISTRY = new ResourceLocation(MOD_ID, "storage_types"); public static final ResourceLocation ITEM_TUNNEL_KEY = new ResourceLocation(MOD_ID, "item_tunnel"); diff --git a/src/api/java/dev/compactmods/machines/api/core/JeiInfo.java b/src/api/java/dev/compactmods/machines/api/core/JeiInfo.java index 5c5b73b4..b2032f33 100644 --- a/src/api/java/dev/compactmods/machines/api/core/JeiInfo.java +++ b/src/api/java/dev/compactmods/machines/api/core/JeiInfo.java @@ -2,7 +2,7 @@ import net.minecraft.resources.ResourceLocation; -public class JeiInfo { +public abstract class JeiInfo { public static final ResourceLocation MACHINE = new ResourceLocation(Constants.MOD_ID, "machines"); public static final ResourceLocation SHRINKING_DEVICE = new ResourceLocation(Constants.MOD_ID, "shrinking_device"); diff --git a/src/api/java/dev/compactmods/machines/api/room/IRoomInformation.java b/src/api/java/dev/compactmods/machines/api/room/IRoomInformation.java deleted file mode 100644 index 5c20819e..00000000 --- a/src/api/java/dev/compactmods/machines/api/room/IRoomInformation.java +++ /dev/null @@ -1,17 +0,0 @@ -package dev.compactmods.machines.api.room; - -import dev.onyxstudios.cca.api.v3.component.Component; -import dev.onyxstudios.cca.api.v3.entity.PlayerComponent; -import net.minecraft.server.level.ServerLevel; -import net.minecraft.world.level.ChunkPos; - -import javax.annotation.Nonnull; - -public interface IRoomInformation extends Component { - - @Nonnull - ChunkPos chunk(); - - @Nonnull - ServerLevel level(); -} diff --git a/src/main/java/dev/compactmods/machines/room/RoomSize.java b/src/api/java/dev/compactmods/machines/api/room/RoomSize.java similarity index 97% rename from src/main/java/dev/compactmods/machines/room/RoomSize.java rename to src/api/java/dev/compactmods/machines/api/room/RoomSize.java index 16772869..3d2366d0 100644 --- a/src/main/java/dev/compactmods/machines/room/RoomSize.java +++ b/src/api/java/dev/compactmods/machines/api/room/RoomSize.java @@ -1,4 +1,4 @@ -package dev.compactmods.machines.room; +package dev.compactmods.machines.api.room; import com.mojang.serialization.Codec; import net.minecraft.util.StringRepresentable; diff --git a/src/api/java/dev/compactmods/machines/api/tunnels/TunnelDefinition.java b/src/api/java/dev/compactmods/machines/api/tunnels/TunnelDefinition.java index 8a4887de..06acee32 100644 --- a/src/api/java/dev/compactmods/machines/api/tunnels/TunnelDefinition.java +++ b/src/api/java/dev/compactmods/machines/api/tunnels/TunnelDefinition.java @@ -1,5 +1,8 @@ package dev.compactmods.machines.api.tunnels; +import dev.compactmods.machines.api.core.Constants; +import net.minecraft.resources.ResourceLocation; + public interface TunnelDefinition { /** * The color of a non-indicator (the same color as the wall) @@ -17,6 +20,7 @@ public interface TunnelDefinition { * a machine room. */ int EXPORT_COLOR = 0xffe6a709; + ResourceLocation TUNNEL_ID = new ResourceLocation(Constants.MOD_ID, "tunnel"); /** * The central ring color of the tunnel. Shown in the tunnel item and on blocks. diff --git a/src/api/java/dev/compactmods/machines/api/tunnels/recipe/TunnelRecipeBuilder.java b/src/api/java/dev/compactmods/machines/api/tunnels/recipe/TunnelRecipeBuilder.java index bd220902..c84fd087 100644 --- a/src/api/java/dev/compactmods/machines/api/tunnels/recipe/TunnelRecipeBuilder.java +++ b/src/api/java/dev/compactmods/machines/api/tunnels/recipe/TunnelRecipeBuilder.java @@ -3,7 +3,6 @@ import com.google.common.collect.Lists; import com.google.gson.JsonArray; import com.google.gson.JsonObject; -import dev.compactmods.machines.api.core.Constants; import dev.compactmods.machines.api.tunnels.TunnelDefinition; import io.github.fabricators_of_create.porting_lib.util.RegistryObject; import net.minecraft.advancements.Advancement; @@ -121,7 +120,7 @@ public void serializeRecipeData(JsonObject output) { output.add("ingredients", jsonarray); JsonObject result = new JsonObject(); - result.addProperty("item", Constants.TUNNEL_ID.toString()); + result.addProperty("item", TunnelDefinition.TUNNEL_ID.toString()); if (this.count > 1) { result.addProperty("count", this.count); } diff --git a/src/api/java/dev/compactmods/machines/api/upgrade/RoomUpgradeHelper.java b/src/api/java/dev/compactmods/machines/api/upgrade/RoomUpgradeHelper.java index badbab79..c76115f0 100644 --- a/src/api/java/dev/compactmods/machines/api/upgrade/RoomUpgradeHelper.java +++ b/src/api/java/dev/compactmods/machines/api/upgrade/RoomUpgradeHelper.java @@ -9,7 +9,7 @@ public abstract class RoomUpgradeHelper { public static final String NBT_UPGRADE_NODE = "upgrade_info"; - public static final String NBT_UPDATE_ID = "key"; + public static final String NBT_UPGRADE_ID = "key"; public static Optional getTypeFrom(@NotNull ItemStack stack) { if(!stack.hasTag()) return Optional.empty(); @@ -17,9 +17,9 @@ public static Optional getTypeFrom(@NotNull ItemStack stack) { if(!tag.contains(NBT_UPGRADE_NODE)) return Optional.empty(); final var upg = tag.getCompound(NBT_UPGRADE_NODE); - if(!upg.contains(NBT_UPDATE_ID)) return Optional.empty(); + if(!upg.contains(NBT_UPGRADE_ID)) return Optional.empty(); - final var upg2 = new ResourceLocation(upg.getString(NBT_UPDATE_ID)); + final var upg2 = new ResourceLocation(upg.getString(NBT_UPGRADE_ID)); return Optional.of(upg2); } } diff --git a/src/datagen/java/dev/compactmods/machines/datagen/BlockLootGenerator.java b/src/datagen/java/dev/compactmods/machines/datagen/BlockLootGenerator.java new file mode 100644 index 00000000..53118ec3 --- /dev/null +++ b/src/datagen/java/dev/compactmods/machines/datagen/BlockLootGenerator.java @@ -0,0 +1,94 @@ +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.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; + +public class BlockLootGenerator extends LootTableProvider { + + public BlockLootGenerator(DataGenerator dataGeneratorIn) { + super(dataGeneratorIn); + } + + @Override + protected List>>, LootContextParamSet>> getTables() { + return ImmutableList.of(Pair.of(Blocks::new, LootContextParamSets.BLOCK)); + } + + @Override + protected void validate(Map map, @Nonnull ValidationContext val) { + map.forEach((name, table) -> LootTables.validate(val, name, table)); + } + + 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())); + + this.add(block.get(), LootTable.lootTable().withPool(builder)); + } + + @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() + ); + } + } +} diff --git a/src/main/java/dev/compactmods/machines/CompactMachines.java b/src/main/java/dev/compactmods/machines/CompactMachines.java index be3a9b25..a7fb3145 100644 --- a/src/main/java/dev/compactmods/machines/CompactMachines.java +++ b/src/main/java/dev/compactmods/machines/CompactMachines.java @@ -1,18 +1,20 @@ package dev.compactmods.machines; -import dev.compactmods.machines.api.tunnels.capability.CapabilityTunnel; -import dev.compactmods.machines.command.CompactMachinesCommands; +import dev.compactmods.machines.api.core.Constants; +import dev.compactmods.machines.command.Commands; import dev.compactmods.machines.config.CommonConfig; import dev.compactmods.machines.config.EnableVanillaRecipesConfigCondition; import dev.compactmods.machines.config.ServerConfig; -import dev.compactmods.machines.core.*; -import dev.compactmods.machines.graph.CMGraphRegistration; -import dev.compactmods.machines.machine.CompactMachineBlockEntity; -import dev.compactmods.machines.room.RoomEventHandler; -import dev.compactmods.machines.room.data.CompactMachinesLootFunctions; -import dev.compactmods.machines.room.network.RoomNetworkHandler; -import dev.compactmods.machines.tunnel.TunnelWallEntity; +import dev.compactmods.machines.core.Registries; +import dev.compactmods.machines.core.UIRegistration; +import dev.compactmods.machines.dimension.Dimension; +import dev.compactmods.machines.graph.Graph; +import dev.compactmods.machines.machine.Machines; +import dev.compactmods.machines.room.data.LootFunctions; +import dev.compactmods.machines.shrinking.Shrinking; +import dev.compactmods.machines.tunnel.Tunnels; import dev.compactmods.machines.upgrade.MachineRoomUpgrades; +import dev.compactmods.machines.wall.Walls; import io.github.fabricators_of_create.porting_lib.util.LazyItemGroup; import net.fabricmc.api.EnvType; import net.fabricmc.api.ModInitializer; @@ -36,7 +38,11 @@ import javax.annotation.Nonnull; public class CompactMachines implements ModInitializer { - public static final String MOD_ID = "compactmachines"; + /** + * @deprecated Switch usages to use api Constants in 1.20, eliminate it here + */ + @Deprecated(forRemoval = true) + public static final String MOD_ID = Constants.MOD_ID; public static final Logger LOGGER = LogManager.getLogger(); public static final Marker CONN_MARKER = MarkerManager.getMarker("cm_connections"); @@ -45,34 +51,40 @@ public class CompactMachines implements ModInitializer { @Override public @Nonnull ItemStack makeIcon() { - return new ItemStack(Registration.MACHINE_BLOCK_ITEM_NORMAL.get()); + return new ItemStack(Machines.MACHINE_BLOCK_ITEM_NORMAL.get()); } }; - // public static CMRoomChunkloadingManager CHUNKLOAD_MANAGER; - @Override public void onInitialize() { - // Register blocks and items - UIRegistration.init(); - Tunnels.init(); - CMGraphRegistration.init(); - MachineRoomUpgrades.init(); - CompactMachinesCommands.init(); - CompactMachinesLootFunctions.init(); - - ModLoadingContext.registerConfig(MOD_ID, ModConfig.Type.COMMON, CommonConfig.CONFIG); - ModLoadingContext.registerConfig(MOD_ID, ModConfig.Type.SERVER, ServerConfig.CONFIG); - ModConfigEvent.LOADING.register(CommonConfig::onLoaded); - ServerWorldEvents.LOAD.register(ServerEventHandler::onWorldLoaded); - ServerEntityWorldChangeEvents.AFTER_PLAYER_CHANGE_WORLD.register(ServerEventHandler::onPlayerDimChange); - ServerPlayConnectionEvents.JOIN.register(ServerEventHandler::onPlayerLogin); - CommonEventHandler.init(); - RoomEventHandler.init(); - ModBusEvents.setup(); + Registries.setup(); + preparePackages(); + doRegistration(); + + // Configuration + ModLoadingContext mlCtx = ModLoadingContext.get(); + mlCtx.registerConfig(ModConfig.Type.COMMON, CommonConfig.CONFIG); + mlCtx.registerConfig(ModConfig.Type.SERVER, ServerConfig.CONFIG); EnableVanillaRecipesConfigCondition.register(); +// UIRegistration.init(); TODO: PORT +// Tunnels.init(); +// CMGraphRegistration.init(); +// MachineRoomUpgrades.init(); +// CompactMachinesCommands.init(); +// CompactMachinesLootFunctions.init(); +// +// ModLoadingContext.registerConfig(MOD_ID, ModConfig.Type.COMMON, CommonConfig.CONFIG); +// ModLoadingContext.registerConfig(MOD_ID, ModConfig.Type.SERVER, ServerConfig.CONFIG); +// ModConfigEvent.LOADING.register(CommonConfig::onLoaded); +// ServerWorldEvents.LOAD.register(ServerEventHandler::onWorldLoaded); +// ServerEntityWorldChangeEvents.AFTER_PLAYER_CHANGE_WORLD.register(ServerEventHandler::onPlayerDimChange); +// ServerPlayConnectionEvents.JOIN.register(ServerEventHandler::onPlayerLogin); +// CommonEventHandler.init(); +// RoomEventHandler.init(); +// ModBusEvents.setup(); + CompactMachinesNet.CHANNEL.initServerListener(); RoomNetworkHandler.CHANNEL.initServerListener(); if (FabricLoader.getInstance().getEnvironmentType() == EnvType.CLIENT) { @@ -104,4 +116,37 @@ public void onInitialize() { return null; }, Registration.MACHINE_TILE_ENTITY.get(), Tunnels.TUNNEL_BLOCK_ENTITY.get()); } + + /** + * Sets up the deferred registration for usage in package/module setup. + */ + private static void doRegistration() { + var bus = FMLJavaModLoadingContext.get().getModEventBus(); + + Registries.BLOCKS.register(bus); + Registries.ITEMS.register(bus); + Registries.BLOCK_ENTITIES.register(bus); + Registries.TUNNEL_DEFINITIONS.register(bus); + Registries.CONTAINERS.register(bus); + Registries.UPGRADES.register(bus); + Registries.NODE_TYPES.register(bus); + Registries.EDGE_TYPES.register(bus); + Registries.COMMAND_ARGUMENT_TYPES.register(bus); + Registries.LOOT_FUNCS.register(bus); + } + + private static void preparePackages() { + // Package initialization here, this kickstarts the rest of the DR code (classloading) + Machines.prepare(); + Walls.prepare(); + Tunnels.prepare(); + Shrinking.prepare(); + + UIRegistration.prepare(); + Dimension.prepare(); + MachineRoomUpgrades.prepare(); + Graph.prepare(); + Commands.prepare(); + LootFunctions.prepare(); + } } diff --git a/src/main/java/dev/compactmods/machines/advancement/AdvancementTriggers.java b/src/main/java/dev/compactmods/machines/advancement/AdvancementTriggers.java index 8423cede..1384fa36 100644 --- a/src/main/java/dev/compactmods/machines/advancement/AdvancementTriggers.java +++ b/src/main/java/dev/compactmods/machines/advancement/AdvancementTriggers.java @@ -4,7 +4,7 @@ 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.room.RoomSize; +import dev.compactmods.machines.api.room.RoomSize; import net.minecraft.advancements.CriteriaTriggers; public class AdvancementTriggers { diff --git a/src/main/java/dev/compactmods/machines/client/ClientEventHandler.java b/src/main/java/dev/compactmods/machines/client/ClientEventHandler.java index 7710aa3c..e32ae0c9 100644 --- a/src/main/java/dev/compactmods/machines/client/ClientEventHandler.java +++ b/src/main/java/dev/compactmods/machines/client/ClientEventHandler.java @@ -1,7 +1,7 @@ package dev.compactmods.machines.client; import dev.compactmods.machines.client.shader.CM4Shaders; -import dev.compactmods.machines.core.Tunnels; +import dev.compactmods.machines.tunnel.Tunnels; import dev.compactmods.machines.core.UIRegistration; import dev.compactmods.machines.room.client.MachineRoomScreen; import dev.compactmods.machines.tunnel.client.TunnelColors; @@ -15,11 +15,13 @@ public class ClientEventHandler implements ClientModInitializer { - private static void onItemColors() { + @SubscribeEvent + public static void onItemColors() { ColorProviderRegistry.ITEM.register(new TunnelItemColor(), Tunnels.ITEM_TUNNEL.get()); } - private static void onBlockColors() { + @SubscribeEvent + public static void onBlockColors() { ColorProviderRegistry.BLOCK.register(new TunnelColors(), Tunnels.BLOCK_TUNNEL_WALL.get()); } 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 4bc51cab..1281e833 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 @@ -2,11 +2,9 @@ import com.mojang.blaze3d.vertex.PoseStack; import dev.compactmods.machines.core.CompactMachinesNet; -import dev.compactmods.machines.core.Registration; import dev.compactmods.machines.room.client.MachineRoomScreen; import dev.compactmods.machines.room.network.PlayerRequestedTeleportPacket; -import io.github.fabricators_of_create.porting_lib.mixin.client.accessor.ScreenAccessor; -import io.github.fabricators_of_create.porting_lib.util.client.ExtendedButton; +import dev.compactmods.machines.shrinking.Shrinking; import net.minecraft.client.gui.components.Button; import net.minecraft.network.chat.Component; import net.minecraft.world.item.ItemStack; @@ -26,7 +24,7 @@ public void render(@NotNull PoseStack pose, int mouseX, int mouseY, float partia super.render(pose, mouseX, mouseY, partialTicks); ((ScreenAccessor)this.parent).port_lib$getMinecraft().getItemRenderer().renderAndDecorateItem( - new ItemStack(Registration.PERSONAL_SHRINKING_DEVICE.get()), + new ItemStack(Shrinking.PERSONAL_SHRINKING_DEVICE.get()), x + 2, y + 2, 40); } diff --git a/src/main/java/dev/compactmods/machines/command/CompactMachinesCommands.java b/src/main/java/dev/compactmods/machines/command/Commands.java similarity index 82% rename from src/main/java/dev/compactmods/machines/command/CompactMachinesCommands.java rename to src/main/java/dev/compactmods/machines/command/Commands.java index 34f62e80..145384e5 100644 --- a/src/main/java/dev/compactmods/machines/command/CompactMachinesCommands.java +++ b/src/main/java/dev/compactmods/machines/command/Commands.java @@ -7,31 +7,26 @@ import dev.compactmods.machines.command.argument.RoomPositionArgument; import dev.compactmods.machines.command.data.CMDataSubcommand; import dev.compactmods.machines.command.subcommand.*; +import dev.compactmods.machines.core.Registries; import dev.compactmods.machines.upgrade.command.CMUpgradeRoomCommand; import dev.compactmods.machines.upgrade.command.RoomUpgradeArgument; import io.github.fabricators_of_create.porting_lib.util.LazyRegistrar; import net.fabricmc.fabric.api.command.v2.CommandRegistrationCallback; import net.minecraft.commands.CommandBuildContext; import net.minecraft.commands.CommandSourceStack; -import net.minecraft.commands.Commands; -import net.minecraft.commands.synchronization.ArgumentTypeInfo; import net.minecraft.commands.synchronization.ArgumentTypeInfos; import net.minecraft.commands.synchronization.SingletonArgumentInfo; -import net.minecraft.core.Registry; -import net.minecraft.resources.ResourceLocation; -public class CompactMachinesCommands { +public class Commands { // TODO: /cm create // TODO: /cm spawn set - private static final LazyRegistrar> COMMAND_ARGUMENT_TYPES = - LazyRegistrar.create(Registry.COMMAND_ARGUMENT_TYPE, CompactMachines.MOD_ID); static { - COMMAND_ARGUMENT_TYPES.register("room_pos", + Registries.COMMAND_ARGUMENT_TYPES.register("room_pos", () -> registerByClass(RoomPositionArgument.class, SingletonArgumentInfo.contextFree(RoomPositionArgument::room))); - COMMAND_ARGUMENT_TYPES.register("room_upgrade", + Registries.COMMAND_ARGUMENT_TYPES.register("room_upgrade", () -> registerByClass(RoomUpgradeArgument.class, SingletonArgumentInfo.contextFree(RoomUpgradeArgument::upgrade))); } @@ -42,7 +37,6 @@ public static , T extends ArgumentTypeInfo.Template public static void init() { - COMMAND_ARGUMENT_TYPES.register(); CommandRegistrationCallback.EVENT.register(CompactMachinesCommands::onCommandsRegister); } @@ -61,4 +55,8 @@ public static void onCommandsRegister(CommandDispatcher disp dispatcher.register(root); } + + public static void prepare() { + + } } diff --git a/src/main/java/dev/compactmods/machines/command/data/CMRoomDataExportCommand.java b/src/main/java/dev/compactmods/machines/command/data/CMRoomDataExportCommand.java index 64bee322..e0b7a86d 100644 --- a/src/main/java/dev/compactmods/machines/command/data/CMRoomDataExportCommand.java +++ b/src/main/java/dev/compactmods/machines/command/data/CMRoomDataExportCommand.java @@ -4,7 +4,7 @@ import com.mojang.brigadier.context.CommandContext; import dev.compactmods.machines.CompactMachines; import dev.compactmods.machines.api.core.CMCommands; -import dev.compactmods.machines.core.Registration; +import dev.compactmods.machines.dimension.Dimension; import dev.compactmods.machines.i18n.TranslationUtil; import dev.compactmods.machines.room.data.CompactRoomData; import net.minecraft.commands.CommandSourceStack; @@ -29,7 +29,7 @@ public class CMRoomDataExportCommand { private static int execAll(CommandContext ctx) { var src = ctx.getSource(); var serv = src.getServer(); - var compact = serv.getLevel(Registration.COMPACT_DIMENSION); + var compact = serv.getLevel(Dimension.COMPACT_DIMENSION); final CompactRoomData rooms = CompactRoomData.get(compact); diff --git a/src/main/java/dev/compactmods/machines/command/data/CMTunnelDataExportCommand.java b/src/main/java/dev/compactmods/machines/command/data/CMTunnelDataExportCommand.java index 274f6981..218eba6b 100644 --- a/src/main/java/dev/compactmods/machines/command/data/CMTunnelDataExportCommand.java +++ b/src/main/java/dev/compactmods/machines/command/data/CMTunnelDataExportCommand.java @@ -6,8 +6,8 @@ import dev.compactmods.machines.CompactMachines; import dev.compactmods.machines.api.core.CMCommands; import dev.compactmods.machines.command.argument.RoomPositionArgument; -import dev.compactmods.machines.core.MissingDimensionException; -import dev.compactmods.machines.core.Registration; +import dev.compactmods.machines.dimension.MissingDimensionException; +import dev.compactmods.machines.dimension.Dimension; import dev.compactmods.machines.i18n.TranslationUtil; import dev.compactmods.machines.room.data.CompactRoomData; import dev.compactmods.machines.tunnel.graph.TunnelConnectionGraph; @@ -39,7 +39,7 @@ public class CMTunnelDataExportCommand { private static int execAll(CommandContext ctx) { var src = ctx.getSource(); var serv = src.getServer(); - var compact = serv.getLevel(Registration.COMPACT_DIMENSION); + var compact = serv.getLevel(Dimension.COMPACT_DIMENSION); final CompactRoomData rooms = CompactRoomData.get(compact); @@ -77,7 +77,7 @@ public static int exec(CommandContext ctx) throws CommandSyn ServerPlayer player = src.getPlayerOrException(); final var room = RoomPositionArgument.get(ctx, "room"); - final var compactDim = src.getServer().getLevel(Registration.COMPACT_DIMENSION); + final var compactDim = src.getServer().getLevel(Dimension.COMPACT_DIMENSION); var outdir = src.getServer().getFile(CompactMachines.MOD_ID); var out = outdir.toPath() diff --git a/src/main/java/dev/compactmods/machines/command/subcommand/CMEjectSubcommand.java b/src/main/java/dev/compactmods/machines/command/subcommand/CMEjectSubcommand.java index af93b045..481efce5 100644 --- a/src/main/java/dev/compactmods/machines/command/subcommand/CMEjectSubcommand.java +++ b/src/main/java/dev/compactmods/machines/command/subcommand/CMEjectSubcommand.java @@ -4,7 +4,7 @@ import com.mojang.brigadier.builder.ArgumentBuilder; import com.mojang.brigadier.context.CommandContext; import com.mojang.brigadier.exceptions.CommandSyntaxException; -import dev.compactmods.machines.core.Capabilities; +import dev.compactmods.machines.room.RoomCapabilities; import dev.compactmods.machines.api.room.IRoomHistory; import dev.compactmods.machines.util.PlayerUtil; import net.minecraft.commands.CommandSourceStack; @@ -24,7 +24,7 @@ public class CMEjectSubcommand { private static int execSpecificPlayer(CommandContext ctx) throws CommandSyntaxException { Collection ent = EntityArgument.getPlayers(ctx, "player"); ent.forEach(player -> { - Capabilities.ROOM_HISTORY.maybeGet(player).ifPresent(historyProvider -> historyProvider.getHistory().clear()); + RoomCapabilities.ROOM_HISTORY.maybeGet(player).ifPresent(historyProvider -> historyProvider.getHistory().clear()); PlayerUtil.teleportPlayerToRespawnOrOverworld(ctx.getSource().getServer(), player); }); @@ -34,7 +34,7 @@ private static int execSpecificPlayer(CommandContext ctx) th private static int execExecutingPlayer(CommandContext ctx) throws CommandSyntaxException { final ServerPlayer player = ctx.getSource().getPlayerOrException(); - Capabilities.ROOM_HISTORY.maybeGet(player).ifPresent(historyProvider -> historyProvider.getHistory().clear()); + RoomCapabilities.ROOM_HISTORY.maybeGet(player).ifPresent(historyProvider -> historyProvider.getHistory().clear()); PlayerUtil.teleportPlayerToRespawnOrOverworld(ctx.getSource().getServer(), player); return 0; 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 980a34d7..4e6cbe82 100644 --- a/src/main/java/dev/compactmods/machines/command/subcommand/CMGiveMachineSubcommand.java +++ b/src/main/java/dev/compactmods/machines/command/subcommand/CMGiveMachineSubcommand.java @@ -10,7 +10,7 @@ import dev.compactmods.machines.config.ServerConfig; import dev.compactmods.machines.i18n.TranslationUtil; import dev.compactmods.machines.machine.CompactMachineItem; -import dev.compactmods.machines.room.RoomSize; +import dev.compactmods.machines.api.room.RoomSize; import dev.compactmods.machines.room.Rooms; import dev.compactmods.machines.room.exceptions.NonexistentRoomException; import net.minecraft.commands.CommandSourceStack; 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 f227ce92..57e188bb 100644 --- a/src/main/java/dev/compactmods/machines/command/subcommand/CMReaddDimensionSubcommand.java +++ b/src/main/java/dev/compactmods/machines/command/subcommand/CMReaddDimensionSubcommand.java @@ -4,7 +4,7 @@ import com.mojang.brigadier.context.CommandContext; import com.mojang.brigadier.exceptions.CommandSyntaxException; import dev.compactmods.machines.api.core.CMCommands; -import dev.compactmods.machines.core.Registration; +import dev.compactmods.machines.dimension.Dimension; import dev.compactmods.machines.i18n.TranslationUtil; import dev.compactmods.machines.util.DimensionUtil; import net.minecraft.ChatFormatting; @@ -22,7 +22,7 @@ private static int exec(CommandContext ctx) throws CommandSy var src = ctx.getSource(); var serv = src.getServer(); - var compactLevel = serv.getLevel(Registration.COMPACT_DIMENSION); + var compactLevel = serv.getLevel(Dimension.COMPACT_DIMENSION); if (compactLevel == null) { src.sendSuccess(TranslationUtil.command(CMCommands.LEVEL_NOT_FOUND).withStyle(ChatFormatting.RED), false); diff --git a/src/main/java/dev/compactmods/machines/command/subcommand/CMRebindSubcommand.java b/src/main/java/dev/compactmods/machines/command/subcommand/CMRebindSubcommand.java index d3796e58..4a227397 100644 --- a/src/main/java/dev/compactmods/machines/command/subcommand/CMRebindSubcommand.java +++ b/src/main/java/dev/compactmods/machines/command/subcommand/CMRebindSubcommand.java @@ -7,7 +7,7 @@ import dev.compactmods.machines.api.core.CMCommands; import dev.compactmods.machines.command.argument.RoomPositionArgument; import dev.compactmods.machines.config.ServerConfig; -import dev.compactmods.machines.core.Registration; +import dev.compactmods.machines.dimension.Dimension; import dev.compactmods.machines.i18n.TranslationUtil; import dev.compactmods.machines.machine.CompactMachineBlockEntity; import dev.compactmods.machines.tunnel.graph.TunnelConnectionGraph; @@ -32,7 +32,7 @@ public static LiteralArgumentBuilder make() { private static int doRebind(CommandContext ctx) throws CommandSyntaxException { final var server = ctx.getSource().getServer(); final var level = ctx.getSource().getLevel(); - final var compactDim = server.getLevel(Registration.COMPACT_DIMENSION); + final var compactDim = server.getLevel(Dimension.COMPACT_DIMENSION); if(compactDim == null) { throw new CommandRuntimeException(TranslationUtil.command(CMCommands.LEVEL_NOT_FOUND)); } 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 99933cf9..ad62f10b 100644 --- a/src/main/java/dev/compactmods/machines/command/subcommand/CMRoomsSubcommand.java +++ b/src/main/java/dev/compactmods/machines/command/subcommand/CMRoomsSubcommand.java @@ -6,7 +6,7 @@ import dev.compactmods.machines.CompactMachines; import dev.compactmods.machines.api.core.CMCommands; import dev.compactmods.machines.api.core.Messages; -import dev.compactmods.machines.core.Registration; +import dev.compactmods.machines.dimension.Dimension; import dev.compactmods.machines.i18n.TranslationUtil; import dev.compactmods.machines.machine.CompactMachineBlock; import dev.compactmods.machines.machine.CompactMachineBlockEntity; @@ -69,7 +69,7 @@ private static int findByContainingPlayer(CommandContext ctx final var playerChunk = player.chunkPosition(); final var playerLevel = player.getLevel(); - if (!playerLevel.dimension().equals(Registration.COMPACT_DIMENSION)) { + if (!playerLevel.dimension().equals(Dimension.COMPACT_DIMENSION)) { throw new CommandRuntimeException(TranslationUtil.command(CMCommands.WRONG_DIMENSION)); } @@ -91,7 +91,7 @@ private static int findByContainingPlayer(CommandContext ctx public static int findByOwner(CommandContext ctx) throws CommandSyntaxException { final var owner = EntityArgument.getPlayer(ctx, "owner"); final var server = ctx.getSource().getServer(); - final var compactDim = server.getLevel(Registration.COMPACT_DIMENSION); + final var compactDim = server.getLevel(Dimension.COMPACT_DIMENSION); final var rooms = CompactRoomData.get(compactDim); rooms.streamRooms() 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 c8334869..d3c2aeac 100644 --- a/src/main/java/dev/compactmods/machines/command/subcommand/CMSummarySubcommand.java +++ b/src/main/java/dev/compactmods/machines/command/subcommand/CMSummarySubcommand.java @@ -3,7 +3,7 @@ import com.mojang.brigadier.builder.ArgumentBuilder; import com.mojang.brigadier.context.CommandContext; import dev.compactmods.machines.api.core.CMCommands; -import dev.compactmods.machines.core.Registration; +import dev.compactmods.machines.dimension.Dimension; import dev.compactmods.machines.machine.graph.DimensionMachineGraph; import dev.compactmods.machines.room.data.CompactRoomData; import dev.compactmods.machines.i18n.TranslationUtil; @@ -25,7 +25,7 @@ private static int exec(CommandContext ctx) { var src = ctx.getSource(); var serv = src.getServer(); - var compactLevel = serv.getLevel(Registration.COMPACT_DIMENSION); + var compactLevel = serv.getLevel(Dimension.COMPACT_DIMENSION); if (compactLevel != null) { src.sendSuccess(TranslationUtil.command(CMCommands.LEVEL_REGISTERED).withStyle(ChatFormatting.DARK_GREEN), false); } else { diff --git a/src/main/java/dev/compactmods/machines/command/subcommand/CMUnbindSubcommand.java b/src/main/java/dev/compactmods/machines/command/subcommand/CMUnbindSubcommand.java index 10c404cc..9295f90b 100644 --- a/src/main/java/dev/compactmods/machines/command/subcommand/CMUnbindSubcommand.java +++ b/src/main/java/dev/compactmods/machines/command/subcommand/CMUnbindSubcommand.java @@ -6,7 +6,7 @@ import dev.compactmods.machines.CompactMachines; import dev.compactmods.machines.api.core.CMCommands; import dev.compactmods.machines.config.ServerConfig; -import dev.compactmods.machines.core.Registration; +import dev.compactmods.machines.dimension.Dimension; import dev.compactmods.machines.i18n.TranslationUtil; import dev.compactmods.machines.machine.CompactMachineBlockEntity; import dev.compactmods.machines.tunnel.graph.TunnelConnectionGraph; @@ -30,7 +30,7 @@ public static LiteralArgumentBuilder make() { private static int doUnbind(CommandContext ctx) throws CommandSyntaxException { final var server = ctx.getSource().getServer(); final var level = ctx.getSource().getLevel(); - final var compactDim = server.getLevel(Registration.COMPACT_DIMENSION); + final var compactDim = server.getLevel(Dimension.COMPACT_DIMENSION); if (compactDim == null) { throw new CommandRuntimeException(TranslationUtil.command(CMCommands.LEVEL_NOT_FOUND)); } diff --git a/src/main/java/dev/compactmods/machines/compat/carryon/CarryOnCompat.java b/src/main/java/dev/compactmods/machines/compat/carryon/CarryOnCompat.java index 4c45d106..7ecc37cd 100644 --- a/src/main/java/dev/compactmods/machines/compat/carryon/CarryOnCompat.java +++ b/src/main/java/dev/compactmods/machines/compat/carryon/CarryOnCompat.java @@ -1,7 +1,7 @@ package dev.compactmods.machines.compat.carryon; import dev.compactmods.machines.machine.CompactMachineBlock; -import dev.compactmods.machines.room.RoomSize; +import dev.compactmods.machines.api.room.RoomSize; import net.minecraft.core.Registry; public class CarryOnCompat { diff --git a/src/main/java/dev/compactmods/machines/compat/jei/CompactMachinesJeiPlugin.java b/src/main/java/dev/compactmods/machines/compat/jei/CompactMachinesJeiPlugin.java index 93470393..2fb71158 100644 --- a/src/main/java/dev/compactmods/machines/compat/jei/CompactMachinesJeiPlugin.java +++ b/src/main/java/dev/compactmods/machines/compat/jei/CompactMachinesJeiPlugin.java @@ -2,11 +2,11 @@ import dev.compactmods.machines.CompactMachines; import dev.compactmods.machines.api.core.JeiInfo; -import dev.compactmods.machines.core.Registration; -import dev.compactmods.machines.core.Tunnels; +import dev.compactmods.machines.shrinking.Shrinking; +import dev.compactmods.machines.tunnel.Tunnels; import dev.compactmods.machines.i18n.TranslationUtil; import dev.compactmods.machines.machine.CompactMachineItem; -import dev.compactmods.machines.room.RoomSize; +import dev.compactmods.machines.api.room.RoomSize; import mezz.jei.api.IModPlugin; import mezz.jei.api.JeiPlugin; import mezz.jei.api.constants.VanillaTypes; @@ -35,7 +35,7 @@ public void registerRecipes(IRecipeRegistration registration) { registration.addIngredientInfo( - new ItemStack(Registration.PERSONAL_SHRINKING_DEVICE.get()), + new ItemStack(Shrinking.PERSONAL_SHRINKING_DEVICE.get()), VanillaTypes.ITEM_STACK, TranslationUtil.jeiInfo(JeiInfo.SHRINKING_DEVICE)); } diff --git a/src/main/java/dev/compactmods/machines/compat/theoneprobe/providers/CompactMachineProvider.java b/src/main/java/dev/compactmods/machines/compat/theoneprobe/providers/CompactMachineProvider.java index 7e399531..5746c80e 100644 --- a/src/main/java/dev/compactmods/machines/compat/theoneprobe/providers/CompactMachineProvider.java +++ b/src/main/java/dev/compactmods/machines/compat/theoneprobe/providers/CompactMachineProvider.java @@ -3,7 +3,7 @@ import com.mojang.authlib.GameProfile; import dev.compactmods.machines.CompactMachines; import dev.compactmods.machines.api.core.Tooltips; -import dev.compactmods.machines.core.Registration; +import dev.compactmods.machines.dimension.Dimension; import dev.compactmods.machines.i18n.TranslationUtil; import dev.compactmods.machines.machine.CompactMachineBlock; import dev.compactmods.machines.machine.CompactMachineBlockEntity; @@ -39,7 +39,7 @@ public void addProbeInfo(ProbeMode probeMode, IProbeInfo info, Player player, Le if (server == null) return; - final var compactDim = server.getLevel(Registration.COMPACT_DIMENSION); + final var compactDim = server.getLevel(Dimension.COMPACT_DIMENSION); final var te = level.getBlockEntity(hitData.getPos()); diff --git a/src/main/java/dev/compactmods/machines/compat/theoneprobe/providers/TunnelProvider.java b/src/main/java/dev/compactmods/machines/compat/theoneprobe/providers/TunnelProvider.java index 6e9e24b0..9cb28740 100644 --- a/src/main/java/dev/compactmods/machines/compat/theoneprobe/providers/TunnelProvider.java +++ b/src/main/java/dev/compactmods/machines/compat/theoneprobe/providers/TunnelProvider.java @@ -2,7 +2,7 @@ import dev.compactmods.machines.CompactMachines; import dev.compactmods.machines.api.tunnels.TunnelDefinition; -import dev.compactmods.machines.core.Tunnels; +import dev.compactmods.machines.tunnel.Tunnels; import dev.compactmods.machines.tunnel.TunnelWallBlock; import dev.compactmods.machines.tunnel.TunnelWallEntity; import mcjty.theoneprobe.api.*; diff --git a/src/main/java/dev/compactmods/machines/config/ServerConfig.java b/src/main/java/dev/compactmods/machines/config/ServerConfig.java index f995eb26..8623d19c 100644 --- a/src/main/java/dev/compactmods/machines/config/ServerConfig.java +++ b/src/main/java/dev/compactmods/machines/config/ServerConfig.java @@ -1,7 +1,7 @@ package dev.compactmods.machines.config; import com.electronwill.nightconfig.core.EnumGetMethod; -import dev.compactmods.machines.core.EnumMachinePlayersBreakHandling; +import dev.compactmods.machines.machine.EnumMachinePlayersBreakHandling; import net.minecraft.commands.Commands; import net.minecraftforge.common.ForgeConfigSpec; diff --git a/src/main/java/dev/compactmods/machines/core/Registration.java b/src/main/java/dev/compactmods/machines/core/Registration.java deleted file mode 100644 index d8ab70e1..00000000 --- a/src/main/java/dev/compactmods/machines/core/Registration.java +++ /dev/null @@ -1,140 +0,0 @@ -package dev.compactmods.machines.core; - -import dev.compactmods.machines.CompactMachines; -import dev.compactmods.machines.item.PersonalShrinkingDevice; -import dev.compactmods.machines.machine.CompactMachineBlock; -import dev.compactmods.machines.machine.CompactMachineBlockEntity; -import dev.compactmods.machines.machine.CompactMachineItem; -import dev.compactmods.machines.room.ItemBlockWall; -import dev.compactmods.machines.room.RoomSize; -import dev.compactmods.machines.wall.BreakableWallBlock; -import dev.compactmods.machines.wall.SolidWallBlock; -import io.github.fabricators_of_create.porting_lib.util.LazyRegistrar; -import io.github.fabricators_of_create.porting_lib.util.RegistryObject; -import net.minecraft.core.Registry; -import net.minecraft.resources.ResourceKey; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.item.Item; -import net.minecraft.world.level.Level; -import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.SoundType; -import net.minecraft.world.level.block.entity.BlockEntityType; -import net.minecraft.world.level.block.state.BlockBehaviour; -import net.minecraft.world.level.dimension.DimensionType; -import net.minecraft.world.level.material.Material; -import net.minecraft.world.level.material.MaterialColor; - -import java.util.function.Supplier; - -import static dev.compactmods.machines.CompactMachines.MOD_ID; - -public class Registration { - - // ================================================================================================================ - // REGISTRIES - // ================================================================================================================ - public static final LazyRegistrar BLOCKS = LazyRegistrar.create(Registry.BLOCK, MOD_ID); - public static final LazyRegistrar ITEMS = LazyRegistrar.create(Registry.ITEM, MOD_ID); - public static final LazyRegistrar> BLOCK_ENTITIES = LazyRegistrar.create(Registry.BLOCK_ENTITY_TYPE, MOD_ID); - - - // ================================================================================================================ - // PROPERTIES - // ================================================================================================================ - static final BlockBehaviour.Properties MACHINE_BLOCK_PROPS = BlockBehaviour.Properties - .of(Material.METAL) - .strength(8.0F, 20.0F) - .requiresCorrectToolForDrops(); - - static final Supplier BASIC_ITEM_PROPS = () -> new Item.Properties() - .tab(CompactMachines.COMPACT_MACHINES_ITEMS); - - // ================================================================================================================ - // COMPACT MACHINE BLOCKS - // ================================================================================================================ - public static final RegistryObject MACHINE_BLOCK_TINY = BLOCKS.register("machine_tiny", () -> - new CompactMachineBlock(RoomSize.TINY, MACHINE_BLOCK_PROPS)); - - public static final RegistryObject MACHINE_BLOCK_SMALL = BLOCKS.register("machine_small", () -> - new CompactMachineBlock(RoomSize.SMALL, MACHINE_BLOCK_PROPS)); - - public static final RegistryObject MACHINE_BLOCK_NORMAL = BLOCKS.register("machine_normal", () -> - new CompactMachineBlock(RoomSize.NORMAL, MACHINE_BLOCK_PROPS)); - - public static final RegistryObject MACHINE_BLOCK_LARGE = BLOCKS.register("machine_large", () -> - new CompactMachineBlock(RoomSize.LARGE, MACHINE_BLOCK_PROPS)); - - public static final RegistryObject MACHINE_BLOCK_GIANT = BLOCKS.register("machine_giant", () -> - new CompactMachineBlock(RoomSize.GIANT, MACHINE_BLOCK_PROPS)); - - public static final RegistryObject MACHINE_BLOCK_MAXIMUM = BLOCKS.register("machine_maximum", () -> - new CompactMachineBlock(RoomSize.MAXIMUM, MACHINE_BLOCK_PROPS)); - - public static final RegistryObject MACHINE_BLOCK_ITEM_TINY = ITEMS.register("machine_tiny", - () -> new CompactMachineItem(MACHINE_BLOCK_TINY.get(), BASIC_ITEM_PROPS.get())); - - public static final RegistryObject MACHINE_BLOCK_ITEM_SMALL = ITEMS.register("machine_small", - () -> new CompactMachineItem(MACHINE_BLOCK_SMALL.get(), BASIC_ITEM_PROPS.get())); - - public static final RegistryObject MACHINE_BLOCK_ITEM_NORMAL = ITEMS.register("machine_normal", - () -> new CompactMachineItem(MACHINE_BLOCK_NORMAL.get(), BASIC_ITEM_PROPS.get())); - - public static final RegistryObject MACHINE_BLOCK_ITEM_LARGE = ITEMS.register("machine_large", - () -> new CompactMachineItem(MACHINE_BLOCK_LARGE.get(), BASIC_ITEM_PROPS.get())); - - public static final RegistryObject MACHINE_BLOCK_ITEM_GIANT = ITEMS.register("machine_giant", - () -> new CompactMachineItem(MACHINE_BLOCK_GIANT.get(), BASIC_ITEM_PROPS.get())); - - public static final RegistryObject MACHINE_BLOCK_ITEM_MAXIMUM = ITEMS.register("machine_maximum", - () -> new CompactMachineItem(MACHINE_BLOCK_MAXIMUM.get(), BASIC_ITEM_PROPS.get())); - - public static final RegistryObject> MACHINE_TILE_ENTITY = BLOCK_ENTITIES.register("compact_machine", () -> - BlockEntityType.Builder.of(CompactMachineBlockEntity::new, - MACHINE_BLOCK_TINY.get(), MACHINE_BLOCK_SMALL.get(), MACHINE_BLOCK_NORMAL.get(), - MACHINE_BLOCK_LARGE.get(), MACHINE_BLOCK_GIANT.get(), MACHINE_BLOCK_MAXIMUM.get()) - .build(null)); - - - // ================================================================================================================ - // WALLS - // ================================================================================================================ - - public static final RegistryObject BLOCK_SOLID_WALL = BLOCKS.register("solid_wall", () -> - new SolidWallBlock(BlockBehaviour.Properties.of(Material.METAL, MaterialColor.CLAY) - .strength(-1.0F, 3600000.8F) - .sound(SoundType.METAL) - .lightLevel((state) -> 15))); - - public static final RegistryObject BLOCK_BREAKABLE_WALL = BLOCKS.register("wall", () -> - new BreakableWallBlock(BlockBehaviour.Properties.of(Material.METAL) - .strength(3.0f, 128.0f) - .requiresCorrectToolForDrops())); - - public static final RegistryObject PERSONAL_SHRINKING_DEVICE = ITEMS.register("personal_shrinking_device", - () -> new PersonalShrinkingDevice(BASIC_ITEM_PROPS.get() - .stacksTo(1))); - - public static final RegistryObject ITEM_SOLID_WALL = ITEMS.register("solid_wall", () -> - new ItemBlockWall(BLOCK_SOLID_WALL.get(), BASIC_ITEM_PROPS.get())); - - public static final RegistryObject ITEM_BREAKABLE_WALL = ITEMS.register("wall", () -> - new ItemBlockWall(BLOCK_BREAKABLE_WALL.get(), BASIC_ITEM_PROPS.get())); - - // ================================================================================================================ - // DIMENSION - // ================================================================================================================ - public static final ResourceKey COMPACT_DIMENSION = ResourceKey - .create(Registry.DIMENSION_REGISTRY, new ResourceLocation(MOD_ID, "compact_world")); - - public static final ResourceKey COMPACT_DIMENSION_DIM_TYPE = ResourceKey - .create(Registry.DIMENSION_TYPE_REGISTRY, new ResourceLocation(MOD_ID, "compact_world")); - - // ================================================================================================================ - // INITIALIZATION - // ================================================================================================================ - public static void init() { - BLOCKS.register(); - ITEMS.register(); - BLOCK_ENTITIES.register(); - } -} diff --git a/src/main/java/dev/compactmods/machines/core/Registries.java b/src/main/java/dev/compactmods/machines/core/Registries.java new file mode 100644 index 00000000..304182b1 --- /dev/null +++ b/src/main/java/dev/compactmods/machines/core/Registries.java @@ -0,0 +1,58 @@ +package dev.compactmods.machines.core; + +import dev.compactmods.machines.CompactMachines; +import dev.compactmods.machines.api.room.upgrade.RoomUpgrade; +import dev.compactmods.machines.api.tunnels.TunnelDefinition; +import dev.compactmods.machines.graph.IGraphEdgeType; +import dev.compactmods.machines.graph.IGraphNodeType; +import net.minecraft.commands.synchronization.ArgumentTypeInfo; +import net.minecraft.core.Registry; +import net.minecraft.resources.ResourceKey; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.inventory.MenuType; +import net.minecraft.world.item.Item; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.entity.BlockEntityType; +import net.minecraft.world.level.storage.loot.functions.LootItemFunctionType; +import net.minecraftforge.registries.DeferredRegister; +import net.minecraftforge.registries.ForgeRegistries; + +import static dev.compactmods.machines.CompactMachines.MOD_ID; + +public class Registries { + + // Machines, Walls, Shrinking + public static final DeferredRegister BLOCKS = DeferredRegister.create(ForgeRegistries.BLOCKS, MOD_ID); + 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); + + // 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); + + // UIRegistration + public static final DeferredRegister> CONTAINERS = DeferredRegister.create(ForgeRegistries.MENU_TYPES, MOD_ID); + + // MachineRoomUpgrades + public static final ResourceKey> ROOM_UPGRADES_REG_KEY = ResourceKey + .createRegistryKey(new ResourceLocation(CompactMachines.MOD_ID, "room_upgrades")); + public static final DeferredRegister UPGRADES = DeferredRegister.create(ROOM_UPGRADES_REG_KEY, MOD_ID); + + // Graph + public static final ResourceKey> NODES_REG_KEY = ResourceKey + .createRegistryKey(new ResourceLocation(CompactMachines.MOD_ID, "graph_nodes")); + public static final ResourceKey> EDGES_REG_KEY = ResourceKey + .createRegistryKey(new ResourceLocation(CompactMachines.MOD_ID, "graph_edges")); + public static final DeferredRegister NODE_TYPES = DeferredRegister.create(NODES_REG_KEY, MOD_ID); + 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); + + // LootFunctions + public static final DeferredRegister LOOT_FUNCS = DeferredRegister.create(Registry.LOOT_FUNCTION_REGISTRY, 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 441e2841..2a410f12 100644 --- a/src/main/java/dev/compactmods/machines/core/ServerEventHandler.java +++ b/src/main/java/dev/compactmods/machines/core/ServerEventHandler.java @@ -1,6 +1,7 @@ package dev.compactmods.machines.core; import dev.compactmods.machines.api.room.upgrade.ILevelLoadedUpgradeListener; +import dev.compactmods.machines.dimension.Dimension; import dev.compactmods.machines.upgrade.RoomUpgradeManager; import net.fabricmc.fabric.api.networking.v1.PacketSender; import net.fabricmc.fabric.api.networking.v1.PlayerLookup; @@ -19,7 +20,7 @@ public class ServerEventHandler { public static void onWorldLoaded(MinecraftServer server, ServerLevel sl) { - if(sl.dimension().equals(Registration.COMPACT_DIMENSION)) + if(sl.dimension().equals(Dimension.COMPACT_DIMENSION)) { final var serv = sl.getServer(); final var owBorder = serv.overworld().getWorldBorder(); @@ -52,14 +53,14 @@ public static void onWorldLoaded(MinecraftServer server, ServerLevel sl) { public static void onPlayerLogin(ServerGamePacketListenerImpl handler, PacketSender sender, MinecraftServer server) { final var player = handler.getPlayer(); - if(player.level.dimension().equals(Registration.COMPACT_DIMENSION)) { + if(player.level.dimension().equals(Dimension.COMPACT_DIMENSION)) { // Send a fake world border to the player instead of the "real" one in overworld player.connection.send(new ClientboundInitializeBorderPacket(new WorldBorder())); } } public static void onPlayerDimChange(ServerPlayer sp, ServerLevel origin, ServerLevel destination) { - if(destination.dimension().equals(Registration.COMPACT_DIMENSION)) { + if(destination.dimension().equals(Dimension.COMPACT_DIMENSION)) { // 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 87bc7e32..88268910 100644 --- a/src/main/java/dev/compactmods/machines/core/UIRegistration.java +++ b/src/main/java/dev/compactmods/machines/core/UIRegistration.java @@ -1,6 +1,5 @@ package dev.compactmods.machines.core; -import dev.compactmods.machines.CompactMachines; import dev.compactmods.machines.location.LevelBlockPosition; import dev.compactmods.machines.room.menu.MachineRoomMenu; import io.github.fabricators_of_create.porting_lib.util.LazyRegistrar; @@ -8,11 +7,12 @@ import net.fabricmc.fabric.api.screenhandler.v1.ExtendedScreenHandlerType; import net.minecraft.core.Registry; import net.minecraft.world.inventory.MenuType; +import net.minecraftforge.common.extensions.IForgeMenuType; +import net.minecraftforge.registries.RegistryObject; public class UIRegistration { - private static final LazyRegistrar> CONTAINERS = LazyRegistrar.create(Registry.MENU, CompactMachines.MOD_ID); - public static final RegistryObject> MACHINE_MENU = CONTAINERS.register("machine", () -> new ExtendedScreenHandlerType<>( + public static final RegistryObject> MACHINE_MENU = Registries.CONTAINERS.register("machine", () -> new ExtendedScreenHandlerType<>( ((windowId, inv, data) -> { data.readBlockPos(); final var mach = data.readWithCodec(LevelBlockPosition.CODEC); @@ -24,7 +24,7 @@ public class UIRegistration { }) )); - public static void init() { - CONTAINERS.register(); + public static void prepare() { + } } diff --git a/src/main/java/dev/compactmods/machines/datagen/AdvancementGenerator.java b/src/main/java/dev/compactmods/machines/datagen/AdvancementGenerator.java index 22cf17eb..c4a2e13a 100644 --- a/src/main/java/dev/compactmods/machines/datagen/AdvancementGenerator.java +++ b/src/main/java/dev/compactmods/machines/datagen/AdvancementGenerator.java @@ -7,8 +7,10 @@ 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.core.Registration; 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; @@ -70,7 +72,7 @@ private void generateAdvancements(Consumer consumer) { .display(new DisplayBuilder() .frame(FrameType.TASK) .background(modLoc("textures/block/wall.png")) - .item(new ItemStack(Registration.MACHINE_BLOCK_ITEM_NORMAL.get())) + .item(new ItemStack(Machines.MACHINE_BLOCK_ITEM_NORMAL.get())) .id(Advancements.ROOT) .toast(false).hidden(false).chat(false) .build()) @@ -81,7 +83,7 @@ private void generateAdvancements(Consumer consumer) { .addCriterion("got_stuck", HowDidYouGetHereTrigger.Instance.create()) .display(new DisplayBuilder() .frame(FrameType.CHALLENGE) - .item(new ItemStack(Registration.PERSONAL_SHRINKING_DEVICE.get())) + .item(new ItemStack(Shrinking.PERSONAL_SHRINKING_DEVICE.get())) .id(Advancements.HOW_DID_YOU_GET_HERE) .toast(false).hidden(true) .build()) @@ -92,7 +94,7 @@ private void generateAdvancements(Consumer consumer) { .addCriterion("recursion", BasicPlayerAdvTrigger.Instance.create(Advancements.RECURSIVE_ROOMS)) .display(new DisplayBuilder() .frame(FrameType.CHALLENGE) - .item(new ItemStack(Registration.PERSONAL_SHRINKING_DEVICE.get())) + .item(new ItemStack(Shrinking.PERSONAL_SHRINKING_DEVICE.get())) .id(Advancements.RECURSIVE_ROOMS) .toast(false).hidden(true) .build()) @@ -100,30 +102,30 @@ private void generateAdvancements(Consumer consumer) { Advancement.Builder.advancement() .parent(root) - .addCriterion("obtained_wall", InventoryChangeTrigger.TriggerInstance.hasItems(Registration.BLOCK_BREAKABLE_WALL.get())) + .addCriterion("obtained_wall", InventoryChangeTrigger.TriggerInstance.hasItems(Walls.BLOCK_BREAKABLE_WALL.get())) .display(new DisplayBuilder() .frame(FrameType.TASK) - .item(new ItemStack(Registration.BLOCK_BREAKABLE_WALL.get())) + .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(Registration.PERSONAL_SHRINKING_DEVICE.get())) + .addCriterion("obtained_psd", InventoryChangeTrigger.TriggerInstance.hasItems(Shrinking.PERSONAL_SHRINKING_DEVICE.get())) .display(new DisplayBuilder() .frame(FrameType.TASK) - .item(new ItemStack(Registration.PERSONAL_SHRINKING_DEVICE.get())) + .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, Registration.MACHINE_BLOCK_ITEM_TINY); - machineAdvancement(consumer, psd, Advancements.CLAIMED_SMALL_MACHINE, Registration.MACHINE_BLOCK_ITEM_SMALL); - machineAdvancement(consumer, psd, Advancements.CLAIMED_NORMAL_MACHINE, Registration.MACHINE_BLOCK_ITEM_NORMAL); - machineAdvancement(consumer, psd, Advancements.CLAIMED_LARGE_MACHINE, Registration.MACHINE_BLOCK_ITEM_LARGE); - machineAdvancement(consumer, psd, Advancements.CLAIMED_GIANT_MACHINE, Registration.MACHINE_BLOCK_ITEM_GIANT); - machineAdvancement(consumer, psd, Advancements.CLAIMED_MAX_MACHINE, Registration.MACHINE_BLOCK_ITEM_MAXIMUM); + 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) { diff --git a/src/main/java/dev/compactmods/machines/datagen/ItemModelGenerator.java b/src/main/java/dev/compactmods/machines/datagen/ItemModelGenerator.java index 51febbc2..85b1caf5 100644 --- a/src/main/java/dev/compactmods/machines/datagen/ItemModelGenerator.java +++ b/src/main/java/dev/compactmods/machines/datagen/ItemModelGenerator.java @@ -1,7 +1,7 @@ package dev.compactmods.machines.datagen; import dev.compactmods.machines.CompactMachines; -import dev.compactmods.machines.room.RoomSize; +import dev.compactmods.machines.api.room.RoomSize; import dev.compactmods.machines.upgrade.MachineRoomUpgrades; import net.minecraft.data.DataGenerator; import net.minecraftforge.client.model.generators.ItemModelProvider; diff --git a/src/main/java/dev/compactmods/machines/datagen/LevelBiomeGenerator.java b/src/main/java/dev/compactmods/machines/datagen/LevelBiomeGenerator.java index 91cee209..c8f454d0 100644 --- a/src/main/java/dev/compactmods/machines/datagen/LevelBiomeGenerator.java +++ b/src/main/java/dev/compactmods/machines/datagen/LevelBiomeGenerator.java @@ -8,6 +8,7 @@ import com.google.gson.JsonObject; import com.mojang.serialization.JsonOps; import dev.compactmods.machines.CompactMachines; +import dev.compactmods.machines.dimension.Dimension; import net.minecraft.core.Holder; import net.minecraft.core.Registry; import net.minecraft.core.RegistryAccess; @@ -18,7 +19,6 @@ 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.block.Blocks; import net.minecraft.world.level.chunk.ChunkGenerator; import net.minecraft.world.level.dimension.DimensionType; import net.minecraft.world.level.dimension.LevelStem; @@ -93,7 +93,7 @@ private void writeDimensions(HashMap biomes, HashMap consumer) { - ShapedRecipeBuilder.shaped(Registration.ITEM_BREAKABLE_WALL.get(), 8) + ShapedRecipeBuilder.shaped(Walls.ITEM_BREAKABLE_WALL.get(), 8) .pattern("DDD") .pattern("D D") .pattern("DDD") @@ -37,7 +39,7 @@ protected void generateRecipes(@NotNull Consumer consumer) { .unlockedBy("picked_up_deepslate", RecipeProvider.has(Tags.Items.COBBLESTONE_DEEPSLATE)) .save(consumer); - ShapedRecipeBuilder.shaped(Registration.PERSONAL_SHRINKING_DEVICE.get()) + ShapedRecipeBuilder.shaped(Shrinking.PERSONAL_SHRINKING_DEVICE.get()) .pattern(" P ") .pattern("EBE") .pattern(" I ") @@ -76,16 +78,16 @@ protected void generateRecipes(@NotNull Consumer consumer) { } private void addMachineRecipes(Consumer consumer) { - registerMachineRecipe(consumer, Registration.MACHINE_BLOCK_ITEM_TINY.get(), Tags.Items.STORAGE_BLOCKS_COPPER); - registerMachineRecipe(consumer, Registration.MACHINE_BLOCK_ITEM_SMALL.get(), Tags.Items.STORAGE_BLOCKS_IRON); - registerMachineRecipe(consumer, Registration.MACHINE_BLOCK_ITEM_NORMAL.get(), Tags.Items.STORAGE_BLOCKS_GOLD); - registerMachineRecipe(consumer, Registration.MACHINE_BLOCK_ITEM_GIANT.get(), Tags.Items.STORAGE_BLOCKS_DIAMOND); - registerMachineRecipe(consumer, Registration.MACHINE_BLOCK_ITEM_LARGE.get(), Tags.Items.OBSIDIAN); - registerMachineRecipe(consumer, Registration.MACHINE_BLOCK_ITEM_MAXIMUM.get(), Tags.Items.STORAGE_BLOCKS_NETHERITE); + registerMachineRecipe(consumer, Machines.MACHINE_BLOCK_ITEM_TINY.get(), Tags.Items.STORAGE_BLOCKS_COPPER); + registerMachineRecipe(consumer, Machines.MACHINE_BLOCK_ITEM_SMALL.get(), Tags.Items.STORAGE_BLOCKS_IRON); + registerMachineRecipe(consumer, Machines.MACHINE_BLOCK_ITEM_NORMAL.get(), Tags.Items.STORAGE_BLOCKS_GOLD); + registerMachineRecipe(consumer, Machines.MACHINE_BLOCK_ITEM_GIANT.get(), Tags.Items.STORAGE_BLOCKS_DIAMOND); + registerMachineRecipe(consumer, Machines.MACHINE_BLOCK_ITEM_LARGE.get(), Tags.Items.OBSIDIAN); + registerMachineRecipe(consumer, Machines.MACHINE_BLOCK_ITEM_MAXIMUM.get(), Tags.Items.STORAGE_BLOCKS_NETHERITE); } protected void registerMachineRecipe(Consumer consumer, ItemLike out, TagKey center) { - Item wall = Registration.ITEM_BREAKABLE_WALL.get(); + Item wall = Walls.ITEM_BREAKABLE_WALL.get(); ShapedRecipeBuilder recipe = ShapedRecipeBuilder.shaped(out) .pattern("WWW"); diff --git a/src/main/java/dev/compactmods/machines/datagen/StateGenerator.java b/src/main/java/dev/compactmods/machines/datagen/StateGenerator.java index b303dc6b..29f13e02 100644 --- a/src/main/java/dev/compactmods/machines/datagen/StateGenerator.java +++ b/src/main/java/dev/compactmods/machines/datagen/StateGenerator.java @@ -2,8 +2,8 @@ import dev.compactmods.machines.CompactMachines; import dev.compactmods.machines.machine.CompactMachineBlock; -import dev.compactmods.machines.core.Registration; -import dev.compactmods.machines.room.RoomSize; +import dev.compactmods.machines.api.room.RoomSize; +import dev.compactmods.machines.wall.Walls; import net.minecraft.data.DataGenerator; import net.minecraftforge.client.model.generators.BlockStateProvider; import net.minecraftforge.client.model.generators.ConfiguredModel; @@ -18,8 +18,8 @@ public StateGenerator(DataGenerator gen, ExistingFileHelper exFileHelper) { protected void registerStatesAndModels() { // Wall block model var wall = models().cubeAll("block/wall", modLoc("block/wall")); - simpleBlock(Registration.BLOCK_SOLID_WALL.get(), wall); - simpleBlock(Registration.BLOCK_BREAKABLE_WALL.get(), wall); + simpleBlock(Walls.BLOCK_SOLID_WALL.get(), wall); + simpleBlock(Walls.BLOCK_BREAKABLE_WALL.get(), wall); // Machine models for(RoomSize size : RoomSize.values()) { diff --git a/src/main/java/dev/compactmods/machines/datagen/TunnelWallStateGenerator.java b/src/main/java/dev/compactmods/machines/datagen/TunnelWallStateGenerator.java index 7de9b5d5..5363a79f 100644 --- a/src/main/java/dev/compactmods/machines/datagen/TunnelWallStateGenerator.java +++ b/src/main/java/dev/compactmods/machines/datagen/TunnelWallStateGenerator.java @@ -3,7 +3,7 @@ import dev.compactmods.machines.CompactMachines; import dev.compactmods.machines.tunnel.TunnelWallBlock; -import dev.compactmods.machines.core.Tunnels; +import dev.compactmods.machines.tunnel.Tunnels; import net.minecraft.core.Direction; import net.minecraft.data.DataGenerator; import net.minecraft.resources.ResourceLocation; diff --git a/src/main/java/dev/compactmods/machines/datagen/lang/BaseLangGenerator.java b/src/main/java/dev/compactmods/machines/datagen/lang/BaseLangGenerator.java index 5849ad37..d73b4c12 100644 --- a/src/main/java/dev/compactmods/machines/datagen/lang/BaseLangGenerator.java +++ b/src/main/java/dev/compactmods/machines/datagen/lang/BaseLangGenerator.java @@ -4,11 +4,11 @@ import dev.compactmods.machines.api.core.Advancements; import dev.compactmods.machines.api.room.upgrade.RoomUpgrade; import dev.compactmods.machines.api.tunnels.TunnelDefinition; -import dev.compactmods.machines.core.Tunnels; +import dev.compactmods.machines.tunnel.Tunnels; import dev.compactmods.machines.datagen.AdvancementLangBuilder; import dev.compactmods.machines.i18n.TranslationUtil; import dev.compactmods.machines.machine.CompactMachineBlock; -import dev.compactmods.machines.room.RoomSize; +import dev.compactmods.machines.api.room.RoomSize; import io.github.fabricators_of_create.porting_lib.data.LanguageProvider; import net.minecraft.core.Direction; import net.minecraft.data.DataGenerator; diff --git a/src/main/java/dev/compactmods/machines/datagen/lang/EnglishLangGenerator.java b/src/main/java/dev/compactmods/machines/datagen/lang/EnglishLangGenerator.java index e57b94e8..f989200d 100644 --- a/src/main/java/dev/compactmods/machines/datagen/lang/EnglishLangGenerator.java +++ b/src/main/java/dev/compactmods/machines/datagen/lang/EnglishLangGenerator.java @@ -5,12 +5,15 @@ import dev.compactmods.machines.api.core.Messages; import dev.compactmods.machines.api.core.Tooltips; import dev.compactmods.machines.api.room.upgrade.RoomUpgrade; -import dev.compactmods.machines.core.Registration; -import dev.compactmods.machines.core.Tunnels; -import dev.compactmods.machines.room.RoomSize; +import dev.compactmods.machines.dimension.VoidAirBlock; +import dev.compactmods.machines.shrinking.Shrinking; +import dev.compactmods.machines.tunnel.Tunnels; +import dev.compactmods.machines.api.room.RoomSize; import dev.compactmods.machines.upgrade.MachineRoomUpgrades; +import dev.compactmods.machines.wall.Walls; import net.minecraft.data.DataGenerator; -import org.apache.commons.lang3.StringUtils; + +import static org.apache.commons.lang3.StringUtils.capitalize; public class EnglishLangGenerator extends BaseLangGenerator { public EnglishLangGenerator(DataGenerator gen) { @@ -50,11 +53,11 @@ protected void addTranslations() { addAdvancementTranslations(); - addBlock(Registration.BLOCK_BREAKABLE_WALL, "Compact Machine Wall"); - addBlock(Registration.BLOCK_SOLID_WALL, "Solid Compact Machine Wall"); + addBlock(Walls.BLOCK_BREAKABLE_WALL, "Compact Machine Wall"); + addBlock(Walls.BLOCK_SOLID_WALL, "Solid Compact Machine Wall"); addBlock(Tunnels.BLOCK_TUNNEL_WALL, "Solid Compact Machine Wall (with Tunnel)"); - add(Registration.PERSONAL_SHRINKING_DEVICE.get(), "Personal Shrinking Device"); + add(Shrinking.PERSONAL_SHRINKING_DEVICE.get(), "Personal Shrinking Device"); add(CompactMachines.MOD_ID + ".direction.side", "Side: %s"); add(CompactMachines.MOD_ID + ".connected_block", "Connected: %s"); @@ -117,6 +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"); } @Override diff --git a/src/main/java/dev/compactmods/machines/datagen/lang/RussianLangGenerator.java b/src/main/java/dev/compactmods/machines/datagen/lang/RussianLangGenerator.java index f15add0e..4f6239c6 100644 --- a/src/main/java/dev/compactmods/machines/datagen/lang/RussianLangGenerator.java +++ b/src/main/java/dev/compactmods/machines/datagen/lang/RussianLangGenerator.java @@ -3,9 +3,10 @@ import dev.compactmods.machines.CompactMachines; import dev.compactmods.machines.api.core.Messages; import dev.compactmods.machines.api.core.Tooltips; -import dev.compactmods.machines.core.Registration; -import dev.compactmods.machines.core.Tunnels; -import dev.compactmods.machines.room.RoomSize; +import dev.compactmods.machines.shrinking.Shrinking; +import dev.compactmods.machines.tunnel.Tunnels; +import dev.compactmods.machines.api.room.RoomSize; +import dev.compactmods.machines.wall.Walls; import net.minecraft.core.Direction; import net.minecraft.data.DataGenerator; @@ -48,8 +49,8 @@ protected void addTranslations() { super.addTranslations(); // Walls (Solid, Breakable, Tunnel) - add(Registration.BLOCK_SOLID_WALL.get(), "Прочная стена компактного механизма"); - add(Registration.BLOCK_BREAKABLE_WALL.get(), "Стена компактного механизма"); + add(Walls.BLOCK_SOLID_WALL.get(), "Прочная стена компактного механизма"); + add(Walls.BLOCK_BREAKABLE_WALL.get(), "Стена компактного механизма"); add(Tunnels.BLOCK_TUNNEL_WALL.get(), "Прочная стена компактного механизма (с Туннелем)"); // Basics @@ -57,7 +58,7 @@ protected void addTranslations() { add(CompactMachines.MOD_ID + ".direction.side", "Сторона: %s"); // PSD - add(Registration.PERSONAL_SHRINKING_DEVICE.get(), "Персональное сжимающее устройство"); + add(Shrinking.PERSONAL_SHRINKING_DEVICE.get(), "Персональное сжимающее устройство"); // Built-In Tunnels add(Tunnels.ITEM_TUNNEL.get(), "Предметный туннель"); diff --git a/src/main/java/dev/compactmods/machines/datagen/tags/BlockTagGenerator.java b/src/main/java/dev/compactmods/machines/datagen/tags/BlockTagGenerator.java index 576a04de..36124c85 100644 --- a/src/main/java/dev/compactmods/machines/datagen/tags/BlockTagGenerator.java +++ b/src/main/java/dev/compactmods/machines/datagen/tags/BlockTagGenerator.java @@ -1,6 +1,7 @@ package dev.compactmods.machines.datagen.tags; -import dev.compactmods.machines.core.Registration; +import dev.compactmods.machines.machine.Machines; +import dev.compactmods.machines.wall.Walls; import net.fabricmc.fabric.api.datagen.v1.FabricDataGenerator; import net.fabricmc.fabric.api.datagen.v1.provider.FabricTagProvider; import net.minecraft.tags.BlockTags; @@ -15,17 +16,17 @@ public BlockTagGenerator(FabricDataGenerator generator) { @Override public void generateTags() { - var machines = Set.of(Registration.MACHINE_BLOCK_TINY.get(), - Registration.MACHINE_BLOCK_SMALL.get(), - Registration.MACHINE_BLOCK_NORMAL.get(), - Registration.MACHINE_BLOCK_LARGE.get(), - Registration.MACHINE_BLOCK_GIANT.get(), - Registration.MACHINE_BLOCK_MAXIMUM.get()); + var machines = Set.of(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()); var pickaxe = tag(BlockTags.MINEABLE_WITH_PICKAXE); var ironTool = tag(BlockTags.NEEDS_IRON_TOOL); - var breakableWall = Registration.BLOCK_BREAKABLE_WALL.get(); + var breakableWall = Walls.BLOCK_BREAKABLE_WALL.get(); pickaxe.add(breakableWall); ironTool.add(breakableWall); diff --git a/src/main/java/dev/compactmods/machines/dimension/Dimension.java b/src/main/java/dev/compactmods/machines/dimension/Dimension.java new file mode 100644 index 00000000..fc8a5c30 --- /dev/null +++ b/src/main/java/dev/compactmods/machines/dimension/Dimension.java @@ -0,0 +1,30 @@ +package dev.compactmods.machines.dimension; + +import dev.compactmods.machines.core.Registries; +import net.minecraft.core.Registry; +import net.minecraft.resources.ResourceKey; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.dimension.DimensionType; +import net.minecraftforge.registries.RegistryObject; + +import static dev.compactmods.machines.CompactMachines.MOD_ID; + +public class Dimension { + + public static final RegistryObject BLOCK_MACHINE_VOID_AIR = Registries.BLOCKS.register("machine_void_air", VoidAirBlock::new); + + // ================================================================================================================ + // DIMENSION + // ================================================================================================================ + public static final ResourceKey COMPACT_DIMENSION = ResourceKey + .create(Registry.DIMENSION_REGISTRY, new ResourceLocation(MOD_ID, "compact_world")); + + public static final ResourceKey COMPACT_DIMENSION_DIM_TYPE = ResourceKey + .create(Registry.DIMENSION_TYPE_REGISTRY, new ResourceLocation(MOD_ID, "compact_world")); + + public static void prepare() { + + } +} diff --git a/src/main/java/dev/compactmods/machines/core/MissingDimensionException.java b/src/main/java/dev/compactmods/machines/dimension/MissingDimensionException.java similarity index 86% rename from src/main/java/dev/compactmods/machines/core/MissingDimensionException.java rename to src/main/java/dev/compactmods/machines/dimension/MissingDimensionException.java index 93207c97..606d2189 100644 --- a/src/main/java/dev/compactmods/machines/core/MissingDimensionException.java +++ b/src/main/java/dev/compactmods/machines/dimension/MissingDimensionException.java @@ -1,4 +1,4 @@ -package dev.compactmods.machines.core; +package dev.compactmods.machines.dimension; public class MissingDimensionException extends Throwable { public MissingDimensionException() { diff --git a/src/main/java/dev/compactmods/machines/dimension/VoidAirBlock.java b/src/main/java/dev/compactmods/machines/dimension/VoidAirBlock.java new file mode 100644 index 00000000..0ea59524 --- /dev/null +++ b/src/main/java/dev/compactmods/machines/dimension/VoidAirBlock.java @@ -0,0 +1,47 @@ +package dev.compactmods.machines.dimension; + +import dev.compactmods.machines.api.room.IRoomHistory; +import dev.compactmods.machines.config.ServerConfig; +import dev.compactmods.machines.room.RoomCapabilities; +import dev.compactmods.machines.util.PlayerUtil; +import net.minecraft.core.BlockPos; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.world.damagesource.DamageSource; +import net.minecraft.world.effect.MobEffectInstance; +import net.minecraft.world.effect.MobEffects; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.level.Level; +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.CompactMachines.MOD_ID; + + +public class VoidAirBlock extends AirBlock { + final public static DamageSource DAMAGE_SOURCE = new DamageSource(MOD_ID + "_voidair"); + + public VoidAirBlock() { + super(BlockBehaviour.Properties.of(Material.AIR).noCollission().air().noLootTable()); + } + + + @Override + public void entityInside(BlockState pState, Level pLevel, BlockPos pPos, Entity pEntity) { + if (ServerConfig.isAllowedOutsideOfMachine()) return; + if (pLevel.isClientSide) return; + + if (pEntity instanceof ServerPlayer player) { + if (player.isCreative()) return; + + player.addEffect(new MobEffectInstance(MobEffects.POISON, 5 * 20)); + player.addEffect(new MobEffectInstance(MobEffects.BLINDNESS, 5 * 20)); + player.hurt(DAMAGE_SOURCE, 1); + + PlayerUtil.howDidYouGetThere(player); + player.getCapability(RoomCapabilities.ROOM_HISTORY).ifPresent(IRoomHistory::clear); + PlayerUtil.teleportPlayerToRespawnOrOverworld(player.server, player); + } + } +} diff --git a/src/main/java/dev/compactmods/machines/graph/CMGraphRegistration.java b/src/main/java/dev/compactmods/machines/graph/CMGraphRegistration.java deleted file mode 100644 index 32e00e98..00000000 --- a/src/main/java/dev/compactmods/machines/graph/CMGraphRegistration.java +++ /dev/null @@ -1,41 +0,0 @@ -package dev.compactmods.machines.graph; - -import dev.compactmods.machines.CompactMachines; -import io.github.fabricators_of_create.porting_lib.util.LazyRegistrar; -import io.github.fabricators_of_create.porting_lib.util.RegistryObject; -import net.fabricmc.fabric.api.event.registry.FabricRegistryBuilder; -import net.minecraft.core.Registry; -import net.minecraft.resources.ResourceLocation; - -public class CMGraphRegistration { - - public static final ResourceLocation NODES_RL = new ResourceLocation(CompactMachines.MOD_ID, "graph_nodes"); - public static final Registry NODE_TYPE_REG = FabricRegistryBuilder.createSimple(IGraphNodeType.class, - NODES_RL).buildAndRegister(); - public static final LazyRegistrar NODE_TYPES = LazyRegistrar.create(NODE_TYPE_REG, CompactMachines.MOD_ID); - - public static final ResourceLocation EDGES_RL = new ResourceLocation(CompactMachines.MOD_ID, "graph_edges"); - public static final Registry EDGE_TYPE_REG = FabricRegistryBuilder.createSimple(IGraphEdgeType.class, - EDGES_RL).buildAndRegister(); - public static final LazyRegistrar EDGE_TYPES = LazyRegistrar.create(EDGE_TYPE_REG, CompactMachines.MOD_ID); - - public static final RegistryObject MACH_NODE = NODE_TYPES.register("machine", () -> GraphNodeType.MACHINE); - public static final RegistryObject DIM_NODE = NODE_TYPES.register("dimension", () -> GraphNodeType.DIMENSION); - public static final RegistryObject ROOM_NODE = NODE_TYPES.register("room", () -> GraphNodeType.ROOM); - - public static final RegistryObject TUNNEL_NODE = NODE_TYPES.register("tunnel", () -> GraphNodeType.TUNNEL); - public static final RegistryObject TUNNEL_TYPE_NODE = NODE_TYPES.register("tunnel_type", () -> GraphNodeType.TUNNEL_TYPE); - - public static final RegistryObject ROOM_UPGRADE_NODE = NODE_TYPES.register("room_upgrade", () -> GraphNodeType.ROOM_UPGRADE); - - public static final RegistryObject MACHINE_LINK = EDGE_TYPES.register("machine_link", () -> GraphEdgeType.MACHINE_LINK); - - // Tunnel edges - public static final RegistryObject TUNNEL_TYPE = EDGE_TYPES.register("tunnel_type", () -> GraphEdgeType.TUNNEL_TYPE); - public static final RegistryObject TUNNEL_MACHINE_LINK = EDGE_TYPES.register("tunnel_machine", () -> GraphEdgeType.TUNNEL_MACHINE); - - public static void init() { - NODE_TYPES.register(); - EDGE_TYPES.register(); - } -} diff --git a/src/main/java/dev/compactmods/machines/graph/DimensionGraphNode.java b/src/main/java/dev/compactmods/machines/graph/DimensionGraphNode.java index 4a328166..0d222409 100644 --- a/src/main/java/dev/compactmods/machines/graph/DimensionGraphNode.java +++ b/src/main/java/dev/compactmods/machines/graph/DimensionGraphNode.java @@ -6,8 +6,6 @@ import net.minecraft.resources.ResourceKey; import net.minecraft.world.level.Level; -import java.util.Objects; - public record DimensionGraphNode(ResourceKey dimension) implements IGraphNode { public static final Codec CODEC = RecordCodecBuilder.create(i -> i.group( @@ -22,6 +20,6 @@ public String toString() { @Override public IGraphNodeType getType() { - return CMGraphRegistration.DIM_NODE.get(); + return Graph.DIM_NODE.get(); } } diff --git a/src/main/java/dev/compactmods/machines/graph/Graph.java b/src/main/java/dev/compactmods/machines/graph/Graph.java new file mode 100644 index 00000000..710d314b --- /dev/null +++ b/src/main/java/dev/compactmods/machines/graph/Graph.java @@ -0,0 +1,34 @@ +package dev.compactmods.machines.graph; + +import dev.compactmods.machines.core.Registries; +import net.minecraftforge.registries.IForgeRegistry; +import net.minecraftforge.registries.RegistryBuilder; +import net.minecraftforge.registries.RegistryObject; + +import java.util.function.Supplier; + +public class Graph { + + public static final Supplier> NODE_TYPE_REG = Registries.NODE_TYPES.makeRegistry(RegistryBuilder::new); + public static final Supplier> EDGE_TYPE_REG = Registries.EDGE_TYPES.makeRegistry(RegistryBuilder::new); + + + public static final RegistryObject MACH_NODE = Registries.NODE_TYPES.register("machine", () -> GraphNodeType.MACHINE); + public static final RegistryObject DIM_NODE = Registries.NODE_TYPES.register("dimension", () -> GraphNodeType.DIMENSION); + public static final RegistryObject ROOM_NODE = Registries.NODE_TYPES.register("room", () -> GraphNodeType.ROOM); + + public static final RegistryObject TUNNEL_NODE = Registries.NODE_TYPES.register("tunnel", () -> GraphNodeType.TUNNEL); + public static final RegistryObject TUNNEL_TYPE_NODE = Registries.NODE_TYPES.register("tunnel_type", () -> GraphNodeType.TUNNEL_TYPE); + + public static final RegistryObject ROOM_UPGRADE_NODE = Registries.NODE_TYPES.register("room_upgrade", () -> GraphNodeType.ROOM_UPGRADE); + + public static final RegistryObject MACHINE_LINK = Registries.EDGE_TYPES.register("machine_link", () -> GraphEdgeType.MACHINE_LINK); + + // Tunnel edges + public static final RegistryObject TUNNEL_TYPE = Registries.EDGE_TYPES.register("tunnel_type", () -> GraphEdgeType.TUNNEL_TYPE); + public static final RegistryObject TUNNEL_MACHINE_LINK = Registries.EDGE_TYPES.register("tunnel_machine", () -> GraphEdgeType.TUNNEL_MACHINE); + + public static void prepare() { + + } +} diff --git a/src/main/java/dev/compactmods/machines/graph/GraphNodeType.java b/src/main/java/dev/compactmods/machines/graph/GraphNodeType.java index 909b7b57..34b780bc 100644 --- a/src/main/java/dev/compactmods/machines/graph/GraphNodeType.java +++ b/src/main/java/dev/compactmods/machines/graph/GraphNodeType.java @@ -6,17 +6,16 @@ import dev.compactmods.machines.tunnel.graph.TunnelNode; import dev.compactmods.machines.tunnel.graph.TunnelTypeNode; import dev.compactmods.machines.upgrade.graph.RoomUpgradeGraphNode; -import net.minecraft.resources.ResourceLocation; public enum GraphNodeType implements IGraphNodeType { MACHINE(CompactMachineNode.CODEC), TUNNEL(TunnelNode.CODEC), ROOM(CompactMachineRoomNode.CODEC), TUNNEL_TYPE(TunnelTypeNode.CODEC), - DIMENSION(DimensionGraphNode.CODEC), ROOM_UPGRADE(RoomUpgradeGraphNode.CODEC); + DIMENSION(DimensionGraphNode.CODEC), + ROOM_UPGRADE(RoomUpgradeGraphNode.CODEC); private final Codec codec; - private ResourceLocation regName; @SuppressWarnings("unchecked") GraphNodeType(Codec codec) { diff --git a/src/main/java/dev/compactmods/machines/location/SimpleTeleporter.java b/src/main/java/dev/compactmods/machines/location/SimpleTeleporter.java new file mode 100644 index 00000000..9b74d92b --- /dev/null +++ b/src/main/java/dev/compactmods/machines/location/SimpleTeleporter.java @@ -0,0 +1,22 @@ +package dev.compactmods.machines.location; + +import net.minecraft.server.level.ServerLevel; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.phys.Vec3; +import net.minecraftforge.common.util.ITeleporter; + +import java.util.function.Function; + +public record SimpleTeleporter(Vec3 pos) implements ITeleporter { + + public static SimpleTeleporter to(Vec3 pos) { + return new SimpleTeleporter(pos); + } + + @Override + public Entity placeEntity(Entity entity, ServerLevel currentWorld, ServerLevel destWorld, float yaw, Function repositionEntity) { + entity = repositionEntity.apply(false); + entity.teleportTo(pos.x, pos.y, pos.z); + return entity; + } +} diff --git a/src/main/java/dev/compactmods/machines/machine/CompactMachineBlock.java b/src/main/java/dev/compactmods/machines/machine/CompactMachineBlock.java index 68d75e73..1efaf1b9 100644 --- a/src/main/java/dev/compactmods/machines/machine/CompactMachineBlock.java +++ b/src/main/java/dev/compactmods/machines/machine/CompactMachineBlock.java @@ -4,16 +4,19 @@ import dev.compactmods.machines.api.core.CMTags; import dev.compactmods.machines.api.core.Messages; import dev.compactmods.machines.config.ServerConfig; -import dev.compactmods.machines.core.*; +import dev.compactmods.machines.dimension.MissingDimensionException; import dev.compactmods.machines.i18n.TranslationUtil; +import dev.compactmods.machines.dimension.Dimension; import dev.compactmods.machines.location.PreciseDimensionalPosition; import dev.compactmods.machines.machine.graph.DimensionMachineGraph; import dev.compactmods.machines.location.LevelBlockPosition; -import dev.compactmods.machines.room.RoomSize; +import dev.compactmods.machines.room.RoomCapabilities; +import dev.compactmods.machines.api.room.RoomSize; import dev.compactmods.machines.room.Rooms; import dev.compactmods.machines.room.exceptions.NonexistentRoomException; import dev.compactmods.machines.room.history.PlayerRoomHistoryItem; import dev.compactmods.machines.room.menu.MachineRoomMenu; +import dev.compactmods.machines.shrinking.Shrinking; import dev.compactmods.machines.tunnel.graph.TunnelConnectionGraph; import dev.compactmods.machines.upgrade.MachineRoomUpgrades; import dev.compactmods.machines.upgrade.RoomUpgradeItem; @@ -122,7 +125,7 @@ public void neighborChanged(BlockState state, Level world, BlockPos pos, Block c ServerLevel serverWorld = (ServerLevel) world; if (serverWorld.getBlockEntity(pos) instanceof CompactMachineBlockEntity machine) { - ServerLevel compactWorld = serverWorld.getServer().getLevel(Registration.COMPACT_DIMENSION); + ServerLevel compactWorld = serverWorld.getServer().getLevel(Dimension.COMPACT_DIMENSION); if (compactWorld == null) { CompactMachines.LOGGER.warn("Warning: Compact Dimension was null! Cannot fetch internal state for machine neighbor change listener."); } @@ -133,12 +136,12 @@ public void neighborChanged(BlockState state, Level world, BlockPos pos, Block c public static Block getBySize(RoomSize size) { return switch (size) { - case TINY -> Registration.MACHINE_BLOCK_TINY.get(); - case SMALL -> Registration.MACHINE_BLOCK_SMALL.get(); - case NORMAL -> Registration.MACHINE_BLOCK_NORMAL.get(); - case LARGE -> Registration.MACHINE_BLOCK_LARGE.get(); - case GIANT -> Registration.MACHINE_BLOCK_GIANT.get(); - case MAXIMUM -> Registration.MACHINE_BLOCK_MAXIMUM.get(); + case TINY -> Machines.MACHINE_BLOCK_TINY.get(); + case SMALL -> Machines.MACHINE_BLOCK_SMALL.get(); + case NORMAL -> Machines.MACHINE_BLOCK_NORMAL.get(); + case LARGE -> Machines.MACHINE_BLOCK_LARGE.get(); + case GIANT -> Machines.MACHINE_BLOCK_GIANT.get(); + case MAXIMUM -> Machines.MACHINE_BLOCK_MAXIMUM.get(); }; } @@ -215,7 +218,7 @@ public InteractionResult use(BlockState state, Level level, BlockPos pos, Player } // TODO - Item tags instead of direct item reference here - if (mainItem.getItem() == Registration.PERSONAL_SHRINKING_DEVICE.get()) { + if (mainItem.getItem() == Shrinking.PERSONAL_SHRINKING_DEVICE.get()) { // Try teleport to compact machine dimension if (level.getBlockEntity(pos) instanceof CompactMachineBlockEntity tile) { tile.getConnectedRoom().ifPresentOrElse(room -> { @@ -263,7 +266,7 @@ public InteractionResult use(BlockState state, Level level, BlockPos pos, Player } final var upg = upItem.getUpgradeType(); - final var manager = RoomUpgradeManager.get(server.getLevel(Registration.COMPACT_DIMENSION)); + final var manager = RoomUpgradeManager.get(server.getLevel(Dimension.COMPACT_DIMENSION)); if (manager.hasUpgrade(room, upg)) { player.displayClientMessage(TranslationUtil.message(Messages.ALREADY_HAS_UPGRADE), true); @@ -295,7 +298,7 @@ private void createAndEnterRoom(Player player, MinecraftServer server, CompactMa PlayerUtil.teleportPlayerIntoRoom(server, player, newRoomPos, true); // Mark the player as inside the machine, set external spawn, and yeet - Capabilities.ROOM_HISTORY.maybeGet(player).ifPresent(hist -> { + RoomCapabilities.ROOM_HISTORY.maybeGet(player).ifPresent(hist -> { var entry = PreciseDimensionalPosition.fromPlayer(player); hist.getHistory().addHistory(new PlayerRoomHistoryItem(entry, tile.getLevelPosition())); }); @@ -325,7 +328,7 @@ public void onRemove(BlockState oldState, Level level, BlockPos pos, BlockState if (level instanceof ServerLevel sl) { final var serv = sl.getServer(); - final var compactDim = serv.getLevel(Registration.COMPACT_DIMENSION); + final var compactDim = serv.getLevel(Dimension.COMPACT_DIMENSION); if (level.getBlockEntity(pos) instanceof CompactMachineBlockEntity entity) { entity.getConnectedRoom().ifPresent(room -> { diff --git a/src/main/java/dev/compactmods/machines/machine/CompactMachineBlockEntity.java b/src/main/java/dev/compactmods/machines/machine/CompactMachineBlockEntity.java index 4e015ba8..05630e74 100644 --- a/src/main/java/dev/compactmods/machines/machine/CompactMachineBlockEntity.java +++ b/src/main/java/dev/compactmods/machines/machine/CompactMachineBlockEntity.java @@ -2,11 +2,9 @@ import dev.compactmods.machines.CompactMachines; import dev.compactmods.machines.api.machine.MachineNbt; -import dev.compactmods.machines.api.room.IRoomInformation; -import dev.compactmods.machines.api.tunnels.capability.CapabilityTunnel; +import dev.compactmods.machines.dimension.Dimension; import dev.compactmods.machines.location.LevelBlockPosition; -import dev.compactmods.machines.core.MissingDimensionException; -import dev.compactmods.machines.core.Registration; +import dev.compactmods.machines.dimension.MissingDimensionException; import dev.compactmods.machines.machine.graph.DimensionMachineGraph; import dev.compactmods.machines.machine.graph.CompactMachineNode; import dev.compactmods.machines.machine.graph.legacy.LegacyMachineConnections; @@ -42,7 +40,7 @@ public class CompactMachineBlockEntity extends BlockEntity implements CustomUpda private WeakReference roomNode; public CompactMachineBlockEntity(BlockPos pos, BlockState state) { - super(Registration.MACHINE_TILE_ENTITY.get(), pos, state); + super(Machines.MACHINE_TILE_ENTITY.get(), pos, state); } public A getTunnelContext(CapabilityTunnel.StorageType context, Direction side) { @@ -50,7 +48,7 @@ public A getTunnelContext(CapabilityTunnel.StorageType context return (A) getConnectedRoom().map(roomId -> { try { final var serv = sl.getServer(); - final var compactDim = serv.getLevel(Registration.COMPACT_DIMENSION); + final var compactDim = serv.getLevel(Dimension.COMPACT_DIMENSION); final var graph = TunnelConnectionGraph.forRoom(compactDim, roomId); @@ -59,7 +57,7 @@ public A getTunnelContext(CapabilityTunnel.StorageType context if (firstSupported.isEmpty()) return null; - final var compact = serv.getLevel(Registration.COMPACT_DIMENSION); + final var compact = serv.getLevel(Dimension.COMPACT_DIMENSION); if (compact == null) throw new MissingDimensionException(); diff --git a/src/main/java/dev/compactmods/machines/machine/CompactMachineItem.java b/src/main/java/dev/compactmods/machines/machine/CompactMachineItem.java index 40b91d3a..d0d068cb 100644 --- a/src/main/java/dev/compactmods/machines/machine/CompactMachineItem.java +++ b/src/main/java/dev/compactmods/machines/machine/CompactMachineItem.java @@ -2,9 +2,8 @@ import dev.compactmods.machines.api.core.Tooltips; import dev.compactmods.machines.api.machine.MachineNbt; -import dev.compactmods.machines.core.Registration; import dev.compactmods.machines.i18n.TranslationUtil; -import dev.compactmods.machines.room.RoomSize; +import dev.compactmods.machines.api.room.RoomSize; import net.minecraft.ChatFormatting; import net.minecraft.client.gui.screens.Screen; import net.minecraft.nbt.CompoundTag; @@ -46,12 +45,12 @@ public static Optional getMachineId(ItemStack stack) { public static Item getItemBySize(RoomSize size) { return switch (size) { - case TINY -> Registration.MACHINE_BLOCK_ITEM_TINY.get(); - case SMALL -> Registration.MACHINE_BLOCK_ITEM_SMALL.get(); - case NORMAL -> Registration.MACHINE_BLOCK_ITEM_NORMAL.get(); - case LARGE -> Registration.MACHINE_BLOCK_ITEM_LARGE.get(); - case GIANT -> Registration.MACHINE_BLOCK_ITEM_GIANT.get(); - case MAXIMUM -> Registration.MACHINE_BLOCK_ITEM_MAXIMUM.get(); + case TINY -> Machines.MACHINE_BLOCK_ITEM_TINY.get(); + case SMALL -> Machines.MACHINE_BLOCK_ITEM_SMALL.get(); + case NORMAL -> Machines.MACHINE_BLOCK_ITEM_NORMAL.get(); + case LARGE -> Machines.MACHINE_BLOCK_ITEM_LARGE.get(); + case GIANT -> Machines.MACHINE_BLOCK_ITEM_GIANT.get(); + case MAXIMUM -> Machines.MACHINE_BLOCK_ITEM_MAXIMUM.get(); }; } diff --git a/src/main/java/dev/compactmods/machines/core/EnumMachinePlayersBreakHandling.java b/src/main/java/dev/compactmods/machines/machine/EnumMachinePlayersBreakHandling.java similarity index 93% rename from src/main/java/dev/compactmods/machines/core/EnumMachinePlayersBreakHandling.java rename to src/main/java/dev/compactmods/machines/machine/EnumMachinePlayersBreakHandling.java index 5fa7bec6..9df6cee9 100644 --- a/src/main/java/dev/compactmods/machines/core/EnumMachinePlayersBreakHandling.java +++ b/src/main/java/dev/compactmods/machines/machine/EnumMachinePlayersBreakHandling.java @@ -1,4 +1,4 @@ -package dev.compactmods.machines.core; +package dev.compactmods.machines.machine; public enum EnumMachinePlayersBreakHandling { UNBREAKABLE("unbreakable", "Nobody can break while players are inside."), diff --git a/src/main/java/dev/compactmods/machines/machine/Machines.java b/src/main/java/dev/compactmods/machines/machine/Machines.java new file mode 100644 index 00000000..76d25be8 --- /dev/null +++ b/src/main/java/dev/compactmods/machines/machine/Machines.java @@ -0,0 +1,74 @@ +package dev.compactmods.machines.machine; + +import dev.compactmods.machines.CompactMachines; +import dev.compactmods.machines.core.Registries; +import dev.compactmods.machines.api.room.RoomSize; +import net.minecraft.world.item.Item; +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) + .strength(8.0F, 20.0F) + .requiresCorrectToolForDrops(); + + static final Supplier MACHINE_ITEM_PROPS = () -> new Item.Properties() + .tab(CompactMachines.COMPACT_MACHINES_ITEMS); + + public static final RegistryObject MACHINE_BLOCK_TINY = Registries.BLOCKS.register("machine_tiny", () -> + new CompactMachineBlock(RoomSize.TINY, MACHINE_BLOCK_PROPS)); + + public static final RegistryObject MACHINE_BLOCK_SMALL = Registries.BLOCKS.register("machine_small", () -> + new CompactMachineBlock(RoomSize.SMALL, MACHINE_BLOCK_PROPS)); + + public static final RegistryObject MACHINE_BLOCK_NORMAL = Registries.BLOCKS.register("machine_normal", () -> + new CompactMachineBlock(RoomSize.NORMAL, MACHINE_BLOCK_PROPS)); + + public static final RegistryObject MACHINE_BLOCK_LARGE = Registries.BLOCKS.register("machine_large", () -> + new CompactMachineBlock(RoomSize.LARGE, MACHINE_BLOCK_PROPS)); + + public static final RegistryObject MACHINE_BLOCK_GIANT = Registries.BLOCKS.register("machine_giant", () -> + new CompactMachineBlock(RoomSize.GIANT, MACHINE_BLOCK_PROPS)); + + public static final RegistryObject MACHINE_BLOCK_MAXIMUM = Registries.BLOCKS.register("machine_maximum", () -> + new CompactMachineBlock(RoomSize.MAXIMUM, MACHINE_BLOCK_PROPS)); + + + + + public static final RegistryObject MACHINE_BLOCK_ITEM_TINY = Registries.ITEMS.register("machine_tiny", + () -> new CompactMachineItem(MACHINE_BLOCK_TINY.get(), MACHINE_ITEM_PROPS.get())); + + public static final RegistryObject MACHINE_BLOCK_ITEM_SMALL = Registries.ITEMS.register("machine_small", + () -> new CompactMachineItem(MACHINE_BLOCK_SMALL.get(), MACHINE_ITEM_PROPS.get())); + + public static final RegistryObject MACHINE_BLOCK_ITEM_NORMAL = Registries.ITEMS.register("machine_normal", + () -> new CompactMachineItem(MACHINE_BLOCK_NORMAL.get(), MACHINE_ITEM_PROPS.get())); + + public static final RegistryObject MACHINE_BLOCK_ITEM_LARGE = Registries.ITEMS.register("machine_large", + () -> new CompactMachineItem(MACHINE_BLOCK_LARGE.get(), MACHINE_ITEM_PROPS.get())); + + public static final RegistryObject MACHINE_BLOCK_ITEM_GIANT = Registries.ITEMS.register("machine_giant", + () -> new CompactMachineItem(MACHINE_BLOCK_GIANT.get(), MACHINE_ITEM_PROPS.get())); + + public static final RegistryObject MACHINE_BLOCK_ITEM_MAXIMUM = Registries.ITEMS.register("machine_maximum", + () -> 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(), + MACHINE_BLOCK_LARGE.get(), MACHINE_BLOCK_GIANT.get(), MACHINE_BLOCK_MAXIMUM.get()) + .build(null)); + + public static void prepare() { + + } +} diff --git a/src/main/java/dev/compactmods/machines/machine/graph/CompactMachineNode.java b/src/main/java/dev/compactmods/machines/machine/graph/CompactMachineNode.java index 65515c6b..71d9f6f7 100644 --- a/src/main/java/dev/compactmods/machines/machine/graph/CompactMachineNode.java +++ b/src/main/java/dev/compactmods/machines/machine/graph/CompactMachineNode.java @@ -3,7 +3,7 @@ import com.mojang.serialization.Codec; import com.mojang.serialization.codecs.RecordCodecBuilder; import dev.compactmods.machines.CompactMachines; -import dev.compactmods.machines.graph.CMGraphRegistration; +import dev.compactmods.machines.graph.Graph; import dev.compactmods.machines.graph.IGraphNode; import dev.compactmods.machines.graph.IGraphNodeType; import dev.compactmods.machines.location.LevelBlockPosition; @@ -12,8 +12,6 @@ import net.minecraft.resources.ResourceLocation; import net.minecraft.world.level.Level; -import java.util.Objects; - /** * Represents a machine's external point. This can be either inside a machine or in a dimension somewhere. */ @@ -38,6 +36,6 @@ public LevelBlockPosition dimpos() { @Override public IGraphNodeType getType() { - return CMGraphRegistration.MACH_NODE.get(); + return Graph.MACH_NODE.get(); } } diff --git a/src/main/java/dev/compactmods/machines/machine/graph/MachineRoomEdge.java b/src/main/java/dev/compactmods/machines/machine/graph/MachineRoomEdge.java index 1c53943d..5e66dca9 100644 --- a/src/main/java/dev/compactmods/machines/machine/graph/MachineRoomEdge.java +++ b/src/main/java/dev/compactmods/machines/machine/graph/MachineRoomEdge.java @@ -1,8 +1,6 @@ package dev.compactmods.machines.machine.graph; import com.mojang.serialization.Codec; -import com.mojang.serialization.codecs.RecordCodecBuilder; -import dev.compactmods.machines.graph.CMGraphRegistration; import dev.compactmods.machines.graph.GraphEdgeType; import dev.compactmods.machines.graph.IGraphEdge; import dev.compactmods.machines.graph.IGraphEdgeType; diff --git a/src/main/java/dev/compactmods/machines/machine/graph/legacy/LegacyMachineConnections.java b/src/main/java/dev/compactmods/machines/machine/graph/legacy/LegacyMachineConnections.java index 5cd92fb1..bd97899e 100644 --- a/src/main/java/dev/compactmods/machines/machine/graph/legacy/LegacyMachineConnections.java +++ b/src/main/java/dev/compactmods/machines/machine/graph/legacy/LegacyMachineConnections.java @@ -4,8 +4,8 @@ import com.mojang.serialization.codecs.RecordCodecBuilder; import dev.compactmods.machines.CompactMachines; import dev.compactmods.machines.api.codec.CodecExtensions; -import dev.compactmods.machines.core.MissingDimensionException; -import dev.compactmods.machines.core.Registration; +import dev.compactmods.machines.dimension.MissingDimensionException; +import dev.compactmods.machines.dimension.Dimension; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.NbtOps; import net.minecraft.server.MinecraftServer; @@ -27,7 +27,7 @@ private LegacyMachineConnections() { } public static LegacyMachineConnections get(MinecraftServer server) throws MissingDimensionException { - var compactDim = server.getLevel(Registration.COMPACT_DIMENSION); + var compactDim = server.getLevel(Dimension.COMPACT_DIMENSION); if(compactDim == null) throw new MissingDimensionException(); diff --git a/src/main/java/dev/compactmods/machines/machine/graph/legacy/LegacyMachineLocationsGraph.java b/src/main/java/dev/compactmods/machines/machine/graph/legacy/LegacyMachineLocationsGraph.java index cbf0a6bb..54ecd6f7 100644 --- a/src/main/java/dev/compactmods/machines/machine/graph/legacy/LegacyMachineLocationsGraph.java +++ b/src/main/java/dev/compactmods/machines/machine/graph/legacy/LegacyMachineLocationsGraph.java @@ -3,14 +3,12 @@ import com.mojang.serialization.Codec; import com.mojang.serialization.codecs.RecordCodecBuilder; import dev.compactmods.machines.CompactMachines; -import dev.compactmods.machines.core.MissingDimensionException; -import dev.compactmods.machines.core.Registration; +import dev.compactmods.machines.dimension.MissingDimensionException; +import dev.compactmods.machines.dimension.Dimension; import dev.compactmods.machines.location.LevelBlockPosition; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.NbtOps; -import net.minecraft.nbt.Tag; import net.minecraft.server.MinecraftServer; -import net.minecraft.world.level.ChunkPos; import net.minecraft.world.level.saveddata.SavedData; import java.util.HashMap; @@ -27,7 +25,7 @@ private LegacyMachineLocationsGraph() { } public static LegacyMachineLocationsGraph get(MinecraftServer server) throws MissingDimensionException { - var compactDim = server.getLevel(Registration.COMPACT_DIMENSION); + var compactDim = server.getLevel(Dimension.COMPACT_DIMENSION); if(compactDim == null) throw new MissingDimensionException(); diff --git a/src/main/java/dev/compactmods/machines/core/Capabilities.java b/src/main/java/dev/compactmods/machines/room/RoomCapabilities.java similarity index 79% rename from src/main/java/dev/compactmods/machines/core/Capabilities.java rename to src/main/java/dev/compactmods/machines/room/RoomCapabilities.java index 9f3d66b4..0d2a7507 100644 --- a/src/main/java/dev/compactmods/machines/core/Capabilities.java +++ b/src/main/java/dev/compactmods/machines/room/RoomCapabilities.java @@ -1,7 +1,6 @@ -package dev.compactmods.machines.core; +package dev.compactmods.machines.room; import dev.compactmods.machines.CompactMachines; -import dev.compactmods.machines.api.room.IRoomInformation; import dev.compactmods.machines.room.capability.PlayerRoomHistoryCapProvider; import dev.onyxstudios.cca.api.v3.block.BlockComponentFactoryRegistry; import dev.onyxstudios.cca.api.v3.block.BlockComponentInitializer; @@ -11,12 +10,15 @@ import dev.onyxstudios.cca.api.v3.entity.EntityComponentInitializer; import net.minecraft.resources.ResourceLocation; -public class Capabilities implements EntityComponentInitializer, BlockComponentInitializer { - - public static final ComponentKey ROOM = ComponentRegistry.getOrCreate(new ResourceLocation(CompactMachines.MOD_ID, "room"), IRoomInformation.class); +public class RoomCapabilities implements EntityComponentInitializer, BlockComponentInitializer { public static final ComponentKey ROOM_HISTORY = ComponentRegistry.getOrCreate(new ResourceLocation(CompactMachines.MOD_ID, "room_history"), PlayerRoomHistoryCapProvider.class); + @SubscribeEvent + void onCapRegistration(final RegisterCapabilitiesEvent evt) { + evt.register(IRoomHistory.class); + } + @Override public void registerEntityComponentFactories(EntityComponentFactoryRegistry registry) { registry.registerForPlayers(ROOM_HISTORY, PlayerRoomHistoryCapProvider::new); diff --git a/src/main/java/dev/compactmods/machines/room/RoomEventHandler.java b/src/main/java/dev/compactmods/machines/room/RoomEventHandler.java index 7b9f9ab0..c2507c1c 100644 --- a/src/main/java/dev/compactmods/machines/room/RoomEventHandler.java +++ b/src/main/java/dev/compactmods/machines/room/RoomEventHandler.java @@ -1,7 +1,7 @@ package dev.compactmods.machines.room; import dev.compactmods.machines.api.core.Messages; -import dev.compactmods.machines.core.Registration; +import dev.compactmods.machines.dimension.Dimension; import dev.compactmods.machines.i18n.TranslationUtil; import dev.compactmods.machines.room.data.CompactRoomData; import dev.compactmods.machines.room.exceptions.NonexistentRoomException; @@ -27,7 +27,7 @@ public class RoomEventHandler { public static boolean entityJoined(Entity ent, Level world, boolean loadedFromDisk) { // Early exit if spawning in non-CM dimensions - if ((ent instanceof Player) || !ent.level.dimension().equals(Registration.COMPACT_DIMENSION)) return true; + if ((ent instanceof Player) || !ent.level.dimension().equals(Dimension.COMPACT_DIMENSION)) return true; // no-op clients, we only care about blocking server spawns if(ent.level.isClientSide) return true; @@ -42,7 +42,7 @@ public static boolean onCheckSpawn(Mob ent, LevelAccessor world, double x, doubl Vec3 target = new Vec3(x, y, z); // Early exit if spawning in non-CM dimensions - if (!ent.level.dimension().equals(Registration.COMPACT_DIMENSION)) return true; + if (!ent.level.dimension().equals(Dimension.COMPACT_DIMENSION)) return true; if (!positionInsideRoom(ent, target)) return false; return true; @@ -51,7 +51,7 @@ public static boolean onCheckSpawn(Mob ent, LevelAccessor world, double x, doubl public static void onEntityTeleport(final EntityEvents.Teleport.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(Registration.COMPACT_DIMENSION)) return; + if(!evt.getEntity().level.dimension().equals(Dimension.COMPACT_DIMENSION)) return; Entity ent = evt.getEntity(); doEntityTeleportHandle(evt, evt.getTarget(), ent); @@ -68,7 +68,7 @@ public static void onEntityTeleport(final EntityEvents.Teleport.EntityTeleportEv */ private static boolean positionInsideRoom(Entity entity, Vec3 target) { final var level = entity.level; - if (!level.dimension().equals(Registration.COMPACT_DIMENSION)) return false; + if (!level.dimension().equals(Dimension.COMPACT_DIMENSION)) return false; if (level instanceof ServerLevel compactDim) { ChunkPos machineChunk = new ChunkPos(entity.chunkPosition().x, entity.chunkPosition().z); diff --git a/src/main/java/dev/compactmods/machines/room/RoomInformation.java b/src/main/java/dev/compactmods/machines/room/RoomInformation.java deleted file mode 100644 index b6e24a70..00000000 --- a/src/main/java/dev/compactmods/machines/room/RoomInformation.java +++ /dev/null @@ -1,19 +0,0 @@ -package dev.compactmods.machines.room; - -import dev.compactmods.machines.api.room.IRoomInformation; -import net.minecraft.nbt.CompoundTag; -import net.minecraft.server.level.ServerLevel; -import net.minecraft.world.level.ChunkPos; - -public record RoomInformation(ServerLevel level, ChunkPos chunk, RoomSize size) - implements IRoomInformation { - @Override - public void readFromNbt(CompoundTag tag) { - - } - - @Override - public void writeToNbt(CompoundTag tag) { - - } -} diff --git a/src/main/java/dev/compactmods/machines/room/Rooms.java b/src/main/java/dev/compactmods/machines/room/Rooms.java index 5a3ab83b..99c24169 100644 --- a/src/main/java/dev/compactmods/machines/room/Rooms.java +++ b/src/main/java/dev/compactmods/machines/room/Rooms.java @@ -4,10 +4,11 @@ import dev.compactmods.machines.CompactMachines; import dev.compactmods.machines.api.location.IDimensionalBlockPosition; import dev.compactmods.machines.api.location.IDimensionalPosition; +import dev.compactmods.machines.api.room.RoomSize; import dev.compactmods.machines.config.ServerConfig; +import dev.compactmods.machines.dimension.Dimension; import dev.compactmods.machines.location.LevelBlockPosition; -import dev.compactmods.machines.core.MissingDimensionException; -import dev.compactmods.machines.core.Registration; +import dev.compactmods.machines.dimension.MissingDimensionException; import dev.compactmods.machines.machine.graph.DimensionMachineGraph; import dev.compactmods.machines.room.data.CompactRoomData; import dev.compactmods.machines.room.exceptions.NonexistentRoomException; @@ -28,7 +29,7 @@ public class Rooms { public static ChunkPos createNew(MinecraftServer serv, RoomSize size, UUID owner) throws MissingDimensionException { - final var compactWorld = serv.getLevel(Registration.COMPACT_DIMENSION); + final var compactWorld = serv.getLevel(Dimension.COMPACT_DIMENSION); if (compactWorld == null) throw new MissingDimensionException(); @@ -141,26 +142,26 @@ public static Stream getConnectedMachines(MinecraftSe } public static RoomSize sizeOf(MinecraftServer server, ChunkPos room) throws NonexistentRoomException { - final var compactDim = server.getLevel(Registration.COMPACT_DIMENSION); + final var compactDim = server.getLevel(Dimension.COMPACT_DIMENSION); return CompactRoomData.get(compactDim) .getData(room) .getSize(); } public static IDimensionalPosition getSpawn(MinecraftServer server, ChunkPos room) { - final var compactDim = server.getLevel(Registration.COMPACT_DIMENSION); + final var compactDim = server.getLevel(Dimension.COMPACT_DIMENSION); return CompactRoomData.get(compactDim).getSpawn(room); } public static boolean exists(MinecraftServer server, ChunkPos room) { - final var compactDim = server.getLevel(Registration.COMPACT_DIMENSION); + final var compactDim = server.getLevel(Dimension.COMPACT_DIMENSION); return CompactRoomData.get(compactDim).isRegistered(room); } public static StructureTemplate getInternalBlocks(MinecraftServer server, ChunkPos room) throws MissingDimensionException, NonexistentRoomException { final var tem = new StructureTemplate(); - final var compactDim = server.getLevel(Registration.COMPACT_DIMENSION); + final var compactDim = server.getLevel(Dimension.COMPACT_DIMENSION); final var data = CompactRoomData.get(compactDim); final var roomInfo = data.getData(room); @@ -177,7 +178,7 @@ public static void resetSpawn(MinecraftServer server, ChunkPos room) throws None if(!exists(server, room)) throw new NonexistentRoomException(room); - final var compactDim = server.getLevel(Registration.COMPACT_DIMENSION); + final var compactDim = server.getLevel(Dimension.COMPACT_DIMENSION); final var data = CompactRoomData.get(compactDim); final var roomInfo = data.getData(room); @@ -192,7 +193,7 @@ public static Optional getRoomName(MinecraftServer server, ChunkPos room if(!exists(server, room)) throw new NonexistentRoomException(room); - final var compactDim = server.getLevel(Registration.COMPACT_DIMENSION); + final var compactDim = server.getLevel(Dimension.COMPACT_DIMENSION); final var data = CompactRoomData.get(compactDim); final var roomInfo = data.getData(room); @@ -203,7 +204,7 @@ public static Optional getOwner(MinecraftServer server, ChunkPos ro if(!exists(server, room)) return Optional.empty(); - final var compactDim = server.getLevel(Registration.COMPACT_DIMENSION); + final var compactDim = server.getLevel(Dimension.COMPACT_DIMENSION); final var data = CompactRoomData.get(compactDim); try { @@ -220,7 +221,7 @@ public static void updateName(MinecraftServer server, ChunkPos room, String newN if(!exists(server, room)) throw new NonexistentRoomException(room); - final var compactDim = server.getLevel(Registration.COMPACT_DIMENSION); + final var compactDim = server.getLevel(Dimension.COMPACT_DIMENSION); final var data = CompactRoomData.get(compactDim); final var roomInfo = data.getData(room); diff --git a/src/main/java/dev/compactmods/machines/room/capability/PlayerRoomHistoryCapProvider.java b/src/main/java/dev/compactmods/machines/room/capability/PlayerRoomHistoryCapProvider.java index 881976d4..0de19cfd 100644 --- a/src/main/java/dev/compactmods/machines/room/capability/PlayerRoomHistoryCapProvider.java +++ b/src/main/java/dev/compactmods/machines/room/capability/PlayerRoomHistoryCapProvider.java @@ -1,5 +1,11 @@ package dev.compactmods.machines.room.capability; +import javax.annotation.Nonnull; +import javax.annotation.Nullable; + +import dev.compactmods.machines.api.room.IRoomHistory; +import dev.compactmods.machines.room.RoomCapabilities; +import net.minecraft.core.Direction; import dev.onyxstudios.cca.api.v3.entity.PlayerComponent; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.Tag; diff --git a/src/main/java/dev/compactmods/machines/room/capability/RoomCapEventHandler.java b/src/main/java/dev/compactmods/machines/room/capability/RoomCapEventHandler.java index 423493c6..7f7e33e1 100644 --- a/src/main/java/dev/compactmods/machines/room/capability/RoomCapEventHandler.java +++ b/src/main/java/dev/compactmods/machines/room/capability/RoomCapEventHandler.java @@ -1,11 +1,9 @@ //package dev.compactmods.machines.room.capability; // //import dev.compactmods.machines.CompactMachines; -//import dev.compactmods.machines.core.Registration; //import net.minecraft.resources.ResourceLocation; //import net.minecraft.world.entity.Entity; //import net.minecraft.world.entity.player.Player; -//import net.minecraft.world.level.chunk.LevelChunk; //import net.minecraftforge.event.AttachCapabilitiesEvent; //import net.minecraftforge.eventbus.api.SubscribeEvent; //import net.minecraftforge.fml.common.Mod; 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 1f09fe38..8008bd64 100644 --- a/src/main/java/dev/compactmods/machines/room/client/MachineRoomScreen.java +++ b/src/main/java/dev/compactmods/machines/room/client/MachineRoomScreen.java @@ -10,11 +10,11 @@ import dev.compactmods.machines.client.render.RenderTypes; import dev.compactmods.machines.client.render.SuperRenderTypeBuffer; import dev.compactmods.machines.client.util.TransformingVertexBuilder; -import dev.compactmods.machines.core.Registration; import dev.compactmods.machines.location.LevelBlockPosition; import dev.compactmods.machines.room.menu.MachineRoomMenu; import dev.compactmods.machines.room.network.PlayerStartedRoomTrackingPacket; 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.screens.inventory.AbstractContainerScreen; @@ -65,7 +65,7 @@ public void updateBlockRender() { } private boolean hasPsdItem() { - return inv.contains(new ItemStack(Registration.PERSONAL_SHRINKING_DEVICE.get())); + return inv.contains(new ItemStack(Shrinking.PERSONAL_SHRINKING_DEVICE.get())); } @Override diff --git a/src/main/java/dev/compactmods/machines/room/data/CompactMachinesLootFunctions.java b/src/main/java/dev/compactmods/machines/room/data/CompactMachinesLootFunctions.java deleted file mode 100644 index ef2d042b..00000000 --- a/src/main/java/dev/compactmods/machines/room/data/CompactMachinesLootFunctions.java +++ /dev/null @@ -1,19 +0,0 @@ -package dev.compactmods.machines.room.data; - -import dev.compactmods.machines.CompactMachines; -import io.github.fabricators_of_create.porting_lib.util.LazyRegistrar; -import io.github.fabricators_of_create.porting_lib.util.RegistryObject; -import net.minecraft.core.Registry; -import net.minecraft.world.level.storage.loot.functions.LootItemFunctionType; - -public class CompactMachinesLootFunctions { - - private static final LazyRegistrar LOOT_FUNCS = LazyRegistrar.create(Registry.LOOT_FUNCTION_TYPE, CompactMachines.MOD_ID); - - public static RegistryObject COPY_ROOM_BINDING = LOOT_FUNCS.register("copy_room_binding", - () -> new LootItemFunctionType(new CopyRoomBindingFunction.Serializer())); - - public static void init() { - LOOT_FUNCS.register(); - } -} diff --git a/src/main/java/dev/compactmods/machines/room/data/CompactRoomData.java b/src/main/java/dev/compactmods/machines/room/data/CompactRoomData.java index c30fbf2d..6fff074b 100644 --- a/src/main/java/dev/compactmods/machines/room/data/CompactRoomData.java +++ b/src/main/java/dev/compactmods/machines/room/data/CompactRoomData.java @@ -7,9 +7,9 @@ import dev.compactmods.machines.api.codec.CodecExtensions; import dev.compactmods.machines.api.codec.NbtListCollector; import dev.compactmods.machines.config.ServerConfig; -import dev.compactmods.machines.core.Registration; +import dev.compactmods.machines.dimension.Dimension; import dev.compactmods.machines.location.LevelBlockPosition; -import dev.compactmods.machines.room.RoomSize; +import dev.compactmods.machines.api.room.RoomSize; import dev.compactmods.machines.room.exceptions.NonexistentRoomException; import dev.compactmods.machines.util.MathUtil; import net.minecraft.core.BlockPos; @@ -122,7 +122,7 @@ public LevelBlockPosition getSpawn(ChunkPos roomChunk) { return null; return new LevelBlockPosition( - Registration.COMPACT_DIMENSION, + Dimension.COMPACT_DIMENSION, roomData.getSpawn() ); } diff --git a/src/main/java/dev/compactmods/machines/room/data/CopyRoomBindingFunction.java b/src/main/java/dev/compactmods/machines/room/data/CopyRoomBindingFunction.java index 58c1568f..97527bc6 100644 --- a/src/main/java/dev/compactmods/machines/room/data/CopyRoomBindingFunction.java +++ b/src/main/java/dev/compactmods/machines/room/data/CopyRoomBindingFunction.java @@ -36,7 +36,7 @@ protected ItemStack run(ItemStack stack, LootContext ctx) { @Override public LootItemFunctionType getType() { - return CompactMachinesLootFunctions.COPY_ROOM_BINDING.get(); + return LootFunctions.COPY_ROOM_BINDING.get(); } public static class Serializer extends LootItemConditionalFunction.Serializer { diff --git a/src/main/java/dev/compactmods/machines/room/data/LootFunctions.java b/src/main/java/dev/compactmods/machines/room/data/LootFunctions.java new file mode 100644 index 00000000..49fdb15a --- /dev/null +++ b/src/main/java/dev/compactmods/machines/room/data/LootFunctions.java @@ -0,0 +1,15 @@ +package dev.compactmods.machines.room.data; + +import dev.compactmods.machines.core.Registries; +import net.minecraft.world.level.storage.loot.functions.LootItemFunctionType; +import net.minecraftforge.registries.RegistryObject; + +public class LootFunctions { + + public static RegistryObject COPY_ROOM_BINDING = Registries.LOOT_FUNCS.register("copy_room_binding", + () -> new LootItemFunctionType(new CopyRoomBindingFunction.Serializer())); + + public static void prepare() { + + } +} diff --git a/src/main/java/dev/compactmods/machines/room/data/RoomPreview.java b/src/main/java/dev/compactmods/machines/room/data/RoomPreview.java index 021e43f6..28b10d47 100644 --- a/src/main/java/dev/compactmods/machines/room/data/RoomPreview.java +++ b/src/main/java/dev/compactmods/machines/room/data/RoomPreview.java @@ -3,7 +3,7 @@ import com.mojang.serialization.Codec; import com.mojang.serialization.codecs.RecordCodecBuilder; import dev.compactmods.machines.api.codec.CodecExtensions; -import dev.compactmods.machines.room.RoomSize; +import dev.compactmods.machines.api.room.RoomSize; import net.minecraft.world.level.ChunkPos; public record RoomPreview(ChunkPos chunk, RoomSize size) { diff --git a/src/main/java/dev/compactmods/machines/room/graph/CompactMachineRoomNode.java b/src/main/java/dev/compactmods/machines/room/graph/CompactMachineRoomNode.java index 91d9a401..badc1fac 100644 --- a/src/main/java/dev/compactmods/machines/room/graph/CompactMachineRoomNode.java +++ b/src/main/java/dev/compactmods/machines/room/graph/CompactMachineRoomNode.java @@ -4,7 +4,7 @@ import com.mojang.serialization.codecs.RecordCodecBuilder; import dev.compactmods.machines.CompactMachines; import dev.compactmods.machines.api.codec.CodecExtensions; -import dev.compactmods.machines.graph.CMGraphRegistration; +import dev.compactmods.machines.graph.Graph; import dev.compactmods.machines.graph.IGraphNode; import dev.compactmods.machines.graph.IGraphNodeType; import net.minecraft.resources.ResourceLocation; @@ -30,6 +30,6 @@ public String toString() { @Override public IGraphNodeType getType() { - return CMGraphRegistration.ROOM_NODE.get(); + return Graph.ROOM_NODE.get(); } } diff --git a/src/main/java/dev/compactmods/machines/room/menu/MachineRoomMenu.java b/src/main/java/dev/compactmods/machines/room/menu/MachineRoomMenu.java index 077e3407..e5807c43 100644 --- a/src/main/java/dev/compactmods/machines/room/menu/MachineRoomMenu.java +++ b/src/main/java/dev/compactmods/machines/room/menu/MachineRoomMenu.java @@ -1,7 +1,7 @@ package dev.compactmods.machines.room.menu; import dev.compactmods.machines.CompactMachines; -import dev.compactmods.machines.core.MissingDimensionException; +import dev.compactmods.machines.dimension.MissingDimensionException; import dev.compactmods.machines.core.UIRegistration; import dev.compactmods.machines.location.LevelBlockPosition; import dev.compactmods.machines.room.Rooms; 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 1fe87c60..a94017c0 100644 --- a/src/main/java/dev/compactmods/machines/room/network/PlayerRequestedTeleportPacket.java +++ b/src/main/java/dev/compactmods/machines/room/network/PlayerRequestedTeleportPacket.java @@ -1,8 +1,8 @@ package dev.compactmods.machines.room.network; import dev.compactmods.machines.CompactMachines; -import dev.compactmods.machines.core.MissingDimensionException; import dev.compactmods.machines.location.LevelBlockPosition; +import dev.compactmods.machines.dimension.MissingDimensionException; import dev.compactmods.machines.util.PlayerUtil; import me.pepperbell.simplenetworking.C2SPacket; import me.pepperbell.simplenetworking.SimpleChannel; diff --git a/src/main/java/dev/compactmods/machines/room/network/PlayerStartedRoomTrackingPacket.java b/src/main/java/dev/compactmods/machines/room/network/PlayerStartedRoomTrackingPacket.java index 0a7202c7..51134dba 100644 --- a/src/main/java/dev/compactmods/machines/room/network/PlayerStartedRoomTrackingPacket.java +++ b/src/main/java/dev/compactmods/machines/room/network/PlayerStartedRoomTrackingPacket.java @@ -1,6 +1,6 @@ package dev.compactmods.machines.room.network; -import dev.compactmods.machines.core.MissingDimensionException; +import dev.compactmods.machines.dimension.MissingDimensionException; import dev.compactmods.machines.room.Rooms; import dev.compactmods.machines.room.exceptions.NonexistentRoomException; import me.pepperbell.simplenetworking.C2SPacket; @@ -12,7 +12,9 @@ import net.minecraft.server.network.ServerGamePacketListenerImpl; import net.minecraft.world.level.ChunkPos; -public record PlayerStartedRoomTrackingPacket(ChunkPos room) implements C2SPacket { +import java.util.function.Supplier; + +public record PlayerStartedRoomTrackingPacket(ChunkPos room) { public PlayerStartedRoomTrackingPacket(FriendlyByteBuf buf) { this(buf.readChunkPos()); diff --git a/src/main/java/dev/compactmods/machines/item/PersonalShrinkingDevice.java b/src/main/java/dev/compactmods/machines/shrinking/PersonalShrinkingDevice.java similarity index 92% rename from src/main/java/dev/compactmods/machines/item/PersonalShrinkingDevice.java rename to src/main/java/dev/compactmods/machines/shrinking/PersonalShrinkingDevice.java index 5ba1057c..2c560302 100644 --- a/src/main/java/dev/compactmods/machines/item/PersonalShrinkingDevice.java +++ b/src/main/java/dev/compactmods/machines/shrinking/PersonalShrinkingDevice.java @@ -1,9 +1,9 @@ -package dev.compactmods.machines.item; +package dev.compactmods.machines.shrinking; import dev.compactmods.machines.api.core.Messages; import dev.compactmods.machines.api.core.Tooltips; import dev.compactmods.machines.client.gui.PersonalShrinkingDeviceScreen; -import dev.compactmods.machines.core.Registration; +import dev.compactmods.machines.dimension.Dimension; import dev.compactmods.machines.i18n.TranslationUtil; import dev.compactmods.machines.room.data.CompactRoomData; import dev.compactmods.machines.util.PlayerUtil; @@ -55,14 +55,14 @@ public InteractionResultHolder use(Level world, Player player, Intera // If we aren't in the compact dimension, allow PSD guide usage // Prevents misfiring if a player is trying to leave a machine or set their spawn - if (world.isClientSide && world.dimension() != Registration.COMPACT_DIMENSION) { + if (world.isClientSide && world.dimension() != Dimension.COMPACT_DIMENSION) { PersonalShrinkingDeviceScreen.show(); return InteractionResultHolder.success(stack); } if (world instanceof ServerLevel && player instanceof ServerPlayer serverPlayer) { ServerLevel playerDim = serverPlayer.getLevel(); - if (playerDim.dimension().equals(Registration.COMPACT_DIMENSION)) { + if (playerDim.dimension().equals(Dimension.COMPACT_DIMENSION)) { 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 new file mode 100644 index 00000000..99b2db8b --- /dev/null +++ b/src/main/java/dev/compactmods/machines/shrinking/Shrinking.java @@ -0,0 +1,18 @@ +package dev.compactmods.machines.shrinking; + +import dev.compactmods.machines.CompactMachines; +import dev.compactmods.machines.core.Registries; +import net.minecraft.world.item.Item; +import net.minecraftforge.registries.RegistryObject; + +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/BaseTunnelWallData.java b/src/main/java/dev/compactmods/machines/tunnel/BaseTunnelWallData.java index 9e4825d1..6c07ae7a 100644 --- a/src/main/java/dev/compactmods/machines/tunnel/BaseTunnelWallData.java +++ b/src/main/java/dev/compactmods/machines/tunnel/BaseTunnelWallData.java @@ -4,7 +4,6 @@ import com.mojang.serialization.codecs.RecordCodecBuilder; import dev.compactmods.machines.api.tunnels.TunnelDefinition; import dev.compactmods.machines.location.LevelBlockPosition; -import dev.compactmods.machines.core.Tunnels; import net.minecraft.resources.ResourceLocation; public record BaseTunnelWallData(LevelBlockPosition connection, ResourceLocation tunnelType) { diff --git a/src/main/java/dev/compactmods/machines/tunnel/TunnelItem.java b/src/main/java/dev/compactmods/machines/tunnel/TunnelItem.java index 1dba51f2..662fe93d 100644 --- a/src/main/java/dev/compactmods/machines/tunnel/TunnelItem.java +++ b/src/main/java/dev/compactmods/machines/tunnel/TunnelItem.java @@ -7,7 +7,10 @@ import dev.compactmods.machines.api.tunnels.TunnelDefinition; import dev.compactmods.machines.api.tunnels.redstone.IRedstoneTunnel; import dev.compactmods.machines.core.*; +import dev.compactmods.machines.dimension.MissingDimensionException; import dev.compactmods.machines.i18n.TranslationUtil; +import dev.compactmods.machines.dimension.Dimension; +import dev.compactmods.machines.room.RoomCapabilities; import dev.compactmods.machines.tunnel.graph.TunnelConnectionGraph; import dev.compactmods.machines.tunnel.network.TunnelAddedPacket; import dev.compactmods.machines.util.PlayerUtil; @@ -123,7 +126,7 @@ public InteractionResult useOn(UseOnContext context) { final BlockPos position = context.getClickedPos(); final BlockState state = level.getBlockState(position); - if(level instanceof ServerLevel sl && sl.dimension().equals(Registration.COMPACT_DIMENSION)) { + if(level instanceof ServerLevel sl && sl.dimension().equals(Dimension.COMPACT_DIMENSION)) { if (state.getBlock() instanceof SolidWallBlock && player != null) { getDefinition(context.getItemInHand()).ifPresent(def -> { try { @@ -143,7 +146,7 @@ public InteractionResult useOn(UseOnContext context) { } public static Optional getMachineBindingInfo(Player player) { - final var history = Capabilities.ROOM_HISTORY.maybeGet(player); + final var history = RoomCapabilities.ROOM_HISTORY.maybeGet(player); var mapped = history.map(hist -> { if (!hist.getHistory().hasHistory() && player instanceof ServerPlayer sp) { diff --git a/src/main/java/dev/compactmods/machines/tunnel/TunnelWallBlock.java b/src/main/java/dev/compactmods/machines/tunnel/TunnelWallBlock.java index 82b54c95..d71bac9e 100644 --- a/src/main/java/dev/compactmods/machines/tunnel/TunnelWallBlock.java +++ b/src/main/java/dev/compactmods/machines/tunnel/TunnelWallBlock.java @@ -4,12 +4,11 @@ import dev.compactmods.machines.api.tunnels.TunnelDefinition; import dev.compactmods.machines.api.tunnels.TunnelPosition; import dev.compactmods.machines.api.tunnels.lifecycle.TunnelTeardownHandler; -import dev.compactmods.machines.core.Registration; -import dev.compactmods.machines.core.Tunnels; +import dev.compactmods.machines.dimension.Dimension; import dev.compactmods.machines.i18n.TranslationUtil; import dev.compactmods.machines.tunnel.graph.TunnelConnectionGraph; import dev.compactmods.machines.wall.ProtectedWallBlock; -import io.github.fabricators_of_create.porting_lib.block.ConnectableRedstoneBlock; +import dev.compactmods.machines.wall.Walls; import net.minecraft.ChatFormatting; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; @@ -103,12 +102,12 @@ public InteractionResult use(BlockState state, Level level, BlockPos pos, Player if (!(level.getBlockEntity(pos) instanceof TunnelWallEntity tunnel)) return InteractionResult.FAIL; - if(level.dimension().equals(Registration.COMPACT_DIMENSION) && level instanceof ServerLevel compactDim) { + if(level.dimension().equals(Dimension.COMPACT_DIMENSION) && level instanceof ServerLevel compactDim) { var def = tunnel.getTunnelType(); final Direction tunnelWallSide = hitResult.getDirection(); if (player.isShiftKeyDown()) { - BlockState solidWall = Registration.BLOCK_SOLID_WALL.get().defaultBlockState(); + BlockState solidWall = Walls.BLOCK_SOLID_WALL.get().defaultBlockState(); level.setBlockAndUpdate(pos, solidWall); diff --git a/src/main/java/dev/compactmods/machines/tunnel/TunnelWallEntity.java b/src/main/java/dev/compactmods/machines/tunnel/TunnelWallEntity.java index c28754d4..29791ad9 100644 --- a/src/main/java/dev/compactmods/machines/tunnel/TunnelWallEntity.java +++ b/src/main/java/dev/compactmods/machines/tunnel/TunnelWallEntity.java @@ -2,23 +2,18 @@ import dev.compactmods.machines.CompactMachines; import dev.compactmods.machines.api.location.IDimensionalBlockPosition; -import dev.compactmods.machines.api.room.IRoomInformation; import dev.compactmods.machines.api.tunnels.TunnelDefinition; import dev.compactmods.machines.api.tunnels.TunnelPosition; import dev.compactmods.machines.api.tunnels.capability.CapabilityTunnel; import dev.compactmods.machines.api.tunnels.lifecycle.InstancedTunnel; import dev.compactmods.machines.api.tunnels.lifecycle.TunnelInstance; import dev.compactmods.machines.api.tunnels.lifecycle.TunnelTeardownHandler; -import dev.compactmods.machines.core.Capabilities; -import dev.compactmods.machines.core.MissingDimensionException; -import dev.compactmods.machines.core.Registration; -import dev.compactmods.machines.core.Tunnels; +import dev.compactmods.machines.dimension.Dimension; +import dev.compactmods.machines.dimension.MissingDimensionException; import dev.compactmods.machines.location.LevelBlockPosition; import dev.compactmods.machines.machine.graph.legacy.LegacyMachineLocationsGraph; import dev.compactmods.machines.tunnel.graph.TunnelConnectionGraph; -import io.github.fabricators_of_create.porting_lib.block.CustomUpdateTagHandlingBlockEntity; -import io.github.fabricators_of_create.porting_lib.extensions.INBTSerializable; -import io.github.fabricators_of_create.porting_lib.util.LazyOptional; +import dev.compactmods.machines.wall.Walls; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.nbt.CompoundTag; @@ -44,8 +39,6 @@ public class TunnelWallEntity extends BlockEntity implements CustomUpdateTagHand private LevelBlockPosition connectedMachine; private TunnelDefinition tunnelType; - private Optional ROOM = Optional.empty(); - @Nullable private TunnelInstance tunnel; @@ -95,9 +88,6 @@ public void onLoad() { super.onLoad(); if (level instanceof ServerLevel sl) { - var chunk = level.getChunkAt(worldPosition); - ROOM = Capabilities.ROOM.maybeGet(chunk); - if(legacyMachineId > -1) { try { this.upgradeLegacyData(); @@ -111,7 +101,7 @@ public void onLoad() { // Null tunnel types here mean it's being loaded into the world if (this.tunnelType != null && tunnelType.equals(Tunnels.UNKNOWN.get())) { CompactMachines.LOGGER.warn("Removing unknown tunnel type at {}", worldPosition.toShortString()); - sl.setBlock(worldPosition, Registration.BLOCK_SOLID_WALL.get().defaultBlockState(), Block.UPDATE_ALL); + sl.setBlock(worldPosition, Walls.BLOCK_SOLID_WALL.get().defaultBlockState(), Block.UPDATE_ALL); } } } @@ -279,12 +269,12 @@ public void disconnect() { return; } - if(level instanceof ServerLevel compactDim && compactDim.dimension().equals(Registration.COMPACT_DIMENSION)) { + if(level instanceof ServerLevel compactDim && compactDim.dimension().equals(Dimension.COMPACT_DIMENSION)) { final var tunnelData = TunnelConnectionGraph.forRoom(compactDim, new ChunkPos(worldPosition)); tunnelData.unregister(worldPosition); this.connectedMachine = null; - compactDim.setBlock(worldPosition, Registration.BLOCK_SOLID_WALL.get().defaultBlockState(), Block.UPDATE_ALL); + compactDim.setBlock(worldPosition, Walls.BLOCK_SOLID_WALL.get().defaultBlockState(), Block.UPDATE_ALL); } } } diff --git a/src/main/java/dev/compactmods/machines/core/Tunnels.java b/src/main/java/dev/compactmods/machines/tunnel/Tunnels.java similarity index 74% rename from src/main/java/dev/compactmods/machines/core/Tunnels.java rename to src/main/java/dev/compactmods/machines/tunnel/Tunnels.java index fdc77d25..710ee6bc 100644 --- a/src/main/java/dev/compactmods/machines/core/Tunnels.java +++ b/src/main/java/dev/compactmods/machines/tunnel/Tunnels.java @@ -1,10 +1,8 @@ -package dev.compactmods.machines.core; +package dev.compactmods.machines.tunnel; import dev.compactmods.machines.CompactMachines; import dev.compactmods.machines.api.tunnels.TunnelDefinition; -import dev.compactmods.machines.tunnel.TunnelItem; -import dev.compactmods.machines.tunnel.TunnelWallBlock; -import dev.compactmods.machines.tunnel.TunnelWallEntity; +import dev.compactmods.machines.core.Registries; import dev.compactmods.machines.tunnel.definitions.FluidTunnel; import dev.compactmods.machines.tunnel.definitions.ForgeEnergyTunnel; import dev.compactmods.machines.tunnel.definitions.ItemTunnel; @@ -26,19 +24,7 @@ public class Tunnels { - // region Setup - - public static final ResourceLocation DEFINITIONS_RL = new ResourceLocation(MOD_ID, "tunnel_types"); - - public static final Registry TUNNEL_DEF_REGISTRY = FabricRegistryBuilder.createSimple(TunnelDefinition.class, - DEFINITIONS_RL).buildAndRegister(); - - public static final LazyRegistrar DEFINITIONS = LazyRegistrar.create(TUNNEL_DEF_REGISTRY, MOD_ID); - - public static void init() { - DEFINITIONS.register(); - } - // endregion + public static final Supplier> TUNNEL_DEF_REGISTRY = Registries.TUNNEL_DEFINITIONS.makeRegistry(RegistryBuilder::new); public static boolean isRegistered(ResourceLocation id) { return TUNNEL_DEF_REGISTRY.containsKey(id); @@ -53,30 +39,30 @@ public static TunnelDefinition getDefinition(ResourceLocation id) { // ================================================================================================================ // TUNNELS // ================================================================================================================ - public static final RegistryObject UNKNOWN = DEFINITIONS.register("unknown", UnknownTunnel::new); + public static final RegistryObject UNKNOWN = Registries.TUNNEL_DEFINITIONS.register("unknown", UnknownTunnel::new); - public static final RegistryObject ITEM_TUNNEL = Registration.ITEMS.register("tunnel", () -> - new TunnelItem(Registration.BASIC_ITEM_PROPS.get())); + public static final RegistryObject ITEM_TUNNEL = Registries.ITEMS.register("tunnel", () -> + new TunnelItem(new Item.Properties().tab(CompactMachines.COMPACT_MACHINES_ITEMS))); // ================================================================================================================ // TUNNEL TYPE DEFINITIONS // ================================================================================================================ - public static final RegistryObject ITEM_TUNNEL_DEF = DEFINITIONS.register("item", ItemTunnel::new); + public static final RegistryObject ITEM_TUNNEL_DEF = Registries.TUNNEL_DEFINITIONS.register("item", ItemTunnel::new); - public static final RegistryObject FLUID_TUNNEL_DEF = DEFINITIONS.register("fluid", FluidTunnel::new); + public static final RegistryObject FLUID_TUNNEL_DEF = Registries.TUNNEL_DEFINITIONS.register("fluid", FluidTunnel::new); - public static final RegistryObject FORGE_ENERGY = DEFINITIONS.register("energy", ForgeEnergyTunnel::new); + public static final RegistryObject FORGE_ENERGY = Registries.TUNNEL_DEFINITIONS.register("energy", ForgeEnergyTunnel::new); // ================================================================================================================ // TUNNEL BLOCKS / TILES // ================================================================================================================ - public static final RegistryObject BLOCK_TUNNEL_WALL = Registration.BLOCKS.register("tunnel_wall", () -> + public static final RegistryObject BLOCK_TUNNEL_WALL = Registries.BLOCKS.register("tunnel_wall", () -> new TunnelWallBlock(BlockBehaviour.Properties.of(Material.METAL, MaterialColor.CLAY) .strength(-1.0F, 3600000.8F) .sound(SoundType.METAL) .lightLevel((state) -> 15))); - public static final RegistryObject> TUNNEL_BLOCK_ENTITY = Registration.BLOCK_ENTITIES + public static final RegistryObject> TUNNEL_BLOCK_ENTITY = Registries.BLOCK_ENTITIES .register("tunnel_wall", () -> BlockEntityType.Builder.of(TunnelWallEntity::new, BLOCK_TUNNEL_WALL.get()).build(null)); public static ResourceLocation getRegistryId(TunnelDefinition definition) { @@ -85,4 +71,7 @@ public static ResourceLocation getRegistryId(TunnelDefinition definition) { if (key == null) return new ResourceLocation(MOD_ID, "unknown"); return key; } + + public static void prepare() { + } } diff --git a/src/main/java/dev/compactmods/machines/tunnel/graph/TunnelConnectionGraph.java b/src/main/java/dev/compactmods/machines/tunnel/graph/TunnelConnectionGraph.java index 26b30ac7..ddbc3bdb 100644 --- a/src/main/java/dev/compactmods/machines/tunnel/graph/TunnelConnectionGraph.java +++ b/src/main/java/dev/compactmods/machines/tunnel/graph/TunnelConnectionGraph.java @@ -8,7 +8,7 @@ import dev.compactmods.machines.api.location.IDimensionalBlockPosition; import dev.compactmods.machines.api.tunnels.TunnelDefinition; import dev.compactmods.machines.api.tunnels.capability.CapabilityTunnel; -import dev.compactmods.machines.core.Tunnels; +import dev.compactmods.machines.tunnel.Tunnels; import dev.compactmods.machines.graph.*; import dev.compactmods.machines.location.LevelBlockPosition; import dev.compactmods.machines.machine.graph.CompactMachineNode; @@ -284,7 +284,7 @@ public CompoundTag serializeNBT() { HashMap nodeIds = new HashMap<>(); - final var nodeReg = CMGraphRegistration.NODE_TYPE_REG; + final var nodeReg = Graph.NODE_TYPE_REG; final var nodeRegCodec = nodeReg.byNameCodec() .dispatchStable(IGraphNode::getType, IGraphNodeType::codec); @@ -332,11 +332,11 @@ public void deserializeNBT(CompoundTag tag) { final var graphRoot = tag.getCompound("graph"); - final var nodeReg = CMGraphRegistration.NODE_TYPE_REG; + final var nodeReg = Graph.NODE_TYPE_REG; final var nodeRegCodec = nodeReg.byNameCodec() .dispatchStable(IGraphNode::getType, IGraphNodeType::codec); - final var edgeRegCodec = CMGraphRegistration.EDGE_TYPE_REG.byNameCodec() + final var edgeRegCodec = Graph.EDGE_TYPE_REG.byNameCodec() .dispatchStable(IGraphEdge::getEdgeType, IGraphEdgeType::codec); final var nodes = graphRoot.getList("nodes", Tag.TAG_COMPOUND); diff --git a/src/main/java/dev/compactmods/machines/tunnel/graph/TunnelNode.java b/src/main/java/dev/compactmods/machines/tunnel/graph/TunnelNode.java index 73904032..488ef4e6 100644 --- a/src/main/java/dev/compactmods/machines/tunnel/graph/TunnelNode.java +++ b/src/main/java/dev/compactmods/machines/tunnel/graph/TunnelNode.java @@ -3,7 +3,7 @@ import com.mojang.serialization.Codec; import com.mojang.serialization.codecs.RecordCodecBuilder; import dev.compactmods.machines.CompactMachines; -import dev.compactmods.machines.graph.CMGraphRegistration; +import dev.compactmods.machines.graph.Graph; import dev.compactmods.machines.graph.GraphNodeBase; import dev.compactmods.machines.graph.IGraphNodeType; import net.minecraft.core.BlockPos; @@ -58,6 +58,6 @@ public String toString() { @Override public IGraphNodeType getType() { - return CMGraphRegistration.TUNNEL_NODE.get(); + return Graph.TUNNEL_NODE.get(); } } diff --git a/src/main/java/dev/compactmods/machines/tunnel/graph/TunnelTypeEdge.java b/src/main/java/dev/compactmods/machines/tunnel/graph/TunnelTypeEdge.java index 5037c5f1..bcab00d9 100644 --- a/src/main/java/dev/compactmods/machines/tunnel/graph/TunnelTypeEdge.java +++ b/src/main/java/dev/compactmods/machines/tunnel/graph/TunnelTypeEdge.java @@ -3,7 +3,6 @@ import com.mojang.serialization.Codec; import com.mojang.serialization.codecs.RecordCodecBuilder; import dev.compactmods.machines.CompactMachines; -import dev.compactmods.machines.graph.CMGraphRegistration; import dev.compactmods.machines.graph.GraphEdgeType; import dev.compactmods.machines.graph.IGraphEdge; import dev.compactmods.machines.graph.IGraphEdgeType; diff --git a/src/main/java/dev/compactmods/machines/tunnel/graph/TunnelTypeNode.java b/src/main/java/dev/compactmods/machines/tunnel/graph/TunnelTypeNode.java index 5fa6b7dd..af9b6d0e 100644 --- a/src/main/java/dev/compactmods/machines/tunnel/graph/TunnelTypeNode.java +++ b/src/main/java/dev/compactmods/machines/tunnel/graph/TunnelTypeNode.java @@ -3,7 +3,7 @@ import com.mojang.serialization.Codec; import com.mojang.serialization.codecs.RecordCodecBuilder; import dev.compactmods.machines.CompactMachines; -import dev.compactmods.machines.graph.CMGraphRegistration; +import dev.compactmods.machines.graph.Graph; import dev.compactmods.machines.graph.GraphNodeBase; import dev.compactmods.machines.graph.IGraphNodeType; import net.minecraft.resources.ResourceLocation; @@ -57,6 +57,6 @@ public String toString() { @Override public IGraphNodeType getType() { - return CMGraphRegistration.TUNNEL_TYPE_NODE.get(); + return Graph.TUNNEL_TYPE_NODE.get(); } } diff --git a/src/main/java/dev/compactmods/machines/tunnel/network/TunnelAddedPacket.java b/src/main/java/dev/compactmods/machines/tunnel/network/TunnelAddedPacket.java index 534aee51..c82aee7c 100644 --- a/src/main/java/dev/compactmods/machines/tunnel/network/TunnelAddedPacket.java +++ b/src/main/java/dev/compactmods/machines/tunnel/network/TunnelAddedPacket.java @@ -1,7 +1,7 @@ package dev.compactmods.machines.tunnel.network; import dev.compactmods.machines.api.tunnels.TunnelDefinition; -import dev.compactmods.machines.core.Tunnels; +import dev.compactmods.machines.tunnel.Tunnels; import dev.compactmods.machines.tunnel.client.ClientTunnelHandler; import me.pepperbell.simplenetworking.S2CPacket; import me.pepperbell.simplenetworking.SimpleChannel; diff --git a/src/main/java/dev/compactmods/machines/upgrade/ChunkloadUpgradeItem.java b/src/main/java/dev/compactmods/machines/upgrade/ChunkloadUpgradeItem.java index 654e4be9..e06800f5 100644 --- a/src/main/java/dev/compactmods/machines/upgrade/ChunkloadUpgradeItem.java +++ b/src/main/java/dev/compactmods/machines/upgrade/ChunkloadUpgradeItem.java @@ -12,9 +12,11 @@ public ChunkloadUpgradeItem(Properties props) { } @Override public void fillItemCategory(CreativeModeTab tab, NonNullList stacks) { + if(!allowedIn(tab)) return; + final var stack = new ItemStack(MachineRoomUpgrades.CHUNKLOADER.get(), 1); final var info = stack.getOrCreateTagElement(RoomUpgradeHelper.NBT_UPGRADE_NODE); - info.putString(RoomUpgradeHelper.NBT_UPDATE_ID, ChunkloadUpgrade.REG_ID.toString()); + info.putString(RoomUpgradeHelper.NBT_UPGRADE_ID, ChunkloadUpgrade.REG_ID.toString()); stacks.add(stack); } diff --git a/src/main/java/dev/compactmods/machines/upgrade/MachineRoomUpgrades.java b/src/main/java/dev/compactmods/machines/upgrade/MachineRoomUpgrades.java index d8a10466..96034009 100644 --- a/src/main/java/dev/compactmods/machines/upgrade/MachineRoomUpgrades.java +++ b/src/main/java/dev/compactmods/machines/upgrade/MachineRoomUpgrades.java @@ -2,34 +2,23 @@ import dev.compactmods.machines.CompactMachines; import dev.compactmods.machines.api.room.upgrade.RoomUpgrade; -import dev.compactmods.machines.core.Registration; -import io.github.fabricators_of_create.porting_lib.util.LazyRegistrar; -import io.github.fabricators_of_create.porting_lib.util.RegistryObject; -import net.fabricmc.fabric.api.event.registry.FabricRegistryBuilder; -import net.minecraft.core.Registry; -import net.minecraft.resources.ResourceKey; -import net.minecraft.resources.ResourceLocation; +import dev.compactmods.machines.core.Registries; import net.minecraft.world.item.Item; -public class MachineRoomUpgrades { - - public static final ResourceLocation REGISTRY_NAME = new ResourceLocation(CompactMachines.MOD_ID, "room_upgrades"); - public static final ResourceKey> REGISTRY_KEY = ResourceKey.createRegistryKey(REGISTRY_NAME); +import java.util.function.Supplier; - public static final Registry REGISTRY = FabricRegistryBuilder.createSimple(RoomUpgrade.class, REGISTRY_NAME).buildAndRegister(); +public class MachineRoomUpgrades { - private static final LazyRegistrar UPGRADES = LazyRegistrar.create(REGISTRY, CompactMachines.MOD_ID); + public static final Supplier> REGISTRY = Registries.UPGRADES.makeRegistry(RegistryBuilder::new); // ================================================================================================================ - public static final RegistryObject CHUNKLOAD = UPGRADES.register(ChunkloadUpgrade.REG_ID.getPath(), ChunkloadUpgrade::new); + public static final RegistryObject CHUNKLOAD = Registries.UPGRADES.register(ChunkloadUpgrade.REG_ID.getPath(), ChunkloadUpgrade::new); - public static final RegistryObject CHUNKLOADER = Registration.ITEMS.register("chunkloader_upgrade", () -> new ChunkloadUpgradeItem(new Item.Properties() + 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() { - public static void init() { - UPGRADES.register(); } } 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 ab920bd2..a6c9cb09 100644 --- a/src/main/java/dev/compactmods/machines/upgrade/command/CMUpgradeRoomCommand.java +++ b/src/main/java/dev/compactmods/machines/upgrade/command/CMUpgradeRoomCommand.java @@ -4,9 +4,8 @@ import com.mojang.brigadier.context.CommandContext; import com.mojang.brigadier.exceptions.CommandSyntaxException; import dev.compactmods.machines.api.core.Messages; -import dev.compactmods.machines.api.room.upgrade.ILevelLoadedUpgradeListener; import dev.compactmods.machines.config.ServerConfig; -import dev.compactmods.machines.core.Registration; +import dev.compactmods.machines.dimension.Dimension; import dev.compactmods.machines.i18n.TranslationUtil; import dev.compactmods.machines.room.Rooms; import dev.compactmods.machines.upgrade.RoomUpgradeManager; @@ -48,7 +47,7 @@ private static int addToCurrentRoom(CommandContext ctx) thro final var level = ctx.getSource().getLevel(); final var serv = ctx.getSource().getServer(); - if (!level.dimension().equals(Registration.COMPACT_DIMENSION)) + if (!level.dimension().equals(Dimension.COMPACT_DIMENSION)) return -1; final var upg = RoomUpgradeArgument.getUpgrade(ctx, "upgrade"); @@ -90,7 +89,7 @@ private static int removeFromCurrentRoom(CommandContext ctx) final var level = ctx.getSource().getLevel(); final var serv = ctx.getSource().getServer(); - if (!level.dimension().equals(Registration.COMPACT_DIMENSION)) + if (!level.dimension().equals(Dimension.COMPACT_DIMENSION)) return -1; final var upg = RoomUpgradeArgument.getUpgrade(ctx, "upgrade"); 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 898bffaa..f1b80432 100644 --- a/src/main/java/dev/compactmods/machines/upgrade/command/RoomUpgradeArgument.java +++ b/src/main/java/dev/compactmods/machines/upgrade/command/RoomUpgradeArgument.java @@ -6,6 +6,7 @@ import com.mojang.brigadier.suggestion.SuggestionProvider; import dev.compactmods.machines.api.core.CMCommands; import dev.compactmods.machines.api.room.upgrade.RoomUpgrade; +import dev.compactmods.machines.core.Registries; import dev.compactmods.machines.i18n.TranslationUtil; import dev.compactmods.machines.upgrade.MachineRoomUpgrades; import net.minecraft.commands.CommandSourceStack; @@ -29,7 +30,7 @@ private RoomUpgradeArgument() { public static Optional getUpgrade(CommandContext stack, String argName) throws CommandSyntaxException { final var UPGRADES = MachineRoomUpgrades.REGISTRY; - ResourceKey resourcekey = getRegistryType(stack, argName, MachineRoomUpgrades.REGISTRY_KEY, ERROR_INVALID_UPGRADE); + ResourceKey resourcekey = getRegistryType(stack, argName, Registries.ROOM_UPGRADES_REG_KEY, ERROR_INVALID_UPGRADE); return Optional.ofNullable(UPGRADES.get(resourcekey.location())); } diff --git a/src/main/java/dev/compactmods/machines/upgrade/graph/RoomUpgradeGraphNode.java b/src/main/java/dev/compactmods/machines/upgrade/graph/RoomUpgradeGraphNode.java index 42301618..16fe89fe 100644 --- a/src/main/java/dev/compactmods/machines/upgrade/graph/RoomUpgradeGraphNode.java +++ b/src/main/java/dev/compactmods/machines/upgrade/graph/RoomUpgradeGraphNode.java @@ -2,7 +2,7 @@ import com.mojang.serialization.Codec; import com.mojang.serialization.codecs.RecordCodecBuilder; -import dev.compactmods.machines.graph.CMGraphRegistration; +import dev.compactmods.machines.graph.Graph; import dev.compactmods.machines.graph.IGraphNode; import dev.compactmods.machines.graph.IGraphNodeType; import net.minecraft.resources.ResourceLocation; @@ -15,6 +15,6 @@ public record RoomUpgradeGraphNode(ResourceLocation key) implements IGraphNode { @Override public IGraphNodeType getType() { - return CMGraphRegistration.ROOM_UPGRADE_NODE.get(); + return Graph.ROOM_UPGRADE_NODE.get(); } } diff --git a/src/main/java/dev/compactmods/machines/util/CompactStructureGenerator.java b/src/main/java/dev/compactmods/machines/util/CompactStructureGenerator.java index a7f075e2..8e6c5d92 100644 --- a/src/main/java/dev/compactmods/machines/util/CompactStructureGenerator.java +++ b/src/main/java/dev/compactmods/machines/util/CompactStructureGenerator.java @@ -1,7 +1,7 @@ package dev.compactmods.machines.util; -import dev.compactmods.machines.core.Registration; -import dev.compactmods.machines.room.RoomSize; +import dev.compactmods.machines.api.room.RoomSize; +import dev.compactmods.machines.wall.Walls; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.world.level.LevelAccessor; @@ -56,7 +56,7 @@ public static AABB getWallBounds(RoomSize size, BlockPos cubeCenter, Direction w * @param wallDirection */ public static void generateCompactWall(LevelAccessor world, RoomSize size, BlockPos cubeCenter, Direction wallDirection) { - final var unbreakableWall = Registration.BLOCK_SOLID_WALL.get().defaultBlockState(); + final var unbreakableWall = Walls.BLOCK_SOLID_WALL.get().defaultBlockState(); final var wallBounds = getWallBounds(size, cubeCenter, wallDirection); BlockPos.betweenClosedStream(wallBounds) diff --git a/src/main/java/dev/compactmods/machines/util/DimensionUtil.java b/src/main/java/dev/compactmods/machines/util/DimensionUtil.java index 6982f70e..5fe334c3 100644 --- a/src/main/java/dev/compactmods/machines/util/DimensionUtil.java +++ b/src/main/java/dev/compactmods/machines/util/DimensionUtil.java @@ -2,7 +2,7 @@ import com.mojang.serialization.JsonOps; import dev.compactmods.machines.CompactMachines; -import dev.compactmods.machines.core.Registration; +import dev.compactmods.machines.dimension.Dimension; import net.fabricmc.loader.api.FabricLoader; import net.minecraft.core.Registry; import net.minecraft.resources.RegistryOps; @@ -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, Registration.COMPACT_DIMENSION.location()); + final ResourceKey dimensionKey = ResourceKey.create(Registry.LEVEL_STEM_REGISTRY, Dimension.COMPACT_DIMENSION.location()); final var serverResources = server.getResourceManager(); @@ -38,7 +38,7 @@ public static void createAndRegisterWorldAndDimension(final MinecraftServer serv var reg = server.registryAccess(); var cmDimType = reg.registryOrThrow(Registry.DIMENSION_TYPE_REGISTRY) - .get(Registration.COMPACT_DIMENSION_DIM_TYPE); + .get(Dimension.COMPACT_DIMENSION_DIM_TYPE); var ops = RegistryOps.create(JsonOps.INSTANCE, reg); diff --git a/src/main/java/dev/compactmods/machines/util/PlayerUtil.java b/src/main/java/dev/compactmods/machines/util/PlayerUtil.java index bec5024d..8c8c3be1 100644 --- a/src/main/java/dev/compactmods/machines/util/PlayerUtil.java +++ b/src/main/java/dev/compactmods/machines/util/PlayerUtil.java @@ -4,16 +4,16 @@ import dev.compactmods.machines.CompactMachines; import dev.compactmods.machines.advancement.AdvancementTriggers; import dev.compactmods.machines.api.core.Messages; -import dev.compactmods.machines.core.Capabilities; -import dev.compactmods.machines.core.MissingDimensionException; -import dev.compactmods.machines.core.Registration; +import dev.compactmods.machines.api.room.IRoomHistory; +import dev.compactmods.machines.api.room.history.IRoomHistoryItem; +import dev.compactmods.machines.room.RoomCapabilities; +import dev.compactmods.machines.dimension.MissingDimensionException; +import dev.compactmods.machines.dimension.Dimension; import dev.compactmods.machines.i18n.TranslationUtil; import dev.compactmods.machines.location.PreciseDimensionalPosition; +import dev.compactmods.machines.location.SimpleTeleporter; import dev.compactmods.machines.machine.CompactMachineBlockEntity; import dev.compactmods.machines.room.Rooms; -import dev.compactmods.machines.api.room.IRoomHistory; -import dev.compactmods.machines.api.room.history.IRoomHistoryItem; -import dev.compactmods.machines.room.capability.PlayerRoomHistoryCapProvider; import dev.compactmods.machines.room.exceptions.NonexistentRoomException; import dev.compactmods.machines.room.history.PlayerRoomHistoryItem; import net.minecraft.core.BlockPos; @@ -24,7 +24,6 @@ import net.minecraft.world.level.ChunkPos; import net.minecraft.world.level.Level; import net.minecraft.world.level.LevelAccessor; -import net.minecraft.world.level.chunk.LevelChunk; import net.minecraft.world.phys.Vec3; import javax.annotation.Nonnull; import java.util.Optional; @@ -43,17 +42,17 @@ public static Optional getProfileByUUID(LevelAccessor world, UUID u public static void teleportPlayerIntoMachine(Level machineLevel, Player player, BlockPos machinePos) throws MissingDimensionException { MinecraftServer serv = machineLevel.getServer(); - ServerLevel compactWorld = serv.getLevel(Registration.COMPACT_DIMENSION); + ServerLevel compactWorld = serv.getLevel(Dimension.COMPACT_DIMENSION); if (compactWorld == null) { throw new MissingDimensionException("Compact dimension not found; player attempted to enter machine."); } - if(machineLevel.getBlockEntity(machinePos) instanceof CompactMachineBlockEntity tile) { + if (machineLevel.getBlockEntity(machinePos) instanceof CompactMachineBlockEntity tile) { final var targetRoom = tile.getConnectedRoom(); boolean grantAdvancement = targetRoom.isEmpty(); targetRoom.ifPresent(room -> { - if (player.level.dimension().equals(Registration.COMPACT_DIMENSION) && player.chunkPosition().equals(room)) { + if (player.level.dimension().equals(Dimension.COMPACT_DIMENSION) && player.chunkPosition().equals(room)) { if (player instanceof ServerPlayer sp) { AdvancementTriggers.RECURSIVE_ROOMS.trigger(sp); } @@ -62,10 +61,12 @@ public static void teleportPlayerIntoMachine(Level machineLevel, Player player, } try { + final var entry = PreciseDimensionalPosition.fromPlayer(player); + teleportPlayerIntoRoom(serv, player, room, grantAdvancement); // Mark the player as inside the machine, set external spawn, and yeet - Capabilities.ROOM_HISTORY.maybeGet(player).ifPresent(hist -> { + RoomCapabilities.ROOM_HISTORY.maybeGet(player).ifPresent(hist -> { var entry = PreciseDimensionalPosition.fromPlayer(player); hist.getHistory().addHistory(new PlayerRoomHistoryItem(entry, tile.getLevelPosition())); }); @@ -77,7 +78,7 @@ public static void teleportPlayerIntoMachine(Level machineLevel, Player player, } public static void teleportPlayerIntoRoom(MinecraftServer serv, Player player, ChunkPos room, boolean grantAdvancement) throws MissingDimensionException, NonexistentRoomException { - final var compactDim = serv.getLevel(Registration.COMPACT_DIMENSION); + final var compactDim = serv.getLevel(Dimension.COMPACT_DIMENSION); final var spawn = Rooms.getSpawn(serv, room); final var roomSize = Rooms.sizeOf(serv, room); @@ -91,13 +92,7 @@ public static void teleportPlayerIntoRoom(MinecraftServer serv, Player player, C Vec3 sr = spawn.getRotation().orElse(new Vec3(player.xRotO, player.yRotO, 0)); if (player instanceof ServerPlayer servPlayer) { - servPlayer.teleportTo( - compactDim, - sp.x, - sp.y, - sp.z, - (float) sr.y, - (float) sr.x); + servPlayer.changeDimension(compactDim, SimpleTeleporter.to(sp)); if (grantAdvancement) AdvancementTriggers.getTriggerForMachineClaim(roomSize).trigger(servPlayer); @@ -109,7 +104,7 @@ public static void teleportPlayerOutOfMachine(ServerLevel world, @Nonnull Server MinecraftServer serv = world.getServer(); - final Optional history = Capabilities.ROOM_HISTORY.maybeGet(serverPlayer); + final Optional history = RoomCapabilities.ROOM_HISTORY.maybeGet(serverPlayer); if (!history.isPresent()) { howDidYouGetThere(serverPlayer); @@ -117,8 +112,6 @@ public static void teleportPlayerOutOfMachine(ServerLevel world, @Nonnull Server } history.ifPresent(hist -> { - ChunkPos currentRoomChunk = new ChunkPos(serverPlayer.blockPosition()); - if (hist.getHistory().hasHistory()) { final IRoomHistoryItem prevArea = hist.getHistory().pop(); @@ -130,18 +123,13 @@ public static void teleportPlayerOutOfMachine(ServerLevel world, @Nonnull Server worldPos = spawnPoint.getExactPosition(); entryRot = spawnPoint.getRotation().orElse(Vec3.ZERO); - serverPlayer.teleportTo(level, worldPos.x(), worldPos.y(), worldPos.z(), (float) entryRot.y, (float) entryRot.x); + serverPlayer.changeDimension(level, SimpleTeleporter.to(worldPos)); } else { howDidYouGetThere(serverPlayer); hist.getHistory().clear(); teleportPlayerToRespawnOrOverworld(serv, serverPlayer); } - - final LevelChunk chunk = serv.getLevel(Registration.COMPACT_DIMENSION) - .getChunk(currentRoomChunk.x, currentRoomChunk.z); - - // TODO - Send changed players packet to other clients }); } @@ -161,6 +149,6 @@ public static void teleportPlayerToRespawnOrOverworld(MinecraftServer serv, @Non if (player.getRespawnPosition() != null) worldPos = LocationUtil.blockPosToVector(player.getRespawnPosition()); - player.teleportTo(level, worldPos.x(), worldPos.y(), worldPos.z(), 0, player.getRespawnAngle()); + player.changeDimension(level, SimpleTeleporter.to(worldPos)); } } diff --git a/src/main/java/dev/compactmods/machines/room/ItemBlockWall.java b/src/main/java/dev/compactmods/machines/wall/ItemBlockWall.java similarity index 89% rename from src/main/java/dev/compactmods/machines/room/ItemBlockWall.java rename to src/main/java/dev/compactmods/machines/wall/ItemBlockWall.java index 52d894c6..2ca5e4e2 100644 --- a/src/main/java/dev/compactmods/machines/room/ItemBlockWall.java +++ b/src/main/java/dev/compactmods/machines/wall/ItemBlockWall.java @@ -1,9 +1,6 @@ -package dev.compactmods.machines.room; +package dev.compactmods.machines.wall; -import javax.annotation.Nullable; -import java.util.List; import dev.compactmods.machines.api.core.Tooltips; -import dev.compactmods.machines.core.Registration; import dev.compactmods.machines.i18n.TranslationUtil; import net.minecraft.ChatFormatting; import net.minecraft.client.gui.screens.Screen; @@ -15,6 +12,9 @@ import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Block; +import javax.annotation.Nullable; +import java.util.List; + public class ItemBlockWall extends BlockItem { public ItemBlockWall(Block blockIn, Properties builder) { @@ -25,7 +25,7 @@ public ItemBlockWall(Block blockIn, Properties builder) { public void appendHoverText(ItemStack stack, @Nullable Level worldIn, List tooltip, TooltipFlag flagIn) { super.appendHoverText(stack, worldIn, tooltip, flagIn); - if (stack.getItem() == Registration.ITEM_SOLID_WALL.get()) { + if (stack.getItem() == Walls.ITEM_SOLID_WALL.get()) { MutableComponent text; if (Screen.hasShiftDown()) { text = TranslationUtil.tooltip(Tooltips.Details.SOLID_WALL) diff --git a/src/main/java/dev/compactmods/machines/wall/Walls.java b/src/main/java/dev/compactmods/machines/wall/Walls.java new file mode 100644 index 00000000..045670f9 --- /dev/null +++ b/src/main/java/dev/compactmods/machines/wall/Walls.java @@ -0,0 +1,36 @@ +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); + + public static final RegistryObject BLOCK_SOLID_WALL = Registries.BLOCKS.register("solid_wall", () -> + new SolidWallBlock(BlockBehaviour.Properties.of(Material.METAL, MaterialColor.CLAY) + .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) + .strength(3.0f, 128.0f) + .requiresCorrectToolForDrops())); + public static final RegistryObject ITEM_BREAKABLE_WALL = Registries.ITEMS.register("wall", () -> + new ItemBlockWall(BLOCK_BREAKABLE_WALL.get(), WALL_ITEM_PROPS.get())); + + public static void prepare() { + + } +} diff --git a/src/test/java/dev/compactmods/machines/test/ServerEvents.java b/src/test/java/dev/compactmods/machines/test/ServerEvents.java index 659b8e1f..f835ce4a 100644 --- a/src/test/java/dev/compactmods/machines/test/ServerEvents.java +++ b/src/test/java/dev/compactmods/machines/test/ServerEvents.java @@ -1,14 +1,14 @@ package dev.compactmods.machines.test; import dev.compactmods.machines.CompactMachines; -import dev.compactmods.machines.core.Registration; +import dev.compactmods.machines.dimension.Dimension; import dev.compactmods.machines.util.DimensionUtil; import net.minecraft.server.MinecraftServer; public class ServerEvents { public static void onServerStarted(final MinecraftServer serv) { - var compactLevel = serv.getLevel(Registration.COMPACT_DIMENSION); + var compactLevel = serv.getLevel(Dimension.COMPACT_DIMENSION); if (compactLevel == null) { CompactMachines.LOGGER.warn("Compact dimension not found; recreating it."); DimensionUtil.createAndRegisterWorldAndDimension(serv); diff --git a/src/test/java/dev/compactmods/machines/test/data/CodecTests.java b/src/test/java/dev/compactmods/machines/test/data/CodecTests.java index 761e8624..d55655f5 100644 --- a/src/test/java/dev/compactmods/machines/test/data/CodecTests.java +++ b/src/test/java/dev/compactmods/machines/test/data/CodecTests.java @@ -2,7 +2,7 @@ import com.mojang.serialization.DataResult; import dev.compactmods.machines.api.codec.CodecExtensions; -import dev.compactmods.machines.room.RoomSize; +import dev.compactmods.machines.api.room.RoomSize; import dev.compactmods.machines.test.TestBatches; import net.minecraft.gametest.framework.GameTest; import net.minecraft.gametest.framework.GameTestHelper; diff --git a/src/test/java/dev/compactmods/machines/test/worldgen/DimensionTests.java b/src/test/java/dev/compactmods/machines/test/worldgen/DimensionTests.java index 8182c5dc..52b2738d 100644 --- a/src/test/java/dev/compactmods/machines/test/worldgen/DimensionTests.java +++ b/src/test/java/dev/compactmods/machines/test/worldgen/DimensionTests.java @@ -1,6 +1,6 @@ package dev.compactmods.machines.test.worldgen; -import dev.compactmods.machines.core.Registration; +import dev.compactmods.machines.dimension.Dimension; import dev.compactmods.machines.test.TestBatches; import net.minecraft.gametest.framework.GameTest; import net.minecraft.gametest.framework.GameTestHelper; @@ -12,7 +12,7 @@ public static void dimensionRegistered(final GameTestHelper test) { var level = test.getLevel(); var server = level.getServer(); - var compact = server.getLevel(Registration.COMPACT_DIMENSION); + var compact = server.getLevel(Dimension.COMPACT_DIMENSION); if (compact == null) test.fail("Compact dimension not registered.");