Skip to content

Commit 2dcf13e

Browse files
committed
updated for 26.2+
1 parent 257b23d commit 2dcf13e

12 files changed

Lines changed: 65 additions & 62 deletions

gradle.properties

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@ org.gradle.caching=true
66

77
# Fabric Properties
88
# check these on https://fabricmc.net/develop
9-
minecraft_version=26.1
10-
loader_version=0.19.0
9+
minecraft_version=26.2
10+
loader_version=0.19.3
1111
loom_version=1.16-SNAPSHOT
1212

1313
# Mod Properties
@@ -16,4 +16,4 @@ maven_group=org.vfast
1616
archives_base_name=backrooms
1717

1818
# Dependencies
19-
fabric_api_version=0.145.1+26.1
19+
fabric_api_version=0.155.2+26.2

src/main/java/org/vfast/backrooms/blocks/BackroomsBlocks.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ public class BackroomsBlocks {
2222

2323
// Moist Silk blocks
2424
public static final Block MOIST_SILK = registerBlock("moist_silk",
25-
BlockBehaviour.Properties.ofFullCopy(Blocks.WHITE_WOOL).sound(SoundType.WOOL).requiresCorrectToolForDrops().strength(2f));
25+
BlockBehaviour.Properties.ofFullCopy(Blocks.WOOL.white()).sound(SoundType.WOOL).requiresCorrectToolForDrops().strength(2f));
2626
public static final Block MOIST_SILK_OAK_PLANKS = registerBlock("moist_silk_oak_planks",
2727
createMoistSilkPlanksBlock(Blocks.OAK_PLANKS));
2828
public static final Block MOIST_SILK_SPRUCE_PLANKS = registerBlock("moist_silk_spruce_planks",
@@ -104,15 +104,15 @@ public class BackroomsBlocks {
104104
public static final Block BACKROOMS_PORTAL = registerBlock("backrooms_portal", BackroomsPortalBlock::new,
105105
BlockBehaviour.Properties.ofFullCopy(Blocks.NETHER_PORTAL).lightLevel((b) -> 0), false);
106106
public static final Block DROPPED_CEILING = registerBlock("dropped_ceiling",
107-
BlockBehaviour.Properties.ofFullCopy(Blocks.WHITE_WOOL).sound(SoundType.WOOL).strength(1f));
107+
BlockBehaviour.Properties.ofFullCopy(Blocks.WOOL.white()).sound(SoundType.WOOL).strength(1f));
108108
public static final Block MOIST_CARPET = registerBlock("moist_carpet",
109-
BlockBehaviour.Properties.ofFullCopy(Blocks.WHITE_WOOL).sound(SoundType.WOOL).requiresCorrectToolForDrops().strength(2f));
109+
BlockBehaviour.Properties.ofFullCopy(Blocks.WOOL.white()).sound(SoundType.WOOL).requiresCorrectToolForDrops().strength(2f));
110110
public static final Block FLUORESCENT_LIGHT = registerBlock("fluorescent_light",
111111
BlockBehaviour.Properties.ofFullCopy(Blocks.GLASS).sound(SoundType.GLASS).strength(0.1f).lightLevel(state -> 9));
112112
public static final Block BLUE_TAPESTRY = registerBlock("blue_tapestry",
113-
BlockBehaviour.Properties.ofFullCopy(Blocks.WHITE_WOOL).sound(SoundType.WOOL).strength(2f));
113+
BlockBehaviour.Properties.ofFullCopy(Blocks.WOOL.white()).sound(SoundType.WOOL).strength(2f));
114114
public static final Block STRIPED_BLUE_TAPESTRY = registerBlock("striped_blue_tapestry",
115-
BlockBehaviour.Properties.ofFullCopy(Blocks.WHITE_WOOL).sound(SoundType.WOOL).strength(2f));
115+
BlockBehaviour.Properties.ofFullCopy(Blocks.WOOL.white()).sound(SoundType.WOOL).strength(2f));
116116
// public static final Block BLUE_TAPE = registerTape("blue_tape");
117117

