Skip to content

Commit b16eec8

Browse files
committed
25w02a
1 parent d9c7334 commit b16eec8

34 files changed

+295
-343
lines changed

gradle.properties

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@ org.gradle.jvmargs=-Xmx1G
33

44
# Fabric Properties
55
# check https://fabricmc.net/develop/
6-
minecraft_version=1.21.4
7-
loader_version=0.16.9
6+
minecraft_version=25w02a
7+
loader_version=0.16.10
88
jsr305_version=3.0.2
99
fabric_version=0.110.5+1.21.4
1010

@@ -17,7 +17,7 @@ org.gradle.jvmargs=-Xmx1G
1717
# The Curseforge versions "names" or ids for the main branch (comma separated: 1.16.4,1.16.5)
1818
# This is needed because CF uses too vague names for prereleases and release candidates
1919
# Can also be the version ID directly coming from https://minecraft.curseforge.com/api/game/versions?token=[API_TOKEN]
20-
release-curse-versions = Minecraft 1.21:1.21.4
20+
release-curse-versions = Minecraft 1.21:1.21.5-Snapshot
2121
# Whether or not to build another branch on release
2222
release-extra-branch = false
2323
# The name of the second branch to release

src/main/java/carpet/commands/DrawCommand.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -240,7 +240,7 @@ private static int drawSphere(CommandContext<CommandSourceStack> ctx, boolean so
240240
}
241241
if (CarpetSettings.fillUpdates)
242242
{
243-
list.forEach(blockpos1 -> world.blockUpdated(blockpos1, world.getBlockState(blockpos1).getBlock()));
243+
list.forEach(blockpos1 -> world.updateNeighborsAt(blockpos1, world.getBlockState(blockpos1).getBlock()));
244244
}
245245
Messenger.m(ctx.getSource(), "gi Filled " + affected + " blocks");
246246
return affected;
@@ -290,7 +290,7 @@ private static int drawDiamond(CommandContext<CommandSourceStack> ctx, boolean s
290290

291291
if (CarpetSettings.fillUpdates)
292292
{
293-
list.forEach(p -> world.blockUpdated(p, world.getBlockState(p).getBlock()));
293+
list.forEach(p -> world.updateNeighborsAt(p, world.getBlockState(p).getBlock()));
294294
}
295295

296296
Messenger.m(source, "gi Filled " + affected + " blocks");
@@ -389,7 +389,7 @@ private static int drawPyramid(CommandContext<CommandSourceStack> ctx, String ba
389389

390390
for (BlockPos blockpos1 : list) {
391391
Block blokc = world.getBlockState(blockpos1).getBlock();
392-
world.blockUpdated(blockpos1, blokc);
392+
world.updateNeighborsAt(blockpos1, blokc);
393393
}
394394
}
395395

@@ -440,7 +440,7 @@ private static int drawPrism(CommandContext<CommandSourceStack> ctx, String base
440440

441441
for (BlockPos blockpos1 : list) {
442442
Block blokc = world.getBlockState(blockpos1).getBlock();
443-
world.blockUpdated(blockpos1, blokc);
443+
world.updateNeighborsAt(blockpos1, blokc);
444444
}
445445
}
446446

src/main/java/carpet/fakes/ChunkTicketManagerInterface.java

Lines changed: 0 additions & 16 deletions
This file was deleted.
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package carpet.fakes;
2+
3+
import it.unimi.dsi.fastutil.longs.Long2ObjectOpenHashMap;
4+
import net.minecraft.server.level.Ticket;
5+
6+
import java.util.List;
7+
8+
public interface TicketsFetcherInterface
9+
{
10+
Long2ObjectOpenHashMap<List<Ticket>> getTicketsByPosition();
11+
}

src/main/java/carpet/fakes/WorldChunkInterface.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,5 +6,5 @@
66

77
public interface WorldChunkInterface
88
{
9-
BlockState setBlockStateWithBlockEntity(BlockPos blockPos, BlockState newBlockState, BlockEntity newBlockEntity, boolean boolean1);
9+
BlockState setBlockStateWithBlockEntity(BlockPos blockPos, BlockState newBlockState, BlockEntity newBlockEntity, int flags);
1010
}

src/main/java/carpet/mixins/BuddingAmethystBlock_movableAmethystMixin.java

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,23 +3,19 @@
33
import carpet.CarpetSettings;
44
import net.minecraft.core.BlockPos;
55
import net.minecraft.core.registries.Registries;
6+
import net.minecraft.tags.ItemTags;
67
import net.minecraft.world.entity.player.Player;
78
import net.minecraft.world.item.ItemStack;
89
import net.minecraft.world.item.Items;
9-
import net.minecraft.world.item.PickaxeItem;
1010
import net.minecraft.world.item.enchantment.EnchantmentHelper;
1111
import net.minecraft.world.item.enchantment.Enchantments;
1212
import net.minecraft.world.level.Level;
1313
import net.minecraft.world.level.block.Block;
1414
import net.minecraft.world.level.block.BuddingAmethystBlock;
1515
import net.minecraft.world.level.block.entity.BlockEntity;
1616
import net.minecraft.world.level.block.state.BlockState;
17-
import net.minecraft.world.level.material.PushReaction;
1817
import org.jetbrains.annotations.Nullable;
1918
import org.spongepowered.asm.mixin.Mixin;
20-
import org.spongepowered.asm.mixin.injection.At;
21-
import org.spongepowered.asm.mixin.injection.Inject;
22-
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
2319

2420
@Mixin(BuddingAmethystBlock.class)
2521
public class BuddingAmethystBlock_movableAmethystMixin extends Block {
@@ -33,7 +29,7 @@ public void playerDestroy(Level world, Player player, BlockPos pos, BlockState s
3329
// doing it here rather than though loottables since loottables are loaded on reload
3430
// drawback - not controlled via loottables, but hey
3531
if (CarpetSettings.movableAmethyst &&
36-
stack.getItem() instanceof PickaxeItem &&
32+
stack.is(ItemTags.PICKAXES) &&
3733
EnchantmentHelper.getItemEnchantmentLevel(world.registryAccess().lookupOrThrow(Registries.ENCHANTMENT).getOrThrow(Enchantments.SILK_TOUCH), stack) > 0
3834
)
3935
popResource(world, pos, Items.BUDDING_AMETHYST.getDefaultInstance());

src/main/java/carpet/mixins/ChunkGenerator_customMobSpawnsMixin.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import carpet.utils.SpawnOverrides;
44
import it.unimi.dsi.fastutil.longs.LongSet;
55
import net.minecraft.core.Holder;
6+
import net.minecraft.util.random.WeightedList;
67
import net.minecraft.world.level.StructureManager;
78
import net.minecraft.world.level.levelgen.structure.Structure;
89
import org.spongepowered.asm.mixin.Mixin;
@@ -11,7 +12,6 @@
1112
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
1213

1314
import net.minecraft.core.BlockPos;
14-
import net.minecraft.util.random.WeightedRandomList;
1515
import net.minecraft.world.entity.MobCategory;
1616
import net.minecraft.world.level.biome.Biome;
1717
import net.minecraft.world.level.biome.MobSpawnSettings;
@@ -31,10 +31,10 @@ public abstract class ChunkGenerator_customMobSpawnsMixin
3131
target = "Ljava/util/Map$Entry;getKey()Ljava/lang/Object;"
3232
), cancellable = true)
3333
private void checkCMSpawns(Holder<Biome> holder, StructureManager structureFeatureManager, MobCategory mobCategory, BlockPos blockPos,
34-
CallbackInfoReturnable<WeightedRandomList<MobSpawnSettings.SpawnerData>> cir,
34+
CallbackInfoReturnable<WeightedList<MobSpawnSettings.SpawnerData>> cir,
3535
Map<Structure, LongSet> map, Iterator<?> var6, Map.Entry<Structure, LongSet> entry)
3636
{
37-
WeightedRandomList<MobSpawnSettings.SpawnerData> res = SpawnOverrides.test(structureFeatureManager, entry.getValue(), mobCategory, entry.getKey(), blockPos);
37+
WeightedList<MobSpawnSettings.SpawnerData> res = SpawnOverrides.test(structureFeatureManager, entry.getValue(), mobCategory, entry.getKey(), blockPos);
3838
if (res != null)
3939
{
4040
cir.setReturnValue(res);

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

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,6 @@
4646
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
4747

4848
import carpet.fakes.ChunkHolderInterface;
49-
import carpet.fakes.ChunkTicketManagerInterface;
5049
import carpet.fakes.ServerLightingProviderInterface;
5150
import carpet.fakes.ThreadedAnvilChunkStorageInterface;
5251
import carpet.script.utils.WorldTools;
@@ -165,7 +164,6 @@ private void onChunkGeneratedEnd(ChunkHolder chunkHolder, CallbackInfoReturnable
165164
this.world.getServer().execute(() -> CHUNK_LOADED.onChunkEvent(this.world, chpos, generated));
166165
}
167166
}
168-
*/
169167
170168
@Unique
171169
private void addTicket(ChunkPos pos, ChunkStatus status)
@@ -180,7 +178,6 @@ private void addTicket(ChunkPos pos)
180178
}
181179
182180
183-
/*
184181
@Unique
185182
private void addRelightTicket(ChunkPos pos)
186183
{
@@ -195,7 +192,7 @@ public void releaseRelightTicket(ChunkPos pos)
195192
() -> "release relight ticket " + pos
196193
));
197194
}
198-
*/
195+
199196
@Unique
200197
private void tickTicketManager()
201198
{
@@ -220,7 +217,7 @@ private Set<ChunkPos> getExistingChunks(Set<ChunkPos> requestedChunks)
220217
}
221218
222219
223-
/*
220+
224221
@Unique
225222
private Set<ChunkPos> loadExistingChunksFromDisk(Set<ChunkPos> requestedChunks)
226223
{

src/main/java/carpet/mixins/CloneCommands_fillUpdatesMixin.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,10 @@ public abstract class CloneCommands_fillUpdatesMixin
1414
{
1515
@Redirect(method = "clone", at = @At(
1616
value = "INVOKE",
17-
target = "Lnet/minecraft/server/level/ServerLevel;blockUpdated(Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/level/block/Block;)V"
17+
target = "Lnet/minecraft/server/level/ServerLevel;updateNeighborsAt(Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/level/block/Block;)V"
1818
))
1919
private static void conditionalUpdating(ServerLevel serverWorld, BlockPos blockPos_1, Block block_1)
2020
{
21-
if (CarpetSettings.fillUpdates) serverWorld.blockUpdated(blockPos_1, block_1);
21+
if (CarpetSettings.fillUpdates) serverWorld.updateNeighborsAt(blockPos_1, block_1);
2222
}
2323
}

src/main/java/carpet/mixins/DistanceManager_scarpetChunkCreationMixin.java

Lines changed: 0 additions & 25 deletions
This file was deleted.
Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,25 @@
11
package carpet.mixins;
22

3-
import carpet.fakes.ChunkTicketManagerInterface;
3+
import carpet.fakes.TicketsFetcherInterface;
44
import it.unimi.dsi.fastutil.longs.Long2ObjectOpenHashMap;
55
import net.minecraft.server.level.DistanceManager;
66
import net.minecraft.server.level.Ticket;
7-
import net.minecraft.util.SortedArraySet;
7+
import net.minecraft.world.level.TicketStorage;
88
import org.spongepowered.asm.mixin.Final;
99
import org.spongepowered.asm.mixin.Mixin;
1010
import org.spongepowered.asm.mixin.Shadow;
1111

12+
import java.util.List;
13+
1214
@Mixin(DistanceManager.class)
13-
public abstract class DistanceManager_scarpetMixin implements ChunkTicketManagerInterface
15+
public abstract class DistanceManager_scarpetMixin implements TicketsFetcherInterface
1416
{
15-
@Shadow @Final private Long2ObjectOpenHashMap<SortedArraySet<Ticket<?>>> tickets;
17+
@Shadow @Final private TicketStorage ticketStorage;
1618

1719
@Override
18-
public Long2ObjectOpenHashMap<SortedArraySet<Ticket<?>>> getTicketsByPosition()
20+
public Long2ObjectOpenHashMap<List<Ticket>> getTicketsByPosition()
1921
{
20-
return tickets;
22+
return ((TicketsFetcherInterface)ticketStorage).getTicketsByPosition();
2123
}
2224

2325
}

src/main/java/carpet/mixins/DistanceManager_spawnChunksMixin.java

Lines changed: 0 additions & 55 deletions
This file was deleted.

src/main/java/carpet/mixins/EntityMixin.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ public float getMainYaw(float partialTicks)
3232
return partialTicks == 1.0F ? this.yRot : Mth.lerp(partialTicks, this.yRotO, this.yRot);
3333
}
3434

35-
@Inject(method = "isControlledByLocalInstance", at = @At("HEAD"), cancellable = true)
35+
@Inject(method = "isLocalInstanceAuthoritative", at = @At("HEAD"), cancellable = true)
3636
private void isFakePlayer(CallbackInfoReturnable<Boolean> cir)
3737
{
3838
if (getControllingPassenger() instanceof EntityPlayerMPFake) cir.setReturnValue(!level.isClientSide);

src/main/java/carpet/mixins/FillCommandMixin.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,10 @@ public abstract class FillCommandMixin
1414
{
1515
@Redirect(method = "fillBlocks", at = @At(
1616
value = "INVOKE",
17-
target = "Lnet/minecraft/server/level/ServerLevel;blockUpdated(Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/level/block/Block;)V"
17+
target = "Lnet/minecraft/server/level/ServerLevel;updateNeighborsAt(Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/level/block/Block;)V"
1818
))
1919
private static void conditionalUpdating(ServerLevel serverWorld, BlockPos blockPos_1, Block block_1)
2020
{
21-
if (CarpetSettings.fillUpdates) serverWorld.blockUpdated(blockPos_1, block_1);
21+
if (CarpetSettings.fillUpdates) serverWorld.updateNeighborsAt(blockPos_1, block_1);
2222
}
2323
}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package carpet.mixins;
2+
3+
import carpet.CarpetSettings;
4+
import net.minecraft.core.component.DataComponents;
5+
import net.minecraft.tags.ItemTags;
6+
import net.minecraft.world.item.Item;
7+
import net.minecraft.world.item.ItemStack;
8+
import net.minecraft.world.item.component.Tool;
9+
import net.minecraft.world.level.block.Blocks;
10+
import net.minecraft.world.level.block.SoundType;
11+
import net.minecraft.world.level.block.state.BlockState;
12+
import org.spongepowered.asm.mixin.Mixin;
13+
import org.spongepowered.asm.mixin.injection.At;
14+
import org.spongepowered.asm.mixin.injection.Inject;
15+
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
16+
17+
@Mixin(Item.class)
18+
public class Item_missingToolsMixin
19+
{
20+
@Inject(method = "getDestroySpeed", at = @At("HEAD"), cancellable = true)
21+
public void getDestroySpeed(ItemStack itemStack, BlockState blockState, CallbackInfoReturnable<Float> cir) {
22+
if (CarpetSettings.missingTools && blockState.getSoundType() == SoundType.GLASS && itemStack.is(ItemTags.PICKAXES))
23+
{
24+
Tool tool = itemStack.get(DataComponents.TOOL);
25+
if (tool != null) {
26+
cir.setReturnValue(tool.getMiningSpeed(Blocks.STONE.defaultBlockState()));
27+
}
28+
}
29+
}
30+
}

0 commit comments

Comments
 (0)