Skip to content

Commit c4f8c86

Browse files
committed
24w20a, disable reset_chunk, relight, and chunk load events
1 parent 9fd313a commit c4f8c86

13 files changed

+60
-32
lines changed

gradle.properties

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ org.gradle.jvmargs=-Xmx1G
33

44
# Fabric Properties
55
# check https://fabricmc.net/develop/
6-
minecraft_version=24w18a
6+
minecraft_version=24w20a
77
loader_version=0.15.11
88
jsr305_version=3.0.2
99
fabric_version=0.97.8+1.20.6

src/main/java/carpet/fakes/ChunkHolderInterface.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,5 +9,5 @@
99

1010
public interface ChunkHolderInterface
1111
{
12-
CompletableFuture<ChunkResult<ChunkAccess>> setDefaultProtoChunk(ChunkPos chpos, BlockableEventLoop<Runnable> executor, ServerLevel world);
12+
//CompletableFuture<ChunkResult<ChunkAccess>> setDefaultProtoChunk(ChunkPos chpos, BlockableEventLoop<Runnable> executor, ServerLevel world);
1313
}

src/main/java/carpet/fakes/ThreadedAnvilChunkStorageInterface.java

+4-4
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,11 @@
77

88
public interface ThreadedAnvilChunkStorageInterface
99
{
10-
Map<String, Integer> regenerateChunkRegion(List<ChunkPos> requestedChunks);
10+
//Map<String, Integer> regenerateChunkRegion(List<ChunkPos> requestedChunks);
1111

12-
void relightChunk(ChunkPos pos);
12+
//void relightChunk(ChunkPos pos);
1313

14-
void releaseRelightTicket(ChunkPos pos);
14+
//void releaseRelightTicket(ChunkPos pos);
1515

16-
Iterable<ChunkHolder> getChunksCM();
16+
//Iterable<ChunkHolder> getChunksCM();
1717
}

src/main/java/carpet/mixins/AbstractArrowMixin.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@ public abstract class AbstractArrowMixin extends Entity
2020
private TrajectoryLogHelper logHelper;
2121
public AbstractArrowMixin(EntityType<?> entityType_1, Level world_1) { super(entityType_1, world_1); }
2222

