CC-Tweaked/src/main/java/dan200/computercraft/shared/integration/crafttweaker/actions/RemoveTurtleUpgradeByName.java

70 lines
1.7 KiB
Java

/*
* 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;
}
}