Skip to content

Commit

Permalink
Added IIngredient#reuse
Browse files Browse the repository at this point in the history
closes #1035

(cherry picked from commit c6cacf1)
  • Loading branch information
kindlich committed Sep 12, 2020
1 parent 45a0ab9 commit dc2b9bf
Show file tree
Hide file tree
Showing 3 changed files with 69 additions and 8 deletions.
@@ -1,22 +1,22 @@
package com.blamejared.crafttweaker;

import com.blamejared.crafttweaker.api.item.transformed.IIngredientTransformerSerializer;
import com.blamejared.crafttweaker.impl.ingredients.transform.TransformCustom;
import com.blamejared.crafttweaker.impl.ingredients.transform.TransformDamage;
import com.blamejared.crafttweaker.impl.ingredients.transform.TransformReplace;
import com.blamejared.crafttweaker.impl.ingredients.transform.*;
import com.blamejared.crafttweaker.impl.item.transformed.IngredientTransformedSerializer;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.registry.Registry;
import net.minecraft.util.registry.SimpleRegistry;
import net.minecraftforge.common.crafting.CraftingHelper;

public class CraftTweakerRegistries {

public static SimpleRegistry<IIngredientTransformerSerializer<?>> REGISTRY_TRANSFORMER_SERIALIZER;
public static IngredientTransformedSerializer INGREDIENT_TRANSFORMED_SERIALIZER;

public static TransformReplace.TransformReplaceTransformerSerializer TRANSFORM_REPLACE_SERIALIZER;
public static TransformDamage.TransformDamageSerializer TRANSFORM_DAMAGE_SERIALIZER;
public static TransformCustom.TransformCustomSerializer TRANSFORM_CUSTOM_SERIALIZER;
public static TransformReuse.TransformerReuseSerializer TRANSFORM_REUSE_SERIALIZER;

public static void init() {
REGISTRY_TRANSFORMER_SERIALIZER = Registry.REGISTRY.register(new ResourceLocation(CraftTweaker.MODID, "transformer_serializer"), new SimpleRegistry<>());
Expand All @@ -31,5 +31,8 @@ public static void init() {

TRANSFORM_CUSTOM_SERIALIZER = new TransformCustom.TransformCustomSerializer();
REGISTRY_TRANSFORMER_SERIALIZER.register(TRANSFORM_CUSTOM_SERIALIZER.getType(), TRANSFORM_CUSTOM_SERIALIZER);

TRANSFORM_REUSE_SERIALIZER = new TransformReuse.TransformerReuseSerializer();
REGISTRY_TRANSFORMER_SERIALIZER.register(TRANSFORM_REUSE_SERIALIZER.getType(), TRANSFORM_REUSE_SERIALIZER);
}
}
Expand Up @@ -4,10 +4,7 @@
import com.blamejared.crafttweaker.api.item.IIngredient;
import com.blamejared.crafttweaker.api.item.IItemStack;
import com.blamejared.crafttweaker.api.item.transformed.IIngredientTransformer;
import com.blamejared.crafttweaker.impl.ingredients.transform.TransformCustom;
import com.blamejared.crafttweaker.impl.ingredients.transform.TransformDamage;
import com.blamejared.crafttweaker.impl.ingredients.transform.TransformReplace;
import com.blamejared.crafttweaker.impl.item.transformed.IngredientTransformed;
import com.blamejared.crafttweaker.impl.ingredients.transform.*;
import com.blamejared.crafttweaker.impl.item.transformed.MCIngredientTransformed;
import org.openzen.zencode.java.ZenCodeType;

Expand All @@ -31,6 +28,11 @@ public static MCIngredientTransformed<IIngredient> transformDamage(IIngredient _
public static MCIngredientTransformed<IIngredient> transformCustom(IIngredient _this, String uid, @ZenCodeType.Optional Function<IItemStack, IItemStack> function) {
return new MCIngredientTransformed<>(_this, new TransformCustom<>(uid, function));
}

@ZenCodeType.Method
public static MCIngredientTransformed<IIngredient> reuse(IIngredient _this) {
return new MCIngredientTransformed<>(_this, new TransformReuse<>());
}

/**
* Use this if you already have the transformer from another ingredient
Expand Down
@@ -0,0 +1,56 @@
package com.blamejared.crafttweaker.impl.ingredients.transform;

import com.blamejared.crafttweaker.*;
import com.blamejared.crafttweaker.api.item.*;
import com.blamejared.crafttweaker.api.item.transformed.*;
import com.google.gson.*;
import net.minecraft.network.*;
import net.minecraft.util.*;

public class TransformReuse<T extends IIngredient> implements IIngredientTransformer<T> {


@Override
public IItemStack transform(IItemStack stack) {
return stack;
}

@Override
public String getCommandString(T transformedIngredient) {
return String.format("%s.reuse()", transformedIngredient.getCommandString());
}

@Override
public TransformerReuseSerializer getSerializer() {
return CraftTweakerRegistries.TRANSFORM_REUSE_SERIALIZER;
}

public static final class TransformerReuseSerializer implements IIngredientTransformerSerializer<TransformReuse<?>> {

@Override
public TransformReuse<?> parse(PacketBuffer buffer) {
return new TransformReuse<>();
}

@Override
public TransformReuse<?> parse(JsonObject json) {
return new TransformReuse<>();
}

@Override
public void write(PacketBuffer buffer, TransformReuse<?> ingredient) {
//No-OP
}

@Override
public JsonObject toJson(TransformReuse<?> transformer) {
//No-Op
return new JsonObject();
}

@Override
public ResourceLocation getType() {
return new ResourceLocation(CraftTweaker.MODID, "transform_reuse");
}
}
}

0 comments on commit dc2b9bf

Please sign in to comment.