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

Commit

Permalink
Add ToolEfficiencyProvider
Browse files Browse the repository at this point in the history
  • Loading branch information
Runemoro committed Aug 30, 2018
1 parent 4224667 commit f6f6443
Show file tree
Hide file tree
Showing 4 changed files with 44 additions and 3 deletions.
10 changes: 10 additions & 0 deletions src/main/java/org/dimdev/rift/listener/ToolEfficiencyProvider.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package org.dimdev.rift.listener;

import net.minecraft.block.Block;
import net.minecraft.item.ItemTool;

import java.util.Set;

public interface ToolEfficiencyProvider {
void addEffectiveBlocks(ItemTool tool, Set<Block> target);
}
32 changes: 32 additions & 0 deletions src/main/java/org/dimdev/rift/mixin/hook/MixinItemTool.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
package org.dimdev.rift.mixin.hook;

import net.minecraft.block.Block;
import net.minecraft.item.IItemTier;
import net.minecraft.item.Item;
import net.minecraft.item.ItemTool;
import org.dimdev.rift.listener.ToolEfficiencyProvider;
import org.dimdev.riftloader.RiftLoader;
import org.spongepowered.asm.mixin.Final;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Mutable;
import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;

import java.util.HashSet;
import java.util.Set;

@Mixin(ItemTool.class)
public class MixinItemTool {
@Shadow @Mutable @Final private Set<Block> effectiveBlocks;

@Inject(method = "<init>", at = @At("RETURN"))
private void onInit(float attackDamage, float attackSpeed, IItemTier tier, Set<Block> effectiveBlocks, Item.Builder builder, CallbackInfo ci) {
this.effectiveBlocks = new HashSet<>(effectiveBlocks);

for (ToolEfficiencyProvider toolEfficiencyProvider : RiftLoader.instance.getListeners(ToolEfficiencyProvider.class)) {
toolEfficiencyProvider.addEffectiveBlocks((ItemTool) (Object) this, this.effectiveBlocks);
}
}
}
2 changes: 0 additions & 2 deletions src/main/java/org/dimdev/riftloader/RiftLoader.java
Original file line number Diff line number Diff line change
Expand Up @@ -42,8 +42,6 @@ public class RiftLoader {
private InstanceListMap customListenerInstances = new InstanceListMap();

public void load(boolean isClient) {
if (RiftLoader.instance.getSide() == Side.SERVER)

if (loaded) {
throw new IllegalStateException("Already loaded");
}
Expand Down
3 changes: 2 additions & 1 deletion src/main/resources/mixins.rift.hooks.json
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,8 @@
"MixinChunk",
"MixinRecipeManager",
"MixinRecipeSerializers",
"MixinArgumentTypes"
"MixinArgumentTypes",
"MixinItemTool"
],
"client": [
"client.MixinMinecraft",
Expand Down

0 comments on commit f6f6443

Please sign in to comment.