23-
@Inject(method = "<init>(Lnet/minecraft/world/entity/EntityType;Lnet/minecraft/world/level/Level;Lnet/minecraft/world/item/ItemStack;Lnet/minecraft/world/item/ItemStack;)V", at = @At("RETURN"))
24-
private void addLogger(final EntityType entityType, final Level level, final ItemStack itemStack, final ItemStack weapon, final CallbackInfo ci)
23+
@Inject(method = "<init>(Lnet/minecraft/world/entity/EntityType;DDDLnet/minecraft/world/level/Level;Lnet/minecraft/world/item/ItemStack;Lnet/minecraft/world/item/ItemStack;)V", at = @At("RETURN"))
24+
private void addLogger(final EntityType entityType, final double x, final double y, final double z, final Level level, final ItemStack itemStack, final ItemStack weapon, final CallbackInfo ci)
2525
{
2626
if (LoggerRegistry.__projectiles && !level.isClientSide)
2727
logHelper = new TrajectoryLogHelper("projectiles");

src/main/java/carpet/mixins/ChunkHolder_scarpetChunkCreationMixin.java

+4-2
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,11 @@
2121
@Mixin(ChunkHolder.class)
2222
public abstract class ChunkHolder_scarpetChunkCreationMixin implements ChunkHolderInterface
2323
{
24-
@Shadow protected abstract void updateChunkToSave(CompletableFuture<? extends ChunkResult<? extends ChunkAccess>> newChunkFuture, String type);
24+
//@Shadow protected abstract void updateChunkToSave(CompletableFuture<? extends ChunkResult<? extends ChunkAccess>> newChunkFuture, String type);
2525

26-
@Shadow @Final private AtomicReferenceArray<CompletableFuture<ChunkResult<ChunkAccess>>> futures;
26+
//@Shadow @Final private AtomicReferenceArray<CompletableFuture<ChunkResult<ChunkAccess>>> futures;
2727

28+
/*
2829
@Override
2930
public CompletableFuture<ChunkResult<ChunkAccess>> setDefaultProtoChunk(ChunkPos chpos, BlockableEventLoop<Runnable> executor, ServerLevel world)
3031
{
@@ -37,4 +38,5 @@ public CompletableFuture<ChunkResult<ChunkAccess>> setDefaultProtoChunk(ChunkPos
3738
futures.set(i, completableFuture2);
3839
return completableFuture2;
3940
}
41+
*/
4042
}

src/main/java/carpet/mixins/ChunkMap_scarpetChunkCreationMixin.java

+23-10
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import net.minecraft.server.MinecraftServer;
2020
import net.minecraft.server.TickTask;
2121
import net.minecraft.server.level.ChunkHolder;
22+
import net.minecraft.server.level.ChunkLevel;
2223
import net.minecraft.server.level.ChunkMap;
2324
import net.minecraft.server.level.ChunkMap.DistanceManager;
2425
import net.minecraft.server.level.ChunkResult;
@@ -64,10 +65,6 @@ public abstract class ChunkMap_scarpetChunkCreationMixin implements ThreadedAnvi
6465
@Final
6566
private ServerLevel level;
6667

67-
@Shadow
68-
@Final
69-
private LongSet entitiesInLevel;
70-
7168
@Shadow
7269
@Final
7370
private Long2ObjectLinkedOpenHashMap<ChunkHolder> updatingChunkMap;
@@ -111,6 +108,10 @@ public abstract class ChunkMap_scarpetChunkCreationMixin implements ThreadedAnvi
111108

112109
// in protoChunkToFullChunk
113110
// fancier version of the one below, ensuring that the event is triggered when the chunk is actually loaded.
111+
112+
/*
113+
114+
114115
@Inject(method = "method_17227", at = @At("HEAD"), remap = false)
115116
private void onChunkGeneratedStart(ChunkHolder chunkHolder, ChunkAccess chunkAccess, CallbackInfoReturnable<ChunkAccess> cir)
116117
{
@@ -146,6 +147,8 @@ private void onChunkGeneratedEnd(ChunkHolder chunkHolder, ChunkAccess chunk, Cal
146147
}
147148
}
148149
150+
*/
151+
149152
/* simple but a version that doesn't guarantee that the chunk is actually loaded
150153
@Inject(method = "convertToFullChunk", at = @At("HEAD"))
151154
private void onChunkGeneratedEnd(ChunkHolder chunkHolder, CallbackInfoReturnable<CompletableFuture<ChunkResult<ChunkAccess>>> cir)
@@ -167,7 +170,7 @@ private void onChunkGeneratedEnd(ChunkHolder chunkHolder, CallbackInfoReturnable
167170
@Unique
168171
private void addTicket(ChunkPos pos, ChunkStatus status)
169172
{ // UNKNOWN
170-
this.distanceManager.addTicket(TicketType.UNKNOWN, pos, 33 + ChunkStatus.getDistance(status), pos);
173+
this.distanceManager.addTicket(TicketType.UNKNOWN, pos, 33 + ChunkLevel.byStatus(status), pos);
171174
}
172175

173176
@Unique
@@ -176,6 +179,8 @@ private void addTicket(ChunkPos pos)
176179
this.addTicket(pos, ChunkStatus.EMPTY);
177180
}
178181

182+
183+
/*
179184
@Unique
180185
private void addRelightTicket(ChunkPos pos)
181186
{
@@ -190,7 +195,7 @@ public void releaseRelightTicket(ChunkPos pos)
190195
() -> "release relight ticket " + pos
191196
));
192197
}
193-
198+
*/
194199
@Unique
195200
private void tickTicketManager()
196201
{
@@ -214,6 +219,8 @@ private Set<ChunkPos> getExistingChunks(Set<ChunkPos> requestedChunks)
214219
return ret;
215220
}
216221

222+
223+
/*
217224
@Unique
218225
private Set<ChunkPos> loadExistingChunksFromDisk(Set<ChunkPos> requestedChunks)
219226
{
@@ -329,6 +336,8 @@ public void relightChunk(ChunkPos pos)
329336
this.waitFor(lightFuture);
330337
}
331338
339+
/*
340+
332341
@Override
333342
public Map<String, Integer> regenerateChunkRegion(List<ChunkPos> requestedChunksList)
334343
{
@@ -385,7 +394,7 @@ public Map<String, Integer> regenerateChunkRegion(List<ChunkPos> requestedChunks
385394
{
386395
ChunkAccess chunk = this.getCurrentChunk(pos);
387396
388-
if (chunk.getStatus().isOrAfter(ChunkStatus.LIGHT.getParent()))
397+
if (chunk.getPersistedStatus().isOrAfter(ChunkStatus.LIGHT.getParent()))
389398
{
390399
affectedNeighbors.add(chunk);
391400
}
@@ -399,7 +408,7 @@ public Map<String, Integer> regenerateChunkRegion(List<ChunkPos> requestedChunks
399408
400409
// remove entities
401410
long longPos = pos.toLong();
402-
if (this.entitiesInLevel.contains(longPos) && chunk instanceof LevelChunk)
411+
if (chunk instanceof LevelChunk)
403412
{
404413
((SimpleEntityLookupInterface<Entity>) ((ServerWorldInterface) level).getEntityLookupCMPublic()).getChunkEntities(pos).forEach(entity -> {
405414
if (!(entity instanceof Player))
@@ -415,7 +424,7 @@ public Map<String, Integer> regenerateChunkRegion(List<ChunkPos> requestedChunks
415424
((LevelChunk) chunk).setLoaded(false);
416425
}
417426
418-
if (this.entitiesInLevel.remove(pos.toLong()) && chunk instanceof LevelChunk)
427+
if (chunk instanceof LevelChunk)
419428
{
420429
this.level.unload((LevelChunk) chunk); // block entities only
421430
}
@@ -450,7 +459,7 @@ public Map<String, Integer> regenerateChunkRegion(List<ChunkPos> requestedChunks
450459
// Also, this is needed to ensure chunks are saved to disk
451460
452461
Map<ChunkPos, ChunkStatus> targetGenerationStatus = affectedChunks.stream().collect(
453-
Collectors.toMap(ChunkAccess::getPos, ChunkAccess::getStatus)
462+
Collectors.toMap(ChunkAccess::getPos, ChunkAccess::getPersistedStatus)
454463
);
455464
456465
for (Entry<ChunkPos, ChunkStatus> entry : targetGenerationStatus.entrySet())
@@ -548,9 +557,13 @@ public Map<String, Integer> regenerateChunkRegion(List<ChunkPos> requestedChunks
548557
return report;
549558
}
550559
560+
561+
551562
@Override
552563
public Iterable<ChunkHolder> getChunksCM()
553564
{
554565
return getChunks();
555566
}
567+
568+
*/
556569
}

