Skip to content

Commit 375e191

Browse files
committed
Fixed #210
1 parent 5e919d2 commit 375e191

4 files changed

Lines changed: 30 additions & 8 deletions

File tree

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
{
22
"values": [
3-
"sltest:test_block"
3+
"sltest:test_block",
4+
"sltest:variation_block"
45
]
56
}

station-flattening-v0/src/main/java/net/modificationstation/stationapi/api/registry/BlockRegistry.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,5 +15,6 @@ public final class BlockRegistry extends SimpleRegistry<Block> {
1515
private BlockRegistry() {
1616
super(KEY, Lifecycle.experimental(), true);
1717
RegistryAttributeHolder.get(this).addAttribute(RegistryAttribute.SYNCED);
18+
nextId = 256;
1819
}
1920
}

station-flattening-v0/src/main/java/net/modificationstation/stationapi/mixin/flattening/BlockMixin.java

Lines changed: 26 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,15 @@
11
package net.modificationstation.stationapi.mixin.flattening;
22

3+
import com.llamalad7.mixinextras.injector.wrapoperation.Operation;
4+
import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation;
35
import net.fabricmc.api.EnvType;
46
import net.fabricmc.api.Environment;
57
import net.minecraft.block.Block;
68
import net.minecraft.block.Material;
79
import net.minecraft.entity.player.PlayerEntity;
810
import net.minecraft.item.Item;
911
import net.minecraft.item.ItemStack;
12+
import net.minecraft.stat.Stat;
1013
import net.minecraft.stat.Stats;
1114
import net.minecraft.util.math.BlockPos;
1215
import net.minecraft.world.BlockView;
@@ -366,12 +369,29 @@ public ToIntFunction<BlockState> stationapi_getLuminanceProvider() {
366369
private int stationapi_getStateBrightness(int original) {
367370
return BlockBrightness.light;
368371
}
369-
370-
@Inject(method = "afterBreak", at = @At("HEAD"), cancellable = true)
371-
private void stationapi_temporalStatFix(World world, PlayerEntity player, int x, int y, int z, int meta, CallbackInfo info) {
372-
if (id < Stats.MINE_BLOCK.length) return;
373-
this.dropStacks(world, x, y, z, meta);
374-
info.cancel();
372+
373+
@Redirect(
374+
method = "afterBreak",
375+
at = @At(
376+
value = "FIELD",
377+
target = "Lnet/minecraft/stat/Stats;MINE_BLOCK:[Lnet/minecraft/stat/Stat;",
378+
args = "array=get"
379+
)
380+
)
381+
private Stat stationapi_tmpFixStats1(Stat[] array, int index) {
382+
return index < array.length ? array[index] : null;
383+
}
384+
385+
@WrapOperation(
386+
method = "afterBreak",
387+
at = @At(
388+
value = "INVOKE",
389+
target = "Lnet/minecraft/entity/player/PlayerEntity;increaseStat(Lnet/minecraft/stat/Stat;I)V"
390+
)
391+
)
392+
private void stationapi_tmpFixStats2(PlayerEntity instance, Stat amount, int i, Operation<Void> original) {
393+
if (id < Stats.MINE_BLOCK.length)
394+
original.call(instance, amount, i);
375395
}
376396

377397
@Override

station-registry-api-v0/src/main/java/net/modificationstation/stationapi/api/registry/SimpleRegistry.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ public class SimpleRegistry<T> implements MutableRegistry<T>, RemappableRegistry
4545
private Reference2ReferenceMap<T, Reference<T>> intrusiveValueToEntry;
4646
@Nullable
4747
private List<Reference<T>> cachedEntries;
48-
private int nextId;
48+
protected int nextId;
4949
private final Impl<T> wrapper;
5050
private Reference2IntMap<Identifier> prevIndexedEntries;
5151
private BiMap<Identifier, Reference<T>> prevEntries;

0 commit comments

Comments
 (0)