Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
5f50cf1
Bug fix: Fixes a side effect of git cherry picking in LangProviderEng…
Jeryn99 Feb 17, 2025
ba0ac34
Create 6.0.4 support (#501)
Jeryn99 Apr 1, 2025
c6885d9
Fix the TARDIS forgetting its current dimension on world reload (#515)
Auroali May 22, 2025
1f5784e
Fixed prefabs left on console texture (#546)
MaketendoDev Oct 15, 2025
3704d8a
Fix TARDIS creation in other dimensions. (#549)
Acuadragon100 Oct 18, 2025
eec3b27
Fix materialize around (#543)
Acuadragon100 Oct 20, 2025
4066b93
Fix Valkyrien Skies (#542)
Acuadragon100 Nov 15, 2025
a6427a0
Added Creative TARDIS Item. (#545)
MaketendoDev Dec 9, 2025
a85e576
Feature: Per ConsolePattern Control Specification (#560)
Jeryn99 Dec 9, 2025
4c6ac57
Bug Fixes (#561)
Jeryn99 Dec 9, 2025
a338b5d
Varying fixes (#562)
Jeryn99 Dec 9, 2025
22d2507
Avoid landing at 0, 0, 0 unless absolutely necessary. (#580)
Acuadragon100 Jan 18, 2026
3a64de5
Update fabric-create integration to create 6. (#578)
Acuadragon100 Jan 18, 2026
b893b20
Fix Respawn Anchor and /spawnpoint command not working inside the TAR…
Acuadragon100 Jan 18, 2026
a5caa6e
Improve Valkyrien Skies and Immersive Portals compatibility (#581)
Acuadragon100 Jan 21, 2026
1183930
Fix not working on Arclight. (#591)
Acuadragon100 Feb 23, 2026
6439e03
Fix takeoff sound pos (#593)
Acuadragon100 Feb 28, 2026
5d11365
Fix Grown Tardis Item crashing the game if Valkyrien Skies is install…
Acuadragon100 Apr 2, 2026
10223b8
Remove forceloading (#594)
Acuadragon100 Apr 2, 2026
223e1ba
Remove unnecessary Valkyrien Skies chunkloading hack. (#595)
Acuadragon100 Apr 2, 2026
e784bae
Fix Immersive Portals compat on Forge. (#592)
Acuadragon100 Apr 2, 2026
82cb413
Update bug_report_template.yml
CommandrMoose May 10, 2026
f79108b
Update bug_report_template.yml
CommandrMoose May 10, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .github/ISSUE_TEMPLATE/bug_report_template.yml
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@ body:
label: Tardis Refined version
description: What version of Tardis Refined are you using?
options:
- v2.1.6
- v2.1.5
- v2.1.4
- v2.1.3
Expand Down
9 changes: 4 additions & 5 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ buildscript {

plugins {
id "architectury-plugin" version "3.4-SNAPSHOT"
id "dev.architectury.loom" version "1.5+" apply false
id "dev.architectury.loom" version "1.10+" apply false
id "me.shedaniel.unified-publishing" version "0.1.+"
id "com.github.breadmoirai.github-release" version "2.4.1"
}
Expand Down Expand Up @@ -88,6 +88,9 @@ allprojects {

repositories {

maven { url = "https://maven.createmod.net" } // Create, Ponder, Flywheel


// mavens for Create Fabric and dependencies
maven { url = "https://api.modrinth.com/maven" } // LazyDFU
maven { url = "https://maven.terraformersmc.com/releases/" } // Mod Menu
Expand All @@ -99,10 +102,6 @@ allprojects {
maven { url = "https://jitpack.io/" } // Mixin Extras, Fabric ASM
maven { url = "https://raw.githubusercontent.com/Fuzss/modresources/main/maven/" } // Forge Config API Port

maven {
name "tterrag maven"
url "https://maven.tterrag.com/"
}

maven {
name = "Fuzs Mod Resources"
Expand Down
38 changes: 35 additions & 3 deletions changelog.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,40 @@
# Version 2.1.5 - HOTFIX
# Version 2.1.7

![TARDIS Refined](https://wiki.tardisrefined.net/TARDIS-Refined-Wiki/tardis_refined_v2_1.png)

All previous changes from 2.1.4: https://wiki.tardisrefined.net/version-2-1-4.html
#### Items
- Added Grown Tardis Item.

#### Changes
- Amethyst Screwdriver tooltip now is colored gray.
- Updated create-fabric integration to create 6.

#### Configs
- New config option to disable teleportation for the Immersive Portals portal, instead teleporting the player directly as if Immersive Portals integration was disabled.
- New config option to toggle the above setting separately when the door is on a Valkyrien Skies ship.
- New config option to disable the collision box of the door while open with Immersive Portals integration enabled on Valkyrien Skies ships.

#### Bug Fix
- Bug fix: Fixed class loading destroying other mods ability to load
- Bug fix: TARDIS exterior disappears when moved by other mods.
- Bug fix: Taking off or landing a TARDIS on a Valkyrien Skies ship breaks the ship.
- Bug fix: Impossible to enter TARDIS when on a Valkyrien Skies ship.
- Bug fix: TARDIS shows shipyard coordinates when on a Valkyrien Skies ship.
- Bug fix: Player does not face the right horizontal direction when entering/exiting a TARDIS on a Valkyrien Skies ship.
- Bug fix: TARDIS does not take Valkyrien Skies ships into account when computing travel distance.
- Bug fix: TARDIS does not automatically try to land on ships.
- Bug fix: Flickering when spectating TARDIS exterior on a Valkyrien Skies ship.
- Bug fix: Grown Tardis Item crashes the game if Valkyrien Skies is installed.
- Bug fix: Immersive Portals portal is not rotated correctly when door is on a Valkyrien Skies ship.

- Bug fix: Fixes Console Textures having left over prefabs
- Bug fix: Fixes Forge not having the same access level as Fabric (https://github.com/WhoCraft/TardisRefined/issues/477)
- Bug fix: Fixed Shulker shells not having correct texture paths
- Bug fix: Fixed the TARDIS forgetting its current dimension on world reload
- Bug fix: Fix materialize around upgrade not working.
- Bug fix: Fixed TARDIS being broken when created in a non-overworld dimension.
- Bug fix: Immersive Portals portal sometimes not spawning when opened from exterior.
- Bug fix: Respawn Anchor and /spawnpoint command not working inside the TARDIS
- Bug fix: Capability deserialization fails on Arclight
- Bug fix: TARDIS removes forceloading when taking off and landing.
- Bug fix: TARDIS takeoff sound plays from the interior door instead of the console.
- Bug fix: Immersive Portals compatibility crashing the game on Forge.
1 change: 0 additions & 1 deletion common/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,6 @@ dependencies {
transitive(false)
}

modCompileOnly("com.simibubi.create:create-fabric-${minecraft_version}:${create_version_fabric}")
modCompileOnly("maven.modrinth:valkyrien-skies:${minecraft_version}-fabric-${valkyrienskies_version}")

}
Expand Down
23 changes: 23 additions & 0 deletions common/src/main/java/whocraft/tardis_refined/TRConfig.java
Original file line number Diff line number Diff line change
Expand Up @@ -53,9 +53,14 @@ public Client(ForgeConfigSpec.Builder builder) {
public static class Common {
public final ForgeConfigSpec.BooleanValue COMPATIBILITY_IP;

public final ForgeConfigSpec.BooleanValue IP_VS_COLLISION;

public Common(ForgeConfigSpec.Builder builder) {
builder.push("compatibility");
COMPATIBILITY_IP = builder.comment("Toggle Immersive Portals compatibility (TR 2.0+). 2.0 has limited support").translation(ModMessages.CONFIG_IP_COMPAT).define("immersive_portals_support", true);
builder.push("immersive_portals_valkyrien_skies");
IP_VS_COLLISION = builder.comment("If false, the TARDIS door's collision box will be disabled when opened on a Valkyrien Skies ship if teleportation_mode_vs is set to PORTAL.").translation(ModMessages.CONFIG_IP_VS_COLLISION).define("open_door_ship_collision", true);
builder.pop();
builder.pop();
}

Expand All @@ -66,12 +71,30 @@ public static class Server {
public final ForgeConfigSpec.ConfigValue<List<? extends String>> ADVENTURE_MODE_DEFAULTS;
public final ForgeConfigSpec.BooleanValue ADVENTURE_MODE;

public final ForgeConfigSpec.EnumValue<IPTeleportationMode> IP_TELEPORTATION;
public final ForgeConfigSpec.EnumValue<IPTeleportationMode> IP_TELEPORTATION_VS;

public enum IPTeleportationMode {
PORTAL,
ITP;

private static final String COMMENT = "PORTAL is the normal immersive portals with maximum smoothness. ITP instead teleports the player directly similar to when Immersive Portals integration is disabled, making the boti effect purely visual.";
}

public Server(ForgeConfigSpec.Builder builder) {
builder.push("travel");
BANNED_DIMENSIONS = builder.translation("config.tardis_refined.banned_dimensions").comment("A list of Dimensions the TARDIS cannot land in.").defineList("banned_dimensions", Lists.newArrayList("example:dimension"), String.class::isInstance);
ADVENTURE_MODE_DEFAULTS = builder.translation("config.tardis_refined.adventure_mode_defaults").comment("A list of Dimensions that are automatically sampled").defineList("adventure_mode_defaults", Lists.newArrayList("minecraft:overworld"), String.class::isInstance);
ADVENTURE_MODE = builder.translation("config.tardis_refined.adventure_mode").comment("Toggles whether players must discover and sample dimensions before they can travel there").define("adventure_mode", false);
builder.pop();
builder.push("compatibility");
builder.push("immersive_portals");
IP_TELEPORTATION = builder.comment("Choose what teleportation method to use when walking through the TARDIS door. " + IPTeleportationMode.COMMENT).translation(ModMessages.CONFIG_IP_TELEPORTATION).defineEnum("teleportation_mode", IPTeleportationMode.PORTAL);
builder.pop();
builder.push("immersive_portals_valkyrien_skies");
IP_TELEPORTATION_VS = builder.comment("Choose what teleportation method to use when walking through the TARDIS door on a Valkyrien Skies ship. " + IPTeleportationMode.COMMENT + " ITP is recommended to avoid getting stuck in walls/the void when the ship is moving.").translation(ModMessages.CONFIG_IP_TELEPORTATION_VS).defineEnum("teleportation_mode_vs", IPTeleportationMode.ITP);
builder.pop();
builder.pop();
}

}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -96,11 +96,14 @@ public void renderConsole(GlobalConsoleBlockEntity globalConsoleBlock, Level lev
this.modelRoot.getAllParts().forEach(ModelPart::resetPose);
TardisClientData reactions = TardisClientData.getInstance(level.dimension());

int playerTicks = Minecraft.getInstance().player.tickCount;
float tickCount = playerTicks + Minecraft.getInstance().getFrameTime();

if (globalConsoleBlock != null && globalConsoleBlock.getBlockState().getValue(GlobalConsoleBlock.POWERED)) {
if (!reactions.isFlying() && TRConfig.CLIENT.PLAY_CONSOLE_IDLE_ANIMATIONS.get() && globalConsoleBlock != null) {
this.animate(globalConsoleBlock.liveliness, IDLE, Minecraft.getInstance().player.tickCount);
this.animate(globalConsoleBlock.liveliness, IDLE, tickCount);
} else {
this.animate(reactions.ROTOR_ANIMATION, FLIGHT, Minecraft.getInstance().player.tickCount);
this.animate(reactions.ROTOR_ANIMATION, FLIGHT, tickCount);
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,12 +52,15 @@ public void renderConsole(GlobalConsoleBlockEntity globalConsoleBlock, Level lev

TardisClientData reactions = TardisClientData.getInstance(level.dimension());

int playerTicks = Minecraft.getInstance().player.tickCount;
float tickCount = playerTicks + Minecraft.getInstance().getFrameTime();

if (globalConsoleBlock != null && globalConsoleBlock.getBlockState().getValue(GlobalConsoleBlock.POWERED)) {
if (reactions.isFlying()) {
this.animate(reactions.ROTOR_ANIMATION, FLIGHT, Minecraft.getInstance().player.tickCount);
this.animate(reactions.ROTOR_ANIMATION, FLIGHT, tickCount);
} else {
if (TRConfig.CLIENT.PLAY_CONSOLE_IDLE_ANIMATIONS.get() && globalConsoleBlock != null) {
this.animate(globalConsoleBlock.liveliness, IDLE, Minecraft.getInstance().player.tickCount);
this.animate(globalConsoleBlock.liveliness, IDLE, tickCount);
}
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,5 @@
package whocraft.tardis_refined.client.model.blockentity.console;

// Made with Blockbench 4.6.4
// Exported for Minecraft version 1.17 or later with Mojang mappings
// Paste this class into your mod and generate all required imports


import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.blaze3d.vertex.VertexConsumer;
import dev.jeryn.frame.tardis.Frame;
Expand Down Expand Up @@ -76,13 +71,15 @@ public void renderConsole(GlobalConsoleBlockEntity globalConsoleBlock, Level lev
root().getAllParts().forEach(ModelPart::resetPose);
TardisClientData reactions = TardisClientData.getInstance(level.dimension());

int playerTicks = Minecraft.getInstance().player.tickCount;
float tickCount = playerTicks + Minecraft.getInstance().getFrameTime();

if (globalConsoleBlock != null && globalConsoleBlock.getBlockState().getValue(GlobalConsoleBlock.POWERED)) {
if (reactions.isFlying()) {
this.animate(reactions.ROTOR_ANIMATION, FLIGHT, Minecraft.getInstance().player.tickCount);
this.animate(reactions.ROTOR_ANIMATION, FLIGHT, tickCount);
} else {
if (TRConfig.CLIENT.PLAY_CONSOLE_IDLE_ANIMATIONS.get() && globalConsoleBlock != null) {
this.animate(globalConsoleBlock.liveliness, IDLE, Minecraft.getInstance().player.tickCount);
this.animate(globalConsoleBlock.liveliness, IDLE, tickCount);
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,8 @@ public void renderConsole(GlobalConsoleBlockEntity globalConsoleBlock, Level lev
boolean powered = globalConsoleBlock == null || globalConsoleBlock.getBlockState().getValue(GlobalConsoleBlock.POWERED);

// Store tick count for later use
int tickCount = Minecraft.getInstance().player.tickCount;
int playerTicks = Minecraft.getInstance().player.tickCount;
float tickCount = playerTicks + Minecraft.getInstance().getFrameTime();

TardisClientData reactions = TardisClientData.getInstance(level.dimension());

Expand All @@ -67,7 +68,7 @@ public void renderConsole(GlobalConsoleBlockEntity globalConsoleBlock, Level lev
if (globalConsoleBlock.getTicksBooting() > 0) {
if (!globalConsoleBlock.powerOn.isStarted()) {
globalConsoleBlock.powerOff.stop();
globalConsoleBlock.powerOn.start(tickCount);
globalConsoleBlock.powerOn.start((int) tickCount);
}
this.animate(globalConsoleBlock.powerOn, POWER_ON, tickCount);
}
Expand All @@ -87,7 +88,7 @@ public void renderConsole(GlobalConsoleBlockEntity globalConsoleBlock, Level lev
// Power off animation if not booting
if (!globalConsoleBlock.powerOff.isStarted()) {
globalConsoleBlock.powerOn.stop();
globalConsoleBlock.powerOff.start(tickCount);
globalConsoleBlock.powerOff.start((int) tickCount);
}
this.animate(globalConsoleBlock.powerOff, POWER_OFF, tickCount);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -59,12 +59,15 @@ public void renderConsole(GlobalConsoleBlockEntity globalConsoleBlock, Level lev
root().getAllParts().forEach(ModelPart::resetPose);
TardisClientData reactions = TardisClientData.getInstance(level.dimension());

int playerTicks = Minecraft.getInstance().player.tickCount;
float tickCount = playerTicks + Minecraft.getInstance().getFrameTime();

if (globalConsoleBlock != null && globalConsoleBlock.getBlockState().getValue(GlobalConsoleBlock.POWERED)) {
if (reactions.isFlying()) {
this.animate(reactions.ROTOR_ANIMATION, FLIGHT, Minecraft.getInstance().player.tickCount);
this.animate(reactions.ROTOR_ANIMATION, FLIGHT, tickCount);
} else {
if (TRConfig.CLIENT.PLAY_CONSOLE_IDLE_ANIMATIONS.get() && globalConsoleBlock != null) {
this.animate(globalConsoleBlock.liveliness, IDLE, Minecraft.getInstance().player.tickCount);
this.animate(globalConsoleBlock.liveliness, IDLE, tickCount);
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,11 @@ public void setupAnim(Entity entity, float f, float g, float h, float i, float j
public void renderConsole(GlobalConsoleBlockEntity globalConsoleBlock, Level level, PoseStack poseStack, VertexConsumer vertexConsumer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha) {
root().getAllParts().forEach(ModelPart::resetPose);
TardisClientData reactions = TardisClientData.getInstance(level.dimension());
this.animate(reactions.ROTOR_ANIMATION, MODEL_ROTOR_LOOP, Minecraft.getInstance().player.tickCount);

int playerTicks = Minecraft.getInstance().player.tickCount;
float tickCount = playerTicks + Minecraft.getInstance().getFrameTime();

this.animate(reactions.ROTOR_ANIMATION, MODEL_ROTOR_LOOP, tickCount);

float rot = -1f + (2 * ((float) reactions.getThrottleStage() / TardisPilotingManager.MAX_THROTTLE_STAGE));
throttle_control.xRot = rot;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -79,10 +79,13 @@ public void renderConsole(GlobalConsoleBlockEntity globalConsoleBlock, Level lev
panels.getAllParts().forEach(ModelPart::resetPose);
console.getAllParts().forEach(ModelPart::resetPose);

int playerTicks = Minecraft.getInstance().player.tickCount;
float tickCount = playerTicks + Minecraft.getInstance().getFrameTime();

TardisClientData reactions = TardisClientData.getInstance(level.dimension());

if (globalConsoleBlock != null && globalConsoleBlock.getBlockState().getValue(GlobalConsoleBlock.POWERED)) {
this.animate(reactions.ROTOR_ANIMATION, FLIGHT, Minecraft.getInstance().player.tickCount);
this.animate(reactions.ROTOR_ANIMATION, FLIGHT, tickCount);
}

float rot = -1f + (2 * ((float) reactions.getThrottleStage() / TardisPilotingManager.MAX_THROTTLE_STAGE));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,12 +53,15 @@ public void renderConsole(GlobalConsoleBlockEntity globalConsoleBlock, Level lev
root().getAllParts().forEach(ModelPart::resetPose);
TardisClientData reactions = TardisClientData.getInstance(level.dimension());

int playerTicks = Minecraft.getInstance().player.tickCount;
float tickCount = playerTicks + Minecraft.getInstance().getFrameTime();

if (globalConsoleBlock != null && globalConsoleBlock.getBlockState().getValue(GlobalConsoleBlock.POWERED)) {
if (reactions.isFlying()) {
this.animate(reactions.ROTOR_ANIMATION, FLIGHT, Minecraft.getInstance().player.tickCount);
this.animate(reactions.ROTOR_ANIMATION, FLIGHT, tickCount);
} else {
if (TRConfig.CLIENT.PLAY_CONSOLE_IDLE_ANIMATIONS.get() && globalConsoleBlock != null) {
this.animate(globalConsoleBlock.liveliness, IDLE, Minecraft.getInstance().player.tickCount);
this.animate(globalConsoleBlock.liveliness, IDLE, tickCount);
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -55,14 +55,17 @@ public void setupAnim(Entity entity, float f, float g, float h, float i, float j
public void renderConsole(GlobalConsoleBlockEntity globalConsoleBlock, Level level, PoseStack poseStack, VertexConsumer vertexConsumer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha) {
root().getAllParts().forEach(ModelPart::resetPose);

int playerTicks = Minecraft.getInstance().player.tickCount;
float tickCount = playerTicks + Minecraft.getInstance().getFrameTime();

TardisClientData reactions = TardisClientData.getInstance(level.dimension());

if (globalConsoleBlock != null && globalConsoleBlock.getBlockState().getValue(GlobalConsoleBlock.POWERED)) {
if (reactions.isFlying()) {
this.animate(reactions.ROTOR_ANIMATION, FLIGHT, Minecraft.getInstance().player.tickCount);
this.animate(reactions.ROTOR_ANIMATION, FLIGHT, tickCount);
} else {
if (TRConfig.CLIENT.PLAY_CONSOLE_IDLE_ANIMATIONS.get() && globalConsoleBlock != null) {
this.animate(globalConsoleBlock.liveliness, IDLE, Minecraft.getInstance().player.tickCount);
this.animate(globalConsoleBlock.liveliness, IDLE, tickCount);
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -64,16 +64,16 @@ public void renderConsole(GlobalConsoleBlockEntity globalConsoleBlock, Level lev


// Store tick count for later use
int tickCount = Minecraft.getInstance().player.tickCount;

int playerTicks = Minecraft.getInstance().player.tickCount;
float tickCount = playerTicks + Minecraft.getInstance().getFrameTime();
if (globalConsoleBlock != null) {
// Booting logic
if (powered) {

if (globalConsoleBlock.getTicksBooting() > 0) {
if (!globalConsoleBlock.powerOn.isStarted()) {
globalConsoleBlock.powerOff.stop();
globalConsoleBlock.powerOn.start(tickCount);
globalConsoleBlock.powerOn.start((int) tickCount);
}
this.animate(globalConsoleBlock.powerOn, POWER_ON, tickCount);
}
Expand All @@ -93,7 +93,7 @@ public void renderConsole(GlobalConsoleBlockEntity globalConsoleBlock, Level lev
// Power off animation if not booting
if (!globalConsoleBlock.powerOff.isStarted()) {
globalConsoleBlock.powerOn.stop();
globalConsoleBlock.powerOff.start(tickCount);
globalConsoleBlock.powerOff.start((int) tickCount);
}
this.animate(globalConsoleBlock.powerOff, POWER_OFF, tickCount);
}
Expand Down
Loading
Loading