src/main/java/carpet/mixins/LevelRenderer_scarpetRenderMixin.java

+3-2
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import carpet.script.utils.ShapesRenderer;
55
import com.mojang.blaze3d.vertex.PoseStack;
66
import net.minecraft.client.Camera;
7+
import net.minecraft.client.DeltaTracker;
78
import net.minecraft.client.Minecraft;
89
import net.minecraft.client.renderer.GameRenderer;
910
import net.minecraft.client.renderer.LevelRenderer;
@@ -36,14 +37,14 @@ private void addRenderers(Minecraft minecraft, EntityRenderDispatcher entityRend
3637
//target = "Lnet/minecraft/client/render/BufferBuilderStorage;getEntityVertexConsumers()Lnet/minecraft/client/render/VertexConsumerProvider$Immediate;", shift = At.Shift.AFTER
3738
//target = "Lnet/minecraft/client/render/WorldRenderer;renderChunkDebugInfo(Lnet/minecraft/client/render/Camera;)V", shift = At.Shift.AFTER // before return
3839
))
39-
private void renderScarpetThings(float tickDelta, long limitTime, boolean renderBlockOutline, Camera camera, GameRenderer gameRenderer, LightTexture lightmapTextureManager, Matrix4f modelViewMatrix, Matrix4f matrix4f, CallbackInfo ci)
40+
private void renderScarpetThings(final DeltaTracker deltaTracker, final boolean renderBlockOutline, Camera camera, GameRenderer gameRenderer, LightTexture lightmapTextureManager, Matrix4f modelViewMatrix, Matrix4f matrix4f, CallbackInfo ci)
4041
{
4142
// in normal circumstances we want to render shapes at the very end so it appears correctly behind stuff.
4243
// we might actually not need to play with render hooks here.
4344
//if (!FabricAPIHooks.WORLD_RENDER_EVENTS && CarpetClient.shapes != null )
4445
if (CarpetClient.shapes != null)
4546
{
46-
CarpetClient.shapes.render(modelViewMatrix, camera, tickDelta);
47+
CarpetClient.shapes.render(modelViewMatrix, camera, deltaTracker.getGameTimeDeltaPartialTick(false));
4748
}
4849
}
4950
}

