diff --git a/build.gradle b/build.gradle index b03398b14..7e89a8919 100644 --- a/build.gradle +++ b/build.gradle @@ -1,14 +1,30 @@ + + +buildscript { + repositories { + maven { + url "https://plugins.gradle.org/m2/" + } + } + dependencies { + classpath "io.github.pacifistmc.forgix:Forgix:1.2.9" + } +} + plugins { id "architectury-plugin" version "3.4-SNAPSHOT" id "dev.architectury.loom" version "1.5+" apply false - id "io.github.pacifistmc.forgix" version "1.2.9" id "me.shedaniel.unified-publishing" version "0.1.+" } +apply plugin: "io.github.pacifistmc.forgix" + architectury { minecraft = rootProject.minecraft_version } + + forgix { group = "whocraft.tardis_refined" mergedJarName = "$rootProject.jar_name-mc$project.minecraft_version-v${rootProject.mod_version}.jar" @@ -83,15 +99,17 @@ allprojects { group = rootProject.maven_group repositories { - maven { - url "https://cursemaven.com" - } maven { name = "Fuzs Mod Resources" url = "https://raw.githubusercontent.com/Fuzss/modresources/main/maven/" } + + maven { + url "https://cursemaven.com" + } + maven { url 'https://jitpack.io' } flatDir { diff --git a/common/build.gradle b/common/build.gradle index 340400fa9..48025662f 100644 --- a/common/build.gradle +++ b/common/build.gradle @@ -12,7 +12,9 @@ dependencies { modImplementation "net.fabricmc:fabric-loader:${rootProject.fabric_loader_version}" // Forge Config API Port - modCompileOnlyApi "fuzs.forgeconfigapiport:forgeconfigapiport-fabric:${rootProject.forge_config_api_port_version}" + modCompileOnlyApi("fuzs.forgeconfigapiport:forgeconfigapiport-fabric:${rootProject.forge_config_api_port_version}") { + because "Ensure the dependency is resolved from the specified repository." + } modCompileOnlyApi ("com.github.iPortalTeam.ImmersivePortalsMod:imm_ptl_core:${rootProject.immersive_portals_version}"){ diff --git a/common/src/main/java/whocraft/tardis_refined/api/event/TardisCommonEvents.java b/common/src/main/java/whocraft/tardis_refined/api/event/TardisCommonEvents.java index a8f2af8bb..a9a903e32 100644 --- a/common/src/main/java/whocraft/tardis_refined/api/event/TardisCommonEvents.java +++ b/common/src/main/java/whocraft/tardis_refined/api/event/TardisCommonEvents.java @@ -4,8 +4,8 @@ import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.level.LevelAccessor; -import whocraft.tardis_refined.common.capability.TardisLevelOperator; -import whocraft.tardis_refined.common.capability.upgrades.Upgrade; +import whocraft.tardis_refined.common.capability.tardis.TardisLevelOperator; +import whocraft.tardis_refined.common.capability.tardis.upgrades.Upgrade; import whocraft.tardis_refined.common.entity.ControlEntity; import whocraft.tardis_refined.common.tardis.TardisNavLocation; import whocraft.tardis_refined.common.tardis.control.Control; diff --git a/common/src/main/java/whocraft/tardis_refined/client/ScreenHandler.java b/common/src/main/java/whocraft/tardis_refined/client/ScreenHandler.java index ed464f68c..dbcad1177 100644 --- a/common/src/main/java/whocraft/tardis_refined/client/ScreenHandler.java +++ b/common/src/main/java/whocraft/tardis_refined/client/ScreenHandler.java @@ -14,8 +14,8 @@ import whocraft.tardis_refined.client.screen.waypoints.CoordInputType; import whocraft.tardis_refined.client.screen.waypoints.WaypointListScreen; import whocraft.tardis_refined.client.screen.waypoints.WaypointManageScreen; -import whocraft.tardis_refined.common.capability.TardisLevelOperator; -import whocraft.tardis_refined.common.capability.upgrades.UpgradeHandler; +import whocraft.tardis_refined.common.capability.tardis.TardisLevelOperator; +import whocraft.tardis_refined.common.capability.tardis.upgrades.UpgradeHandler; import whocraft.tardis_refined.common.tardis.TardisNavLocation; import whocraft.tardis_refined.common.tardis.TardisWaypoint; @@ -73,6 +73,7 @@ public static void displayUpgradesScreen(CompoundTag upgradeTag) { } } + @Environment(EnvType.CLIENT) public static void openShellSelection(ResourceLocation currentShell) { Minecraft.getInstance().setScreen(new ShellSelectionScreen(currentShell)); } diff --git a/common/src/main/java/whocraft/tardis_refined/client/TardisClientLogic.java b/common/src/main/java/whocraft/tardis_refined/client/TardisClientLogic.java index f230f1c16..bc89fee93 100644 --- a/common/src/main/java/whocraft/tardis_refined/client/TardisClientLogic.java +++ b/common/src/main/java/whocraft/tardis_refined/client/TardisClientLogic.java @@ -2,6 +2,7 @@ import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; +import net.minecraft.client.CameraType; import net.minecraft.client.Minecraft; import net.minecraft.client.multiplayer.ClientLevel; import net.minecraft.client.sounds.SoundManager; @@ -16,7 +17,8 @@ import net.minecraft.world.phys.Vec3; import whocraft.tardis_refined.client.sounds.*; import whocraft.tardis_refined.common.GravityUtil; -import whocraft.tardis_refined.common.capability.TardisLevelOperator; +import whocraft.tardis_refined.common.capability.player.TardisPlayerInfo; +import whocraft.tardis_refined.common.capability.tardis.TardisLevelOperator; import whocraft.tardis_refined.common.hum.HumEntry; import whocraft.tardis_refined.common.util.ClientHelper; import whocraft.tardis_refined.common.util.TardisHelper; @@ -46,6 +48,12 @@ public static void tickClientside(TardisClientData clientData) { Player player = Minecraft.getInstance().player; + TardisPlayerInfo.get(player).ifPresent(tardisPlayerInfo -> { + if(tardisPlayerInfo.isViewingTardis()){ + Minecraft.getInstance().options.setCameraType(CameraType.THIRD_PERSON_FRONT); + } + }); + if (player.level().dimensionTypeId() == TRDimensionTypes.TARDIS) { ClientLevel tardisLevel = Minecraft.getInstance().level; diff --git a/common/src/main/java/whocraft/tardis_refined/client/renderer/blockentity/console/GlobalConsoleRenderer.java b/common/src/main/java/whocraft/tardis_refined/client/renderer/blockentity/console/GlobalConsoleRenderer.java index c02038d0e..78c4b9595 100644 --- a/common/src/main/java/whocraft/tardis_refined/client/renderer/blockentity/console/GlobalConsoleRenderer.java +++ b/common/src/main/java/whocraft/tardis_refined/client/renderer/blockentity/console/GlobalConsoleRenderer.java @@ -2,13 +2,19 @@ import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.math.Axis; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.Font; import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.RenderType; import net.minecraft.client.renderer.blockentity.BlockEntityRenderer; import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; import net.minecraft.client.renderer.texture.OverlayTexture; +import net.minecraft.network.chat.Component; +import net.minecraft.network.chat.MutableComponent; import net.minecraft.resources.ResourceLocation; +import net.minecraft.util.FormattedCharSequence; import net.minecraft.world.phys.Vec3; +import org.joml.Matrix4f; import whocraft.tardis_refined.client.TardisClientData; import whocraft.tardis_refined.client.model.blockentity.console.ConsoleModelCollection; import whocraft.tardis_refined.client.model.blockentity.console.ConsoleUnit; @@ -17,6 +23,7 @@ import whocraft.tardis_refined.common.block.console.GlobalConsoleBlock; import whocraft.tardis_refined.common.blockentity.console.GlobalConsoleBlockEntity; import whocraft.tardis_refined.common.tardis.themes.ConsoleTheme; +import whocraft.tardis_refined.common.tardis.themes.ShellTheme; import whocraft.tardis_refined.patterns.ShellPattern; import whocraft.tardis_refined.patterns.ShellPatterns; @@ -90,7 +97,9 @@ private void renderHoloShell(Vec3 offset, int rotation, GlobalConsoleBlockEntity } model.renderShell(ShellSelectionScreen.globalShellBlockEntity, false, true, poseStack, bufferSource.getBuffer(RenderType.entityTranslucent(pattern.exteriorDoorTexture().texture())), packedLight, OverlayTexture.NO_OVERLAY, (float) color.x, (float) color.y, (float) color.z, 0.25f); + poseStack.popPose(); + } } diff --git a/common/src/main/java/whocraft/tardis_refined/client/screen/MonitorScreen.java b/common/src/main/java/whocraft/tardis_refined/client/screen/MonitorScreen.java index 70d4e20f4..d03af0d61 100644 --- a/common/src/main/java/whocraft/tardis_refined/client/screen/MonitorScreen.java +++ b/common/src/main/java/whocraft/tardis_refined/client/screen/MonitorScreen.java @@ -13,7 +13,7 @@ import whocraft.tardis_refined.client.screen.selections.DesktopSelectionScreen; import whocraft.tardis_refined.client.screen.selections.HumSelectionScreen; import whocraft.tardis_refined.client.screen.selections.SelectionScreen; -import whocraft.tardis_refined.common.capability.upgrades.UpgradeHandler; +import whocraft.tardis_refined.common.capability.tardis.upgrades.UpgradeHandler; import whocraft.tardis_refined.registry.TRUpgrades; import whocraft.tardis_refined.common.network.messages.EjectPlayerFromConsoleMessage; import whocraft.tardis_refined.common.network.messages.screens.C2SRequestShellSelection; diff --git a/common/src/main/java/whocraft/tardis_refined/client/screen/upgrades/BuyUpgradeScreen.java b/common/src/main/java/whocraft/tardis_refined/client/screen/upgrades/BuyUpgradeScreen.java index a5fdbd730..43318ba78 100644 --- a/common/src/main/java/whocraft/tardis_refined/client/screen/upgrades/BuyUpgradeScreen.java +++ b/common/src/main/java/whocraft/tardis_refined/client/screen/upgrades/BuyUpgradeScreen.java @@ -10,7 +10,7 @@ import net.minecraft.sounds.SoundEvents; import net.minecraft.util.FormattedCharSequence; import whocraft.tardis_refined.client.screen.components.BackgroundlessButton; -import whocraft.tardis_refined.common.capability.upgrades.Upgrade; +import whocraft.tardis_refined.common.capability.tardis.upgrades.Upgrade; import whocraft.tardis_refined.common.network.messages.upgrades.UnlockUpgradeMessage; import whocraft.tardis_refined.constants.ModMessages; diff --git a/common/src/main/java/whocraft/tardis_refined/client/screen/upgrades/UpgradeTab.java b/common/src/main/java/whocraft/tardis_refined/client/screen/upgrades/UpgradeTab.java index 25d402d3e..6b55f627f 100644 --- a/common/src/main/java/whocraft/tardis_refined/client/screen/upgrades/UpgradeTab.java +++ b/common/src/main/java/whocraft/tardis_refined/client/screen/upgrades/UpgradeTab.java @@ -9,8 +9,8 @@ import net.minecraft.network.chat.Component; import net.minecraft.util.Mth; import org.jetbrains.annotations.Nullable; -import whocraft.tardis_refined.common.capability.upgrades.Upgrade; -import whocraft.tardis_refined.common.capability.upgrades.UpgradeHandler; +import whocraft.tardis_refined.common.capability.tardis.upgrades.Upgrade; +import whocraft.tardis_refined.common.capability.tardis.upgrades.UpgradeHandler; import whocraft.tardis_refined.registry.TRUpgrades; import java.awt.*; diff --git a/common/src/main/java/whocraft/tardis_refined/client/screen/upgrades/UpgradeWidget.java b/common/src/main/java/whocraft/tardis_refined/client/screen/upgrades/UpgradeWidget.java index c2475b872..f8772f8e5 100644 --- a/common/src/main/java/whocraft/tardis_refined/client/screen/upgrades/UpgradeWidget.java +++ b/common/src/main/java/whocraft/tardis_refined/client/screen/upgrades/UpgradeWidget.java @@ -15,8 +15,8 @@ import net.minecraft.resources.ResourceLocation; import net.minecraft.util.FormattedCharSequence; import net.minecraft.util.Mth; -import whocraft.tardis_refined.common.capability.upgrades.Upgrade; -import whocraft.tardis_refined.common.capability.upgrades.UpgradeHandler; +import whocraft.tardis_refined.common.capability.tardis.upgrades.Upgrade; +import whocraft.tardis_refined.common.capability.tardis.upgrades.UpgradeHandler; import java.util.Collection; import java.util.LinkedList; diff --git a/common/src/main/java/whocraft/tardis_refined/client/screen/upgrades/UpgradesScreen.java b/common/src/main/java/whocraft/tardis_refined/client/screen/upgrades/UpgradesScreen.java index 6432fd358..7ed7bb62e 100644 --- a/common/src/main/java/whocraft/tardis_refined/client/screen/upgrades/UpgradesScreen.java +++ b/common/src/main/java/whocraft/tardis_refined/client/screen/upgrades/UpgradesScreen.java @@ -10,8 +10,8 @@ import net.minecraft.util.Mth; import org.jetbrains.annotations.Nullable; import whocraft.tardis_refined.TardisRefined; -import whocraft.tardis_refined.common.capability.upgrades.Upgrade; -import whocraft.tardis_refined.common.capability.upgrades.UpgradeHandler; +import whocraft.tardis_refined.common.capability.tardis.upgrades.Upgrade; +import whocraft.tardis_refined.common.capability.tardis.upgrades.UpgradeHandler; import whocraft.tardis_refined.constants.ModMessages; import java.util.ArrayList; diff --git a/common/src/main/java/whocraft/tardis_refined/command/arguments/UpgradeArgumentType.java b/common/src/main/java/whocraft/tardis_refined/command/arguments/UpgradeArgumentType.java index 2de3605d6..ac41a29c2 100644 --- a/common/src/main/java/whocraft/tardis_refined/command/arguments/UpgradeArgumentType.java +++ b/common/src/main/java/whocraft/tardis_refined/command/arguments/UpgradeArgumentType.java @@ -11,7 +11,7 @@ import net.minecraft.commands.SharedSuggestionProvider; import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; -import whocraft.tardis_refined.common.capability.upgrades.Upgrade; +import whocraft.tardis_refined.common.capability.tardis.upgrades.Upgrade; import whocraft.tardis_refined.registry.TRUpgrades; import whocraft.tardis_refined.constants.ModMessages; diff --git a/common/src/main/java/whocraft/tardis_refined/command/sub/InteriorCommand.java b/common/src/main/java/whocraft/tardis_refined/command/sub/InteriorCommand.java index 83bbd2f65..635412b8d 100644 --- a/common/src/main/java/whocraft/tardis_refined/command/sub/InteriorCommand.java +++ b/common/src/main/java/whocraft/tardis_refined/command/sub/InteriorCommand.java @@ -14,7 +14,7 @@ import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.entity.Entity; import net.minecraft.world.level.Level; -import whocraft.tardis_refined.common.capability.TardisLevelOperator; +import whocraft.tardis_refined.common.capability.tardis.TardisLevelOperator; import whocraft.tardis_refined.common.util.CommandHelper; import whocraft.tardis_refined.common.util.PlayerUtil; import whocraft.tardis_refined.common.util.TRTeleporter; diff --git a/common/src/main/java/whocraft/tardis_refined/command/sub/LevelCommand.java b/common/src/main/java/whocraft/tardis_refined/command/sub/LevelCommand.java index e202a34b0..98df58334 100644 --- a/common/src/main/java/whocraft/tardis_refined/command/sub/LevelCommand.java +++ b/common/src/main/java/whocraft/tardis_refined/command/sub/LevelCommand.java @@ -12,8 +12,8 @@ import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; import net.minecraft.server.level.ServerLevel; -import whocraft.tardis_refined.common.capability.TardisLevelOperator; -import whocraft.tardis_refined.common.capability.upgrades.UpgradeHandler; +import whocraft.tardis_refined.common.capability.tardis.TardisLevelOperator; +import whocraft.tardis_refined.common.capability.tardis.upgrades.UpgradeHandler; import whocraft.tardis_refined.common.util.CommandHelper; import whocraft.tardis_refined.common.util.TardisHelper; import whocraft.tardis_refined.constants.ModMessages; diff --git a/common/src/main/java/whocraft/tardis_refined/command/sub/UpgradesCommand.java b/common/src/main/java/whocraft/tardis_refined/command/sub/UpgradesCommand.java index d32fffbd9..cf048b8a8 100644 --- a/common/src/main/java/whocraft/tardis_refined/command/sub/UpgradesCommand.java +++ b/common/src/main/java/whocraft/tardis_refined/command/sub/UpgradesCommand.java @@ -13,8 +13,8 @@ import net.minecraft.resources.ResourceKey; import net.minecraft.server.level.ServerLevel; import whocraft.tardis_refined.command.arguments.UpgradeArgumentType; -import whocraft.tardis_refined.common.capability.TardisLevelOperator; -import whocraft.tardis_refined.common.capability.upgrades.Upgrade; +import whocraft.tardis_refined.common.capability.tardis.TardisLevelOperator; +import whocraft.tardis_refined.common.capability.tardis.upgrades.Upgrade; import whocraft.tardis_refined.registry.TRUpgrades; import whocraft.tardis_refined.common.util.CommandHelper; import whocraft.tardis_refined.common.util.TardisHelper; diff --git a/common/src/main/java/whocraft/tardis_refined/common/block/RootPlantBlock.java b/common/src/main/java/whocraft/tardis_refined/common/block/RootPlantBlock.java index 9a5f3bcdf..e3edd9c7e 100644 --- a/common/src/main/java/whocraft/tardis_refined/common/block/RootPlantBlock.java +++ b/common/src/main/java/whocraft/tardis_refined/common/block/RootPlantBlock.java @@ -8,9 +8,6 @@ import net.minecraft.sounds.SoundEvents; import net.minecraft.sounds.SoundSource; import net.minecraft.util.RandomSource; -import net.minecraft.world.entity.EntityType; -import net.minecraft.world.entity.item.ItemEntity; -import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.context.BlockPlaceContext; import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.Level; @@ -32,7 +29,7 @@ import org.jetbrains.annotations.Nullable; import whocraft.tardis_refined.common.block.shell.RootedShellBlock; import whocraft.tardis_refined.common.blockentity.shell.RootPlantBlockEntity; -import whocraft.tardis_refined.common.capability.TardisLevelOperator; +import whocraft.tardis_refined.common.capability.tardis.TardisLevelOperator; import whocraft.tardis_refined.common.util.ClientHelper; import whocraft.tardis_refined.common.util.TardisHelper; import whocraft.tardis_refined.registry.TRBlockRegistry; diff --git a/common/src/main/java/whocraft/tardis_refined/common/block/console/GlobalConsoleBlock.java b/common/src/main/java/whocraft/tardis_refined/common/block/console/GlobalConsoleBlock.java index 233c9c12f..d5c93bde9 100644 --- a/common/src/main/java/whocraft/tardis_refined/common/block/console/GlobalConsoleBlock.java +++ b/common/src/main/java/whocraft/tardis_refined/common/block/console/GlobalConsoleBlock.java @@ -2,11 +2,9 @@ import net.minecraft.client.multiplayer.ClientLevel; import net.minecraft.core.BlockPos; -import net.minecraft.core.Direction; import net.minecraft.core.particles.ParticleTypes; import net.minecraft.resources.ResourceLocation; import net.minecraft.server.level.ServerLevel; -import net.minecraft.sounds.SoundEvent; import net.minecraft.sounds.SoundEvents; import net.minecraft.sounds.SoundSource; import net.minecraft.util.RandomSource; @@ -19,8 +17,6 @@ import net.minecraft.world.level.LevelAccessor; import net.minecraft.world.level.block.BaseEntityBlock; import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.RedStoneOreBlock; -import net.minecraft.world.level.block.RedstoneLampBlock; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntityTicker; import net.minecraft.world.level.block.entity.BlockEntityType; @@ -33,7 +29,7 @@ import org.jetbrains.annotations.Nullable; import whocraft.tardis_refined.client.TardisClientData; import whocraft.tardis_refined.common.blockentity.console.GlobalConsoleBlockEntity; -import whocraft.tardis_refined.common.capability.TardisLevelOperator; +import whocraft.tardis_refined.common.capability.tardis.TardisLevelOperator; import whocraft.tardis_refined.common.tardis.manager.TardisPilotingManager; import whocraft.tardis_refined.common.util.ClientHelper; import whocraft.tardis_refined.common.util.PlayerUtil; diff --git a/common/src/main/java/whocraft/tardis_refined/common/block/device/ConsoleConfigurationBlock.java b/common/src/main/java/whocraft/tardis_refined/common/block/device/ConsoleConfigurationBlock.java index 84043314c..582ec82e8 100644 --- a/common/src/main/java/whocraft/tardis_refined/common/block/device/ConsoleConfigurationBlock.java +++ b/common/src/main/java/whocraft/tardis_refined/common/block/device/ConsoleConfigurationBlock.java @@ -28,7 +28,7 @@ import org.jetbrains.annotations.Nullable; import whocraft.tardis_refined.common.blockentity.console.GlobalConsoleBlockEntity; import whocraft.tardis_refined.common.blockentity.device.ConsoleConfigurationBlockEntity; -import whocraft.tardis_refined.common.capability.TardisLevelOperator; +import whocraft.tardis_refined.common.capability.tardis.TardisLevelOperator; import whocraft.tardis_refined.common.tardis.themes.ConsoleTheme; import whocraft.tardis_refined.common.util.PlayerUtil; import whocraft.tardis_refined.constants.ModMessages; diff --git a/common/src/main/java/whocraft/tardis_refined/common/block/device/FlightDetectorBlock.java b/common/src/main/java/whocraft/tardis_refined/common/block/device/FlightDetectorBlock.java index add329895..50bb238b1 100644 --- a/common/src/main/java/whocraft/tardis_refined/common/block/device/FlightDetectorBlock.java +++ b/common/src/main/java/whocraft/tardis_refined/common/block/device/FlightDetectorBlock.java @@ -21,7 +21,7 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import whocraft.tardis_refined.common.blockentity.device.FlightDetectorBlockEntity; -import whocraft.tardis_refined.common.capability.TardisLevelOperator; +import whocraft.tardis_refined.common.capability.tardis.TardisLevelOperator; import whocraft.tardis_refined.common.tardis.manager.TardisPilotingManager; public class FlightDetectorBlock extends HorizontalDirectionalBlock implements EntityBlock { diff --git a/common/src/main/java/whocraft/tardis_refined/common/block/device/LandingPad.java b/common/src/main/java/whocraft/tardis_refined/common/block/device/LandingPad.java index 9fac3a591..118372e37 100644 --- a/common/src/main/java/whocraft/tardis_refined/common/block/device/LandingPad.java +++ b/common/src/main/java/whocraft/tardis_refined/common/block/device/LandingPad.java @@ -21,8 +21,8 @@ import net.minecraft.world.level.block.state.properties.DirectionProperty; import net.minecraft.world.phys.BlockHitResult; import org.jetbrains.annotations.NotNull; -import whocraft.tardis_refined.common.capability.TardisLevelOperator; -import whocraft.tardis_refined.common.capability.upgrades.UpgradeHandler; +import whocraft.tardis_refined.common.capability.tardis.TardisLevelOperator; +import whocraft.tardis_refined.common.capability.tardis.upgrades.UpgradeHandler; import whocraft.tardis_refined.registry.TRUpgrades; import whocraft.tardis_refined.common.items.KeyItem; import whocraft.tardis_refined.common.tardis.TardisNavLocation; diff --git a/common/src/main/java/whocraft/tardis_refined/common/block/device/TerraformerBlock.java b/common/src/main/java/whocraft/tardis_refined/common/block/device/TerraformerBlock.java index 06ddb32ba..b889f60e8 100644 --- a/common/src/main/java/whocraft/tardis_refined/common/block/device/TerraformerBlock.java +++ b/common/src/main/java/whocraft/tardis_refined/common/block/device/TerraformerBlock.java @@ -22,7 +22,7 @@ import net.minecraft.world.phys.shapes.Shapes; import net.minecraft.world.phys.shapes.VoxelShape; import org.jetbrains.annotations.NotNull; -import whocraft.tardis_refined.common.capability.TardisLevelOperator; +import whocraft.tardis_refined.common.capability.tardis.TardisLevelOperator; import whocraft.tardis_refined.common.items.ScrewdriverItem; import whocraft.tardis_refined.common.tardis.TardisDesktops; import whocraft.tardis_refined.common.tardis.manager.TardisInteriorManager; diff --git a/common/src/main/java/whocraft/tardis_refined/common/block/door/GlobalDoorBlock.java b/common/src/main/java/whocraft/tardis_refined/common/block/door/GlobalDoorBlock.java index 7bf8b5267..456324fcf 100644 --- a/common/src/main/java/whocraft/tardis_refined/common/block/door/GlobalDoorBlock.java +++ b/common/src/main/java/whocraft/tardis_refined/common/block/door/GlobalDoorBlock.java @@ -5,7 +5,6 @@ import net.minecraft.server.level.ServerLevel; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; -import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.context.BlockPlaceContext; import net.minecraft.world.level.BlockGetter; @@ -20,7 +19,7 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import whocraft.tardis_refined.common.blockentity.door.GlobalDoorBlockEntity; -import whocraft.tardis_refined.common.capability.TardisLevelOperator; +import whocraft.tardis_refined.common.capability.tardis.TardisLevelOperator; import whocraft.tardis_refined.common.tardis.manager.AestheticHandler; public class GlobalDoorBlock extends InternalDoorBlock{ diff --git a/common/src/main/java/whocraft/tardis_refined/common/block/door/InternalDoorBlock.java b/common/src/main/java/whocraft/tardis_refined/common/block/door/InternalDoorBlock.java index e792d228e..7eacf302b 100644 --- a/common/src/main/java/whocraft/tardis_refined/common/block/door/InternalDoorBlock.java +++ b/common/src/main/java/whocraft/tardis_refined/common/block/door/InternalDoorBlock.java @@ -23,11 +23,9 @@ import org.jetbrains.annotations.Nullable; import whocraft.tardis_refined.common.blockentity.door.InternalDoorBlockEntity; import whocraft.tardis_refined.common.blockentity.door.TardisInternalDoor; -import whocraft.tardis_refined.common.capability.TardisLevelOperator; +import whocraft.tardis_refined.common.capability.tardis.TardisLevelOperator; import whocraft.tardis_refined.common.util.TRTeleporter; -import java.util.List; - public class InternalDoorBlock extends BaseEntityBlock { public static final DirectionProperty FACING = HorizontalDirectionalBlock.FACING; diff --git a/common/src/main/java/whocraft/tardis_refined/common/block/door/RootShellDoorBlock.java b/common/src/main/java/whocraft/tardis_refined/common/block/door/RootShellDoorBlock.java index 336379ffc..f67fa0eab 100644 --- a/common/src/main/java/whocraft/tardis_refined/common/block/door/RootShellDoorBlock.java +++ b/common/src/main/java/whocraft/tardis_refined/common/block/door/RootShellDoorBlock.java @@ -2,10 +2,8 @@ import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; -import net.minecraft.server.level.ServerLevel; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; -import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.player.Player; import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.Level; @@ -16,9 +14,7 @@ import net.minecraft.world.phys.shapes.CollisionContext; import net.minecraft.world.phys.shapes.VoxelShape; import org.jetbrains.annotations.Nullable; -import whocraft.tardis_refined.common.blockentity.door.GlobalDoorBlockEntity; import whocraft.tardis_refined.common.blockentity.door.RootShellDoorBlockEntity; -import whocraft.tardis_refined.common.capability.TardisLevelOperator; public class RootShellDoorBlock extends GlobalDoorBlock { diff --git a/common/src/main/java/whocraft/tardis_refined/common/block/life/ArsEggBlock.java b/common/src/main/java/whocraft/tardis_refined/common/block/life/ArsEggBlock.java index a23131e55..2620b757d 100644 --- a/common/src/main/java/whocraft/tardis_refined/common/block/life/ArsEggBlock.java +++ b/common/src/main/java/whocraft/tardis_refined/common/block/life/ArsEggBlock.java @@ -30,7 +30,7 @@ import net.minecraft.world.phys.shapes.VoxelShape; import org.jetbrains.annotations.Nullable; import whocraft.tardis_refined.common.blockentity.life.ArsEggBlockEntity; -import whocraft.tardis_refined.common.capability.TardisLevelOperator; +import whocraft.tardis_refined.common.capability.tardis.TardisLevelOperator; import whocraft.tardis_refined.common.network.messages.upgrades.S2CDisplayUpgradeScreen; import whocraft.tardis_refined.common.util.TardisHelper; diff --git a/common/src/main/java/whocraft/tardis_refined/common/blockentity/console/GlobalConsoleBlockEntity.java b/common/src/main/java/whocraft/tardis_refined/common/blockentity/console/GlobalConsoleBlockEntity.java index fc85ca931..895329556 100644 --- a/common/src/main/java/whocraft/tardis_refined/common/blockentity/console/GlobalConsoleBlockEntity.java +++ b/common/src/main/java/whocraft/tardis_refined/common/blockentity/console/GlobalConsoleBlockEntity.java @@ -9,6 +9,7 @@ import net.minecraft.resources.ResourceLocation; import net.minecraft.server.level.ServerLevel; import net.minecraft.world.entity.AnimationState; +import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.player.Player; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Block; @@ -18,7 +19,7 @@ import net.minecraft.world.phys.Vec3; import org.jetbrains.annotations.Nullable; import whocraft.tardis_refined.common.block.console.GlobalConsoleBlock; -import whocraft.tardis_refined.common.capability.TardisLevelOperator; +import whocraft.tardis_refined.common.capability.tardis.TardisLevelOperator; import whocraft.tardis_refined.common.entity.ControlEntity; import whocraft.tardis_refined.common.tardis.control.ControlSpecification; import whocraft.tardis_refined.common.tardis.manager.TardisInteriorManager; @@ -139,11 +140,16 @@ public void spawnControlEntities() { // Spawn a control! ControlEntity controlEntity = new ControlEntity(getLevel()); + controlEntity.setPosForDebug(control.offsetPosition()); + Vec3 location = LevelHelper.centerPos(currentBlockPos, true).add(control.offsetPosition().x(), control.offsetPosition().y(), control.offsetPosition().z()); controlEntity.setPos(location.x(), location.y(), location.z()); + controlEntity.assignControlData(consoleTheme, control, this.getBlockPos()); + + serverLevel.addFreshEntity(controlEntity); controlEntityList.add(controlEntity); } @@ -183,9 +189,7 @@ public void sendUpdates() { public void killControls() { - controlEntityList.forEach(x -> { - x.discard(); - }); + controlEntityList.forEach(Entity::discard); controlEntityList.clear(); } diff --git a/common/src/main/java/whocraft/tardis_refined/common/blockentity/door/AbstractDoorBlockEntity.java b/common/src/main/java/whocraft/tardis_refined/common/blockentity/door/AbstractDoorBlockEntity.java index 51fff2df8..2ef598f77 100644 --- a/common/src/main/java/whocraft/tardis_refined/common/blockentity/door/AbstractDoorBlockEntity.java +++ b/common/src/main/java/whocraft/tardis_refined/common/blockentity/door/AbstractDoorBlockEntity.java @@ -5,7 +5,6 @@ import net.minecraft.nbt.CompoundTag; import net.minecraft.server.level.ServerEntity; import net.minecraft.server.level.ServerLevel; -import net.minecraft.sounds.SoundEvent; import net.minecraft.sounds.SoundEvents; import net.minecraft.sounds.SoundSource; import net.minecraft.world.entity.Entity; @@ -17,8 +16,7 @@ import net.minecraft.world.level.block.state.properties.BlockSetType; import whocraft.tardis_refined.common.block.door.GlobalDoorBlock; import whocraft.tardis_refined.common.block.door.InternalDoorBlock; -import whocraft.tardis_refined.common.block.shell.ShellBaseBlock; -import whocraft.tardis_refined.common.capability.TardisLevelOperator; +import whocraft.tardis_refined.common.capability.tardis.TardisLevelOperator; import whocraft.tardis_refined.constants.NbtConstants; import java.util.Optional; diff --git a/common/src/main/java/whocraft/tardis_refined/common/blockentity/door/GlobalDoorBlockEntity.java b/common/src/main/java/whocraft/tardis_refined/common/blockentity/door/GlobalDoorBlockEntity.java index 248996ea5..eaa609fe6 100644 --- a/common/src/main/java/whocraft/tardis_refined/common/blockentity/door/GlobalDoorBlockEntity.java +++ b/common/src/main/java/whocraft/tardis_refined/common/blockentity/door/GlobalDoorBlockEntity.java @@ -13,7 +13,7 @@ import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; import org.jetbrains.annotations.Nullable; -import whocraft.tardis_refined.common.capability.TardisLevelOperator; +import whocraft.tardis_refined.common.capability.tardis.TardisLevelOperator; import whocraft.tardis_refined.common.tardis.themes.ShellTheme; import whocraft.tardis_refined.constants.NbtConstants; import whocraft.tardis_refined.patterns.ShellPattern; diff --git a/common/src/main/java/whocraft/tardis_refined/common/blockentity/shell/GlobalShellBlockEntity.java b/common/src/main/java/whocraft/tardis_refined/common/blockentity/shell/GlobalShellBlockEntity.java index 1886d4d6f..3a203381c 100644 --- a/common/src/main/java/whocraft/tardis_refined/common/blockentity/shell/GlobalShellBlockEntity.java +++ b/common/src/main/java/whocraft/tardis_refined/common/blockentity/shell/GlobalShellBlockEntity.java @@ -1,10 +1,8 @@ package whocraft.tardis_refined.common.blockentity.shell; -import net.minecraft.client.resources.sounds.Sound; import net.minecraft.core.BlockPos; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; -import net.minecraft.resources.ResourceKey; import net.minecraft.resources.ResourceLocation; import net.minecraft.server.level.ServerLevel; import net.minecraft.sounds.SoundEvents; @@ -18,7 +16,7 @@ import net.minecraft.world.level.block.state.BlockState; import whocraft.tardis_refined.common.block.shell.GlobalShellBlock; import whocraft.tardis_refined.common.block.shell.ShellBaseBlock; -import whocraft.tardis_refined.common.capability.TardisLevelOperator; +import whocraft.tardis_refined.common.capability.tardis.TardisLevelOperator; import whocraft.tardis_refined.common.dimension.DimensionHandler; import whocraft.tardis_refined.common.items.KeyItem; import whocraft.tardis_refined.common.tardis.manager.AestheticHandler; @@ -27,7 +25,6 @@ import whocraft.tardis_refined.patterns.sound.ConfiguredSound; import whocraft.tardis_refined.common.tardis.themes.ShellTheme; import whocraft.tardis_refined.common.util.PlayerUtil; -import whocraft.tardis_refined.compat.portals.ImmersivePortals; import whocraft.tardis_refined.constants.ModMessages; import whocraft.tardis_refined.constants.NbtConstants; import whocraft.tardis_refined.patterns.ShellPattern; diff --git a/common/src/main/java/whocraft/tardis_refined/common/blockentity/shell/RootedShellBlockEntity.java b/common/src/main/java/whocraft/tardis_refined/common/blockentity/shell/RootedShellBlockEntity.java index 105949d27..2d809bf65 100644 --- a/common/src/main/java/whocraft/tardis_refined/common/blockentity/shell/RootedShellBlockEntity.java +++ b/common/src/main/java/whocraft/tardis_refined/common/blockentity/shell/RootedShellBlockEntity.java @@ -10,7 +10,7 @@ import net.minecraft.world.level.Level; import net.minecraft.world.level.block.state.BlockState; import whocraft.tardis_refined.TardisRefined; -import whocraft.tardis_refined.common.capability.TardisLevelOperator; +import whocraft.tardis_refined.common.capability.tardis.TardisLevelOperator; import whocraft.tardis_refined.common.dimension.DimensionHandler; import whocraft.tardis_refined.common.tardis.TardisDesktops; import whocraft.tardis_refined.common.tardis.themes.DesktopTheme; diff --git a/common/src/main/java/whocraft/tardis_refined/common/blockentity/shell/ShellBaseBlockEntity.java b/common/src/main/java/whocraft/tardis_refined/common/blockentity/shell/ShellBaseBlockEntity.java index d8eebc5fd..039bc0d1b 100644 --- a/common/src/main/java/whocraft/tardis_refined/common/blockentity/shell/ShellBaseBlockEntity.java +++ b/common/src/main/java/whocraft/tardis_refined/common/blockentity/shell/ShellBaseBlockEntity.java @@ -23,10 +23,9 @@ import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.properties.BlockSetType; import whocraft.tardis_refined.TardisRefined; -import whocraft.tardis_refined.common.block.door.InternalDoorBlock; import whocraft.tardis_refined.common.block.shell.ShellBaseBlock; -import whocraft.tardis_refined.common.capability.TardisLevelOperator; -import whocraft.tardis_refined.common.capability.upgrades.UpgradeHandler; +import whocraft.tardis_refined.common.capability.tardis.TardisLevelOperator; +import whocraft.tardis_refined.common.capability.tardis.upgrades.UpgradeHandler; import whocraft.tardis_refined.registry.TRUpgrades; import whocraft.tardis_refined.common.dimension.DimensionHandler; import whocraft.tardis_refined.common.tardis.TardisDesktops; diff --git a/common/src/main/java/whocraft/tardis_refined/common/capability/player/TardisPilot.java b/common/src/main/java/whocraft/tardis_refined/common/capability/player/TardisPilot.java new file mode 100644 index 000000000..2d9b217f2 --- /dev/null +++ b/common/src/main/java/whocraft/tardis_refined/common/capability/player/TardisPilot.java @@ -0,0 +1,25 @@ +package whocraft.tardis_refined.common.capability.player; + +import net.minecraft.nbt.CompoundTag; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.world.entity.player.Player; +import whocraft.tardis_refined.common.capability.tardis.TardisLevelOperator; +import whocraft.tardis_refined.common.tardis.TardisNavLocation; + +import javax.annotation.Nullable; +import java.util.UUID; + +public interface TardisPilot { + + void setupPlayerForInspection(ServerPlayer serverPlayer, TardisLevelOperator tardisLevelOperator, TardisNavLocation spectateTarget); + + void endPlayerForInspection(ServerPlayer serverPlayer, TardisLevelOperator tardisLevelOperator); + UUID getViewedTardis(); + void setViewedTardis(UUID uuid); + boolean isViewingTardis(); + CompoundTag saveData(); + void loadData(CompoundTag tag); + Player getPlayer(); + void syncToClients(@Nullable ServerPlayer serverPlayerEntity); + +} diff --git a/common/src/main/java/whocraft/tardis_refined/common/capability/player/TardisPlayerInfo.java b/common/src/main/java/whocraft/tardis_refined/common/capability/player/TardisPlayerInfo.java new file mode 100644 index 000000000..c02cc4829 --- /dev/null +++ b/common/src/main/java/whocraft/tardis_refined/common/capability/player/TardisPlayerInfo.java @@ -0,0 +1,167 @@ +package whocraft.tardis_refined.common.capability.player; + +import dev.architectury.injectables.annotations.ExpectPlatform; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.level.GameType; +import whocraft.tardis_refined.common.blockentity.door.TardisInternalDoor; +import whocraft.tardis_refined.common.capability.tardis.TardisLevelOperator; +import whocraft.tardis_refined.common.network.messages.player.SyncTardisPlayerInfoMessage; +import whocraft.tardis_refined.common.tardis.TardisArchitectureHandler; +import whocraft.tardis_refined.common.tardis.TardisNavLocation; +import whocraft.tardis_refined.common.util.TardisHelper; + +import javax.annotation.Nullable; +import java.util.Optional; +import java.util.UUID; + +public class TardisPlayerInfo implements TardisPilot { + + private Player player; + private UUID viewedTardis; + private GameType gameTypeBackup; + private TardisNavLocation observationPosition; + + public TardisPlayerInfo(Player player) { + this.player = player; + } + + public GameType getGameTypeBackup() { + return gameTypeBackup; + } + + public void setGameTypeBackup(GameType gameTypeBackup) { + this.gameTypeBackup = gameTypeBackup; + } + + public void setPlayer(Player player) { + this.player = player; + } + + public TardisNavLocation getObservationPosition() { + return observationPosition; + } + + public void setObservationPosition(TardisNavLocation observationPosition) { + this.observationPosition = observationPosition; + } + + @ExpectPlatform + public static Optional get(LivingEntity player) { + throw new AssertionError(); + } + + + @Override + public void setupPlayerForInspection(ServerPlayer serverPlayer, TardisLevelOperator tardisLevelOperator, TardisNavLocation spectateTarget) { + + // Set the player's viewed TARDIS UUID + UUID uuid = UUID.fromString(tardisLevelOperator.getLevelKey().location().getPath()); + setViewedTardis(uuid); + + // Switch the player to spectator mode and teleport them to the TARDIS + setGameTypeBackup(serverPlayer.gameMode.getGameModeForPlayer()); + + if (tardisLevelOperator.getPilotingManager().getCurrentLocation() != null) { + + TardisNavLocation sourceLocation = tardisLevelOperator.getPilotingManager().getCurrentLocation(); + + TardisHelper.teleportEntityTardis(tardisLevelOperator, player, sourceLocation, spectateTarget, false); + serverPlayer.setGameMode(GameType.SPECTATOR); + + syncToClients(null); + } + + + } + + @Override + public void endPlayerForInspection(ServerPlayer serverPlayer, TardisLevelOperator tardisLevelOperator) { + + TardisInternalDoor internalDoor = tardisLevelOperator.getInternalDoor(); + + BlockPos targetPosition = internalDoor != null ? internalDoor.getTeleportPosition() : TardisArchitectureHandler.DESKTOP_CENTER_POS.above(); + Direction doorDirection = internalDoor != null ? internalDoor.getTeleportRotation() : serverPlayer.getDirection(); + ServerLevel tardisDimensionLevel = serverPlayer.server.getLevel(tardisLevelOperator.getLevelKey()); + + TardisNavLocation targetLocation = new TardisNavLocation(targetPosition, doorDirection, tardisDimensionLevel); + TardisNavLocation sourceLocation = tardisLevelOperator.getPilotingManager().getCurrentLocation(); + + TardisHelper.teleportEntityTardis(tardisLevelOperator, serverPlayer, sourceLocation, targetLocation, true); + + // Reset the player's game mode to their default (e.g., survival) + serverPlayer.setGameMode(gameTypeBackup); + // Clear the viewed TARDIS UUID + setViewedTardis(null); + + syncToClients(null); + } + + @Override + @Nullable + public UUID getViewedTardis() { + return viewedTardis; + } + + @Override + public void setViewedTardis(@Nullable UUID uuid) { + this.viewedTardis = uuid; + } + + @Override + public boolean isViewingTardis() { + return viewedTardis != null; + } + + @Override + public CompoundTag saveData() { + CompoundTag tag = new CompoundTag(); + if (viewedTardis != null) { + tag.putUUID("ViewedTardis", viewedTardis); + } + + if(gameTypeBackup != null) { + tag.putInt("playerGameType", gameTypeBackup.getId()); + } + + return tag; + } + + @Override + public void loadData(CompoundTag tag) { + + if (tag.hasUUID("ViewedTardis")) { + this.viewedTardis = tag.getUUID("ViewedTardis"); + } else { + this.viewedTardis = null; + } + + gameTypeBackup = GameType.byId(tag.getInt("playerGameType")); + + } + + @Override + public Player getPlayer() { + return player; + } + + @Override + public void syncToClients(@Nullable ServerPlayer serverPlayerEntity) { + if (player != null && player.level().isClientSide) + throw new IllegalStateException("Don't sync client -> server"); + + CompoundTag nbt = saveData(); + + SyncTardisPlayerInfoMessage message = new SyncTardisPlayerInfoMessage(this.player.getId(), nbt); + if (serverPlayerEntity == null) { + message.sendToAll(); + } else { + message.send(serverPlayerEntity); + } + } +} diff --git a/common/src/main/java/whocraft/tardis_refined/common/capability/TardisLevelOperator.java b/common/src/main/java/whocraft/tardis_refined/common/capability/tardis/TardisLevelOperator.java similarity index 99% rename from common/src/main/java/whocraft/tardis_refined/common/capability/TardisLevelOperator.java rename to common/src/main/java/whocraft/tardis_refined/common/capability/tardis/TardisLevelOperator.java index 4e330da80..6694645a6 100644 --- a/common/src/main/java/whocraft/tardis_refined/common/capability/TardisLevelOperator.java +++ b/common/src/main/java/whocraft/tardis_refined/common/capability/tardis/TardisLevelOperator.java @@ -1,4 +1,4 @@ -package whocraft.tardis_refined.common.capability; +package whocraft.tardis_refined.common.capability.tardis; import dev.architectury.injectables.annotations.ExpectPlatform; import net.minecraft.core.BlockPos; @@ -24,7 +24,7 @@ import whocraft.tardis_refined.common.blockentity.door.RootShellDoorBlockEntity; import whocraft.tardis_refined.common.blockentity.door.TardisInternalDoor; import whocraft.tardis_refined.common.blockentity.shell.GlobalShellBlockEntity; -import whocraft.tardis_refined.common.capability.upgrades.UpgradeHandler; +import whocraft.tardis_refined.common.capability.tardis.upgrades.UpgradeHandler; import whocraft.tardis_refined.common.hum.TardisHums; import whocraft.tardis_refined.common.blockentity.shell.ExteriorShell; import whocraft.tardis_refined.common.tardis.TardisArchitectureHandler; @@ -387,8 +387,6 @@ public void setOrUpdateExteriorBlock(TardisNavLocation location, Optional entityTypeIn, Level level) { super(entityTypeIn, level); @@ -143,6 +145,7 @@ public EntityDimensions getDimensions(Pose pose) { @Override public Component getName() { + TardisClientData tardisClientData = TardisClientData.getInstance(level().dimension()); if(tardisClientData.isInRecovery()){ int cooldownTicks = tardisClientData.getRecoveryTicks(); @@ -552,4 +555,8 @@ public int getTotalControlHealth() { public void setTotalControlHealth(int totalControlHealth) { this.totalControlHealth = totalControlHealth; } + + public void setPosForDebug(Vector3f vector3f) { + this.offset = vector3f; + } } diff --git a/common/src/main/java/whocraft/tardis_refined/common/items/KeyItem.java b/common/src/main/java/whocraft/tardis_refined/common/items/KeyItem.java index 100c196cc..4614dc536 100644 --- a/common/src/main/java/whocraft/tardis_refined/common/items/KeyItem.java +++ b/common/src/main/java/whocraft/tardis_refined/common/items/KeyItem.java @@ -1,7 +1,6 @@ package whocraft.tardis_refined.common.items; import net.minecraft.ChatFormatting; -import net.minecraft.core.Direction; import net.minecraft.core.registries.Registries; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.ListTag; @@ -26,7 +25,7 @@ import net.minecraft.world.level.Level; import org.jetbrains.annotations.Nullable; import whocraft.tardis_refined.client.TardisClientData; -import whocraft.tardis_refined.common.capability.TardisLevelOperator; +import whocraft.tardis_refined.common.capability.tardis.TardisLevelOperator; import whocraft.tardis_refined.common.entity.ControlEntity; import whocraft.tardis_refined.common.tardis.TardisNavLocation; import whocraft.tardis_refined.common.util.Platform; @@ -38,7 +37,6 @@ import java.util.ArrayList; import java.util.Collections; import java.util.List; -import java.util.concurrent.atomic.AtomicBoolean; public class KeyItem extends Item { diff --git a/common/src/main/java/whocraft/tardis_refined/common/mixin/LocalPlayerMixin.java b/common/src/main/java/whocraft/tardis_refined/common/mixin/LocalPlayerMixin.java new file mode 100644 index 000000000..c152c7aff --- /dev/null +++ b/common/src/main/java/whocraft/tardis_refined/common/mixin/LocalPlayerMixin.java @@ -0,0 +1,52 @@ +package whocraft.tardis_refined.common.mixin; + +import net.minecraft.client.player.Input; +import net.minecraft.client.player.LocalPlayer; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; +import whocraft.tardis_refined.common.capability.player.TardisPlayerInfo; +import whocraft.tardis_refined.common.network.messages.player.ExitTardisViewMessage; + +@Mixin(LocalPlayer.class) +public class LocalPlayerMixin { + + @Shadow + public Input input; + + @Inject(method = "aiStep()V", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/Minecraft;getTutorial()Lnet/minecraft/client/tutorial/Tutorial;")) + private void inputEdit(CallbackInfo ci) { + LocalPlayer localPlayer = (LocalPlayer) (Object) this; + handleInput(localPlayer, input); + } + + private void handleInput(LocalPlayer localPlayer, Input input) { + + TardisPlayerInfo.get(localPlayer).ifPresent(tardisPlayerInfo -> { + if(tardisPlayerInfo.isViewingTardis()){ + blockMovement(input); + } + }); + + } + + private static void blockMovement(Input moveType) { + // Set all movement-related fields to false or 0.0F to block movement + + if(moveType.jumping){ + new ExitTardisViewMessage().send(); + return; + } + + moveType.right = false; + moveType.left = false; + moveType.down = false; + moveType.jumping = false; + moveType.forwardImpulse = 0.0F; + moveType.shiftKeyDown = false; + moveType.leftImpulse = 0.0F; + } + +} \ No newline at end of file diff --git a/common/src/main/java/whocraft/tardis_refined/common/mixin/PlayerEntityMixin.java b/common/src/main/java/whocraft/tardis_refined/common/mixin/PlayerEntityMixin.java index fd9b3846b..3ce351e11 100644 --- a/common/src/main/java/whocraft/tardis_refined/common/mixin/PlayerEntityMixin.java +++ b/common/src/main/java/whocraft/tardis_refined/common/mixin/PlayerEntityMixin.java @@ -9,6 +9,7 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import whocraft.tardis_refined.common.GravityClient; import whocraft.tardis_refined.common.GravityUtil; +import whocraft.tardis_refined.common.capability.player.TardisPlayerInfo; @Mixin(Player.class) public class PlayerEntityMixin { @@ -16,6 +17,14 @@ public class PlayerEntityMixin { @Inject(method = "travel(Lnet/minecraft/world/phys/Vec3;)V", at = @At("TAIL"), cancellable = true) private void move(Vec3 vec3, CallbackInfo info) { Player player = (Player) (Object) this; + + TardisPlayerInfo.get(player).ifPresent(tardisInfo -> { + if (tardisInfo.isViewingTardis()) { + player.setDeltaMovement(0, 0, 0); + info.cancel(); + } + }); + if(!player.level().isClientSide) return; GravityClient.moveGravity(player, info); } @@ -27,7 +36,15 @@ private void tick(CallbackInfo ci) { if(GravityUtil.isInGravityShaft(player)){ player.resetFallDistance(); } + + if(player.tickCount % 20 == 0 && !player.level().isClientSide){ + TardisPlayerInfo.get(player).ifPresent(tardisPlayerInfo -> { + tardisPlayerInfo.syncToClients(null); + }); + } + } + } diff --git a/common/src/main/java/whocraft/tardis_refined/common/mixin/PlayerRenderMixin.java b/common/src/main/java/whocraft/tardis_refined/common/mixin/PlayerRenderMixin.java new file mode 100644 index 000000000..9f7de3a71 --- /dev/null +++ b/common/src/main/java/whocraft/tardis_refined/common/mixin/PlayerRenderMixin.java @@ -0,0 +1,27 @@ +package whocraft.tardis_refined.common.mixin; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.entity.player.PlayerRenderer; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; +import whocraft.tardis_refined.common.capability.player.TardisPlayerInfo; + +import java.util.Objects; + +@Mixin(PlayerRenderer.class) +public class PlayerRenderMixin { + + @Inject(method = "render(Lnet/minecraft/client/player/AbstractClientPlayer;FFLcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/MultiBufferSource;I)V", at = @At("HEAD"), cancellable = true) + private void tick(CallbackInfo ci) { + + TardisPlayerInfo.get(Minecraft.getInstance().player).ifPresent(tardisPlayerInfo -> { + if (tardisPlayerInfo.isViewingTardis() && Objects.equals(Minecraft.getInstance().player.getStringUUID(), tardisPlayerInfo.getPlayer().getStringUUID())) { + ci.cancel(); + } + }); + + } + +} diff --git a/common/src/main/java/whocraft/tardis_refined/common/network/TardisNetwork.java b/common/src/main/java/whocraft/tardis_refined/common/network/TardisNetwork.java index 92c0aa316..0a57aa69b 100644 --- a/common/src/main/java/whocraft/tardis_refined/common/network/TardisNetwork.java +++ b/common/src/main/java/whocraft/tardis_refined/common/network/TardisNetwork.java @@ -7,6 +7,8 @@ import whocraft.tardis_refined.common.network.messages.ChangeShellMessage; import whocraft.tardis_refined.common.network.messages.EjectPlayerFromConsoleMessage; import whocraft.tardis_refined.common.network.messages.hums.ChangeHumMessage; +import whocraft.tardis_refined.common.network.messages.player.ExitTardisViewMessage; +import whocraft.tardis_refined.common.network.messages.player.SyncTardisPlayerInfoMessage; import whocraft.tardis_refined.common.network.messages.screens.C2SRequestShellSelection; import whocraft.tardis_refined.common.network.messages.screens.OpenMonitorMessage; import whocraft.tardis_refined.common.network.messages.screens.OpenShellSelectionScreen; @@ -19,10 +21,10 @@ public class TardisNetwork { public static final NetworkManager NETWORK = NetworkManager.create(new ResourceLocation(TardisRefined.MODID, "channel")); - public static MessageType OPEN_SHELL_SELECT, SYNC_HUMS, OPEN_WAYPOINTS_DISPLAY, DEL_WAYPOINT, CLIENT_OPEN_COORDS_DISPLAY, SERVER_OPEN_COORDS_DISPLAY, UPGRADE_SCREEN_S2C, + public static MessageType TARDIS_EXIT, OPEN_SHELL_SELECT, SYNC_HUMS, OPEN_WAYPOINTS_DISPLAY, DEL_WAYPOINT, CLIENT_OPEN_COORDS_DISPLAY, SERVER_OPEN_COORDS_DISPLAY, UPGRADE_SCREEN_S2C, REQUEST_SHELL_C2S, CLIENT_OPEN_COORDS_SCREEN, SERVER_OPEN_COORDS_SCREEN, CLIENT_OPEN_EDIT_COORDS_SCREEN, SERVER_OPEN_EDIT_COORDS_SCREEN, UPLOAD_WAYPOINT, EDIT_WAYPOINT, SET_WAYPOINT, CHANGE_HUM, REQUEST_WAYPOINTS, SYNC_DESKTOPS, SYNC_CONSOLE_PATTERNS, SYNC_SHELL_PATTERNS, SYNC_LEVELS, INT_REACTION, - OPEN_MONITOR, CHANGE_SHELL, CHANGE_DESKTOP, CANCEL_CHANGE_DESKTOP, UNLOCK_UPGRADE, EJECT_PLAYER; + OPEN_MONITOR, CHANGE_SHELL, CHANGE_DESKTOP, CANCEL_CHANGE_DESKTOP, UNLOCK_UPGRADE, EJECT_PLAYER, TARDIS_PLAYER_INFO; public static void init() { // S2C Messages @@ -39,6 +41,7 @@ public static void init() { SERVER_OPEN_COORDS_SCREEN = NETWORK.registerS2C("server_open_coords_screen", S2COpenCoordinatesDisplayMessage::new); SYNC_HUMS = NETWORK.registerS2C("sync_hums", SyncHumsMessage::new); UPGRADE_SCREEN_S2C = NETWORK.registerS2C("upgrade_screen_s2c", S2CDisplayUpgradeScreen::new); + TARDIS_PLAYER_INFO = NETWORK.registerS2C("tardis_player_info", SyncTardisPlayerInfoMessage::new); // C2S Messages CHANGE_SHELL = NETWORK.registerC2S("change_shell", ChangeShellMessage::new); @@ -56,6 +59,7 @@ public static void init() { REQUEST_SHELL_C2S = NETWORK.registerC2S("request_shell_c2s", C2SRequestShellSelection::new); CHANGE_HUM = NETWORK.registerC2S("change_hum", ChangeHumMessage::new); EJECT_PLAYER = NETWORK.registerC2S("eject_player", EjectPlayerFromConsoleMessage::new); + TARDIS_EXIT = NETWORK.registerC2S("tardis_exit", ExitTardisViewMessage::new); } diff --git a/common/src/main/java/whocraft/tardis_refined/common/network/messages/CancelDesktopChangeMessage.java b/common/src/main/java/whocraft/tardis_refined/common/network/messages/CancelDesktopChangeMessage.java index b728d01a7..37b3762e1 100644 --- a/common/src/main/java/whocraft/tardis_refined/common/network/messages/CancelDesktopChangeMessage.java +++ b/common/src/main/java/whocraft/tardis_refined/common/network/messages/CancelDesktopChangeMessage.java @@ -6,7 +6,7 @@ import net.minecraft.server.level.ServerLevel; import net.minecraft.world.level.Level; import org.jetbrains.annotations.NotNull; -import whocraft.tardis_refined.common.capability.TardisLevelOperator; +import whocraft.tardis_refined.common.capability.tardis.TardisLevelOperator; import whocraft.tardis_refined.common.network.MessageC2S; import whocraft.tardis_refined.common.network.MessageContext; import whocraft.tardis_refined.common.network.MessageType; diff --git a/common/src/main/java/whocraft/tardis_refined/common/network/messages/ChangeDesktopMessage.java b/common/src/main/java/whocraft/tardis_refined/common/network/messages/ChangeDesktopMessage.java index 59e69652e..662a952c0 100644 --- a/common/src/main/java/whocraft/tardis_refined/common/network/messages/ChangeDesktopMessage.java +++ b/common/src/main/java/whocraft/tardis_refined/common/network/messages/ChangeDesktopMessage.java @@ -7,7 +7,7 @@ import net.minecraft.sounds.SoundSource; import net.minecraft.world.level.Level; import org.jetbrains.annotations.NotNull; -import whocraft.tardis_refined.common.capability.TardisLevelOperator; +import whocraft.tardis_refined.common.capability.tardis.TardisLevelOperator; import whocraft.tardis_refined.common.network.MessageC2S; import whocraft.tardis_refined.common.network.MessageContext; import whocraft.tardis_refined.common.network.MessageType; diff --git a/common/src/main/java/whocraft/tardis_refined/common/network/messages/ChangeShellMessage.java b/common/src/main/java/whocraft/tardis_refined/common/network/messages/ChangeShellMessage.java index 0d5ec6301..1aca5db7a 100644 --- a/common/src/main/java/whocraft/tardis_refined/common/network/messages/ChangeShellMessage.java +++ b/common/src/main/java/whocraft/tardis_refined/common/network/messages/ChangeShellMessage.java @@ -8,7 +8,7 @@ import net.minecraft.world.level.Level; import org.jetbrains.annotations.NotNull; import whocraft.tardis_refined.api.event.ShellChangeSources; -import whocraft.tardis_refined.common.capability.TardisLevelOperator; +import whocraft.tardis_refined.common.capability.tardis.TardisLevelOperator; import whocraft.tardis_refined.registry.TRUpgrades; import whocraft.tardis_refined.common.network.MessageC2S; import whocraft.tardis_refined.common.network.MessageContext; diff --git a/common/src/main/java/whocraft/tardis_refined/common/network/messages/EjectPlayerFromConsoleMessage.java b/common/src/main/java/whocraft/tardis_refined/common/network/messages/EjectPlayerFromConsoleMessage.java index 63d120f14..4600a2858 100644 --- a/common/src/main/java/whocraft/tardis_refined/common/network/messages/EjectPlayerFromConsoleMessage.java +++ b/common/src/main/java/whocraft/tardis_refined/common/network/messages/EjectPlayerFromConsoleMessage.java @@ -4,19 +4,16 @@ import net.minecraft.network.chat.Component; import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerPlayer; -import net.minecraft.sounds.SoundEvent; import net.minecraft.sounds.SoundEvents; import net.minecraft.world.level.Level; import org.jetbrains.annotations.NotNull; -import whocraft.tardis_refined.common.capability.TardisLevelOperator; +import whocraft.tardis_refined.common.capability.tardis.TardisLevelOperator; import whocraft.tardis_refined.common.network.MessageC2S; import whocraft.tardis_refined.common.network.MessageContext; import whocraft.tardis_refined.common.network.MessageType; import whocraft.tardis_refined.common.network.TardisNetwork; -import whocraft.tardis_refined.common.tardis.TardisNavLocation; import whocraft.tardis_refined.common.util.PlayerUtil; import whocraft.tardis_refined.constants.ModMessages; -import whocraft.tardis_refined.registry.TRDimensionTypes; public class EjectPlayerFromConsoleMessage extends MessageC2S { diff --git a/common/src/main/java/whocraft/tardis_refined/common/network/messages/hums/ChangeHumMessage.java b/common/src/main/java/whocraft/tardis_refined/common/network/messages/hums/ChangeHumMessage.java index bf879626e..6a31f531b 100644 --- a/common/src/main/java/whocraft/tardis_refined/common/network/messages/hums/ChangeHumMessage.java +++ b/common/src/main/java/whocraft/tardis_refined/common/network/messages/hums/ChangeHumMessage.java @@ -7,7 +7,7 @@ import net.minecraft.world.level.Level; import org.jetbrains.annotations.NotNull; import whocraft.tardis_refined.client.TardisClientData; -import whocraft.tardis_refined.common.capability.TardisLevelOperator; +import whocraft.tardis_refined.common.capability.tardis.TardisLevelOperator; import whocraft.tardis_refined.common.hum.HumEntry; import whocraft.tardis_refined.common.hum.TardisHums; import whocraft.tardis_refined.common.network.MessageC2S; diff --git a/common/src/main/java/whocraft/tardis_refined/common/network/messages/player/ExitTardisViewMessage.java b/common/src/main/java/whocraft/tardis_refined/common/network/messages/player/ExitTardisViewMessage.java new file mode 100644 index 000000000..e44026a05 --- /dev/null +++ b/common/src/main/java/whocraft/tardis_refined/common/network/messages/player/ExitTardisViewMessage.java @@ -0,0 +1,56 @@ +package whocraft.tardis_refined.common.network.messages.player; + +import net.minecraft.core.registries.Registries; +import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.resources.ResourceKey; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.world.level.Level; +import org.jetbrains.annotations.NotNull; +import whocraft.tardis_refined.TardisRefined; +import whocraft.tardis_refined.common.capability.player.TardisPlayerInfo; +import whocraft.tardis_refined.common.capability.tardis.TardisLevelOperator; +import whocraft.tardis_refined.common.network.MessageC2S; +import whocraft.tardis_refined.common.network.MessageContext; +import whocraft.tardis_refined.common.network.MessageType; +import whocraft.tardis_refined.common.network.TardisNetwork; +import whocraft.tardis_refined.common.util.Platform; + +public class ExitTardisViewMessage extends MessageC2S { + + public ExitTardisViewMessage() { + } + + public ExitTardisViewMessage(FriendlyByteBuf buf) { + } + + @Override + public @NotNull MessageType getType() { + return TardisNetwork.TARDIS_EXIT; + } + + @Override + public void toBytes(FriendlyByteBuf buf) { + + } + + @Override + public void handle(MessageContext context) { + ServerPlayer player = context.getPlayer(); + + TardisPlayerInfo.get(player).ifPresent(tardisInfo -> { + if (tardisInfo.isViewingTardis()) { + ResourceKey key = ResourceKey.create(Registries.DIMENSION, + new ResourceLocation(TardisRefined.MODID, tardisInfo.getViewedTardis().toString())); + ServerLevel tardisLevel = Platform.getServer().getLevel(key); + if (tardisLevel != null) { + TardisLevelOperator.get(tardisLevel).ifPresent(tardisLevelOperator -> { + tardisInfo.endPlayerForInspection(player, tardisLevelOperator); + }); + } + } + }); + + } +} diff --git a/common/src/main/java/whocraft/tardis_refined/common/network/messages/player/SyncTardisPlayerInfoMessage.java b/common/src/main/java/whocraft/tardis_refined/common/network/messages/player/SyncTardisPlayerInfoMessage.java new file mode 100644 index 000000000..f49df640a --- /dev/null +++ b/common/src/main/java/whocraft/tardis_refined/common/network/messages/player/SyncTardisPlayerInfoMessage.java @@ -0,0 +1,51 @@ +package whocraft.tardis_refined.common.network.messages.player; + + +import net.minecraft.client.Minecraft; +import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.player.Player; +import org.jetbrains.annotations.NotNull; +import whocraft.tardis_refined.common.capability.player.TardisPlayerInfo; +import whocraft.tardis_refined.common.network.MessageContext; +import whocraft.tardis_refined.common.network.MessageS2C; +import whocraft.tardis_refined.common.network.MessageType; +import whocraft.tardis_refined.common.network.TardisNetwork; + +public class SyncTardisPlayerInfoMessage extends MessageS2C { + public int entityID; + public CompoundTag nbt; + + public SyncTardisPlayerInfoMessage(int entityID, CompoundTag nbt) { + this.entityID = entityID; + this.nbt = nbt; + } + + public SyncTardisPlayerInfoMessage(FriendlyByteBuf buf) { + this.entityID = buf.readInt(); + this.nbt = buf.readNbt(); + } + + @NotNull + @Override + public MessageType getType() { + return TardisNetwork.TARDIS_PLAYER_INFO; + } + + public void toBytes(FriendlyByteBuf buf) { + buf.writeInt(this.entityID); + buf.writeNbt(this.nbt); + } + + @Override + public void handle(MessageContext context) { + ClientLevel level = Minecraft.getInstance().level; + if (level == null) return; + Entity entity = level.getEntity(this.entityID); + if (entity != null) + TardisPlayerInfo.get((Player) entity).ifPresent((c) -> c.loadData(this.nbt)); + } +} \ No newline at end of file diff --git a/common/src/main/java/whocraft/tardis_refined/common/network/messages/screens/C2SRequestShellSelection.java b/common/src/main/java/whocraft/tardis_refined/common/network/messages/screens/C2SRequestShellSelection.java index e94c0492d..ddeeee0b3 100644 --- a/common/src/main/java/whocraft/tardis_refined/common/network/messages/screens/C2SRequestShellSelection.java +++ b/common/src/main/java/whocraft/tardis_refined/common/network/messages/screens/C2SRequestShellSelection.java @@ -3,7 +3,7 @@ import net.minecraft.network.FriendlyByteBuf; import net.minecraft.server.level.ServerLevel; import org.jetbrains.annotations.NotNull; -import whocraft.tardis_refined.common.capability.TardisLevelOperator; +import whocraft.tardis_refined.common.capability.tardis.TardisLevelOperator; import whocraft.tardis_refined.common.network.MessageC2S; import whocraft.tardis_refined.common.network.MessageContext; import whocraft.tardis_refined.common.network.MessageType; diff --git a/common/src/main/java/whocraft/tardis_refined/common/network/messages/screens/OpenMonitorMessage.java b/common/src/main/java/whocraft/tardis_refined/common/network/messages/screens/OpenMonitorMessage.java index 96584e01a..a6bb3fc76 100644 --- a/common/src/main/java/whocraft/tardis_refined/common/network/messages/screens/OpenMonitorMessage.java +++ b/common/src/main/java/whocraft/tardis_refined/common/network/messages/screens/OpenMonitorMessage.java @@ -6,7 +6,7 @@ import net.minecraft.network.FriendlyByteBuf; import org.jetbrains.annotations.NotNull; import whocraft.tardis_refined.client.ScreenHandler; -import whocraft.tardis_refined.common.capability.upgrades.UpgradeHandler; +import whocraft.tardis_refined.common.capability.tardis.upgrades.UpgradeHandler; import whocraft.tardis_refined.common.network.MessageContext; import whocraft.tardis_refined.common.network.MessageS2C; import whocraft.tardis_refined.common.network.MessageType; diff --git a/common/src/main/java/whocraft/tardis_refined/common/network/messages/upgrades/UnlockUpgradeMessage.java b/common/src/main/java/whocraft/tardis_refined/common/network/messages/upgrades/UnlockUpgradeMessage.java index f79396bd9..9e69daf93 100644 --- a/common/src/main/java/whocraft/tardis_refined/common/network/messages/upgrades/UnlockUpgradeMessage.java +++ b/common/src/main/java/whocraft/tardis_refined/common/network/messages/upgrades/UnlockUpgradeMessage.java @@ -4,9 +4,9 @@ import net.minecraft.network.FriendlyByteBuf; import net.minecraft.server.level.ServerLevel; import org.jetbrains.annotations.NotNull; -import whocraft.tardis_refined.common.capability.TardisLevelOperator; -import whocraft.tardis_refined.common.capability.upgrades.Upgrade; -import whocraft.tardis_refined.common.capability.upgrades.UpgradeHandler; +import whocraft.tardis_refined.common.capability.tardis.TardisLevelOperator; +import whocraft.tardis_refined.common.capability.tardis.upgrades.Upgrade; +import whocraft.tardis_refined.common.capability.tardis.upgrades.UpgradeHandler; import whocraft.tardis_refined.registry.TRUpgrades; import whocraft.tardis_refined.common.network.MessageC2S; import whocraft.tardis_refined.common.network.MessageContext; diff --git a/common/src/main/java/whocraft/tardis_refined/common/network/messages/waypoints/C2SOpenCoordinatesDisplayMessage.java b/common/src/main/java/whocraft/tardis_refined/common/network/messages/waypoints/C2SOpenCoordinatesDisplayMessage.java index 3b2d25c82..3ee51b30c 100644 --- a/common/src/main/java/whocraft/tardis_refined/common/network/messages/waypoints/C2SOpenCoordinatesDisplayMessage.java +++ b/common/src/main/java/whocraft/tardis_refined/common/network/messages/waypoints/C2SOpenCoordinatesDisplayMessage.java @@ -8,7 +8,7 @@ import net.minecraft.world.level.Level; import org.jetbrains.annotations.NotNull; import whocraft.tardis_refined.client.screen.waypoints.CoordInputType; -import whocraft.tardis_refined.common.capability.TardisLevelOperator; +import whocraft.tardis_refined.common.capability.tardis.TardisLevelOperator; import whocraft.tardis_refined.common.network.MessageC2S; import whocraft.tardis_refined.common.network.MessageContext; import whocraft.tardis_refined.common.network.MessageType; diff --git a/common/src/main/java/whocraft/tardis_refined/common/network/messages/waypoints/C2SOpenEditCoordinatesDisplayMessage.java b/common/src/main/java/whocraft/tardis_refined/common/network/messages/waypoints/C2SOpenEditCoordinatesDisplayMessage.java index 20833c863..737909a35 100644 --- a/common/src/main/java/whocraft/tardis_refined/common/network/messages/waypoints/C2SOpenEditCoordinatesDisplayMessage.java +++ b/common/src/main/java/whocraft/tardis_refined/common/network/messages/waypoints/C2SOpenEditCoordinatesDisplayMessage.java @@ -1,25 +1,17 @@ package whocraft.tardis_refined.common.network.messages.waypoints; import net.minecraft.network.FriendlyByteBuf; -import net.minecraft.resources.ResourceKey; -import net.minecraft.server.MinecraftServer; import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerPlayer; -import net.minecraft.world.level.Level; import org.jetbrains.annotations.NotNull; -import whocraft.tardis_refined.client.screen.waypoints.CoordInputType; -import whocraft.tardis_refined.common.capability.TardisLevelOperator; +import whocraft.tardis_refined.common.capability.tardis.TardisLevelOperator; import whocraft.tardis_refined.common.network.MessageC2S; import whocraft.tardis_refined.common.network.MessageContext; import whocraft.tardis_refined.common.network.MessageType; import whocraft.tardis_refined.common.network.TardisNetwork; -import whocraft.tardis_refined.common.tardis.TardisNavLocation; import whocraft.tardis_refined.common.tardis.TardisWaypoint; -import whocraft.tardis_refined.common.tardis.manager.TardisPilotingManager; import whocraft.tardis_refined.common.tardis.manager.TardisWaypointManager; -import whocraft.tardis_refined.common.util.DimensionUtil; -import java.util.List; import java.util.UUID; public class C2SOpenEditCoordinatesDisplayMessage extends MessageC2S { diff --git a/common/src/main/java/whocraft/tardis_refined/common/network/messages/waypoints/EditWaypointMessage.java b/common/src/main/java/whocraft/tardis_refined/common/network/messages/waypoints/EditWaypointMessage.java index c38804c6c..9618fd442 100644 --- a/common/src/main/java/whocraft/tardis_refined/common/network/messages/waypoints/EditWaypointMessage.java +++ b/common/src/main/java/whocraft/tardis_refined/common/network/messages/waypoints/EditWaypointMessage.java @@ -5,15 +5,12 @@ import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerPlayer; import org.jetbrains.annotations.NotNull; -import whocraft.tardis_refined.client.screen.waypoints.CoordInputType; -import whocraft.tardis_refined.common.capability.TardisLevelOperator; +import whocraft.tardis_refined.common.capability.tardis.TardisLevelOperator; import whocraft.tardis_refined.common.network.MessageC2S; import whocraft.tardis_refined.common.network.MessageContext; import whocraft.tardis_refined.common.network.MessageType; import whocraft.tardis_refined.common.network.TardisNetwork; -import whocraft.tardis_refined.common.tardis.TardisNavLocation; import whocraft.tardis_refined.common.tardis.TardisWaypoint; -import whocraft.tardis_refined.common.tardis.manager.TardisPilotingManager; import whocraft.tardis_refined.common.tardis.manager.TardisWaypointManager; public class EditWaypointMessage extends MessageC2S { diff --git a/common/src/main/java/whocraft/tardis_refined/common/network/messages/waypoints/RemoveWaypointEntryMessage.java b/common/src/main/java/whocraft/tardis_refined/common/network/messages/waypoints/RemoveWaypointEntryMessage.java index 815f09460..e2158b8c5 100644 --- a/common/src/main/java/whocraft/tardis_refined/common/network/messages/waypoints/RemoveWaypointEntryMessage.java +++ b/common/src/main/java/whocraft/tardis_refined/common/network/messages/waypoints/RemoveWaypointEntryMessage.java @@ -4,7 +4,7 @@ import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerPlayer; import org.jetbrains.annotations.NotNull; -import whocraft.tardis_refined.common.capability.TardisLevelOperator; +import whocraft.tardis_refined.common.capability.tardis.TardisLevelOperator; import whocraft.tardis_refined.common.network.MessageC2S; import whocraft.tardis_refined.common.network.MessageContext; import whocraft.tardis_refined.common.network.MessageType; diff --git a/common/src/main/java/whocraft/tardis_refined/common/network/messages/waypoints/RequestWaypointsMessage.java b/common/src/main/java/whocraft/tardis_refined/common/network/messages/waypoints/RequestWaypointsMessage.java index 675c37297..ff70cbfb9 100644 --- a/common/src/main/java/whocraft/tardis_refined/common/network/messages/waypoints/RequestWaypointsMessage.java +++ b/common/src/main/java/whocraft/tardis_refined/common/network/messages/waypoints/RequestWaypointsMessage.java @@ -4,12 +4,11 @@ import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerPlayer; import org.jetbrains.annotations.NotNull; -import whocraft.tardis_refined.common.capability.TardisLevelOperator; +import whocraft.tardis_refined.common.capability.tardis.TardisLevelOperator; import whocraft.tardis_refined.common.network.MessageC2S; import whocraft.tardis_refined.common.network.MessageContext; import whocraft.tardis_refined.common.network.MessageType; import whocraft.tardis_refined.common.network.TardisNetwork; -import whocraft.tardis_refined.common.tardis.TardisNavLocation; import whocraft.tardis_refined.common.tardis.TardisWaypoint; import whocraft.tardis_refined.common.tardis.manager.TardisWaypointManager; diff --git a/common/src/main/java/whocraft/tardis_refined/common/network/messages/waypoints/TravelToWaypointMessage.java b/common/src/main/java/whocraft/tardis_refined/common/network/messages/waypoints/TravelToWaypointMessage.java index 2f44ff0e5..e4c6b4d87 100644 --- a/common/src/main/java/whocraft/tardis_refined/common/network/messages/waypoints/TravelToWaypointMessage.java +++ b/common/src/main/java/whocraft/tardis_refined/common/network/messages/waypoints/TravelToWaypointMessage.java @@ -8,7 +8,7 @@ import net.minecraft.sounds.SoundEvents; import net.minecraft.sounds.SoundSource; import org.jetbrains.annotations.NotNull; -import whocraft.tardis_refined.common.capability.TardisLevelOperator; +import whocraft.tardis_refined.common.capability.tardis.TardisLevelOperator; import whocraft.tardis_refined.common.network.MessageC2S; import whocraft.tardis_refined.common.network.MessageContext; import whocraft.tardis_refined.common.network.MessageType; diff --git a/common/src/main/java/whocraft/tardis_refined/common/network/messages/waypoints/UploadWaypointMessage.java b/common/src/main/java/whocraft/tardis_refined/common/network/messages/waypoints/UploadWaypointMessage.java index b2d99470c..d99ca721f 100644 --- a/common/src/main/java/whocraft/tardis_refined/common/network/messages/waypoints/UploadWaypointMessage.java +++ b/common/src/main/java/whocraft/tardis_refined/common/network/messages/waypoints/UploadWaypointMessage.java @@ -6,7 +6,7 @@ import net.minecraft.server.level.ServerPlayer; import org.jetbrains.annotations.NotNull; import whocraft.tardis_refined.client.screen.waypoints.CoordInputType; -import whocraft.tardis_refined.common.capability.TardisLevelOperator; +import whocraft.tardis_refined.common.capability.tardis.TardisLevelOperator; import whocraft.tardis_refined.common.network.MessageC2S; import whocraft.tardis_refined.common.network.MessageContext; import whocraft.tardis_refined.common.network.MessageType; diff --git a/common/src/main/java/whocraft/tardis_refined/common/tardis/TardisArchitectureHandler.java b/common/src/main/java/whocraft/tardis_refined/common/tardis/TardisArchitectureHandler.java index 9018252e5..bfcc1ab20 100644 --- a/common/src/main/java/whocraft/tardis_refined/common/tardis/TardisArchitectureHandler.java +++ b/common/src/main/java/whocraft/tardis_refined/common/tardis/TardisArchitectureHandler.java @@ -11,7 +11,7 @@ import whocraft.tardis_refined.TardisRefined; import whocraft.tardis_refined.common.block.door.BulkHeadDoorBlock; import whocraft.tardis_refined.common.blockentity.door.TardisInternalDoor; -import whocraft.tardis_refined.common.capability.TardisLevelOperator; +import whocraft.tardis_refined.common.capability.tardis.TardisLevelOperator; import whocraft.tardis_refined.common.tardis.themes.DesktopTheme; import whocraft.tardis_refined.constants.TardisDimensionConstants; import whocraft.tardis_refined.registry.TRBlockRegistry; diff --git a/common/src/main/java/whocraft/tardis_refined/common/tardis/control/Control.java b/common/src/main/java/whocraft/tardis_refined/common/tardis/control/Control.java index e218ef333..2457e48ba 100644 --- a/common/src/main/java/whocraft/tardis_refined/common/tardis/control/Control.java +++ b/common/src/main/java/whocraft/tardis_refined/common/tardis/control/Control.java @@ -8,7 +8,7 @@ import whocraft.tardis_refined.api.event.EventResult; import whocraft.tardis_refined.api.event.TardisCommonEvents; import whocraft.tardis_refined.common.blockentity.console.GlobalConsoleBlockEntity; -import whocraft.tardis_refined.common.capability.TardisLevelOperator; +import whocraft.tardis_refined.common.capability.tardis.TardisLevelOperator; import whocraft.tardis_refined.common.entity.ControlEntity; import whocraft.tardis_refined.common.tardis.themes.ConsoleTheme; import whocraft.tardis_refined.patterns.sound.ConfiguredSound; diff --git a/common/src/main/java/whocraft/tardis_refined/common/tardis/control/ExteriorDisplayControl.java b/common/src/main/java/whocraft/tardis_refined/common/tardis/control/ExteriorDisplayControl.java new file mode 100644 index 000000000..3c961a713 --- /dev/null +++ b/common/src/main/java/whocraft/tardis_refined/common/tardis/control/ExteriorDisplayControl.java @@ -0,0 +1,57 @@ +package whocraft.tardis_refined.common.tardis.control; + +import net.minecraft.network.chat.Component; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.world.entity.player.Player; +import whocraft.tardis_refined.common.capability.player.TardisPlayerInfo; +import whocraft.tardis_refined.common.capability.tardis.TardisLevelOperator; +import whocraft.tardis_refined.common.entity.ControlEntity; +import whocraft.tardis_refined.common.network.messages.screens.OpenShellSelectionScreen; +import whocraft.tardis_refined.common.tardis.themes.ConsoleTheme; +import whocraft.tardis_refined.common.tardis.themes.ShellTheme; + +public class ExteriorDisplayControl extends Control { + + public ExteriorDisplayControl(ResourceLocation id, String langId) { + super(id, langId); + } + + public ExteriorDisplayControl(ResourceLocation id) { + super(id); + } + + @Override + public boolean onLeftClick(TardisLevelOperator operator, ConsoleTheme theme, ControlEntity controlEntity, Player player) { + if(player instanceof ServerPlayer serverPlayer){ + sendPacket(serverPlayer, operator); + } + return true; + } + + private void sendPacket(ServerPlayer player, TardisLevelOperator tardisLevelOperator) { + // new OpenShellSelectionScreen(tardisLevelOperator.getAestheticHandler().getShellTheme()).send(player); + TardisPlayerInfo.get(player).ifPresent(tardisInfo -> + tardisInfo.setupPlayerForInspection(player, tardisLevelOperator, tardisLevelOperator.getPilotingManager().isInFlight() ? tardisLevelOperator.getPilotingManager().getTargetLocation() :tardisLevelOperator.getPilotingManager().getCurrentLocation()) + ); + } + + + @Override + public boolean onRightClick(TardisLevelOperator operator, ConsoleTheme theme, ControlEntity controlEntity, Player player) { + if(player instanceof ServerPlayer serverPlayer){ + sendPacket(serverPlayer, operator); + } + return true; + } + + @Override + public boolean hasCustomName() { + return true; + } + + @Override + public Component getCustomControlName(TardisLevelOperator operator, ControlEntity entity, ControlSpecification controlSpecification) { + return Component.translatable(ShellTheme.getShellTheme(operator.getAestheticHandler().getShellTheme()).getTranslationKey()); + } +} diff --git a/common/src/main/java/whocraft/tardis_refined/common/tardis/control/flight/CoordinateControl.java b/common/src/main/java/whocraft/tardis_refined/common/tardis/control/flight/CoordinateControl.java index 03a018f78..1a6a01d23 100644 --- a/common/src/main/java/whocraft/tardis_refined/common/tardis/control/flight/CoordinateControl.java +++ b/common/src/main/java/whocraft/tardis_refined/common/tardis/control/flight/CoordinateControl.java @@ -4,7 +4,7 @@ import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.player.Player; -import whocraft.tardis_refined.common.capability.TardisLevelOperator; +import whocraft.tardis_refined.common.capability.tardis.TardisLevelOperator; import whocraft.tardis_refined.common.entity.ControlEntity; import whocraft.tardis_refined.common.tardis.TardisNavLocation; import whocraft.tardis_refined.common.tardis.control.Control; diff --git a/common/src/main/java/whocraft/tardis_refined/common/tardis/control/flight/DimensionalControl.java b/common/src/main/java/whocraft/tardis_refined/common/tardis/control/flight/DimensionalControl.java index d3fd9d3bb..9a7720c10 100644 --- a/common/src/main/java/whocraft/tardis_refined/common/tardis/control/flight/DimensionalControl.java +++ b/common/src/main/java/whocraft/tardis_refined/common/tardis/control/flight/DimensionalControl.java @@ -6,8 +6,8 @@ import net.minecraft.server.level.ServerLevel; import net.minecraft.world.entity.player.Player; import net.minecraft.world.level.Level; -import whocraft.tardis_refined.common.capability.TardisLevelOperator; -import whocraft.tardis_refined.common.capability.upgrades.UpgradeHandler; +import whocraft.tardis_refined.common.capability.tardis.TardisLevelOperator; +import whocraft.tardis_refined.common.capability.tardis.upgrades.UpgradeHandler; import whocraft.tardis_refined.registry.TRUpgrades; import whocraft.tardis_refined.common.entity.ControlEntity; import whocraft.tardis_refined.common.tardis.control.Control; diff --git a/common/src/main/java/whocraft/tardis_refined/common/tardis/control/flight/FastReturnControl.java b/common/src/main/java/whocraft/tardis_refined/common/tardis/control/flight/FastReturnControl.java index 00617fadd..0dffb4671 100644 --- a/common/src/main/java/whocraft/tardis_refined/common/tardis/control/flight/FastReturnControl.java +++ b/common/src/main/java/whocraft/tardis_refined/common/tardis/control/flight/FastReturnControl.java @@ -3,7 +3,7 @@ import net.minecraft.resources.ResourceLocation; import net.minecraft.sounds.SoundEvents; import net.minecraft.world.entity.player.Player; -import whocraft.tardis_refined.common.capability.TardisLevelOperator; +import whocraft.tardis_refined.common.capability.tardis.TardisLevelOperator; import whocraft.tardis_refined.common.entity.ControlEntity; import whocraft.tardis_refined.common.tardis.control.Control; import whocraft.tardis_refined.common.tardis.manager.TardisPilotingManager; diff --git a/common/src/main/java/whocraft/tardis_refined/common/tardis/control/flight/FuelToggleControl.java b/common/src/main/java/whocraft/tardis_refined/common/tardis/control/flight/FuelToggleControl.java index 56fbf13ac..67058bca4 100644 --- a/common/src/main/java/whocraft/tardis_refined/common/tardis/control/flight/FuelToggleControl.java +++ b/common/src/main/java/whocraft/tardis_refined/common/tardis/control/flight/FuelToggleControl.java @@ -1,10 +1,9 @@ package whocraft.tardis_refined.common.tardis.control.flight; -import net.minecraft.core.BlockPos; import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.player.Player; -import whocraft.tardis_refined.common.capability.TardisLevelOperator; +import whocraft.tardis_refined.common.capability.tardis.TardisLevelOperator; import whocraft.tardis_refined.common.entity.ControlEntity; import whocraft.tardis_refined.common.tardis.control.Control; import whocraft.tardis_refined.common.tardis.control.ControlSpecification; diff --git a/common/src/main/java/whocraft/tardis_refined/common/tardis/control/flight/GenericControl.java b/common/src/main/java/whocraft/tardis_refined/common/tardis/control/flight/GenericControl.java index 044da84e8..82653b08c 100644 --- a/common/src/main/java/whocraft/tardis_refined/common/tardis/control/flight/GenericControl.java +++ b/common/src/main/java/whocraft/tardis_refined/common/tardis/control/flight/GenericControl.java @@ -2,7 +2,7 @@ import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.player.Player; -import whocraft.tardis_refined.common.capability.TardisLevelOperator; +import whocraft.tardis_refined.common.capability.tardis.TardisLevelOperator; import whocraft.tardis_refined.common.entity.ControlEntity; import whocraft.tardis_refined.common.tardis.control.Control; import whocraft.tardis_refined.common.tardis.themes.ConsoleTheme; diff --git a/common/src/main/java/whocraft/tardis_refined/common/tardis/control/flight/HandbrakeControl.java b/common/src/main/java/whocraft/tardis_refined/common/tardis/control/flight/HandbrakeControl.java index 3b22a37b0..0c56eddbe 100644 --- a/common/src/main/java/whocraft/tardis_refined/common/tardis/control/flight/HandbrakeControl.java +++ b/common/src/main/java/whocraft/tardis_refined/common/tardis/control/flight/HandbrakeControl.java @@ -3,7 +3,7 @@ import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.player.Player; -import whocraft.tardis_refined.common.capability.TardisLevelOperator; +import whocraft.tardis_refined.common.capability.tardis.TardisLevelOperator; import whocraft.tardis_refined.common.entity.ControlEntity; import whocraft.tardis_refined.common.tardis.control.Control; import whocraft.tardis_refined.common.tardis.themes.ConsoleTheme; diff --git a/common/src/main/java/whocraft/tardis_refined/common/tardis/control/flight/IncrementControl.java b/common/src/main/java/whocraft/tardis_refined/common/tardis/control/flight/IncrementControl.java index d10c02749..c3f3beb34 100644 --- a/common/src/main/java/whocraft/tardis_refined/common/tardis/control/flight/IncrementControl.java +++ b/common/src/main/java/whocraft/tardis_refined/common/tardis/control/flight/IncrementControl.java @@ -3,8 +3,7 @@ import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.player.Player; -import whocraft.tardis_refined.TardisRefined; -import whocraft.tardis_refined.common.capability.TardisLevelOperator; +import whocraft.tardis_refined.common.capability.tardis.TardisLevelOperator; import whocraft.tardis_refined.common.entity.ControlEntity; import whocraft.tardis_refined.common.tardis.control.Control; import whocraft.tardis_refined.common.tardis.manager.TardisPilotingManager; diff --git a/common/src/main/java/whocraft/tardis_refined/common/tardis/control/flight/RandomControl.java b/common/src/main/java/whocraft/tardis_refined/common/tardis/control/flight/RandomControl.java index c1d5d92b5..c4689f74e 100644 --- a/common/src/main/java/whocraft/tardis_refined/common/tardis/control/flight/RandomControl.java +++ b/common/src/main/java/whocraft/tardis_refined/common/tardis/control/flight/RandomControl.java @@ -4,8 +4,7 @@ import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.player.Player; -import whocraft.tardis_refined.TardisRefined; -import whocraft.tardis_refined.common.capability.TardisLevelOperator; +import whocraft.tardis_refined.common.capability.tardis.TardisLevelOperator; import whocraft.tardis_refined.common.entity.ControlEntity; import whocraft.tardis_refined.common.tardis.control.Control; import whocraft.tardis_refined.common.tardis.manager.TardisPilotingManager; diff --git a/common/src/main/java/whocraft/tardis_refined/common/tardis/control/flight/ReadoutControl.java b/common/src/main/java/whocraft/tardis_refined/common/tardis/control/flight/ReadoutControl.java index 78abe715f..514fb5661 100644 --- a/common/src/main/java/whocraft/tardis_refined/common/tardis/control/flight/ReadoutControl.java +++ b/common/src/main/java/whocraft/tardis_refined/common/tardis/control/flight/ReadoutControl.java @@ -3,12 +3,10 @@ import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.player.Player; -import whocraft.tardis_refined.TardisRefined; -import whocraft.tardis_refined.common.capability.TardisLevelOperator; +import whocraft.tardis_refined.common.capability.tardis.TardisLevelOperator; import whocraft.tardis_refined.common.entity.ControlEntity; import whocraft.tardis_refined.common.tardis.TardisNavLocation; import whocraft.tardis_refined.common.tardis.control.Control; -import whocraft.tardis_refined.common.tardis.control.ControlSpecification; import whocraft.tardis_refined.common.tardis.themes.ConsoleTheme; import whocraft.tardis_refined.common.util.PlayerUtil; import whocraft.tardis_refined.constants.ModMessages; diff --git a/common/src/main/java/whocraft/tardis_refined/common/tardis/control/flight/RotationControl.java b/common/src/main/java/whocraft/tardis_refined/common/tardis/control/flight/RotationControl.java index e3842a734..5ff9ea6bb 100644 --- a/common/src/main/java/whocraft/tardis_refined/common/tardis/control/flight/RotationControl.java +++ b/common/src/main/java/whocraft/tardis_refined/common/tardis/control/flight/RotationControl.java @@ -4,8 +4,7 @@ import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.player.Player; -import whocraft.tardis_refined.TardisRefined; -import whocraft.tardis_refined.common.capability.TardisLevelOperator; +import whocraft.tardis_refined.common.capability.tardis.TardisLevelOperator; import whocraft.tardis_refined.common.entity.ControlEntity; import whocraft.tardis_refined.common.tardis.control.Control; import whocraft.tardis_refined.common.tardis.manager.TardisPilotingManager; diff --git a/common/src/main/java/whocraft/tardis_refined/common/tardis/control/flight/ThrottleControl.java b/common/src/main/java/whocraft/tardis_refined/common/tardis/control/flight/ThrottleControl.java index 9531b574b..b849f8de7 100644 --- a/common/src/main/java/whocraft/tardis_refined/common/tardis/control/flight/ThrottleControl.java +++ b/common/src/main/java/whocraft/tardis_refined/common/tardis/control/flight/ThrottleControl.java @@ -2,16 +2,12 @@ import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.player.Player; -import whocraft.tardis_refined.TardisRefined; -import whocraft.tardis_refined.common.blockentity.console.GlobalConsoleBlockEntity; -import whocraft.tardis_refined.common.capability.TardisLevelOperator; +import whocraft.tardis_refined.common.capability.tardis.TardisLevelOperator; import whocraft.tardis_refined.common.entity.ControlEntity; import whocraft.tardis_refined.common.tardis.control.Control; import whocraft.tardis_refined.common.tardis.manager.TardisPilotingManager; import whocraft.tardis_refined.common.tardis.themes.ConsoleTheme; -import java.util.Optional; - public class ThrottleControl extends Control { public ThrottleControl(ResourceLocation id) { super(id, true); diff --git a/common/src/main/java/whocraft/tardis_refined/common/tardis/control/ship/MonitorControl.java b/common/src/main/java/whocraft/tardis_refined/common/tardis/control/ship/MonitorControl.java index ba693720f..f994f1a4a 100644 --- a/common/src/main/java/whocraft/tardis_refined/common/tardis/control/ship/MonitorControl.java +++ b/common/src/main/java/whocraft/tardis_refined/common/tardis/control/ship/MonitorControl.java @@ -5,8 +5,7 @@ import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; -import net.minecraft.world.item.Items; -import whocraft.tardis_refined.common.capability.TardisLevelOperator; +import whocraft.tardis_refined.common.capability.tardis.TardisLevelOperator; import whocraft.tardis_refined.common.entity.ControlEntity; import whocraft.tardis_refined.common.items.KeyItem; import whocraft.tardis_refined.common.network.messages.screens.OpenMonitorMessage; diff --git a/common/src/main/java/whocraft/tardis_refined/common/tardis/control/ship/ToggleDoorControl.java b/common/src/main/java/whocraft/tardis_refined/common/tardis/control/ship/ToggleDoorControl.java index 57a970078..db2534c15 100644 --- a/common/src/main/java/whocraft/tardis_refined/common/tardis/control/ship/ToggleDoorControl.java +++ b/common/src/main/java/whocraft/tardis_refined/common/tardis/control/ship/ToggleDoorControl.java @@ -7,7 +7,7 @@ import net.minecraft.world.level.block.entity.BlockEntity; import whocraft.tardis_refined.common.blockentity.door.GlobalDoorBlockEntity; import whocraft.tardis_refined.common.blockentity.door.TardisInternalDoor; -import whocraft.tardis_refined.common.capability.TardisLevelOperator; +import whocraft.tardis_refined.common.capability.tardis.TardisLevelOperator; import whocraft.tardis_refined.common.entity.ControlEntity; import whocraft.tardis_refined.common.tardis.control.Control; import whocraft.tardis_refined.common.tardis.themes.ConsoleTheme; diff --git a/common/src/main/java/whocraft/tardis_refined/common/tardis/manager/AestheticHandler.java b/common/src/main/java/whocraft/tardis_refined/common/tardis/manager/AestheticHandler.java index fe2c87f98..790390aed 100644 --- a/common/src/main/java/whocraft/tardis_refined/common/tardis/manager/AestheticHandler.java +++ b/common/src/main/java/whocraft/tardis_refined/common/tardis/manager/AestheticHandler.java @@ -8,7 +8,7 @@ import net.minecraft.world.level.block.entity.BlockEntity; import whocraft.tardis_refined.common.blockentity.door.GlobalDoorBlockEntity; import whocraft.tardis_refined.common.blockentity.shell.GlobalShellBlockEntity; -import whocraft.tardis_refined.common.capability.TardisLevelOperator; +import whocraft.tardis_refined.common.capability.tardis.TardisLevelOperator; import whocraft.tardis_refined.common.tardis.TardisNavLocation; import whocraft.tardis_refined.common.tardis.themes.ShellTheme; import whocraft.tardis_refined.constants.NbtConstants; diff --git a/common/src/main/java/whocraft/tardis_refined/common/tardis/manager/FlightDanceManager.java b/common/src/main/java/whocraft/tardis_refined/common/tardis/manager/FlightDanceManager.java index 40faf23cd..63fb3d233 100644 --- a/common/src/main/java/whocraft/tardis_refined/common/tardis/manager/FlightDanceManager.java +++ b/common/src/main/java/whocraft/tardis_refined/common/tardis/manager/FlightDanceManager.java @@ -3,9 +3,8 @@ import net.minecraft.nbt.CompoundTag; import net.minecraft.server.level.ServerLevel; import whocraft.tardis_refined.common.blockentity.console.GlobalConsoleBlockEntity; -import whocraft.tardis_refined.common.capability.TardisLevelOperator; +import whocraft.tardis_refined.common.capability.tardis.TardisLevelOperator; import whocraft.tardis_refined.common.entity.ControlEntity; -import whocraft.tardis_refined.registry.TRControlRegistry; import java.util.ArrayList; import java.util.List; diff --git a/common/src/main/java/whocraft/tardis_refined/common/tardis/manager/TardisExteriorManager.java b/common/src/main/java/whocraft/tardis_refined/common/tardis/manager/TardisExteriorManager.java index 1bb07e292..1bc42dd36 100644 --- a/common/src/main/java/whocraft/tardis_refined/common/tardis/manager/TardisExteriorManager.java +++ b/common/src/main/java/whocraft/tardis_refined/common/tardis/manager/TardisExteriorManager.java @@ -2,32 +2,20 @@ import net.minecraft.core.BlockPos; import net.minecraft.nbt.CompoundTag; -import net.minecraft.resources.ResourceLocation; import net.minecraft.server.level.ServerLevel; import net.minecraft.sounds.SoundEvent; import net.minecraft.sounds.SoundSource; import net.minecraft.world.level.ChunkPos; import net.minecraft.world.level.Level; -import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.entity.BlockEntity; -import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.level.material.Fluids; import whocraft.tardis_refined.common.block.shell.GlobalShellBlock; -import whocraft.tardis_refined.common.block.shell.ShellBaseBlock; -import whocraft.tardis_refined.common.blockentity.door.AbstractDoorBlockEntity; -import whocraft.tardis_refined.common.blockentity.shell.GlobalShellBlockEntity; -import whocraft.tardis_refined.common.capability.TardisLevelOperator; +import whocraft.tardis_refined.common.capability.tardis.TardisLevelOperator; import whocraft.tardis_refined.common.blockentity.shell.ExteriorShell; import whocraft.tardis_refined.common.tardis.TardisNavLocation; -import whocraft.tardis_refined.common.tardis.themes.ShellTheme; import whocraft.tardis_refined.constants.NbtConstants; -import whocraft.tardis_refined.patterns.ShellPattern; -import whocraft.tardis_refined.registry.TRBlockRegistry; import java.util.Optional; -import static whocraft.tardis_refined.common.block.shell.ShellBaseBlock.LOCKED; - /** * External Shell data. **/ diff --git a/common/src/main/java/whocraft/tardis_refined/common/tardis/manager/TardisInteriorManager.java b/common/src/main/java/whocraft/tardis_refined/common/tardis/manager/TardisInteriorManager.java index 0d83fb921..0878c764e 100644 --- a/common/src/main/java/whocraft/tardis_refined/common/tardis/manager/TardisInteriorManager.java +++ b/common/src/main/java/whocraft/tardis_refined/common/tardis/manager/TardisInteriorManager.java @@ -21,8 +21,8 @@ import whocraft.tardis_refined.common.block.door.BulkHeadDoorBlock; import whocraft.tardis_refined.common.blockentity.door.BulkHeadDoorBlockEntity; import whocraft.tardis_refined.common.blockentity.door.TardisInternalDoor; -import whocraft.tardis_refined.common.capability.TardisLevelOperator; -import whocraft.tardis_refined.common.capability.upgrades.UpgradeHandler; +import whocraft.tardis_refined.common.capability.tardis.TardisLevelOperator; +import whocraft.tardis_refined.common.capability.tardis.upgrades.UpgradeHandler; import whocraft.tardis_refined.registry.TRUpgrades; import whocraft.tardis_refined.common.dimension.TardisTeleportData; import whocraft.tardis_refined.common.hum.HumEntry; @@ -31,7 +31,6 @@ import whocraft.tardis_refined.common.tardis.TardisArchitectureHandler; import whocraft.tardis_refined.common.tardis.TardisDesktops; import whocraft.tardis_refined.common.tardis.themes.DesktopTheme; -import whocraft.tardis_refined.common.tardis.themes.ShellTheme; import whocraft.tardis_refined.constants.NbtConstants; import whocraft.tardis_refined.constants.TardisDimensionConstants; import whocraft.tardis_refined.registry.TRBlockRegistry; diff --git a/common/src/main/java/whocraft/tardis_refined/common/tardis/manager/TardisPilotingManager.java b/common/src/main/java/whocraft/tardis_refined/common/tardis/manager/TardisPilotingManager.java index 0b4117aff..88b57d76e 100644 --- a/common/src/main/java/whocraft/tardis_refined/common/tardis/manager/TardisPilotingManager.java +++ b/common/src/main/java/whocraft/tardis_refined/common/tardis/manager/TardisPilotingManager.java @@ -22,14 +22,16 @@ import whocraft.tardis_refined.api.event.TardisCommonEvents; import whocraft.tardis_refined.common.block.console.GlobalConsoleBlock; import whocraft.tardis_refined.common.blockentity.console.GlobalConsoleBlockEntity; -import whocraft.tardis_refined.common.capability.TardisLevelOperator; -import whocraft.tardis_refined.common.capability.upgrades.IncrementUpgrade; -import whocraft.tardis_refined.common.capability.upgrades.SpeedUpgrade; -import whocraft.tardis_refined.common.capability.upgrades.Upgrade; -import whocraft.tardis_refined.common.capability.upgrades.UpgradeHandler; +import whocraft.tardis_refined.common.capability.player.TardisPlayerInfo; +import whocraft.tardis_refined.common.capability.tardis.TardisLevelOperator; +import whocraft.tardis_refined.common.capability.tardis.upgrades.IncrementUpgrade; +import whocraft.tardis_refined.common.capability.tardis.upgrades.SpeedUpgrade; +import whocraft.tardis_refined.common.capability.tardis.upgrades.Upgrade; +import whocraft.tardis_refined.common.capability.tardis.upgrades.UpgradeHandler; import whocraft.tardis_refined.common.tardis.TardisArchitectureHandler; import whocraft.tardis_refined.common.tardis.TardisNavLocation; import whocraft.tardis_refined.common.util.LevelHelper; +import whocraft.tardis_refined.common.util.Platform; import whocraft.tardis_refined.common.util.PlayerUtil; import whocraft.tardis_refined.common.util.TardisHelper; import whocraft.tardis_refined.constants.ModMessages; @@ -312,11 +314,6 @@ private void checkThrottleStatesForFlight() { private void tickCrashRecovery() { ticksinCrashRecovery++; - int maxCooldownTicks = 12000; // 10 minutes in ticks - int percentage = (int) ((ticksinCrashRecovery / (float) maxCooldownTicks) * 100); - - System.out.println(percentage + "%"); - if(ticksinCrashRecovery % 120 == 0) { TardisHelper.playCloisterBell(operator); } @@ -571,6 +568,7 @@ public boolean beginFlight(boolean autoLand, Optional if (this.canBeginFlight()) { + this.autoLand = autoLand; this.isPassivelyRefuelling = false; this.flightDistance = 0; @@ -595,6 +593,8 @@ public boolean beginFlight(boolean autoLand, Optional operator.setDoorClosed(true); operator.getLevel().playSound(null, operator.getInternalDoor().getDoorPosition(), TRSoundRegistry.TARDIS_TAKEOFF.get(), SoundSource.AMBIENT, 10f, 1f); operator.getExteriorManager().playSoundAtShell(TRSoundRegistry.TARDIS_TAKEOFF.get(), SoundSource.BLOCKS, 1, 1); + + this.isInFlight = true; this.ticksInFlight = 0; this.ticksTakingOff = 1; @@ -744,6 +744,19 @@ public void enterTimeVortex() { if (this.currentConsole != null) { operator.getFlightDanceManager().startFlightDance(this.currentConsole); } + + Platform.getServer().getPlayerList().getPlayers().forEach(serverPlayer -> { + TardisPlayerInfo.get(serverPlayer).ifPresent(tardisPlayerInfo -> { + if (tardisPlayerInfo.isViewingTardis()) { + System.out.println(UUID.fromString(operator.getLevelKey().location().getPath())); + if (Objects.equals(tardisPlayerInfo.getViewedTardis().toString(), UUID.fromString(operator.getLevelKey().location().getPath()).toString())) { + tardisPlayerInfo.setupPlayerForInspection(serverPlayer, operator, operator.getPilotingManager().isInFlight() ? operator.getPilotingManager().getTargetLocation() : operator.getPilotingManager().getCurrentLocation()); + + } + } + }); + }); + this.operator.tardisClientData().sync(); } /** Update data to indicate we have completed the landing process.*/ diff --git a/common/src/main/java/whocraft/tardis_refined/common/tardis/manager/TardisWaypointManager.java b/common/src/main/java/whocraft/tardis_refined/common/tardis/manager/TardisWaypointManager.java index fdb0f94f3..7ff6dfb45 100644 --- a/common/src/main/java/whocraft/tardis_refined/common/tardis/manager/TardisWaypointManager.java +++ b/common/src/main/java/whocraft/tardis_refined/common/tardis/manager/TardisWaypointManager.java @@ -2,7 +2,7 @@ import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.ListTag; -import whocraft.tardis_refined.common.capability.TardisLevelOperator; +import whocraft.tardis_refined.common.capability.tardis.TardisLevelOperator; import whocraft.tardis_refined.common.tardis.TardisNavLocation; import whocraft.tardis_refined.common.tardis.TardisWaypoint; diff --git a/common/src/main/java/whocraft/tardis_refined/common/tardis/themes/console/CrystalConsoleTheme.java b/common/src/main/java/whocraft/tardis_refined/common/tardis/themes/console/CrystalConsoleTheme.java index e861861e7..7c2c6cef8 100644 --- a/common/src/main/java/whocraft/tardis_refined/common/tardis/themes/console/CrystalConsoleTheme.java +++ b/common/src/main/java/whocraft/tardis_refined/common/tardis/themes/console/CrystalConsoleTheme.java @@ -30,7 +30,7 @@ public ControlSpecification[] getControlSpecification() { new ControlSpecification(TRControlRegistry.GENERIC_NO_SHOW, new Vector3f(-1.03f, 0.64f, -0.52f), EntityDimensions.scalable(0.13f, 0.13f)), new ControlSpecification(TRControlRegistry.GENERIC_NO_SHOW, new Vector3f(-0.81f, 0.64f, -0.01f), EntityDimensions.scalable(0.13f, 0.13f)), new ControlSpecification(TRControlRegistry.GENERIC_NO_SHOW, new Vector3f(-1.14f, 0.51f, -0.38f), EntityDimensions.scalable(0.13f, 0.13f)), - new ControlSpecification(TRControlRegistry.GENERIC_NO_SHOW, new Vector3f(-0.82f, 1.07f, 0.16f), EntityDimensions.scalable(0.13f, 0.13f)), + new ControlSpecification(TRControlRegistry.EXTERIOR_DISPLAY, new Vector3f(-0.82f, 1.07f, 0.16f), EntityDimensions.scalable(0.21f, 0.21f)), new ControlSpecification(TRControlRegistry.FUEL, new Vector3f(0.29f, 0.52f, 1.23f), EntityDimensions.scalable(0.13f, 0.13f)), new ControlSpecification(TRControlRegistry.GENERIC_NO_SHOW, new Vector3f(0.58f, 0.52f, 1.29f), EntityDimensions.scalable(0.13f, 0.13f)), new ControlSpecification(TRControlRegistry.GENERIC_NO_SHOW, new Vector3f(0.69f, 0.52f, 1.22f), EntityDimensions.scalable(0.13f, 0.13f)), diff --git a/common/src/main/java/whocraft/tardis_refined/common/tardis/themes/console/InitiativeConsoleTheme.java b/common/src/main/java/whocraft/tardis_refined/common/tardis/themes/console/InitiativeConsoleTheme.java index 2e90ebf89..ada4bb46e 100644 --- a/common/src/main/java/whocraft/tardis_refined/common/tardis/themes/console/InitiativeConsoleTheme.java +++ b/common/src/main/java/whocraft/tardis_refined/common/tardis/themes/console/InitiativeConsoleTheme.java @@ -38,7 +38,9 @@ public ControlSpecification[] getControlSpecification() { new ControlSpecification(TRControlRegistry.GENERIC_NO_SHOW, new Vector3f(0.76f, 0.61f, -0.76f), EntityDimensions.scalable(0.06f, 0.06f)), new ControlSpecification(TRControlRegistry.GENERIC_NO_SHOW, new Vector3f(-1.06f, 0.72f, 0.33f), EntityDimensions.scalable(0.13f, 0.13f)), new ControlSpecification(TRControlRegistry.READOUT, new Vector3f(-0.87f, 0.50f, -0.5f), EntityDimensions.scalable(0.28F, 0.13F)), - new ControlSpecification(TRControlRegistry.FUEL, new Vector3f(-0.76f, 0.73f, 0.61f), EntityDimensions.scalable(0.13f, 0.13f)) + new ControlSpecification(TRControlRegistry.FUEL, new Vector3f(-0.76f, 0.73f, 0.61f), EntityDimensions.scalable(0.13f, 0.13f)), + new ControlSpecification(TRControlRegistry.EXTERIOR_DISPLAY, new Vector3f(0.74f, 0.56f, 1.24f), EntityDimensions.scalable(0.21f, 0.21f)) + }; } diff --git a/common/src/main/java/whocraft/tardis_refined/common/util/MiscHelper.java b/common/src/main/java/whocraft/tardis_refined/common/util/MiscHelper.java index ff6702c45..cb6842593 100644 --- a/common/src/main/java/whocraft/tardis_refined/common/util/MiscHelper.java +++ b/common/src/main/java/whocraft/tardis_refined/common/util/MiscHelper.java @@ -29,7 +29,7 @@ import whocraft.tardis_refined.common.block.console.GlobalConsoleBlock; import whocraft.tardis_refined.common.block.life.EyeBlock; import whocraft.tardis_refined.common.block.shell.ShellBaseBlock; -import whocraft.tardis_refined.common.capability.TardisLevelOperator; +import whocraft.tardis_refined.common.capability.tardis.TardisLevelOperator; import whocraft.tardis_refined.common.protection.ProtectedZone; import whocraft.tardis_refined.registry.TRBlockRegistry; import whocraft.tardis_refined.registry.TRDimensionTypes; diff --git a/common/src/main/java/whocraft/tardis_refined/common/util/TardisHelper.java b/common/src/main/java/whocraft/tardis_refined/common/util/TardisHelper.java index ba22f5af9..07fc1150f 100644 --- a/common/src/main/java/whocraft/tardis_refined/common/util/TardisHelper.java +++ b/common/src/main/java/whocraft/tardis_refined/common/util/TardisHelper.java @@ -19,13 +19,12 @@ import net.minecraft.world.level.material.Fluids; import net.minecraft.world.phys.AABB; import net.minecraft.world.phys.Vec3; -import whocraft.tardis_refined.api.event.ShellChangeSource; import whocraft.tardis_refined.api.event.ShellChangeSources; import whocraft.tardis_refined.api.event.TardisCommonEvents; import whocraft.tardis_refined.common.block.shell.GlobalShellBlock; import whocraft.tardis_refined.common.block.shell.ShellBaseBlock; import whocraft.tardis_refined.common.blockentity.shell.GlobalShellBlockEntity; -import whocraft.tardis_refined.common.capability.TardisLevelOperator; +import whocraft.tardis_refined.common.capability.tardis.TardisLevelOperator; import whocraft.tardis_refined.common.dimension.DimensionHandler; import whocraft.tardis_refined.common.dimension.TardisTeleportData; import whocraft.tardis_refined.common.mixin.EndDragonFightAccessor; diff --git a/common/src/main/java/whocraft/tardis_refined/compat/portals/ImmersivePortals.java b/common/src/main/java/whocraft/tardis_refined/compat/portals/ImmersivePortals.java index 9b0425654..98fa632e5 100644 --- a/common/src/main/java/whocraft/tardis_refined/compat/portals/ImmersivePortals.java +++ b/common/src/main/java/whocraft/tardis_refined/compat/portals/ImmersivePortals.java @@ -18,7 +18,6 @@ import net.minecraft.world.phys.Vec2; import net.minecraft.world.phys.Vec3; import qouteall.imm_ptl.core.api.PortalAPI; -import qouteall.imm_ptl.core.portal.Portal; import qouteall.imm_ptl.core.portal.PortalManipulation; import qouteall.q_misc_util.MiscHelper; import qouteall.q_misc_util.api.DimensionAPI; @@ -27,7 +26,7 @@ import whocraft.tardis_refined.api.event.EventResult; import whocraft.tardis_refined.api.event.TardisCommonEvents; import whocraft.tardis_refined.common.blockentity.door.TardisInternalDoor; -import whocraft.tardis_refined.common.capability.TardisLevelOperator; +import whocraft.tardis_refined.common.capability.tardis.TardisLevelOperator; import whocraft.tardis_refined.common.dimension.DimensionHandler; import whocraft.tardis_refined.common.tardis.TardisNavLocation; import whocraft.tardis_refined.common.tardis.manager.AestheticHandler; @@ -43,7 +42,6 @@ import java.util.Map; import java.util.UUID; import java.util.function.BiFunction; -import java.util.function.Consumer; import static whocraft.tardis_refined.registry.TREntityRegistry.ENTITY_TYPES; import static whocraft.tardis_refined.registry.TREntityRegistry.registerStatic; diff --git a/common/src/main/java/whocraft/tardis_refined/constants/NbtConstants.java b/common/src/main/java/whocraft/tardis_refined/constants/NbtConstants.java index 15a297d0f..5df73d90c 100644 --- a/common/src/main/java/whocraft/tardis_refined/constants/NbtConstants.java +++ b/common/src/main/java/whocraft/tardis_refined/constants/NbtConstants.java @@ -9,7 +9,7 @@ import net.minecraft.resources.ResourceLocation; import net.minecraft.server.level.ServerLevel; import net.minecraft.world.level.Level; -import whocraft.tardis_refined.common.capability.TardisLevelOperator; +import whocraft.tardis_refined.common.capability.tardis.TardisLevelOperator; import whocraft.tardis_refined.common.tardis.TardisNavLocation; public class NbtConstants { diff --git a/common/src/main/java/whocraft/tardis_refined/registry/TRControlRegistry.java b/common/src/main/java/whocraft/tardis_refined/registry/TRControlRegistry.java index a757a63e5..07716135c 100644 --- a/common/src/main/java/whocraft/tardis_refined/registry/TRControlRegistry.java +++ b/common/src/main/java/whocraft/tardis_refined/registry/TRControlRegistry.java @@ -5,6 +5,7 @@ import net.minecraft.resources.ResourceLocation; import whocraft.tardis_refined.TardisRefined; import whocraft.tardis_refined.common.tardis.control.Control; +import whocraft.tardis_refined.common.tardis.control.ExteriorDisplayControl; import whocraft.tardis_refined.common.tardis.control.flight.*; import whocraft.tardis_refined.common.tardis.control.ship.MonitorControl; import whocraft.tardis_refined.common.tardis.control.ship.ToggleDoorControl; @@ -35,6 +36,7 @@ public class TRControlRegistry { public static final RegistrySupplier GENERIC_NO_SHOW = register(new GenericControl(new ResourceLocation(TardisRefined.MODID, "generic_no_show"), "control.tardis_refined.generic_control")); public static final RegistrySupplier HANDBRAKE = register(new HandbrakeControl(new ResourceLocation(TardisRefined.MODID, "hand_brake"))); public static final RegistrySupplier FUEL = register(new FuelToggleControl(new ResourceLocation(TardisRefined.MODID, "fuel"))); + public static final RegistrySupplier EXTERIOR_DISPLAY = register(new ExteriorDisplayControl(new ResourceLocation(TardisRefined.MODID, "exterior_display"))); public static Control get(ResourceLocation id){ Control potentialTheme = CONTROL_REGISTRY.get(id); diff --git a/common/src/main/java/whocraft/tardis_refined/registry/TRSoundRegistry.java b/common/src/main/java/whocraft/tardis_refined/registry/TRSoundRegistry.java index bab62f7dc..e122e8377 100644 --- a/common/src/main/java/whocraft/tardis_refined/registry/TRSoundRegistry.java +++ b/common/src/main/java/whocraft/tardis_refined/registry/TRSoundRegistry.java @@ -29,6 +29,7 @@ public class TRSoundRegistry { public static final RegistrySupplier CORRIDOR_TELEPORTER = setUpSound("corridor_teleporter"); public static final RegistrySupplier CORRIDOR_TELEPORTER_SUCCESS = setUpSound("corridor_teleporter_success"); + public static final RegistrySupplier CLOISTER_BELL = setUpSound("cloister_bell"); // Hums diff --git a/common/src/main/java/whocraft/tardis_refined/registry/TRUpgrades.java b/common/src/main/java/whocraft/tardis_refined/registry/TRUpgrades.java index 9b2c6386e..c84405c8f 100644 --- a/common/src/main/java/whocraft/tardis_refined/registry/TRUpgrades.java +++ b/common/src/main/java/whocraft/tardis_refined/registry/TRUpgrades.java @@ -6,9 +6,9 @@ import net.minecraft.world.item.Items; import net.minecraft.world.level.block.Blocks; import whocraft.tardis_refined.TardisRefined; -import whocraft.tardis_refined.common.capability.upgrades.IncrementUpgrade; -import whocraft.tardis_refined.common.capability.upgrades.SpeedUpgrade; -import whocraft.tardis_refined.common.capability.upgrades.Upgrade; +import whocraft.tardis_refined.common.capability.tardis.upgrades.IncrementUpgrade; +import whocraft.tardis_refined.common.capability.tardis.upgrades.SpeedUpgrade; +import whocraft.tardis_refined.common.capability.tardis.upgrades.Upgrade; import whocraft.tardis_refined.common.util.RegistryHelper; public class TRUpgrades { diff --git a/common/src/main/resources/tardis_refined-common.mixins.json b/common/src/main/resources/tardis_refined-common.mixins.json index f00d11afd..a30add7c7 100644 --- a/common/src/main/resources/tardis_refined-common.mixins.json +++ b/common/src/main/resources/tardis_refined-common.mixins.json @@ -5,13 +5,15 @@ "compatibilityLevel": "JAVA_17", "mixins": [ "EndDragonFightAccessor", + "MappedRegistryAccessor", "MinecraftServerStorageAccessor", - "PlayerEntityMixin", - "MappedRegistryAccessor" + "PlayerEntityMixin" ], "client": [ "FogRendererMixin", - "MultiplayerGameModeMixin" + "LocalPlayerMixin", + "MultiplayerGameModeMixin", + "PlayerRenderMixin" ], "injectors": { "defaultRequire": 1 diff --git a/fabric/build.gradle b/fabric/build.gradle index 5e8c02d33..e68d970ec 100644 --- a/fabric/build.gradle +++ b/fabric/build.gradle @@ -22,6 +22,11 @@ configurations { repositories { + maven { + name = "Fuzs Mod Resources" + url = "https://raw.githubusercontent.com/Fuzss/modresources/main/maven/" + } + // the repository for ImmPtl maven { url 'https://jitpack.io' } @@ -37,11 +42,6 @@ repositories { url = 'https://maven.ladysnake.org/releases' } - maven { - name = "Fuzs Mod Resources" - url = "https://raw.githubusercontent.com/Fuzss/modresources/main/maven/" - } - maven { url = "https://pkgs.dev.azure.com/djtheredstoner/DevAuth/_packaging/public/maven/v1" } maven { url "https://maven.shedaniel.me/" } @@ -71,11 +71,13 @@ dependencies { modImplementation "dev.onyxstudios.cardinal-components-api:cardinal-components-base:${rootProject.cardinal_version}" // Adds a dependency on a specific module modImplementation "dev.onyxstudios.cardinal-components-api:cardinal-components-world:${rootProject.cardinal_version}" + modImplementation "dev.onyxstudios.cardinal-components-api:cardinal-components-entity:${rootProject.cardinal_version}" // Includes Cardinal Components API as a Jar-in-Jar dependency (optional) include "dev.onyxstudios.cardinal-components-api:cardinal-components-base:${rootProject.cardinal_version}" include "dev.onyxstudios.cardinal-components-api:cardinal-components-world:${rootProject.cardinal_version}" + include "dev.onyxstudios.cardinal-components-api:cardinal-components-entity:${rootProject.cardinal_version}" modCompileOnly "com.terraformersmc:modmenu:${rootProject.mod_menu_version}" modCompileOnly "curse.maven:jei-238222:${rootProject.jei_fabric_version}" diff --git a/fabric/src/main/java/whocraft/tardis_refined/common/capability/fabric/TRComponents.java b/fabric/src/main/java/whocraft/tardis_refined/common/capability/fabric/TRComponents.java index 4cc9f2d7a..6692e157a 100644 --- a/fabric/src/main/java/whocraft/tardis_refined/common/capability/fabric/TRComponents.java +++ b/fabric/src/main/java/whocraft/tardis_refined/common/capability/fabric/TRComponents.java @@ -7,6 +7,7 @@ import net.minecraft.resources.ResourceLocation; import net.minecraft.server.level.ServerLevel; import whocraft.tardis_refined.TardisRefined; +import whocraft.tardis_refined.common.capability.tardis.fabric.TardisLevelOperatorImpl; import whocraft.tardis_refined.registry.TRDimensionTypes; public class TRComponents implements WorldComponentInitializer { diff --git a/fabric/src/main/java/whocraft/tardis_refined/common/capability/fabric/TardisLevelOperatorDummy.java b/fabric/src/main/java/whocraft/tardis_refined/common/capability/fabric/TardisLevelOperatorDummy.java index 09c92dacd..ea66fd71c 100644 --- a/fabric/src/main/java/whocraft/tardis_refined/common/capability/fabric/TardisLevelOperatorDummy.java +++ b/fabric/src/main/java/whocraft/tardis_refined/common/capability/fabric/TardisLevelOperatorDummy.java @@ -4,7 +4,8 @@ import net.minecraft.server.level.ServerLevel; import net.minecraft.world.level.Level; import whocraft.tardis_refined.TardisRefined; -import whocraft.tardis_refined.common.capability.TardisLevelOperator; +import whocraft.tardis_refined.common.capability.tardis.TardisLevelOperator; +import whocraft.tardis_refined.common.capability.tardis.fabric.TardisLevelOperatorImpl; import java.util.Optional; diff --git a/fabric/src/main/java/whocraft/tardis_refined/common/capability/player/fabric/TardisPlayerComponents.java b/fabric/src/main/java/whocraft/tardis_refined/common/capability/player/fabric/TardisPlayerComponents.java new file mode 100644 index 000000000..22ae95875 --- /dev/null +++ b/fabric/src/main/java/whocraft/tardis_refined/common/capability/player/fabric/TardisPlayerComponents.java @@ -0,0 +1,20 @@ +package whocraft.tardis_refined.common.capability.player.fabric; + +import dev.onyxstudios.cca.api.v3.component.ComponentKey; +import dev.onyxstudios.cca.api.v3.component.ComponentRegistryV3; +import dev.onyxstudios.cca.api.v3.entity.EntityComponentFactoryRegistry; +import dev.onyxstudios.cca.api.v3.entity.EntityComponentInitializer; +import dev.onyxstudios.cca.api.v3.entity.RespawnCopyStrategy; +import net.minecraft.resources.ResourceLocation; +import whocraft.tardis_refined.TardisRefined; + +public class TardisPlayerComponents implements EntityComponentInitializer { + + public static final ComponentKey TARDIS_PLAYER_INFO = + ComponentRegistryV3.INSTANCE.getOrCreate(new ResourceLocation(TardisRefined.MODID, "tardis_player_info"), TardisPlayerInfoImpl.class); + + @Override + public void registerEntityComponentFactories(EntityComponentFactoryRegistry registry) { + registry.registerForPlayers(TARDIS_PLAYER_INFO, TardisPlayerInfoImpl::new, RespawnCopyStrategy.ALWAYS_COPY); + } +} \ No newline at end of file diff --git a/fabric/src/main/java/whocraft/tardis_refined/common/capability/player/fabric/TardisPlayerInfoImpl.java b/fabric/src/main/java/whocraft/tardis_refined/common/capability/player/fabric/TardisPlayerInfoImpl.java new file mode 100644 index 000000000..897f722cb --- /dev/null +++ b/fabric/src/main/java/whocraft/tardis_refined/common/capability/player/fabric/TardisPlayerInfoImpl.java @@ -0,0 +1,40 @@ +package whocraft.tardis_refined.common.capability.player.fabric; + +import dev.onyxstudios.cca.api.v3.component.ComponentV3; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.player.Player; +import whocraft.tardis_refined.common.capability.player.TardisPlayerInfo; + +import java.util.Objects; +import java.util.Optional; + +public class TardisPlayerInfoImpl extends TardisPlayerInfo implements ComponentV3 { + + public TardisPlayerInfoImpl(Player player) { + super(player); + } + + public static Optional get(LivingEntity livingEntity) { + try { + return Optional.of(TardisPlayerComponents.TARDIS_PLAYER_INFO.get(livingEntity)); + } catch (Exception e) { + return Optional.empty(); + } + } + + @Override + public void readFromNbt(CompoundTag tag) { + this.loadData(tag); + } + + @Override + public void writeToNbt(CompoundTag tag) { + CompoundTag nbt = this.saveData(); + for (String key : nbt.getAllKeys()) { + tag.put(key, Objects.requireNonNull(nbt.get(key))); + } + } + + +} \ No newline at end of file diff --git a/fabric/src/main/java/whocraft/tardis_refined/common/capability/fabric/TardisLevelOperatorImpl.java b/fabric/src/main/java/whocraft/tardis_refined/common/capability/tardis/fabric/TardisLevelOperatorImpl.java similarity index 84% rename from fabric/src/main/java/whocraft/tardis_refined/common/capability/fabric/TardisLevelOperatorImpl.java rename to fabric/src/main/java/whocraft/tardis_refined/common/capability/tardis/fabric/TardisLevelOperatorImpl.java index 1a15d0b6c..25fb5a19a 100644 --- a/fabric/src/main/java/whocraft/tardis_refined/common/capability/fabric/TardisLevelOperatorImpl.java +++ b/fabric/src/main/java/whocraft/tardis_refined/common/capability/tardis/fabric/TardisLevelOperatorImpl.java @@ -1,11 +1,12 @@ -package whocraft.tardis_refined.common.capability.fabric; +package whocraft.tardis_refined.common.capability.tardis.fabric; import dev.onyxstudios.cca.api.v3.component.ComponentV3; import net.minecraft.nbt.CompoundTag; import net.minecraft.server.level.ServerLevel; import net.minecraft.world.level.Level; import whocraft.tardis_refined.TardisRefined; -import whocraft.tardis_refined.common.capability.TardisLevelOperator; +import whocraft.tardis_refined.common.capability.fabric.TRComponents; +import whocraft.tardis_refined.common.capability.tardis.TardisLevelOperator; import java.util.Objects; import java.util.Optional; diff --git a/fabric/src/main/java/whocraft/tardis_refined/fabric/events/ModEvents.java b/fabric/src/main/java/whocraft/tardis_refined/fabric/events/ModEvents.java index 34ab95f89..273eeaeb2 100644 --- a/fabric/src/main/java/whocraft/tardis_refined/fabric/events/ModEvents.java +++ b/fabric/src/main/java/whocraft/tardis_refined/fabric/events/ModEvents.java @@ -12,14 +12,13 @@ import net.fabricmc.fabric.api.networking.v1.ServerPlayConnectionEvents; import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerPlayer; -import net.minecraft.world.entity.EntityEvent; import net.minecraft.world.level.Level; import whocraft.tardis_refined.ControlGroupCheckers; import whocraft.tardis_refined.client.GravityOverlay; import whocraft.tardis_refined.client.TRItemColouring; import whocraft.tardis_refined.client.TardisClientLogic; import whocraft.tardis_refined.command.TardisRefinedCommand; -import whocraft.tardis_refined.common.capability.TardisLevelOperator; +import whocraft.tardis_refined.common.capability.tardis.TardisLevelOperator; import whocraft.tardis_refined.common.dimension.DimensionHandler; import whocraft.tardis_refined.common.dimension.TardisTeleportData; import whocraft.tardis_refined.common.dimension.fabric.DimensionHandlerImpl; diff --git a/fabric/src/main/resources/fabric.mod.json b/fabric/src/main/resources/fabric.mod.json index 78791adda..b98eab07b 100644 --- a/fabric/src/main/resources/fabric.mod.json +++ b/fabric/src/main/resources/fabric.mod.json @@ -23,7 +23,8 @@ "whocraft.tardis_refined.fabric.TardisRefinedFabric" ], "cardinal-components": [ - "whocraft.tardis_refined.common.capability.fabric.TRComponents" + "whocraft.tardis_refined.common.capability.fabric.TRComponents", + "whocraft.tardis_refined.common.capability.player.fabric.TardisPlayerComponents" ], "client": [ "whocraft.tardis_refined.fabric.TardisRefinedFabricClient" @@ -43,7 +44,8 @@ }, "custom": { "cardinal-components": [ - "${mod_id}:tardis_data" + "${mod_id}:tardis_data", + "${mod_id}:tardis_player_info" ] } } diff --git a/forge/src/main/java/whocraft/tardis_refined/common/capability/player/forge/TardisPlayerInfoImpl.java b/forge/src/main/java/whocraft/tardis_refined/common/capability/player/forge/TardisPlayerInfoImpl.java new file mode 100644 index 000000000..261fe84e7 --- /dev/null +++ b/forge/src/main/java/whocraft/tardis_refined/common/capability/player/forge/TardisPlayerInfoImpl.java @@ -0,0 +1,71 @@ +package whocraft.tardis_refined.common.capability.player.forge; + +import net.minecraft.core.Direction; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.player.Player; +import net.neoforged.bus.api.SubscribeEvent; +import net.neoforged.fml.common.Mod; +import net.neoforged.neoforge.common.capabilities.*; +import net.neoforged.neoforge.common.util.LazyOptional; +import net.neoforged.neoforge.event.AttachCapabilitiesEvent; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; +import whocraft.tardis_refined.TardisRefined; +import whocraft.tardis_refined.common.capability.player.TardisPlayerInfo; + +import java.util.Optional; + +@Mod.EventBusSubscriber(modid = TardisRefined.MODID) +public class TardisPlayerInfoImpl { + + public static Capability TARDIS_PLAYER_INFO = CapabilityManager.get(new CapabilityToken<>() { + }); + + @SubscribeEvent + public static void init(RegisterCapabilitiesEvent e) { + e.register(TardisPlayerInfo.class); + } + + @SubscribeEvent + public static void onAttachCapabilities(AttachCapabilitiesEvent e) { + if (e.getObject() instanceof Player player) { + e.addCapability(new ResourceLocation(TardisRefined.MODID, "tardis_player_info"), new TardisPlayerInfoProvider(new TardisPlayerInfo(player))); + } + } + + + public static Optional get(LivingEntity player) { + return player.getCapability(TARDIS_PLAYER_INFO).resolve(); + } + + public static class TardisPlayerInfoProvider implements ICapabilitySerializable { + + public final TardisPlayerInfo capability; + public final LazyOptional lazyOptional; + + public TardisPlayerInfoProvider(TardisPlayerInfo capability) { + this.capability = capability; + this.lazyOptional = LazyOptional.of(() -> capability); + } + + @Override + public @NotNull LazyOptional getCapability(@NotNull Capability capability, @Nullable Direction arg) { + return capability == TARDIS_PLAYER_INFO ? this.lazyOptional.cast() : LazyOptional.empty(); + } + + @Override + public CompoundTag serializeNBT() { + return this.capability.saveData(); + } + + @Override + public void deserializeNBT(CompoundTag arg) { + this.capability.loadData(arg); + } + } + +} \ No newline at end of file diff --git a/forge/src/main/java/whocraft/tardis_refined/common/capability/neoforge/TardisLevelOperatorImpl.java b/forge/src/main/java/whocraft/tardis_refined/common/capability/tardis/neoforge/TardisLevelOperatorImpl.java similarity index 95% rename from forge/src/main/java/whocraft/tardis_refined/common/capability/neoforge/TardisLevelOperatorImpl.java rename to forge/src/main/java/whocraft/tardis_refined/common/capability/tardis/neoforge/TardisLevelOperatorImpl.java index 04c1d8ea1..b22565c99 100644 --- a/forge/src/main/java/whocraft/tardis_refined/common/capability/neoforge/TardisLevelOperatorImpl.java +++ b/forge/src/main/java/whocraft/tardis_refined/common/capability/tardis/neoforge/TardisLevelOperatorImpl.java @@ -1,4 +1,4 @@ -package whocraft.tardis_refined.common.capability.neoforge; +package whocraft.tardis_refined.common.capability.tardis.neoforge; import net.minecraft.core.Direction; import net.minecraft.nbt.CompoundTag; @@ -14,7 +14,7 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import whocraft.tardis_refined.TardisRefined; -import whocraft.tardis_refined.common.capability.TardisLevelOperator; +import whocraft.tardis_refined.common.capability.tardis.TardisLevelOperator; import whocraft.tardis_refined.registry.TRDimensionTypes; import java.util.Optional; diff --git a/forge/src/main/java/whocraft/tardis_refined/common/data/LangProviderEnglish.java b/forge/src/main/java/whocraft/tardis_refined/common/data/LangProviderEnglish.java index 820c3a708..485760786 100644 --- a/forge/src/main/java/whocraft/tardis_refined/common/data/LangProviderEnglish.java +++ b/forge/src/main/java/whocraft/tardis_refined/common/data/LangProviderEnglish.java @@ -9,7 +9,7 @@ import net.minecraft.world.damagesource.DamageType; import net.neoforged.neoforge.common.data.LanguageProvider; import whocraft.tardis_refined.TardisRefined; -import whocraft.tardis_refined.common.capability.upgrades.Upgrade; +import whocraft.tardis_refined.common.capability.tardis.upgrades.Upgrade; import whocraft.tardis_refined.common.hum.HumEntry; import whocraft.tardis_refined.common.hum.TardisHums; import whocraft.tardis_refined.registry.TRUpgrades; @@ -52,6 +52,7 @@ protected void addTranslations() { addSound(TRSoundRegistry.SCREWDRIVER_DISCARD.get(), "Screwdriver discard data"); addSound(TRSoundRegistry.GRAVITY_TUNNEL.get(), "Gravity tunnel winds"); addSound(TRSoundRegistry.LOW_FUEL.get(), "Low fuel warning"); + addSound(TRSoundRegistry.CLOISTER_BELL.get(), "Cloister Bell"); //Hum Sounds TardisHums.registerDefaultHums(); diff --git a/forge/src/main/java/whocraft/tardis_refined/common/data/SoundProvider.java b/forge/src/main/java/whocraft/tardis_refined/common/data/SoundProvider.java index b981d49fc..6d399154b 100644 --- a/forge/src/main/java/whocraft/tardis_refined/common/data/SoundProvider.java +++ b/forge/src/main/java/whocraft/tardis_refined/common/data/SoundProvider.java @@ -49,6 +49,10 @@ public void registerSounds() { add(TRSoundRegistry.ARTRON_PILLAR_ACTIVE.get(), basicSound("artron_pillar", new ResourceLocation(TardisRefined.MODID, "blocks/artron_pillar_active"))); add(TRSoundRegistry.CORRIDOR_TELEPORTER.get(), basicSound("corridor_teleporter", new ResourceLocation(TardisRefined.MODID, "blocks/corridor_teleporter"))); add(TRSoundRegistry.CORRIDOR_TELEPORTER_SUCCESS.get(), basicSound("corridor_teleporter_success", new ResourceLocation(TardisRefined.MODID, "blocks/corridor_teleporter_success"))); + add(TRSoundRegistry.CLOISTER_BELL.get(), + basicSound("cloister_bell", SoundDefinition.Sound.sound(new ResourceLocation("block/bell/resonate"), SoundDefinition.SoundType.SOUND).pitch(0.85), + SoundDefinition.Sound.sound(new ResourceLocation("block/bell/resonate"), SoundDefinition.SoundType.SOUND).pitch(0.9) + )); } @@ -56,6 +60,8 @@ public SoundDefinition basicSound(String langKey, ResourceLocation resourceLocat return SoundDefinition.definition().with(SoundDefinition.Sound.sound(resourceLocation, SoundDefinition.SoundType.SOUND)).subtitle(createSubtitle(langKey)); } + + public SoundDefinition basicSound(String langKey, ResourceLocation... resourceLocation) { SoundDefinition soundDefinition = SoundDefinition.definition(); for (ResourceLocation location : resourceLocation) { @@ -65,4 +71,13 @@ public SoundDefinition basicSound(String langKey, ResourceLocation... resourceLo return soundDefinition.subtitle(createSubtitle(langKey)); } + public SoundDefinition basicSound(String langKey, final SoundDefinition.Sound... resourceLocation) { + SoundDefinition soundDefinition = SoundDefinition.definition(); + for (SoundDefinition.Sound sound : resourceLocation) { + soundDefinition.with(sound); + } + + return soundDefinition.subtitle(createSubtitle(langKey)); + } + } diff --git a/gradle.properties b/gradle.properties index 683c65e8b..b10a136e3 100644 --- a/gradle.properties +++ b/gradle.properties @@ -46,7 +46,7 @@ neoforge_data_pack_format=18 ##Mod Information #Common Mod Information -mod_version=2.0.7 +mod_version=2.0.8 license=https://github.com/Whocraft/TardisRefined/blob/minecraft/1.20/LICENSE.MD credits=Commoble, Lucraft, starray1000000, Monsterwaill, TheJudge, LoxiGoose mod_authors=CommandrMoose / River, Jeryn99, Magic Man, ILikePandas, Jacob K, 50ap5ud5 diff --git a/settings.gradle b/settings.gradle index 3c5597fe2..1cc868ff3 100644 --- a/settings.gradle +++ b/settings.gradle @@ -2,7 +2,11 @@ pluginManagement { repositories { maven { url "https://maven.fabricmc.net/" } maven { url "https://maven.architectury.dev/" } - maven { url "https://maven.minecraftforge.net/" } + maven { url "https://maven.neoforged.net/releases/" } + + maven { + url "https://plugins.gradle.org/m2/" + } gradlePluginPortal() } }