Skip to content
This repository was archived by the owner on Apr 28, 2020. It is now read-only.

Commit f6f6443

Browse files
committed
Add ToolEfficiencyProvider
1 parent 4224667 commit f6f6443

4 files changed

Lines changed: 44 additions & 3 deletions

File tree

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package org.dimdev.rift.listener;
2+
3+
import net.minecraft.block.Block;
4+
import net.minecraft.item.ItemTool;
5+
6+
import java.util.Set;
7+
8+
public interface ToolEfficiencyProvider {
9+
void addEffectiveBlocks(ItemTool tool, Set<Block> target);
10+
}
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package org.dimdev.rift.mixin.hook;
2+
3+
import net.minecraft.block.Block;
4+
import net.minecraft.item.IItemTier;
5+
import net.minecraft.item.Item;
6+
import net.minecraft.item.ItemTool;
7+
import org.dimdev.rift.listener.ToolEfficiencyProvider;
8+
import org.dimdev.riftloader.RiftLoader;
9+
import org.spongepowered.asm.mixin.Final;
10+
import org.spongepowered.asm.mixin.Mixin;
11+
import org.spongepowered.asm.mixin.Mutable;
12+
import org.spongepowered.asm.mixin.Shadow;
13+
import org.spongepowered.asm.mixin.injection.At;
14+
import org.spongepowered.asm.mixin.injection.Inject;
15+
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
16+
17+
import java.util.HashSet;
18+
import java.util.Set;
19+
20+
@Mixin(ItemTool.class)
21+
public class MixinItemTool {
22+
@Shadow @Mutable @Final private Set<Block> effectiveBlocks;
23+
24+
@Inject(method = "<init>", at = @At("RETURN"))
25+
private void onInit(float attackDamage, float attackSpeed, IItemTier tier, Set<Block> effectiveBlocks, Item.Builder builder, CallbackInfo ci) {
26+
this.effectiveBlocks = new HashSet<>(effectiveBlocks);
27+
28+
for (ToolEfficiencyProvider toolEfficiencyProvider : RiftLoader.instance.getListeners(ToolEfficiencyProvider.class)) {
29+
toolEfficiencyProvider.addEffectiveBlocks((ItemTool) (Object) this, this.effectiveBlocks);
30+
}
31+
}
32+
}

src/main/java/org/dimdev/riftloader/RiftLoader.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,6 @@ public class RiftLoader {
4242
private InstanceListMap customListenerInstances = new InstanceListMap();
4343

4444
public void load(boolean isClient) {
45-
if (RiftLoader.instance.getSide() == Side.SERVER)
46-
4745
if (loaded) {
4846
throw new IllegalStateException("Already loaded");
4947
}

src/main/resources/mixins.rift.hooks.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,8 @@
3737
"MixinChunk",
3838
"MixinRecipeManager",
3939
"MixinRecipeSerializers",
40-
"MixinArgumentTypes"
40+
"MixinArgumentTypes",
41+
"MixinItemTool"
4142
],
4243
"client": [
4344
"client.MixinMinecraft",

0 commit comments

Comments
 (0)