118118
// Level 1
@@ -137,7 +137,7 @@ public class BackroomsBlocks {
137137
// public static final Block EXIT_SIGN = registerBlock("exit_sign",
138138
// ExitBlock::new, BlockBehaviour.Properties.ofFullCopy(Blocks.IRON_BLOCK).sound(SoundType.METAL).requiresCorrectToolForDrops().strength(2f), false);
139139
public static final Block WOOLY_CHAIR = registerBlock("wooly_chair",
140-
WoolyChairBlock::new, BlockBehaviour.Properties.ofFullCopy(Blocks.WHITE_WOOL).sound(SoundType.WOOL).noOcclusion().requiresCorrectToolForDrops().strength(2f), false);
140+
WoolyChairBlock::new, BlockBehaviour.Properties.ofFullCopy(Blocks.WOOL.white()).sound(SoundType.WOOL).noOcclusion().requiresCorrectToolForDrops().strength(2f), false);
141141
public static final Block TEXT_SIGN = registerBlock("text_ceiling_sign",
142142
TextSignBlock::new, BlockBehaviour.Properties.ofFullCopy(Blocks.OAK_HANGING_SIGN).requiresCorrectToolForDrops(), false);
143143
public static final Block CRT_TV = registerBlock("crt_tv",
@@ -148,7 +148,7 @@ private static BlockBehaviour.Properties createMoistSilkPlanksBlock(Block source
148148
}
149149

150150
private static BlockBehaviour.Properties createMarkedConcreteBlock() {
151-
return BlockBehaviour.Properties.ofFullCopy(Blocks.BLACK_CONCRETE).sound(SoundType.STONE);
151+
return BlockBehaviour.Properties.ofFullCopy(Blocks.CONCRETE.black()).sound(SoundType.STONE);
152152
}
153153

154154
private static Block registerBlock(String name, Function<BlockBehaviour.Properties, Block> blockConstructor, BlockBehaviour.Properties properties, Boolean itemless) {

src/main/java/org/vfast/backrooms/blocks/BackroomsPortalBlock.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,14 @@ public int getPortalTransitionTime(ServerLevel level, Entity entity) {
106106
}
107107

108108
this.prepareEntity(entity, false);
109-
return new TeleportTransition(newLevel, spawnLoc.position().getBottomCenter(), Vec3.ZERO, spawnLoc.yRot(), spawnLoc.xRot(), Set.of(), LevelPortal::affectPlayer);
109+
110+
BlockPos blockPos = spawnLoc.position();
111+
double x = blockPos.getX() + 0.5d;
112+
double y = blockPos.getY();
113+
double z = blockPos.getZ() + 0.5d;
114+
Vec3 pos = new Vec3(x, y, z);
115+
116+
return new TeleportTransition(newLevel, pos, Vec3.ZERO, spawnLoc.yRot(), spawnLoc.xRot(), Set.of(), LevelPortal::affectPlayer);
110117
} else {
111118
this.prepareEntity(entity, false);
112119
return null;

src/main/java/org/vfast/backrooms/blocks/FakeBlock.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,14 @@ public void entityInside(BlockState state, Level level, BlockPos pos, Entity ent
7979
}
8080

8181
this.prepareEntity(entity, false);
82-
return new TeleportTransition(newLevel, spawnLoc.position().getBottomCenter(), Vec3.ZERO, spawnLoc.yRot(), spawnLoc.xRot(), Set.of(), LevelPortal::affectPlayer);
82+
83+
BlockPos blockPos = spawnLoc.position();
84+
double x = blockPos.getX() + 0.5d;
85+
double y = blockPos.getY();
86+
double z = blockPos.getZ() + 0.5d;
87+
Vec3 pos = new Vec3(x, y, z);
88+
89+
return new TeleportTransition(newLevel, pos, Vec3.ZERO, spawnLoc.yRot(), spawnLoc.xRot(), Set.of(), LevelPortal::affectPlayer);
8390
} else {
8491
this.prepareEntity(entity, false);
8592
return null;

src/main/java/org/vfast/backrooms/client/gui/AbstractTextScreen.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,6 @@ public boolean isInGameUi() {
122122
}
123123

124124
public void closeScreen() {
125-
this.minecraft.setScreen(null);
125+
this.minecraft.gui.setScreen(null);
126126
}
127127
}

src/main/java/org/vfast/backrooms/interfaces/LevelPortal.java

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -81,16 +81,14 @@ default void simulateSuffocation(@Nullable BlockState blockState) {
8181
Minecraft minecraft = Minecraft.getInstance();
8282
GameRenderer renderer = minecraft.gameRenderer;
8383
ScreenEffectRenderer screenRenderer = ((GameRendererGetter) renderer).getScreenEffectRenderer();
84-
if (blockState != null) {
85-
TextureAtlasSprite suffocateSprite = minecraft.getModelManager().getBlockStateModelSet().getParticleMaterial(blockState).sprite();
86-
((Suffocator) screenRenderer).setSuffocating(suffocateSprite);
87-
} else {
88-
((Suffocator) screenRenderer).setSuffocating(null);
89-
}
84+
((Suffocator) screenRenderer).setSuffocating(blockState);
9085
}
9186

9287
default boolean fullyInBounding(Entity entity, BlockPos blockPos, EntityBounding detectionBounding) {
93-
Vec3 pos = blockPos.getCenter();
88+
double x = blockPos.getX() + 0.5d;
89+
double y = blockPos.getY() + 0.5d;
90+
double z = blockPos.getZ() + 0.5d;
91+
Vec3 pos = new Vec3(x, y, z);
9492
Vec3 lb = pos.subtract(0.5d, 0.5d, 0.5d); // left bottom
9593
Vec3 ru = pos.add(0.5d, 0.5d, 0.5d); // right up
9694

@@ -122,7 +120,10 @@ default boolean fullyInBounding(Entity entity, BlockPos blockPos) {
122120
}
123121

124122
default boolean lazyBounding(Entity entity, BlockPos blockPos) {
125-
Vec3 pos = blockPos.getCenter();
123+
double x = blockPos.getX() + 0.5d;
124+
double y = blockPos.getY() + 0.5d;
125+
double z = blockPos.getZ() + 0.5d;
126+
Vec3 pos = new Vec3(x, y, z);
126127
Vec3 lb = pos.subtract(0.5d, 0.5d, 0.5d); // left bottom
127128
Vec3 ru = pos.add(0.5d, 0.5d, 0.5d); // right up
128129

@@ -139,7 +140,10 @@ default boolean shouldSuffocate(Entity entity, BlockPos blockPos) {
139140

140141
double headDiameter = 0.155d;
141142

142-
Vec3 pos = blockPos.getCenter();
143+
double x = blockPos.getX() + 0.5d;
144+
double y = blockPos.getY() + 0.5d;
145+
double z = blockPos.getZ() + 0.5d;
146+
Vec3 pos = new Vec3(x, y, z);
143147
Vec3 lb = pos.subtract(0.5d, 0.5d, 0.5d); // left bottom
144148
Vec3 ru = pos.add(0.5d, 0.5d, 0.5d); // right up
145149

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
package org.vfast.backrooms.interfaces;
22

3-
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
3+
import net.minecraft.world.level.block.state.BlockState;
4+
import org.jspecify.annotations.Nullable;
45

56
public interface Suffocator {
6-
void setSuffocating(TextureAtlasSprite sprite);
7+
void setSuffocating(@Nullable BlockState state);
78
}

src/main/java/org/vfast/backrooms/mixins/ImmersiveDimensions.java

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ private void clearSuffocation(CallbackInfo ci) {
5050
@Inject(method = "startWaitingForNewLevel", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/Minecraft;setScreenAndShow(Lnet/minecraft/client/gui/screens/Screen;)V"), cancellable = true)
5151
private void startImmersion(LocalPlayer player, ClientLevel level, LevelLoadingScreen.Reason reason, CallbackInfo ci) {
5252
this.fullyImmersed(level, reason, ci);
53-
this.minecraft.setScreen(new InvisiScreen(this.levelLoadTracker));
53+
this.minecraft.gui.setScreen(new InvisiScreen(this.levelLoadTracker));
5454
}
5555

5656
@Inject(method = "startWaitingForNewLevel", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/screens/LevelLoadingScreen;update(Lnet/minecraft/client/multiplayer/LevelLoadTracker;Lnet/minecraft/client/gui/screens/LevelLoadingScreen$Reason;)V"))
@@ -83,12 +83,7 @@ private void fullyImmersed(ClientLevel level, LevelLoadingScreen.Reason reason,
8383
private void simulateSuffocation(@Nullable BlockState blockState) {
8484
GameRenderer renderer = this.minecraft.gameRenderer;
8585
ScreenEffectRenderer screenRenderer = ((GameRendererGetter) renderer).getScreenEffectRenderer();
86-
if (blockState != null) {
87-
TextureAtlasSprite suffocateSprite = this.minecraft.getModelManager().getBlockStateModelSet().getParticleMaterial(blockState).sprite();
88-
((Suffocator) screenRenderer).setSuffocating(suffocateSprite);
89-
} else {
90-
((Suffocator) screenRenderer).setSuffocating(null);
91-
}
86+
((Suffocator) screenRenderer).setSuffocating(blockState);
9287
}
9388

9489
@Unique

src/main/java/org/vfast/backrooms/mixins/LocalPlayerMixins.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,6 @@ private void forceStopSprint(CallbackInfoReturnable<Boolean> cir) {
4242
@Override
4343
public void openTextSignEdit(TextSignBlockEntity blockEntity, BlockPos pos, boolean isFront) {
4444
TextSignEditScreen editScreen = new TextSignEditScreen(blockEntity, pos, isFront);
45-
this.minecraft.setScreen(editScreen);
45+
this.minecraft.gui.setScreen(editScreen);
4646
}
4747
}
Lines changed: 17 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,13 @@
11
package org.vfast.backrooms.mixins;
22

33
import com.mojang.blaze3d.vertex.PoseStack;
4-
import com.mojang.blaze3d.vertex.VertexConsumer;
5-
import net.minecraft.client.renderer.MultiBufferSource;
4+
import net.minecraft.client.Minecraft;
65
import net.minecraft.client.renderer.ScreenEffectRenderer;
76
import net.minecraft.client.renderer.SubmitNodeCollector;
8-
import net.minecraft.client.renderer.rendertype.RenderTypes;
7+
import net.minecraft.client.renderer.block.BlockStateModelSet;
98
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
10-
import net.minecraft.util.ARGB;
9+
import net.minecraft.world.level.block.state.BlockState;
1110
import org.jetbrains.annotations.Nullable;
12-
import org.joml.Matrix4f;
1311
import org.spongepowered.asm.mixin.Final;
1412
import org.spongepowered.asm.mixin.Mixin;
1513
import org.spongepowered.asm.mixin.Shadow;
@@ -24,35 +22,27 @@ public abstract class ScreenEffectRendererMixins implements Suffocator {
2422

2523
@Shadow
2624
@Final
27-
private MultiBufferSource bufferSource;
25+
private Minecraft minecraft;
26+
27+
@Shadow
28+
private static void submitBlockSprite(TextureAtlasSprite sprite, PoseStack poseStack, SubmitNodeCollector submitNodeCollector, int color) {}
2829

2930
@Unique
3031
@Nullable
31-
private TextureAtlasSprite suffocatingSprite;
32+
private BlockState suffocatingState;
3233

33-
@Inject(method = "renderScreenEffect", at = @At(value = "HEAD"))
34+
@Inject(method = "submit", at = @At(value = "HEAD"))
3435
private void suffocatingIn(boolean isFirstPerson, boolean isSleeping, float partialTicks, SubmitNodeCollector submitNodeCollector, boolean hideGui, CallbackInfo ci) {
35-
if (this.suffocatingSprite != null) {
36-
this.suffocateEffect(this.suffocatingSprite, new PoseStack());
36+
if (this.suffocatingState != null) {
37+
PoseStack poseStack = new PoseStack();
38+
BlockStateModelSet blockStateModelSet = this.minecraft.getModelManager().getBlockStateModelSet();
39+
TextureAtlasSprite sprite = blockStateModelSet.getParticleMaterial(this.suffocatingState).sprite();
40+
submitBlockSprite(sprite, poseStack, submitNodeCollector, -15132391);
3741
}
3842
}
3943

40-
@Override
41-
public void setSuffocating(@Nullable final TextureAtlasSprite sprite) {
42-
this.suffocatingSprite = sprite;
43-
}
44-
45-
private void suffocateEffect(final TextureAtlasSprite sprite, final PoseStack poseStack) {
46-
int color = ARGB.colorFromFloat(1.0F, 0.1F, 0.1F, 0.1F);
47-
float u0 = sprite.getU0();
48-
float u1 = sprite.getU1();
49-
float v0 = sprite.getV0();
50-
float v1 = sprite.getV1();
51-
Matrix4f pose = poseStack.last().pose();
52-
VertexConsumer builder = this.bufferSource.getBuffer(RenderTypes.blockScreenEffect(sprite.atlasLocation()));
53-
builder.addVertex(pose, -1.0F, -1.0F, -0.5F).setUv(u1, v1).setColor(color);
54-
builder.addVertex(pose, 1.0F, -1.0F, -0.5F).setUv(u0, v1).setColor(color);
55-
builder.addVertex(pose, 1.0F, 1.0F, -0.5F).setUv(u0, v0).setColor(color);
56-
builder.addVertex(pose, -1.0F, 1.0F, -0.5F).setUv(u1, v0).setColor(color);
44+
@Unique
45+
public void setSuffocating(@Nullable BlockState state) {
46+
this.suffocatingState = state;
5747
}
5848
}

0 commit comments

Comments
 (0)