src/main/java/carpet/mixins/PlayerList_scarpetEventsMixin.java

+4-3
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import net.minecraft.server.MinecraftServer;
88
import net.minecraft.server.level.ServerPlayer;
99
import net.minecraft.server.players.PlayerList;
10+
import net.minecraft.world.entity.Entity;
1011
import org.spongepowered.asm.mixin.Final;
1112
import org.spongepowered.asm.mixin.Mixin;
1213
import org.spongepowered.asm.mixin.Shadow;
@@ -24,9 +25,9 @@ public class PlayerList_scarpetEventsMixin
2425
@Shadow @Final private MinecraftServer server;
2526

2627
@Inject(method = "respawn", at = @At("HEAD"))
27-
private void onRespawn(ServerPlayer player, boolean olive, CallbackInfoReturnable<ServerPlayer> cir)
28+
private void onResp(ServerPlayer serverPlayer, boolean olive, Entity.RemovalReason removalReason, CallbackInfoReturnable<ServerPlayer> cir)
2829
{
29-
PLAYER_RESPAWNS.onPlayerEvent(player);
30+
PLAYER_RESPAWNS.onPlayerEvent(serverPlayer);
3031
}
3132

3233
@Inject(method = "broadcastChatMessage(Lnet/minecraft/network/chat/PlayerChatMessage;Lnet/minecraft/server/level/ServerPlayer;Lnet/minecraft/network/chat/ChatType$Bound;)V",
@@ -44,7 +45,7 @@ private void cancellableChatMessageEvent(PlayerChatMessage message, ServerPlayer
4445
value = "INVOKE",
4546
target = "Lnet/minecraft/server/level/ServerPlayer;initInventoryMenu()V"
4647
))
47-
private void invalidatePreviousInstance(ServerPlayer player, boolean alive, CallbackInfoReturnable<ServerPlayer> cir)
48+
private void invalidatePreviousInstance(ServerPlayer player, boolean alive, Entity.RemovalReason removalReason, CallbackInfoReturnable<ServerPlayer> cir)
4849
{
4950
((ServerPlayerInterface)player).invalidateEntityObjectReference();
5051
}

src/main/java/carpet/mixins/ServerPlayer_scarpetEventMixin.java

