Added a way to remove Thaumcraft aspects, close #638

This commit is contained in:
Jared 2018-05-15 14:06:34 +02:00
parent 8eaabd4d11
commit 8a444fce61
3 changed files with 34 additions and 18 deletions

View file

@ -66,7 +66,7 @@ repositories {
}
dependencies {
deobfCompile "CraftTweaker2:CraftTweaker2-MC1120-Main:1.12-4.1.5.+"
deobfCompile "CraftTweaker2:CraftTweaker2-MC1120-Main:1.12-4.1.8.470"
deobfCompile "mezz.jei:jei_1.12.2:4.8.6.162"
deobfCompile "com.blamejared:MTLib:3.0.2.4"
deobfCompile "com.azanor.baubles:Baubles:1.12-1.5.2"

View file

@ -8,8 +8,8 @@ import stanhebben.zenscript.annotations.*;
@ZenClass("thaumcraft.aspect.CTAspectStack")
public class CTAspectStack {
private CTAspect internal;
private int amount;
private final CTAspect internal;
private final int amount;
public CTAspectStack(CTAspect internal, int amount) {
this.internal = internal;

View file

@ -1,14 +1,14 @@
package com.blamejared.compat.thaumcraft.handlers.expand;
import com.blamejared.ModTweaker;
import com.blamejared.compat.thaumcraft.handlers.aspects.*;
import com.blamejared.compat.thaumcraft.handlers.aspects.CTAspectStack;
import com.blamejared.mtlib.helpers.*;
import com.blamejared.mtlib.utils.BaseAction;
import crafttweaker.annotations.*;
import crafttweaker.api.item.IItemStack;
import stanhebben.zenscript.annotations.*;
import thaumcraft.api.ThaumcraftApi;
import thaumcraft.api.aspects.*;
import thaumcraft.api.aspects.AspectList;
import java.util.*;
@ -18,6 +18,7 @@ import java.util.*;
public class IItemAspectExpansion {
private static Map<IItemStack, CTAspectStack[]> backupAspects = new HashMap<>();
@ZenMethod
public static void setAspects(IItemStack stack, CTAspectStack... aspects) {
ModTweaker.LATE_ADDITIONS.add(new BaseAction("Aspects") {
@ -47,18 +48,33 @@ public class IItemAspectExpansion {
}
@ZenMethod
public static CTAspectStack[] getAspects(IItemStack stack) {
if(backupAspects.containsKey(stack)){
return backupAspects.get(stack);
}
AspectList list = new AspectList(InputHelper.toStack(stack));
CTAspectStack[] arr = new CTAspectStack[list.size()];
int count = 0;
for(Map.Entry<Aspect, Integer> entry : list.aspects.entrySet()) {
arr[count++] = new CTAspectStack(new CTAspect(entry.getKey()), entry.getValue());
}
return arr;
}
@ZenMethod
public static void removeAspects(IItemStack stack, CTAspectStack... aspects) {
ModTweaker.LATE_REMOVALS.add(new BaseAction("Aspects") {
@Override
public void apply() {
AspectList list = new AspectList(InputHelper.toStack(stack));
for(CTAspectStack aspect : aspects) {
list.remove(aspect.getInternal().getInternal());
}
ThaumcraftApi.registerObjectTag(InputHelper.toStack(stack), list);
}
@Override
public String describe() {
return "Removing aspects on item: " + LogHelper.getStackDescription(stack) + "," + getAspects();
}
private String getAspects() {
StringBuilder builder = new StringBuilder();
for(CTAspectStack aspect : aspects) {
builder.append(aspect.getInternal().getInternal().getName()).append(", ");
}
return builder.reverse().deleteCharAt(0).deleteCharAt(0).reverse().toString();
}
});
}
}