mirror of
				https://github.com/SquidDev-CC/CC-Tweaked
				synced 2025-11-04 07:32:59 +00:00 
			
		
		
		
	Remove craft tweaker integration
This commit is contained in:
		@@ -48,7 +48,6 @@ tasks.withType(JavaExec).configureEach {
 | 
			
		||||
sourceSets {
 | 
			
		||||
    main.java {
 | 
			
		||||
        exclude 'dan200/computercraft/shared/integration/morered/**'
 | 
			
		||||
        exclude 'dan200/computercraft/shared/integration/crafttweaker/**'
 | 
			
		||||
    }
 | 
			
		||||
    main.resources {
 | 
			
		||||
        srcDir 'src/generated/resources'
 | 
			
		||||
@@ -153,7 +152,6 @@ dependencies {
 | 
			
		||||
    minecraft "net.minecraftforge:forge:${mc_version}-${forge_version}"
 | 
			
		||||
 | 
			
		||||
    compileOnly fg.deobf("mezz.jei:jei-1.17.1:8.0.0.14:api")
 | 
			
		||||
    // compileOnly fg.deobf("com.blamejared.crafttweaker:CraftTweaker-1.16.5:7.1.0.313")
 | 
			
		||||
    // compileOnly fg.deobf("commoble.morered:morered-1.16.5:2.1.1.0")
 | 
			
		||||
 | 
			
		||||
    runtimeOnly fg.deobf("mezz.jei:jei-1.17.1:8.0.0.14")
 | 
			
		||||
 
 | 
			
		||||
@@ -1,38 +0,0 @@
 | 
			
		||||
/*
 | 
			
		||||
 * This file is part of ComputerCraft - http://www.computercraft.info
 | 
			
		||||
 * Copyright Daniel Ratcliffe, 2011-2021. Do not distribute without permission.
 | 
			
		||||
 * Send enquiries to dratcliffe@gmail.com
 | 
			
		||||
 */
 | 
			
		||||
package dan200.computercraft.shared.integration.crafttweaker;
 | 
			
		||||
 | 
			
		||||
import com.blamejared.crafttweaker.api.logger.ILogger;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Logger which tracks if it has any messages.
 | 
			
		||||
 */
 | 
			
		||||
public final class TrackingLogger
 | 
			
		||||
{
 | 
			
		||||
    private final ILogger logger;
 | 
			
		||||
    private boolean ok = true;
 | 
			
		||||
 | 
			
		||||
    public TrackingLogger( ILogger logger )
 | 
			
		||||
    {
 | 
			
		||||
        this.logger = logger;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public boolean isOk()
 | 
			
		||||
    {
 | 
			
		||||
        return ok;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void warning( String message )
 | 
			
		||||
    {
 | 
			
		||||
        logger.warning( message );
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void error( String message )
 | 
			
		||||
    {
 | 
			
		||||
        ok = false;
 | 
			
		||||
        logger.error( message );
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -1,71 +0,0 @@
 | 
			
		||||
/*
 | 
			
		||||
 * This file is part of ComputerCraft - http://www.computercraft.info
 | 
			
		||||
 * Copyright Daniel Ratcliffe, 2011-2021. Do not distribute without permission.
 | 
			
		||||
 * Send enquiries to dratcliffe@gmail.com
 | 
			
		||||
 */
 | 
			
		||||
package dan200.computercraft.shared.integration.crafttweaker;
 | 
			
		||||
 | 
			
		||||
import com.blamejared.crafttweaker.api.CraftTweakerAPI;
 | 
			
		||||
import com.blamejared.crafttweaker.api.annotations.ZenRegister;
 | 
			
		||||
import com.blamejared.crafttweaker.api.item.IItemStack;
 | 
			
		||||
import dan200.computercraft.shared.integration.crafttweaker.actions.AddTurtleTool;
 | 
			
		||||
import dan200.computercraft.shared.integration.crafttweaker.actions.RemoveTurtleUpgradeByItem;
 | 
			
		||||
import dan200.computercraft.shared.integration.crafttweaker.actions.RemoveTurtleUpgradeByName;
 | 
			
		||||
import org.openzen.zencode.java.ZenCodeType;
 | 
			
		||||
 | 
			
		||||
@ZenRegister
 | 
			
		||||
@ZenCodeType.Name( "dan200.computercraft.turtle" )
 | 
			
		||||
public class TurtleTweaker
 | 
			
		||||
{
 | 
			
		||||
    /**
 | 
			
		||||
     * Remove a turtle upgrade with the given id.
 | 
			
		||||
     *
 | 
			
		||||
     * @param upgrade The ID of the to remove
 | 
			
		||||
     */
 | 
			
		||||
    @ZenCodeType.Method
 | 
			
		||||
    public static void removeUpgrade( String upgrade )
 | 
			
		||||
    {
 | 
			
		||||
        CraftTweakerAPI.apply( new RemoveTurtleUpgradeByName( upgrade ) );
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Remove a turtle upgrade crafted with the given item stack".
 | 
			
		||||
     *
 | 
			
		||||
     * @param stack The stack with which the upgrade is crafted.
 | 
			
		||||
     */
 | 
			
		||||
    @ZenCodeType.Method
 | 
			
		||||
    public static void removeUpgrade( IItemStack stack )
 | 
			
		||||
    {
 | 
			
		||||
        CraftTweakerAPI.apply( new RemoveTurtleUpgradeByItem( stack.getInternal() ) );
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Add a new turtle tool with the given id, which crafts and acts using the given stack.
 | 
			
		||||
     *
 | 
			
		||||
     * @param id    The new upgrade's ID
 | 
			
		||||
     * @param stack The stack used for crafting the upgrade and used by the turtle as a tool.
 | 
			
		||||
     */
 | 
			
		||||
    @ZenCodeType.Method
 | 
			
		||||
    public static void addTool( String id, IItemStack stack )
 | 
			
		||||
    {
 | 
			
		||||
        addTool( id, stack, stack, "tool" );
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @ZenCodeType.Method
 | 
			
		||||
    public static void addTool( String id, IItemStack craftingStack, IItemStack toolStack )
 | 
			
		||||
    {
 | 
			
		||||
        addTool( id, craftingStack, toolStack, "tool" );
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @ZenCodeType.Method
 | 
			
		||||
    public static void addTool( String id, IItemStack stack, String kind )
 | 
			
		||||
    {
 | 
			
		||||
        addTool( id, stack, stack, kind );
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @ZenCodeType.Method
 | 
			
		||||
    public static void addTool( String id, IItemStack craftingStack, IItemStack toolStack, String kind )
 | 
			
		||||
    {
 | 
			
		||||
        CraftTweakerAPI.apply( new AddTurtleTool( id, craftingStack.getInternal(), toolStack.getInternal(), kind ) );
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -1,130 +0,0 @@
 | 
			
		||||
/*
 | 
			
		||||
 * This file is part of ComputerCraft - http://www.computercraft.info
 | 
			
		||||
 * Copyright Daniel Ratcliffe, 2011-2021. Do not distribute without permission.
 | 
			
		||||
 * Send enquiries to dratcliffe@gmail.com
 | 
			
		||||
 */
 | 
			
		||||
package dan200.computercraft.shared.integration.crafttweaker.actions;
 | 
			
		||||
 | 
			
		||||
import com.blamejared.crafttweaker.api.actions.IUndoableAction;
 | 
			
		||||
import com.blamejared.crafttweaker.api.logger.ILogger;
 | 
			
		||||
import dan200.computercraft.ComputerCraft;
 | 
			
		||||
import dan200.computercraft.api.turtle.ITurtleUpgrade;
 | 
			
		||||
import dan200.computercraft.shared.TurtleUpgrades;
 | 
			
		||||
import dan200.computercraft.shared.integration.crafttweaker.TrackingLogger;
 | 
			
		||||
import dan200.computercraft.shared.turtle.upgrades.*;
 | 
			
		||||
import net.minecraft.resources.ResourceLocation;
 | 
			
		||||
import net.minecraft.world.item.ItemStack;
 | 
			
		||||
import net.minecraftforge.fml.LogicalSide;
 | 
			
		||||
 | 
			
		||||
import java.util.HashMap;
 | 
			
		||||
import java.util.Map;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Register a new turtle tool.
 | 
			
		||||
 */
 | 
			
		||||
public class AddTurtleTool implements IUndoableAction
 | 
			
		||||
{
 | 
			
		||||
    private interface Factory
 | 
			
		||||
    {
 | 
			
		||||
        TurtleTool create( ResourceLocation location, ItemStack craftItem, ItemStack toolItem );
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private static final Map<String, Factory> kinds = new HashMap<>();
 | 
			
		||||
 | 
			
		||||
    static
 | 
			
		||||
    {
 | 
			
		||||
        kinds.put( "tool", TurtleTool::new );
 | 
			
		||||
        kinds.put( "axe", TurtleAxe::new );
 | 
			
		||||
        kinds.put( "hoe", TurtleHoe::new );
 | 
			
		||||
        kinds.put( "shovel", TurtleShovel::new );
 | 
			
		||||
        kinds.put( "sword", TurtleSword::new );
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private final String id;
 | 
			
		||||
    private final ItemStack craftItem;
 | 
			
		||||
    private final ItemStack toolItem;
 | 
			
		||||
    private final String kind;
 | 
			
		||||
 | 
			
		||||
    private ITurtleUpgrade upgrade;
 | 
			
		||||
 | 
			
		||||
    public AddTurtleTool( String id, ItemStack craftItem, ItemStack toolItem, String kind )
 | 
			
		||||
    {
 | 
			
		||||
        this.id = id;
 | 
			
		||||
        this.craftItem = craftItem;
 | 
			
		||||
        this.toolItem = toolItem;
 | 
			
		||||
        this.kind = kind;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void apply()
 | 
			
		||||
    {
 | 
			
		||||
        ITurtleUpgrade upgrade = this.upgrade;
 | 
			
		||||
        if( upgrade == null )
 | 
			
		||||
        {
 | 
			
		||||
            Factory factory = kinds.get( kind );
 | 
			
		||||
            if( factory == null )
 | 
			
		||||
            {
 | 
			
		||||
                ComputerCraft.log.error( "Unknown turtle upgrade kind '{}' (this should have been rejected by verify!)", kind );
 | 
			
		||||
                return;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            upgrade = this.upgrade = factory.create( new ResourceLocation( id ), craftItem, toolItem );
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        try
 | 
			
		||||
        {
 | 
			
		||||
            TurtleUpgrades.register( upgrade );
 | 
			
		||||
        }
 | 
			
		||||
        catch( RuntimeException e )
 | 
			
		||||
        {
 | 
			
		||||
            ComputerCraft.log.error( "Registration of turtle tool failed", e );
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public String describe()
 | 
			
		||||
    {
 | 
			
		||||
        return String.format( "Add new turtle %s '%s' (crafted with '%s', uses a '%s')", kind, id, craftItem, toolItem );
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void undo()
 | 
			
		||||
    {
 | 
			
		||||
        if( upgrade != null ) TurtleUpgrades.remove( upgrade );
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public String describeUndo()
 | 
			
		||||
    {
 | 
			
		||||
        return String.format( "Removing turtle upgrade %s.", id );
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public boolean validate( ILogger logger )
 | 
			
		||||
    {
 | 
			
		||||
        TrackingLogger trackLog = new TrackingLogger( logger );
 | 
			
		||||
 | 
			
		||||
        if( craftItem.isEmpty() ) trackLog.error( "Crafting item stack is empty." );
 | 
			
		||||
 | 
			
		||||
        if( craftItem.isDamaged() || craftItem.isEnchanted() || craftItem.hasCustomHoverName() )
 | 
			
		||||
        {
 | 
			
		||||
            trackLog.warning( "Crafting item has NBT." );
 | 
			
		||||
        }
 | 
			
		||||
        if( toolItem.isEmpty() ) trackLog.error( "Tool item stack is empty." );
 | 
			
		||||
 | 
			
		||||
        if( !kinds.containsKey( kind ) ) trackLog.error( String.format( "Unknown kind '%s'.", kind ) );
 | 
			
		||||
 | 
			
		||||
        if( TurtleUpgrades.get( id ) != null )
 | 
			
		||||
        {
 | 
			
		||||
            trackLog.error( String.format( "An upgrade with the same name ('%s') has already been registered.", id ) );
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        return trackLog.isOk();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public boolean shouldApplyOn( LogicalSide side )
 | 
			
		||||
    {
 | 
			
		||||
        return shouldApplySingletons();
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -1,70 +0,0 @@
 | 
			
		||||
/*
 | 
			
		||||
 * This file is part of ComputerCraft - http://www.computercraft.info
 | 
			
		||||
 * Copyright Daniel Ratcliffe, 2011-2021. Do not distribute without permission.
 | 
			
		||||
 * Send enquiries to dratcliffe@gmail.com
 | 
			
		||||
 */
 | 
			
		||||
package dan200.computercraft.shared.integration.crafttweaker.actions;
 | 
			
		||||
 | 
			
		||||
import com.blamejared.crafttweaker.api.actions.IUndoableAction;
 | 
			
		||||
import com.blamejared.crafttweaker.api.logger.ILogger;
 | 
			
		||||
import dan200.computercraft.api.turtle.ITurtleUpgrade;
 | 
			
		||||
import dan200.computercraft.shared.TurtleUpgrades;
 | 
			
		||||
import net.minecraft.world.item.ItemStack;
 | 
			
		||||
import net.minecraftforge.fml.LogicalSide;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Removes a turtle upgrade crafted with the given stack.
 | 
			
		||||
 */
 | 
			
		||||
public class RemoveTurtleUpgradeByItem implements IUndoableAction
 | 
			
		||||
{
 | 
			
		||||
    private final ItemStack stack;
 | 
			
		||||
    private ITurtleUpgrade upgrade;
 | 
			
		||||
 | 
			
		||||
    public RemoveTurtleUpgradeByItem( ItemStack stack )
 | 
			
		||||
    {
 | 
			
		||||
        this.stack = stack;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void apply()
 | 
			
		||||
    {
 | 
			
		||||
        ITurtleUpgrade upgrade = this.upgrade = TurtleUpgrades.get( stack );
 | 
			
		||||
        if( upgrade != null ) TurtleUpgrades.disable( upgrade );
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public String describe()
 | 
			
		||||
    {
 | 
			
		||||
        return String.format( "Remove turtle upgrades crafted with '%s'", stack );
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void undo()
 | 
			
		||||
    {
 | 
			
		||||
        if( upgrade != null ) TurtleUpgrades.enable( upgrade );
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public String describeUndo()
 | 
			
		||||
    {
 | 
			
		||||
        return String.format( "Adding back turtle upgrades crafted with '%s'", stack );
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public boolean validate( ILogger logger )
 | 
			
		||||
    {
 | 
			
		||||
        if( TurtleUpgrades.get( stack ) == null )
 | 
			
		||||
        {
 | 
			
		||||
            logger.error( String.format( "Unknown turtle upgrade crafted with '%s'.", stack ) );
 | 
			
		||||
            return false;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        return true;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public boolean shouldApplyOn( LogicalSide side )
 | 
			
		||||
    {
 | 
			
		||||
        return true;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -1,69 +0,0 @@
 | 
			
		||||
/*
 | 
			
		||||
 * This file is part of ComputerCraft - http://www.computercraft.info
 | 
			
		||||
 * Copyright Daniel Ratcliffe, 2011-2021. Do not distribute without permission.
 | 
			
		||||
 * Send enquiries to dratcliffe@gmail.com
 | 
			
		||||
 */
 | 
			
		||||
package dan200.computercraft.shared.integration.crafttweaker.actions;
 | 
			
		||||
 | 
			
		||||
import com.blamejared.crafttweaker.api.actions.IUndoableAction;
 | 
			
		||||
import com.blamejared.crafttweaker.api.logger.ILogger;
 | 
			
		||||
import dan200.computercraft.api.turtle.ITurtleUpgrade;
 | 
			
		||||
import dan200.computercraft.shared.TurtleUpgrades;
 | 
			
		||||
import net.minecraftforge.fml.LogicalSide;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Removes a turtle upgrade with the given id.
 | 
			
		||||
 */
 | 
			
		||||
public class RemoveTurtleUpgradeByName implements IUndoableAction
 | 
			
		||||
{
 | 
			
		||||
    private final String id;
 | 
			
		||||
    private ITurtleUpgrade upgrade;
 | 
			
		||||
 | 
			
		||||
    public RemoveTurtleUpgradeByName( String id )
 | 
			
		||||
    {
 | 
			
		||||
        this.id = id;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void apply()
 | 
			
		||||
    {
 | 
			
		||||
        ITurtleUpgrade upgrade = this.upgrade = TurtleUpgrades.get( id );
 | 
			
		||||
        if( upgrade != null ) TurtleUpgrades.disable( upgrade );
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public String describe()
 | 
			
		||||
    {
 | 
			
		||||
        return String.format( "Remove turtle upgrade '%s'", id );
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void undo()
 | 
			
		||||
    {
 | 
			
		||||
        if( upgrade != null ) TurtleUpgrades.enable( upgrade );
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public String describeUndo()
 | 
			
		||||
    {
 | 
			
		||||
        return String.format( "Adding back turtle upgrade '%s'", id );
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public boolean validate( ILogger logger )
 | 
			
		||||
    {
 | 
			
		||||
        if( TurtleUpgrades.get( id ) == null )
 | 
			
		||||
        {
 | 
			
		||||
            logger.error( String.format( "Unknown turtle upgrade '%s'.", id ) );
 | 
			
		||||
            return false;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        return true;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public boolean shouldApplyOn( LogicalSide side )
 | 
			
		||||
    {
 | 
			
		||||
        return true;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user