+5-2
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
import net.minecraft.world.entity.Entity;
1515
import net.minecraft.world.entity.player.Player;
1616
import net.minecraft.world.level.Level;
17+
import net.minecraft.world.level.portal.DimensionTransition;
1718
import net.minecraft.world.phys.Vec3;
1819
import org.spongepowered.asm.mixin.Mixin;
1920
import org.spongepowered.asm.mixin.Shadow;
@@ -96,18 +97,20 @@ private void setSneakingConditionally(ServerPlayer serverPlayerEntity, boolean s
9697
private ResourceKey<Level> previousDimension;
9798

9899
@Inject(method = "changeDimension", at = @At("HEAD"))
99-
private void logPreviousCoordinates(ServerLevel serverWorld, CallbackInfoReturnable<Entity> cir)
100+
private void logPreviousCoordinates(DimensionTransitionSupplier serverWorld, CallbackInfoReturnable<Entity> cir)
100101
{
101102
previousLocation = position();
102103
previousDimension = level().dimension(); //dimension type
103104
}
104105

105106
@Inject(method = "changeDimension", at = @At("RETURN"))
106-
private void atChangeDimension(ServerLevel destination, CallbackInfoReturnable<Entity> cir)
107+
private void atChangeDimension(DimensionTransitionSupplier destinationP, CallbackInfoReturnable<Entity> cir)
107108
{
108109
if (PLAYER_CHANGES_DIMENSION.isNeeded())
109110
{
110111
ServerPlayer player = (ServerPlayer) (Object)this;
112+
DimensionTransition destinationTransition = destinationP.get();
113+
ServerLevel destination = destinationTransition.newDimension();
111114
Vec3 to = null;
112115
if (!wonGame || previousDimension != Level.END || destination.dimension() != Level.OVERWORLD)
113116
{

src/main/java/carpet/patches/EntityPlayerMPFake.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -213,7 +213,7 @@ protected void checkFallDamage(double y, boolean onGround, BlockState state, Blo
213213
}
214214

215215
@Override
216-
public Entity changeDimension(ServerLevel serverLevel)
216+
public Entity changeDimension(DimensionTransitionSupplier serverLevel)
217217
{
218218
super.changeDimension(serverLevel);
219219
if (wonGame) {

src/main/java/carpet/script/api/Auxiliary.java

+4
Original file line numberDiff line numberDiff line change
@@ -804,13 +804,17 @@ else if (!interactable && targetBlock == null)
804804

805805
expression.addContextFunction("relight", -1, (c, t, lv) ->
806806
{
807+
return Value.NULL;
808+
/*
807809
CarpetContext cc = (CarpetContext) c;
808810
BlockArgument locator = BlockArgument.findIn(cc, lv, 0);
809811
BlockPos pos = locator.block.getPos();
810812
ServerLevel world = cc.level();
811813
Vanilla.ChunkMap_relightChunk(world.getChunkSource().chunkMap, new ChunkPos(pos));
812814
WorldTools.forceChunkUpdate(pos, world);
813815
return Value.TRUE;
816+
817+
*/
814818
});
815819

816820
// Should this be deprecated for system_info('source_dimension')?

src/main/java/carpet/script/api/WorldAccess.java

+6-2
Original file line numberDiff line numberDiff line change
@@ -637,7 +637,7 @@ else if (!("any".equals(statusString)))
637637
forceLoad = lv.get(blockArgument.offset).getBoolean();
638638
}
639639
ChunkAccess chunk = ((CarpetContext) c).level().getChunk(pos.getX() >> 4, pos.getZ() >> 4, ChunkStatus.EMPTY, forceLoad);
640-
return chunk == null ? Value.NULL : ValueConversions.of(BuiltInRegistries.CHUNK_STATUS.getKey(chunk.getStatus()));
640+
return chunk == null ? Value.NULL : ValueConversions.of(BuiltInRegistries.CHUNK_STATUS.getKey(chunk.getPersistedStatus()));
641641
});
642642

643643
expression.addContextFunction("chunk_tickets", -1, (c, t, lv) ->
@@ -921,7 +921,7 @@ else if (item instanceof TridentItem || item instanceof SwordItem)
921921
damageAmount = 2;
922922
}
923923
final int finalDamageAmount = damageAmount;
924-
tool.hurtAndBreak(damageAmount, world, null, () -> { if (finalDamageAmount > 0) toolBroke.setTrue(); } );
924+
tool.hurtAndBreak(damageAmount, world, null, (i) -> { if (finalDamageAmount > 0) toolBroke.setTrue(); } );
925925
if (!isUsingEffectiveTool)
926926
{
927927
dropLoot = false;
@@ -1586,6 +1586,8 @@ LivingEntity getIndirectSourceEntity()
15861586
// todo maybe enable chunk blending?
15871587
expression.addContextFunction("reset_chunk", -1, (c, t, lv) ->
15881588
{
1589+
return Value.NULL;
1590+
/*
15891591
CarpetContext cc = (CarpetContext) c;
15901592
List<ChunkPos> requestedChunks = new ArrayList<>();
15911593
if (lv.size() == 1)
@@ -1643,6 +1645,8 @@ LivingEntity getIndirectSourceEntity()
16431645
)));
16441646
});
16451647
return result[0];
1648+
1649+
*/
16461650
});
16471651

16481652
expression.addContextFunction("inhabited_time", -1, (c, t, lv) ->

src/main/java/carpet/script/external/Vanilla.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -100,12 +100,12 @@ public static void MinecraftServer_forceTick(MinecraftServer server, BooleanSupp
100100

101101
public static void ChunkMap_relightChunk(ChunkMap chunkMap, ChunkPos pos)
102102
{
103-
((ThreadedAnvilChunkStorageInterface) chunkMap).relightChunk(pos);
103+
//((ThreadedAnvilChunkStorageInterface) chunkMap).relightChunk(pos);
104104
}
105105

106106
public static Map<String, Integer> ChunkMap_regenerateChunkRegion(ChunkMap chunkMap, List<ChunkPos> requestedChunks)
107107
{
108-
return ((ThreadedAnvilChunkStorageInterface) chunkMap).regenerateChunkRegion(requestedChunks);
108+
return Map.of(); //return ((ThreadedAnvilChunkStorageInterface) chunkMap).regenerateChunkRegion(requestedChunks);
109109
}
110110

111111
public static List<Collection<ItemStack>> Ingredient_getRecipeStacks(Ingredient ingredient)

0 commit comments

Comments
 (0)